自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 驾驭云端之风1——Spring Cloud微服务架构实践指南

SpringCloud组件nacos。

2023-02-27 22:43:41 397 1

原创 【高并发-用户中心】读多写少的系统如何优化

高并发之用户中心,更多的是表设计。

2023-02-16 00:09:19 355

原创 Redis面试题(三):持久化文件与淘汰策略

Redis持久化及原理,淘汰策略

2022-07-08 17:23:14 216

原创 Redis面试题(二):单线程的Redis为什么这么快

Redis的IO多路复用主要组成部分:套接字,I/O多路复用程序,队列,事件分派器,事件处理器图片套接字:通常指的是封装了ip和port的结构体。主要对进程间通信或者网络通信的抽象。比如我们建立一个tcp连接,本质上就是两端都有一个套接字,记录了源ip,端口和目的ip,端口。也像一个类,里面有这些属性。一个套接字可以理解成是一个服务端(客户端)I/O多路复用程序:多路:多个客户端,复用:一个线程。比如我们模拟服务器处理1024个客户端请求,根据TCP的三次握手请求,服务端和客户端才会成功建立链接,此时

2022-07-04 14:45:42 149

原创 Redis面试题(一):常见的底层结构

Redis面试题(一):常见的底层结构Redis面试题(一):常见的底层结构Redis面试题(一):常见的底层结构Redis面试题(一):常见的底层结构1:Redis的数据都是存在内存中的。2:Redis是以键值对的形式存储数据,键只能是字符串对象,而值对应着五种常见的数据结构:string,list,hash,set,sorted-set。3:Redis支持主从同步,哨兵模式,Redis集群来保证高可用。4:Redis支持持久化技术,删除策略,Lua脚本,事务等功能。图片图中的RedisObjec

2022-06-29 16:06:40 707

原创 JVM面试题(二):类加载和JVM内存模型

原文详细地址:JVM面试题(二):类加载和JVM内存模型原文详细地址:JVM面试题(二):类加载和JVM内存模型原文详细地址:JVM面试题(二):类加载和JVM内存模型原文详细地址:JVM面试题(二):类加载和JVM内存模型欢迎关注我的公众号【意姆斯Talk】来聊聊Java面试,对线面试官系列持续更新中!加载主要是通过类加载器来加载该类,如下BootstrapClassLoader:位于/lib目录ExtraClassLoader:位于/lin/ext目录ApplicationClassLoade

2022-06-26 11:29:12 79

原创 JVM面试题(一):垃圾收集器和垃圾回收理论

原文详细地址:JVM面试题(一):垃圾收集器和垃圾回收理论原文详细地址:JVM面试题(一):垃圾收集器和垃圾回收理论原文详细地址:JVM面试题(一):垃圾收集器和垃圾回收理论原文详细地址:JVM面试题(一):垃圾收集器和垃圾回收理论欢迎关注我的公众号【意姆斯Talk】来聊聊Java面试,对线面试官系列持续更新中!标记-复制算法图片概念:将内存区域划分成两块,一块空闲区域,一块存储区域,在存储区域中标记要回收的对象,然后把未标记(存活)的对象都移动到空闲区域,每次回收都是对一块区域中的内存进行回收。缺

2022-06-23 16:53:33 185

原创 并发(四):ReentrantLock之条件等待队列

详细文案可以看下链接, 关注一波, 后期分享经典面试题并发(四):ReentrantLock之条件等待队列并发(四):ReentrantLock之条件等待队列并发(四):ReentrantLock之条件等待队列并发(四):ReentrantLock之条件等待队列并发(四):ReentrantLock之条件等待队列条件等待队列在并发(三):ReentrantLock类中,谈到了锁,每个ReentrantLock锁对应很多个条件等待队列,而synchronized锁只存在一个条件等待队列。//图中的Reen

2022-06-21 21:45:33 496

原创 并发(五):细讲JAVA线程池

详细文案可以看下链接, 关注一波, 后期分享经典面试题并发(五):细讲JAVA线程池并发(五):细讲JAVA线程池并发(五):细讲JAVA线程池并发(五):细讲JAVA线程池本模块的中心不是单线程,单线程就是:一个线程,对应执行的任务,线程只有一个,可是处理的任务可以有很多,只有累死的一头牛(线程),没有耕坏的地(任务)。单线程的生命周期:创建-执行-销毁,最影响性能的是:创建和销毁,而线程池可以很好的帮我们管控线程,监控线程,循环利用线程。线程池的好处:避免频繁的创建和销毁线程,省去这一部分的消耗时间,

2022-06-21 21:43:48 549

原创 并发(二):synchronized关键字

详细原地址并发(二):synchronized关键字详细原地址并发(二):synchronized关键字详细原地址并发(二):synchronized关键字大纲内容设置锁的意义synchronized原理synchronized锁升级问题1:多线程场景下,如何争夺Monitor锁对象?问题2:为什么Java中任意的对象都可以作为锁?上文问题:为什么在DCL单例模式下,加了synchronized锁,代码块退出后,还要禁止指令重排序? 难道不是在持有锁的线程内,等重排序完之后,才会释放锁吗?设置锁的意

2022-06-16 14:16:09 132

原创 并发(三):ReentrantLock类

上文问题:为什么在DCL单例模式下,加了synchronized锁,代码块退出后,还要禁止指令重排序? 难道不是在持有锁的线程内,等重排序完之后,才会释放锁吗?在DCL单例模式下, 使用volatile是保证指令重排序,创建对象分为三步:第一,给对象分配内存空间,第二给对象初始化,第三变量与内存空间建立链接,其中第二第三步不存在数据依赖,固可以重排序,当线程2判断if(instance==null),这个等号是比较内存地址值的,判断当前变量的内存地址值是不是为null,这里就涉及了字节码知识,当store指

2022-06-16 14:06:33 189

原创 并发(一):JMM和Volatile关键字

本文:理论知识偏多, 可自行掌握。JMM是一种抽象思想,是一组规范,定义了程序中每个共享变量的访问方式,JMM是围绕着原子性,有序性,可见性展开的。JMM定义了线程和主内存之间的抽象关系,主内存中主要保存着共享变量,每个线程中都有工作内存,是线程私有的,线程对共享变量的操作必须在工作内存中进行,首先要把变量从主内存中拷贝到自己的工作内存,然后对变量进行操作,操作完后再写回主内存中,不能直接操作主内存中的变量。线程之间的通信必须依靠主内存来进行读写的。1:初始值假设x=0,当线程A从主内存中读取x值时,放

2022-06-16 08:51:39 98

原创 MySQL(六):MySQL常见的问题

MySQL内部支持两种方式排序,filesort和index,走了index说明是走了内存排序,走了filesort说明是文件排序。一般我们用explain执行计划来计算extra字段分析核心字段type:优先级,当前存在system > const > eq_ref > ref > range > index > all,一般all代表走了全表扫描,我们要保证type位于range以上,最好达到ref级别。system: 只有一条语句查询时,比如主键索引, where id=1。ref:普通索引查询。

2022-06-13 22:25:41 219

原创 MySQL(5):让你疑惑的锁案例

上文MySQL(四):锁的原理,讲述每个锁的原理,其中InnoDB独有的行锁,RR级别下,增删改的时候,执行语句时会加上行锁,本文,我们重点讲一下行锁,间隙锁,那为什么在RR级别下,无法解决幻读呢?幻读并发问题带来的问题在RR级别下,普通查询都是快照读,是不会看见其他事务新增的数据,幻读只有在当前读的场景下产生。常见的当前读:InnoDB下加共享锁,排他锁,增删改都会触发当前读,当前读的意思是每次都读取最新的值。排他锁 :select * from… in share mode共享锁:select * fr

2022-06-12 21:11:19 90

原创 MySQL(四):锁的原理

概念:针对于整个DB加的锁,目的是为了全库备份,整个DB只有读操作。MySQL提供了一种全局读锁的方法,保证线程只会读,不会做其他的DML,DDL操作。MVCC机制明显优于全局锁技术,但MVCC需要引擎能提供事务支持,所以只有InnoDB具备MVCC机制,非事务引擎可以尝试使用全局锁来保证隔离性。表锁细分:读锁和写锁。语法:lock tables … read/write,可以使用unlock tables断开客户端释放锁,lock tables …read和select * from table …

2022-06-08 10:37:30 1015

原创 MySQL(三):索引的原理

唯一索引,主键索引,普通索引,change buffer,联合索引

2022-06-06 15:48:58 901

原创 MySQL(二): 事务的隔离性原理

mvcc是什么,事务如何保证可见行,undolog,事务的隔离性

2022-06-02 14:58:08 377

原创 MySQL(一): select和update的执行流程

mysql,redolog,binlog,select语句,update语句,分析器,构造器,执行器,优化器,查询缓存

2022-06-01 11:55:06 1841

原创 高并发场景实战: 线程池,countDownLatch,CompletableFuture混合使用

写在前面: 希望大家从一开始就跟着敲, 收获一定是满满的, 末尾会留公众号,想一起努力的小朋友可以一起加入,由兴趣可一起维护我们共同的公众号。1:项目搭建需要引入的maven//提供线程池,TransmittableThreadLocal两个工具类<dependency> <groupId>com.alibaba</groupId> <artifactId>transmittable-threa.

2021-08-14 15:25:16 2392

原创 RabbitMQ干货讲解二(实战与理论并存)

公众号, 访问有惊喜, 关注不迷路!!目录交换机死信队列延迟队列回退消息备份交换机幂等性优先级队列惰性队列交换机图解概念: P生产者从来都不会直接发送消息到队列里, 都是要先走X交换机. 交换机通过RountingKey来绑定队列, 然后推送值队列, 相当于一个中转站之前我们都是选择的默认交换机, ““代表默认的意思.channel.basicPublish(””, QUEUE_NAME, null, MESSAGE.getBytes());绑定(bindings

2021-07-27 23:40:36 364 1

原创 RabbitMQ干货讲解一(实战与理论并存)

概念MQ,消息队列, 队列的特征:先进先出, 一般在实战中用于上下游传递消息。比如服务A通过消息队列向服务B发送消息,供服务B消费。 在没有MQ中间件时期,大部分都是接口互调,在被调用方返回值中存放需要的数据,或者回调函数提示success,failed;三大特点流量消峰:假设下单系统极限是100次/秒,当超过了100,服务器宕机,使用消息队列mq做缓冲,可以将100以后下单的访问请求先存入到mq中,等待被消费。 缺点:用户体验可能差一点,总比服务器挂掉好。 例子:高峰期下单时,转圈圈。

2021-07-08 16:53:07 696

原创 设计模式之策略模式(实战+大白话)

策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。目录概念以及核心图解,优缺点策略模式在项目中实际应用场景结语正文开始概念以及核心图解, 优缺点。 review之前写的代码, 发现两大问题,分别举出反例 第一:代码中if-else使用及其频繁。(图一) 第二:整体的代码结构十分混乱,毫无美感可言。 (后期会讲述领域驱动设计DDD,一个程序员不会DDD,基本可

2021-07-06 12:20:29 225

原创 设计模式之单例模式

1:单例模式理论知识1.1:特点构造函数私有化(private),防止其他类直接new对象。单例类只有一个实例,可以理解只在单例类中new了一个对象提供一个外部调用的公共方法,获取到唯一的实例1.2:优点省去在其他类中new对象,降低了系统内存的使用频率,减轻GC压力避免了对资源的重复占用2:单例模式之恶汉模式public class singleModel{ /** * 类和方法分为:实例变量 实例方法 类变量,类方法 * 被static修饰的都是属于类的, 类所有的实例

2021-06-22 16:44:44 171

原创 Java线程池核心方法源码解析(附带流程图), 字字注释,一起交流

线程池核心方法源码1.execute(Runnable command)1.1源码public void execute(Runnable command) { //1.判断当前任务是否为空, 若为空, 则抛出空指针异常 if (command == null) throw new NullPointerException(); /* * Proceed in 3 steps: * one. 如果运行的线

2021-03-31 11:58:24 162

原创 Java多线程之线程池面试无压力(一)

1. 概念1.1单线程的优缺点本文的中心不是单线程, 一句话带过: 只有累死的牛(一个线程), 没有耕坏的地(任务)优点: 毫无疑问, 提高性能缺点: 创建线程, 会频繁的去访问操作系统, 又要自己手动创建和销毁, 浪费资源, 没有一个上限的束缚, 影响性能, 浪费的是创建和销毁的这个时间!!!1.2 线程池的简述作用: 限制了一个线程数量, 对线程进行统一的分配,调优和监控优点和缺点优点: 降低资源消耗, 提高响应速度, 提高线程的可管理性, 提供定期执行的线程池, 目前没有代替线程池

2021-03-23 22:00:54 131

原创 Spring Cloud Config配置中心 + Spring Cloud Bus消息总线 +Spring Cloud Stream消息驱动

本文章就讲讲搭建, 及三个组件的执行流程总结: 三种统一点都是在yml中配置, 只要配置好, 项目总能跑!!Spring Cloud Config配置中心服务端和客户端两部分, 也是一个独立的微服务应用, 凡是链接上来的也要注册到配置中心上作用: 集中管理配置文件, 不同环境不同配置, 动态化的配置更新解决的问题: 复杂的配置问题, local环境, 开发环境, 测试环境, 预发环境, 线上环境一套集中式, 动态的配置管理设施是不可少的, 一处配置, 处处生效Config(配置中心服务端)

2021-03-08 22:20:15 200 1

原创 解决循环依赖方案

解决循环依赖两种办法:(1)重新设计: 重新设计结构,消除循环依赖。(2)使用注解 @Lazy:一种最简单的消除循环依赖的方式是通过延迟加载。在注入依赖时,先注入代理对象,当首次使用时再创建对象完成注入。一般推荐...

2021-03-05 16:54:24 3831

原创 Gateway的配置讲解(包括maven,yml,filter)

<dependencies> <!--引入 spring-cloud-gateway 依赖 去除了web,act坐标, 防止gateway和web包冲突--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gatew

2021-03-04 22:13:36 803 1

原创 关于json字符串转Java对象, 转Java集合

前台传参: {}形式的数据,使用parseObject,--->json转Java对象 []形式的数据,使用parseArray,--->json转Java集合今天遇到了个坑, 我的需求是将json集合转变成java集合, 前台明明传递的是[]形式的json集合, 后台解密后无论如何转换都报错,异常详情:com.alibaba.fastjson.JSONException: syntax error, expect {, actual string, pos 0, fastjson-v

2021-02-18 13:48:00 462

原创 AES加解密算法之CBC,ECB模式(亲测可用)

找了好多工具类, 下面这个亲测可用, 直接考成工具类使用可在解密网站解析: https://www.ssleye.com/aes_cipher.html代码如下:/** * AES加密解密字符串工具类 * 概述:AES高级加密标准,是对称密钥加密中最流行的算法之一; * 工作模式包括:ECB、CBC、CTR、OFB、CFB; * 使用范围:该工具类仅支持CBC模式下的: * 数据块:128位 * 密码(key):32字节长度(例如:123456789012345678901234567

2021-02-01 11:50:47 2016 2

原创 JWT权限校验小案例SpringBoot+JWT+Redis(轮子拿来用就行)

登录流程图校验流程图工具类太多了,可去码云上直接cv下来,防止重复造轮子码云地址:https://gitee.com/ther661/jwtyml配置和启动类server: port: 8080spring: redis: host: ------------- port: 6379 password: --------- main: allow-bean-definition-overriding: true@SpringBootApplic

2021-01-28 16:05:21 249

原创 解决Push rejected Push to origin/master was rejected问题

在Terminal顺序输入1. git pull origin master --allow-unrelated-histories2.git pull origin master3.git init4.git add .5.git commit -m 'testst'6.git push -u origin master即可解决

2021-01-28 00:22:29 182

原创 插入(Insert)SQL可动态设置字段属性

如图:合理运用动态sql,也可随意控制插入字段信息,代码中只对appVersion和userMobile赋值,<insert id="insertDataPointInfo" keyColumn="id" keyProperty="id" useGeneratedKeys="true"> INSERT INTO data_point_info <trim prefix="(" suffix=")" suffixOverrides=",">

2021-01-26 17:55:37 932

原创 后台解压MultipartFile file,读取解压中的文本信息

方法 private static File unzip(MultipartFile file) throws IOException { byte[] buffer = new byte[1024]; int bufferSize = 1024; File tempFile = null; ZipInputStream zis = new ZipInputStream(file.getInputStream()); ZipE

2021-01-22 14:00:00 1355 2

原创 Jar包提示不存在,或者test类无法通过,如图所示

Terminal中输入命令mvn idea:idea

2021-01-18 15:15:04 175

原创 There was an unexpected error (type=Internal Server Error, status=500). I/O error on GET request for

nested exception is java.net.UnknownHostException: CLOUD-PROVIDER-SERVICE出现这种问题是当前微服务有两个端口,不知道你要用哪个?@Configurationpublic class ApplicationContextConfig { @Bean @LoadBalanced public RestTemplate getRestTemplate(){ return new RestTemp.

2021-01-09 00:11:34 749

原创 idea控制台打印sql日志

application.ymlspringcloud.ther.mapper是我dao层的路径logging: level: springcloud.ther.mapper : debug

2021-01-08 00:54:24 1832

空空如也

空空如也

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

TA关注的人

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