自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 filebeat->kafka>elk日志采集

/可以防止日志爆盘,将所有标准输出及标准错误输出到/dev/null空设备,即没有任何输出信息。//启动logstash --path.data 指定数据存储路径。查看消费者consumer的group列表。查看kafka中指定topic的详情。查看指定的group。

2023-06-21 09:17:58 986

原创 CompletableFuture常用方法

计算结果存在依赖关系,这两个线程串行化(上一步的运算结果可以传给下一步),计算结果存在依赖关系,这两个线程串行化,接收任务的处理结果,并消费处理,无返回结果。哪个线程计算的速度快就返回哪个线程。对多个线程的计算结果进行合并计算。当前步骤报错,可以继续往下走。当前步骤报错,不会往下执行。

2023-02-06 17:53:16 734

原创 CompletableFuture通用的使用方式

如果计算正确代码执行 whenComplete,计算错误则走 exceptionally。这与vue3.X前端获取接口的使用方式大致一样。假如在某东平台,需要比较多个入住商家卖《java编程思想》这本书,分别卖多少钱。希望的结果是输出,同一个产品在不同商家的价格清单。作用基本一样,只是使用join没有异常检查,而get有异常检查且必须抛出异常。whenComplete 直接获取对应的返回结果。

2023-02-06 14:58:32 261

原创 CompletableFuture入门级别用法

【代码】CompletableFuture基础用法。

2023-02-06 11:52:22 111

原创 java线程相关概念

并发:是在同一个实体上的多个事件,是在一台处理器上“同时”处理多个任务,同一个时刻,其实只有一个时间发生。并行:是在不同实体上的多个事件,是在多台处理器上同时处理多个任务,同一个时刻,大家都在做事情,各做个的事情互相不干扰。

2023-02-06 11:33:03 74

原创 StampedLock邮戳锁

有没有比读写锁更快的锁?:邮戳锁(票据锁)无锁--》独占锁--》读写锁--》邮戳锁StampedLock: 是jdk1.8中新增的一个读写锁,是对jdk1.5中读写锁ReentrantReadWriteLock的优化。stamp 戳记,代表锁的状态。当stamp返回零时,代表线程获取锁失败。并且当释放锁或者转换锁的时候,都要传入最初获取的stamp值。是由锁饥饿问题引出。

2023-02-02 16:13:13 347

原创 ReentrantReadWriteLock可重入读写锁

假设有1000个线程,其中读锁999个,写锁1个,每个读锁要读取10s,这样会造成写锁一直抢不到锁的情况,出现锁饥饿的问题。必须等到读锁释放锁后,获取写锁。因为读的线程特别多,而且读写锁中的读锁是一种悲观锁,没有读完是不会释放的,所以会造成写锁长时间获取不到锁,出现锁饥饿的现象。如果同一个线程持有了写锁,在没有释放写锁的情况下,它还可以继续获取读锁。遵循锁降级次序策略:先获取写锁-再获取读锁--在释放写锁,没有阻塞正常释放锁结束。遵循获得写锁---》再获取读锁---》再释放写锁的次序,写锁能降级成为读锁。

2023-02-02 15:34:28 392

原创 锁消除和锁粗化

锁粗化,JIT 会将首尾相接,前后相邻且都是锁同一个对象的代码块,JIT即时编译器就会把这几个synchronized块合并为一个大块。JIT即时编译器对锁的优化。

2023-02-01 09:05:51 369

原创 synchronized锁的升级

synchronized锁优化的背景用锁能够实现数据的安全性,但是会带来性能的下降无锁能够基于线程并行提升程序性能,带来安全性的下降java5 synchronized默认是重量级锁,java6以后引入偏向锁和轻量锁,java15 逐步废弃了偏向锁锁升级的过程无锁---》偏向锁(一个线程重复请求)---》轻量锁(cas)---》重量锁为什么每个对象都可以成为一个锁?Monitor 可以理解为一种同步工具,也可以理解为一种同步工具,常常被描述为一个java对象。

2023-01-31 15:40:52 265

原创 Oracle获取每个季度的第一天和最后一天精确到秒

Oracle获取每个季度的第一天和最后一天精确到秒

2022-06-07 17:02:24 3324

原创 mysql查询和修改sql语句的执行流程笔记

一条查询sql的执行流程如图:解析树:执行计划中每个字段的含义:EXPLAIN用法和结果分析

2022-03-29 16:17:26 357

原创 redis和数据库的一致性问题笔记

原则:以数据库的数据为标准。分为实时一致性和最终一致性。缓存使用场景更新或者删除数据时 先操作redis还是先操作数据库 更新redis数据,是直接更新还是直接删除? 正常是直接删除del 方案1:先更新数据库,再删除缓存正常情况:全部成功或者第一步失败异常情况:删除redis失败,Redis旧数据解决方案:重试,再删除。可以将删除Redis失败的数据放入mq中,让mq再去删除一次,但是这样中的风险是增加了代码入侵性,不同业务增加不同的队列。也可以解析mysql bo..

2022-03-23 11:33:56 1183

原创 redis命令配置别名步骤

vim ~/.bashrc添加两行:alias redis='/usr/redis-6.0.6/src/redis-server /usr/redis-6.0.6/redis.conf'alias rcli='/usr/redis-6.0.6/src/redis-cli -p 16382'alias rclustercli='/usr/redis-6.0.6/src/redis-cli -h 192.168.19.103 -p 16382'编译生效:source ~/.bashr.

2022-03-23 09:01:38 1036

原创 Redis集群数据分片

一致性hash原理:https://www.cnblogs.com/lpfuture/p/5796398.html一致性hash的缺点:不可复用,java C python 需要重新编写代码。(可用代理的方案解决,如mycat)Redis Cluster虚拟槽:默认16384个虚拟槽(slot可以理解为长度为16384的数组)key的分片:对redis的key进行CRC16的计算,并且对16384进行取模,得到余数是多少就落在哪个槽(节点上面) 先hash后取模每个Redis G

2022-03-21 15:51:20 1633

原创 redis为什么这么快以及持久化策略?

存内存KV:快的最主要原因 请求单线程:请求是单线程,不存在线程的创建销毁,线程上下文切换,线程竞争等问题。 同步非阻塞i/o--多路复用到底什么是多路复用?I/O:网络I/O多路:多个TCP链接(Socket或者Channel)复用:复用一个或者多个线程多路复用:通过一种机制,一个线程能同时等待(监视)多个文件描述符,而这些文件描述符其中的任意一个进入就绪(状态),epoll函数就会返回。类似于高考,同学先在下面答题,老师在讲台上监考,其中一个同学答完卷准备交卷了,需要举手示意(已就

2022-03-18 14:56:14 689

原创 Dockerfile

初时DockerFileDockerfile 就是用来构建docker镜像的构建文件!命令脚本通过这个脚本可以生成镜像,镜像是一层一层的文件,脚本是一个一个的命令,每个命令都是一层#创建一个dockerfile文件,名字建议DockerFile#文件中的内容,命令都是大写的[root@iZ2ze2lmaapzzdwfu3j33hZ docker-test-volume]# vim dockerfile1[root@iZ2ze2lmaapzzdwfu3j33hZ docker-test-vo.

2021-07-10 23:38:51 159 3

原创 docker数据卷

1.数据卷:容器的持久化和同步操作!容器间也可以数据共享。假如使用docker安装mysql,再mysql中存储数据,如果删除容器,那么数据也会随之删除。所以需要数据卷来将mysql中的数据也存在本地的linux系统中,做持久化操作。所以需要容器之间可以有一个数据共享技术。Docker容器中的数据同步到本地,这就是所谓的卷技术。方式一: 直接使用命令挂载 -vdocker run -it -v 主机目录:容器目录 centos /bin/bash将容器中的home目录,同步到本机的/

2021-07-08 22:35:05 129 2

原创 centos7安装docker以及常用命令

1.contos7安装docker官网:https://docs.docker.com/engine/install/centos/2.卸载sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ ...

2021-07-06 09:17:58 124

原创 linux 常用命令

1.拷贝当前行yy 拷贝当前行向下的5行 5yy并且黏贴, 然后按p键2.删除当前行dd 删除当前行向下的5行,5dd3.查找文件中某个关键字,在命令行模式下输入 / ,然后输入想查找的关键字,按n键 查找下一个4.设置文件的行号 :set nu 销毁行号 :set nonu5.跳至文件末尾,G或者shift+g ,回到首行gg6.撤回 按ESC键 然后按u7.快速定位到文件的某一行 比如要跳到第20行 先按esc 在按shift+g...

2021-06-25 17:18:00 57

原创 线程池

作用:减少代码的灵活性,但是提高了稳定性。 线程池大致有以下四种方式实现 //只有一个线程的线程池 ExecutorService executorService1 = Executors.newSingleThreadExecutor(); //返回固定数量的线程池 ExecutorService executorService2 = Executors.newFixedThreadPool(); //创建不限定最大数量的

2020-08-25 16:28:53 104

原创 动态代理模式(JDK自带的实现)

java.lang.reflect.Proxy; 作用:动态生成代理类和对象。 import java.lang.reflect.InvocationHandler; (处理器) 可以通过invoke方法实现对真实角色的访问。 package thread.exmple.dnamicProxy;/** * 动态代理: 抽象角色 */public interface Star { /** * 面谈 */ void confer();...

2020-08-25 01:27:19 169

原创 mysql数据库事务

什么是事务百度百科:数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。维基百科:事务是数据库管理系统(DBMS)执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。哪些存储引擎支持事务?只有InnoDB和NDB数据库的四大特性(ACID)1、原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么全

2020-08-03 15:48:25 129

原创 mysql索引(三)

离散度公式:count(dinstic(column_name)) : count(*)离散度越低,越不适合创建索引表中的数据一共120W,通过EXPLAIN语句分析,在address这个字段上创建索引,还是需要扫描约100W次,与全表扫描的开销差不多,没什么意思。所以不是每个字段都需要创建索引,就算创建了索引对查询效率的提升也不大,反而会浪费存储的空间(因为索引是一种数据结构,是存放在磁盘上面的)。联合索引最左匹配语法:ALTER TABLE emp add INDEXempidx_

2020-07-30 16:17:59 227

原创 mysql索引(二)

多路平衡查找树(B tree)图示节点拥有的子树数量称之为:度关键字数:N度=N+1会产生分裂合并,没有左旋右旋操作。加强版多路平衡查找树B+Tree所有的数据都存放在叶子节点上(可以解决范围查询)叶子节点上加上了下个一个数据的指针,形成了一个有序的链表,所以查询的效率更高。根节点和支节点只存放数据的键值和指针io次数少每个叶子节点大小默认是16kb节点拥有的子树数量称之为:度关键字数:N度=N...

2020-07-30 13:36:13 96

原创 mysql 索引(一)

一、二叉查找树 特点 左子树的节点必须小于父节点 右子树的节点必须大于父节点 查找的速度与树的深度相等 弊端 这种情况称之为------斜树 与单链表的顺序查找没有区别二、平衡二叉查找树 特点 左右子树深度差的绝对值不能超过1 弊端 浪费空间,...

2020-07-30 11:07:43 91

原创 jvm 面试题列举

垃圾回收发生的时机是什么时候?Minor GC,Major GC, Full GC等。Full GC =Minor GC,Major GC,MateSpace GCEden区或者S区的内存不够用了 ---> Minor GC 老年代空间不够用了 ---> Major GC 方法区的空间不够用了 System.gc() 方法, 这个方法只是给jvm下达一个指令,不是调用方法就执行垃圾回收,要等jvm自己去调用。...

2020-07-22 15:16:54 117

原创 JVM 基础笔记(五)JVM参数

JVM参数1.标准参数:不会随着JDK版本的变化而变化 java -version / java -help2.-X 参数 非标准参数:随JDK版本而变动 -Xint3.-XX参数 a-Boolean 类型 -XX:[+/-] name 启动或者停止 b-非Boolean类型 -XX:name=value -XX:MaxHeapSize=100M4.其他参数【-XX参数的变形】...

2020-07-20 16:29:18 147

原创 JVM 基础笔记(四)垃圾回收JDK 1.8

垃圾回收机制确定什么样的对象是垃圾? 应该如何回收【回收算法? 各种垃圾收集器? 各种垃圾收集器的优势劣势,如何选型? 怎么查看垃圾回收的日志文件?

2020-07-17 13:52:10 229

原创 JVM 基础笔记(三)JDK 1.8

1.java虚拟机栈去执行方法的时候到底发生了什么?2.每个线程创建的时候都会创建一个对应的栈,每个方法线被线程调用的时候,会往栈里面压一个栈帧,那么栈帧里面到底是什么?怎么工作的?...

2020-07-16 23:50:01 104

原创 JVM 基础笔记(二)JDK 1.8

01.Method Area(方法区) 特点:方法区只有一个,线程共享的内存区域(线程不安全),生命周期是跟虚拟机一样的。 里面存储的是类信息,常量,静态变量,即时编译器编译之后的代码。 逻辑上是堆的一部分 垃圾回收不太会讨论方法区的垃圾回收 如果方法区满了 会发生 OOM(OOM是一个error 不是异常) 02.Head (堆) 特点:堆只有一个,线程共享的内存区域(线程不安全),生命周期是跟虚拟机一样的。 里面存放的是 类的对象 和数组(数组也是对象...

2020-07-14 23:37:23 152

原创 JVM 基础笔记(一)JDK 1.8

类加载机制理解: 就是将xxxx.class文件交给 JVM去运行

2020-07-14 14:15:24 191

原创 Redis缓存雪崩,缓存穿透和缓存击穿怎么解决?

缓存雪崩含义:redis中大量的热点数据,同时过期了(失效了)。是因为每个key都设置了相同的过去时间expire。如果这个时候并发访问量特别大,所有的请求都会落到数据库层面,给db造成特别大的压力。解决方式:设置过期时间的时候 增加一个 random随机数 热点数据不会变化,永远不会去db请求,可以永久不过期 预更新(定时扫描即将过期的数据 ) 。。。缓存穿透含义:查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询,发现也没有,...

2020-07-13 12:56:05 130

原创 redis5.0 主从配置

一主两从 准备 首先准备三个服务端,安装好redis.参考文档:https://www.cnblogs.com/zdd-java/p/10288734.html 配置redis.conf 文件,如下图daemonize yes 设置为后台启动bind 0.0.0.0 所有的ip都可以访问 如果是默认的127.0.0.1 只能本机访问保证这三台机器都能ping通配置好之后启动redis服务,./redis-cli 进入执行命令窗口 如图: 目标 1...

2020-07-10 11:33:08 919

原创 redis常用五种数据类型----zset类型的基本操作

Redis常见数据类型操作命令详情见http://doc.redisfans.com/ zset有序的集合(不允许元素重复) 基本操作 127.0.0.1:6379> zadd myzset 10 huangzhen 20 zhangsan 30 lisi 40 wangwu 50 zhaoliu //向有序集合中添加元素(integer) 5127.0.0.1:6379> zrange myzset 0 -1 withscores //根据分数正序排列.

2020-07-09 16:01:05 523

原创 redis常用五种数据类型----set类型的基本操作

set无序列表 基本操作 127.0.0.1:6379> sadd myset a b c d e f g //向myset集合中添加这些元素 返回数量(integer) 7127.0.0.1:6379> smembers myset //查看所有的元素1) "a"2) "b"3) "c"4) "d"5) "f"6) "g"7) "e"127.0.0.1:6379> scard myset //查看myset集合的元素总数(integer..

2020-07-09 14:53:13 535

原创 redis常用五种数据类型----list类型的基本操作

list 列表 有序的,可以重复,左边是列头。可以充当队列或者栈。 基本操作 127.0.0.1:6379> lpush queue a(integer) 1127.0.0.1:6379> lpush queue b c //在列表左边添加元素(integer) 3127.0.0.1:6379> lrange queue 0 -1 //查看列表中所有的元素1) "c"2) "b"3) "a"127.0.0.1:6379> rpush queu..

2020-07-09 13:53:01 220

原创 redis常用五种数据类型----hash的基本操作

HASH 哈希存储类型 基本操作 127.0.0.1:6379> hset user name huangzhne(integer) 1127.0.0.1:6379> hmset user age 11 addr chine tel 13455552222OK127.0.0.1:6379> hget user name"huangzhne"127.0.0.1:6379> hmget user age addr tel1) "11"2) "chine..

2020-07-09 11:06:32 193

原创 redis常用五种数据类型----String类型的基本操作

基本命令的使用参考: http://redisdoc.com/ String的存储类型 INT 整型 Float 浮点型 String 字符串127.0.0.1:6379> select 1OK127.0.0.1:6379[1]> set name hzOK127.0.0.1:6379[1]> get name"hz"127.0.0.1:6379[1]> flushdbOK127.0.0.1:6379[1]> keys *(e...

2020-07-09 10:53:48 341

原创 Lua脚本的基本使用

使用Lua脚本的好处 一次性发送多个命令,减少网络开销。(是多个reids命令的集合,不用每次都去建立连接) 原子性 (redis会将这个lua脚本认为是一个整体去执行,不会被打断,所以保证原子性) lua 文件复用 (命令非常多,可以放在一个文件中,这样其他的redis也可以调用,使其复用) 基本用法 127.0.0.1:6379> eval "return 'hello world'" 0"hello world"127.0.0.1:6379> k...

2020-07-09 09:28:50 5921

原创 redis 事务基本用法

基本用法127.0.0.1:6379> set hz 1000OK127.0.0.1:6379> set wangdan 1000OK127.0.0.1:6379> multiOK127.0.0.1:6379> decrby hz 100QUEUED127.0.0.1:6379> incrby wangdan 100QUEUED127.0.0.1:6379> exec1) (integer) 9002) (integer) 1100127.

2020-07-08 16:47:32 298

docker-compose.yml 容器编排配置文件 mysql + redis + springboot

编排集群,用一个配置文件定义一个多容器的应用。使用一条命令安装这个应用的所有依赖。适用于运维人员。java运维人员。

2022-08-25

Dockerfile 基于java8常规的写法

Dockerflie 打包镜像相关配置文件,使用 命令 docker build -t 镜像名字:版本 . 命令后面必须加 "," 。试用于 java运维相关人员。 将写好的java代码 先手打包成 jar,然后使用docker 通 docker build -t 镜像名字:版本 . 命令构建成镜像,构建成功 使用 docker images 查看。 使用 docker run -d -p 宿主机端口:容器内端口 镜像id /bin/bash 启动镜像,后续也可以使用 docker-compose 进行容器编排,使相关的镜像按照顺序安装应用的所有依赖和一键启动,停止。

2022-08-25

Servlet上传代码和架包

上传文件的代码,架包,说明,还有一个例子,拿来直接就能使用,仅限于初学者。

2017-12-11

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

TA关注的人

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