Clear Blog

Look what's happening here,it's magical

可重入锁

可重入锁,也叫做递归锁, 指的是同一线程外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但不受影响。 在JAVA环境下 ReentrantLock 和synchronized 都是 可重入锁。 我们自己来实现一个可重入锁,可以更加透彻的理解可重入的概念 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...

CentOS7角色用户

添加用户 adduser dolphinopr 修改密码 passwd dolphinopr dkl123 passwd postgres Xu,3efd5 psql -h 112.74.42.22 -p 64321 postgres postgres

SQL优化

因为之前迭代版本,很多优化工作拖到了现在。主要先做慢查询的优化。 先就索引这块,做个大概的说明。如何建索引,索引何时会在sql中用上。 索引相关 大多数MySQL索引(PRIMARY KEY、UNIQUE、INDEX和FULLTEXT)在B树中存储。只是空间列类型的索引使用R-树,并且MEMORY表还支持hash索引。 不能使用索引 索引是消耗物理空间从而加快查询效率,所以索引并非越多越好。...

分布式系统id生成策略

数据库自增id 往同一个db中插入一条没有意义的数据,返回自增id,然后将id赋给相应的对象。 优点:方便易用 缺点:高并发会成为性能瓶颈。 uuid 优点:本地生成 缺点:太长,无序,逐渐性能差 时间戳 + 用户id + 业务含义编码 优点:时间有序,本地生成 缺点:并发会有数据重复 snowflake算法 tw...

mongodb中ObjectId设计思路

mongo插入一个document的时候会自动生成一个_id,其值为ObjectId(4e7020cb7cac81af7136236b). “4e7020cb7cac81af7136236b”这是个24位的字符串, 看起来很长,也很难理解,实际上它是由一组十六进制的字符构成,每个字节两位的十六进制数字,总共用了12字节的存储空间。 Time 时间戳。将刚才生成的objectid的前4位进...

类双亲加载机制

简单的理解双亲加载机制就是,当一个类加载器收到类加载请求的时候,首先不会自己去加载, 而是委派父加载器完成,如果父加载器无法完成加载,子加载器才会自己完成加载。 JVM中包括集中类加载器: BootStrapClassLoader 引导类加载器 ExtClassLoader 扩展类加载器 AppClassLoader 应用类加载器 CustomClassLoader 用户...

GC参数

吞吐量优先的并行收集器 并行收集器主要以到达一定的吞吐量为目标,适用于科学技术和后台处理等。 java -Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+UseParallelGC:选择垃圾收集器为并行收集器。此配置仅对年轻代有效。即上述配置下,年轻代使用并发收集,而...

GC日志

为了更加直观的看到配置的JVM配置,可以在启动时配置jvm参数。 1 2 3 -XX:+PrintGC -Xms5m -Xmx20m -XX:+PrintGCDetails -XX:+PrintCommandLineFlags -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/Users/clear/dump 控制台输出如下: 1 2 3...

垃圾收集算法

在jvm的堆内存中有年轻代和老年代, 年轻代中由于存活对象较少,所以采用复制收集算法。 老年代中由于对象存活率高,且没有额外的内存,所以就采用标记整理或者标记清楚的算法。 简单的介绍下不同垃圾收集算法的优缺点,以及选择该收集算法的原因。 标记清除算法 它是垃圾收集算法中最基础的算法,后续算法都是针对该算法的不足进行改进。 标记清除算法分为标记和清除两个过程,所以效率就比较低下。 空间上也会...

垃圾收集器

JVM中有很多的垃圾收集器,根据应用自身的需要去进行调整选择。 简单的介绍下Serial(单线程收集器),ParNew(Serial的多线程版本), Parallel Scanverge,Serial Old,Parallel Old,CMS,G1收集器以及它们的优缺点。 Serial(单线程收集器) 在它进行垃圾收集时,必须停顿其他工作线程,直到收集结束。 ParNew 除Serial...