`
cywhoyi
  • 浏览: 412893 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
知识背景:               那年还是菜鸟,开始暗恋Java,像其他的菜鸟一样开始慢慢接触面向对象,硕士之前接触都是c、c++,其实对于面向对象的理解停留在认知阶段,后来自嘲没有女朋友,我可以new一个出来,现在有暗 ...
MapDB是一个快速、易用的嵌入式Java数据库引擎,它提供了基于磁盘或者堆外(off-heap允许Java直接操作内存空间, 类似于C的malloc和free)存储的并发的Maps、Sets、Queues。 业务场景: 朋友公司需要根据坐标,在200m的地址库中寻找 ...
前言:       基于Vert写的组件,其中在使用过程中碰到若干瓶颈问题,如果每个组件都采用日志方式,查看资源使用情况略微低廉点,所以采用了JMX来进行管理工作。       提到JMX,就必须按照JMX的规范,写一大堆的MBean、MXBean、Agent等,想起来就挺麻烦的,这个时候想起来Spring支持JMX,发现虽然原理差不多使用MXBeanServer.register,但是就是Spring写得东西就是让你配置特别简单。 import org.apache.log4j.Logger; import org.aspectj.lang.annotation.Aspect; ...
前言 vertx相较于Tomcat不同之处 引用oschina上关于vertx的文章,感觉他说得非常明白,不在这里过多讨论,这里我简单说明下如何在vertx和spring配合完成基础任务。   服务启动: public static void main( String[] args ) { ApplicationContext context = new AnnotationConfigApplicationContext(SimpleSpringConfiguration.class); final Vertx vertx = Vertx.vert ...
前言:        本人所在公司在业内比较知名的公司,但是其电商平台真的不敢恭维,都称不上架构,跟传统的软件公司差不多springMVC+Mybatis+redis挂载在nginx+tomcat下,不能说它有问题,就是在高并发、低IO消耗,且移动端使用频繁场景情况下,觉得需要进行改造,所以采用如下的方式:       说明: 网关层:我们有部分是放在阿里云平台上,那么在运维层面其实能够需要的地方甚少,那为了安全和分流,我们在nginx上写了基于netty4的网关层,通过URL手段来分流到各个业务的机器。   应用层:基于netty的应用服务器,挂载了product、or ...
首先提倡下Hibernate的验证器,功能强大且使用方面,Hibernate Validator提供包括国际化,传统的字符空,非法的输入等,而且给了很友善的message信息。 public class BeanValidators { /** * 调用JSR303的validate方法, 验证失败时抛出ConstraintViolationException, 而不是返回constraintViolations. */ public static void validateWithException(Validator validator, Object objec ...
这几天发现单位同事都在使用JRebel作为热部署工具,它集合多个容器,能够不在重启的情况下进行部署。我们在开发过程中,经常碰到改动xml等配置文件的时候,需要进行重新启动容器,重而带来开发进度缓慢。   我是一个传统的人,感觉WTP部署已经够强悍,但是看着90后小朋友玩这么酷炫的万一,让我由衷的觉得更加无聊的事情,不就是能够热部署,大不了写一个定时任务时不时的去加载xml文件,一直检测文件的最后修改,然后重新加载吗?Tomcat的reload是启动后台线程加载这,这种做法挺好的。   但是以下这种作法依托于spring,感觉比较容易配置,值得去倡导。 public class XML ...
前言: 公司生产环境频频被报性能瓶颈问题,为了找出问题的所在,现有的很多种方式能够解决,但是为了能够观测到具体的方法,我们想通过拦截那种耗时的方法,然后插入数据库,后台支撑系统能够实时的观察...   为了上述描述的结果,我们采用spring拦截器的方式,通过stopwatch的观察者模式,通过方法进入和方法退出来计算方法调用整个耗时情况   package spring.lifecycle; import net.bull.javamelody.MonitoringSpringInterceptor; import org.aopalliance.intercept.Met ...
简单介绍下如何使用PointCut、Advisor   @Component @Aspect public class LogAspect { private static final Logger log = LoggerFactory.getLogger(LogAspect.class); @Autowired TestService testService; @Pointcut("execution(* com.aop.service.UserService.add*(..))&& args(user ...
蛋疼的业务功能、蛋疼的流程、蛋疼的需求变更..... 彻底地被折磨得不成人样,更加让我无法忍受的是,看着大家代码无数的圈复杂度,一层层地写if、else等逻辑处理语句,来进行控制业务功能的,但是被动的是,你就再怎么细心,也不可能覆盖到所有的测试用例。 这里讲了一个领域的,是定义人类-》删除-》责骂-》剔除-》拥抱,编写g4文件 grammar PersonableGrammar; prog: stat+ ; stat: expr NEWLINE? # printExpr | NEWLINE # blan ...
平常我们做应用功能的时候,经常会碰到A、B、C等多起事件取数据,进行组装后反馈结果集。   //用户信息 userService.getProfile(userId); //用户信用信息 accountService.getAccount(userId); //SNS snsService.getSNS(userId); //send email\sms platformService.sendMessage(userId,message)    综上所述,我们能够观察得到其实上述4次事件完全可以并行处理,现有的方式我们的执行计划是采纳串行的方式   明显能够感觉得到 ...
基于注解的方式校验其实很多,但是在复杂模型方式方面,貌似未查询到,所以自己写了一个,主要是复杂的json串,将其生成Object,然后对于Object校验... 注解申明不过于进行介绍,主要谈下配合反射进行递归校验过程,校验   这里以UrlParser校验,当然接口提供后可以有无数个比如money、date、身份证等, 注解类 @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface ValidationDriver { public ValidationType typ ...
Tiny最近新的模块DSL和UITemplate,都或多或少涉及到Antlr,特别在使用DSL的时候特别有感触,能否设计的像SQL那样的领域驱动型语言呢?我的对于DSL的理解: 1.是用来解决复杂的业务模型而产生的,假设以计算机为例,采用代码的方式,可能就需要一大堆的判断,用来跟踪是否有有括号、是否有左括号没右括号、是否加减乘除优先制度等很多条件,那如果是业务模型像支付流程,比起计算机更加复杂,如果一大堆if、else等代码复杂不算,仅仅是代码样子都要吐了,其二,假设采用XML这种可读性极强的方式,个人感觉问题不大,唯一不好的层次太多,以及需要一大堆节点,最后如果采用antlr4类似g4格式 ...
Tiny在上周上线TinyUiEnterprise的http://www.tinygroup.org/组件,经过反馈测试发现模板引擎的性能一直有问题,请查看jprofile  当然很多性能问题,我们正在完善中,诸如:非递归DFS、大对象生命周期、异步调用...... 但是放在我面前的却是把原先ClassLoader加载后,进行调用执行的方式变更为使用anltr的解释性语言去执行。 通过一周左右的攻克,总算把最难啃的骨头给啃掉了,这离不开beetl的贡献,这里有些运用了其中核心代码,通过bytewrite的方式进行调用 本文不在过多论述anltr到底是什么玩意,我感觉这类文章在网上搜索 ...
公司举办编程大赛,想到最近股票跌宕起伏,然后无心睡眠,所以跟我叔叔聊聊股市,叔叔操盘经常是选择A股票后,会购买B这只股票,但是A跟B之间单单从业务角度和股权分配都没有任何关系,至少从表面上是这么让人觉得。后来遵从他的劝解,我选择A\B两股,但是万万没想到的是跌得我想死,漫漫长夜,无心睡眠,起来骗点钱,看了些论文,着手把实现完成,主要使用到动态规划、排序和K-means算法结合下,进行归类那些不靠谱的股票,纪念下我那损失的万把块钱。(确切地说,损失非常严重,悟出一个真理中国股市没有任何依据可言),参考的论文是国外的课题,在附件中请查收(英文) 基于K-Means算法,探索股票趋势的数据可视化 ...
Global site tag (gtag.js) - Google Analytics