自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ChinaCR07的博客

一个不写总结的程序员成不了大牛

  • 博客(84)
  • 资源 (6)
  • 收藏
  • 关注

原创 kafka生产者发送消息流程分析

kafka生产者发送消息流程分析

2023-03-26 18:41:19 1443

原创 聊聊Buffer Pool缓存机制整个流程

目录1.更新数据的流程1.1执行流程1.2 binlog日志2.几个链表的使用2.确实没有缓存数据了怎么办?1.更新数据的流程1.1执行流程例如一个更新数据,整个流程如上图所示:1.从磁盘加载数据到buffer pool,会先去判断要更新的数据所在数据页是否已经被加载到了,如果已经被加载到了buffer pool中的数据页就直接使用。2.写入数据的旧值到undo log日志中,用于事务回滚。3.更新buffer pool数据页中内存数据。4.写入内

2021-10-14 15:10:14 471 3

原创 展开详细聊聊Innodb中缓冲池Buffer Pool组件

1.缓存池Buffer Pool结构buffer pool组成:数据页(或者说缓存页)、索引页index page 、插入缓存insert buffer 、锁信息、自适应哈希索引、数据字典信息。查看innodb存储引擎信息命令:show engine innodb status;buffer pool默认大小128M,查看默认大小show variables like 'innodb_buffer_pool_size';可以用命令进行修改:set global innodb_b.

2021-10-12 18:21:03 328

原创 聊一聊JUC同步队列AQS

聊一聊JUC同步队列AQS1. 同步队列AQS1.1 AQS是什么?1.2 AQS实现原理1.2.1 Node节点1. 同步队列AQS1.1 AQS是什么?AbstractQueuedSynchronizer抽象同步队列简称AQS,AQS是一个FIFO的双向队列,通过同步队列来完成对同步状态的管理。它是JUC实现同步器d的重要基础抽象类。1.2 AQS实现原理AQS通过内部的同步队列(...

2020-05-03 16:19:32 388

原创 ElasticSearch学习之集群安全身份认证

身份认证启动单节点bin/elasticsearch -E node.name=node0 -E cluster.name=geektime -E path.data=node0_data -E http.port=9200 -E xpack.security.enabled=true#运行密码设定的命令,设置ES内置用户及其初始密码。bin/elasticsearch-setup-pas...

2020-04-06 21:21:46 962

原创 ElasticSearch学习之数据建模

Update By Query_update_by_query适用场景:索引mappings有更新,通过使用_update_by_query可以查询到mappings更新之前的文档。POST /blogs/_update_by_query{}reindexES不允许对已有的索引mappings进行更改,可以重新创建一个索引然后用reindex操作将原有的索引数据导入都新的索引中。...

2020-04-06 16:07:28 305

原创 ElatsicSearch学习之对象关系

嵌套对象nested data typenested数据类型:允许对象数组中的对象被独立索引。使用nested和properties关键字在内部,nested文档会被保存在两个lucene文档中,在查询时做join处理。# 创建 Nested 对象 MappingPUT my_movies{ "mappings" : { "properties" : { ...

2020-04-06 13:43:01 252

原创 ElasticSearch学习笔记之聚合

metric aggregation单值分析:只输出一个分析结果max,min,avg,sumCardinality 去重,类似与distinct count多值分析:输出多个分析结果stats,extended statspercentile,percentile ranktop hitsPOST employees/_search{ "size":0, ...

2020-04-06 12:46:00 369

原创 ElasticSearch各种分词器

1. ES分词器分词器是专门处理分词的组件,Analyzer由三部分组成:Character Filters、Tokenizer、Token Filters。Character Filters:对文本原始处理,如去除html,Tokenizer:按照分词器规则进行切分单词,Token Filters:将切分后的单词进行加工,小写,删除空格,增加同义词等。2. ES内置的分词器2...

2020-01-05 14:13:57 3572

原创 ElaticSearch跨集群搜索

早期的ES版本采用Tribe Node来实现跨集群搜索,从5.3版本开始引入Cross Cluster Search跨集群搜索来替换掉Tribe Node方式。1.跨集群搜索配置1.1方式一PUT _cluster/settings{ "persistent": { "cluster": { "remote": { "cluster_one": {...

2020-01-05 14:12:01 265

原创 NIO技术精讲之缓冲区Buffer

1. 缓冲区BufferNIO中的buffer是一个用于存储基本数据类型值的容器。在使用传统I/O流API时,如InputStream和OutputStream,我们常常把字节流的数据放入byte[]字节数组中,或放入char[]字符数组中进行读写操作,这种处理方式处理比较原始。NIO中为我们提供了缓冲区Buffer类来解决,它还有很多其他方法。1.1 认识Buffer这个类小伙伴们平时开发...

2019-12-21 11:35:14 386

原创 ElasticSearch笔记整理之ELK环境搭建

1. ElasticSearch集群搭建1.1下载下载传送门点这里1.2 启动下载解压完成后修改elasticsearch.yml配置文件cluster.name: bigdata-clusternode.name: node2path.data: /usr/data/es/datapath.logs: /usr/data/es/logsnetwork.host: 0.0....

2019-12-17 23:05:12 287

原创 Redis数据类型底层原理及应用场景总结

1. String可以用来存储字符串、整数、浮点数。1.1 常用命令语法:set key valueset name williamdream语法:mset key value key value [......]mset age 12 job java语法:setnx key value如何key不存在则返回1设置成功,存在则返回0,设置失败setnx jo...

2019-12-17 23:01:02 476

原创 SpringBoot核心类之SpringApplication类分析

1.SpringApplication初始化1.1 SpringApplication静态方法run方法我们找一个SpringBoot应用,然后打开应用启动主类,我们知道主应用的启动会调用SpringApplication的静态方法#run方法。run方法的执行会伴随调用SpringApplication的构造器。我点进去瞧一瞧:@SpringBootApplication(exclude=...

2019-12-15 14:13:08 687 1

原创 SpringBoot自动装配原理分析之中篇

1. @SpringBootApplication1.1 从@SpringBootApplication注解开始@SpringBootApplication是一个组合注解,我们先看看源码怎么写的。@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootC...

2019-11-16 17:23:48 704

原创 Redis主从复制哨兵集群搭建

1 Redis主从复制1.1搭建主从复制集群建立主从复制关系有三种方式:在redis.conf文件中配置slaveof <masterip> <masterport>选项,然后指定该配置文件启动Redis生效。在redis-server启动命令后加上--slaveof <masterip> <masterport>启动生效。直接在从节点使...

2019-11-05 07:17:36 330

原创 Linux环境下一系列软件安装过程

1.Redis安装1.1 下载1.2 开始安装进入解压后的redis目录执行命令make PREFIX=/usr/local/redis install执行成功后发现/usr/local/redis下多个bin目录然后将解压后的redis文件下的redis.conf复制到刚刚那个bin文件下cp redis.conf /usr/local/redis/bin/1.3 启动red...

2019-11-03 18:05:43 263

原创 Redis分布式集群方案

1、为什么要搭建Redis集群我们知道单线程的Redis性能已经很高了,但实际应用中我们还是要搭建Redis集群,原因主要有三点:可用性和安全性方面,单机的Redis服务一旦宕机,会造成服务不可用,严重的会丢失数据,造成不可估量的损失。存储数据有限,Redis是内存数据库,如果数据量大容易受到硬件条件限制。吞吐量性能考虑,单机的Redis性能虽高,但如果在高并发场景下,性能还是会受到影响...

2019-10-31 22:56:05 395

原创 Redis缓存问题

1、缓存雪崩 缓存雪崩就是 Redis 的大量热点数据在短时间内同时过期(失效),因为设置了相同的过期时间,刚好这个时候 Redis 请求的并发量又很大,就会导致所有的请求到数据库。缓存雪崩解决方案:1. 加互斥锁或者使用队列,针对同一个key只允许一个线程到数据库查询;2.缓存定时预先更新,避免同时失效;3.通过加随机数,使 key 在不同的时间过期,错开过期时...

2019-10-30 11:23:13 301

原创 布隆过滤器原理

1. 布隆过滤器布隆过滤器是Burton Howard Bloom在1970年提出来的,一种空间效率极高的概率型算法和数据结构,主要用来 判断一个元素是否在集合中存在。因为他是一个概率型的算法,所以会存在一定的误差,如果传入一个值去布隆过 滤器中检索,可能会出现检测存在的结果但是实际上可能是不存在的,但是肯定不会出现实际上不存在然后反馈存 在的结果。因此,Bloom Filter不适合那些“零...

2019-10-26 23:06:56 440

转载 谈谈分布式事物

分布式事务高可用是指系统无中断的执行功能的能力,代表了系统的可用程度,是进行系统设计时必须要遵守的准则之一。而高可用的实现方案,无外乎就是冗余,就存储的高可用而言,问题不在于如何进行数据备份,而在于如何规避数据不一致对业务造成的影响。对于分布式系统而言,要保证分布式系统中的数据一致性就需要一种方案,可以保证数据在子系统中始终保持一致,避免业务出现问题。这种实现方案就叫做分布式事务,要么一起成功...

2019-10-24 10:19:15 271

原创 Redis单线程为什么那么快

1.redis设计简单来说:redis是分布式高性能的key-value的内存数据库,采用单线程设计,多路复用I/O。基于内存的键值对存储,时间复杂度o(1),速度快。基于单线程设计:(1)没有创建线程、销毁线程带来的消耗 (2)避免了上线文切换导致的 CPU 消耗 (3)避免了线程之间带来的竞争问题,例如加锁释放锁死锁等等异步非阻塞IO:处理快,并发能力强。2.单...

2019-10-21 23:22:18 272

原创 SpringBoot自动装配原理分析之上篇

1、@EnableXXX注解驱动原理从Spring 3.x开始中有许多@EnableXXX的注解,例如@EnableWebMvc,@EnableAsync,@EnableCaching等待注解,这些注解的意义在于根据需要完成自动装配所需的bean。自动装配好比汽车的自动挡一样,它的实现大致分为两种方式,一种是通过自定义注解,另一种是实现相应的接口。1.1 基于接口实现一种是通过实现Im...

2019-09-16 22:48:26 1046

原创 Dubbo源码分析之XML配置解析

1. 基于schema解析 dubbo的配置约束文件在dubbo-config/dubbbo-config-spring/src/main/resources/dubbo.xsd中。dubbo.xsd文件用来约束使用xml配置时的标签和属性。Spring在解析到自定义的namespace标签时,会查找META-INF下的spring.handlers和spring.schema...

2019-09-01 15:16:47 587

原创 Dubbo源码分析之zookeeper注册中心

1.ZookeeperRegistryFactorycom.alibaba.dubbo.registry.zookeeper.ZookeeperRegistryFactory,实现 AbstractRegistryFactory 抽象类,Zookeeper Registry 工厂。代码如下: public class ZookeeperRegistryFactory extend...

2019-08-31 22:48:03 346

原创 Dubbo源码分析之服务消费实现

消费端的代码解析是从下面这段代码开始的 <dubbo:reference id="xxxService" interface="xxx.xxx.Service"/> 注解的方式的初始化入口是 ReferenceConfifig.get public synchronized T get() { checkAndUpdateSubConfigs(); //检查和修改配...

2019-08-31 22:44:51 428

原创 Dubbo源码分析之服务注册原理

getRegistry 1. 把url转化为对应配置的注册中心的具体协议 2. 根据具体协议,从registryFactory中获得指定的注册中心实现 那么这个registryFactory具体是怎么赋值的呢? final URL registeredProviderUrl = getRegisteredProviderUrl(providerUrl, registryUrl)...

2019-08-31 22:36:20 521

原创 Dubbo源码分析之服务发布原理

Dubbo 的接入实现 Dubbo 中 spring 扩展就是使用 spring 的自定义类型,所以同样也有 NamespaceHandler、BeanDefinitionParser。而 NamespaceHandler 是 DubboNamespaceHandler BeanDefinitionParser 全部都使用了 DubboBeanDefinitionParser,如...

2019-08-31 22:26:31 340

原创 Dubbo源码分析之ExtensionLoader原理

ExtensionLoader是dubbo实现SPI的核心类。ExtentionLoader的逻辑入口可以分为getExtension、getAdaptiveExtension、getActivateExtension三个。分别是普通扩展类、自适应扩展类、和激活扩展类。1. getExtension实现原理方法逻辑:先通过参数name判断是否为true,不为true再通过#createEx...

2019-08-31 22:20:49 587

原创 设计模式之策略模式

1.策略模式使用场景策略模式注重的是对算法的封装,用户不需要知道每个算法的实现细节,之需要给用户提供不同算法的选择权。例如支付场景支持支付宝、微信、银联、财付通,用户只需要从中选择一种方式进行支付即可。使用策略模式可以减少代码中if-else判断逻辑,可以更好的进行扩展。2.代码实现定义策略接口类,及其实现类import com.william.javacore.pat...

2019-08-20 10:16:21 194

原创 JVM学习之内存监控与故障处理工具

1. JDK常用的命令行工具1.1 虚拟机进程状况工具--jps1.2 虚拟机统计信息监视工具--jstat1.3 Java配置信息工具--jinfo1.4 Java内存映像工具--jmap1.5 虚拟机堆转储快照分析工具--jhat1.6 Java堆栈跟踪工具--jstack2. 可视化工具2.1 JConsole...

2019-08-11 17:33:35 187

原创 JVM学习之垃圾收集器

如果说垃圾回收算法是理论,那么垃圾收集器就是实现。今天来聊聊Hotspot几种垃圾收集器。橙色代表新生代,绿色代表老年代,收集器直接有连线的说明可以配置使用。1. Serial收集器Serial收集器是最基本也是最长久的垃圾收集器。它是一个单线程收集器,它在进行垃圾对象收集时必须停掉用户线程。这样对用户体验来说就很糟糕了,所以JDK一直在努力减少因内存回收而导致停顿用户线程。到JD...

2019-08-10 23:07:32 185

原创 Spring源码分析之核心容器类图

1.IOC容器的祖先----BeanFactory接口BeanFactory是Spring IOC中重要的一个顶层接口。它是工厂模式的产物,里面定义了一些对bean操作的方法。在其子接口进行了扩展。它有三个重要的子接口分别是ListableBeanFactory、HierarchicalBeanFactory、AutowireCapableBeanFactory。它们最终都由一个子类进行实现,...

2019-08-04 16:19:41 662

原创 设计模式之模板模式

1. 模板模式使用场景模板模式是大家常见的设计模式之一,相信你早已使用过JdbcTemplate、RestTemplate等,很显然这就是模板模式的体现。2. 代码实现我们以封装数据库操作的JdbcTemplate为例。public class JdbcTemplate { private DataSource dataSource; public JdbcTem...

2019-08-04 11:31:35 231

原创 设计模式之委派模式

委派模式不是23种设计模式之一,但它也是常用的设计模式,它是静态代理和策略模式一种特殊的组合。委派者要持有被委派者的引用委派的核心:就是分发、调度、派遣。在SPring源码中也常常出现委派模式。1.代码实现public interface IEmployee { public void hardwork(String work); }public class Empl...

2019-08-03 22:58:59 436

原创 JVM学习之垃圾回收算法

1. 何时回收对象JVM何时回收对象,换句话说,如何判断对象为垃圾对象?有以下两种方式: 引用计数法 在对象中添加一个计数器,当一个对象在其他地方被引用,则计数器加1,失效时计数器减1。但这种并不能解决相互引用问题。 -verbose:gc -XX:+PrintGCDetails 可达性分析 GCRoot通过引用可以指向对象则对象存活,否则对象无效,视为垃圾。 ...

2019-07-31 14:50:43 205

原创 Mysql事务的隔离性

说到mysql你就会想到关系型数据库的ACID四大特性,今天我想详细说说mysql事物的隔离性。那么数据库事物为什么要有隔离性?四种隔离级别有什么作用?1. 多个事物环境下存在的问题在并发环境下,多个数据库事务同时对资源进行操作会产生一些问题,你可能已经耳闻过脏读、不可重复读、幻读。下面举例说明他们是怎么产生的。脏读,场景1:事物2修改一条数据,未提交,此时事物1获取该条数据,然后事物...

2019-07-31 12:54:55 237

原创 Mysql几种常见的存储引擎

一、CSV存储引擎数据存储以CSV文件特点:不能定义没有索引、列定义必须为NOT NULL、不能设置自增列-->不适用大表或者数据的在线处理CSV数据的存储用,隔开,可直接编辑CSV文件进行数据的编排-->数据安全性低注:编辑之后,要生效使用flush table XXX 命令应用场景:数据的快速导出导入表格直接转换成CSV二、Archive存储引擎...

2019-07-31 11:00:46 539

原创 Dubbo源码分析之SPI扩展机制

1. jdk spi扩展机制1.1spi是什么?spi是service provider interface,是JDK内置的一种服务提供发现机制。它是针对厂商或插件来进行服务扩展发现的,像JDBC、日志框架等都有用的。简单来说,它是一种动态替换发现的机制。举个简单的例子,如果我们定义了一个规范,需要第三方厂商去实现,那么对于我们应用方来说,只需要集成对应厂商的插件,既可以完成对应规范的实...

2019-07-30 22:01:02 302

原创 多线程join()与yield()方法总结

public static void main(String[] args) {HelloThread th = new HelloThread(); th.setName("HelloThread线程"); th.setPriority(5); th.start(); for (int i = 0; i < 100; i++) {...

2019-07-30 14:43:52 718 1

JVM调优技巧

JVM深入理解,JVM调优技巧

2018-08-30

SpringBoot配置多数据源实现动态切换数据源

通过简单的demo实现SpingBoot多数据源配置并动态切换多数据源

2018-06-29

spring源码缺少的两个jar包spring-cglib-repack-3.2.4.jar和spring-objenesis-repack-2.4.jar

spring源码缺少的两个jar包spring-cglib-repack-3.2.4.jar和spring-objenesis-repack-2.4.jar

2018-03-11

图片放大器插件

基于jquery实现图片放大器插件,仿京东商城商品放大插件

2018-03-05

省市区三级联动控件

基于jquery实现省市区三级联动插件,简单方便,城市控件

2018-03-05

Python网络爬虫

实用的Python网络爬虫教程实例,实用的Python网络爬虫教程实例

2018-01-27

空空如也

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

TA关注的人

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