自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

chenyl

只有把命运掌握在自己手中,从今天起开始努力,即使暂时看不到希望,也要相信自己。因为比你牛几倍的人,依然在努力。

  • 博客(168)
  • 资源 (13)
  • 问答 (1)
  • 收藏
  • 关注

原创 Redis系列

Redis数据持久化Redis集群模式Redis实现分布式锁

2021-11-08 15:26:35 114

原创 linux常用命令

1 查看进程查看:ps -ef | grep 进程名杀死:kill -s 9 进程ID2 文件文件夹删除文件夹:rm -rf 文件夹名删除文件:rm -f 文件名创建文件夹:mkdir 文件夹名查看端口号占用netstat -tunlp |grep 端口号...

2019-07-24 17:39:42 125

原创 MySQL多版本并发控制(MVCC)

为了提高并发性能MySQL、Oracle等数据库等关系型数据库都实现了多版本并发控制-MVCC(Multi-Version Concurrent Control),由于没有统一的实现标准,它们的实现机制并不相同。可以认为MVCC是行级锁的一个变种,但是在大多数情况下避免了加锁,所以开销更低。虽然实现机制有所不同,但是大多实现了非阻塞的读操作,写操作也只是锁定了必要的行。MVCC的实现,是通过保存数据某个时间点的快照来实现的。也就是说不管执行多长时间,每个事务看到的数据时一致的。根据事务开始时间的不通,每

2021-12-20 15:28:16 778

原创 Redis数据结构-简单动态字符串SDS(simple dynamic string)

Redis系列文章目录1. 使用场景2. 为何使用SDS代替C字符串2.1 C字符串缺点2.2 更加完善的SDS2.2.1 定义2.2.2 SDS针对C字符串的升级1. 使用场景如果是不需要修改的字符串常量,使用C原生字符串,如:打印日志如果需要修改就使用SDS2. 为何使用SDS代替C字符串2.1 C字符串缺点不记录自身长度,每次获取都要计算,直到遇到代表字符串结尾的空字符串为止,时间复杂度为O(n)由于不记录自身长度,在字符串拼接时如果不提前分配内存就会造成溢出频繁的对字符串进行

2021-12-06 11:06:30 1106

原创 数据库和SQL

本系列目录文章目录什么是索引?MySQL单个索引最多包含多少列?如何获取SQL执行计划?说下explain中type含义?性能由好到差怎么区分?在不同的 MySQL 引擎中,count(*) 有不同的实现方式你知道哪些场景下索引会失效?数据库事务ACID数据库常见的并发异常SQL标准为事务定义了不同的隔离级别,从低到高依次是谈谈对数据库索引的理解谈谈聚集索引和非聚集索引SQL优化什么是索引?MySQL单个索引最多包含多少列?索引(Index)是帮助MySQL高效获取数据的数据结构。索引是一种单独的、物

2021-11-25 16:52:58 730

原创 多线程

本系列目录文章目录进程与线程并发与并行的区别是什么你知道那些并发容器?什么是阻塞队列?阻塞队列常用的应用场景?Java里有哪些阻塞队列线程状态wait、sleep、yield、join、interrupt线程间通信方式主存和工作内存交互时虚拟机保证的天然原子性操作有哪些谈谈volatile关键字synchronized关键字原理乐观锁与悲观锁乐观锁出现的问题互斥同步和非阻塞同步CAS原理ReenterantLock和synchronized关键字对比CopyOnWriteArrayList 原理进程与线

2021-11-12 17:04:05 526

原创 编程题目录

1步2步走台阶

2021-11-11 11:37:38 366

原创 1步2步走台阶

题目一次走一步或者两步走完台阶,一共要多少种方法分析从上图可以看到规律,到第n个台阶时,要么从n-1台阶走一步到达,要么从n-2个台阶走两步到达,即前一台阶和前两台阶走法的和,用公式表达:f(n)=f(n-1)+f(n-2)解题方法1递归,由于每次都要完全计算,层层计算,台阶增多时间复杂度指数增加,效率低下static int f(int n) { if (n == 1) { return 1; } if (n == 2) { retu

2021-11-11 11:36:58 554

原创 Redis中对象

Redis系列文章目录1. 概念2. 类型3. 对象的底层编码3.1 字符串4. 类型检查和命令多态4.1 类型检查的实现4.2 多态命令实现1. 概念Redis使用对象表示数据库键和值,每创建一个键值对,至少创建了两个对象,键对象和值对象。每个对象用redisObject表示,该结构中有三个和保存数据有关的属性type、encoding、ptrtypedef struct redisObject{ //类型 unsigned type:4; //编码 unsigned encoding:4

2021-11-08 17:35:06 648

原创 Redis数据持久化

Redis数据持久化分为RDB和AOF两种方式1. RDB通过保存键值对,是一种压缩后保存在硬盘上的二进制文件,在启动时只要存在rdb文件就加载数据。备份有两种执行方式:手动执行,根据配置定时执行1.1 手动执行通过命令SAVE,整个过程阻塞Redis进程1.2 定期执行通过命令BGSAVE,派生一个子进程执行保存工作,伪代码如下:def SAVE(): #保存rdb文件 rdbSave() def BGSAVE(): #创建子进程 pid = fock() if pid == 0

2021-11-05 18:58:11 270

原创 Redis实现分布式锁

1. 基于setnx命令实现加锁:setnx(lock_key,val),根据返回结果若值设置成功,则key不存在,加锁成功,反之key已经存在,加锁失败。解锁:del(lock_key)死锁问题:线程1获取锁成功,在未执行完任务时挂掉,没有显示的释放锁,那么其它线程就永远无法获取改锁造成死锁。所以需要设置过期时间,可以利用expire命令,但是setnx和expire命令是两个动作无法保证加锁操作原子性。还有个问题,假设线程1设置锁成功,但是任务没有执行完时锁已经超时,此时线程2抢占了锁,然后线

2021-11-05 11:25:28 248

原创 Redis集群模式

1. 主从模式最简单的一种集群方式,集群中分为master数据库和slave数据库,master可以提供读写服务,slave只能提供读服务,所以一单master关掉之后,集群就变成了了只读服务了2. 哨兵(sentinel)模式由于主从模式存在一大弊端,主节点挂掉之后无法对外提供写服务,哨兵模式出现了。哨兵模式由哨兵集群和redis集群组成,特点是:哨兵集群只负责监控redis集群,不提供读写服务当master挂掉时,sentinel会选举一个新的master,此时服务会停顿客户端只需要连接

2021-11-04 17:28:38 367

原创 Java中高级问题整理-中间件

本系列目录文章目录Redis哨兵模式1. 哨兵模式搭建2. Java中使用哨兵模式redis使用场景你知道redis哪些高级功能?为什么要使用消息中间件MQAMQP messaging 中的基本概念Kafka特点Kafka使用场景kafka中的 zookeeper 起到什么作用kafka启动了一个broker,可以设置多个partition吗?可以设置多个副本吗?为什么为什么要使用Elasticsearch?全文搜索(Full-text Search)倒排索引(Inverted Index)ES基本概念E

2021-11-02 09:30:43 927

原创 令牌桶限流-java实现

令牌桶的容量是c(个),令牌以速度r(个/秒)均匀的放入桐中,上个请求的时间为at(时间戳),上个请求后剩余的令牌数目为w(个),现在有个请求b对象进来了,现在请求的时间bt=now(),伪代码如上图,其中wb代表从at到bt时间段内产生的令牌数,产生的令牌数加上上次剩余的令牌数是不能大于桶容量的Java实现代码:import java.util.HashMap;import java.util.Map;import java.util.concurrent.TimeUnit;public c.

2021-10-26 11:33:24 1284

原创 Java中高级问题整理-数据结构和算法

本系列目录文章目录二分法查找贪心算法分治算法常见的两种分支限界法矩阵连成问题回溯法二分法查找算法:二分法查找适用于数据量较大时,但是数据需要先排好顺序。主要思想是:(设查找的数组区间为array[low, high])确定该区间的中间位置K将查找的值T与array[k]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。区域确定如下:如果a.array[k] > T 由数组的有序性可知array[k,k+1,……,high] > T,故新的区间为array[

2021-10-25 15:23:33 196

原创 Java三千问

Java中高级问题整理(一)Java中高级问题整理(二)

2021-10-25 14:42:16 209

原创 Linux如何通过进程ID找到Redis目录

找到redis的pidps -ef|grep redis进入进程目录cd /proc/9451查看目录ls -ail

2021-10-20 16:39:21 252 1

原创 Navicat通过代理远程连接数据库

如果本地无法直接连接某个远程数据库,就可以通过配置代理/跳板机方式进行连接。环境现状无法直接连接的远程数据库(DB)ip:47.xx.56.156用户名:root密码:root可以连接到远程数据库的服务器(SERVER)ip:10.xx.12.101用户名:root密码:xx*****连接使用Xshell配置好SERVER用户名密码,使其可以登录配置隧道,然后点击: 确定–>连接本地连接远程数据库连接中可能报错:1251 client does not s

2021-10-19 17:24:41 5881

原创 arthas简单使用

Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!是否有一个全局视角来查看系统的运行状况?有什么办法可以监控到JVM的实时运行状态

2021-10-19 10:21:57 161

原创 springboot RabbitMQ TLS/SSL windows配置

一定要注意erlang和rabbitmq的版本配套,查看配套下载rabbitmq早起版本要去github,网速不是很好,可以直接下载:windows地址:https://github.com/rabbitmq/rabbitmq-server/releases/download/vversion/rabbitmq−server−{version}/rabbitmq-server-version/rabbitmq−server−{version}.exe,如:https://github.com/ra.

2021-10-14 16:53:26 1381

原创 用线程池、缓存技术提升数十倍接口性能

刚刚,现网发来急报,某新增数据接口请求超时了,功能无法使用。What? 该系统已经上线多年,为何现在才发现此问题呢?再次请求改接口,分析日志发现,虽然前端请求已经超时,但是后端服务还在坚持不懈、任劳任怨的努力干活。一看处理时间,我靠,25分钟左右才处理完成,是可忍,孰不可忍!领导大手一挥,小C,这个问题你速速解决掉。事关现网,接到命令的我丝毫不敢怠慢,马上开始了本次攻关之旅首先,询问了引发下此故障的原因,是因为操作人员在本次操作中导入了10000数据,不难想象,问题肯定就出在这10000条数据上。接着,

2021-08-07 11:06:36 208

原创 如何提高网站的并发能力

一 、服务器服务拆分利用微服务技术将服务进行拆分,将业务分散到不同的服务中,进行服务熔断,保证核心功能可用,及时有部分非核心服务宕机,依然可以提供主要服务分布式技术将服务部署多份实例,使用负载均衡分散单个节点压力缓存技术使用内存数据库,如redis对热点数据进行缓存,提高响应速度,服务对数据库的访问频率,提高业务处理速度代码优化对代码进行优化,如:删除多余无用业务逻辑;看循环中的查询等业务能否提取到循环外;使用ThreadLocal缓存对单次请求数据进行缓存;对不可变对

2021-07-29 14:54:31 461 1

原创 如何自定义springboot starter?2分钟就够了!比凣凣还快!

在使用springboot starter时简直不要太爽,只需要简单引入pom包,配置一下配置文件就可以了,配置时还有文字提示,怎么做到的?实际开发中,如果我们自己也自定义starter,代码逼格瞬间飙升。Swagger使我们后端开发的一倚天剑,下面就通过实际代码演示一下如何自定义Swagger2 starter1. 引入maven依赖<dependencies> <dependency> <groupId>org.springframewor

2021-07-23 14:53:17 175 2

原创 还在用jdk那鸡肋的观察者模式?五分钟学会完美的观察者模式

1. 前言如果某个对象的改变会引起其它很多对象的改变,就可以用观察者模式。观察者模式定义了对象之间一对多的关系,当一个对象改变后,其他对象都会收到通知2. 实现一个观察者模式有这样一个场景:已经可以预约新冠疫苗了,丈八附近的几千人都订阅了丈八社区公众号,等到疫苗批次(第一针、第二针、第三针)到了之后,这些人都会收到打疫苗通知,然后去打疫苗或者懒得去打。这里面丈八社区就是被观察者(Subject),打疫苗的人就是观察者(Observer)。1. 定义主题接口/** * @author yulin.

2021-07-20 14:58:16 316

原创 SQL/shell将Excel数据导入到MySQL数据库中

最近对接友商几个接口,有个接口需要友商提供数据,友商懒得要死,直接说通过线下发数据,他给我们发个excel让我们到文件里面找数据。这对于系统来讲简直没法用。我们只能先将它们发的数据同步到数据库中。如何将Excel数据同步到数据库中呢?网上搜了下,有两种方式。借助Navicat导入向导功能,将.csv文件导入。使用sql导入如何使用sql导入?假如导入一个用户表,对应字段为:username、phone、address。新建一个数据表customerCREATE TABLE `custom

2021-06-29 18:28:58 2023 2

原创 分布式事务框架seata快速入门-seata的使用(二)

1. 引入依赖<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-seata</artifactId></dependency>2. 配置bootstrap.yml加入以下配置seata: enabled: true service: #business-servi

2021-06-18 14:23:16 346

原创 分布式事务框架seata快速入门-seata的搭建(一)

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。1 安装下载安装包:点击下载上传到linux,解压,解压后目录:bin conf lib LICENSE logsbin: 存放启动脚本conf: 存放配置文件logs: 存放日志2 修改配置文件修改file.conf这里设置seata存储模式为db,即数据库,同时修改数据库配置,将

2021-06-17 17:57:08 1278 6

原创 MySQL环境常见错误

1. MySQL-1251-Client does not support authentication protocol requested by server;alter user ‘your username’@’%’ identified with mysql_native_password by ‘your passwd’flush privileges;

2021-06-05 16:28:39 50

原创 线上docker服务频繁自动重启解决过程

1 原因分析线上配置的重要配置参数为:最大堆内存最小堆内存docker内存2G2G2G可以看到堆内存和docker配置的内存一样大。docker内存分配=docker使用+JVM堆使用,因为JVM感知获取不到docker内存限制,docker限制内存为2G的话,能够分配给JVM堆内存必然小于2G,如果java需要申请2G内存的话必然无法通过,这时候docker进程会被宿主机杀死,docker容器就会不断重启2 如何解决为了适配docker,java10引入参数-XX:

2021-05-13 17:18:20 5526

转载 最全干货:从写简历,到面试、谈薪酬的那些技巧和防坑指南

原文地址:https://mp.weixin.qq.com/s/6pgIo1rrqH6WQOZLv_yhIw读者大大们好,好几天没更新了。一方面因为这几天工作忙,占了写作的时间。另一方面是在准备这篇文章各种素材,今年是最难求职年,我希望通过这篇文章能帮大家提高求职成功率。这篇文章分为简历篇、面试篇、谈薪酬篇,包括了找工作过程中各个环节的技巧和防坑指南。1. 简历篇如果把自己看成一个产品,那么简历就是说明书。写简历看似简单,想写好实则不容易。一份好的简历能帮你在一堆简历中脱颖而出。以前

2021-04-20 15:24:25 202

原创 Java中高级问题整理(二)

文章目录1. 分布式分布式锁应该具备哪些条件数据库分布式锁redis分布式锁1. 使用setnx命令2. 使用set(locl_key,val ,expire_time,NX)命令Zookeeper分布式锁1. 获取锁2. 释放锁分布式事务:2PC(two phase commit)两阶段提交1. 概念2. XA解决方案2. 微服务SpringCloud原理eureka原理zookeeper为何能作为注册中心?说下大概实现思路?还有什么常见使用场景?Hystrix原理Hystrix的内部处理逻辑Zookee

2021-04-15 11:35:40 605

原创 Kafka常见的问题

1. Consumer的容灾能力是怎样体现的?会带来什么问题?容灾能力:pull拉取消息,并且保存消费具体位置,当消费者宕机恢复上线时可以根据之前保存的消费位置重新进行消费,消息不会丢失。带来的问题:当Consumer消费了消息,但是在保存消费位置的前一瞬间宕机了,重启服务时就会接着上次保存的位置重新消费,造成消息重复消费2. Kafka中的角色若干procuer若干consumer若干broker一个zookeeper集群3. 主题和分区关系时怎样的?同一主题在不同分区保存的消息一样吗

2021-04-14 10:17:42 83

原创 kafka发送消息时弄丢消息怎么办

1. 调整producer的消息确认参数“acks”acks为1时表示只保证leader写入成功,假如leader写入成功后还未将消息同步到follower副本便发生崩溃,会造成消息丢失acks为0时表示生产者只管发送,不管broker是否收到消息,消息丢失概率更大acks设置为-1或者all表示leader以及所有副本都要写入成功,此种情况下还可能会丢失,如果min.insync.replicas参数值为1的话,此时ISR只有一个leader副本,此时和acks为1的效果一样。综上,如果要保

2021-04-12 16:39:26 109

转载 Spring 定时任务之 @Scheduled cron表达式

原文出处,优化了文章格式,提升了阅读体验1.一个基于Spring boot的一个demo:Java配置中开户对Scheduled的支持import org.springframework.context.annotation.Configuration;import org.springframework.scheduling.annotation.EnableScheduling;@Configuration@EnableSchedulingpublic class ScheduleCon

2021-01-29 09:31:01 169

原创 Docker常用的命令

拉取镜像docker pull ubuntu运行命令 rundockerrun-i-t-d–name myubuntuubuntu:15.10/bin/bash生成容器允许你对容器内的标准输入 (STDIN) 进行交互在新容器内指定一个伪终端或终端后台运行指定容器名称镜像名:镜像tag放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。查看运行中容器docker ps查看docker中所有容器,包含停止运行的

2021-01-28 11:07:39 88 1

原创 解决windows10没有Hyper-V

将下面命令新建一个cmd可执行文件双击,等待安装完毕,最后输入Y重启电脑pushd "%~dp0"dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txtfor /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"del h

2021-01-09 12:38:14 1069

原创 Activity工作流开发简单介绍

1. 工作流表由图中可以看到,依赖中已经集成了mybatis框架,在第一次初始化流程引擎(ProcessEngine)时,会自动创建24张表(图示版本)。act_evt_log,act_ge_bytearray,act_ge_property,act_hi_actinst,act_hi_attachment,act_hi_comment,act_hi_detail,act_hi_identitylink,act_hi_procinst,act_hi_taskinst,act_hi

2020-09-18 10:40:48 1746

原创 Kafka 消息丢失和消息重复消费

producer 的acks参数值设置为‘0’或者‘1’,不等待服务器确认或者只让leader确认解决方法:将acks的值设置为all或者-1,让leader和followers全部进行确认producer 没有设置失败重试解决方法:根据实际场景将retries参数值设置为正整数consumer poll到消息后还未来的及完全消费,便已经提交解决方法:这种情况是在自动提交的情况下发生的,如果enable.auto.commit值为true,可以根据实际场景将auto.commit..

2020-09-10 11:38:05 1698

原创 Kafka-2.6.0之Consumer

1. 偏移量和消费者位置(Offsets and Consumer Position)Kafka为每个分区(Partition)中每条记录保存一个偏移量(Offset ),offset是记录在分区中的唯一标识,也表示消费者(consumer)在分区中的位置(position)。例如:一个offset 在5的消费者,已经消费了0到4的记录,它的下个消费记录就是5。消费者位置给出了下一个偏移量的大小(在消费者现在处于分区中的位置大小加1),偏移量将在每次调用poll(Duration)方法时更新(当该方法返

2020-09-10 11:09:01 327

原创 Kafka-2.6.0之Producer

1. 简单请求,异步Properties props = new Properties();props.put("bootstrap.servers", "localhost:9092");props.put("acks", "all");props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");props.put("value.serializer", "org.apache.kaf

2020-09-09 14:25:24 161

搭建好的solr 7.5单机版

自己搭建好的solr 7.5.0搜索引擎服务器,是单机版,给予java的,详细文档https://blog.csdn.net/qwqw3333333/article/details/84333510

2018-11-22

网页截图 - Screenshot Extension谷歌插件

网页截图 - Screenshot Extension 超级好用的谷歌截图工具,可以截取滚动屏幕

2018-11-06

尚硅谷周阳老师SpringCloud学习源码

该资源为尚硅谷周阳老师SpringCloud学习的所有模块源码

2018-08-31

尚硅谷周阳老师SpringCloud笔记

该资源为尚硅谷周阳老师SpringCloud的学习笔记,内容很详细

2018-08-31

简单易懂的SpringBoot+Redis整合源码

十分简单易懂的SpringBoot整合Redis源码,里面有详细的注释。

2018-07-27

星外php5.2.17自动安装

本版本为全国首发限制PHPDOS版本,所有win2003,2008系统都可以使用,并安装本版本的PHP时 可以自动限制PHPDOS攻击。(不限星外主机系统用户) 运行攻击代码时,如果你显示了出错信息,就会看到“this code is kill” 采用本版本的PHP安装包后,您不用再关udp,tcp,也不需要启用这类IP策略。 如果已装了旧版本PHP,请先停止IIS,删除旧版本PHP(同时删除win\php.ini),再装上新版本,再启动IIS 如果也装了zend,可以在安装成功新版本PHP后重装zend 特别说下zend重装后要用安全包再点下设置权限,不然有安全问题 包中的dos.php是测试文件,你可以传到一个虚拟主机中运行它, 如果看到提示“没有拦截攻击,拦截攻击无效”,表明拦截功能功能无效。 如果没看到这个提示表明拦截功能生效了。

2018-04-04

基于 MongoDB 及 Spring Boot 的文件服务器的实现

下载文件后,利用gradle进行文件编译下载,启动成功后输入localhost:8080即可

2017-11-24

Postman-linux-x64-5.3.0.tar.gz,Ubuntu下进入解压后文件夹,直接点解Postman就可以运行

Postman-linux-x64-5.3.0.tar.gz,Ubuntu下进入解压后文件夹,直接点解Postman就可以运行

2017-10-15

MySQL5.6.20

精简迷你版MySQL5.6.20,简化到极致,下载后可以直接运行,以下是默认配置端口号:3306,用户名:root,密码:123456

2017-09-13

Zookeeper客户端,资源小方便快捷

Zookeeper客户端,解压后找到Zooinspector\build下的zookeeper-dev-ZooInspector.jar文件,双击打开,然后连接zookeeper服务

2017-09-13

Nginx+Tomcat9搭建负载均衡实例,解压即可运行

解压后启动tomcat,nginx服务器,输入localhost:8888即可运行

2017-08-30

基于spring boot同域名单点登录

基于spring boot同域名单点登录

2017-06-30

spring boot创建项目,实现同域名下单点登录源码

spring boot创建项目,实现同域名下单点登录源码

2017-06-29

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

TA关注的人

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