11 Ydoing

尚未进行身份认证

想认识志同道合的朋友请加微信号 csuxajy

等级
TA的排名 5k+

系统中台能力思考和探索

系统中台能力思考和探索中台思想中台特点数据模型统一;业务隔离;可扩展:引擎化,参数化,配置化,流程化可视化:能力地图,业务全景图;由1到4,实现越来遇难,其中3是实现关键。中台实现...

2019-09-08 19:46:57

Elasticsearch源码编译

下载源码https://github.com/elastic/elasticsearch, github下载源码,分支切换到5.5,用ieda打开,等待漫长的编译过程下载安装包直接编译的源码不能直接使用,需要依赖安装包一些插件等,下载5.5.3安装包,下载地址 https://www.elastic.co/downloads/past-releases , 解压放到/opt/search/e...

2018-09-19 17:22:44

可供参考的互联网电商订单中心设计

最近在做订单中心领域模型设计,虽然还不完善,这里分享出来,希望能给大家提供一个思路。有不懂的,请多多交流,谢谢啦!

2018-06-09 09:56:33

分布式事务一些思考和总结

最近在做交易订单的事情,随着系统越来越复杂,交易量越来越大,出现不一致的情况也频发。不禁引人思考,这里做一些总结记录。分布式事务有一些理论,最常听的是CAP,ACID等。这里就不做介绍了,大家自己去查资料看看。分布式事务也经常提到2PC,3PC,因为不太适用互联网场景,这里也不做介绍。下面我们来看看一个电商典型的场景,下单后发送消息给其他业务系统,很多同学喜欢这样做 @Trans...

2018-03-23 10:56:19

mybatis线上问题查找

线上反映查不到数据,根据业务逻辑把sql找出来执行,实际是有数据的。不知道什么原因,记录一下查找问题过程。greys查找问题 greys对查找线上问题还是挺有帮助的,地址https://github.com/oldmanpushcart/greys-anatomy进入greys首先通过jps查到Java进程ID sudo jps -l 切换到jetty账号,执行greys脚本进入 s

2017-10-30 20:56:00

RocketMQ有序消息研究

在订阅消息的时候,有时我们希望消息能按照一定业务顺序消费,比如一个订单创建,订单修改,订单完成。这时候是需要顺序消息。RocketMQ支持顺序消费,下面来研究一下实现逻辑。样例生产者public class OrderedProducer { public static void main(String[] args) throws Exception { //Instant

2017-10-28 19:19:41

一次JVM调优实战

早上查看低峰期gc情况,发现昨晚上fgc有274次,感觉有些不正常,开始查找原因[jump@order-binlog-data002 spring-boot]$ sudo jstat -gc 20028 4000 10 S0C S1C S0U S1U EC EU OC OU MC MU CCSC C

2017-07-17 19:15:32

ThreadPoolExecutor源码剖析的一些思考和总结

最近迁移一个项目,涉及到线程池的问题。特意看了一下ThreadPoolExecutor源码,记录一下。思考几个问题ThreadPoolExecutor的基本实现思路是什么? - 在线程池正在运行(running)的状态下,提交任务到线程池以后,如果线程数量小于corePoolSiez,则创建新的工作线程加入workers中,并启动该线程;如果大于等于corePoolSiez,则加入任务队列中,等待

2017-06-05 17:54:33

从dubbo看Netty使用

Netty是个高性能的Java网络传输框架,在很多中间件或者分布式框架中几乎都能看到它的身影。既然Netty这么受欢迎,那到底怎么把netty嵌入到我们的系统中了?笔者在几年前就接触了Netty,也开发了个小项目。一直问题困扰自己,Netty使用场景是什么?怎么使用Netty?我们可以从dubbo中找到些答案。dubbo是高性能轻量级的RPC框架。netty本质的功能负责网络传输,dubbo使用ne

2017-05-11 09:32:37

关于分库分表的实现

当数据大的时候,都会考虑分库分表的实现。分库分表可以在不同的层做。一般来说有以下几种:jdbc层:实现复杂,属于轻量级,对应用基本没有侵入性;缺点是不能复用数据库连接,在应用部署多的时候资源耗费大,不适于大规模部署。类似当当网的sharding-jdbc.ORM层:比如蘑菇街TSharding框架封装mybatis,实现简单。缺点是必须依赖ORM层,侵入性比较大。DBProxy层:如cobar

2017-03-10 15:14:16

Java中sleep和wait有什么区别?

sleep和wait有什么区别?大家都说是sleep不会释放锁,wait会释放锁。一直都不是很理解。最近在看AQS代码,才找到一些蛛丝马迹。AQS的await和wait实现思想类似,释放当前占有的锁,让其他线程继续获取锁。等适合机会唤醒后再重新占有锁。await方法有fullyRelease的方法 1.先将线程插入等待队列; 2.释放当前的占有的资源,即释放锁; 3.让当前线程停止,等待唤醒;

2017-03-05 16:08:41

从ReentrantLock去分析AbstractQueuedSynchronizer

在并发中,锁是一个重要的工具,能帮助程序处理好数据并发处理不一致的问题,而AbstractQueuedSynchronizer在其中扮演中重要的角色。在设计所锁的时候,应该思考怎么锁能解决什么问题,而这个问题本质是由于什么原因引起。并发问题说到底是由于资源共享竞争使用引起的。锁就是为了防止资源不合理竞争使用导致的并发问题。AQS简介AbstractQueuedSynchronizer简称AQS,是J

2017-03-04 18:06:06

Spring中@Transactional什么时候开启事务?

在使用注解事务的情况时,Spring会把每个方法的执行封装为AOP执行过程。每次执行被事务注解方法时,会判断是否有必要创建事务。如果创建事务成功,则继续调用业务逻辑方法。事务是在方法执行最开始阶段创建的,因此方法要越小越好。事务的执行入口是TransactionInterceptor的invoke方法 @Override public Object invoke(final Metho

2017-03-01 21:45:39

JVM的Perm区持续增长导致OOM问题记录

查找问题先用jstack看看线程栈是否正常,确认正常后用jmap查看(因为线上用的OpenJDK,需要安装debuginfo包)堆中快照情况。jmap一些命令可能会造成JAVA进程挂起,特别是jmap -permstat会造成STW,程序无法响应。建议使用jmap命令应该与线上环境隔离才能用。使用jmap -permstat发现大量dead状态的class对象,其中class为groovy/lang

2017-02-05 17:33:48

这些年读过有关计算机的书

快过年了,正在整理买的书,发现一大堆,还有些成就感,故总结记录一下。Java后端Java编程思想这本书是大学的教科书,买的是盗版的,现在工作了,就买了本正版的。总的来说,这本书在Java领域名气大,但我读起来有些费劲,一个是排版的问题,一个是作者的文笔的问题。作者用了很多源码例子讲述Java语法,并没有归纳总结,读起来真累。怪不得当初在大学的时候有些排斥Java,也有这本书的原因。Java核心技术该

2017-01-23 20:56:57

Spring AOP自定义实现

上一遍文章研究了Spring AOP实现源码,现在自己也想自己实现。假如要对以下接口BarService织入Before增强和After增强接口定义public interface BarService { void doSomething();}接口实现@Servicepublic class BarServiceImp implements BarService { @Ove

2017-01-02 10:44:07

Spring AOP源码研究笔记

实现思路通过BeanPostProcessor的postProcessAfterInitialization方法,对初始化后的Bean创建代理。InstantiationModelAwarePointcutAdvisorImpl是Advisor的默认封装。MethodBeforeAdviceInterceptor是Before的默认实现。关键源码解析AbstractAutoProxyCreator类

2016-12-31 16:28:44

AOP的实现的几种方式

静态AOP 在编译期,切面直接以字节 码的形式编译到目标字节 码文件中。AspectJ属于静态AOP,是在编译时进行增强,会在编译的时候将AOP逻辑织入到代码中,需要专有的编译器和织入器。优点:被织入的类性能不受影响。缺点:不够灵活动态AOPJDK动态代理 在运行期,目标类加载后,为接口动态生成代理类,将切面植入到代理类中。Java从1.3引入动态代理。实现原理是为被代理的业务接口

2016-12-04 16:57:33

初识Spring Batch

概念Spring Batch是一个优秀的离线批处理框架。可以批量处理的数据格式可以是文本文件、xml文件以及持久化的数据。当然Spring Batch还提供了丰富的接口可以扩展,处理不同格式的数据。处理规模为中小型(对于海量的数据可以考虑Hadoop)。使用场景可以考虑账单对账,数据迁移,定时批量更新数据等等。 层次架构如上图。分三层:应用层,核心层,基础设施层。应用层包括所有的batch作业和

2016-12-02 11:52:19

Spring中Bean的生成过程

Spring是个Bean大工厂,负责Bean的创建和注入。核心接口BeanFactory是Spring最核心接口,它是Bean的容器,所有Bean的创建和注入几乎都与它有关。很多后缀是“Context”的类都继承或扩展了它,比如ClassPathXmlApplicationContext。最核心的方法是getBean,当然getBean有很多种重载形式,这里不一一列出。public interfac

2016-11-02 15:31:00

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!