小编Wan*_*ker的帖子

Erlang进程与Java线程

我正在阅读SašaJurić的"Elixir in Action"一书,在第一章中它说:

Erlang进程完全相互隔离.它们不共享内存,一个进程崩溃不会导致其他进程崩溃.

Java线程也不是这样吗?我的意思是当Java线程崩溃时,它也不会崩溃其他线程 - 特别是,如果我们正在查看请求处理线程(让我们main从这个讨论中排除线程)

java erlang elixir

60
推荐指数
4
解决办法
7457
查看次数

Angular 6 i18n运行时转换支持

我读过i18n运行时支持是以角度6来的,但是在rc3中找不到任何东西.是推迟还是没有记录?i18n文档仍然表明,不必为每种语言构建单独的构建.

https://github.com/ngx-translate是另一种选择,但我不知道这将支持多长时间,或者Angular 6中的支持是完全不同的.稍后迁移将包括重写代码中的所有i18n实例并创建新的翻译文件.我有空间等待我的项目,但不是永远.

无法找到关于Angular 6中新的i18n支持的内容,除非它即将到来.

internationalization ngx-translate angular angular6

16
推荐指数
2
解决办法
8665
查看次数

REST API与代码覆盖的集成测试

我们构建了一个暴露大量业务服务的REST API - 业务服务可以调用其他平台/实用程序服务来执行数据库读写,执行服务授权等.

我们已将这些服务部署为Tomcat中的WAR文件.

我们希望使用集成测试套件测试整个设置,我们也希望将其视为回归测试套件.

在这个和任何可以加速套件开发的工具上执行集成测试的好方法是什么?以下是我们认为需要解决的一些要求:

  1. 能够定义执行业务场景的集成测试用例.
  2. 在套件运行之前,使用测试数据设置DB.
  3. 调用在远程服务器(Tomcat)上运行的REST API
  4. 验证DB post测试执行以验证预期输出
  5. 拥有REST API的代码覆盖率报告,以便我们了解我们应该对套件所涵盖的方案有多大信心.

java rest integration-testing code-coverage

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

从Android App与服务器通信时出现各种HTTP错误

更新时间:2015年1月4日

我还有这些问题.我们的应用程序的用户增加了,我看到了所有类型的网络错误.每当应用程序出现网络相关错误时,我们的应用程序就会发送电子邮件.

我们的应用程序进行了金融交易 - 因此重新提交并不是真正的幂等 - 因此非常害怕启用HttpClient的重试功能.我们在服务器上做了某种响应缓存来处理用户明确完成的重新提交.但是,仍然没有解决方案,没有糟糕的用户体验.

原始问题

我有一个Android应用程序,它发布数据作为用户操作的一部分.数据包含少量图像,我将它们打包为Protobuf消息(实际上是字节数组),并通过HTTPS连接将其发布到服务器.

尽管应用程序在大多数情况下都能正常工作,但我们偶尔会看到连接错误.由于我们在相对较慢的网络区域(2G连接)中有一些用户,因此问题变得更加明显.然而,问题不仅限于连接速度慢的区域,客户使用WiFi和3G连接也会出现问题.

以下是我们在App日志中注意到的一些例外情况

下面的一个发生在5分钟后,因为我已将Socket超时设置为5分钟.该应用程序试图在这种情况下发布145kb的数据

堆栈跟踪java.net.SocketTimeoutException:在org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_read(本机方法)中读取超时时间,位于org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl $ SSLInputStream.read( OpenSSLSocketImpl.java:662)org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103)at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:191)

下面发生了2.5分钟(套接字超时设置为5分钟),客户端发送了144kb的数据

javax.net.ssl.SSLException:写入错误:ssl = 0x5e4f4640:系统调用期间的I/O错误,org.apache中的org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_write(本机方法)中的管道损坏. harmony.xnet.provider.jsse.OpenSSLSocketImpl $ SSLOutputStream.write(OpenSSLSocketImpl.java:704)位于org.apache.http.impl的org.apache.http.impl.io.AbstractSessionOutputBuffer.write(AbstractSessionOutputBuffer.java:109). io.ContentLengthOutputStream.write(ContentLengthOutputStream.java:113)

1分钟后发生了一次.

堆栈跟踪javax.net.ssl.SSLException:org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake上org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(本地方法)的对等关闭连接(OpenSSLSocketImpl.java:378)org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl $ SSLInputStream.(OpenSSLSocketImpl.java:634)at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.getInputStream(OpenSSLSocketImpl. Java的:605)

77秒后发生了一次

堆栈跟踪javax.net.ssl.SSLException:SSL握手中止:ssl = 0x5e2baf00:系统调用期间的I/O错误,org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(本机方法)中的对等连接重置在org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:378)org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl $ SSLInputStream.(OpenSSLSocketImpl.java:634)at org. org.apache.http.impl.io.SocketInputBuffer上的apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.getInputStream(OpenSSLSocketImpl.java:605).(SocketInputBuffer.java:70)

15秒后发生一次以下(连接超时设置为15秒)

拍摄时间:15081堆栈跟踪org.apache.http.conn.ConnectTimeoutException:连接到org.apache.http.conn.scheme.PlainSocketFactory.connectSocket上的/103.xx.xx.xx:443超时(PlainSocketFactory.java:121 )org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)位于org.apache.http的org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164). impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:365)

以下是我用于发布请求的源代码片段

HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, 15000); //15 seconds
HttpConnectionParams.setSoTimeout(params, 300000); // 5 minutes

HttpClient client = getHttpClient(params);
HttpPost post = new HttpPost(uri);
post.setEntity(new ByteArrayEntity(requestByteArray));
HttpResponse httpResponse = client.execute(post);

    ....

public static HttpClient getHttpClient(HttpParams params) …
Run Code Online (Sandbox Code Playgroud)

java apache ssl android nginx

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

Ruby数组上未定义的方法'to_h'

根据Ruby Array文档,to_h只要数组的每个元素是另外两个元素的数组,就有一种方法可用于将数组转换为哈希.以下示例来自相同的文档

p [[:foo, :bar], [1, 2]].to_h
Run Code Online (Sandbox Code Playgroud)

但是,当我运行上面的代码时,我收到此错误:

irb(main):001:0> p [[:foo, :bar], [1, 2]].to_h
NoMethodError: undefined method `to_h' for [[:foo, :bar], [1, 2]]:Array
        from (irb):1
        from E:/RubyInstall/bin/irb:12:in `<main>'
irb(main):002:0>
Run Code Online (Sandbox Code Playgroud)

我的Ruby版本是

C:\>ruby -v
ruby 2.0.0p247 (2013-06-27) [x64-mingw32]
Run Code Online (Sandbox Code Playgroud)

我想用这种技术来回答关于Stackoverflow的另一个问题,但我现在卡住了,因为Ruby的文档功能对我不起作用.

ruby arrays hash ruby-2.0

13
推荐指数
3
解决办法
8007
查看次数

Elixir:带有点和嵌套模块的模块名称 - 它们是等价的吗?

以下代码是否相同?至于调用模块方法,在两种情况下都会使用Utilities.StringUtils.some_method(...)

嵌套模块

defmodule Utilities do
   defmodule StringUtils do
   end
end
Run Code Online (Sandbox Code Playgroud)

名称中带点的模块

defmodule Utilities.StringUtils do
end
Run Code Online (Sandbox Code Playgroud)

elixir

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

Elixir:修改模块属性的值

是否有可能实现以下行为,其中一个人试图改变模块属性的值来改变模块方法的行为?

defmodule Adder do
  @num_to_add 10
  def addTo(input), do: input + @num_to_add
end

IO.inspect Adder.addTo(5)  # Prints 15

Adder.num_to_add = 20

IO.inspect Adder.addTo(5)  # Expect it to print 25
Run Code Online (Sandbox Code Playgroud)

它抛出错误

** (CompileError) hello.exs:8: cannot invoke remote function Adder.num_to_add/0 inside match
    (elixir) src/elixir_clauses.erl:26: :elixir_clauses.match/3
Run Code Online (Sandbox Code Playgroud)

如果这是不可能的(因为Elixir中的所有内容都应该是不可变的),是否有任何Elixir方法可以实现类似的行为.

elixir

9
推荐指数
2
解决办法
3190
查看次数

DBCP2 - 何时从池中删除空闲连接

在配置DBCP2池时,基于我注意到的文档 - 有一个被称为配置的配置timeBetweenEvictionRunsMillis描述如下:

在空闲对象逐出器线程的运行之间休眠的毫秒数.当非正数时,将不运行空闲对象逐出器线程.

它的默认值是-1.

这是否意味着evictor线程永远不会在默认配置中运行?然后如何maxIdle强制执行配置参数- 如果池的计数大于,则池必须驱逐空闲连接maxIdle.

对我来说,默认配置是永远不会驱逐空闲连接似乎非常混乱.

还有另一种配置softMiniEvictableIdleTimeMillis似乎在其上发挥了一些作用timeBetweenEvictionRunsMillis.

在这方面的任何澄清都将是非常有帮助的.

暂时,我正在配置下面的池 - 因为我的目标是在我的池中没有任何空闲连接太长时间(这是我们使用AWS RDS所需要的,并且我们似乎有一个奇怪的问题,我们经常遇到)

    BasicDataSource dataSource = new BasicDataSource();
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl(properties.getProperty("app.mysql.url"));
    dataSource.setUsername(properties.getProperty("app.mysql.username"));
    dataSource.setPassword(properties.getProperty("app.mysql.password"));
    dataSource.setMaxIdle(20);
    dataSource.setMaxWaitMillis(20000); //wait 10 seconds to get new connection
    dataSource.setMaxTotal(200);
    dataSource.setMinIdle(0);
    dataSource.setInitialSize(10);
    dataSource.setTestOnBorrow(true);
    dataSource.setValidationQuery("select 1");
    dataSource.setValidationQueryTimeout(10); //The value is in seconds

    dataSource.setTimeBetweenEvictionRunsMillis(600000); // 10 minutes wait to run evictor process
    dataSource.setSoftMinEvictableIdleTimeMillis(600000); // 10 minutes wait to run evictor process
    dataSource.setMinEvictableIdleTimeMillis(60000); // 60 …
Run Code Online (Sandbox Code Playgroud)

java connection-pooling apache-commons-dbcp

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

在Ruby中如何找到一个元素数组的索引?

在Ruby 2.4中,如何在另一个数组中找到数组元素的最早索引?也就是说,如果数组的任何元素出现在另一个数组中,我想得到第一个索引.我认为find_index可能会这样做,但是

2.4.0 :004 > a = ["a", "b", "c"]
 => ["a", "b", "c"]
2.4.0 :005 > a.find_index("a")
 => 0
2.4.0 :006 > a.find_index(["b", "c"])
 => nil
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我希望看到输出"1",因为元素"b"出现在数组"a"的索引1处.

ruby arrays element find

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

Elixir - 同一行上的多个表达式 - 在函数定义中使用do:syntax时编译器错误

在Elixir中,多个表达式可以用semicolon(;)分隔.

Elixir在下面的函数定义中抱怨

defmodule Module2 do
    def func([c], n), do: IO.inspect(c); c + n
end
Run Code Online (Sandbox Code Playgroud)

有错误

** (CompileError) hello.exs:2: undefined function c/0
    (stdlib) lists.erl:1352: :lists.mapfoldl/3
    (stdlib) lists.erl:1352: :lists.mapfoldl/3
    (stdlib) lists.erl:1353: :lists.mapfoldl/3
Run Code Online (Sandbox Code Playgroud)

但是,Elixir对以下语法感到满意.

defmodule Module1 do
    def func([c], n) do 
        IO.inspect(c); c + n
    end
end
Run Code Online (Sandbox Code Playgroud)

我不确定为什么一个在另一个上工作 - 据我所知,两种函数定义的样式都是等价的.


完整的代码供参考

defmodule Module1 do
    def func([c], n) do 
        IO.inspect(c); c + n
    end
end
defmodule Module2 do
    def func([c], n), do: IO.inspect(c); c + n
end

Module1.func('r', 13)
Module2.func('r', 13)
Run Code Online (Sandbox Code Playgroud)

elixir

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