小编Che*_*eng的帖子

我应该将Jackson的ObjectMapper声明为静态字段吗?

杰克逊图书馆的ObjectMapper课程似乎是线程安全的.

这是否意味着我应该将我声明ObjectMapper为像这样的静态字段

class Me {
    private static final ObjectMapper mapper = new ObjectMapper();
}
Run Code Online (Sandbox Code Playgroud)

而不是像这样的实例级字段?

class Me {
    private final ObjectMapper mapper = new ObjectMapper();
}
Run Code Online (Sandbox Code Playgroud)

java json jackson

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

我应该在构造函数或外部构造函数中初始化变量

当我根据我的C++知识使用Java时,我喜欢使用以下方式初始化变量.

public class ME {
    private int i;

    public ME() {
         this.i = 100;
    }
}
Run Code Online (Sandbox Code Playgroud)

过了一段时间,我改变了习惯

public class ME {
    private int i = 100;

    public ME() {
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到了其他的源代码,有些使用了第1个约定,有些则使用了第2个约定.

我可以知道你们都推荐哪种惯例,为什么?

java

215
推荐指数
6
解决办法
13万
查看次数

在ExecutorService的提交和ExecutorService的执行之间进行选择

如果返回的值不是我关注的话,我应该如何在ExecutorService的 提交执行之间进行选择?

如果我同时测试两者,除了返回值之外,我没有看到两者之间有任何差异.

ExecutorService threadExecutor = Executors.newSingleThreadExecutor();
threadExecutor.execute(new Task());
Run Code Online (Sandbox Code Playgroud)
ExecutorService threadExecutor = Executors.newSingleThreadExecutor();
threadExecutor.submit(new Task());
Run Code Online (Sandbox Code Playgroud)

java multithreading executorservice

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

在数据库中存储JSON与为每个键创建一个新列

我正在实现以下用于在我的表中存储用户相关数据的模型 - 我有2列 - uid(主键)和一个meta以JSON格式存储有关用户的其他数据的列.

 uid   | meta
--------------------------------------------------
 1     | {name:['foo'], 
       |  emailid:['foo@bar.com','bar@foo.com']}
--------------------------------------------------
 2     | {name:['sann'], 
       |  emailid:['sann@bar.com','sann@foo.com']}
--------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

这是一个更好的方式(性能明智的,设计明智)比一列,每个属性模型,其中表将不得不像许多列uid,name,emailid.

我喜欢第一个模型,你可以添加尽可能多的字段,没有限制.

此外,我想知道,现在我已经实现了第一个模型.如何对其执行查询,例如,我想获取所有名称为'foo'的用户?

问题 - 在数据库中使用-JSON或每个字段的列存储用户相关数据(请记住数字不固定)的更好方法是什么?另外,如果实现了第一个模型,如何查询数据库如上所述?我是否应该同时使用这两个模型,将查询可能搜索的所有数据存储在一个单独的行中,将其他数据存储在JSON中(是不同的行)?


更新

由于我需要执行搜索的列数不会太多,因此使用这两个模型是否明智?我需要搜索的数据的每列密钥和其他人的JSON(在同一个MySQL数据库中)?

mysql sql database sql-server optimization

184
推荐指数
6
解决办法
13万
查看次数

URLEncoder无法转换空格字符

我期待着

System.out.println(java.net.URLEncoder.encode("Hello World", "UTF-8"));
Run Code Online (Sandbox Code Playgroud)

输出:

Hello%20World

(20是空格的ASCII十六进制代码)

但是,我得到的是:

Hello+World

我使用了错误的方法吗?我应该使用的正确方法是什么?

java url urlencode

166
推荐指数
10
解决办法
16万
查看次数

检查元素是否是父元素的子元素

我有以下代码.

<html>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>

<div id="hello">Hello <div>Child-Of-Hello</div></div>
<br />
<div id="goodbye">Goodbye <div>Child-Of-Goodbye</div></div>

<script type="text/javascript">
<!--
function fun(evt) {
    var target = $(evt.target);    
    if ($('div#hello').parents(target).length) {
        alert('Your clicked element is having div#hello as parent');
    }
}
$(document).bind('click', fun);
-->
</script>

</html>
Run Code Online (Sandbox Code Playgroud)

我希望只有在Child-Of-Hello被点击时,$('div#hello').parents(target).length才会返回> 0.

但是,只要我点击任何地方,它就会发生.

我的代码有问题吗?

javascript jquery

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

AtomicInteger lazySet vs. set

lazySetset方法有AtomicInteger什么区别?该文件并没有太多的话要说lazySet:

最终设置为给定值.

似乎存储的值不会立即设置为所需的值,而是计划在将来的某个时间设置.但是,这种方法的实际用途是什么?任何例子?

java concurrency atomic

109
推荐指数
5
解决办法
3万
查看次数

建议将元素插入地图的方法

可能重复:
在STL映射中,使用map :: insert比[]更好吗?

我想知道,当我将元素插入地图时,建议的方法是什么.我是不是该

map[key] = value;
Run Code Online (Sandbox Code Playgroud)

要么

map.insert(std::pair<key_type, value_type>(key, value));
Run Code Online (Sandbox Code Playgroud)

我做了以下快速测试:

#include <map>
#include <string>
#include <iostream>

class Food {
public:
    Food(const std::string& name) : name(name) { std::cout << "constructor with string parameter" << std::endl; }
    Food(const Food& f) : name(f.name) { std::cout << "copy" << std::endl; }
    Food& operator=(const Food& f) { name = f.name; std::cout << "=" << std::endl; return *this; } 
    Food() { std::cout << "default" << std::endl; }
    std::string name;
};

int main() { …
Run Code Online (Sandbox Code Playgroud)

c++ stl stdmap

91
推荐指数
4
解决办法
17万
查看次数

在多线程环境中使用HttpClient的最佳实践

有一段时间,我一直在多线程环境中使用HttpClient.对于每个线程,当它启动连接时,它将创建一个全新的HttpClient实例.

最近,我发现,通过使用这种方法,它可能导致用户打开太多端口,并且大多数连接处于TIME_WAIT状态.

http://www.opensubscriber.com/message/commons-httpclient-dev@jakarta.apache.org/86045.html

因此,而不是每个线程做:

HttpClient c = new HttpClient();
try {
    c.executeMethod(method);
}
catch(...) {
}
finally {
    method.releaseConnection();
}
Run Code Online (Sandbox Code Playgroud)

我们计划:

[方法A]

// global_c is initialized once through
// HttpClient global_c = new HttpClient(new MultiThreadedHttpConnectionManager());

try {
    global_c.executeMethod(method);
}
catch(...) {
}
finally {
    method.releaseConnection();
}
Run Code Online (Sandbox Code Playgroud)

在正常情况下,global_c将同时由50个++线程访问.我想知道,这会产生任何性能问题吗?MultiThreadedHttpConnectionManager是否使用无锁机制来实现其线程安全策略?

如果10个线程正在使用global_c,那么其他40个线程是否会被锁定?

或者,如果在每个线程中我创建一个HttpClient实例,但是显式释放连接管理器会更好吗?

[方法B]

MultiThreadedHttpConnectionManager connman = new MultiThreadedHttpConnectionManager();
HttpClient c = new HttpClient(connman);
try {
      c.executeMethod(method);
}
catch(...) {
}
finally {
    method.releaseConnection();
    connman.shutdown();
}
Run Code Online (Sandbox Code Playgroud)

connman.shutdown()会遇到性能问题吗?

对于使用50 ++线程的应用程序,我可以知道哪种方法(A或B)更好吗?

java apache-commons-httpclient

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

没有为后退按钮按下或触摸外部的AlertDialog调用setOnCancelListener和setOnDismissListener

什么时候

  • 触摸对话框区域外部
  • 按下后退按钮

我期待onDismiss(或onCancel)会被召唤.但是,它们都没有被调用.我可以知道有什么我想念的吗?从AlertDialog setOnDismissListener不起作用,我以为onCancel当我按下后退按钮时会调用它.但它对我不起作用.我可以知道有什么我错过了吗?

public class RateAppDialogFragment extends SherlockDialogFragment {
    public static RateAppDialogFragment newInstance() {
        RateAppDialogFragment rateAppDialogFragment = new RateAppDialogFragment();
        return rateAppDialogFragment;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Get the layout inflater
        LayoutInflater inflater = getActivity().getLayoutInflater();
        View view = inflater.inflate(R.layout.rate_app_dialog_fragment, null);

        Utils.setCustomTypeFace(view, Utils.ROBOTO_LIGHT_TYPE_FACE);

        final AlertDialog dialog = new AlertDialog.Builder(this.getSherlockActivity())            
        .setTitle("Love JStock?")
        .setView(view)
        // Add action buttons
        .setPositiveButton("Rate 5 stars \u2605", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int …
Run Code Online (Sandbox Code Playgroud)

android

60
推荐指数
3
解决办法
5万
查看次数