使用事务的一个注意点

最近在代码中配置了一个事务,事务的意思就是当前这件事情要么全部正常做完,要么全部不做。为了避免数据库中出现脏数据,我给XXX类的ff方法配置了事务。在ff方法主要做下面这几件事情

关于log4j的additivity

一.问题描述

最近优化了一下一个应用的日志,但是优化后的结果不是自己想要的,简单说指定的log部分输出到了root中的appender中,部分输出到自己指定的log中。

Akka入门

一.概述

为了提高一个数据计算平台的吞吐了,最近抽空看了看akka,之前听同事说akka能够提高并发吞吐量,高容错,很稳定,今天抽时间先简单看了相关的文档,写了个简单的例子,主要演示如何使用akka,当然我们也可以搭建一个akka的集群。

通过开放调用来避免死锁

一.概述

在编写并发程序的时候,我们经常会在一次业务逻辑处理过程中获取多个锁,然后做一些操作,如果这多个锁的获取顺序和其他地方的获取顺序不同的话,很容易发生死锁。为了避免这种死锁,我们必须保证获取多个锁的顺序一致,或者方法调用为开放调用,即调用某个方法时不需要持有锁。

项目中的点点滴滴

一.概述

最近一直在忙项目中的事情,不过在整个开发过程中自己也有一些体会,写写这些体会,就当是自己的经验了,这里不会涉及到太深的原理,只是记录一些技巧以及一些值得注意的地方,形成一些编程的思想,理念,可以更好地运用到后续的项目之中。

使用BTrace监控方法入参

一.现象

昨天在生产环境出现一个类的方法被调用然后出现了异常,这个异常没有被catch而是直接抛给上层的调用,我们想知道抛异常时调用该方法的参数是什么样子的,然后根据这个参数分析问题聚图出现在什么地方。

JAVA线程本地存储之ThreadLocal的分析

一.概述

ThreadLocal是JDK的一个线程本地存储的类,我们可以把一些线程私有的数据写在ThreadLocal中,这样这些数据只有一个线程可见,实现了所谓的栈封闭。这样存储一些线程私有的数据,我们就不用去费心考虑如何保证临界资源的互斥访问了,同时对于一个线程,这些私有数据也只做一次初始化。

幂等性&&数据库的锁

一.幂等性

幂等性是高等代数中的概念,这里不是讨论数学上幂等性的概念,而是讨论程序中幂等性。幂等性是系统的接口对外一种承诺(而不是实现), 承诺只要调用接口成功, 外部多次调用对系统的影响是一致的. 声明为幂等的接口会认为外部调用失败是常态, 并且失败之后必然会有重试.

JVM常用命令总结

GC相关

jstat -gcutil pid time
实时查看JAVA进程PID的垃圾回收情况,PID表示JAVA进程的ID,time表示统计的时间频率,单位是ms,比如jstat -gcutil 8888 1000 表示每隔1000ms统计一次JAVA进程8888的GC回收。

裂变思想

一.概述

关于裂变这个词语,一开始想到的就是双11的时候红包的裂变,一个红包经过裂变后变成多个红包,让更多的人参与进来,这个红包裂变的想法当时就给自己留下了深刻的印象,其实这不是什么业务的创新,而是算法思想在业务上的经典使用。