Thread pools on the JVM should usually be divided into the following three categories:
- CPU-bound
- Blocking IO
- Non-blocking IO polling
Each of these categories has a different optimal configuration and usage pattern.
#!/bin/bash | |
mkdir -p out | |
for img in `grep image $1| sed -e 's/^.*image\: //g'`; | |
do | |
cleanname=${img/\//-} | |
tag=`docker images | grep $img | awk '{print $2}'` | |
echo "Exporting image: $img, tag:$tag ($cleanname)..." | |
docker save $img -o out/$cleanname.tar |
1. Получаем хэш-код коммита, к которому хотим вернуться. | |
2. Заходим в папку репозитория и пишем в консоль: | |
$ git reset --hard a3775a5485af0af20375cedf46112db5f813322a | |
$ git push --force |
import cats._ | |
import doobie._ | |
import doobie.implicits._ | |
import liquibase.Liquibase | |
import liquibase.database.DatabaseFactory | |
import liquibase.database.jvm.JdbcConnection | |
import liquibase.resource.ClassLoaderResourceAccessor | |
object LiquibaseMigration { | |
def run[F[_]: Monad](xa: Transactor[F]): F[Unit] = |
import Models._ | |
import eu.timepit.refined.api._ | |
import eu.timepit.refined.boolean.{And, Or} | |
import eu.timepit.refined.collection._ | |
import eu.timepit.refined.numeric._ | |
import eu.timepit.refined.string._ | |
import io.circe._ | |
import io.circe.generic.semiauto._ | |
import io.circe.parser._ | |
import io.estatico.newtype.Coercible |