junit单元测试所踩到的坑

背景:某天,team内某童鞋叫我帮忙一起看个问题,原本运行正常的一个case(本人在一年前编写的),突然跑不过了,而且现象还非常诡异,搞了好久,不知道啥原因,严重影响移交进度(单测必须全过才能进行后续的发版流程)。 现象:1,本地跑单元测试能够全部通过(我们是直接执行gradle clean t...

2019-04-16 22:25:21

阅读数 78

评论数 0

工作中遇到的sql优化相关问题总结

本文主要总结下工作以来,所遇到过的sql优化问题,至于一些通用sql优化常识,还有一些简单的场景加加索引index就可以这些情况本文就不描述了,本文主要挑选些工作中曾经遇到过的,个人认为(毕竟我不是专业的dba)还是有点价值的总结下,总体感觉下来,在优化sql的时候要多看sql的执行计划,便于你分...

2018-12-07 19:32:29

阅读数 180

评论数 0

关于模块化开发的思考

缘起为曾经的一次面试,先介绍下背景。还是以本人现在工作中的业务背景为例吧,二级市场的业务有三种模式:转让、回购、质押,这三种模式构成了二级市场这条业务线的全部功能,这三个功能是分别互斥的,这导致三个功能之间彼此会有些依赖,比如回购时需要看下当前资产是否发生了转让或者质押。当前我们的业务量还不是太大...

2018-11-25 21:19:07

阅读数 157

评论数 0

关于java单例的深入思考

整理下之前的学习笔记,发现在工作中虽然经常用到单例,但都没有怎么去深究其对与错,因为我们都是老实的按照正确的姿势去获取单例,正好翻到这个笔记,回顾下(其实要实现一个真正的单例还是比较复杂的)。 单例模式应该是最简单也是最常用的一种设计模式了,个人认为对于一个单例来说,基本的几个特性必须满足: 1...

2018-11-09 16:03:53

阅读数 587

评论数 0

假如让你来设计数据库中间件

最近在网上逛的时候看到一篇关于数据库中间件设计的文章,嗯,讲的还比较详细,转载之,再附上自己的一点点感想,原文出自《假如让你来设计数据库中间件》,原文如下: 13年底负责数据库中间件设计时的设计文档,拿出来和大家分享: 可以了解下数据库中间件技术 可以了解下架构师系统设计的思路 ...

2018-11-04 10:03:51

阅读数 1889

评论数 0

数据库中间件tddl与mycat使用总结

做订单中心项目的时候正好涉及到了数据库中间件,翻了翻以前的笔记,整理下曾经学习使用过的两款中间件,嗯,简要总结下。 tddl是淘宝在几年前推出的一款基于客户端分片的数据库访问中间件,mycat(社区活跃)是开源社区基于服务端分片推出的数据库中间件,具体的介绍百度上都有,这里我主要根据自己的实际使...

2018-10-26 19:32:20

阅读数 2427

评论数 0

订单中心项目分析与总结

需求背景:随着业务的发展,公司逐步上线了多种产品和业务线,每个业务线除了一些基础的服务(比如支付,资产交割等)使用公共服务外,剩余的部分都是业务线自行处理,这样就形成了各个业务线自己的订单。在业务发展的初期,这样的方式是很方便快捷的,可以使得产品快速上线,但同时也埋下了一些问题: 1,用户如果需...

2018-10-26 19:32:04

阅读数 2970

评论数 0

秒杀系统分析与总结

秒杀是一种常见的营销手段,商品以极低的价格,在特定的时间点开售,引发大量的用户抢购,制造轰动效应。但是它给网站技术带来了极大的挑战,下面我们首先看下秒杀活动的一些业务特性与行为: 1,活动时间短,并发流量极高,对网站的其他业务形成冲击 2,因为秒杀活动,用户访问量突然增加,大大超过平时网站的带...

2018-09-18 22:53:02

阅读数 2116

评论数 1

分布式系统延时任务方案

在实际项目开发中,我们遇到了如下需求: 1,机票订单下单后,如果30分钟内未支付,则自动取消 2,产品上架后,24小时都没有人买,则自动下架 3,一定时间后自动评价或者自动收货 4,其他类似需求... 类似这样的需求,我把它叫做延时任务,叫做定时任务不大合适,因为这类任务没有固定的触发时...

2018-08-20 22:46:53

阅读数 463

评论数 0

分布式系统全局唯一id的生成

在实际项目中,本人在做需求时遇到了以下场景需要生成全局唯一id: 1,为解决mq消息可能乱序的问题,我们需要一个全局且自增的id来标识消息 2,数据库分库分表也需要一个全局唯一升序的id 所以下面总结下生成全局唯一id的思路: 方法1:使用数据库提供的自增sequence 以Oracle...

2018-08-02 23:09:36

阅读数 1669

评论数 0

个人对系统拆分的理解

在本人现在的公司和本人工作过的上一家公司,本人有幸参与并实施了公司业务系统的架构拆分,现将之前的工作总结下。 1,为什么要进行系统拆分 首先我们需要想想,到底什么样的系统需要进行拆分?并不是所有的系统都需要进行拆分,拆分系统是一件耗时并且有风险的操作,所以再拆分前需要再三考虑是否真的需要拆分,...

2018-07-18 14:25:41

阅读数 5137

评论数 1

个人对架构上分层分域的理解

在本人工作的公司,

2018-07-03 22:00:53

阅读数 1060

评论数 1

netty源码阅读与分析----HashedWheelTimer

netty是一个基础通信框架,管理的连接数较多,可能多至百万级,每一个连接都有或多或少有超时任务,比如发送数据超时,心跳检测等。如果为每一个连接都启动一个Timer,不仅效率低下,而且占用资源。基于论文Hashed and hierarchical timing wheels: data stru...

2018-07-03 17:49:45

阅读数 501

评论数 0

设计一个简易的NIO框架

NIO框架的目的在于屏蔽了底层的NIO操作,使得程序员只需要关注本身的业务逻辑即可,这样可以大大的提高开发效率,所有框架推出的目的不外乎都是这个目的。下面我们来看下如何去做一个NIO框架,一个典型的网络通信过程如下:这里我们主要看下服务端的流程该如何处理:1,线程模型传统的方式为针对每一个新来的连...

2018-07-02 22:55:48

阅读数 2210

评论数 0

netty4源码阅读与分析---零拷贝

在说零拷贝之前,我们先来看下传统的读写方式是怎样的,如下图:读取数据时,请求会把读操作委托给内核,由内核与磁盘进行交互。数据会从磁盘拷贝到内核的缓存区中,这个copy动作由DMA完成,整个过程中基本上不消耗CPU,但是应用程序想拿到信息得从内核缓冲区获取,经过cpu copy的动作,将数据从内核缓...

2018-07-02 22:47:13

阅读数 208

评论数 0

netty4源码阅读与分析---netty的内存管理

我们首先来看下UnpooledHeapByteBuf,它是基于堆内存的字节缓冲区,没有基于对象池实现,每次读写时都会创建一个UnpooledHeapByteBuf对象,可能会有一定的性能影响,但是内存管理上却相对容易得多。它的类关系图如下:...

2018-06-27 22:14:02

阅读数 2070

评论数 0

netty4源码阅读与分析---netty4如何处理tcp的粘包,拆包

粘包,拆包

2018-06-27 22:12:53

阅读数 178

评论数 0

netty4源码阅读与分析---ByteBuf

在worker线程处理read事件时,会将读取到的内容写入到ByteBuf中,供后续的操作,这里我们来研究下其内部结构,

2018-06-27 22:12:06

阅读数 155

评论数 0

netty4源码阅读与分析---netty线程模型

本文主要说下我自己对netty线程模型的理解,以及这样的线程模型的好处。通俗的来讲,netty的线程模型描述的就是老板和员工的故事。老板(通常情况下是一个老板)负责接活,与客户沟通,协调(netty的accept),谈成后(通道建立),他需要从员工中选出一位员工来负责处理后续具体的事宜(worke...

2018-06-27 22:11:01

阅读数 204

评论数 0

netty4源码阅读与分析----服务端如何处理请求

接上一篇,当服务端接收到客户端的连接请求后(accept事件),服务端发现我们感兴趣的accept事件到了(这个过程就是NioEventLoop的run方法在不断的轮寻),交由processSelectedKeys方法处理,它会调用到这里:if ((readyOps & (...

2018-06-27 22:10:30

阅读数 147

评论数 0

提示
确定要删除当前文章?
取消 删除