出于学习目的,我在 Erlang 中编写了一个简单的 TCP 代理。它可以工作,但是当我使用 ab (Apache Bench) 发出许多并发请求时,我遇到了奇怪的性能下降。让我感到疑惑的不是性能下降本身,而是下降的规模。后端是 nginx 作为 Web 服务器。我的代理位于 ab 和 nginx 之间。
这是我的代理的代码。
-module(proxy).
-export([start/3]).
start(InPort, OutHost, OutPort) ->
{ok, Listen} = gen_tcp:listen(InPort, [binary, {packet, 0}, {active, once}]),
spawn(fun() -> connect(Listen, OutHost, OutPort) end).
connect(Listen, OutHost, OutPort) ->
{ok, Client} = gen_tcp:accept(Listen),
spawn(fun() -> connect(Listen, OutHost, OutPort) end),
{ok, Server} = gen_tcp:connect(OutHost, OutPort, [binary, {packet, 0}, {active, once}]),
loop(Client, Server).
loop(Client, Server) ->
receive
{tcp, Client, Data} ->
gen_tcp:send(Server, Data),
inet:setopts(Client, [{active, once}]),
loop(Client, Server); …Run Code Online (Sandbox Code Playgroud) Java静态编译器(javac)内联一些静态最终变量,并将值直接带到常量池.请考虑以下示例.A类定义了一些常量(公共静态最终变量):
public class A {
public static final int INT_VALUE = 1000;
public static final String STRING_VALUE = "foo";
}
Run Code Online (Sandbox Code Playgroud)
B类使用以下常量:
public class B {
public static void main(String[] args) {
int i = A.INT_VALUE;
System.out.println(i);
String s = A.STRING_VALUE;
System.out.println(s);
}
}
Run Code Online (Sandbox Code Playgroud)
编译类B时,javac从类A获取这些常量的值,并在B.class中内联这些值.结果,编译时必须从A类中删除的依赖关系B从字节码中删除.这是一种相当奇特的行为,因为您在编译时正在烘焙这些常量的值.你会认为这是JIT编译器在运行时可以做的最容易的事情之一.
是否有任何方法或任何隐藏的编译器选项可以禁用javac的这种内联行为?对于后台,我们正在考虑进行字节码分析以实现依赖性目的,并且它是字节码分析无法检测编译时依赖性的少数情况之一.谢谢!
编辑:这是一个棘手的问题,因为通常我们不控制所有源(例如,定义常量的第三方库).我们有兴趣从使用常量的角度检测这些依赖关系.由于引用是从使用常量的代码中删除的,因此没有简单的方法来检测它们,缺少源代码分析.
我有一个使用Bundler进行依赖关系管理的Rails应用程序.我有以下内容Gemfile:
# default group:
gem 'json'
group 'development' do
gem 'my_profiler'
end
group 'test' do
gem 'mocha'
end
group 'deployment' do
gem 'foo'
end
Run Code Online (Sandbox Code Playgroud)
我打电话Bundler.setup(:default, RAILS_ENV.to_sym)和Bundler.require(:default, RAILS_ENV.to_sym)我的初始化.
问题在于,由于Bundler放入了宝石vendor/bundle/,Rails会初始化所有拥有的宝石init.rb,而不仅仅是当前环境的宝石.如何防止Rails自动加载Foo init.rb?
在尝试来自Euler Project的问题41时,我遇到了似乎是Array.permutation的Ruby 1.9实现中的一个错误.这是隔离的问题代码:
n = 4
slice = '987654321'.chars.to_a[-n..-1]
puts "slice = #{slice.join}"
slice.permutation(n) {|perm| puts perm.join}
slice2 = slice.dup
puts "slice2 = #{slice2.join}"
slice2.permutation(n) {|perm| puts perm.join}
slice3 = []
(0...n).each {|i| slice3[i] = slice[i]}
puts "slice3 = #{slice3.join}"
slice3.permutation(n) {|perm| puts perm.join}
Run Code Online (Sandbox Code Playgroud)
我对slice和slice2的输出是:
slice = 4321
9876
9867
9786
9768
9687
...
Run Code Online (Sandbox Code Playgroud)
但是,slice3出现正确,数字1到4被置换.此外,n = 4是第一个出现此问题的值.当我设置n = 3时,我得到预期的输出.这是一个错误,还是我错误的编码?快速谷歌搜索没有发现任何东西.
当我正在显示iPhone浏览器中的地址栏时,我试图以面向未来且与设备无关的方式检测.这是显示在顶部的工具栏,用于显示URL.它可以通过调用隐藏:
window.scrollTo(0, 0)
Run Code Online (Sandbox Code Playgroud)
我想做的是检测它何时被显示(从而减少可用的观看空间)并设置一个计时器以便在大约一秒钟之后再次隐藏它.比这更频繁,它会非常烦人,因为用户将无法访问地址栏.
我试过检查window.pageYOffset,不幸的是,如果网址栏的任何部分可见,则返回零.
我不希望硬编码在iPhone上的任何尺寸,并检查那些使用当前视口大小.它太脆弱了.
有人知道解决方案吗?
以下是用例:我在 A、B、C 3 列上定义了唯一索引。假设其中的值为A1、B1、C1。我的java代码正在添加一条新记录,例如A1,B1,C1,但在添加此记录之前,我将先前的值从C1更新为C2。在尝试添加新记录时(更新后),hibernate 抛出唯一约束冲突异常。有什么理由吗?上述所有语句都在同一个事务中执行。我的假设是插入发生在更新之前,因此是异常的原因。
有什么想法/建议吗?
我是Objective-C的新手,所以请不要过多地评价我.我想知道:我可以在Objective-C中使用相当于C++ STL对的容器吗?
我想构建一个包含与NSBool关联的NSInteger的数组.我知道我可以使用一个数组,每个条目都是一个具有单个键值的NSDictionary,但我发现它有点矫枉过正.
有任何想法吗?
谢谢.
是否有支持大多数VS Visual C++的Linux的Visual C++编译器?
如果没有这样的移植\适应您的可视化C++代码的最佳选择?
希望对于那里的人(可能是一个骗子)来说这应该是一个简单的答案,但我似乎无法弄明白.
我需要输出一个如下所示的元素:
<Quantity foo="AB" bar="CD">37</Quantity>
Run Code Online (Sandbox Code Playgroud)
我知道如何得到这个:
<Quantity foo="AB" bar="CD">
<qty>37</qty>
</Quantity>
Run Code Online (Sandbox Code Playgroud)
包含Quantity类
public int qty;
[XmlAttribute]
public string foo;
[XmlAttribute]
public string bar;
Run Code Online (Sandbox Code Playgroud)
但当然,无论我插入数量的变量是什么变成它自己的子元素.
另一方面,如果我在父元素中将Quantity作为变量,那么我可以设置值并获取
<Quantity>37</Quantity>
Run Code Online (Sandbox Code Playgroud)
但后来我不知道如何获得属性.
如果没有一个简单的方法来使用XmlSerializer,我会非常惊讶,但我还不知道.有任何想法吗?
dependencies ×2
iphone ×2
java ×2
ruby ×2
bundler ×1
bytecode ×1
c# ×1
c++ ×1
c++-cli ×1
erlang ×1
hibernate ×1
javac ×1
javascript ×1
linux ×1
networking ×1
objective-c ×1
performance ×1
plugins ×1
proxy ×1
python ×1
std-pair ×1
stl ×1
tcp ×1
unique-index ×1
visual-c++ ×1