`
xylong
  • 浏览: 187471 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
最近在思考一个问题,如何快速成长? 在职场,并非工作时间越长,你的工作能力就越高,这是没有正关联的。 在这方面,我推荐刘未鹏的<暗时间>,博客地址: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第一篇

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是google大牛公司内部使用的java工具类,整个设计是毋庸置疑的,与传统的commons-lang比较,可能很多人还是选择了guava,因为都是比较接地气的工具类,小部分模块使用需要做深入探讨,对于其它还是做使用级别的了解。   guava  googlecode地址详见https://code.google.com/p/guava-libraries/    
java编程不得不谈并发多线程与网络编程,且两者也是相跟随的,相互配合的,才构建了一个java的辉煌,注意,这里只是一个说法,并发与网络编程的确是java中两个不可缺少的组成,此篇,还是一如既往地延续以前博客的风格, ...
Global site tag (gtag.js) - Google Analytics