什么时候适合NoSQL
摘要:突然感悟了什么时候需要NoSQL。 当BaseModel不确定模式的时候。 例如,一个管理mysql集群的webapp,很容易想到的model有cluster对象,一个cluster对象有1到多个mysqlapp对象。mysqlapp的字段可能有id, clusterid, hostip, mysq
阅读全文
posted @
2019-12-06 13:10
还好可以改名字
阅读(211)
推荐(0)
spring security源码debug [0]
摘要:spring security的典型用法 配置 下面是spring security.xml的配置 在web.xml中添加spring的DelegatingFilterProxy 其中contextAttribute配置的spring的webapplicationcontext的key name,注
阅读全文
posted @
2019-12-06 09:28
还好可以改名字
阅读(434)
推荐(1)
MongoDB 的objectid和UUID
摘要:objectid是12字节组成,四个成分timestamp+machash+pid+inc 默认mongodb collection内的_id是唯一的。客户插入文档时依赖driver自动生成的_id能否保证唯一呢? 自动objectid的唯一性 自动生成并不是mongo daemon生成的,而是dr
阅读全文
posted @
2019-05-29 09:20
还好可以改名字
阅读(4042)
推荐(0)
Builder模式
摘要:将构造和表示分离,目标对象是抽象出来的比较简单便于理解的类,而从现有条件构造出对象的过程很复杂。这个描述还没有到点上。来一个比较使用的场景。 一个场景 例如需要构造一个Person类,有name,id,age,sex,height,weight,hobby。 其中name和id是必须的,其他是可选的
阅读全文
posted @
2019-05-18 11:19
还好可以改名字
阅读(142)
推荐(0)
ThreadLocal为什么不使用Thread-value实现
摘要:实现 各个Thread对象保存一个 ,保存的是本Thread涉及的所有的ThreadLocal变量的本线程版本数据。 一个app中可能多出用到不同的ThreadLocal,tl1被t1 t3使用,tl2被t1,t2,t4使用,所以t1的Map中保存了两个entry。 为什么不是的Map的实现 假如一
阅读全文
posted @
2019-03-11 12:43
还好可以改名字
阅读(834)
推荐(0)
Maestro OAuth实现分析
摘要:虽然OAuth的基本有理早就知道。但是具体实现的一些方案细节是什么并没有研究过,现在就跟踪一下Maestro的实现。Maestro授权的restapi是/authorize,参数response_type: code--指定返回类型,code表示,返回的一串code代表当前请求者认证后的身份user
阅读全文
posted @
2019-02-15 13:56
还好可以改名字
阅读(177)
推荐(0)
JVM类加载的符号解析
摘要:典型的一个类中,主要是static字段,类字段,static方法,类方法这四种存在。 至于static字段和类字段的初始化赋值语句,看似有点特别,其实在编译后归入 方法。 对于一个方法,形式参数实际上在调用方法之前会被压栈,进入操作数栈,这是栈帧的一部分。 方法的局部变量,如果是对象,对象本身的数据
阅读全文
posted @
2018-10-11 09:29
还好可以改名字
阅读(825)
推荐(0)
JMM和volatile,final,锁的内存语义
摘要:volatile内存语义 + 结果可见性。对于volatile的读写都是看成直接对mem的读写,而不是对本地cache的读写。 volatile语义的实现。 + 禁止编译器的相关重排序 + 禁止CPU指令重排序 这两步需同时保证,否则无法保证volatile语义。对于编译器所禁止的指令重排序: +
阅读全文
posted @
2018-05-15 10:34
还好可以改名字
阅读(690)
推荐(0)
Java泛型边界问题,super和extends关键字
摘要:背景 为什么JDK5要引入泛型,泛型保证参数类型一致性。什么叫类型一致? 假设有继承关系,A list; list.add(new C()); list.add(new D()); list.add(new B());//compile ERROR 并没有破坏list的类型一致性,因为list被声明
阅读全文
posted @
2018-05-04 09:46
还好可以改名字
阅读(4221)
推荐(0)
Java synchronized锁的底层实现概述
摘要:偏向锁 JVM默认开启偏向锁。在对象头中锁标志前一位用来标记偏向锁是否可用。 锁标记01表示偏向锁。 偏向锁释放 获得偏向锁的线程,在对象头中写有线程id,不会主动释放锁: 没有其他线程竞争,对象头中始终是获得锁的tid。 线程tid2竞争,此时objhead中仍存着tid1。JVM首先安全暂停ti
阅读全文
posted @
2018-05-02 21:24
还好可以改名字
阅读(1641)
推荐(0)