- 博客(73)
- 收藏
- 关注

原创 SpringCloud使用笔记
Eureka [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IpYoj6uD-1588602012736)(C:\Users\Tolman\AppData\Roaming\Typora\typora-user-images\1588598077011.png)] Register服务注册 Eureka Client在第一次心跳时间向Eureka Server注册...
2020-05-05 22:52:44
446

原创 Zookeeper快速入门&集群搭建
Zookeeper快速入门与集群环境搭建 Zookeeper基础知识、体系结构、数据模型 Zookeeper是一个类似linux、hdfs的树形文件结构,zookeeper可以用来保证数据在(Zookeeper)集群之间的数据的事务性一致性,zookeeper也是我们常说的CAP理论中的CP(强一致性); Zookeeper有一个概念叫watch(也称之为事件),是一次性触发的,当watch...
2020-04-30 19:43:24
222

原创 分布式消息队列-RabbitMQ
RabbitMQ核心API Exchange属性 name:Exchange名称 type:Exchange类型 direct topic fanout headers durability:是否持久化 auto delete:当最后一个绑定到Exchange上的Queue删除后,自动删除该Exchange internal:当前Exchange是否用于RabbitMQ内部使用,默认为f...
2020-04-30 16:38:16
271

原创 服务治理—Dubbo
Dubbo底层协议 Dubbo:以下 RMI:底层采用阻塞式(同步传输)的短连接+JDK中标准的二进制序列化 适用场景:参数数据包大小不一,服务提供者和服务消费者的个数相近 Hessian 用于集成Hessian的服务,基于HTTP短连接,采用Servlet向外暴露服务 适用场景: 参数数据包较大,服务提供者的数量远多于消费者数量 HTTP:最简单的基于HTTP表单的协议 适用场景...
2020-04-25 13:22:50
208

原创 设计模式
设计模式分类 创建型模式 工厂方法模式 抽象工厂模式 建造者模式 单例模式 原型模式 结构型模式 适配器模式 装饰者模式 代理模式 外观模式 桥接模式 组合模式 享元模式 行为型模式 策略模式 观察者模式 责任链模式 备忘录模式 模板方法模式 迭代器模式 中介者模式 命令模式 访问者模式 解释器模式 状态模式 单例模式 定义:保证一个类仅有一个实例,并提供一个全局访问点 使用场景:想保...
2020-04-09 11:58:38
250
1

原创 Java调优总结
JVM JVM内存结构 垃圾回收算法 思想:枚举根节点,做可达性分析 根节点:类加载器、Thread、虚拟机栈的本地变量表、static成员、常量引用、本地方法栈的变量 标记清除算法 算法:是分为"标记"和”清除“两个阶段,首先标记出所有需要回收的对象,在标记完成后统一回收所有 缺点:效率不高,标记和清除两个过程的效率都不高;产生碎片,碎片太多会导致提前GC 复制算法 它将可用内存按容...
2020-04-08 16:18:06
253
原创 微服务的拆分规范和原则
微服务的拆分规范和原则 微服务拆分没有一个绝对正确的方案,服务拆分的粒度完全要根据业务场景来规划,而随着业务的发展,原先的架构方案也需要做调整。既然没有标准答案,那我们就使出“乱拳打死老师傅”的招数,想怎么拆怎么拆好了?且慢且慢,这不就成了暴力拆迁了吗,现在“扫黑除恶”正当头,我们可不能这么干。这里总结了几个服务拆分的心法秘籍,可以照着这个路子去思考服务拆分的粒度。 拆迁方案 压力模型拆分 压力模型简单来说就是用户访问量,我们要识别出某些超高并发量的业务,尽可能把这部分业务独立拆分出来。这么做的原因非常简单
2022-02-19 20:14:52
913
原创 Linux调优相关指令
TIPS 本文基于CentOS 7编写,理论支持所有所有版本Linux发行版,部分命令的个别参数在不同版本中可能存在细微的差异。 入门级 # 切换目录 cd # 示例 # 切换到上一层目录 cd .. # 切换到/opt/software cd /opt/software # 显示工作目录 pwd # 显示指定工作目录下之内容 ls # 示例 # 列出当前目录中文件及目录的详情 ls -l # 列出当前目录及其子目录中文件及目录的详情 ls -lR # 创建目录 mkdir # 示例 # 创.
2021-06-30 12:28:11
489
原创 代码审查
代码审查的好处 帮助提高代码质量 上下文共享 帮助新人快速融入项目 帮助开发人员成长 帮助影响力建设 代码审查的代价 专门的时间和精力:选择合适的代码审查方式 可能引起团队成员的不适:共同技巧、正向反馈 什么时候进行审查 有代码改动就可以 代码审查频率 集中式 异步式 常见代码审查工具 GIT、SVN Gerrit Upsource 代码审查流程 范根检查法 轻量级审查流程 结对编程 同步代码审查 异步代码审查 代码审查关注点 编码风格 略 命名规范 略 功能性 测
2021-05-23 17:27:44
214
原创 Percona Toolkit使用
Percona Toolkit使用 pt-query-digest TIPS 官方文档:pt-query-digest 作用 分析日志(包括binlog、General log、slowlog)、processlist以及tcpdump中的查询 语法 pt-query-digest [OPTIONS] [FILES] [DSN] 常用OPTIONS --create-review-table 当使用--review参数把分析结果输出到表中时,如果没有表就自动创建 --cre
2021-04-13 16:41:09
264
原创 MySQL SQL性能分析
MySQL SQL性能分析 TIPS 本文基于MySQL 8.0 本文探讨如何深入SQL内部,去分析其性能,包括了三种方式: SHOW PROFILE INFORMATION_SCHEMA.PROFILING PERFORMANCE_SCHEMA SHOW PROFILE SHOW PROFILE是MySQL的一个性能分析命令,可以跟踪SQL各种资源消耗。使用格式如下: SHOW PROFILE [type [, type] ... ] [FOR QUERY n] [LIMIT
2021-04-13 08:37:04
203
原创 Springboot启动原理详细解析
我们开发任何一个Spring Boot项目,都会用到如下的启动类 1 @SpringBootApplication 2 public class Application { 3 public static void main(String[] args) { 4 SpringApplication.run(Application.class, args); 5 } 6 } 从上面代码可以看出,Annotation定义(@SpringBootApplication)和类定义(
2021-04-02 13:19:23
2968
1
原创 线程创建与执行
public class TestThread { public static void main(String[] args) throws InterruptedException, ExecutionException, TimeoutException { //extends from Thread new MyThread().start(); //implements from Runnable new Thread(n
2021-03-25 01:05:01
200
原创 Java IO
Java IO InputStream&OutputStream public class Copy { public static void main(String[] args) throws IOException { if (args.length != 2) { System.out.println("para missed"); System.exit(1); } //Sy
2021-03-23 19:38:01
98
原创 Utils
加密 1.SecureMethod.java package com.nok.dragon.util.method; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.crypto.Cipher; import java.security.*; import java.security.inte...
2021-02-28 22:15:16
215
原创 ThreadLocal的实现原理
ThreadLocal的实现原理 ThreadLocal 如何保证这些对象只被当前线程访问呢?下面让我们一起深入 ThreadLocal 的内部实现。 我们需要关注的自然是 ThreadLocal的set()方法和get()方法。先从set()方法说起: public void set (T value) { Thread t=Thread.currentThread (); ThreadLocalMap map = getMap(t); if (map != null
2021-01-19 20:04:15
270
1
原创 MySQL索引——B+Tree
★ 说到 B+Tree,需要从索引聊起,索引就如同字典,我们可以使用目录快速定位到所要查找的内容,那么索引跟目录的作用类似,在数据库表记录中,利用索引,可以快速过滤查找到数据记录。 ” 1. 索引结构分类 索引有很多分类,例如 B-tree 索引,哈希索引,全文索引等等,索引的实现是在存储引擎层,并不是在后端服务器层,所以不同的存储引擎支持的索引结构也不一定一样 1.1B-tree 索引 B-tree 索引普遍存在于存储引擎中,他使用 B-tree 数据结构来存储数据,如果对树形数据结构比较了解的话,就.
2020-12-12 00:26:07
519
原创 跨域问题及解决方法
理解跨域问题 现在越来越多的项目就算是一个管理后端也偏向于使用前后端分离的部署方式去做,为了顺应时代的潮流,一前后端分离就产生了跨域问题,其实跨域产生的原因并不是前后端分离导致的 跨域产生的条件 使用xmlHttpRequest,即我们通常说的ajax请求 浏览器做了这个事 访问的域名不同,即访问的html页面是a域名下的,但内部js发送的ajax请求的目标地址却是b域名 以上三个条件缺一不可,尤...
2020-12-11 23:20:21
426
原创 Spring IoC&AOP
Spring IoC&AOP Spring IoC简介 Spring通过一个配置文件描述Bean与Bean间的依赖关系,利用Java的反射机制实例化Bean并建立Bean之间的依赖关系。Spring的IoC容器在完成这些底层工作的基础上,还提供了Bean实例缓存管理,Bean生命周期管理、Bean实例代理、事件发布和资源装载等高级服务。 Spring Bean作用域 Spring为Bean定义了5种作用域,分别为Singleton/单例、Prototype/原型、Request/请求级别、S
2020-11-30 22:56:49
175
原创 MySQL数据库开发的36条军规
核心军规 尽量不在数据库做运算 控制单表数据量 纯INT不超过10M条,含Char不超过5M条 保持表身段苗条 平衡范式和冗余 拒绝大SQL,复杂事务,大批量任务 字段类军规 用好数值字段,尽量简化字段位数 把字符转化为数字 优先使用Enum或Set 避免使用Null字段 少用并拆封Text/Blob 不在数据库中存图片 索引类军规 谨慎合理添加索引 字符字段必须建立前缀索引? 不在索引列做运算 自增列或全局ID做InnoDB主键 尽量不用外键 SQL类军规 SQL尽可能简单 保持事务连接短小
2020-10-24 00:22:36
362
原创 Spring常用注解
类别 注解 说明 Bean声明 @Component 定义基础层的通用组件,没有明确的角色 @Service 定义业务逻辑层的服务组件 @Repository 在数据反问层定义数据资源服务 @Controller 在展示层使用,用于定义控制器 Bean注入 @Autowire 服务依赖注入,一般用于注入@Component、@Service定义的组件 @Resource 服务依赖注入,一般用于注入@Repository定义的
2020-09-04 16:20:55
167
原创 MySQL数据库诊断命令
MySQL数据库诊断命令 TIPS 本文基于MySQL 8.0,理论支持MySQL 5.0及更高版本。 本文整理了常用的MySQL诊断命令,可以帮助我们了解数据库的运行情况。 SHOW PROCESSLIST 作用: SHOW [FULL] PROCESSLIST用于查看当前正在运行的线程。如果执行此命令的用户拥有 PROCESS 权限,则可看到所有线程;否则只能看到自己的线程(即与当前登录用户关联的线程)。如果不使用FULL关键字,只在Info字段中展示前100个字符。 当遇到“too many co
2020-08-04 21:18:01
342
原创 MySQL数据库索引类型
MySQL数据库索引类型 MySQL有多种索引类型,使用不同的角度,分类也有所不同。 从数据结构角度,可分为: B+树索引 hash索引 空间数据索引(R-Tree索引) 全文索引 从功能逻辑角度,可分为: 普通索引 唯一索引 主键索引 组合索引 全文索引 从物理存储角度,可分为: 聚簇索引 非聚簇索引 数据结构角度 B-Tree索引 Hash索引 空间数据索引(R-Tree索引) 全文索引 功能逻辑角度 普通索引 普通索引是基础的索引,没有任何约束,主要用于提高查询效率。示例: CRE
2020-08-03 16:48:01
213
原创 Tomcat调优
Tomcat调优教程 TIPS 本文基于Tomcat 9.0编写,理论兼容Tomcat 8.x及更高版本。 本文来探讨Tomcat的调优。 Tomcat调优参数 主要调优参数 在做Tomcat的调优时,最重要是就是Connector(连接器)的调优了(少数情况下,也可能会配置Executor) 下面贴出一段server.xml中的配置: <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150
2020-07-22 19:44:17
637
原创 Idea快捷键(常用)
Navigation: Ctrl + F12 File structure popup Ctrl + B , Ctrl + Click Go to declaration Ctrl + Alt + B Go to implementation(s) Ctrl + Shift + I Open quick definition lookup Ctrl + Shift + B Go to type declaration Ctrl + U Go to super-method /
2020-07-20 14:04:20
248
原创 Alfabeto Español
大写字母/Mayúscula 小写字母/Minúscula 字母名称/Nombre A a a B b be C c ce CH ch che D d de E e e F f efe G g ge H h hache I i i J j jota K k ca L l ele LL ll elle M m eme N n ene Ñ ñ eñe O o o P p pe Q q cu R r ere S s...
2020-07-17 09:52:59
235
原创 JVM垃圾收集器相关参数总结
JVM内存结构 JVM垃圾收集器相关参数 本文参数基于JDK 8整理 收集器 参数及默认值 备注 Serial -XX:+UseSerialGC 虚拟机在Client模式下的默认值,开启后,使用 Serial + Serial Old 的组合 ParNew -XX:+UseParNewGC 开启后,使用ParNew + Serial Old的组合 -XX:ParallelGCThreads=n 设置垃圾收集器在并行阶段使用的垃圾收集线程数,当逻辑处理器数量小于8时,n
2020-07-17 00:48:09
962
原创 JVM性能调优工具
JDK内置工具 内置工具包括了JDK中提供的常用监控工具以及故障排查工具,主要包括了: 监控工具 jps jstat 故障排查工具 jinfo jmap jstack jcmd jhat jhsdb 可视化工具 jhsdb jconsole VisualVM JDK Mission Control 这些工具从可用性以及授权的不同,主要可以分为三类: 正式支持工具:表示这类工具会有长期的技术支持,不同的平台、不同的JDK版本之间,这些工具可能会有一定差异,但总体来说还是比较兼容的。 实验性工具:
2020-07-14 15:21:12
176
原创 常见排序算法
常见排序算法 import org.junit.Test; import java.util.Arrays; public class Sort { @Test public void testSort() { int[] arr1 = {4, 6, 3, 1, 5, 9}; int[] arr2 = {4, 6, 3, 1, 5, 9}; int[] arr3 = {4, 6, 3, 1, 5, 9}; int[] a
2020-06-04 20:58:55
254
原创 购物车存储形式
购物车存储形式-Cookie 无需登录、无需查库、保存在浏览器端 优点:性能好、访问快,没有和数据库交互 缺点: 换电脑购物城数据会丢失 数据安全问题 购物车存储形式-Session 存于用户会话中 优点:初期性能较好,访问快 缺点: session基于内存,用户量庞大影响服务器性能 只存在于当前会话,不适用集群与分布式系统 购物车存储形式-数据库 存于数据库 优点:数据持久化,可在任何地点任何时间访问 缺点:频繁读写数据库、造成数据库压力 购物车存储形式-Redis 存于Redi
2020-05-19 22:28:01
478
原创 ElasticSearch6.6.0集群环境搭建
ElasticSearch6.6.0环境搭建 ## 三个节点解压elasticsearch-6.6.0.tar.gz tar -zxvf elasticsearch-6.6.0.tar.gz -C /usr/local/ ## 修改配置文件: vim elasticsearch-6.6.0/config/elasticsearch.yml ### elasticsearch.yml 配置 cl...
2020-05-08 15:24:17
286
原创 Vue安装和引入
## 引入Vue.js > 由于NPM的仓库在国外,资源传输速度慢且可能受制,故使用淘宝镜像源的cnpm + 安装cnpm ```shell npm install -g cnpm --registry=https://registry.npm.taobao.org ``` + 使用cnpm安装Vue.js ```shell cnpm install vue
2020-05-08 14:30:27
167
原创 分布式消息队列-Kafka快速入门
Kafka快速入门 kafka环境安装 kafka下载地址:http://kafka.apache.org/downloads.html kafka安装环境介绍: 节点名称 节点作用 节点备注 hostname:192.168.1.46 zookeeper节点 kafka注册、配置中心 hostname:192.168.1.47 zookeeper节点 kafka注册...
2020-04-30 20:02:09
212
原创 构建Redis集群(三主三从)
构建Redis集群(三主三从) redis.conf 配置 # 开启集群模式 cluster-enabled yes # 每一个节点需要有一个配置文件,需要6份。每个节点处于集群的角色都需要告知其他所有节点,彼此知道,这个文件用于存储集群模式下的集群状态等信息,这个文件是由redis自己维护,我们不用管。如果你要重新创建集群,那么把这个文件删了就行 cluster-config-file node...
2020-04-30 13:42:45
260
原创 Redis缓存过期处理与内存淘汰机制
Redis 缓存过期处理与内存淘汰机制 计算机内存有限,越大越贵,Redis的高并发高性能都是基于内存的,用硬盘的话GG。 已过期的key如何处理? 设置了expire的key缓存过期了,但是服务器的内存还是会被占用,这是因为redis所基于的两种删除策略 redis有两种策略: (主动)定时删除:定时随机的检查过期的key,如果过期则清理删除。(每秒检查次数在redis.conf中的hz配...
2020-04-30 13:10:04
196
原创 SpringBoot集成Redis哨兵
SpringBoot集成Redis哨兵 配置 spring: redis: database: 1 password: password sentinel: master: redis-master nodes: 192.168.1.190:26379,192.168.1.191:26379,192.168.1.192:26379 ...
2020-04-30 00:12:51
255
原创 Redis的哨兵模式
Redis的哨兵模式 Master挂了,如何保证可用性,实现继续读写 什么是哨兵 Sentinel(哨兵)是用于监控Redis集群中Master状态的工具,是 Redis 高可用解决方案,哨兵可以监视一个或者多个redis master服务,以及这些master服务的所有从服务;当某个master服务宕机后,会把这个master下的某个从服务升级为master来替代已宕机的master继续工作...
2020-04-29 23:47:52
226
原创 Redis的持久化机制
Redis的持久化机制 RDB: Redis DataBase AOF: Append Only File Redis的持久化机制 - AOF 1. 什么是RDB RDB:每隔一段时间,把内存中的数据写入磁盘的临时文件,作为快照,恢复的时候把快照文件读进内存。如果宕机重启,那么内存里的数据肯定会没有的,那么再次启动redis后,则会恢复。 2. 备份与恢复 内存备份 --> 磁盘...
2020-04-29 22:52:24
219
原创 Hibernate数据验证
Hibernate数据验证 Bean: public class UserBo { /** * Bean validateidation 中内置的 constraint * @Null 被注释的元素必须为 null * @NotNull 被注释的元素必须不为 null * ...
2020-04-29 18:31:47
199
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人