小编znl*_*lyj的帖子

java中的"重入"

可重入意味着在每个线程而不是每次调用的基础上获取锁.

由于线程持有内部锁,这不意味着线程运行一次等于调用基础吗?

谢谢,似乎意味着:在一个线程中,如果我lockAdoA调用函数的过程函数中得到一个锁doB,并且doB还需要一个锁lockA,那么就会有一个可重入.在Java中,每个线程都会获得这种现象,所以我不需要考虑死锁?

java reentrancy

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

频繁的主要gc但不是免费堆?

运行几个小时后,我的http服务器开始频繁主要的gc,但没有释放堆.

几次重大的GC以后,promotion failedconcurrent mode failure发生,然后堆被释放.我的gc日志如下:

{Heap before GC invocations=7172 (full 720):
 par new generation   total 737280K, used 667492K [0x000000076b800000, 0x000000079d800000, 0x000000079d800000)
  eden space 655360K, 100% used [0x000000076b800000, 0x0000000793800000, 0x0000000793800000)
  from space 81920K,  14% used [0x0000000793800000, 0x00000007943d91d0, 0x0000000798800000)
  to   space 81920K,   0% used [0x0000000798800000, 0x0000000798800000, 0x000000079d800000)
 concurrent mark-sweep generation total 1482752K, used 1479471K [0x000000079d800000, 0x00000007f8000000, 0x00000007f8000000)
 concurrent-mark-sweep perm gen total 131072K, used 58091K [0x00000007f8000000, 0x0000000800000000, 0x0000000800000000)
2015-11-19T21:50:02.692+0800: 113963.532: [GC2015-11-19T21:50:02.692+0800: 113963.532: [ParNew (promotion failed)
Desired survivor size 41943040 …
Run Code Online (Sandbox Code Playgroud)

java garbage-collection

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

为什么在redis中使用管道时,有100,000条记录这么慢?

据说pipelineset/getredis需要很多时,这是一个更好的方法,所以这是我的测试代码:

public class TestPipeline {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        JedisShardInfo si = new JedisShardInfo("127.0.0.1", 6379);
        List<JedisShardInfo> list = new ArrayList<JedisShardInfo>();
        list.add(si);
        ShardedJedis jedis = new ShardedJedis(list);
        long startTime = System.currentTimeMillis();
        ShardedJedisPipeline pipeline = jedis.pipelined();
        for (int i = 0; i < 100000; i++) {
            Map<String, String> map = new HashMap<String, String>();
            map.put("id", "" + i);
            map.put("name", "lyj" + i);
            pipeline.hmset("m" + i, map);
        } …
Run Code Online (Sandbox Code Playgroud)

java pipeline redis

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

awk和正则表达式的简单问题

 echo xx y11y rrr | awk '{ if ($2 ~/y[1-5]{2}y/) print $3}'
Run Code Online (Sandbox Code Playgroud)

为什么我无法获得任何输出?

谢谢.

regex shell awk gawk

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

这是一种在Java中创建只读List的方法吗?

用java思考说:

要从AbstractList创建只读List,必须实现get()和size().

它让我困惑,代码如下:

 public class CountingIntegerList
extends AbstractList<Integer> {
  private int size;
  public CountingIntegerList(int size) {
    this.size = size < 0 ? 0 : size;
  }
  public Integer get(int index) {
    return Integer.valueOf(index);
  }
  public int size() { return size; }
  public static void main(String[] args) {
    List list = new CountingIntegerList(30);
  }
}
Run Code Online (Sandbox Code Playgroud)

列表是只读列表吗?为什么?

好吧,答案是肯定的,因为我延伸AbstractList并抛出UnsupportedOperationExceptionif set或者and被调用.如果我想获得一个不可修改的List,Collections.unmodifiableList()是一个不错的选择.但请记住,它们都不是一成不变的:

      List<StringBuilder> list = new ArrayList<StringBuilder>();
      StringBuilder sb = new StringBuilder();
      sb.append("hello");
      list.add(sb);
      System.out.println(list);
      list …
Run Code Online (Sandbox Code Playgroud)

java list

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

标签 统计

java ×4

awk ×1

garbage-collection ×1

gawk ×1

list ×1

pipeline ×1

redis ×1

reentrancy ×1

regex ×1

shell ×1