- 博客(34)
- 收藏
- 关注
原创 NETTY入门
业精于勤,荒于嬉;行成于思,毁于随。方今圣贤相逢,治具毕张。拔去凶邪,登崇畯良。占小善者率以录,名一艺者无不庸。爬罗剔抉,刮垢磨光。盖有幸而获选,孰云多而不扬?诸生业患不能精,无患有司之不明;行患不能成,无患有司之不公我们都知道,为了实现高性能的通信服务器,BIO在高并发的情况下会出现性能急剧下降的问题,甚至会由于创建过多线程而导致系统OOM。
2023-04-09 15:50:22
98
原创 leetcode 1 两数之和
遍历数组将每个元素的值 和索引放入map中 当条件 map.containsKey(target - nums[i] ) 时即条件成立,返回当前索引和map中的索引。给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。
2023-03-21 20:57:23
140
1
转载 dubbo中的SPI
dubbo中的SPIhttps://blog.youkuaiyun.com/qiangcai/article/details/77750541
2020-09-10 10:14:52
174
原创 JVM知识--方法区
栈、堆、方法区交互关系什么是方法区尽管所有的方法区在逻辑上属于堆的一部分,但是一些简单的实现可能不会进行垃圾回收和压缩各个线程共享区域方法区在JVM启动时创建,并且它的实际的物理内存空间和java堆区一样都可以是不连续的方法区的大小和堆空间一样,可以选择固定大小或者可扩性方法区的大小决定了系统可以保存多少类,如果系统定义太多类导致方法区溢出 会抛出OOM方法区大小的设置与OOM1.7-XX:PermSize 永久代初始分配空间-XX:MaxPermSize 永久代最大可分配空间1
2020-05-31 21:57:14
178
原创 JVM系列--堆
核心概念1.一个JVM实例只存在一个堆内存,堆是java内存管理的核心区域2.JAVA堆区在JVM启动的时候被创建,其空间大小也就被确定了,堆内存的大小是可以调节的-Xms 最小堆大小 -Xmx最大堆大小3.堆可以处于物理上不连续的内存空间,但在逻辑上它应该被视为连续的.4.所有的线程共享java堆,在这里还可以划分出线程私有的缓存区(Thread Loca Allocation Buffer TLAB)5.几乎所有的对象和实例都应该分配在对上6.在方法结束后,堆中的对象不会马上被回收,而是
2020-05-31 17:57:14
248
原创 JVM系列知识--本地方法栈
本地方法栈一个Native method 就是一个java调用非java代码的接口,该方法的实现由非java语言实现,比如当时的大哥C
2020-05-30 17:57:38
100
原创 JVM系列知识--虚拟机栈
什么是虚拟机栈java虚拟机栈也叫java栈,每个线程在创建时都会创建一个虚拟机栈,其内部保存的是一个个栈帧,对应着一次次的java方法调用线程私有的栈中可能出现的异常JAVA虚拟机规范允许JAVA栈的大小是动态的或是固定不变的如果采用固定大小的java虚拟机栈,那每一个线程的java虚拟机栈容量可以在线程创建的时候独立选定,如果线程请求分配的栈容量超过java虚拟机栈允许的最大容量,java虚拟机会抛出一个StackOverflowError异常如果java虚拟机栈可以动态扩展,并且在尝试扩展
2020-05-30 17:36:12
160
原创 JVM系列知识(1)---各种虚拟机介绍
背景现在大厂对JVM这块知识要求越来越高和为了让自己对JAVA语言有更深层次的理解,因此在此记录自己所学JVM知识,方便复习,以防遗忘。知识来源 :《深入理解JAVA虚拟机》、官网 、网络博客、腾讯课堂上、尚硅谷视频、实际生产遇到过的问题简介各个语言排行榜.JVM是一个跨语言的平台,只要各自的编程语言提供各自的编译器,编译后的字节码文件遵循JVM规范即可。也就是说java虚拟机平台上也可以运行非java语言编写的程序基础知识1.虚拟机虚拟机(Virtual Machine ) 就是一台虚拟的
2020-05-16 23:14:50
215
原创 大话设计模式(三)--单例模式(八种)
单例模式单例模式应该是程序员最常遇到的设计模式单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。一饿汉式 (两种)顾名思义 系统饿了 上来就吃也即JVM在加载这个类时就完成了单例的创建,JVM也保证了它时线程安全的 效率也高不足:在类加载时就完成实例化,没有懒加载的效果,如果从始至终没有使用过这个实例会造成内存浪费public class Singleton { public static final Singleton instance = ne
2020-05-13 23:16:32
181
原创 大话设计模式(二)-----UML类图
UML类图uml类图简介UML 统一建模语言 是一种用于软件分析和设计的语言工具uml类图符号对应的含义如下
2020-05-10 19:58:17
229
原创 数据库锁机制和mysql mvcc机制
数据库锁1.从性能来分乐观锁和悲观锁悲观锁顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住。 悲观锁 实现方式 select * from user where id = 1 for update; 乐观锁就是认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让用户返回错误的信息,让用户决定如何去做。 乐观锁实现方式 一般会加一个versionNo 每次更新前比
2020-05-10 18:22:42
194
原创 JDBC复习概述
JDBC操作数据库是开发中常用的技术,但由于各个框架的封装,导致里面实现细节很多都已遗忘,实属不该,因此重新复习以下记录一 jdbc概述jdbc 独立于特定数据库管理系统,通用的sql数据库存取和操作的公共接口,定义了用来访问数据库的标准数据类库,使用这些类库可以以一种标准的方式方标的访问数据库资源···太官方了 其实就是sun公司和各大数据库厂商开个会 定义一组java操作数据库的规范(接口)大家各自实现 避免各个数据库厂商自定义而出现差异性。···这样我们的java程序不在直接访问
2020-05-10 16:28:25
222
原创 双向链表 doubleLinked
双向链表的增删package com.shilei.dataStructure.linked;/** * @author shilei * @date 2020/4/8-0:05 *///双向链表public class DoubleLinkedNode { private DoubleLinkedNode pre; private DoubleLinkedNode...
2020-04-08 00:19:01
230
原创 单链表链表 LinkedList
package com.shilei.dataStructure.linked;/** * @author shilei * @date 2020/4/7-23:36 */public class SingleLinkedNode { private SingleLinkedNode next; private String msg; public Singl...
2020-04-07 23:57:02
125
原创 数组实现队列
单向队列package com.shilei.dataStructure.array;/** * @author shilei * @date 2020/4/7-22:47 *///数组实现的单项队列public class ArrayQueue { private int maxSize;//最大容量 private int front;//头指针 ...
2020-04-07 23:27:22
134
原创 数组一 稀疏数组
二维数组–>稀疏数组–>磁盘–>稀疏数组–>二维数组package com.shilei.dataStructure.array;import java.io.*;/** * @author shilei * @date 2020/4/7-21:17 */public class SparseArray { public static final ...
2020-04-07 22:34:23
125
原创 redis (2) --redis核心原理
Redis的单线程与高性能1)redis单线程为什么还能这么快因为它所有的数据都在内存中,所有的运算都是内存级别的运算,而且单线程避免了多线程的切换性能损耗问题。正因为 Redis 是单线程,所以要小心使用 Redis 指令,对于那些耗时的指令(比如keys),一定要谨慎使用,一不小心就可能会导致 Redis 卡顿。2)Redis单线程如何处理客户端并发请求Redis的IO多路复用:red...
2019-12-26 17:01:47
133
原创 redis(1)---redis linux下单机搭建、数据结构、常用命令
1.redis单机搭建redis单机版搭建十分简单,因为redis是C语言写的因此它要依赖gcc环境,在linux上使用命令查看环境gcc -v如果没有gcc环境可在线安装yum install gcc至此基础环境已经做完 开始搭建1)官网下载redis安装包 redis官网2)放到linux指定目录下并解压 目录如下3)进入redis-5.0.5目录 执行 命令mak...
2019-12-26 15:42:44
197
原创 大话设计模式(一)-----七大设计原则
一、单一职责原则二、接口隔离原则三、依赖倒转原则四、里氏替换原则五、开闭原则六、迪米特法则七、合成复用原则
2019-12-18 22:54:19
111
原创 Linux I/O模型介绍
linux IO流程Linux IO流程:第一阶段 等待数据准备好(Waiting for the data to be ready)第二阶段 从内核向进程复制数据(Copying the data from the kernel to the process)有两次数据拷贝第一次 DMA从磁盘上读取数据拷贝到内核空间第二次 数据从内核空间拷贝到用户空间I/O模型划...
2019-11-17 23:51:12
115
原创 dubbo调用模块
dubbo的调用模块也即是一个完整的RPC框架应有哪些模块1.透明代理:通过动态代理技术(dubbo使用的是javassist来实现),屏蔽远程调用细节以提高编程友好性,将远程调用和普通的接口调用同样的实现方式2.负载均衡:当有多个提供者时,如何选择使用那个进行调用的负载算法3.容错机制:当服务调用失败时采取的策略4.调用方式:支持同步调用和异步调用1.透明代理通过动态代理的方式进行...
2019-11-17 18:22:32
557
原创 zookeeper 集群介绍与搭建
zookeeper集群的目的是为了保证系统的性能承受更多的客户端连接而专门提供的机制,通过集群可以实现以下功能:1.读写分离:提高承载,为更多的客户端提供连接,并保证性能。2.主从自动切换,提供服务容错性,部分节点故障不会影响整个服务集群。半数以上运行机制说明:集群至少需要三台服务器,并且强烈建议使用奇数个服务器,因为zookeeper通过判断大多数节点的存活来判断整个服务是否可用,比如3...
2019-11-17 01:03:37
452
原创 linux 命令备份
1.防火墙centos7.0(默认是使用firewall作为防火墙,如若未改为iptables防火墙,使用以下命令查看和关闭防火墙)查看防火墙状态:firewall-cmd --state关闭防火墙:systemctl stop firewalld.service...
2019-11-17 00:16:55
150
原创 zookeeper客户端使用
maven依赖 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.5.5</version>...
2019-11-16 22:44:37
227
原创 zookeeper 特性和节点说明
一 zookeeper 概要、背景及作用zookeeper 产生背景项目从单体到分布式转变之后,将会产生多个节点之间协同的问题。如:1.RPC调用时服务的注册与发现 、上线、下线2.如何保证并发请求时接口的幂等性3.每天的定时任务由哪个节点执行等等。。。这些问题可以同一归纳为多节点协调问题,如果靠节点自身进行协调这是非常不可靠的,性能也相对比较差。必须由一个独立的服务做协调工作,它必...
2019-11-16 21:53:43
430
原创 拆包粘包问题
1.问题出现原因基于TCP/IP的协议是面向二进制流的协议 TCP/IP是不能区分什么样的是一个请求内容,当同时多个接口或者远程调用数据流混在一起可能出现拆包粘包问题2.解决手段1.设置定长消息, 端每次读取既定长度的内同作为完整消息 比如zookeeper 集群的心跳检测2. 设置换行符 或者特殊字符进行3. 设置消息头,再消息头中标识报文长度http协议是第二种和第三...
2019-11-13 23:11:44
137
原创 单例模式全总结
1.饿汉式 类加载机制保证单例 无并发问题public class HungrySingleton { private static HungrySingleton singleton = new HungrySingleton(); private HungrySingleton(){} public static HungrySingleton getSi...
2019-11-10 16:40:25
69
原创 Spring 扩展类BeanFactoryPostProcessor
BeanFactoryPostProcessor 是beanFactory的后置处理器BeanPostProcessor 是bean的后置处理器基本使用@Componentpublic class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor { public void postProcessBean...
2019-11-06 23:15:19
132
原创 Spring注解版AOP使用
springAOP 是指程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式导入依赖<!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.sprin...
2019-11-05 23:28:14
155
原创 Spring自动注入
Spring自动注入@Autowired 自动注入1.默认优先使用类型匹配组件2.如果找到多个 再根据组件名字查找3.使用@Qualifier("person") 注解明确指定需要装配的组件id 4.默认IOC容器中必须要有组件 可以用@Autowired 注解的属性 @Autowired(required = false) 指定该组件不是必须的5.@Primary 首...
2019-11-03 23:16:59
171
原创 Spring 注解 属性赋值
Spring属性赋值@Value @Value("shilei")//1.基本数值 private String name; @Value("#{30-3}")//2。可以SpEL表达式 private Integer age; @Value("${person.idCardNo}")//3.读取配置文件的值 需要使用注解@PropertySource(...
2019-11-03 22:52:38
393
原创 Spring bean的声明周期
bean生命周期bean的生命周期 创建----初始化------销毁的过程容器管理bean的生命周期 可以自定义初始化和销毁方法1.@Bean@Bean(initMethod = "init",destroyMethod = "destory") //指定初始化 销毁方法 这些方法必须无返回值 可以抛异常 //单实例bean 容器关闭的时候销毁 ...
2019-11-03 18:18:07
154
原创 Spring注解式 向IOC容器中注入bean
向IOC容器中注入bean方式欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的...
2019-11-03 14:50:31
1542
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人