`
lujintao
  • 浏览: 3710 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
该类库实现了对象的快速序列化/反序列化,专门为java语言打造,后续会支持其它语言。 小巧,序列化后的字节流占用空间比protostuff小,平均为kyro的三分之二大小 处理速度快,序列化/反序列化综合速度为protostuff的1.5倍 API调用方便 支持循环引用 支持java的所有类型,包括枚举、多维数组 支持没有无参构造方法的类 无侵入设计,使用中无需做任何其它配置,只需序列化方/反序列化方类属性的顺序相同 线程安全 支持序列化/反序列化的时候类属性不完全一致,但是要求反序列化的时候定义的类属性必须包含序列化时定义的类属性,可以新增属性,新增属性要求在原有属性末 ...
   当业务数据量很大而且增长快,在设计数据库时,我们往往不会采用数据库自增ID,这样不便于未来的数据库扩容。我们往往会自己想办法生成ID,业界用得较多的是SnowFlake算法,但该算法有一个缺点,因为ID获取方法上同步锁的存在,在高并发下会存在性能瓶颈。以下是SnowFlake算法获取ID的部分代码:    /**     * 获得下一个ID (该方法是线程安全的)     * @return SnowflakeId     */    public synchronized long nextId() {        long timestamp = timeGen();       ...
import java.util.ArrayList;import java.util.List;import java.util.regex.Pattern;/*** * 表示大数据类型 * @author lujintao * */public class BigNumber{    //BASE指的是进制基数,好比2进制,16进制    private static final int BASE = 10;    private static final int LENGTH = new Integer(BASE).toString().length() - 1;    //依次存放从低位 ...
       在activemq中,当我们第一次通过session.createDurableSubscriber(topic,name)创建一个特定名称的持久化订阅时,broker就会为这个持久化订阅者维护一个主题消息列表,该主题消息列表存放了所有未被持久化订阅者消费的消息,持久化订阅者一旦消费了这条消息,这条消息就会从主题消息列表中移除,这样一来,持久化订阅者所在的机器如果突然宕机,那么当系统重启之后,持久化订阅者依然能够接受到在宕机期间,主题发布者发布的消息,从这点上看,和点对点的队列消息域中的消费模式有点类似,但这种能够获得其不在线时主题发布者发布的消息的能力,是在创建了持久化订阅之 ...
      我们都知道RuntimeException 和 Checked Exception 在使用语法上的区别,那么具体在什么情况下该使用RuntimeException呢?      RuntimeException 表示的是一种程序错误,是由于调用者没有遵循API规范,错误调用引起的,例如我们熟悉的NullException, IndexOutOfBoundsException(数组索引越界访问异常),ArithmeticException(运算错误异常),IllegalArgumentException(非法参数异常),ClassCastException(类型转换异常)。    C ...
  当某个问题计算量很大时,很多时候我们都会考虑使用分布式计算来解决问题。但是如果我们能让程序在单机上也尽可能的多做事,那岂不更好。          前段时间,在开发过程中,我们团队遇到了一个问题:要统计在调查参与者中同时选了某些选项的人数。如果按照传统方法,从数据库里一个一个查,其计算所花时间 会随着选项的增大而迅速增加,最后我么摒弃了从数据库里一个一个查的想法,而是尝试了一种全新的方法:不从数据库里查,而是让CPU在本地计算出同时选择的人数,按照我们的设想,它会对调查者逐层过滤,一开始可能有1000人,可到最里层的选项A时,也许比较的人数就只有3人,也就是本来要比较1000次,而现在只需 ...
Global site tag (gtag.js) - Google Analytics