自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(117)
  • 收藏
  • 关注

原创 java并发笔记

并发 、锁、线程池

2023-02-21 14:51:44 447

原创 零拷贝mmap和sendfile

零拷贝mmap,sendfile

2022-10-21 11:12:34 518 1

原创 mysql的mvcc

mysql的MVCC多版本控制

2022-10-13 17:15:08 347

原创 jvm-垃圾回收

清除后分配规则

2022-07-03 21:11:55 279

原创 java-内存布局

实例数据对齐填充64位jvm下是按照8字节读取数据的,例如以下每个格子代表一个字节:每次读取8个字节这是没有进行对齐填充的没有对齐的话,想要读取long型的这个完整数据:需要先读取0x00-0x07这8字节,再读取0x08-0x0f这8字节,整合两次读取的结果才能得到真正的数据如果是对齐填充的只需要读取一次0x08-0x0f这八字节就能获取到数据主要针对堆:以下的非堆指的是方法区流程图永久代:元空间......

2022-07-03 20:08:24 436 2

原创 jvm-对象生命周期

应用阶段不可见阶段不可见阶段的对象在虚拟机的对象根引用集合中再也找不到直接或者间接的强引用,最常见的就是线程或者函数中的临时变量。程序不再持有对象的强引用。(但是某些类的静态变量或者JNI是有可能持有的 )指对象不再被任何强引用持有,GC发现该对象已经不可达与不可见阶段的区别就是:不可达是经过算法之后的那么有哪些算法?对象的finalize()函数执行完成后,对象仍处于不可达状态,该对象进程终结阶段。GC对该对象占用的内存空间进行回收或者再分配,该对象彻底消失...

2022-07-02 18:34:20 353

原创 jvm-运行时数据区

jvm中又类似于cpu与内存的交互:方法区静态常量池是相对于运行时常量池来说的,属于描述class文件结构的一部分,由字面量和符号引用组成,在类被加载后会将静态常量池加载到内存中也就是运行时常量池运行时常量池类,接口,方法,字段等相关的描述信息,也就是真正的把文件的内容落地到JVM内存了字符串作为最常用的数据类型,为减小内存的开销,专门为其开辟了一块内存区域(字符串常量池)用以存放;常见问题:堆java虚拟机栈例如方法调用:程序计数器本地方法栈..........

2022-06-29 10:17:12 120

原创 jvm-类加载

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。那么平时写的.java文件是如何进入jvm当中的?class文件是二进制格式的类加载cl

2022-06-27 13:47:38 324

原创 java多线程

:线程创建,还未启动:又分ready和running,由线程调度器可以安排执行:等待被唤醒:隔一段时间自动唤醒:阻塞,只有synchronized才会出现(涉及操作系统层面):结束:等待其他线程执行完;线程a中调用线程b.join():a要等待b执行完才继续执行线程中断interrupt:打断某个线程(设置标志位):查询是否被打断(查询标志位):查询当前线程是否被打断,并重置标志位(设为false);针对的是当前线程优雅的结束线程:interrupt只是设置标志,结束线程还是要由开

2022-06-27 09:23:21 92

原创 Mysql-执行过程、分区表、锁

文章目录查询优化器查询优化器 语法解析检查sql语句是否合法执行计划优化器是根据成本来选择执行计划的,所以优化后的不一定就是效率最高的查询;查看某一条sql语句使用的成本:#在执行完一条sql语句后show status like 'last_query_cost'就能查看上条sql语句使用的成本多表关联select * from user inner join role using(id) inner join authorize using(role_id)这样的一条语句,

2022-05-26 21:39:07 465

原创 mysql-数据类型

文章目录整型TINYINTSMALLINTMEDIUMINTINTBIGINT字符型varcharcharBLOBTEXT时间datetime:timestampdate整型TINYINTTINYINT(1字节)SMALLINT2、SMALLINT(2字节)MEDIUMINT3、MEDIUMINT(三字节)INT4、INT(4字节)BIGINT5、BIGINT(8字节)数据库中定义的int(1)和int(12)在存储上没有任何区别将ip转化为整型 INET_ATON('192.16

2022-05-15 19:03:16 427

原创 mysql-性能监控、日志

文章目录性能监控Performance schema实践性能监控Performance schema默认是开启的 mysql系统会创建名为performance_schema的数据库,用于监控MySQL server在一个较低级别的运行过程中的资源消耗、资源等待等情况其中包含87张表,表中的数据不会存入磁盘而是在内存中存储,这些表大概可以分为以下几类:show tables like '%statement%';语句事件记录表,这些表记录了语句事件信息,当前语句事件表events_statem

2022-05-14 15:36:55 1037 1

原创 mysql-索引与引擎

文章目录本质聚集索引辅助索引索引覆盖回表本质索引本身也是一种数据,它的存在就是为了提高数据的查询效率;首先看mysql是如何查找数据的。默认使用B+树 叶子节点使用双向链表指针(方便范围查询)mysql的数据是存储在磁盘上(磁盘块,通常大小4k)的,而mysql查找数据需要将数据从磁盘读到内存(这就是io中的读),读取是以页的形式往内存中读取(大小通常为16k),索引的节点就等于是一个页,通常一行数据都是小于16k,那么一个节点上可以存储多行数据聚集索引innoDB支持,使用主键建立聚集索引,如

2022-05-09 16:44:43 742

原创 gateway网关基本使用

网关作为微服务中统一入口,只需要对外暴露网关的ip。另外网关可以做统一的鉴权、日志记录等统一操作文章目录路由predicate权重filter配置方式自定义过滤器全局过滤器局部过滤器网关限流自定义返回路由predicate根据配置的内容将请求转发到对应的服务上配置spring: application: name: gateway cloud: nacos: discovery: server-addr: localhost:8848

2022-04-24 16:42:04 986

原创 alibaba-sentinel

文章目录流控资源名流控方式QPS流控模式直接关联流控效果快速失败Warm Up排队等待![在这里插入图片描述](https://img-blog.csdnimg.cn/5eea12d26a2843b397123d0600ba67c7.png)线程数降级热点流控资源名可以是requestMapping的url,也可以是@SentinelResource("资源名")注解的方法流控方式QPS每秒通过的请求数 只关注请求不关注返回流控模式直接请求数超过阈值直接返回错误信息关联如果xxx关

2022-04-16 14:09:26 172

原创 alibaba-nacos使用

文章目录初步使用读取多个文件nacos既能作为配置中心使用,也能作为服务注册中心使用初步使用springboot项目中引入nacos依赖 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> &lt

2022-04-14 15:32:18 308

原创 redis单线程和多线程

redis服务流程:1、redis接收客户端请求2、网络IO解析请求转换为命令3、执行命令返回普遍说redis是单线程的,指的是redis处理请求、解析、执行命令是单线程完成的,但像清理过期数据等操作仍然是多线程完成的6.0版本之前整个流程都是单线程完成的6.0版本之后 默认不开启主线程接收到请求后,将网络IO解析的工作交给其他线程做,解析成命令最终交给主线程来执行Redis 的多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程顺序执行...

2022-02-14 09:30:39 667

原创 springBoot自动装配

springbean生命周期。

2022-02-11 16:24:13 294

原创 redis 穿透、击穿、雪崩

redis作为缓存使用穿透查询的数据在缓存和数据库中都不存在解决布隆过滤器设置缓存key值为null并设置过期时间对请求参数做校验击穿查询的数据在缓存中不存在(缓存失效),数据库中存在解决设置key永不过期使用互斥锁雪崩同一时间大量缓存key失效,请求打到数据库,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬时压力解决分散key过期时间,避免同一时间失效设置key永不过期...

2022-02-10 15:56:18 700

原创 LINUX输入输出BIO NIO

文章目录基本io原理基本io原理linux操作系统分为用户态和内核态用户态用户程序运行在用户态,用户态下有许多限制。比如无法直接操作硬件、创建和切换线程、开辟内存等操作(安全),这些操作都需要通过内核态完成内核态可直接操作系统硬件资源等,用户态可通过系统调用转换为用户态。比如用户态的io操作、切换线程都是通过系统调用进入内核态完成的linux中进入内核态的几种方式:系统调用、中断、异常...

2022-02-10 13:34:31 1674

原创 redis 主从

文章目录1、运行时配置2、配置文件配置3、哨兵sentinel这里说的是一主多从,只能解决单点故障问题,无法解决容量和访问压力问题主从复制的原理主节点将同步文件(rdb)以某种方式(落盘然后发送或直接网络)发送到从节点,从节点如果有老数据就直接flush掉,再通过接收的文件同步1、运行时配置比如有三台redis实例:6379、6380、6381。以6379端口为master在6380和6381上执行:replicaof ip 6379这样6380和6381就成为了6379的从节点如果m

2022-02-10 09:00:02 92

原创 redis 持久化

文章目录RDBAOFRDB在配置文件中可以配置rdb的规则save 900 1 #900秒内一次操作save 60 10000 #60秒内10000次操作dbfilename dump.rdb #文件名dir /vaar/lib/etc/6379 #文件路径通过fork出子进程来保存数据集到硬盘上(子进程可以得到父进程中export得环境变量,并且子父进程对其修改后对方得到得仍是原值)缺点当数据较大,fork子进程保存数据耗时数据丢失相对多优点文件相对小、恢复速度按快AOF

2022-02-09 09:20:29 48

原创 redis 回收策略

文章目录redis 回收策略lruvolatile-lruallkeys-lrulfuvolatile-lfuallkeys-lfu其他volatile-randomallkeys-randomvolatile-ttlnoeviction主动回收被动回收redis 回收策略当内存使用达到了设置的maxmemory 会触发回收策略lru最近最少使用页面置换算法(Least Recently Used),也就是首先淘汰最长时间未被使用的volatile-lru尝试回收最长时间未被使用(LRU),但仅

2022-02-08 16:05:42 559

原创 redis-订阅发布、事务

文章目录redis订阅发布 pub/subredis事务redis订阅发布 pub/subredis的list的blpop可以实现类似单播的效果,redis本身也提供了发布订阅模式以实现广播的效果PUBLISH channel message 向指定频道发送消息SUBSCRIBE channel [channel ...] 订阅频道redis事务redis的事务的原子性不同于mysql,它的单条指令具有原子性,但在事务中的一系列指令不具有原子性,即事务中的某一条指令出错不会回滚,会继续执行。M

2022-02-08 14:13:43 856

原创 redis数据类型

文章目录redis常用数据类型1、stringstring数值bitmap2、list3、hash4、set5、zsetredis常用数据类型这里只说常用的几种数据类型,redis是以k v键值对的形式存储数据,数据类型针对的都是v来说的。redis数据是以字节存储的通过type命名可查看key的类型,object encoding查看key内部存储数据的类型1、stringstring又可以具体分为string,数值,bitmap三种stringvalue是string类型,type 查看k

2022-02-07 15:07:24 1105

原创 Linux常用命令记录

linux命令

2022-01-11 11:16:19 757 3

原创 Docker之网络

docker网络

2022-01-10 14:31:49 1341

原创 docker之数据卷volume

文章目录1、容器与宿主机2、容器与容器之间1、容器与宿主机首先找到docker的工作目录:/var/lib/dockervolumes目录下启动一个tomcat容器docker run -d -p 8080:8080 -v tomcat:/user/local/tomcat/webapps --name tomcat_volume tomcat1、如果使用的数据卷不存在,也就是/var/lib/docker/volumes没有tomcat会自动创建将容器内部/user/local/tom

2022-01-07 15:06:47 1817

原创 shardingjdbc简单使用读写分离

文章目录1、只使用读写分离2、读写分离+分库分表首先需要搭建好数据库主从复制环境1、只使用读写分离数据库一主两从搭建好,master、slave1、slave2配置文件:spring: shardingsphere: datasource: names: master,slave1,slave2 master: type: com.zaxxer.hikari.HikariDataSource jdbc-url: jdbc:mysq

2021-12-28 16:29:55 280

原创 shardingjdbc简单使用之五种分片策略

文章目录1、inline(行表达式)2、standard3、hint4、complex5、none上源码:@Getter@Setterpublic class YamlShardingStrategyConfiguration implements YamlConfiguration { private YamlStandardShardingStrategyConfiguration standard; private YamlComplexShardingSt

2021-12-27 17:02:11 4321

原创 shardingjdbc简单使用之分库分表综合

·1、shardingjdbc简单使用之分库上一篇博客是将分库分表分开来使用的,本文将把分库分表结合起来使用一下同样创建两个数据库并分别创建两张表字段属性yml配置文件:spring: shardingsphere: datasource: names: db1,db2 db1: type: com.zaxxer.hikari.HikariDataSource jdbc-url: jdbc:mysql://localhost:

2021-12-27 10:04:26 1023

原创 shardingjdbc简单使用之分库分表

@ [TOC]分库shardingjdbc作为shardingsphere中的一部分,提供了分库分表、读写分离、数据治理等功能分库分表分库就是按数据库来分:将不同或者相同结构的表分别放在不同的数据库中(例如用户表和订单表放在不同的库)分表就是按表来分:将相同结构的水平拆分成多个不同名称的表(例如将user表分为user_0、user_1…)...

2021-12-27 09:28:06 1344

原创 elasticsearch之聚合

elasticSearch聚合

2021-12-15 16:38:54 1852

原创 elasticSearch之查询细节

bool查询评分{ "query": { "bool": { "should": [ { "match": { "title": "Brown fox" }}, { "match": { "body": "Brown fox" }} ] } }}评分方式:它会执行 should 语句中的两个查询。加和两个查询的评分。乘以匹配语句的总数

2021-12-14 16:32:24 1651

原创 shell学习-(数值比较、文件比较、字符串比较)

数值比较格式: 数值1 -lt 数值2-lt:小于-gt:大于-le:小于等于-ge:大于等于-eq:等于-ne:不等于例子:a=12b=10if [ $a -lt $b ]then echo "小于"else echo "大于或等于"fi结果大于或等于文件比较linux下文件夹和文件都称为文件-d:判断文件是否存在且为文件夹-f:判断文件是否存在且为文件-e:判断文件是否存在-r:判断文件是否存在且可读-w:判断文件是否存

2021-12-02 16:51:06 323

原创 shell学习01-数组

数组普通数组赋值1、声明的时候赋值array_1=('a' 'b' 'c' 'd')2、声明后进行赋值array_2=()array_2[0]='a'array_2[1]='b'关联数组与普通数组的不同在于它的索引是自定义的,·声明方式也不同declare -A array_3array_3=([name]='zhangsan' [age]=18)array_3[sex]='female'普通数组取值${array[索引]}:通过索引取一个值${array[@]}:通

2021-12-02 16:06:58 508

原创 shell学习01-输出和输入(echo read)

echo命令echo作为基础的输出命令:基本的输出用法[root@VM-0-17-centos 01]# echo "aaa"aaa[root@VM-0-17-centos 01]# 加参数-n:不换行[root@VM-0-17-centos 01]# echo -n "aaa"aaa[root@VM-0-17-centos 01]# -e:开启转义默认不会转义一下字符:\t:空格\b:删除一个字符…还有很多默认输出是左对齐[root@VM-0-17-centos 0

2021-12-02 14:41:34 926

原创 lambda函数引用学习记录

lambda以及函数引用的浅谈

2021-12-01 15:14:37 296

原创 elasticSearch之ik分词器

安装好ik分词器后,可以测试分词效果分词器包括两种:ik_smart、ik_max_wordik_smart:GET _analyze{ "text": "中华人民共和国国歌", "analyzer": "ik_smart"}会将"中华人民共和国国歌"分成"中华人民共和国"、“国歌”ik_max_word:分词的细粒度更高GET _analyze{ "text": "中华人民共和国国歌", "analyzer": "ik_max_word"}结果:{ "

2021-11-26 17:07:50 1742

原创 elasticSearch之查询

查询(term):被查询词不会被分词,作为关键字查询GET /users/_doc/_search{ "query": { "term": { "name":{ "value": "张三" } } }}范围查询(range)GET /users/_doc/_search{ "query":{ "range":{ "age":{ "gt": 20, "lt": 30

2021-11-26 13:17:18 423

空空如也

空空如也

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

TA关注的人

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