- 博客(227)
- 资源 (2)
- 收藏
- 关注
原创 mac 安装brew并配置国内源
最近重装了我的MAC mini (m1 芯片), 很多软件都需要重新安装,因为后续还需要安装一些软件,所以想着安装个包管理软件会轻松一些。网上又找不到非常靠谱的教程,自己东拼西凑看了几个终于成功了,于是打算记录下来,也帮助一下想要安装homebrew的朋友。关于homebrew是啥这个问题,我想没有比Homebrew官网的介绍更准确的答案了, “The Missing Package Manager for macOS (or Linux)”,意思是macOS缺少的那个包管理软件。
2024-09-03 23:20:45
1729
转载 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
297
转载 JVM 方法区
运行时常量池相对于Class文件常量池的另外一个重要特征是具备动态性,Java语言并不要求常量一定只有编译期才能产生,也就是说,并非预置入Class文件中常量池的内容才能进入方法区运行时常 量池,运行期间也可以将新的常量放入池中,这种特性被开发人员利用得比较多的便是String类的。方法区的内存回收目标主要是针对常量池的回收和对类型的卸载,一般来说这个区域的回收效果比较难令人满意,尤其是类型的卸载,条件相当苛刻,但是这部分区域的回收有时又确实是必要的。但是这部分区域的回收有时又确实是必要的。
2023-10-30 14:35:30
243
转载 《JVM调优》- Jstack指令详解
jstack命令用于打印指定Java进程、核心文件或远程调试服务器的Java线程堆栈的跟踪信息。查看线程间死锁分析CPU过高原因针对这两个场景,后续会有实战案例~
2023-10-30 14:31:51
2595
原创 依赖注入有三种方式
2.configurableApplicationContext扩展于ApplicationContext,新增加两个主要方法,refresh()方法,close()方法。//ClassPathXmlApplicationContext:是ApplicationContext的接口实现类,是在类的路径下实现该类。这种方式学霸和学渣只是暂时的合作关系,如果学渣赖上了另一个学霸(调用set()方法传入了另一个对象),那么学渣和学霸的合作关系就结束了。2、setter方法注入。,如有侵权,请联系删除。
2023-10-30 14:25:22
368
转载 认识BeanNameAware
但是在实际项目中,我们不可避免的要用到 Spring 容器本身提供的资源(难免要有事情需要少先队组织的帮助),这时候要让 Bean 主动意识到 Spring 容器的存在,才能调用 Spring 所提供的资源,这就是 Spring Aware. 其实 Spring Aware 是 Spring 设计为框架内部使用的,若使用了,你的 Bean 将会和 Spring 框架耦合,所以自己不单独使用,但是在读框架源码时希望你不再模糊.2.自定义Aware,同时,注册bean。,如有侵权,请联系删除。
2023-10-30 14:16:50
208
转载 什么是回表
通俗来说具体定义举例说明不需要回表的情况具体实例需要回表的情况具体实例回表造成的性能影响如何避免回表当执行一个查询语句,包含了辅助索引的列时,MySQL会首先使用辅助索引定位到符合条件的记录的主键值,然后再根据这些主键值去主键索引查找对应的完整数据行。这个过程就被称为回表。
2023-10-30 14:14:33
547
原创 MVCC面试题总结
InnoDB 每一行数据都有一个指向上一个版本数据在undo log日志里的位置指针。如果要执行更新操作,会将原记录放入 undo log 中,并通过隐藏的回滚指针指向 undo log 中的原记录。其它事务此时需要查询时,就是查询 undo log 中这行数据的最后一个历史版本。MVCC 最大的好处是读不加锁,读写不冲突,极大地增加了 MySQL 的并发性。通过 MVCC,保证了事务的隔离性。本文转自,如有侵权,请联系删除。
2023-10-30 14:11:23
364
转载 为什么JAVA开发大多数时候不需要管线程安全的问题?
A用户访问Controller中一个write方法,在这个方法中new了一个H实体类,生成了一个h对象,这个h对象的的引用被放在A线程的栈上(局部变量放在栈上,栈内存是线程私有的),所以能访问到h对象的线程只有A线程。然后A线程将h对象保存入库,B线程也在同一时间将hh对象保存入库,当两个这样的事务同时抵达Mysql数据库的时候,就是Mysql数据库的事务特性起作用的时候,ACID,通过事务之间的隔离性(可提交读、不可提交读、可重复读、序列化)来保证最后数据的一致性。线程安全是怎么保证的呢?
2023-08-29 14:41:42
135
1
转载 longAdder类
本文以一场面试连环炮揭开了 LongAdder 的面纱,怎么解决 count++ 的线程安全性问题?栈长再总结下:累加方法加 synchronized/ Lock 同步锁;使用 AtomicInteger/ AtomicLong 原子类;使用 LongAdder 原子类(推荐使用);LongAdder 这个东西是 Java 8 搞出来的,用来代替 AtomicXXX,不管是否高并发场景,都完胜 AtomicXXX,它不仅可以改善性能,现在面试也问的越来越多了,大家还是有必要掌握。
2023-07-26 16:39:02
85
转载 JDK动态代理和CGLIB动态代理
代理模式中代理类和被代理类提供同样的行为,比如实现同一个接口,代理类内部持有对被代理类的引用,在代理类中调用被代理类的方法。访问者通过调用代理类的方法进而调用被代理类的方法。对调用者来说似乎没有差别,但是在代理类的方法里调用被代理类的方法前后可以增加额外的功能逻辑,这样就可以实现目标方法的增强效果。如下图的结构:静态代理通过编写代理类的静态代码实现代理。
2023-06-05 17:00:16
161
转载 spring源码解析之AOP原理
上一步我发现AnnotationAwareAspectJAutoProxyCreator在所有bean创建时进行了拦截,执行其中的postProcessBeforeInstantiation方法,接下来我们继续通过断点调试查看该方法的进行的操作。我们继续完善之前的流程.。创建代理对象过程中,会先创建一个代理工厂,获取到所有的增强器(通知方法),将这些增强器和目标类注入代理工厂,再用代理工厂创建对象。我们细看创建代理对象的过程,发现在创建之前首先会根据切入点表达式对增强器进行一一匹配,最终拿到所有的增强器。
2023-06-05 16:57:07
929
1
原创 网络模型与 IO 多路复用
socket也称作“套接字”,用于描述IP地址和端口,是一个通信链路的描述符。应用程序通常通过“套接字”向对端发出请求或者应答网络请求。socket是连接运行在网络上的两个程序之间的通信端点。通信的两端都有socket,它是一个通道,数据在两个socket之间进行传输。socket把复杂的TCP/IP协议族或者UDP/IP协议族隐藏在socket接口后面,对程序员来说,只要用好socket相关的函数,就可以完成数据通信。
2023-04-27 15:33:57
777
转载 Jedis和RedisTemplate
RedisTemplate是对jedis和lettuce的封装,springboot2.0之后,默认使用 lettuce。jedis性能较强,jedis的性能至少是RedisTemplate的3倍以上,jedis结合jedisPool使用既可以有高性能又可以保证redis的连接可控。在性能要求、并发操作不高的场景建议使用RedisTemplate,在并发高,性能要求高的场景下建议使用jedis。
2023-04-18 17:05:05
3793
原创 Redis 哨兵和集群
理论上crc16算法可以得到2^16个数值,其数值范围在0-65535之间,取模运算key的时候,应该是crc16(key)%65535,但是却设计为crc16(key)%16384,原因是作者在设计的时候做了空间上的权衡,觉得节点最多不可能超过1000个,同时为了保证节点之间通信效率,所以采用了2 ^14。高可用性:部分节点不可用时,集群仍可用。其实,无论是一致性哈希还是哈希槽的方式,在增减节点的时候,都会对一部分数据产生影响,都需要我们迁移数据,当然,redis集群也提供了相关手动迁移槽数据的命令。
2023-04-18 15:11:43
697
转载 maven 常用命令
maven 命令除了常用的几个,大部分经常记不住,整理一下,方便查询。maven 命令的格式为,可以接受的参数如下,-D 指定参数,如 -Dmaven.test.skip=true 跳过单元测试;-P 指定 Profile 配置,可以用于区分环境;-e 显示maven运行出错的信息;-o 离线执行命令,即不去远程仓库更新包;-X 显示maven允许的debug信息;-U 强制去远程更新snapshot的插件或依赖,默认每天只更新一次。
2023-03-17 17:27:22
274
原创 MacOS 13禁用系统自带输入法
sip禁止让软件以root身份来在mac上运行,并且对于目录仅仅供系统使用,其它用户或者程序无法直接使用。实用工具终端SIP执行后输出以下信息表示禁用成功。SIP。
2023-02-08 17:39:11
2022
原创 布隆过滤器的原理
布隆过滤器(英语:Bloom Filter)是 1970 年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中,它的优点是空间效率和查询时间都远远超过一般的算法。工作原理布隆过滤器的原理是,当一个元素被加入集合时,通过 K 个散列函数将这个元素映射成一个位数组中的 K 个点(offset),把它们置为 1。检索时,我们只要看看这些点是不是都是 1 就(大约)知道集合中有没有它了:如果这些点有任何一个 0,则被检元素一定不在;
2022-11-05 23:13:01
374
转载 HTTP和RPC对比及使用场景
转载https://blog.youkuaiyun.com/weixin_34362790/article/details/86753817
2022-03-30 10:02:03
450
原创 RDM redis操作
在公司中,通过键的数量相同的是主备关系,操作主机或者备机,key 最后都是相同的,他们之间会相互同步。所以可以去掉一部分连接,方便查看右键 某个库,点击 filter keys 可以方便的查找某个 key如果需要对库进行控制台命令操作,右键某个连接,打开控制台即可...
2022-03-28 11:20:24
1955
转载 类、成员变量、方法的访问权限
访问权限主要针对包和类。比如 person 类的name 属性是 private 的,这时 family 类在同包或不同包的内部 new 一个 person 类可以,但是 person .name 会编译报错而且没有提示,这就是只有 person 类的内部可以访问 name 属性。...
2022-03-20 18:20:37
382
转载 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
9328
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
1567
原创 war和war exploded的区别
explode的意思就是展开的形式,idea 中另一个常见的单词 archive 就是压缩的意思,常见的就是 jar 包,war 包等
2022-01-21 16:32:36
1181
原创 servlet是单例还是多例
Servlet容器默认是采用单实例多线程的方式处理多个请求的: 1.当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在一个Servlet实例); 2.容器初始化化Servlet主要就是读取配置文件(例如tomcat,可以通过servlet.xml的设置线程池中线程数目,初始化线程池通过web.xml,初始化每个参数值等等。 3.当请求到达时,Servlet容器通过调度线程(Dispatchaer Thread) 调度它管理下线程池中等待执行的线程(Wo
2022-01-05 18:04:52
1199
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人