山月记

苟有恒何必三更眠五更起 最无益莫过一日曝十日寒

一次mysql死锁问题定位

0. 引子 最近遇到了一个死锁问题,但定位死锁原因时终于遇到“面试造火箭”的理论知识(主要是mysql的事务锁),才帮助我定位到问题所在。下面介绍下分析过程 1.问题背景 1.1 问题出现 最近参与一个新的项目,有天收到了死锁异常邮件,找项目老人问了下,说这个死锁报警有了一段时间了,我翻了下报警记...

2019-04-01 10:01:32

阅读数 185

评论数 0

记一次内存泄露排查

1.事发背景 这是一个爬虫项目中遇到的问题,众所周知爬虫必然需要代理,公司内部有获取单个代理ip和port的接口,每次爬取都取请求一个代理是不合理的,所以我自己维护了一个ip池,项目启动时会初始化获取200个IP,如果在爬取中发现代理不好用,便废弃该代理,重新获取。 2.处理过程 有天我上去看该进...

2018-11-01 11:36:32

阅读数 269

评论数 0

结合RPC框架通信谈 netty如何解决TCP粘包问题

0.起因 因为自己造一个RPC框架的轮子时,需要解决TCP的粘包问题,特此记录,希望方便他人。这是我写的RPC框架的 GitHub地址 https://github.com/yangzhenkun/krpc。 欢迎star,fork。已经写了多篇文章对这个框架的原理进行说明。对原理有兴趣...

2018-07-27 18:31:18

阅读数 405

评论数 0

一篇文章了解RPC框架原理

1.RPC框架的概念 RPC(Remote Procedure Call)–远程过程调用,通过网络通信调用不同的服务,共同支撑一个软件系统,微服务实现的基石技术。使用RPC可以解耦系统,方便维护,同时增加系统处理请求的能力。 上面是一个简单的软件系统结构,我们拆分出来用户系统和订单系统做为...

2018-05-24 19:25:16

阅读数 2624

评论数 3

一篇文章了解mvc框架工作流程

动机argo是58同城开源出来的一个基于java的轻量级mvc框架。这个框架是其13年开源出来源代码,但接下来就没有维护了,但58内部好像还一直维护沿用wf(argo内部称呼)。 但阅读这款轻量级框架源码对于我们理解mvc框架运行原理还是有很大裨益的。其代码量不是很大,这也是我读的第一个开源框架...

2017-08-25 11:08:09

阅读数 4830

评论数 3

java线程状态解释

比较好的文章:https://blog.csdn.net/pange1991/article/details/53860651/ 可以比较清楚看到6种状态 下面对主要3中状态进行解释 1:BLOCKED /** * Thread state for a runnable thread. A t...

2019-07-23 11:48:20

阅读数 11

评论数 0

Java使用Mockito&PowerMockito进行单测

1. 开始 首先说明单测的意义:单测是为了校验自己的代码逻辑是否正确,那有同学说了,我直接调用自己写的方法不就得了。 随着服务的划分,我们的代码会依赖不同的服务,及时不调用其他服务,也会有mysql、redis等一些数据,在跑测试的时候 要准备这些环境是不方便的(主要是前者,有的测试环境不稳定),...

2019-06-30 20:35:17

阅读数 60

评论数 0

spring-mybatis使用事务

1.使用 TransactionTemplate 入口代码 @Autowired TransactionTemplate transactionTemplate; public Long insert(User user) { Tra...

2019-05-14 11:28:51

阅读数 46

评论数 0

topk算法实现

0. 问题介绍 top k就是求解一个数字队列前k大的问题,在工作后者面试中是一个非常常见的问题,这里说明两种解法。 1.基于快排的解法 1.1 算法思路 这里假设你对快排已经熟悉。我们知道快排是随机找个标识,然后用此标识进行排序。 我们进行降序排序的方式,第一次进行排序后,就能获得在序列中的大小...

2019-03-01 11:07:27

阅读数 439

评论数 0

mybatis源码分析

1.读取xml sql 启动时,扫描mapper文件,放入Configuration.mappedStatements 2.获取dao层接口 从SqlSeesion中获取dao层接口 SqlSessionFactory sqlSessionFactory = new SqlSessionFacto...

2019-02-10 21:42:08

阅读数 81

评论数 3

SkipList原理及实现

1.数据结构 1.1 简介 跳表(skiplist)是一个查询/插入/删除 复杂度o(lgn)的数据结构。在查询上跟平衡树的复杂度一致,因此是替代平衡树的方案。在redis的zset,leveldb都有应用。发现这个算法也解决了我一个问题。各种平衡树在工业界是广泛应用,帮助我们快速查找,插入数据,...

2019-01-04 11:55:22

阅读数 220

评论数 0

python常用脚本编写

1.关闭脚本 import os stream = os.popen("ps aux | grep ' process key ' ") for line in stream.readlines(): print(line) pid = li...

2018-12-11 11:26:25

阅读数 91

评论数 0

krpc中的注册中心实现

1.什么是注册中心 注册中心中保存的是各服务的节点信息,主要包括ip和端口号,当服务端的节点增减时,服务的调用者能通过注册中心感知到服务端节点的变化。 使用注册中心的优点:如果服务节点部署机器过多,调用者需要配置太多的节点信息,不利于维护;当服务端增减节点时,客户端无需改动重启。 2.如何实现 k...

2018-12-01 09:50:56

阅读数 277

评论数 0

MySQL慢优化个人记录

序 该文章记录个人工作或者学习中经历的MySQL优化,该文章不做定时更新 1.子查询 1.1背景 用mysql保存了一些不太更新的数据,切数据量不大,所以用到了一些join及子查询 但是在开发阶段也发现慢sql,但表数据量不足5k。 select name from t where...

2018-11-13 17:41:17

阅读数 108

评论数 1

CountDownLatch、ReentrantLock源码解析

1.AQS 因业务中在用多线程并行执行代码块中会用到CountDownLatch来控制多线程之间任务是否完成的通知,最近突然想去看一下CountDownLatch在await及唤醒是如何实现的,便开始了阅读源码及查阅资料,然后打开了一个新大门。发现它是基于AbstractQueuedSynchro...

2018-10-08 10:17:33

阅读数 64

评论数 0

java GC总结

1.垃圾收集算法 本节主要讲述算法思想,包括对象是否存活判定算法,垃圾收集的算法。 1.0 如何判断对象是否改被回收 在讲垃圾收集算法前,有必要先了解我们算法要收集的“垃圾”,现在使用的是可达性算法,把java堆栈中所有的对象当作 图中的 点,如果两个对象有引用,就把两个点之间连成线,如...

2018-09-17 14:56:44

阅读数 151

评论数 0

docker必用命令及构建一个可执行jar镜像

1.使用镜像 既然你看到这篇文章,相信已经对docker有了初步的了解,这是一片docker快速使用的文章。其实docker跟maven似的,一个管理的是组织好的运行环境,一个是jar包。 1.1 下载镜像 docker pull hub.c.163.com/librar...

2018-08-12 17:55:28

阅读数 1285

评论数 0

RPC客户端如何实现-KRPC源码解析

1.前言 这篇文章主要结合KRPC(我自己开源的一个RPC框)代码详细分析一下RPC客户端具体实现。在一篇文章了解RPC框架原理文中,我们主要讲述了一次调用RPC调用中各流程,这篇文章就结合KRPC的代码仔细讲解一下 开始前,我先说一下KRPC的网络传输中的内容: 1.服务实现名字。serv...

2018-06-03 11:02:46

阅读数 1063

评论数 0

反序列化 动态加载jar的里的类报ClassNotFoundException解决办法

1.背景 自己在写一个RPC框架时,碰到第一个麻烦就是做动态加载加载jar包后,在进行反序列化(不要吐槽为啥用java原生的序列化方案,一步一步来,框架写完能跑后在优化)时报CNF错误,当时感觉应该是原生的序列化方案中使用的ClassLoader是应用加载器AppCloassLoader,而我使...

2018-04-29 11:54:41

阅读数 1005

评论数 0

HashMap

注意事项 数组+链表/红黑树来存储数据 链表长度为8(默认)时,转化为红黑树,加快查询速度。 数组下标是 (n-1)&hash,n表示数组长度,hash表示key的hash值 构造参数 无参:数组长度和扩容因子采用默认(16,0.75) 单参:指定数组大小(向上...

2018-03-12 16:37:17

阅读数 122

评论数 0

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