自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(226)
  • 资源 (2)
  • 收藏
  • 关注

转载 group by和having的区别

group by按照某个字段或者某些字段进行分组。havinghaving是对分组之后的数据进行再次过滤案例找出每个工作岗位的最高薪资select max(sal) from emp group by job;注意:分组函数一般都会和group by 联合使用,这也是为什么它被称为分组函数的原因。并且任何一个分组函数(count sum avg max min)都是在group by语句结束之后才会执行的。当一条sql语句没有group by的话,整张表的数据会自成一组。select e

2023-11-02 16:04:16 182

转载 JVM 方法区

运行时常量池相对于Class文件常量池的另外一个重要特征是具备动态性,Java语言并不要求常量一定只有编译期才能产生,也就是说,并非预置入Class文件中常量池的内容才能进入方法区运行时常 量池,运行期间也可以将新的常量放入池中,这种特性被开发人员利用得比较多的便是String类的。方法区的内存回收目标主要是针对常量池的回收和对类型的卸载,一般来说这个区域的回收效果比较难令人满意,尤其是类型的卸载,条件相当苛刻,但是这部分区域的回收有时又确实是必要的。但是这部分区域的回收有时又确实是必要的。

2023-10-30 14:35:30 146

转载 《JVM调优》- Jstack指令详解

jstack命令用于打印指定Java进程、核心文件或远程调试服务器的Java线程堆栈的跟踪信息。查看线程间死锁分析CPU过高原因针对这两个场景,后续会有实战案例~

2023-10-30 14:31:51 933

原创 依赖注入有三种方式

2.configurableApplicationContext扩展于ApplicationContext,新增加两个主要方法,refresh()方法,close()方法。//ClassPathXmlApplicationContext:是ApplicationContext的接口实现类,是在类的路径下实现该类。这种方式学霸和学渣只是暂时的合作关系,如果学渣赖上了另一个学霸(调用set()方法传入了另一个对象),那么学渣和学霸的合作关系就结束了。2、setter方法注入。,如有侵权,请联系删除。

2023-10-30 14:25:22 163

转载 认识BeanNameAware

但是在实际项目中,我们不可避免的要用到 Spring 容器本身提供的资源(难免要有事情需要少先队组织的帮助),这时候要让 Bean 主动意识到 Spring 容器的存在,才能调用 Spring 所提供的资源,这就是 Spring Aware. 其实 Spring Aware 是 Spring 设计为框架内部使用的,若使用了,你的 Bean 将会和 Spring 框架耦合,所以自己不单独使用,但是在读框架源码时希望你不再模糊.2.自定义Aware,同时,注册bean。,如有侵权,请联系删除。

2023-10-30 14:16:50 50

转载 什么是回表

通俗来说具体定义举例说明不需要回表的情况具体实例需要回表的情况具体实例回表造成的性能影响如何避免回表当执行一个查询语句,包含了辅助索引的列时,MySQL会首先使用辅助索引定位到符合条件的记录的主键值,然后再根据这些主键值去主键索引查找对应的完整数据行。这个过程就被称为回表。

2023-10-30 14:14:33 96

原创 MVCC面试题总结

InnoDB 每一行数据都有一个指向上一个版本数据在undo log日志里的位置指针。如果要执行更新操作,会将原记录放入 undo log 中,并通过隐藏的回滚指针指向 undo log 中的原记录。其它事务此时需要查询时,就是查询 undo log 中这行数据的最后一个历史版本。MVCC 最大的好处是读不加锁,读写不冲突,极大地增加了 MySQL 的并发性。通过 MVCC,保证了事务的隔离性。本文转自,如有侵权,请联系删除。

2023-10-30 14:11:23 311

转载 为什么JAVA开发大多数时候不需要管线程安全的问题?

A用户访问Controller中一个write方法,在这个方法中new了一个H实体类,生成了一个h对象,这个h对象的的引用被放在A线程的栈上(局部变量放在栈上,栈内存是线程私有的),所以能访问到h对象的线程只有A线程。然后A线程将h对象保存入库,B线程也在同一时间将hh对象保存入库,当两个这样的事务同时抵达Mysql数据库的时候,就是Mysql数据库的事务特性起作用的时候,ACID,通过事务之间的隔离性(可提交读、不可提交读、可重复读、序列化)来保证最后数据的一致性。线程安全是怎么保证的呢?

2023-08-29 14:41:42 94 1

转载 longAdder类

本文以一场面试连环炮揭开了 LongAdder 的面纱,怎么解决 count++ 的线程安全性问题?栈长再总结下:累加方法加 synchronized/ Lock 同步锁;使用 AtomicInteger/ AtomicLong 原子类;使用 LongAdder 原子类(推荐使用);LongAdder 这个东西是 Java 8 搞出来的,用来代替 AtomicXXX,不管是否高并发场景,都完胜 AtomicXXX,它不仅可以改善性能,现在面试也问的越来越多了,大家还是有必要掌握。

2023-07-26 16:39:02 45

转载 JDK动态代理和CGLIB动态代理

代理模式中代理类和被代理类提供同样的行为,比如实现同一个接口,代理类内部持有对被代理类的引用,在代理类中调用被代理类的方法。访问者通过调用代理类的方法进而调用被代理类的方法。对调用者来说似乎没有差别,但是在代理类的方法里调用被代理类的方法前后可以增加额外的功能逻辑,这样就可以实现目标方法的增强效果。如下图的结构:静态代理通过编写代理类的静态代码实现代理。

2023-06-05 17:00:16 83

转载 spring源码解析之AOP原理

上一步我发现AnnotationAwareAspectJAutoProxyCreator在所有bean创建时进行了拦截,执行其中的postProcessBeforeInstantiation方法,接下来我们继续通过断点调试查看该方法的进行的操作。我们继续完善之前的流程.。创建代理对象过程中,会先创建一个代理工厂,获取到所有的增强器(通知方法),将这些增强器和目标类注入代理工厂,再用代理工厂创建对象。我们细看创建代理对象的过程,发现在创建之前首先会根据切入点表达式对增强器进行一一匹配,最终拿到所有的增强器。

2023-06-05 16:57:07 678 1

原创 网络模型与 IO 多路复用

​ socket也称作“套接字”,用于描述IP地址和端口,是一个通信链路的描述符。应用程序通常通过“套接字”向对端发出请求或者应答网络请求。socket是连接运行在网络上的两个程序之间的通信端点。通信的两端都有socket,它是一个通道,数据在两个socket之间进行传输。socket把复杂的TCP/IP协议族或者UDP/IP协议族隐藏在socket接口后面,对程序员来说,只要用好socket相关的函数,就可以完成数据通信。

2023-04-27 15:33:57 510 1

原创 win10关闭系统更新

右键选择属性,然后启动类型选择禁用。

2023-04-25 11:33:56 65

转载 Jedis和RedisTemplate

RedisTemplate是对jedis和lettuce的封装,springboot2.0之后,默认使用 lettuce。jedis性能较强,jedis的性能至少是RedisTemplate的3倍以上,jedis结合jedisPool使用既可以有高性能又可以保证redis的连接可控。在性能要求、并发操作不高的场景建议使用RedisTemplate,在并发高,性能要求高的场景下建议使用jedis。

2023-04-18 17:05:05 2651

原创 Redis 哨兵和集群

理论上crc16算法可以得到2^16个数值,其数值范围在0-65535之间,取模运算key的时候,应该是crc16(key)%65535,但是却设计为crc16(key)%16384,原因是作者在设计的时候做了空间上的权衡,觉得节点最多不可能超过1000个,同时为了保证节点之间通信效率,所以采用了2 ^14。高可用性:部分节点不可用时,集群仍可用。其实,无论是一致性哈希还是哈希槽的方式,在增减节点的时候,都会对一部分数据产生影响,都需要我们迁移数据,当然,redis集群也提供了相关手动迁移槽数据的命令。

2023-04-18 15:11:43 553

转载 maven 常用命令

maven 命令除了常用的几个,大部分经常记不住,整理一下,方便查询。maven 命令的格式为,可以接受的参数如下,-D 指定参数,如 -Dmaven.test.skip=true 跳过单元测试;-P 指定 Profile 配置,可以用于区分环境;-e 显示maven运行出错的信息;-o 离线执行命令,即不去远程仓库更新包;-X 显示maven允许的debug信息;-U 强制去远程更新snapshot的插件或依赖,默认每天只更新一次。

2023-03-17 17:27:22 195

原创 docker安装单机nacos <m1 mac >

(这个是m1版本的镜像)

2023-02-22 16:46:54 902

转载 https://start.spring.io‘ 的初始化失败请检查 URL、网络和代理设置

创建springboot项目。

2023-02-21 09:50:31 1185

原创 MacOS 13禁用系统自带输入法

sip禁止让软件以root身份来在mac上运行,并且对于目录仅仅供系统使用,其它用户或者程序无法直接使用。实用工具终端SIP执行后输出以下信息表示禁用成功。SIP。

2023-02-08 17:39:11 1340

原创 布隆过滤器的原理

布隆过滤器(英语:Bloom Filter)是 1970 年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中,它的优点是空间效率和查询时间都远远超过一般的算法。工作原理布隆过滤器的原理是,当一个元素被加入集合时,通过 K 个散列函数将这个元素映射成一个位数组中的 K 个点(offset),把它们置为 1。检索时,我们只要看看这些点是不是都是 1 就(大约)知道集合中有没有它了:如果这些点有任何一个 0,则被检元素一定不在;

2022-11-05 23:13:01 295

原创 Mac Word 修改默认的模板

Mac Word 修改默认的模板

2022-10-18 16:16:08 1915

转载 gradle项目转maven

在build.gradle中添加如下配置。

2022-09-26 17:58:50 376

原创 idea git 代码回滚总结

idea git 回滚代码总结

2022-09-23 18:48:10 4110

原创 cap理论、base 定理、分布式事务的理解与相互关系

cap理论、base 定理、分布式事务的理解与相互关系

2022-09-07 19:35:20 237

转载 HTTP和RPC对比及使用场景

转载https://blog.csdn.net/weixin_34362790/article/details/86753817

2022-03-30 10:02:03 374

原创 RDM redis操作

在公司中,通过键的数量相同的是主备关系,操作主机或者备机,key 最后都是相同的,他们之间会相互同步。所以可以去掉一部分连接,方便查看右键 某个库,点击 filter keys 可以方便的查找某个 key如果需要对库进行控制台命令操作,右键某个连接,打开控制台即可...

2022-03-28 11:20:24 1844

转载 Linux下查找日志中的关键字

cat 或者 tail 日志文件名 | grep “关键词”

2022-03-23 15:52:50 5928

转载 类、成员变量、方法的访问权限

访问权限主要针对包和类。比如 person 类的name 属性是 private 的,这时 family 类在同包或不同包的内部 new 一个 person 类可以,但是 person .name 会编译报错而且没有提示,这就是只有 person 类的内部可以访问 name 属性。...

2022-03-20 18:20:37 311

转载 mybatis 遍历list集合以及条件判断

一、条件判断案例<if test="userIds != null and userIds.size > 0"> AND user_id in   <foreach collection="userIds" item="userId" open="(" separator="," close=")"> #{userId} </foreach></if>二、遍历集合  1、使用@Param注解public voi

2022-02-09 16:15:49 8906 2

转载 Optional 判断普通对象和集合对象

普通对象集合对象  首先下面代码中的List放入了很多Person对象,其中有的对象是null的,如果不加校验调用Person的getXXX()方法肯定会报空指针错误,一般我们采取的方案就是加上if判断:public class DemoUtils { public static void main(String[] args) { List<Person> personList = new ArrayList<>(); person

2022-01-31 16:47:10 1440

转载 idea 中for 循环的 debug

在 for 循环的报错中,查看报错信息,然后设置断点条件

2022-01-24 17:21:55 946

原创 war和war exploded的区别

explode的意思就是展开的形式,idea 中另一个常见的单词 archive 就是压缩的意思,常见的就是 jar 包,war 包等

2022-01-21 16:32:36 1100

转载 IDEA 修改内存大小,使得idea运行更流畅

  之前调试代码,有时候修改文件之后,需要重新启动项目,内存小的时候,项目启动比较慢,很浪费时间

2022-01-18 16:49:28 301

转载 stream reduce()注意事项

使用的时候,给定一个初始值,这样后边不用对 optional 做处理

2022-01-14 19:03:06 116

转载 去重distinct和group by

2022-01-14 18:52:47 51

转载 mybatis 判断 list 是否为空进行 foreach 遍历

2022-01-12 18:19:44 487

原创 servlet是单例还是多例

Servlet容器默认是采用单实例多线程的方式处理多个请求的:  1.当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在一个Servlet实例);  2.容器初始化化Servlet主要就是读取配置文件(例如tomcat,可以通过servlet.xml的设置线程池中线程数目,初始化线程池通过web.xml,初始化每个参数值等等。  3.当请求到达时,Servlet容器通过调度线程(Dispatchaer Thread) 调度它管理下线程池中等待执行的线程(Wo

2022-01-05 18:04:52 1110

转载 SpringBoot启动机制(starter机制)核心原理详解

2022-01-05 16:48:44 301

转载 DATE_FORMAT导致的无法使用时间索引问题

2022-01-04 10:21:20 423

转载 openid和unionid区别

2021-12-30 16:09:08 147

maven配置文件settings.xml

maven配置文件settings.xml

2021-09-24

idea配置jar包-settings.zip

idea配置jar包-settings.zip

2021-09-21

空空如也

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

TA关注的人

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