自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

leejiliang的博客

年纪大了, 继续干

  • 博客(61)
  • 收藏
  • 关注

原创 JAVA SPI机制解析(JDK11)

SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。可以在运行时动态的添加实现。在jdk中 java.sql.Driver就是使用了SPI机制。不同的数据库服务商提供了不同的数据库驱动,为了方便第三方灵活的添加不同的实现,JDK特此提供了解决方案SPI机制,具体实现过程:定义功能接口各服务商提供不同的实现策略在classpat...

2020-03-31 17:38:25 565 2

原创 分布式概念扫盲(Byzantine generals problem/CAP/TPC/TCC)

问题描述参考维基百科:拜占庭将军问题投票Situation1A:1,B:1,C:0A收到的指令1和0的比例为:2:1B收到的指令1和0的比例为:2:1C收到的指令1和0的比例为:2:1投票结果执行1指令Situation2A:0,B:1,C:0A收到的指令1和0的比例为:1:2B收到的指令1和0的比例为:1:2C收到的指令1和0的比例为:1:2投票结果执行0指令S...

2020-03-29 15:29:38 477 1

原创 MongoDB-从入门到放弃之(事务,Change Stream, Practise, Shard, monitoring,Index)

writeConcernw: 决定一个写操作落在多少个节点上才算成功0:发起写操作,不关心是否成功1~集群最大节点数: 写操作需要被复制到多个节点才算成功majority: 写操作需要被复制到大多数节点上才算成功,动态变化的节点数目时,使用改值.(常用)all: 全部节点确认成功,如果有节点故障可能会造成一直等待的情况。发起写操作的程序将阻塞到写操作到达指定的节点数为止默认行...

2020-03-25 13:55:53 549

原创 MongoDB-从入门到放弃之入门

重新定义OLTP数据库On-Line Transaction Processing联机事务处理过程(OLTP)什么是MongoDB一个以Json为数据模型的文档数据库。为什么叫文档数据库?文档来自于”JSON Document", 并非我们一般理解的PDF,word…主要用途应用数据库,类似于Oracle, Mysql海量数据处理,数据平台。主要特点建模为...

2020-03-22 16:53:07 313

原创 Mysql 必备知识(持续更新...)

唯一索引和普通索引的选择## create tablecreate table t1(`id` bigint(20) primary key,`no` bigint(10));## query1select id from t1 where no =1;查询过程区别no 为唯一索引时, 执行查询query1时,只需要加载no为1所在的数据页到内存中(如果已经在内存中,则不需要...

2020-03-17 17:53:52 118

原创 mysql基础架构

MySQL中的查询语句执行分析select * from T where id =1;基本架构示意图客户端连接器查询缓存分析器优化器执行器存储引擎存储引擎存储引擎MySQL大致可以分为Server层和存储引擎层Server层包括:连接器、查询缓存、分析器、优化器、执行器等,Server层是通用的,可以配合不同的存储引擎使用。存储引擎层负责数据的存储和提取,其支持:InnoDB(默...

2020-02-29 14:41:11 191

原创 JVM概览

GC是什么?清理jvm运行时数据区域-堆中的无用对象.清理的是哪部分内存?jdk1.7: 方法区,堆空间 1.8 : 堆空间,元空间.为什么需要清理?内存有限.怎么清理?判断对象是否需要被清理引用计数法无法解决循环引用问题.可达性分析算法从"GC Roots"的对象作为起始点,延引用链搜索.如果一个对象没有任何任何GCRoots能够访问到.那这个对象就是不可达状态...

2019-12-27 11:28:18 173

原创 Spring全家桶视屏教程

百度网盘地址内容截图:关注微信公众号:公众号内回复: 全家桶 即可获取网盘密码.

2019-12-24 17:32:05 448

原创 网络协议

浏览器DNS/HTTP传输层(TCP/UDP)网络层(操作系网关网关1(路由器)网关N(路由器)网关X目标服务器网络层(操作系统)TCP层(目标电商系统进程https://www.baidu.com16.114.138.24普通请求使用HTTP,-需要加密的请求使用HTTPS打包请求信息我打包完了,给你.打包请求(TCP/UDP)我打包好了,我在等待报平安消息,如果你不报平安,我就一直重发给你,包...

2019-11-27 11:27:17 70

原创 CompletableFuture组合式异步编程

CompletableFuture在Java8之前,1.5之后,我们的异步编程使用率较高的对象 Future,那为啥在8中又出现了这个东西?引用Java8实战中的一段描述:将两个异步计算合并为一个——这两个异步计算之间相互独立,同时第二个又依赖于第 一个的结果。等待Future集合中的所有任务都完成。  仅等待Future集合中最快结束的任务完成(有可能因为它们试图通过不同的方式计算同 ...

2019-10-14 10:09:58 205

原创 redis-sentinel关键配置解析

哨兵配置项port 5000 端口bind 192.168.31.187 本机ipdir /var/sentinal/5000 工作目录sentinel monitor mymaster 192.168.31.187 6379 2 //master地址sentinel down-after-milliseconds mymaster 30000sentinel failover-...

2019-09-23 23:01:46 277

原创 消息队列

作用异步,削峰,解耦解耦基于其发布/订阅消息模式异步将和本次请求无关的任务,丢在消息队列中,让消费这自行消费,提高接口响应速度.削峰在流量高峰期通过堆积消息缓解服务器瞬间压力,在低峰期再从消息队列中慢慢消费以实现削峰.缺点系统可用性降低 MQ挂了就GG导致系统要考虑的问题变多,进而导致复杂系统的复杂性变高,例如重复消息,消息顺序变化一致性问题落地...

2019-09-21 23:01:52 80

原创 centos redis安装

单机版准备工作:wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gztar -xzvf tcl8.6.1-src.tar.gzcd /usr/local/tcl8.6.1/unix/./configure make && make install开始安装//版本可以使用官网提供的各种...

2019-09-21 22:58:44 72

原创 centos节点间实现ssh无密直连

首先在两台机器上各自实现对本机的ssh免密登录, 生成本机公钥,默认存放在 /root/.ssh/ 目录下ssh-keygen -t rsa将公钥文件复制为authorized_keys 文件即可cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys在两台机器上分别完成上述两个步骤实现不同机器之间互相免密登录,完成即可实...

2019-09-21 22:43:18 161

原创 centos 网络配置

背景基于MacOs+VirtualBox6+Centos7网络模式: 桥接模式,静态IP在创建虚拟机时,选择网络配置为桥接网络,如图:安装centos完成.查看宿主机ip如图:配置centos网络配置文件.目录: /etc/sysconfig/network-scripts/文件: ifcfg-e******** 文件名不确定.不同版本的可能不同.修改文件内容为:D...

2019-09-18 22:25:57 88

原创 redis-CacheCloud

Redis规模化运维的问题发布构建繁琐节点太多运维成本过高监控报警比较初级CacheCloud一键开启Redis机器、应用、监控报警客户端:透明,性能上报可视化运维已存在redis直接接入https//github.com/sohutv/cachecloud...

2019-09-16 22:30:38 102

原创 redis-缓存设计和优化

缓存的收益与成本收益加速读写降低后端负载成本数据不一致代码维护成本更高:多了一层缓存逻辑运维成本:Redis cluster使用场景降低后端负载: 对高消耗的运算结果进行缓存加速请求响应 I/0大量写合并为批量写:先累计在DB持久化缓存更新策略LRU/LFU/FIFO算法剔除: maxmemory-policy超时剔除:expire主动更新:开发控制生命...

2019-09-16 22:30:21 140

原创 redis-cluster

呼唤集群并发量redis 10W/每秒 ,超过10W时,如何处理?数据量内存容量超过单机物理内存, 如何处理?网络流量单机网络流量无法满足时如何处理?简单解决方案: 增强单机性能.瓶颈明显. 替代方案: 分布式(cluster)3.0版本提供数据分布数据分区顺序分区: 数据分散度易倾斜 例如: BigTable HBase哈希分区(例如节点...

2019-09-16 22:30:09 144

原创 redis-cient-sentinel

客户端实现高可用获取所有sentinel的节点找到可用节点获取master地址验证是否为master节点如果master发生变化,sentinel发布消息,客户端订阅。JedlisSentinelPool sentinelPool=new JedisSentinelPool(masterName,sentinelSet,poolConfig,timeout);Jedis jedi...

2019-09-16 22:29:58 61

原创 redis-sentinel

主从复制高可用? :故障处理: 1. 手动故障转移 2. 写能力和存储能力受限架构主从结构,多sentinel节点, 客户端从sentinel获取redis信息故障转移多个sentinel发现并确认master有问题.选举出一个sentine作为领导选一个slave作为master通知其余slave成为新的master的slave通知客户端主从发生变化等待老的mas...

2019-09-16 22:29:43 57

原创 redis-开发运维常见问题

fork 操作同步操作与内存量息息相关:内存越大,耗时越长info:latest_fork_usec 上一次fork操作的耗时微妙数改善fork优先使用物理机或者高效支持fork操作的虚拟机化技术控制redis实例最大可用内存合理配置系统内存分配策略降低fork频率子进程外开销CPU 开销:RDB和AOF文件生成,属于CPU密集型任务优化: 不做CPU绑定,不和CP...

2019-09-16 22:29:22 363

原创 redis-复制的原理和优化

单机缺点: 机器故障无法使用, 容量瓶颈(大内存), QPS瓶颈主从复制slave 复制 master节点数据(1对1 , 1对多)为数据提供多份副本,扩展读性能, 1个slave只能有一个master, 数据流向是单向的, master到slave两种实现方式slaveof ip:端口 (在slave上执行)取消同步: slaveof no one配置sl...

2019-09-16 22:29:12 67

原创 redis-持久化

作用RDBAOFRDB/AOF选择作用将内存中的数据保存到物理硬盘上,防止数据丢失。支持恢复。持久化方式:快照(mysqlDump,rdb)、写日志(mysql binlog,hbase hlog, aof)RDBrdb文件是一个二进制文件,是存储在硬盘中的。也是一种复制媒介触发机制:save(同步)执行save命令,会导致redis执行队列发生阻塞。数据量大...

2019-09-16 22:29:03 63

原创 redis-other

慢查询生命周期发送命令排队(单线程特性)执行命令(慢查询发生的阶段, 客户端超时不一定是慢查询导致的.慢查询只是一个因素)返回执行结果两个配置slowlog-max-len default =128慢查询队列是先进先出的, 固定长度, 保存在内存内slowlog-log-slower-than default = 1000慢查询阈值(单位:微妙) , =0 记...

2019-09-16 22:28:49 158

原创 redis-client

Jedis

2019-09-16 22:28:39 186

原创 redis-api

Redis API的使用和理解通用命令keys 查看所有的key, 可以使用通配符 */[a-b], 一般不在生产环境中使用. 由于单线程特性, 该命令会造成阻塞 代替: 热备从节点(在备机上使用)/scan O(n)的时间复杂度dbsize 统计键值对数量exists key 判断是否存在, 返回1 存在, 返回0 不存在del key 删除指定的key,可以同时删...

2019-09-16 22:28:24 91

原创 redis-安装

启动简单启动 redis-server, 使用默认配置动态参数启动 redis-server --port 6379配置文件方式 redis-server --config(生产环境)修改默认配置修改端口号是否守护进程指定工作目录 dirlogfile查看配置,不展示注释,不显示空行查看cat redis-6381.conf| grep -v “#” | grep -v ...

2019-09-16 22:28:12 58

原创 redis-feature

速度快内存存储持久化持久化到硬盘,防止异常丢失数据数据结构丰富位图: BitMapsHyperLogLog: 超小内存唯一值计数GEO: 地里信息定位多语言的客户端只关注java发布订阅,lua脚本,pipline简单单线程模型主从复制高可用sentinal,分布式cluster使用场景缓存计数器消息队列排行榜...

2019-09-16 22:27:59 113

原创 RabbitMQ进阶

消息何去何从mandatory 和immediate 是在消息传递过程中不可达目的地时返回消息给生产的开关. rabbitMQ还提供了Altername Exchange(备份交换器),用以存放未被路由成功的消息存储,防止返回给生产者.mandatory当出现消息无法路由到队列时,mandatory参数值不同,处理方式不同为true:RabbitMQ 将调用Basic.Return...

2019-09-16 19:41:02 183

原创 RabbitMQ开发向导

连接RabbitMQ通过给定每个具体参数ConnectionFactory connectionFactory = new ConnectionFactory();connectionFactory.setHost(IP_ADDRESS);connectionFactory.setPort(PORT);connectionFactory.setUsername("root");...

2019-09-16 10:08:49 98

原创 RabbitMQ入门

RabbitMQ是什么?  RabbitMQ 是消息中间件.消息中间件是什么?  MQ(Message Queue Middleware), 消息队列中间件 是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,经常在分布式环境下用于进程间的通信。  消息队列中间件,也可以称为消息队列或者消息中间件。它一般有两种传递模...

2019-09-11 15:13:26 141

原创 servlet and Spring-mvc工作原理

Servlet简介Servlet是sun公司提供的一门用于开发动态web资源的技术。Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:  1、编写一个Java类,实现servlet接口。  2、把开发好的Java类部署到web服务器中。按照一种约定俗成的称呼习惯,通常我们也把实现了serv...

2019-07-18 11:43:39 183

原创 根据Excel自定义的格式导出数据

需求背景: 我的系统中有这么多字段,可能分布在用户上传的excel文档中的任意一列, 现在按照用户的摆放的title位置,填充数据进excel.模板样式:维护用户定义的title信息和系统内属性对应关系,如图:上代码:/** * 按照模板填充Excel内容 * @param excelUrl * @param exportResult * @...

2019-06-25 16:59:35 1873

原创 spring boot 中配置文件加密

为了避免在配置文件直接明文写敏感信息, 使用加密可以解决尴尬pom文件添加依赖 <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artif...

2019-06-21 11:00:15 4847 3

原创 LINUX COMMAND

cp file-name destnation-urltar -zxvf file-namelsof -i tcp:8080kill pid

2019-06-20 14:28:35 70

原创 pattern-design-decorator

Decorator动态的给对象添加一些额外的属性或行为。相比于使用继承,装饰者模式更加灵活。整个Demo结构,easy上代码装饰者和被装饰者共同的父类(接口或者抽象类均可), 后文均称为通用父类package com.example.demo.service.decorator;import java.math.BigDecimal;/** * @program...

2019-06-20 11:30:17 184

原创 windows10+java8环境变量配置

需要的可以看下,也给自己做个记录防止下次忘记,废话不多说,直接开始安装JDK(记住安装位置)打开系统环境变量设置位置开始设置3.1 新建java_home3.2 新建CLASSPATH3.3 修改PATH4. 测试4.1 javajava -version总结: 非常简单....

2019-06-15 23:18:49 13279 1

原创 用静态工厂方法代替构造器

用静态工厂方法代替构造器

2019-05-30 20:02:25 486

原创 mysql连接查询结果

concat(str,str2)如有任何一个参数为NULL ,则返回值为 NULL。select concat('my','sq','l');result : mysqlcontcat_ws(separator,str1,str2) 第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NUL...

2019-05-29 18:14:38 1949

原创 Stream 专题

连接集合中每个对象的某个属性String resourcesNum = term.getResources().stream().map(ResourceSnapshotModel::getResourceNumber).collect(Collectors.joining(","));

2019-05-29 10:57:51 177

空空如也

空空如也

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

TA关注的人

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