- 浏览: 190868 次
- 性别:
- 来自: 杭州
最新评论
-
小灯笼:
Netty源码剖析视频教程网盘地址:https://pan.b ...
如何构建一个基于netty的后端服务器 -
jiangsulane911:
楼主有后续文章吗
akka接地气构建一个简单分布式系统 -
jiangsulane911:
现在也在学习akka.我用的是java版的
akka接地气构建一个简单分布式系统 -
kongdong88:
Netty简单应用与线上服务器部署课程学习地址:http:// ...
如何构建一个基于netty的后端服务器 -
zjwpw:
楼主GitHub地址呢
如何构建一个基于netty的后端服务器
文章列表
最近在思考一个问题,如何快速成长?
在职场,并非工作时间越长,你的工作能力就越高,这是没有正关联的。
在这方面,我推荐刘未鹏的<暗时间>,博客地址:http://mindhacks.cn/2009/12/20/dark-time/
他的很多观点,我都比较认同,我也在学习中,大家可以一同来思考。
何为《暗时间》\,简单地说,就是个体本身自主独立思考的时间。
今天有感而发,刚才还和同事争论业务问题,争论过程中出现了一些比较有意思的点,一种思维碰撞。
在讨论业务问题时,有时更多是一种逻辑思维的角力。
我们经常使用的逻辑思维方式,无非是逆向思维,静止运动思维,表象本质思维等。
1、逆向思维
比如将商家分为高级商家(KA商家 = 1、TP商家 = 2),一般商家 = 3,你现在要判断是一个商家是高级商家还是一般商家
if(sellerType == 1 || sellerType == 2){
//TODO
}
但
谈到函数编程语言,不得不谈最近微博大牛吵的比较火热的haskell、lisp等比较纯粹古老的函数语言了,当然java阵营中也有一些函数式编程语言,比如scala\clojure,这两者都有里了解过,这里不得不汗颜了,年前还说需要熟悉两者中一者,中间一段时间到也疯狂学习过,中间还是荒废了,哎,刚有点感觉,个人觉得学习一种新语言,除了一些基本使用的熟悉,最重要的还有思想的转变,能给自己带来另一种编程思维。
当然,除此之外,java本身利用自身的一些语法特点,也是能写一些具有函数式编程的风格代码的,比如guava中的一些不可变集合类,Optional等一些base工具类,比如还有functi ...
今天又忙里偷闲,看了下jdon框架,忍不住clone了代码,细细看了下aysnc部分的代码,主要是对disruptor的一个实践,和手中一个公司的项目部分代码很相似,看来得去看看disruptor官方提供的Test部分代码了,提供了样本吧,且不计较,大家也可以去看看。
看看这里的编码方式,看起来比较舒服。
这里引用别的同学的一段总结
RingBuffer当然是我们的核心存储结构啦,创建一个RingBuffer的时候需要提供一个Sequencer对象,Sequencer是用来协调生产者和消费者对于RingBuffer的使用的,具体包括:保证生 ...
业务需要,小组内部搭建了一个基于akka简单的分布式集群,尽量轻量级。
业务场景,简要说下,目前业务数据量比较大,且还在以每天几十万的数据量递增,现在需要根据这些历史数据,从不同的维度,且维度可能组合,统计相关业务数据,其中包括数据挖掘,数据运营,同时还有可能业务告警,同时还要求数据尽量及时,而且考虑到后续可扩展,可以增加任意其他维度,能够快速响应等,
从上面的描述中,我们可以提供几个关键字,大数据,实时统计,多维度统计,快速接入等,这些其实公司内部是有些平台和框架可以满足的,用hadoop跑job来解决,但不够实时,且接入还是有点麻烦,所以我们产生了一个想法,自己搭建一个小型集群 ...
这里不从设计模式上去讲,只是对日常编码经常使用的方法与经验的一个总结。
本次使用的更多的是spring文件配置上来做文章
guava号称神器,是google工程师门为首启动的一个开源项目,目前放在guava-libraries中,代码设计与规范方面自是不可言语,还有很多其他方面的优点,维护性好,比较稳定等。
1、guava体现了函数式不可变的特性,比如ImmutableList,ImmutableMap,ImmutableSortedSet,ImmutableSortedMap
未完,待续,赶班车去了!
慢在哪里:写Redis 写HBase 线程切换等
优化思路:无法提高Redis和HBase的写入速度,那么就减少写入量吧;减少写入量的办法:1,减少冗余写入,2,延长缓存时间。减少线程切换,尽量批量提交。
1,减少冗余数据写入:
目前的逻辑:缓存一分钟的数据然后定时刷入Redis或者HBase。问题是:各台机器会缓存相同的商品,导致同一个商品在一分钟内被写入了多次。
机器越多,冗余越大,不能横向扩展。所以需要减少接收数据的机器数量,同时将数据按照指定维度路由到相同的机器处理。
2,延长缓存时间:
如果解决了1中的问题,那么每台机器在一定时间内的写入量变成了可控。这时为了 ...
今天刚接触到Elasticsearch、在此mark一下,无意路过者,可以一睹为快。
这几个启蒙网站还是很不错的
http://www.qwolf.com/?cat=57
http://es-cn.medcl.net/guide/concepts/scaling-lucene/
https://github.com/medcl/elasticsearch-rtf
由于同事刚搞了一个基于Elasticsearch的多维度数据查询+分析的应用,注意,不仅仅是查询,所以在我厂搜索工具不缺少的情况下,这个项目还是启动了,当然目前还在开发阶段,且仅限我部。
前几个月定的目标,学习几门或者一门非java外的编程语言,这个目标还在进行中,clojure的学习一直不缀,除此之外,算是在打基础的一些开源工程的学习吧,主要包括两大块,网络编程与多线程高并发框架的学习。
对于上面两块,纯服务器源码(tomcat+jetty),通信框架+IO框架(mina+netty等),高并发框架与事件驱动框架(disruptor+hawtdispatch+reactor等),这些需要不断加强学习,同时开始学习一点大数据处理与KV的框架(hbase+redis等),下面会慢慢来,有高p在前面引路。
粘贴别人整理的,觉得有部分还是比较有价值,如果后面还能碰到一些经典问题,也会陆续整理过来。
1、velocity1.6.1误用hashmap导致死循环
http://code.alibabatech.com/blog/experience_555/sun-jdk-hashmap-get-analysis-of-the-illegal-use-of-the-hang.html
2、jboss4.2.3下应用数据错乱
http://blog.csdn.net/axman/article/details/5694212
3、xstream1.1.2使用String.intern ...
阅读一些开源代码与框架,基础知识如果不扎实,阅读理解起来,总感觉雾里看花,这篇博客是自己终将付出的代价,
1、java是传值还是传引用?
比如你看nio源码,发现一些常规的用法就是每次使用selectionKey,后面总会remove掉,如果不remove掉,selector中的selectionKeys(),注册的key将会无线膨胀,将会导致内存溢出。
public class TellMe {
public static void main(String[] args) {
Selector st = new Selector();
st.addElement ...
一般情况下,常见获取Unsafe实体的代码是这样写的:
try
{
Field theUnsafe = Unsafe.class.getDeclaredField("theUnsafe");
theUnsafe.setAccessible(true);
THE_UNSAFE = (Unsafe)theUnsafe.get(null);
}
catch (Exception e)
{
throw n ...
guava与lang3比较学习
- 博客分类:
- 软编码
guava是google大牛公司内部使用的java工具类,整个设计是毋庸置疑的,与传统的commons-lang比较,可能很多人还是选择了guava,因为都是比较接地气的工具类,小部分模块使用需要做深入探讨,对于其它还是做使用级别的了解。
guava googlecode地址详见https://code.google.com/p/guava-libraries/
java编程不得不谈并发多线程与网络编程,且两者也是相跟随的,相互配合的,才构建了一个java的辉煌,注意,这里只是一个说法,并发与网络编程的确是java中两个不可缺少的组成,此篇,还是一如既往地延续以前博客的风格, ...