`
文章列表
 BeanUtils.copyProperties VS  PropertyUtils.copyProperties  作为两个bean属性copy的工具类,他们被广泛使用,同时也很容易误用,给人造成困然;比如:昨天发现同事在使用BeanUtils.copyProperties copy有integer类型属性的bean时,没有考虑到会将null转换为0,而后面的业务依赖于null来判断,导致业务出错。下面总结一下主要的注意点:   大范围两个工具类都是对两个bean之前存在name相同的属性进行处理,无论是源bean或者目标bean多出的属性均不处理。 具体到 ...
  此文乃是翻译。。 原文地址:http://mechanical-sympathy.blogspot.com/2011/07/write-combining.html 墙内地址:http://ifeve.com/write-combining/                     合并写(write combining )     现代CPU采用大量的技术来抵消内存访问延迟。 从DRAM存储中读取或者写入数据的时间CPU可以执行上百个指令。     用来降低这种延迟的主要手段是使用多层次的SRAM缓存。此外,也有SMP系统采用消息传递协议来实现缓存之间的一致性。即便如此, ...
重要的内存访问模型 在高性能的计算中,我们常说缓存失效(cache-miss)是一个算法中最大性能损失点。 近些年来,我们的处理器处理能力的增长速度已经大大超过了访问主内存的延迟的增长。 通过更宽的,多通道的总线,到主内存的带宽已经大大增加,但延迟并没有相应显著减少。 为了减少延迟,处理器采用愈加复杂的多层的高速缓存子系统。  在1994年的一篇论文“Hitting the memory wall: implications of the obvious”中描述了这个问题,并且认为由于缓存失效(cache-miss)必定存在,缓存不能最终解决这个问题。我的目标是:向大家展示通过利用访 ...
    jsoup 是一款非常优秀的处理HTML的java工具,最大的特点就是拥有类似jquery的select操作。使用非常简单,但是最近本人在使用过程中,由于不熟悉踩了一个坑,记录已备忘。   代码如下:     public static void main(String[] args) { String content = "<a href=\"test.html\" title=\"men tshirt\" >men tshirt</a>"; try { ...
 前言:     由于最近在学习LMAX Disruptor, 它是一个高效的并发框架,里面涉及到许多底层的并发话题,后来在http://mechanical-sympathy.blogspot.com/这个博客上,发现很多很好的文章。于是起心翻译之,一来借翻译加深学习印象,二 ...
一、核心思想  1、锁分离技术: ConcurrentHashMap首先将数据分成一段一段(segment)的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问。  2、 final 关键字保证HashEntery 对象的不变性,来降低执行读操作的线程在遍历链表期间对加锁的需求: ConcurrentHashMap完全允许多个读操作并发进行,读操作并不需要加锁。HashEntry 中的 key,hash,next 都声明为 final 型。这意味着,不能把节点添加到链接的中间和尾部,也不能在链接的中间和尾部删除节点。这个特性可以保证 ...
一、 核心思想: CopyOnWriteArrayList的核心思想是利用高并发往往是读多写少的特性,对读操作不加锁,对写操作,先复制一份新的集合,在新的集合上面修改,然后将新集合赋值给旧的引用,并通过volatile 保证其可见性,当然写操作的锁是必不可少的了。 二、类图预览:  方法基本分为CopyOnWriteArrayList、indexOf、contains、get、set、add、remove、addIfAbsent和iterator几类: 1、CopyOnWriteArrayList  构造方法: 基本使用Arrays.copyOf 方法,将参数的集合类设置到arr ...
一、pthone 排序   1、[].sort 排序: 在Python里,可以使用`[].sort`实现默认的自然排序,其效率还不错。 2、自定义函数排序: 列表排序的顺序只是适用自然顺序,很多时候,你需要特定的顺序。比如需要排序的字段不是第一个字符,按照默认排序是毫无意义的。通过定义一个自定义函数返回-1则表示前者排在后者之前,返回0则表示二者顺序相同,返回1则表示后者排在前者之前,可以实现自己排序规则。 `cmp()`就是`[].sort()`的默认比较函数(在速度上'lst.sort()'远远超过'lst.sort(cmp)')。对于不太长的列表使用自定义比较函数可以快速的解决 ...
本文不讲述具体使用配置过程。。请先google了解需要配置的三个地方。。   一、概述:   各个框架对于国际化和本地化的支持方式都类似,从用户使用角度大致分为以下两步:   1、准备资源文件,比如:message.xml,message_zh_CN.xml,message_zh_TW.xml,当然properties 文件也是一样了,里面核心的内容是key1=value1, 2、在页面使用宏、标签等展示内容;比如:#springMessage("key");然后通过不同环境加载不同的文件获取不同value,实现本地化;   框架要做的事情:   1、 ...
啥,这么多年居然没有写过这种脚本。。应一个兄弟请求,帮忙写个每天定时下载的任务脚本,记录如下:   1、编写任务的shell脚本     #! /bin/sh workpath="/home/***/Downloads/"; cd $workpath; dateStr=$(date -u +%Y%m%d); fileName=top-${dateStr}.zip; echo "$fileName"; filePath=${workpath}${fileName}; echo "$filePath"; whil ...
昨天看到有人问:”一个程序在运行的时候,如何知道它是否发生死锁,如果发生死锁,如何找到发生死锁的位置?“;便贴了一段dump线程的数据,今天又有人问我怎么从dump文件中分析死锁,随做此文: 1、首先构造死锁,代码如下:     public class Deadlocker { private static Object lock_1 = new int[1]; private static Object lock_2 = new int[1]; public class Thread1 extends Thread { @ ...
由于BeanUtils 的美名远播,加之学艺不精;项目中想当然直接使用BeanUtils;结果华丽丽的掉进了陷阱;且看下面场景:1、待copy类 public class SiteSupplierTrade { private Long longAttr; private String[] StringArrayAttr; private Integer integerAttr; private String StringAttr; //set get }  2、copy类 public class SiteS ...
在上一篇中我们分析了     public class HelloWorld{ public static void main(String [] arvgs){ System.out.println("before log"); System.out.println("hello world"); System.out.println("after log"); } }  和   public class Hell ...
  我们不但要每天写代码,更应该时时停下来去看看自己的代码:下面是最近项目中code review 发现的一些问题;好的code review 不仅可以减少bug,更加是一个互相学习的过程:     一、代码背景:很多时候都会碰到数据类型的 ...
前面已经可以了解到AQS的设计,接下看一下具体的使用和实现: 1、java.util.concurrent 的结构: 曾经有一张图可以十分清楚地展示java.util.concurrent的结构,我也借来用一下,有助于理清楚整个大的结构,接下去主要是对各个部分的具体实现进行分析,首先还是从锁说起;     2、lock部分实现的类图: 上图是整个AQS的类图,红色框类表示JDK文档里面自带的一个简单使用ASQ的互斥锁的实现;接下去我们主要从AQS本身和这个简单的实现来解读源码;当然这里完全可以换为ReentrantLock等我们常使用的锁;只不过他们们本身有更加复杂的策略 ...
Global site tag (gtag.js) - Google Analytics