你假笨说JVM参数 – 002 StringTableSize

2017年11月5日 没有评论

没想到距离第一次整理你假笨的分享已经过去两个多月了,近期会继续整理一系列你假笨关于JVM参数的分享,下面是第二次:

序号:002
时间:2017-07-14
参数:-XX:StringTableSize
含义:Number of buckets in the interned String table
String.intern() 被调用时会往 Hashtable 插入一个 String(若该 String 不存在),这里的 Table 就是 StringTable,此参数就是这个 StringTable 的大小,若此参数设置过小,明显的问题就是过多的hash碰撞,造成在查找字[……]

Read more

程序员都应该懂点开源许可协议

2017年10月1日 没有评论

最近 Facebook 开源的 React 的开源协议专利条款一事闹得沸沸扬扬,著名的 WordPress、百度等纷纷声明弃用 React,最终 Facebook 听从大众的声音改回了BSD,这就牵涉到一个如何选择开源协议的问题,因为 React 是一个生态,所以这事影响比较大,其实之前有很多关于开源协议用错导致原作者利益受损的事,例如前两个月就有一个被雷军称赞的称为最牛的 00 的 CEO 的公司抄袭别人代码连素材都不修改的案例,所以想到之前曾看到有一个乌克兰程序员 Paul Miller 制作了一张图,一分钟明白你应该选择哪个开源协议,原图如下:

原文地址:http://pa[……]

Read more

分类: 其他 标签: ,

是的,我也开启了全站HTTPS

2017年9月3日 没有评论

现在的趋势都在全站HTTPS,据说在Google内部有一个时间表,会把所有未开启HTTPS的网站标注为不安全(目前仅仅会把带密码框的输入页标注为不安全),所以一直想玩玩,去年的时候就看到新浪timyang的博客开启了全站HTTPS,并写了一篇文章如何开启,当时就想玩玩,但感觉还是稍有麻烦,而且当时的博客服务器用的Apache,对Apache配置不熟,想着是自己的小博客就没动,前几天突然看到coolshell网也开启了全站HTTPS,发现现在配置变得很简单了,而且我的博客服务器也由Apache换成了Nginx,所以就玩了玩,确实很方便。
首先声明,无论是timyang还是左耳朵耗子,使用的都是[……]

Read more

分类: Java 标签: , ,

你假笨说JVM参数 – 001 ReservedCodeCacheSize

2017年8月26日 没有评论

因为之前看过周志明《深入理解Java虚拟机JVM高级特性和最佳实践》,而对JVM的一些东西感兴趣,感觉挺好玩的,前段时间有幸加了阿里寒泉子的微信(现在应该是前阿里了),而加入了一个你假笨建的一个JVM参数交流群,你假笨在里面做过几次分享,看到有小伙伴整理笔记,表示赞同。因为俗话说好记性不如烂笔头,何况自己记性并不怎么好,以下是第一次的分享。另外虽然这些东西平时可能用不到,但当实际出问题的时候不懂这些肯定是束手无策,所以多看看总没有坏处

序号:001
时间:2017-07-13
参数:-XX:ReservedCodeCacheSize
含义:Reserved code cache s[……]

Read more

秒杀系统架构优化思路[转载]

2017年8月8日 没有评论

看过很多写秒杀的文章,感觉还是58沈剑老师的这篇写的最好最接地气,博客第一百篇文章本想自己写一篇的,最后想想还是转载沈剑老师的这篇好了,因为看完这篇真的很受启发。

原文出处微信公众号:架构师之路,微信号:road5858,链接地址:http://mp.weixin.qq.com/s/5aMN9SqaWa57rYGgtdAF_A

以下是原文:

本文曾在“架构师之路”上发布过,近期支援Qcon-AS大会,在微信群里分享了该话题,故对原文进行重新整理与发布。

一、秒杀业务为什么难做
1)im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息);
2)[……]

Read more

分类: Java 标签: , ,

巧用CAS解决数据一致性问题[转载]

2017年7月22日 没有评论

这周不太忙的时候看了58到家沈剑老师的一系列的文章,感觉沈剑老师的文章做到了深入浅出,浅显易懂,看完收获很大,有些文章完美的解决了我一直一来的疑惑,所以转载到自己博客,希望对大家也有所帮助。

原文出处微信公众号:架构师之路,微信号:road5858,链接地址:http://mp.weixin.qq.com/s/_XlzbmBSj_i-S2PkE5tI_w

以下是原文:

缘起:在高并发的分布式环境下,对于数据的查询与修改容易引发一致性问题,本文将分享一种非常简单但有效的优化方法。

一、业务场景

业务场景为,购买商品的过程要对余额进行查询与修改,大致的业务流程如下:[……]

Read more

分类: Java 标签: , ,

程序猿的自我修养之开发规范

2017年7月9日 没有评论

有感于公司代码比较乱,完全没有规范,而我则受益于实习的时候的老大zeak的严格要求,看到这种情况表示有点难以接受,所以和老大讨论后,基于阿里的规范经过删减写了这么一个标准,今天发出来,不仅供自己时时对照,也供大家参考,最后感谢一下阿里出这份标准。

一、 编程规约

(一)命令风格

整体要求,见名知义,英文为主,类名一般是名称或者形容词,方法名为动词

具体要求:
1. 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。除非特殊情况最好不要用美元符号(大家猜猜为啥?)
2. 类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例[……]

Read more

分类: Java 标签: ,

ThreadLocal类之简单应用示例

2017年6月18日 1 条评论

在日常开发的系统中,日期处理是非常非常用的一个功能,处理的日期的时候就需要用到SimpleDateFormat对象,但是我们都知道SimpleDateFormat本身不是线程安全的(如果不知道的请看源码),所以就需要频繁创建SimpleDateFormat这个对象。但是我们知道创建这个对象本身不仅是很费时的,而且创建的这些对象存活期很短,导致内存中大量这样的对象需要被GC,所以我们自然而然的想到使用ThreadLocal来给每个线程缓存一个SimpleDateFormat实例,提高性能。下面是一个具体的实现的小例子,其实不仅针对SimpleDateFormat对象,对于数据库连接等等都可以这么[……]

Read more

ThreadLocal类之简单理解

2017年6月11日 没有评论

当年实习的时候,当时公司一个相当有经验的工程师zeak带我们,从他那第一次听说了ThreadLocal类,但由于自己基础薄弱,没有理解到底怎么回事,工作中也没有用过,就一直没有太放在心上,刚好这一段时间不太忙,仔细玩了一下,欢迎高手批评。
ThreadLocal,线程本地变量。他为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。简单理解就是,对于非线程安全的变量在线程内部共享不用每次都new,是一种空间换时间的做法。ThreadLocal类提供的几个方法:


	public T get() { }
	public void set(T value) {[......]

Read more

Java集合类ArrayList删除特定元素

2017年5月28日 1 条评论

前一段时间入职新公司,熟悉公司系统原有代码的时候,发现公司代码那个烂啊,系统能正常跑,都不能用侥幸来形容,就是创造了一个奇迹。因为里面不仅没有coding style,而且竟然有很明显的常识性错误。其中当我一眼指出最明显的早就应该出过问题的一个地方,项目组几乎所有成员,是的,几乎全部成员,都说这个还真不知道,涨知识了,那就是:Java集合类ArrayList删除特定元素。发现原来不是所有人都知道怎么做,这难道不是最基础的吗?唉,真不知道这些系统是怎么跑起来的。我们首先看两种错误的写法,第一种:


    @Test
    public void testRemove1() {[......]

Read more