`
iamzhongyong
  • 浏览: 796477 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
什么是DSL? 领域特定语言,针对一个特定的领域,具有受限表达性的一种计算机程序语言。可以看做是一种抽象处理的方式。 具有四个元素,第一个是计算机程序设计语言,使用DSL来指挥计算机做事情,语言性(一种特定的 ...

qlexpress规则引擎初探

    博客分类:
  • java
 
qlexpress是啥? 这个是阿里内部的一个开源的java规则引擎。开源的链接地址如下:http://code.taobao.org/p/QLExpress/wiki/index/   主要的原理是啥? 按照之前阅读的文档以及代码,主要是定义规则、解析规则、执行规则几个步骤,编译的过程类似java class文件的编译过程,首先进行词法分解、词法分析、语法分析、规则执行等步骤。   能有啥用? 如果有些业务场景,可能领域比较专一,业务人员希望能够动态的调整规则,这个时候,一个基于自然语言的规则引擎就能起到很好的作用。例如之前用户展示图片的挑战是这个用户必须是“三星级的卖家”,这 ...
​这本书在刚刚实习的时候就看了,然后就放在书架上去了,今天自己在家拿出来翻了一下,有了不一样的体会。关于安全感、关于兴趣、关于目标、关于受害者等等。作者古典确实是这个浮躁的时代中为数不多的独立思考者。 ...
2013年坚持写文章,在自己不是很忙的时候,把工作中用到的或者自己观察到的记录了下来。下面整理13年博客中比较受欢迎的(跟进阅读数和评论的情况),把我认为还不错的梳理在这里。 1、《我读打造Facebook》 http://iamzhongyong.iteye.com/blog/1768940 这本书非常值得推荐。 2、《网易云阅读移动架构》 http://iamzhongyong.iteye.com/blog/1806357 跟进当时公开的资料,看到的云阅读的架构。 3、《我读程序员的职业素养》 http://iamzhongyong.iteye.com/blog/1835 ...
什么是groovy? 一种基于Java虚拟机的动态语言,可以和java无缝集成,正是这个特性,很多时候把二者同时使用,把groovy作为java的有效补充。对于Java程序员来说,学习成本几乎为零。同时支持DSL和其他简介的语法(例如闭包),使代码便于阅读。可以用groovy的动态特性来做规则引擎,在DB中维护脚本,业务变化的时候让应用系统动态加载。   如果引入groovy在java工程中? 这个很简单,不需要做别的事情,仅仅把groovy的二方包加入到pom文件中即可。例如:
对于锁一直处于比较模糊的状态,最近一天晚上偶然想看看,就翻了几本书,然后弄明白了一些概念,有一些仍然没明白,例如AQS,先把搞明白的记录一下吧。   什么是线程安全? 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。代码本省封装了所有必要的正确性保障手段(互斥同步等),令调用者无需关心多线程的问题,更无需自己实现任何措施来保证多线程的正确调用。   线程之间的交互机制? 不同的线程之间会产生竞争,同样也有交互,最典型的例如数据库连 ...
    ​    ​最近买了一本供应链方面的书《香港李丰集团实践》,大体看了一下,很多东西不是很懂,就搞几个简单的概念记录一下吧,算是自己的笔记了。   什么是供应链? 这个可能会见仁见智,目前没有统一的概念。作者总结了三个方面: 1、供应链由客户需求开始,贯穿从产品设计到原材料供应、生产、批发、零售等过程,中间可能会有仓储和物流,把产品送到用户的各项业务活动; 2、供应链的参与者,包括企业和企业内的部门单位,供应链是这些单位之间的互动与关联,是企业之间以及企业内部的合并; 3、供应链的业务过程和操作,可以从工作流程、实物流程、信息流程和资金流程四个方面进行分析;
很早的时候注册了github,然后搞了一些自己写的代码上去,逐渐学会了使用git,但是目前也仅仅是一个很浅的初级,觉得有必要记录一下呵呵。 其实看很多文章帮助可能也不是很大,不如自己实际操作一下: 1、在github上面创建一个仓库; 2、git clone dddddd /dir  克隆到本地; 3、git add  添加文件到working memory; 4、git commit -m ""  提交到Head 5、git push 到远端; 上面这五个步骤,基本上是我目前使用git的步骤,没有分支(一个人搞啥分支),没有冲突(一个人也就没有冲突可言),更 ...
    ​    ​一个复杂的系统,可能外部一个web请求,调用到服务端之后,会变成多个请求,可能是再次请求外部,也可能是请求外部的DB,这时候就面临一个问题,就是一个请求,如何不被重复发送,例如根据userId在数据库查询用户信息,这个操作,可能会由于新人改代码,明明线程内已经请求过一次了,还会再继续请求,这个时候就多了一次网络开销。     ​    ​这种问题如何避免呢?也可能有答案,就是通过review代码的形式,之前已经获取的用户信息中,放在一个变量中,把这个变量不断的传递下去,先从这个变量中获取数据,如果变量中没有,则从远端(例如数据库端)获取这个数据,但是这样有个问题,就是这 ...
    ​    ​很早读过的一本书 ,最开始知道这本书,还是在@左耳朵耗子的博客中看到的,看了读后感之后http://coolshell.cn/articles/9156.html 就立即下单买了,本来打算参照耗子叔叔的博客搞一篇文章呢,写着写着发现道行不够 ...
​    ​    ​在java中,最常用的埋点时间的方法就是在方法运行前搞个常量记录当前时间,然后再方法结束的时候,搞个常量记录当前时间,然后两个的时间差就是方法的消耗时间。     ​    ​这种处理问题不大,但是有时候我们想达到这样的效果,就是把树状的结构也搞出来。这样有层次,排查性能问题会非常方便。  
        最近几个月花了很大精力稳定性以及优化上面,打算继续写一下如何提升稳定性和系统调优。中间有一些是参照公司一些大牛的PPT,有一些是自己的思考和实践。可能不会涉及到具体的细节,但是优化过程中的思路基本都会涉及到。                  性能调优一般的思路是什么?         这里其实在最开始想做优化的时候,也是摸不着头脑,但是想了下,其实性能调优,首先要找到瓶颈在哪里?然后针对瓶颈做优化,再压测看结果,后面具体做的过程也就是这样来的。所以分为三步:一、需找性能瓶颈,二、针对瓶颈做优化,三、压测看优化的效果,逐步迭代,最终达到性能的要求。           ...
这个是之前处理过的一个线上问题,处理过程断断续续,经历了两周多的时间,中间各种尝试,总结如下。这篇文章分三部分: 1、问题的场景和处理过程;2、GC的一些理论东西;3、看懂GC的日志 先说一下问题吧 问题场景:线上机器在半夜会推送一个700M左右的数据,这个时候有个数据置换的过程,也就是说有700M*2的数据在heap区域中,线上系统超时比较多,导致了很严重(严重程度就不说了)的问题。 问题原因:看日志,系统接口超时的时候,系统出现了FullGC,这个时候stop-the-world了,也就停机了。分析gc的日志,发现有promotion failed,根据FullGC触发的条件,这 ...
    ​    ​在双十一等大促环节,系统需要限流,外部需要在我制定的速率限制来调用(超出的流量直接挡掉,系统不进行处理),有没有理论依据呢?这里看了两个算法 约定访问速率是流量管理中比较常用的方法之一,令牌桶算法,是目前最常用的流量限制的方法。     ​           ​​什么是令牌桶算法?     ​    ​令牌桶算法是网络流量整形(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一种算法。典型情况下,令牌桶算法用来控制发送到网络上的数据的数目,并允许突发数据的发送。
    ​    ​guava是在原先google-collection 的基础上发展过来的,是一个比较优秀的外部开源包,最近项目中使用的比较多,列举一些点。刚刚接触就被guava吸引了。。。     ​    ​这个是guava的一个官网ppt里面的介绍:
Global site tag (gtag.js) - Google Analytics