自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

stulcc的博客

路漫漫其修远兮,吾将上下而求索

  • 博客(96)
  • 资源 (5)
  • 收藏
  • 关注

原创 0. 前言

从0写一个rpc框架,可能会坚持半年,也可能是更多年规划网络传输基于NettyJava接口定义契约序列化协议基于google的protostuff,不是使用protobuf计划支持push,socket是全双工的,不支持着实浪费。实现自己的自定义Trace追踪,不希望绑定到特定的apm框架上,自己实现adapter对接cat,zipkin等的adapter使用java8的Com...

2019-12-13 22:20:17 94

原创 Java程序突然死掉的原因

Java程序突然死掉的原因一般有三种:程序OOM了,自己的Java程序申请内存创建对象的时候,申请的内存超出了堆内存的限制,此时我们叫做堆OOM了,当然还包括栈溢出,本地方法区溢出。程序占用的内存过大,被Linux的oom killer程序删除掉了,总的来讲就是,其他程序申请内存,但是发现内存不够了,Linux系统需要找到那个最耗费内存的程序(真实占用内存,非真实内存),然后把它kill掉。Java程序出现了致命错误,或者JVM自己的bug,会产生一个hs_err_pidxxx.log文件。.

2020-06-06 21:19:45 2925

转载 系统运行缓慢排查思路

添加链接描述

2020-05-20 12:56:41 535

原创 24.常见递归,DFS,回溯题目总结

123

2020-05-12 13:35:49 341

原创 this::写法,this::methodName写法,ClassName::method写法,方法引用

这种写法是Java8的方法引用,方法引用是java8的新特性之一, 可以直接引用已有Java类或对象的方法或构造器。方法引用与lambda表达式结合使用,可以进一步简化代码。传送门...

2020-04-09 23:45:08 3421

原创 23.01背包之递归回溯&动态规划

public class HuiSuBag { // 回溯算法实现 private static int maxW = Integer.MIN_VALUE; // 结果放到 maxW 中 private int[] weight = {2, 2, 4, 6, 3}; // 物品重量 private int w = 9; // 背包承受的最大重量 publ...

2020-04-09 00:50:30 174

原创 22.八皇后问题-递归回溯

public class EightQueue { List<int[][]> datas = new ArrayList<>(); static int count = 0; public static void main(String[] args) { int[][] queue = new int[8][8]; ...

2020-04-08 23:47:37 231

原创 21.解闷算法-双蛋问题(dp)

双蛋问题:public class Egg { public static void main(String[] args) { int[][] a = new int[1][2]; System.out.println(a.length);//1 new Egg().dp(100); } //t层楼,2个蛋 ...

2020-04-08 23:42:34 559

原创 20.解闷算法-单链表的翻转

public class A { public static void main(String[] args) { ListNode root = new ListNode(1); ListNode node1 = new ListNode(2); ListNode node2 = new ListNode(3); ListN...

2020-04-08 23:06:31 123

原创 五种网络模型

https://cloud.tencent.com/developer/article/1586243https://blog.csdn.net/woaixiaopangniu521/article/details/70279143https://tech.meituan.com/2016/11/04/nio.htmlhttps://www.jianshu.com/p/dde17c2d2e5...

2020-04-01 22:15:34 2342

原创 为什么Consul更加适合做服务注册中心?

为何Consul优于ZooKeeper?为何Consul优于Eureka?

2020-03-28 17:20:39 470

原创 并发编程

1.为何多线程会出现问题多线程的存在是因为CPU、内存、I/O 设备速度的不通过,当I/O在执行的时候,不能让CPU闲着,另外一个线程去使用CPU做其他事。当然现在多核CPU更是为了更好的利用多核。为了合理利用 CPU 的高性能,平衡这三者的速度差异,计算机体系机构、操作系统、编译程序都做出了贡献,主要体现为:CPU 增加了缓存,以均衡与内存的速度差异;操作系统增加了进程、线程,以分时复用...

2020-03-27 01:03:20 183

原创 我打算用一篇文章讲一下Spring

参考Spring实现和SpringAction最初我们可以在一个main方法中利用ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(“applicationContext.xml”);启动一个Spring容器里面我们一般配备了很多的bean的name和路径,Spring去扫描解析并加载生成...

2020-03-22 23:03:32 122

转载 来谈谈分布式事务

什么是事务?事务具体表现A(原子性)C(一致性)I(隔离性)D(持久性)。本地事务是解决单个数据源上的数据操作的一致性问题的话。分布式事务是为了解决跨越多个数据源上数据操作的一致性问题。业界目前方案:两阶段提交(2PC)导致占用锁很长时间saga是一种基于补偿的消息驱动的用于解决long-running process的一种解决方案。目标是为了在确保系统高可用的前提下...

2020-03-22 22:35:54 145

原创 JVM梳理

注:你在网上所看到的大部分内容(包括本文)均来自于《深入理解Java虚拟机》周志明著,注意我这里用了著字,所有内容均来自于自己,而编著一般是指来自于引用别人的,大家以后买书可以以此来辨别下作者的优秀程度。JVM内存区域图上图中的方法区(也就是永久代)在1.8之后的HotSpot虚拟机上移除了,原先我们常说String.intern()把字符串会放在运行期常量池中,现在也不放入了,而是又像普通的...

2020-03-21 22:45:28 127

转载 关于压测

常听到一句话。xx并发下,系统的TPS是多少?为什么系统的TPS要加上XX并发的条件下呢?https://blog.csdn.net/xingchao416/article/details/53188729/c=nL/TC:并发n:压测时间段内所有的请求数L:平均响应时间T:压测总时长(最大的那个返回的时间长度)比如说2s内一共100个请求,最大的操作时长3秒后才返回,平均2s返...

2020-03-15 21:37:41 410

原创 12.快速排序

public class QuickSort { public static void main(String[] args) { int[] a = new int[]{9, 8, 7, 6, 1, 11, 23, 0, 100, 101, 99, 87, -1, -2, 10}; new QuickSort().quickSort(a, 0, a.l...

2020-03-04 00:17:49 152

原创 11.堆和堆排序&TopK

堆是一种特殊的完全二叉树完全二叉树即除了最后一层其它层都是满的,且最后一层的数据全部靠左排列。特殊在,他的每个节点的值都大于等于(或者小于等于)其子树节点,因此堆又分为大顶堆和小顶堆。因为是完全二叉树,我们存储堆的时候一般使用数据来存储,第一个0号元素留空,这样的话节点是a[n],左节点就是a[2n],右节点就是a[2n+1],父节点就是a[n/2]。当然不留空也可以,推算父节点的时候总...

2020-03-02 22:56:33 135

转载 反射中Class.forName()和ClassLoader.loadClass()的区别

Java类装载过程装载:通过累的全限定名获取二进制字节流,将二进制字节流转换成方法区中的运行时数据结构,在内存中生成Java.lang.class对象;链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;  1.校验:检查导入类或接口的二进制数据的正确性;(文件格式验证,元数据验证,字节码验证,符号引用验证)  2.准备:给类的静态变量分配并初始化存储空间;  3.解析:...

2020-03-02 14:21:46 114

原创 5种I/O模型的理解

参考与互联网文章:https://cloud.tencent.com/developer/article/1586243—基础https://tech.meituan.com/2016/11/04/nio.html-----进阶https://blog.csdn.net/woaixiaopangniu521/article/details/70279143—部分内容有价值https://w...

2020-03-01 16:16:44 209

原创 理清SpringAOP,AspectJ,Cglib等几个概念之间的关系

AOP面向切面编程,Aspect Oriented Programming的缩写,Aspect为切面的意思。AOP是一个概念,并没有设定具体语言的实现,它能克服那些只有单继承特性语言的缺点(如Java)。AOP有切面(Aspect)、连接点(joinpoint)、通知(advice)、切入点(Pointcut)、目标对象(target)等几个概念。具体实现有以下几个方式:①AspectJ...

2020-02-28 11:40:00 1572

原创 MySQL的事务实现

事务需要满足四个特性,就是ACID。原子性(Atomicity,或称不可分割性)一致性(Consistency)隔离性(Isolation)持久性(Durability)开始在很久很久之前,没有数据库,我创建了多个txt文件,每个txt文件存储一些数据,我写了一个工具类,进行CRUD操作。这个简单的数据库天然支持持久性(Durability)。原子性的实现有一个操作需要修改两个...

2020-02-05 19:59:37 187

原创 6.平衡多叉树-B+树

规则(1)B+跟B树不同B+树的非叶子节点不保存关键字记录的指针,只进行数据索引,这样使得B+树每个非叶子节点所能保存的关键字大大增加;(2)B+树叶子节点保存了父节点的所有关键字记录的指针,所有数据地址必须要到叶子节点才能获取到。所以每次数据查询的次数都一样;(3)B+树叶子节点的关键字从小到大有序排列,左边结尾数据都会保存右边节点开始数据的指针。(4)非叶子节点的子节点数=关键字数(...

2020-02-04 12:44:20 1545

原创 5.平衡多叉树-B树

产生  当数据量过大的时候,数据如果用平衡二叉树存储,就会导致树的深度过深,节点比对次数过多。查找不方便。而且当数据量过大的时候,也不能把所有数据全部放在内存中,只能放在外部存储器中,每次查找节点都是一次I/O操作,需要去外部存储器查找,而去外部存储器查找需要找到存储这个数据所对应的磁盘页面,这个过程是机械化的过程,需要依靠磁臂的转动,找到对应磁道,耗时长。所以说平衡二叉树不够用。  于是出现...

2020-02-04 12:08:32 664 1

原创 4.平衡二叉树之红黑树

平衡树的概念:任何一个节点的左右子树相差不能超过1红黑树的概念:红黑树并不是严格的平衡二叉树,只是保证了相对平衡,没有绝对平衡。是为了解决普通二叉树在更新过程中导致的退化问题产生的 根节点是黑色的每个叶子节点都是黑色的空节点(NIL),叶子节点不存储数据任何相邻的节点都不能同时为红色,也就是说,红色节点是被黑色节点隔开的从任何一个节点到达其所有可达叶子节点的路径,都包含相同...

2020-02-01 13:20:30 199

原创 3.二叉查找树

二叉查找树要求,在树中的任意一个节点,其左子树中的每个节点的值,都要小于这个节点的值,而右子树节点的值都大于这个节点的值。public class TreeNode { private int data; private TreeNode leftNode; private TreeNode rightNode;}public class BinarySearc...

2019-12-28 21:28:08 130

原创 0.算法与数据结构

2019-12-28 15:38:34 79

原创 1.哈希表,Hash算法

Hash表(又叫散列表)支持我们输入一个key,可以在O(1)的时间复杂度内从Hash表中找到对应的值。运用的是数组支持按照下标随机访问的时候,时间复杂度是 O(1)的特性。我们通过散列函数把元素的key值映射为下标,然后将数据存储在数组中对应下标的位置。当我们按照键值查询元素时,我们用同样的散列函数,将键值转化数组下标,从对应的数组下标的位置取数据。一般一个散列函数满足于以下三点:...

2019-12-15 22:58:05 429

原创 SpringBoot-基本概念以及如何定义starter

SpringBoot能够改变开发Spring应用程序的方式:Spring Boot Starter:它将常用的依赖分组进行了整合,将其合并 到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle 构建中;Spring Boot的自动配置特性利用了Spring 4对条件化配 置的支持,合理地推测应用所需的bean并自动化配置它们;自动配置:命令行接口(Command-line ...

2019-12-08 23:19:20 488

原创 2.二叉树-基本概念

高度:根节点的高度最高(从0开始算起)深度:根节点的深度最浅(从0开始算起)层:根节点的层数最小(从1开始算起)二叉树中有两种比较特殊的二叉树:完全二叉树:叶子节点都在最底下两层,最后一层的叶子节点都靠左排列,并且除了最后一层,其他层的节点个数都要达到最大满二叉树:叶子节点全都在最底层,除了叶子节点之外,每个节点都有左右两 个子节点二叉树的存储最直观的是链式存储法:class N...

2019-12-08 22:39:02 1687

原创 动态规划-最短路径

动态规划作为一个非常成熟的算法思想,适合用动态规划来解决的问题需要满足一个模型三个特征。模型是:多阶段决策最优解模型特征是:1. 最优子结构最优子结构指的是,问题的最优解包含子问题的最优解。反过来说就是,我们可以通过子问题的最优解,推导出问题的最优解。如果我们把最优子结构,对应到我们前面定义的动态规划问题模型上,那我们也可以理解为,后面阶段的状态可以通过前面阶段的状态推导出来。2. 无...

2019-12-08 21:53:10 2557

原创 Linux基础

Linux分为两个体系。Ubuntu和CentOS修改当前用户密码passwd添加用户useradd 用户名 。接着使用passwd 用户名修改密码。默认会把当前的用户加入一个以当前用户名命名的新的组。cat /etc/passwd 可以看到所有用户的密码,从左到右依次为注册名,密码,用户id,用户组id,用户名,用户主目录,命令解释程序,密码一般用一个X表示。实际存放在...

2019-08-26 16:38:04 85

原创 获取方法调用链

java.lang.StackTraceElement[] classArray= new Exception().getStackTrace() ;for(int i=0;i<classArray.length;i++){String classname = classArray[i].getClassName();String methodname = classArray[i]....

2019-08-20 16:12:35 2115

原创 Spring中的Bean创建周期

@PostConstruct和@PreDestroy不是Spring的注解,是java的Servlet的注解。有servlet容器的时候才会识别这个注解,然后执行。@Bean(destroyMethod = “”,initMethod = “”)指定init-method和destory-menthod是Spring的特性。同时实现InitializingBean接口和添加@PostConst...

2019-08-20 13:57:20 345

原创 简述ThreadLocal

class Thread { //内部持有ThreadLocalMap ThreadLocal.ThreadLocalMap threadLocals;}class ThreadLocal<T>{ public T get() { //⾸先获取线程持有的ThreadLocalMap ThreadLocalMap map =...

2019-07-22 10:43:50 270

原创 多线程中的volatile

class VolatileExample { int x = 0; volatile boolean v = false; public void writer() { x = 42; v = true; } public void reader() { if (v == true) { // 这里 x 会是多少呢? } }}...

2019-07-02 20:02:42 77

原创 7.跳表Skip List

B树与B+树 对B+树,B树,红黑树的理解 https://blog.csdn.net/lm2009200/article/details/70038182 漫画算法:什么是红黑树? 史上最清晰的红黑树讲解

2018-08-12 16:21:16 217

转载 MySQL隔离级别和锁

数据库——MySQL四种事务隔离级别和锁的关系 Mysql事务隔离级别和锁机制

2018-07-24 18:33:02 776

转载 Unicode和UTF-8,字符集,编解码

精确解释UnicodeJava字符的编码解码与乱码问题 unicode字符是2个字节 这句话是错的

2018-06-05 09:23:00 1006

转载 究竟啥才是互联网架构中的高并发!

· 什么是高并发 高并发是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。 高并发相关常用的一些指标有响应时间、吞吐量、每秒查询率QPS、并发用户数等。 响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。吞吐量:单位时间内处理的请求数量。QPS:每秒...

2018-05-29 12:20:14 493

DES加密解密

DES加密解密,加解密均为String转String,无需其他工具类、使用方便。

2017-01-05

利用Messenger发消息

大家记得清单文件注册一下~

2016-10-19

AIDL简单示例

aidl的简单示例,解压后直接导入工程(androidstudio)。读一下log信息。一个简单的跨进程通信

2016-10-02

Activity过渡动画

GitHub上的关于Activity动画的例子,传上来供大家下载。

2016-09-01

事务四大隔离级别的不同

MySQL中四大隔离级别的演示实例讲解,以及他的使用方法

2015-07-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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