小编Ada*_*hip的帖子

将 IntelliJ IDEA 字体恢复为 2020.1 之前的默认字体

我升级到 IntelliJ 2020.1,它默认使用新的 JetBrains Mono 字体。但是,我想切换回使用以前的默认值,但我不记得名称。IntelliJ IDEA 2020.1 之前版本的默认字体名称是什么?

fonts default intellij-idea

43
推荐指数
2
解决办法
6171
查看次数

为什么Elixir的Access行为不是协议?

在最新版本的Elixir中,Access不再作为协议实现,而是作为一种行为实现.从我收集的内容来看,这种变化是出于开发模式中的性能考虑.

现在,看一下实现,我想知道这是如何在内部工作的,以及为什么选择这个实现.正如我们在这里看到的,Access通过底层映射的"__struct__"键调度到struct的模块.AFAICS,这大致类似于OOP风格的多态.关于这个的一些问题:

  1. 为什么这会更快?
  2. 与协议相比有哪些缺点?据我所知,它不太可扩展.还有其他吗?
  3. 到目前为止,我只看到像GenServer这样的东西的行为,其中回调模块在初始化时捕获并保存在一个进程中(至少我假设同样多).这里,Access行为从数据中获取回调模块.是否有可能为不是结构的东西实现这种行为?
  4. 当人们对协议给出的额外好处不感兴趣时​​,这种调度是Erlang还是Elixir的常见最佳实践?

elixir

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

"双"和"双"的区别

__PRE__

"Double"和"double"有什么区别?

*请帮忙

java double

21
推荐指数
1
解决办法
4万
查看次数

在 Kotlin 中将枚举字段序列化为 JSON

我有一个愚蠢的问题,让我有点震惊。我有一个枚举和一个像这样的数据类:

enum class MyEventType(val typeName: String) {
    FIRST("firstEventReceived")
}

data class MyEvent(
    val id: String,
    val event: MyEventType
)
Run Code Online (Sandbox Code Playgroud)

我需要将其作为 json 字符串发送,但常见的 desearilizer 会生成这样的 json

{ 
    "id": "identifier",
    "event": "FIRST"
}
Run Code Online (Sandbox Code Playgroud)

但是我需要

{ 
    "id": "identifier",
    "event": "firstEventReceived"
}
Run Code Online (Sandbox Code Playgroud)

据我了解,kotlin 允许重写数据类中的 getter,但我没有成功......

data class MyEvent(
    val id: String
) {
    val event: MyEventType get() event.typeName
}
Run Code Online (Sandbox Code Playgroud)

但我想我错过了一些东西......

jackson kotlin

15
推荐指数
3
解决办法
2万
查看次数

docker run 加载共享库 libstdc++.so.6 和 libgcc_s.so.1 时出错

我正在尝试使用 docker 运行部署,并且使用以下命令成功运行:

\n

docker build -t romenigld/blog-prod .

\n

但是当我尝试使用这个命令时:

\n

docker run --env-file .env -p 8080:4000 romenigld/blog-prod

\n

我收到此错误:

\n
Error loading shared library libstdc++.so.6: No such file or directory (needed by /app/erts-12.0.2/bin/beam.smp)\nError loading shared library libgcc_s.so.1: No such file or directory (needed by /app/erts-12.0.2/bin/beam.smp)\nError relocating /app/erts-12.0.2/bin/beam.smp: __cxa_begin_catch: symbol not found\nError relocating /app/erts-12.0.2/bin/beam.smp: _ZSt24__throw_out_of_range_fmtPKcz: symbol not found\nError relocating /app/erts-12.0.2/bin/beam.smp: _Znwm: symbol not found\nError relocating /app/erts-12.0.2/bin/beam.smp: _ZSt20__throw_length_errorPKc: symbol not found\nError relocating /app/erts-12.0.2/bin/beam.smp: __cxa_guard_release: symbol not found\nError relocating /app/erts-12.0.2/bin/beam.smp: _ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm: …
Run Code Online (Sandbox Code Playgroud)

elixir docker phoenix-framework docker-compose alpine-linux

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

为什么用于身份验证的 HTTP 标头称为授权?

让我引用来自 www.w3.org 的HTTP 1.1 RFC 规范

10.4.2 401未授权

该请求需要用户身份验证。响应必须包含一个 WWW- Authenticate头域(第 14.47 节),其中包含适用于请求资源的质询。客户端可以使用合适的Authorization头域(第 14.8 节)重复请求。

14.8授权

用户代理通常(但不一定)在收到 401 响应后通过在请求中包含授权请求头字段来向服务器进行身份验证。该授权域包含所述用户代理的对被请求的资源的领域中的认证信息的凭据。

为什么要在Authorization标头中传递用于证明用户身份 ( Authentication )的凭据?

authentication authorization http

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

使用isPresent方法的Java8中的列表过滤器

我有一个包含一些String值的列表。我想与另一个String进行比较的列表。仅当另一个String与列表中的任何元素都不匹配时,我才应进入循环。我尝试了以下类似方法,但没有成功。还有其他替代方法可以在Java 8中做到这一点吗?

注意:在循环中,我将更多元素添加到同一列表中。因此,为避免出现这种情况ConcurrentModificationException,我在使用if条件进行验证。

List<String> mylist = new ArrayList<>();
mylist.add("test");
mylist.add("test1");

if(mylist.stream()
        .filter(str -> !(str.equalsIgnoreCase("test")))
        .findFirst()
        .isPresent()) {
    System.out.println("Value is not Present");
}
Run Code Online (Sandbox Code Playgroud)

java lambda java-8 java-stream

7
推荐指数
2
解决办法
184
查看次数

Dbgi块中漂亮的Elixir源代码

如果我有从Erlang代码使用编译的光束文件debug_info,则打印相应的源代码相当容易:

{ok, {_, [{debug_info, {debug_info_v1, erl_abstract_code, AbstractCode}}]}} =
    beam_lib:chunks("my_module.beam", [debug_info]).
{ok, Forms} = erl_abstract_code:debug_info(erlang_v1, module_name, AbstractCode, []).
io:format("~s~n", [erl_prettypr:format(erl_syntax:form_list(Forms))]).
Run Code Online (Sandbox Code Playgroud)

但是Elixir呢?我可以这样做的前两个步骤:

{ok, {_, [{debug_info, {debug_info_v1, elixir_erl, AbstractCode}}]}} = 
    beam_lib:chunks("Elixir.MyModule.beam", [debug_info]).
{ok, Forms} = elixir_erl:debug_info(elixir_v1, module_name, AbstractCode).
Run Code Online (Sandbox Code Playgroud)

这给出了这种形式的地图:

#{attributes => ...,
  compile_opts => [],
  definitions => ...,
  deprecated => [],
  file => <<"my_module.ex">>,
  line => 95,
  module => 'Elixir.MyModule',
  unreachable => []}
Run Code Online (Sandbox Code Playgroud)

如何将其打印为人类可读的Elixir代码?

elixir

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

由于 kotlin 错误,Java Spring Boot 应用程序无法从 IDEA 运行

我有一个纯用 Java 编码的 Java Spring Boot 应用程序。当我尝试使用运行配置从 Intellij IDEA 运行它时,出现以下错误:

Error:Kotlin: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.16.

如果我从运行配置中删除构建步骤,使用 mvn clean install 进行构建,然后运行应用程序,则一切正常。

我尝试在 IDEA 中更改 Kotlin 编译器设置,但问题仍然存在。

java spring intellij-idea kotlin spring-boot

7
推荐指数
2
解决办法
5052
查看次数

使用像 bash 管道这样的操作系统进程:发送 STDIN 并获取其 STDOUT

我正在尝试使用读取 STDIN 并写入 STDOUT 的外部进程。

我想在 Elixir 中编写与此等效的代码,而不使用外部库或包装脚本:

$ echo foo | nkf
foo
Run Code Online (Sandbox Code Playgroud)

即发送数据到标准输入,并从标准输出nkf返回转换后的结果,知道它已经完成了流的处理。nkf

我试图用端口来做到这一点,但问题是单个发送的消息可以在多个接收到的消息中返回,因此无法判断何时到达消息末尾(简化的示例,实际上"foo"是一个整个文件):

iex(1)> port = Port.open({:spawn, "nkf -u"}, [:binary])
#Port<0.7>
iex(2)> Port.command(port, "foo")
true
iex(3)> flush
{#Port<0.7>, {:data, "fo"}}
{#Port<0.7>, {:data, "o"}}
:ok
Run Code Online (Sandbox Code Playgroud)

如何在 Elixir 中获得与 Ports 相同的 bash 管道行为?

stdin ipc stdout message-passing elixir

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