自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(126)
  • 资源 (21)
  • 收藏
  • 关注

原创 zookeeper深入浅出

所有的更新操作都有对应一个zxid(zk transaction id),对于写请求每次都会返回一个一个递增的zxid,对于读请求会返回当前最新的zxid。zk的核心是原子广播,这个机制保证各个server之间的同步,实现这个机制的叫zab协议。有序性是zk一个重要的概念,zxid是一个64位的编号,高32位是epoch(时期;新时代),低32位是自增的编号。zk是一个开源的、分布式的程序协调服务,是Google的chubby的一个开源实现,因此,随着zk集群的实例增多,zk的读性能在上升,写性能在下降。

2023-03-20 12:47:14 303

原创 快速过一遍ThreadLocal源码

get方法用于获取ThreadLocal对象代表的实际的值,如下图所示,先获取当前线程,然后获取线程的ThreadLocalMap属性,如果ThreadLocalMap不为空则以当前ThreadLocal的this为key获取Map里面的值,即返回ThreadLocal代表的值,如果ThreadLocalMap为空则调用setInitialValue方法初始化ThreadLocal的值。ThreadLocal是java的用来做线程隔离的一个类,原意就是一个线程私有变量,用来保证线程的数据安全。

2023-03-18 14:23:12 440

原创 ES增量同步方案

基于对我们系统现状的分析,最终确定的方案选择是基于Oracle的SCN机制 + 触发器来实现增量同步数据到ES,不依赖开源框架,基于Oracle的SCN机制实现insert/update数据的增量同步,基于delete触发器实现delete数据的增量同步。通过数据库的触发器监控数据的增加、修改、删除,然后把新增、修改、删除的数据备份一条数据到变更记录表里,通过Java定时器定时同步方式的把变更的数据同步到ES中,具体同步流程参数下图。缺点:1、通知特性是Oracle的实验特性,并不稳定,有些版本并不支持;

2023-03-10 22:25:24 2534

原创 【ElasticSearch笔记】

分析器都有三部分组成:字符过滤器、分词器、分词过滤器,其中字符过滤器和分词过滤器可以有多个,分词器只有一个建立索引和查询需要用相同的分析器[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7UcQL7iB-1661069228237)(img/分析器.png)]_ttl: 剩余存活时间_timestamp: 创建时间_all:表示所有字段可以多次定义映射,并且新的映射会和老的映射自动合并;但是无法改变已有的字段类型和索引方式。

2022-08-21 16:08:36 758

原创 Maven Archetype脚手架制作

​Maven 脚手架开发maven的功能都是基于插件来实现的,脚手架也是maven的一个插件:Maven Archetype Plugin,使用者可以选择是交互式还是批处理的方式调用脚手架来生成java工程目录及文件结构源文件模板源文件模板路径:resources/archetype-resources,下面的文件可以作为模板生成目标文件,其中模板文件里面可以表达式变量如:${package}脚手架配置文件脚手架配置文件文件路径:resources/META-INF.maven/archety

2022-01-22 21:30:30 435

原创 cat全链路监控_监控系统比较 Skywalking Pinpoint Cat zipkin

基本信息 1.CAT是一个更综合性的平台,提供的监控功能最全面,国内几个大厂生产也都在使用。但研发进度及版本更新相对较慢。 2.Zipkin由Twitter开源,调用链分析工具,基于spring-cloud-sleuth得到广泛使用,非常轻量,使用部署简单。 3.Skywalking专注于链路和性能监控,国产开源,埋点无侵入,UI功能较强。能够加入Apache孵化器,设计思想及代码得到一...

2021-07-27 23:12:30 912

转载 架构设计读书笔记-性能篇(一)

概述计算机的性能,从硬件来说,一个和IO相关(磁盘、内存),一个和计算能力相关(CPU、GPU)。说到软件的性能,也可以理解为这两个方面,即存储和计算。一、存储高性能1、关系数据库1)读写分离**定义:**将数据库的读写操作分散到不同的节点上。基本实现:(1) 一般采用主从集群的方式,一主多从,主可以进行读写操作,从只负责读(2) 主通过复制的方式同步写的数据到从,每个主从节点需要保存完整的数据常见问题:(1)主从复制延迟。主节点写完成后,如果有大量数据需要同步,就会出现延迟现象,

2021-07-19 22:25:29 166

原创 DDD领域驱动设计(Domain Driven Design)

DDD领域模型设计的常见误区可以将DDD看成一种开发思想体系,它促成了一种新的以领域为中心的思维方式。它是一种学习过程,而非终极目标。DDD并非一种严格的方法论,而是必须和一些迭代式方法论结合使用才能构建并演化出一个有用的模型。DDD并不是一种面向对象的设计,也不是一种面向代码为中心的思想体系或者模式语言。DDD与其说是设计模式,不如说是通过协作来解决问题的方法。领域模型专注于领域逻辑,要与技术复杂性分开有效提炼知识的模式草图CRC图影响地图领域划分核心领域:是需要花大精力来投入的,需要

2021-05-20 21:45:58 305

原创 面向对象分析和设计方法论

面向对象面向过程语言缺乏扩展性,面向对象解决的是软件开发的扩展性,而扩展性也只是软件质量的一环而已对象模型基础OOA、OOD、OOPOOA面向对象分析的结果可以作为开始面向对象设计的模型,OOD面向对象设计的结果可以作为蓝图,利用OOP面向对象编程最终实现一个系统面向对象技术流程需求模型通过和客户沟通,结合行业经验和知识,明确客户的需求领域模型基于需求模型,提炼出领域相关的概念,为后面的面向对象设计打下基础设计模型以领域模型为基础,综合面向对象的各种设计技巧,完成类的设计实现模型

2021-05-20 21:42:35 153

原创 深入浅出TDD测试驱动

测试驱动红灯-绿灯-重构测试驱动就是先写测试,这是测试是红灯,也就是不能通过;然后再写实现,这时测试变为绿灯,表示能通过了;最后重构优化代码,再次测试看是否有红灯黑盒-白盒测试黑盒测试就是不知道实现细节的测试,一般指功能测试白盒测试就是知道实现细节的测试,一般指单元测试测试就是可执行的文档,而TDD是创建和维护这种文档的最常用方式单侧和集成测试单侧要尽量覆盖所有情况,而集成测试只需验证各个部分是否打通,所以集成测试只需少许用例TDD和非TDD的区别未使用TDD的情况下,单元测试的主要目标

2021-03-27 12:37:57 507

原创 Java并发编程基础

添加链接描述

2021-02-18 19:35:59 97

原创 Java类加载器详解

Java类加载器详解

2021-02-01 23:57:31 109

原创 MyBatis技术架构分析

MyBatis技术架构分析

2021-01-27 22:46:02 150

原创 JVM & gc

JVM & GC

2021-01-21 23:33:29 104

原创 RabbitMQ 深入浅出

基础概念队列模式每条消息只会被消费一次,rabbit的数据物理存储都在队列里面发布订阅每条消息会发送给所有的订阅者,但是同一个组的订阅者只有一个会收到消息消息分区保证特征ID的数据只会指定的消费者消费路由键发送消息时指定交换器到队列的路由关系绑定建配置交换器到队列的路由关系,一个交换器和一个队列之间可以配置多个绑定建交换器对应Kafka中的Topic,数据是发送到exchange,然后指定路由键交换器类型fanout:把消息发送到所有和交换器绑定的队列direct:路由键

2020-12-19 13:56:20 408 1

原创 ThreadLocal 原理源码解析,以及内存泄漏案例分析

ThreadLocal在面试经常会被问到,这里来做一个透彻的解析介绍ThreadLocal我们叫他线程变量,为什么叫线程变量,主要是因为他生命周期是一个线程内。由于一个线程可以存在多个ThreadLocal线程变量,所以Thread中有一个ThreadLocalMap的属性专门用于存储多个线程变量,map的key正是用ThreadLocal,map的value才是存的真正ThreadLocal.get()的值源码分析ThreadLocal.set() public void set(T

2020-08-07 01:27:45 195 1

原创 快速过一遍Object类源码

通过阅读Object类的源码,我们发现Object的方法几乎所有方法都是直接或者间接是native方法,即非java代码实现的方法,只有finalize方法是空实现方法,通过阅读finalize方法的注释,可以了解到此方法主要是在gc垃圾回收此对象会回调这个方法...

2020-07-20 22:23:36 141 1

原创 快速过一遍Vector源码

类图Vector和ArrayList源码几乎是一模一样的不同点Vector每个public都加了synchronized关键字,所以Vector是线程安全,而ArrayList非线程安全Vector的增长因子可以设置,而ArrayList的增长因子固定50%其他请看 ArrayList源码分析...

2020-07-19 18:07:16 140

原创 快速过一遍LinkedList源码

List类继承关系图由类图可以看出LinkedList不仅仅有List的功能,还实现了Deque双向队列功能优缺点优点不需要连续的内存空间,充分利用内存空间缺点不可以随机访问,必须从头遍历挨个寻找属性使用int size表示当前存储的实际个数Node first 第一个元素Node last 最后一个元素方法构造方法LinkedList()无参构造什么也不做LinkedList(Collection c)使用其他集合元素填充LinkedListadd方法public

2020-07-19 17:47:32 142

原创 快速过一遍ArrayList源码

List类继承关系图优缺点优点随机访问缺点必须是连续的内存空间ArrayList属性使用Object[] elementData使用int size存储当前数量存储的实际个数ArrayList方法构造方法ArrayList()无参构造使用默认的10容量public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;}ArrayList(int capacity)指定容量,如果为零

2020-07-19 17:44:47 148 1

原创 Spring Cloud深入浅出

小知识点application.yml中,"—"分割多个配置断,有spring.profiles=xxx的,表示要spring.profiles.active=xxx才能激活,没有spring.profiles的代码段是默认生效的配置@SpringCloudApplication是@SpringBootApplication、@EnableDiscoveryClient、@EnableCircuitBreaker组成的yml配置:和value之间必须要有个空格,name后面必须要有“:”注册中心

2020-07-09 00:10:05 3780 1

原创 微服务设计

微服务什么是微服务很小,可以专注做好一件事一个微服务多小为好:在两周内可以完全重写服务越小优点和缺点都会更加明显自治性修复并部署一个服务,不影响其他服务主要好处技术异构不同服务,采用不同技术栈弹性一个组件不可用,会不会导致级联故障扩展可以只对有性能瓶颈的部分进行扩展,而不会因为一个地方的性能瓶颈导致会整体进行扩展简化部署与团队结构更加契合可组合型重构成本小面向服务的架构SOA可以把微服务看成SOA的一个特定方法其他分解技术共享库比如:maven模块java直到

2020-07-01 17:47:47 238

原创 spring cloud - java.lang.StringIndexOutOfBoundsException: String index out of range

2015-11-24T14:30:29.89-0600 [App/0] OUT java.lang.StringIndexOutOfBoundsException: String index out of range: 1232015-11-24T14:30:29.89-0600 [App/0] OUT at java.lang.String.checkBounds(String.java:385)2015-11-24T14:30:29.89-0600 [App/0]

2020-05-11 14:30:57 1103

原创 Kubernetes基本概念和术语,以及Kubectl命令大全

Kubernetes基本概念和术语kubernetes是一个高度自动化的资源控制系统,它通过跟踪对比etcd库保存的“资源期望状态”与当前环境的“实际资源状态”的差异来实现自动化控制和自动纠错的高级功能Master是集群的控制节点,所有的控制指令都发给他Master上运行着以下进程:Kubernetes API Server:提供rest接口,增删改查资源Kubernetes...

2020-04-29 00:54:48 352

原创 Redis深入浅出

常识一个value最大是512m一个hash可以存储2的三十二次方-1个键值一个list可以存储2的三十二次方-1个元素一个set可以存储2的三十二次方-1个元素如果存储为字符串,可以用tableName????field设计key如果设计为hash,并映射关系型数据库的表,可以用tableName:id设计整个hash表key,然后表的字段用hash的子key表示一条评论信息,因为需要...

2020-04-22 23:44:07 356 1

原创 Nginx 深入浅出

常用命令Nginx启动会创建多个进程,其中一个是master进程,另外的是worker进程nginx -hnginx [-c /etc/nginx/nginx.conf] 指定配置文件路径 #启动##############停止#########nginx -s stopnginx -s quitkill -QUIT pid 从容停止kill -TERM pid 快速停止k...

2020-01-20 23:57:13 13784

原创 Maven概念、配置速记

基本配置POM:项目对象模型,Project Object Model表示pom的版本,maven2和maven3中modelVersion只能是4.0.0mvn archetype:generate快速生成项目,格式为:groupId:artifactId:version:goal:打包方式,默认是jar,还有:war、pom、maven-plugin、ear依赖管理depend...

2020-01-18 14:09:59 285

原创 Kafka 深入浅出

深入浅出broker:每个Kafka服务叫一个broker,每个broker可以轻松处理数千个分区和每秒数百万的消息量分区:一个分区属于一个broker,这个分区叫做主分区,同时分区可以分布在多个broker上面,这些分区叫做分区复制,如果主分区失效,其他分区接管主导权。分区复制只能发生在单个集群中。保留策略:保留一段时间(比如7天),如果超时一定大小就删除旧消息,每个topic可以配置单......

2020-01-06 01:36:26 395

原创 线程池大小,线程数计算公式

有一个简单并且适用面比较广的公式:CPU 密集型任务(N+1): 这种任务消耗的主要是 CPU 资源,可以将线程数设置为 N(CPU 核心数)+1,比 CPU 核心数多出来的一个线程是为了防止线程偶发的缺页中断,或者其它原因导致的任务暂停而带来的影响。一旦任务暂停,CPU 就会处于空闲状态,而在这种情况下多出来的一个线程就可以充分利用 CPU 的空闲时间。I/O 密集型任务(2N): 这种任务应用起来,系统会用大部分的时间来处理 I/O 交互,而线程在处理 I/O 的时间段内不会占用 CPU 来处理.

2019-12-28 11:06:46 3000

原创 Linux之awk命令

awk可以接收文件和标准输入awk 'BEGIN{ print "start" } /pattern/ { commands } END{ print "end" }' file执行BEGIN { commands } 语句块中的语句,“BEGIN”需大写从文件或stdin中读取一行,然后执行pattern { commands }。重复这个过程,直到文件全部被读取完毕。当读至输入流末...

2019-09-13 15:04:26 154

原创 Linux之sed命令

sed入门寻址方式以下所有的address都可以用下面四种寻址方式/pattern/ #正则表达匹配行/pattern1/,/pattern2/ #正则表达式匹配行区间,左右闭包含n #匹配第n行n1,n2 #匹配行号区间替换标记sed '[address]s/pattern/replacement/flags'pattern:正则匹配要替换的内容flags可以为:...

2019-09-10 23:38:59 179

原创 (一)struts2.2.1之前和struts2.3基本配置的区别

注意:创建web项目,一定搭配的是j2ee1.4只有两步,1.导入包,2.在web.xml中配置过滤器1、导入包的区别在struts2.0中: commons-logging-1.0.4.jar-----日志包;freemarker-2.3.8.jarognl-2.6.11.jarstruts2-core-2.0.11.jarxw...

2019-09-06 00:18:39 5431 1

原创 Linux之vi编辑器

普通模式用vi file刚进入时就是命令模式移动光标:hjkl左下上右 H(最上) L(最下) M(中间行) 【当前屏】 G(最后一行) nG gg(第一行)选择文本:v字符选择 V行选择复制:yy nyy yw y$粘贴:p删除:dd(删除一行) dw(删除一个单词) ndd D(删除光标本行后的所有文...

2019-09-06 00:03:42 306 2

原创 Shell内建命令与外部命令

外部命令外部命令也称文件系统命令,他们不属于bash shell,它们常位于/bin、/sbin、/usr/bin、/usr/sbin,当外部命令执行时会新建一个子进程如下显示cd命令是内建命令➜ ~ which cdcd: shell built-in command➜ ~ type cdcd is a shell builtin如下显示ps为外部命令➜ ~ whic...

2019-09-04 23:33:24 180

原创 Mac OS利器之Homebrew和item2

HomebrewHomebrew是macOS包管理器安装/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"常用命令brew search xxx #查询是否这个软件brew [cask] install xxx #安装软件brew...

2019-08-29 23:35:26 415

原创 Linux Shell脚本攻略-Shell语法

变量每一个变量的值都是字符串定义:tuyou='涂有';等号两边不能有空格;双引号内可写变量,单引号不行;tuyou=$(ll)在内容中执行变量清除:unset tuyou;取值:$tuyou、${tuyou};打印:echo $tuyou;获取变量长度:${#var}设为环境变量:export tuyou;数值运算符整数运算符:let命令可以直接执行基本的算术操作。当使...

2019-08-26 23:24:06 277

原创 Linux Shell脚本攻略-文本处理命令

cat用于读取、显示或拼接文件内容打印单个文件的内容:$ cat file.txtThis is a line inside file.txtThis is the second line inside file.txt打印多个文件的内容:$ cat one.txt two.txtThis is line from one.txtThis is line from two....

2019-08-26 22:36:49 177

原创 Linux xargs命令

用于让不支持从管道接收输入的命令支持管道输入,其实就是把管道的输入的内容按空格分割(默认空格分割),然后自动拼接到命令后面echo "cat" | xargs man //最后的结果其实就是执行:man catecho "java" | xargs killall //最后的结果其实就是执行:killall javaecho ". .." | xargs ls //最后的结果其实就是执行:...

2019-08-26 21:59:36 247

原创 Git基本常用命令

git --version #查看版本号 git help #简单帮助信息 git help --all #完整帮助 git commit --amend #合并上一次提交git config --global user.name "tuyou"git config --global user.email "[email protected]"git config -l 列出所有配...

2019-08-15 00:09:11 130

原创 Spring整合Redis序列化问题

1、key的序列化问题o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - Resolved exception caused by Handler execution: java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String发生这个异常是因...

2019-08-01 23:40:52 2190

kafka-connect-jdbc-5.0.0.jar

直接放进kafka/lib文件下面,就安装成功了JdbcSourceConnector和JdbcSinkConnector插件

2020-01-18

kafka-connect-elasticsearch-5.0.0-jar-with-dependencies.jar

连带依赖打入jar包,直接放进kafka/lib文件下下面,就安装成功了ElasticsearchSinkConnector插件

2020-01-18

WEB服务 原理和技术.pdf(带书签)

出书时间为2009年,作者是芬兰的时间著名计算机工作者;另外我手动把书签加上了,方便大家查看

2016-02-17

淘宝天猫商城的电子商务平台的搭建方案.pdf

淘宝天猫商城的电子商务平台的搭建方案.pdf

2014-12-12

apose.word for java

apose.word for java的chm格式文档,方便阅读和查看

2013-09-16

倒计时.rar

界面美观,功能齐全,简单易用的倒计时软件!

2013-04-19

深入浅出.MFC.pdf

深入浅出.MFC.pdf 如果你想学习MFC,这是一本不可多得的书籍,经典永不变

2012-11-25

[系统分析师考试全程指导].清华大学出版社.扫描版.pdf

[系统分析师考试全程指导].清华大学出版社.扫描版.pdf 如果要软考高级的,看这本书你一定能得个好分

2012-11-25

js一百个样例

js一百个样例 学习javascript必须要懂得100个样式

2012-11-25

JavaScript程序设计.pdf

JavaScript程序设计.pdf 学习JavaScript必须要看的一本书

2012-11-25

CSS中文完全参考手.chm

CSS中文完全参考手.chm 学习css必备的工具书

2012-11-25

基于的C#的遗传算法实现

基于的C#的遗传算法实现

2012-10-30

基于遗传算法的排课系统实现

基于遗传算法的排课系统实现

2012-10-30

java实现对xml的操作

java实现对xml的操作

2012-10-30

C语言库函数大全.doc

很好很全很实用的资源,是每个学习C的人儿必备的文档

2012-10-06

java如何设置JAVA_HOME,path,classpath及其作用

很好的很实用的资源文档,对于java初学者是必备的

2012-10-06

java正则表达式

很好的资源文档,对于刚入门的java人肯定是需要的

2012-10-06

java键盘输入

还不多的资源,对于刚入门的java人肯定是需要的

2012-10-06

空空如也

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

TA关注的人

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