小编Ala*_*mas的帖子

将 Hikari 事务器用于 Doobie 和 ZIO 时遇到死锁

我在 ZIO 应用程序中使用 Doobie,有时会出现死锁(应用程序完全冻结)。如果我仅在一个内核上运行我的应用程序,或者达到与数据库的最大并行连接数,就会发生这种情况。

我的代码看起来像:

def mkTransactor(cfg: DatabaseConfig): RManaged[Blocking, Transactor[Task]] =
    ZIO.runtime[Blocking].toManaged_.flatMap { implicit rt =>
      val connectEC = rt.platform.executor.asEC
      val transactEC = rt.environment.get.blockingExecutor.asEC

      HikariTransactor
        .fromHikariConfig[Task](
          hikari(cfg),
          connectEC,
          Blocker.liftExecutionContext(transactEC)
        )
        .toManaged
    }

  private def hikari(cfg: DatabaseConfig): HikariConfig = {
    val config = new com.zaxxer.hikari.HikariConfig

    config.setJdbcUrl(cfg.url)
    config.setSchema(cfg.schema)
    config.setUsername(cfg.user)
    config.setPassword(cfg.pass)

    config
  }
Run Code Online (Sandbox Code Playgroud)

或者,我在 Hikari ( config.setLeakDetectionThreshold(10000L))上设置了泄漏检测参数,但出现泄漏错误不是由于处理数据库查询所花费的时间。

concurrency deadlock hikaricp doobie zio

7
推荐指数
1
解决办法
562
查看次数

Scala中的映射类型

有没有一种方法可以从Scala中的现有类型派生类型?

例如,case class Person(name: String, age: Int)我想获得一个Product/ Tuple(Option[String], Option[Int]),即从现有的一种类型的映射。

Typescript(映射类型)中有一个功能可以相对轻松地实现这一点,这就是我开始思考这条道路的方式。但是我不确定如何在Scala中完成这样的事情。

我觉得解决方案涉及以某种方式使用无形状,但我不确定如何到达那里。

generics scala shapeless

5
推荐指数
2
解决办法
148
查看次数

使用Sequelize连接到MSSQL Server

使用以下繁琐的代码,我可以成功连接到Azure SQL Server。

const Connection = require('tedious').Connection;

const connection = new Connection({
    userName: '[USER]',
    password: '[PASSWORD]',
    server: '[HOSTNAME]',
    options: {encrypt: true}
});

connection.on('connect', (err) => {
    if (err) {
        console.log('error connecting', err);
    } else {
        console.log('connection successful');
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,使用等效的Sequelize代码,我会收到连接超时错误。

const Sequelize = require('sequelize');

const sequelize = new Sequelize('[DBNAME]', '[USER]', '[PASSWORD]', {
    dialect: 'mssql',
    host: '[HOSTNAME]',
    dialectOptions: {
        encrypt: true
    }
});

sequelize.authenticate().then((err) => {
    console.log('Connection successful', err);
})
.catch((err) => {
    console.log('Unable to connect to database', err);
});
Run Code Online (Sandbox Code Playgroud)

有什么想法吗? …

javascript sql-server azure sequelize.js

4
推荐指数
3
解决办法
9761
查看次数

在没有系统字体的环境中测试网页

如何在我自己的机器上测试网页,好像我没有某种字体?

例如,我的网页使用Roboto字体.我的电脑本地安装了Roboto字体.如何在未安装该字体的计算机上查看此网页的外观?

假设通过某些CDN或其他方法将字体包含在网页中.

html css fonts

2
推荐指数
1
解决办法
1016
查看次数

将前导零添加到小于1的值

给定一个十进制值,我怎么能在一个字符串添加一个前导零只有当值小于1?

例如.

.20  ->  "0.20"   - Add a leading 0

1.20 ->  "1.20"   - Value remains the same
Run Code Online (Sandbox Code Playgroud)

小数位前的值可以是任意长度,小数位后的值只能是2位数.货币.这是用String.Format()实现的吗?或者我应该依赖基本的if语句?

String.Format()文档对我来说相当混乱.

我已经检查了其他几个问题/答案,似乎无法找到我正在寻找的东西.

编辑:正如几个答案所提到的,这种前导零加法应该是在值上调用的ToString()方法的默认行为.无论出于何种原因,在我的情况下都没有发生,所以String.Format()在我的情况下是必要的.

.net c# string-formatting

1
推荐指数
1
解决办法
1091
查看次数

我如何明确返回单位?

Unit从方法中显式返回类型的正确方法是什么,使用()Unit?在我看来,在我尝试过的所有情况下,两者都有效.

对于上下文,如果我正在编写一个带副作用的方法并且返回Unit调用另一个方法,这也经常发生,这也会执行副作用但返回一些值而不是Unit.例如

def effectAndReturn(): String = {
  val msg = "Hello, SO"
  println(msg)
  msg
}

def doEffect(): Unit = {
  val _ = effectAndReturn()
  () // `Unit` also works here
}
Run Code Online (Sandbox Code Playgroud)

从我的理解()Unit存在的唯一类型的价值.返回令牌UnitdoEffect()所引用的Unit同伴对象; 我很困惑这将返回一个值,因为甚至没有apply定义一个方法.据我所知,返回给定抽象类的伴随对象的类型无效作为返回值.

将这些插入Scala REPL也很有趣

scala> val parenUnit = ()
parenUnit: Unit = ()

scala> parenUnit
// Returns blank line

scala> val wordUnit = Unit
wordUnit: Unit.type = object …
Run Code Online (Sandbox Code Playgroud)

functional-programming scala

1
推荐指数
1
解决办法
746
查看次数