自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(156)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 ElasticSearch 底层读写原理

​ 写请求是写入 primary shard,然后同步给所有的 replica shard;读请求可以从 primary shard 或 replica shard 读取,采用的是随机轮询算法。1.选择任意一个DataNode发送请求,例如:node2。此时,node2就成为一个coordinating node(协调节点)2.计算得到文档要写入的分片routing 是一个可变值,默认是文档的 _id。

2024-03-09 22:29:48 902

原创 Elasticsearch架构原理

一. Elasticsearch架构原理1、Elasticsearch的节点类型在Elasticsearch主要分成两类节点,一类是Master,一类是DataNode。1.1 Master节点在Elasticsearch启动时,会选举出来一个Master节点。当某个节点启动后,然后使用Zen Discovery机制找到集群中的其他节点,建立连接,并从候选主节点中选举出一个主节点。Master节点主要负责:● 处理创建,删除索引等请求,负责索引的创建与删除。

2024-03-09 13:45:50 1355

原创 ElasticSearch DSL语法

term: 这种查询和match在有些时候是等价的,比如我们查询单个的词hello,那么会和match查询结果一样,但是如果查询"hello world",结果就相差很大,因为这个输入不会进行分词,就是说查询的时候,是查询字段分词结果中是否有"hello world"的字样,而不是查询字段中包含"hello world"的字样。模糊匹配主要是针对文本类型的字段,文本类型的字段会对内容进行分词,对查询时,也会对搜索条件进行分词,然后通过倒排索引查找到匹配的数据,模糊匹配主要通过match等参数来实现。

2024-03-03 23:10:47 1096

原创 ElasticSearch开篇

结构化数据和非结构化数据。结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。非结构化数据:指不定长或无固定格式的数据,如 互联网数据、邮件,word文档等。顺序扫描法和反向索引法顺序扫描法:所谓顺序扫描法,就是顺序扫描每个文档内容,看看是否有要搜索的关键字,实现查 找文档的功能,也就是根据文档找词。反向索引法:所谓反向索引,就是提前将搜索的关键字建成索引,然后再根据索引查找文档,也就 是根据词找文档。这种先建立索引,再对索引进行搜索文档的过程就叫。

2024-03-03 14:26:32 980

原创 深入理解Mysql事务隔离级别与锁机制

MyISAM在执行查询语句SELECT前,会自动给涉及的所有表加读锁,在执行update、insert、delete操作会自动给涉及的表加写锁。InnoDB在执行查询语句SELECT时(非串行隔离级别),不会加锁。但是update、insert、delete操作会加行锁。简而言之,就是。

2024-02-28 22:29:56 1212

原创 服务器资源检查

【代码】服务器资源检查。

2023-10-29 12:43:32 175

原创 通过zookeeper浅谈一致性算法

CAP 定理指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。通俗来说:一致性(C):当系统数据发生更新操作后,各个主机中的数据仍然处于一致的状态。可用性(A):对于用户的每一个请求,系统总是可以在有限的时间内对用户做出响应。分区容错性(P):分布式系统在遇到任何网络分区故障时,仍能够保证对外提供满足一致性或可用性的服务。

2023-10-29 10:00:00 529

原创 MySQL阻塞与死锁

因为不同锁之间的兼容性关系,在有些时刻一个事务中的锁需要等待另一个事务中的锁释放它所占用的资源,这就是阻塞。查询:设置值:注意:参数参数是动态的,在mysql运行时可进行调整,参数是静态的,不可在运行时进行修改,否则会报错。(其实InnoDB存储引擎在大部分情况下都不会对异常进行回滚。异常实例演示:左边为会话A,右边为会话B。初始状态数据库表film中有3条数据,ID,分别为3,5,6;首先会话A 开启了事务A,并且在Next-Key Lock算法下锁定了小与5包含5的记录。

2023-09-06 22:07:42 624 1

原创 MySQL中的锁机制

抛砖引玉:多个查询需要在同一时刻进行数据的修改,就会产生并发控制的问题。我们需要如何避免写个问题从而保证我们的数据库数据不会被破坏。

2023-08-14 01:56:49 869 1

原创 MYSQL幻读问题

​ 通俗来说就是,time1:事务A读取某个范围,time2:事务B在这个范围中插入了一条新记录并提交事务,time3:事务A再次读取该范围的记录时读取到事务B新增的记录。对于上面的SQL语句,会将(-∞,+∞)这个范围加锁,因此在这个范围内的插入都是不允许的,从而避免幻读。但是我们会发现update ID 为3的记录是成功的,也就是说事务A是可以感知到事务B新增的ID为3的记录。注意这时select出的记录中是没有ID为3的记录。Time1: 开启事务A , 查询表film中的所有记录。

2023-08-13 03:23:41 275

原创 垃圾收集算法

而老年代的对象存活几率是比较高的,而且没有额外的空间对它进行分配担保,所以我们必须选择“标记-清除”或“标记-整理”算法进行垃圾收集。算法分为“标记”和“清除”阶段:标记存活的对象, 统一回收所有未被标记的对象(一般选择这种);当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。根据老年代的特点特出的一种标记算法,标记过程仍然与“标记-清除”算法一样,但后续步骤不是直接对可回收对象回收,而是让所有存活的对象向一端移动,然后直接清理掉端边界以外的内存。

2023-04-27 14:15:05 110 1

原创 从JDK源码级别彻底剖析JVM类加载机制

● 加载:在硬盘上查找并通过IO读入字节码文件,使用到类时才会加载,例如调用类的main()方法,new对象等等,在加载阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。双亲委派机制,加载某个类时会先委托父加载器寻找目标类,找不到再委托上层父加载器加载,如果所有父加载器在自己的加载类路径下都找不到目标类,则在自己的类加载路径中查找并载入目标类。● 扩展类加载器:负责加载支撑JVM运行的位于JRE的lib目录下的ext扩展目录中的JAR类包。

2023-04-26 11:23:24 371

原创 RabbitMQ编程模型

RabbitMQ出于服务器复用的想法,可以在一个RabbitMQ集群中划分出多个虚拟主机,每一个虚拟主机都有AMQP的全套基础组件,并且可以针对每个虚拟主机进行权限以及数据分配,并且不同虚拟主机之间是完全隔离的。Stream队列是RabbitMQ自3.9.0版本开始引入的一种新的数据队列类型,也是目前官方最为推荐的队列类型。仲裁队列,是RabbitMQ从3.8.0版本,引入的一个新的队列类型,整个3.8.X版本,也都是在围绕仲裁队列进行完善和优化。这是RabbitMQ最为经典的队列类型。

2023-04-17 23:37:15 369

原创 一条SQL在MySQL中是如何执行的

你可以看到,如果查询命中缓存,MySQL 不需要执行后面的复杂操作,就可以直接返回结果,这个效率会很高。等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。之后,这个连接里面的权限判断逻辑,都将依赖于此时读到的权限。,如果命中查询缓存,会在查询缓存返回结果的时候,做权限验证。2,在引擎层做了热点数据的缓存。查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空.

2023-04-08 00:33:48 409

原创 RocketMQ安装

为了便于观察,这次搭建一个2主2从异步刷盘的集群,所以我们会使用conf/2m-2s-async下的配置文件,实际项目中,为了达到高可用,一般会使用dleger。然后在对应的slave在worker2上,修改work2上的 conf/2m-2s-async/broker-b-s.properties。把下载的rocketmq-all-4.7.1-bin-release.zip在本地完成解压,并上传到/app/rocketmq目录。先配置2m-2s-async/broker-a.properties。

2023-04-08 00:10:47 355

原创 提高单元测试的意义&如何用Mockito做好单元测试

​ 定义:单元测试是开发者编写的一小段代码,用于检验代码的一个很小的,很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件下特定函数的行为(《单元测试之道 Java版》)。换句话说,指对软件中的最小可测试单元进行检查和验证,针对的是类和方法。我们是否需要从头开始一行行代码写?不用的,有些插件可以帮忙生成部分代码生成代码的插件idea自带的生成功能TestMe插件,这款插件只会给你生成一个壳,真正逻辑需要自己编写。squaretest插件,这里就不展开讲了。

2023-04-08 00:03:16 1437

原创 RocketMQ安装

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8UJIRej8-1677910572044)(C:\Users\QiJian\AppData\Roaming\Typora\typora-user-images\image-20220531134421318.png)]然后在对应的slave在worker2上,修改work2上的 conf/2m-2s-async/broker-b-s.properties。先配置2m-2s-async/broker-a.properties。

2023-03-04 14:16:48 943

原创 docker mysql应用安装

将修改后的配置放到容器。

2022-10-22 21:57:07 343

原创 dacker安装

官网:https://documentation.portainer.io/Portainer社区版2.0拥有超过50万的普通用户,是功能强大的开源工具集,可让您轻松地在Docker, Swarm,Kubernetes和Azure ACI中构建和管理容器。Portainer的工作原理是在易于使用的GUI后面隐藏使管理容器变得困难的复杂性。通过消除用户使用CLI,编写YAML或理解清单的需求,Portainer使部署应用程序和解决问题变得如此简单,任何人都可以做到。

2022-10-16 20:12:13 283

原创 fastJson序列化与反序列化

Java泛型是jdk1.5引入的一个新特性。泛型的本质是参数化类型,也就是说操作的数据类型被指定为一个参数。

2022-10-05 21:40:48 2305

原创 redis分布式锁案例分析

3、替代redis的事务功能:redis自带的事务功能很鸡肋,而redis的lua脚本几乎实现了常规的事务功能,官方推荐如果要使用redis的事务功能可以用redis lua替代。如果是集群,锁的生效只有在当前服务器的进程上生效。1、减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在redis服务器上完成。管道不是原子的,不过redis的批量操作命令(类似mset)是原子的。这时候在极端情况下就会出现 请求A释放请求B的锁,B释放C的,C释放D的,…上面的代码中不是原子的。

2022-10-04 02:54:55 551

原创 Redis数据结构,一个字牛。

当几百万条的数据时,就只有一个user ,当获取所有的值的时候。​ 目前的工作做中redis扮演者越来越重要的角色,但是我看挺多人都只会使用redis的字符串,当然选择也应该根据实际的业务场景来选择合适的数据结构。​ 进入官网是这么显示展示的,从这能够得到的信息就是:1:redis是开源的。这时有人就会说了,前面提到的数据结构已经能够做到上面的需求了啊,例如上面的签到日历,使用string结构,签了是1,没有签是2。下面还有三种新类型。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

2022-10-02 17:35:51 765

原创 JVM类加载机制

类加载过程 ;自定义类加载器只需要继承 java.lang.ClassLoader 类,该类有两个核心方法,一个是loadClass(String, boolean),实现了双亲委派机制,还有一个方法是findClass,默认实现是空方法,所以我们自定义类加载器主要是重写findClass方法。try {//defineClass将一个字节数组转为Class对象,这个字节数组是class文件读取后最终的字节数组。...

2022-08-13 23:54:04 105

原创 Could not create server TCP listening socket 127.0.0.16379 bind 操作成功

Redis启动失败提示:Could not create server TCP listening socket 127.0.0.16379 bind 操作成功使用如下命令启动redis,启动失败redis-server.exe redis.windows.conf问题截图:问题解决:# 启动客户端redis-cli.exe# 关闭链接shutdown # 退出客户端exit如果输入shutdown,提示(error) NOAUTH Authentication requi

2022-04-25 22:38:20 1528

原创 JDK7中ConcurrentHashMap源码解析

ConcurrentHashMap数据结构ConcurrentHashMap的数据结构与HashMap基本类似, 区别在于:1、内部在数据写入时加了同步机制(分段锁)保证线程安全,读操作是无锁操作;2、扩容时老数据的转移是并发执行的,这样扩容的效率更高ConcurrentHashMap 线程安全的具体实现方式JDK 1.7ConcurrentHashMap基于ReentrantLock实现分段锁将数据分为一段一段的存储,然后给每一段数据配一把锁,底层数据结构:Segment 数组 + Has

2022-04-25 22:32:54 861

原创 JDK7 HashMap源码解析

为什么HashMap中在链表与数组的选择时选择了数组?因为使用链表的话访问查询会比较低(get方法),在ArrayList中可以直接使用下表来获取数据,但是链表需要一个位置一个位置遍历来查询。在HashMap中get和put使用的频率都是非常的高的,所以我们也需要同时去保证他们的效率。JDK 1.8 前 : 数组 + 链表put方法:● 通过 key 的 hashCode 经过 扰动函数(hash()) 处理过后得到 hash 值● 通过 (n - 1) & hash (高效的求余数的办

2022-04-23 00:29:11 243

原创 idea中配置tomcat时找不到war/war exploded

问题截图,找不到war/war exploded解决办法:file—>project structure —>Modules—>webArtifacts 如下操作接着通过上面的操作接可以了

2022-04-23 00:19:21 1493 2

原创 mysql5.7解压版出现 MySQL之2003-Can‘t connect to MySQL server on ‘localhost‘(10061 ...)

打开navicat出现如下报错:出现上面问题我猜想:服务没有启动在管理后台一看别说服务没有启动了,就连MySQL的服务都没有。回想一下可能是之前自己为了图便捷使用电脑管家的时候可能不小心把服务删除了。解决办法:DOS命令进入安装目录下的bin目录执行如下:mysqld -install 问题解决...

2022-03-31 14:51:00 1820

原创 LeetCodePlugin安装与使用

首先找到LeetCode editor , 安装Tools下找到LeetCode Plugin 右边进行如下配置CodeFileName (代码文件名字)$!velocityTool.camelCaseName(${question.titleSlug})CodeTemplate (Code初始化模板)package com.qijian.leetcode.editor.cn;${question.content}public class $!velocityTool.c..

2022-03-12 13:47:01 562

原创 ngrok内网穿透

ngrok内网穿透小程序和后台api通信小程序不能够直接访问后台接口如果要访问后台的话,需要通过内网穿透将ip暴露到公网使用工具:ngrok工具官网:https://ngrok.com/安装下载后解压并cmd进入文件目录j进入官网,执行第二部所示命令,dos命令执行 。ngrok authtoken 25RWZ2x1jaGmkY48NnSstKUvrvu_81oN8FXiE6fMyBzsXWZjP(这是隧道id)命令执行之后在C:\Users\QiJian\.ngr

2022-02-26 17:33:05 208

原创 zookeeper的安装

Step1:zookeeper需要Java环境的支持,检验环境:java -versionStep2: 下载解压 zookeeper#下载wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper‐3.5.8/apache‐zookeeper‐3.5.8‐bin.tar.gz #解压tar ‐zxvf apache‐zookeeper‐3.5.8‐bin.tar.gz #进入cd apache‐zookeeper‐3.5.8‐bin

2022-02-08 18:01:59 945

原创 Centos7下 RabbitMQ详细安装

环境:Java1.8Centos7上传软件将下面rpm文件上传到服务器erlang-18.3-1.el7.centos.x86_64.rpm socat-1.7.3.2-5.el7.lux.x86_64.rpm rabbitmq-server-3.6.5-1.noarch.rpm 安装Erlangrpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm安装# 安装rpm -ivh socat-1.7.3.2-1.1.el7.x86_64.rpm

2022-01-27 16:13:31 291

原创 微服务组件Seata

事务简介​ 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在关系数据库中,一个事务由一组SQL语句组成。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。​ 原子性(atomicity):个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。​ 一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态,事务的中间状态不能被观察到的。​

2021-12-21 21:41:32 991 1

原创 linux下查看日志命令

Grep:查找文件中指定文本的命令语法:grep “测试” test.log解释:查找test.log所有包含"测试"字符串的行该命令常用参数:-a/-text: 不忽略二进制数据-A:显示匹配的行以及该行后n行-B:显示匹配的行以及该行前n行-C:显示匹配的行以及该行前后n行-c: 显示匹配的行数总和(注意是行数,如果一行匹配到两个也算一行)-H: 显示匹配的行说属文件名-i: 不区分大小写-n: 显示匹配的行并行显示当前行数

2021-12-10 15:38:27 812

原创 对象的共享

Java并发编程实战学习笔记。要编写正确的并发程序,关键问题在于:在访问共享的可变状态时需要进行正确的管理。可见性可见性是一种复杂的属性,可见性的错误总会违背我们的直觉。当写操作和读操作在不同的线程中执行的时候,我们无法确保执行读操作的线程能适时的看到其他线程写入的值,有时甚至是更本是不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须是有同步机制。​ 程序Novisibility说明了当前线程在没有同步的情况下共享数据时出现的错误。在代码中,主线程和读线程都访问共享ready和numbe

2021-11-25 23:16:54 421 1

原创 为什么HashMap的数组长度是2的幂

为什么HashMap的长度一定是2的次幂呢?​ 今天和朋友聊天被问到HashMap的数组长度为什么是2的倍数。说实话挺惭愧的,秋招结束了,还不能完整的给出一个完整的答案。我知道了HashMap的数据结构,也知道了什么是Hash冲突,如果定位到的数组位置不含链表(当前entry的next指向null),那么对于查找,添加等操作很快,仅需一次寻址即可;如果定位到的数组包含链表,对于添加操作,其时间复杂度为O(n),首先遍历链表,存在即覆盖,否则新增;对于查找操作来讲,仍需遍历链表,然后通过key对象的eq

2021-11-25 08:52:45 2278

原创 db+Nacos的方式部署高可用集群模式

db+Nacos的方式部署高可用集群模式环境:电脑环境:Win10专业版java : jdk1.8.0MySQL: 5.7spring cloud alibaba : 2.2.5.RELEASEspring boot : 2.3.11.RELEASEspring cloud : Hoxton.SR8nacos: 1.4.1seata: 1.3.0下载安装:官方部署指南:https://seata.io/zh-cn/docs/ops/deploy-guide-beginner.html

2021-11-18 15:26:22 897

原创 Sentinel持久化模式

Sentinel持久化模式Sentinel规则的推送有下面三种模式:原始模式:如果不做任何修改,Dashboard 的推送规则方式是通过 API 将规则推送至客户端并直接更新到内存中:这种做法的好处是简单,无依赖;坏处是应用重启,规则就会消失,仅用于简单测试,不能用于生产环境。拉模式pull 模式的数据源(如本地文件、RDBMS 等)一般是可写入的。使用时需要在客户端注册数据源:将对应的读数据源注册至对应的 RuleManager,将写数据源注册至 transport 的WritableDat

2021-11-17 01:07:47 697

原创 Sentinel控制台规则配置

1.启动控制台下载链接:https://github.com/alibaba/Sentinel/releases启动控制台java -jar sentinel-dashboard-1.8.0.jar2.Sentinel控制台实时监控监控接口通过的QPS和拒绝的QPS注:​ QPS(Query Per Second),QPS 其实是衡量吞吐量(Throughput)的一个常用指标,就是说服务器在一秒的时间内处理了多少个请求TPS(Transaction Per Second) 每秒钟系统

2021-11-16 21:30:45 1068

原创 Alibaba微服务组件Sentinel

Alibaba微服务组件Sentinel1.分布式系统遇到的问题服务的可用性问题​ 提供系统可用性的关键是在相关组件失效情况下,系统能多快恢复并继续正确提供服务。当服务器挂掉的时候首先想到什么原因?1,激增流量打卡 2,被其他服务拖垮 3,异常没有处理说白了:系统缺乏高可用防护/容错机制尤其是针对流量的防护。科补:在系统的高可靠性性里有个衡量可靠性的标准—X个9 (X是代表数字3~5)。X个9表示在系统1年时间的使用过程中,系统可以正常使用时间与总时间(1年)之比3个9:(1-99

2021-11-16 21:17:56 1068 2

equals方法的重写.docx

equals方法重写作业,Students类,有三个属性id ,name ,grade。还有一个测试类用于测试创建了三个对象前两各对象的数据完全一样,第三个对象的数据不同。使用equals方法比较。并输出结果。

2019-12-06

第一次实验报告.7z

面向对象程序设计 c++版 第二版实验报告一 实验目的 熟悉VC++操作环境并生产所写应用的发布版

2019-06-14

计算圆面积.cpp

int mian() { struct Circle myC; myC.InputR(); myC.ComputS(); myC.OutputS() return 0; } 主函数如上,要求完善计算圆面积的程序,园的相关信息集中定义在结构体中,并实现对结构体的调用。

2019-05-19

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

TA关注的人

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