自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (3)
  • 收藏
  • 关注

原创 分布式缓存之redis知识点

数据类型字符串string、散列hash、列表list、集合set、有序集合sorted set、位图bitmap、基数统计HyperLogLogs、消息队列Streams基本数据类型底层的数据结构不是固定的,会根据数据情况进行调整。底层数据结构redis使用c语言实现,以下的数据结构都是底层通过c语言定义的结构。 hashtable字典结构。字典结构类似hashMap,使用哈希表,...

2019-11-20 11:30:39 203

原创 jvm类加载、内存划分、GC机制

类加载流程加载:获取类的字节流,将类信息存储到方法区,在堆中生成该类的class对象指向类信息验证:类似编译期的验证。验证类文件格式、类的版本信息(防止低版本虚拟机加载高版本类字节流)、语义分析比如重载是否合法、是否继承final定义的类等等类似编译期的验证,防止加载了跳过编译器生成的错误的字节码文件。准备:为成员变量赋初始值(比如对象引用初始化为空,基本数据类型int初始化为0)、fin...

2019-11-01 17:52:24 267

原创 java线程(四) 线程池原理

线程池作用:限制线程数,管理线程、避免频繁创建和销毁线程造成性能损耗ThreadPoolExecutor作用封装线程池的一系列逻辑,通过该类可创建线程池。构造参数corePoolSize 核心线程数,有任务时才会创建线程,一般情况核心线程不会过期,一直占用,除非调allowCoreThreadTimeOut方法设置允许过期,核心线程才会因为空闲超时而过期keepAliveTim...

2019-10-27 10:37:50 234

原创 java线程(一)基础知识点

1. 内存模型内存划分JMM规定了内存主要划分为主内存和工作内存两种。主内存和工作内存只是jvm规范划分的两个抽象概念,为了屏蔽不同处理器的内存处理差异制定的规范。跟JVM内存模型(堆、栈、方法区)是在不同的层次上的描述,如果要对应起来,主内存相当于对应的堆空间、元空间,工作内存对应部分栈空间,从硬件角度,主内存对应的是硬件的物理内存,工作内存对应的寄存器和cpu高速缓存。 jvm规范约定...

2019-09-25 17:15:20 149

原创 Mysql数据库进阶知识点

索引1. 索引失效的几种情况查询使用or查询 like查询使用了后匹配,即%name,一般想用索引只能前匹配name%。 组合索引,最左匹配,如果建立的组合索引顺序是name,age,datafrom,那么查询条件需要带上name,原理是因为索引树的建立会根据最左匹配,先根据name排序,相同的值再根据age排,再根据dataform,如果直接用age和datafrom是没办法和索引树...

2019-08-24 01:09:07 795 2

原创 java线程(三)syschronized同步原理

作用 保证原子性(同步代码中的执行不受其他线程干扰),可见性(同步代码中修改后的数据,退出同步后,对其他线程立即可见),有序性(多条线程有序执行) 用法修饰静态方法,相当于对类的class对象加锁。 修饰实例方法,相当于对当前实例对象加锁。 同步代码块,可以自由选定加锁对象。知识点jdk1.6之前单纯通过monitor实现锁,但因为需要切换内核态执行线程阻塞和线程唤醒等调用...

2020-04-03 17:19:39 511

原创 java线程(二)ThreadLocal

ThreadLocal存取元素实际上是以当前threadlocal为key存储的,值为value存储到线程对象thread中的threadlocalmap中。添加元素执行结束后要remove,否则如果与线程池配合使用,会导致元素一直存在线程中被占用,如果没有再次被使用既会变成内存泄漏,如果再次使用可能会有脏数据的问题。(为什么强调线程池,因为在线程池中线程才不会回收,线程如果被回收自然不会...

2020-04-03 16:58:52 235

原创 Dubbo(应用篇)

参考自dubbo官网 http://dubbo.apache.org/en-us/注册中心注册中心通过registry标签配置,可配置多个。注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。注册中心不做请求转发,相当于目录服务,存储地址和地址变更通知注册中心与消费端、服务端均为长连接,与服务端保持长连接可以检测服务提供端是否异常,与消费端保持...

2020-04-01 11:51:09 311

原创 消息队列之kafka

读写数据基于topic,每个topic分为多个partition,每个partition有多个副本。每个partition分为多个段文件,在/KaTeX parse error: Expected '}', got 'EOF' at end of input: {topicName}-{partitionid}/目录下存储一个个segment文件。分为log文件和索引文件,索引文件分为按照offs...

2020-03-28 15:32:23 232

原创 消息队列之RabbitMq

为什么用消息队列解耦、削峰、异步。解耦两个业务系统,比如订单系统用户下单后,积分系统添加积分,则订单系统可以通过发mq消息,积分系统监听mq消息处理。如果还有其他业务系统需要在用户下单时做一些业务处理,则监听这个消息就可以。否则通过http调用,需要在修改订单系统增加调用,订单系统则会越来越复杂,各业务系统也越来越耦合。异步有些比较耗时而又非要求实时性的,比如同步账号数据、导出大数据量表...

2020-03-28 15:28:03 725

原创 树型算法题解

树结构如下 public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }1. 获取给定二叉树最小深度思路:通过广度优先遍历能更快找到最优解。深度优先搜索也可以找到最优解,但是需要找到所有解后广度优先搜索,一层一...

2020-03-26 17:32:33 1269

原创 linux 和 操作系统知识点

常用命令ps -ef 查询所有进程,包含启动信息,启动用户、进程idpmap -x 查询进程内存占用top 查看系统运行情况,查看负载,内存占用,cpu占用,用M按内存排序,用P按照cpu占用排序。top -Hp 制定进程输出线程信息。du -h --max-depth=1 查看当前一级目录下的文件大小,不指定深度则当前目录下每个字目录都会列出来df -h df是查看磁盘总使用情况,-h...

2020-03-26 17:29:05 640

原创 http、https

http无状态(每次连接都是相互独立的、相互不影响)、无连接(每次连接处理完就断开连接)、应用层协议。为了解决无连接多次请求的效率问题、新增了长连接保持连接不关闭。为了解决http协议的无状态、http的应用上增加了cookie和session用于维护请求的状态。http常见返回码200 成功状态码204 响应成功,但是报文实体没有内容301 表示资源已经被转移,永久重定向,...

2020-03-26 17:26:40 1134

原创 tcp、udp

tcp传输控制协议,传输层协议。通过建立连接,后再传输数据,通过连接实现了流量控制、数据有序性、数据可靠性(丢失重传)等特性。但是因为需要维护连接所以效率偏低。需要维护半连接队列和全连接队列。udp用户数据报协议。不需要建立连接,直接将数据报发给接收端,存在出现丢包,数据无序,无法控制流量等问题。传输效率高。数据包小,包头字节数少。tcp和udp区别Tcpudp可靠性...

2020-03-26 17:25:52 231

原创 springmvc原理浅析

原理基于servletspringmvc的核心类DispatcherServlet,基于javaweb传统开发模式,顶层继承自HttpServlet,在web.xml中配置该Servlet匹配的路径为/,即所有请求都会经过DispatcherServlet进行处理。实现servlet的doGet、doPost等方法,最终都经过doDispatch方法处理,在该方法进行参数解析、路径匹配处理、响...

2020-03-26 17:24:50 256

原创 分布式事务

两阶段提交(2pc)第一阶段:准备工作,询问各节点是否可以提交事务,节点响应是否可以提交,让事务进入准备状态。第二阶段:若都响应可以提交,则向所有节点发送提交事务。所有节点都确认后,结束事务。如果有一个准备阶段响应失败,则都不执行提交操作,而是执行事务回滚操作。原理:通过预先占用资源(比如对要更改的数据进行加锁)的方式实现分布式事务。数据库的xa事务。优点:保证较强的一致性。缺点:性...

2020-03-26 17:24:12 110

原创 spring(二) aop和事务

aop面向切面编程,可以将业务代码和功能代码分开,比如日志打印和权限控制等等,避免重复代码和解耦。通过动态代理,运行期修改字节码信息,实现字节码增强,根据原有类生成代理类。aop定义切入点 pointcount在哪个方法,哪个类切入通知 advice切入的内容切面 aspect切入点+通知advior 另一种切面切入点+通知,advisor只持有一个Pointcut和一个adv...

2020-03-26 17:23:12 439

原创 zookeeper

zk的作用基于watcher机制异步通知的方式,注册znode,其他服务监听znode的变动,可以实现服务注册中心,集群管理,一致性协调服务等,可以降低系统的耦合。角色leader: 处理读写请求。写请求会转发给leader,然后由leader广播给follower,leader收到一半的ack则认为写成功了,然后持久化数据,应答客户端。follower: 处理读请求,且参与过半投票,参与...

2020-03-26 17:14:57 205

原创 Dubbo(原理浅析篇)

dubbo spi扩展dubbo扩展利用java的spi机制,使高层引用底层,用户可以通过spi扩展dubbo。java spi通过在META-INF目录创建services文件夹,然后以接口全限定名作为文件名,多个实现类的权限定名为文件内容,通过ServiceLoader类的load方法传入接口class,即可获取到所有实现类。原理是通过在指定目录查找该类的文件,从文件中获取权限定名并创建...

2020-03-26 17:12:52 649

原创 spring ioc原理浅析

ioc控制反转传统创建对象,需要在用到的地方new对象,如果一个类的创建方式发生改变,那么所有调用到的地方都要改动。spring基于di依赖倒置的思想,通过ioc控制反转将bean的创建、初始化、销毁生命周期都交给spring容器,高层不再直接依赖底层,而是通过第三方获取。调用类需要用到什么对象,只需要通过spring获取。好处提高了代码的可维护性,对象的管理只需要一个地方配置,比如一个被...

2020-03-26 17:11:53 245

原创 java线程(五) concurrent包

1 . 原子类原子基本数据类型。AtomicInteger、AtomicLong、AtomicBoolean 支持cas设置值,自增等操作。 将基本数据类型的value设置为volatie保证可见性 AtomicInteger通过unsafe方法的compareAndSwapInt方法进行设值,AtomicLong使用unsafe的compareAndSwapLong...

2019-10-10 09:23:58 138 1

原创 数据结构(一)树型结构

只总结一些知识点,不包含代码和画图,相关画图推荐相关文章链接。满二叉树定义: 一棵深度为k,且有2^k-1个节点的树即为满二叉树。即叶子节点都在同一层,除了叶子节点外的所有节点都有两个子节点。第n层的节点数:2^(n-1)总节点数:2^k -1树的高度: log2 (总节点数+1)完全二叉树与满二叉树定义类似,不同是最后一层的节点不一定是满的,而除了最后一层的其他...

2019-09-11 19:03:18 288

原创 java常用集合类原理

以下集合讲解没有指定jdk版本默认都是jdk8ArrayList线程不安全。 基于一个Object[]数组实现,默认数组是个空数组,可以插入空数据,可以随机访问。如果要找到是否存在某个值,需要遍历数组匹配,时间复杂度是O(n)。由于通过存放的是动态数组,arrayList重写序列化方法readObject和writeObject,只序列化有值的数组位置。 add(E e)添加元素方法:...

2019-09-09 18:49:39 496

原创 java代理

代理的好处代码可以专心业务代码编写,与非业务代码区分开且避免编写过多重复代码,简化代码。比如事务管理、日志打印、接口监控、数据加密解密等。静态代理即编译期的代理。即创建一个代理类,代理类中创建被代理类的对象,代理类对外提供方法a调用,方法a中代理类调用被代理类的方法b,并在方法b前后加一些操作,实现代理增强效果。在编译后生成的class文件就已经是代理后的内容。缺点:不灵活,每加一...

2019-08-29 22:10:58 114

原创 elasticSearch(五)常用设置

1. 设置自动refresh时间,自动从buff刷到os cache的时间,即文档新增或更新后最长多久后可以被搜索到。PUT /indexName/_settings{ "index" : { "refresh_interval" : "60s" }}2. 硬盘容量超过95%,导致es自动触发 index read-only / allow dele...

2019-08-24 01:07:05 273

原创 算法-知识点总结(持续更新中)

1. 位图法 bimap算法应用场景:快速在大量的数中查找一个数、去除重复的数优点:节省内存、查找速度快假设有1亿个数,要在1亿个数里面找到是否存在666这个数,那么可以构建一个bitmap结构。用一个数组存0、1,将这一亿个数存到这个数组,数组只存0、1,默认数组所有位置的值设置为0,将一亿个数的值作为数组的下标将对应数组的位置赋值为1,比如数字10则将array[10]=1,构建...

2019-08-24 01:03:47 430

原创 springboot restTemplate配置

spring template配置示例 @Bean public RestTemplate restTemplate() { SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); requestFactory.setConnect...

2019-07-25 16:10:00 2810 1

原创 linux nginx安装

1. 下载地址http://nginx.org/en/download.html复制指定版本下载链接 wget下载weget http://nginx.org/download/nginx-1.17.0.tar.gz2. 解压tar -zxvf nginx-1.17.0.tar.gz3. 进入nginx目录 ,创建日志目录,执行configure脚本# 进入...

2019-07-08 13:53:04 118

原创 linux 定时任务、定时删除历史文件

1.寻找创建超过一段时间的文件并删除-mtime +1 表示超过一天的文件-mmin +1表示超过1分钟的文件-name 指定文件名-exec 执行指定命令。 {} 表示一个占位符,作为find到的文件占位,\;表示一个分号表示这个-exec的结束 find /root/test -mtime +1 -name "*.*" -exec rm -rf {} \;...

2019-07-05 18:04:34 1482

原创 git配置(二)

1.实用配置,ssh登录服务器时 免输入ip和端口,直接ssh配置的host即可登录服务器编辑配置文件vim ~/.ssh/config配置例子如下Host test1 Hostname 127.22.22.22 # ssh的ip地址或者域名 User root # 操作的用户名 Port 22 #端口 Ident...

2019-06-19 10:17:10 1370

原创 java虚拟机类加载机制详解

加载类的生命周期如下,加载的开始执行顺序(注意是开始执行顺序,而不是执行完再执行下一步,是交叉进行的)必须按照以下顺序执行(解析和初始化某些情况会倒过来)。1.加载加载分为以下三步:a. 通过一个类的全限定名(比如: com.demo.test.java)获取此类的二进制字节流。(不一定直接加载一个class文件,比如通过反射动态加载,通过jsp文件生成class类,从压缩包中读取...

2018-12-24 11:13:03 122

原创 jdk堆内存监控命令

jstat命令详解可参考:https://blog.csdn.net/maosijunzi/article/details/46049117jstat -gc pid 1000 10 看gc情况 1000表示1秒展示一次,10表示最多展示10次其他参考深入理解java虚拟机图:jpsjps -l 看启动的java项目pid和启动类名jps -v 看jvm参数j...

2018-12-21 10:18:26 347

原创 redis(一)基本操作命令

基础命令keys 命令 keys * 匹配所有键 keys ? 匹配单个字符 keys [a-z]指定单个字段范围 keys \x 转义字符,匹配字符x exists key 判断键值是否存在 type key 获取键值类型 expire key seconds 设置键的有效期,单位是秒 pexpire key 1000 设置键的有效期,单位是毫秒 persist...

2018-10-24 18:03:49 381

原创 docker 无法使用vi

更新来源apt-get update安装vimapt-get install -y vim 

2018-09-30 11:20:04 5975

原创 docker 搭建gitlab

1.拉取gitlab镜像docker pull gitlab/gitlab-ce:latest2.运行容器 sudo docker run --detach --hostname myhostname -p 443:443 -p 80:80 -p 23:22 \--name gitlab --restart always -v ~/gitlab/config:/etc/gitl...

2018-09-29 11:37:53 233

原创 mysql远程连接 报错client does not support authentication

今天安装mysql远程连接报错client does not support authentication解决办法首先登陆到mysql   输入以下命令即可 alter user 'root'@'%' identified with mysql_native_password by '123'; flush privileges;...

2018-09-28 18:05:46 899

原创 Elasticsearch(二) mapping创建和解析

mapping创建PUT my_index{ "settings": { "number_of_shards ": 5, "number_of_replicas": 1 }, "mappings": { "my_doc": { "properties": { "title": { "type": &qu

2018-09-28 16:22:07 13852

原创 Elasticsearch(三)Analysis

1.standard analyzer 标准分析器  由以下使用分词器和分词过滤器组成Standard Tokenizer     Standard Token Filter Lower Case Token Filter Stop Token Filter POST _analyze{ "analyzer": "standard", "text": "The 2 QU...

2018-09-27 11:38:32 246

原创 Elasticsearch(一)基础知识点

Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎。1. cluster(集群)一个集群就是由一个或多个节点组织在一起,它们共同持有整个的数据,并一起提供索引和搜索功能,一个集群由一个唯一的名字标识,这个名字默认就是“elasticsearch”,多个节点使用这个名字加入集群2. node(节点)一个节点是集群中的一个es实例,作为集群的一部分,它...

2018-09-25 11:51:19 358

原创 设计模式-工厂模式

  个人理解,工厂模式的好处有两点  1.初始化实现类的参数,简化实现类的创建,特别是参数多的时候很实用  2.可以对相同类型的类创建进行归类,且容易维护,比如如果某个实现类的创建过程,增加了新的参数需要初始化或者某个初始化参数需要改动,那么只需要修改工厂类中的实例化方法,不需要去修改所有创建这个类的代码。1.简单工厂模式  描述:通过传递参数创建参数对应的实体类,即可根据不同情况...

2018-09-20 18:00:50 169

java jdk1.8

jdk1.8 windows下 免安装版本 jdk1.8 windows下 免安装版本

2018-05-14

redis工具下载

redis下载,官网下载很慢,跟大家共享这个。 windows版本的,下载注意

2017-10-30

阿里巴巴java规范

阿里巴巴2017年10月发布的java开发规范,用于团队开发的规范

2017-10-19

空空如也

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

TA关注的人

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