- 博客(78)
- 收藏
- 关注
转载 提升开发效率的“轮子”
在java的庞大体系中,其实有很多不错的小工具,也就是我们平常说的轮子。如果在我们的日常工作当中,能够将这些轮子用户,再配合一下idea的快捷键,可以极大得提升我们的开发效率。今天我决定把一些压箱底的小工具,分享给大家,希望对你有所帮助。...............
2022-07-18 17:11:01
522
2
转载 用Python自动化读写Word文档
同事需要批量出500个Word文档,按照1个Word文档耗时1分钟来算也需要8.33小时足足有1天工时。于是,这位同事找到了才哥帮忙,才哥接过需求花了不到30分钟写好脚本,运行脚本不到1分钟就生成了500份Word文档并且进行了分类归档!...
2022-07-18 16:48:04
2543
转载 JVM 内存布局详解
JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的稳定高效运行。不同的JVM对于内存的划分方式和管理机制存在部分差异。结合JVM虚拟机规范,一起来探讨jVM的内存布局。如下图所示:Heap堆区是Java发生OOM(Out Of Memory)故障的地方,堆中存储着我们平时创建的实例对象,最终这些不再使用的对象会被垃圾收集器回收掉,而且堆是线程共享的。一般情况下,堆所占用的内存空间是JVM内存区域中最大的,我们在平时编码中,创建对象如果不加以克制,内存空间也会被耗尽。堆的内存
2022-07-14 12:23:31
372
转载 52类110个主流Java组件和框架
【Tomcat】https://tomcat.apache.org/【Jetty】https://www.jetty.com/【JBoss】https://www.jboss.org/【Resin】https://caucho.com/products/resin【H2】https://h2database.com/【SQLite】https://www.sqlite.org/【MySQL】https://www.mysql.com/【Oracle】https://www.oracle.com/index.
2022-07-13 16:42:37
883
转载 IDEA快捷键大全 + 动图演示
:构建项目执行该命令后,IntelliJ IDEA 会编译项目中所有类,并将编译结果输出到out目录中。IntelliJ IDEA 支持增量构建,会在上次构建的基础上,仅编译修改的类。:重新编译当前类在IntelliJ IDEA 中打开要编译的类,执行该命令会编译当前类。:剪切剪切选中文本,若未选中则剪切当前行。:复制复制选中文本,若未选中则复制当前行。:粘贴:粘贴为纯文本:从历史选择粘贴从历史剪粘版中选择要粘贴的内容。:复制行复制光标所在行。:复制文件路径复制选中文件所在
2022-07-13 15:53:44
2159
转载 https详细握手过程
进入正题之前,先解答一下上篇文章留的两个问题一、 为什么charles等抓包工具或者浏览器控制台看到的https返回是明文的?首先说明一下,https其实相当于http+tsl,(tsl和ssl只是不同的版本称呼问题,暂且这么理解),大家都知道,http是明文操作,那也就是说所有的加密解密操作都在tls这边,具体关系可以参看下面这张图浏览器是属于应用层之上的应用吧,所以浏览器控制台的输出都是已经经过tls解密过的。 那为什么charles等抓包工具看到的也是明文的呢?是不是也是因为charles是应用层
2022-07-07 23:18:22
1275
转载 https到底是如何防篡改的
https是一个老生常谈的话题了,也是面试过程种经常甚至必然会问到的一个问题 但当问到https为什么安全的时候,很多人的回答就是简单的回一句:因为他加密了!然后就没然后了!你也相当于啥都没回答出来!大家都知道,http是明文传输,但是也有不少人这样想:虽然是明文传输,但我也没遇到什么不安全的问题呀,所以我也没必要搞https!我只能给出以下几点解释接下来我给大家演示一下http为什么不安全大家都连接过公共wifi吧,这里我就用电脑开个热点,然后用手机连接热点,然后用手机访问一个http的登录界面,并输入账
2022-07-07 22:58:11
1252
转载 为什么用抓包工具看HTTPS包是明文的
测试或者开发调试的过程中,经常会进行抓包分析,并且装上抓包工具的证书就能抓取 HTTPS 的数据包并显示。由此就产生了一个疑问,为什么抓包工具装上证书后就能抓到 HTTPS 的包并显示呢?不是说 HTTPS 是加密传输的吗?今天这篇文章就来探究下上面这个问题,要解释清楚这个问题,我会通过解答以下两个问题来讲述:HTTP 作为一种被广泛使用的传输协议,也存在一些的缺点:为了解决 “明文” 和 “不安全” 两个问题,就产生了 HTTPS。HTTPS 不是一种单独的协议,它是由 HTTP + SSL/TLS 组成
2022-07-07 22:56:56
2938
转载 计算机网络全部知识点思维导图整理
目录一、计网重要中英对照与框架二、知识点第一章 计算机网络体系结构第二章 物理层第三章 数据链路层第四章 网络层第五章 传输层第六章 应用层第七章 网络管理一、计网重要中英对照与框架二、知识点第一章 计算机网络体系结构第二章 物理层第三章 数据链路层第四章 网络层第五章 传输层第六章 应用层第七章 网络管理...
2022-05-26 20:24:28
5329
6
原创 【读书笔记】MySQL存储引擎_第八天
性能调优⭐一、选择合适的CPU二、内存的重要性三、硬盘对数据库性能的影响3.1 传统的机械硬盘3.2 固态硬盘四、合理设置RAID4.1 RAID类型4.2 RAID Write Back功能五、操作系统的选择六、不同的文件系统对数据库性能的影响七、选择合适的基准测试工具一、选择合适的CPU当前数据库类型可以分为:OLTP(Online Transaction Processing,在线事务处理)和OLAP(Online Analytical Processing,在线分析处理)。OLAP多用在数据仓库
2022-05-18 11:28:48
276
转载 做点实事吧
目录什么是务实工作很久了,年龄也比较大了,感觉工作这些年以来在技术方向上没什么提升整天 CRUD,项目技术栈用的比较老旧,想要接触新项目,想要去互联网我应该学哪些技术不要给自己的人生设限破窗效应编制合理的谎言让用户参与评审和设计如何学习知识知识理财定期投资风险管理多样化低买高卖重新评估知识组合碎片学习的机会批判性思维裁员、经济下行、互联网寒冬充斥着 2022 年,让每个人心中蒙上一层阴影,每个人都很难。不过,今天我想要鼓励一下你,疫情总会过去,寒冬也总会过去,现在我们应该做的就是,积蓄能量,厚积薄发。最
2022-05-17 14:34:16
137
原创 【读书笔记】MySQL存储引擎_第七天
备份与恢复一、概述二、冷备三、逻辑备份四、二进制日志备份与恢复五、热备六、快照备份七、复制7.1 复制7.2 快照 + 复制的备份架构参考一、概述根据备份的方法不同可以将备份分为:Hot Backup(热备)Cold Backup(冷备)Warm Backup(温备)Cold Backup是指备份操作是在数据库停止的情况下,这种备份最为简单,一般只需要复制相关的数据库物理文件即可。Warm Backup备份同样是在数据库运行中运行的。按照备份后文件的内容,备份可以分为:逻辑备份裸文
2022-05-17 12:17:02
126
原创 【读书笔记】MySQL存储引擎_第六天
事务一、事务1.1 A(Atomicity)原子性1.2 C(Consistency)一致性1.3 I(Isolation)隔离性1.4 D(Durabolity)持久性二、事务分类2.1 扁平事务2.2 带有保存点的扁平事务2.3 链事务2.4 嵌套事务2.5 分布式事务一、事务事务会把数据库从一种抑制状态转换为另一种一致状态。在数据库提交工作时,可以确保要嘛所有修改都已经保存了,要嘛所有修改都不保存。这也是事务模型区别于文件系统的重要特征之一。InnoDB存储引擎中的事务完全符合ACID的特性。A
2022-05-16 12:14:30
311
转载 binlog 和 redolog 的持久化问题
目录binlogredolog问题:没提交的事务redo/binlog也会被持久到磁盘吗?对于 MySQL 来说,只要 binlog 和 redolog 都能正确持久化到磁盘上,就可以保证数据不丢失了。binlogbinlog cache—>page cache—> diskcache 到 cache 是write的过程,page cache到disk是fsyncwrite 和 fsync 的时机,是由参数 sync_binlog 控制的:sync_binlog = 0,每次提交事务
2022-05-13 16:36:31
414
原创 【读书笔记】MySQL存储引擎_第五天
锁一、什么是锁二、lock和latch三、InnoDB存储引擎中的锁3.1 锁的类型3.2 一致性非锁定读3.3 一致性锁定读3.4 自增长与锁四、锁4.1 行锁的3种算法4.2 锁的问题4.3 死锁4.4 锁升级参考一、什么是锁用于管理对共享资源的并发访问操作缓冲池中的LRU列表,删除、添加、移动LRU列表中的元素,为保证一致性,必须有锁的介入InnoDB存储引擎锁的实现和Oracle数据库非常类似,提供一致性的非锁定读、行级锁支持二、lock和latchlatch要求锁定时间必须非常短,
2022-05-12 21:19:10
252
原创 Tarjan算法详解
目录一、什么是强连通分量1. 概念2. 强连通分量二、两种dfs遍历1. 方式12. 方式2三、一个简单例子理解算法四、更完整的一个例子五、Code实现一、什么是强连通分量tarjan强连通分量算法1. 概念连通:无向图中,从任意点i可到达任一点j强连通:有向图中,从任意点i可到达任一点j弱连通:把有向图看作无向图时,从任意点i可到达任一点j如图,强连通无论那个点,都能按照方向到达任意一点,弱连通如果强行按方向,那么B到不了C,A到不了B和C,C到不了B。但如果把他看作是无向图,那么他们也
2022-05-11 15:55:53
6383
3
转载 寄存器、缓存、内存之间的关系和区别
目录关系1、寄存器2、缓存(Cache)2.1、寄存器和缓存的区别2.2、一级缓存和二级缓存3、内存3.1、只读存储器 ROM(Read Only Memory)3.2、随机存储器 RAM(Random Access Memory)3.2.1、静态RAM(Static RAM/SRAM)3.2.2、动态RAM(Dynamic RAM/DRAM)关系1、寄存器寄存器(register)是CPU(中央处理器)的组成部分,是一种直接整合到cpu中的有限的高速访问速度的存储器,它是有一些与非门组合组成的,分
2022-05-10 15:21:47
13165
3
原创 【读书笔记】MySQL存储引擎_第四天
目录索引与算法一、 InnoDB存储引擎索引概述二、 B+树2.1 B+树的插入操作2.2 B+树的删除操作三、B+树索引3.1 聚集索引3.2 辅助索引3.3 B+树索引的分裂四、Cardinality值4.1 什么是Cardinality值参考索引与算法索引太多,应用程序性能会受到影响索引太少,查询性能会受到影响一、 InnoDB存储引擎索引概述InnoDB存储引擎支持以下几种常见的索引:B+树索引全文索引HASH索引注意:InnoDB的哈希索引是自适应的,InnoDB会根
2022-05-09 22:22:21
322
原创 leetcode-第292场周赛
目录2264. 字符串中最大的 3 位相同数字2265. 统计值等于子树平均值的节点数2266. 统计打字方案数2267. 检查是否有合法括号字符串路径2264. 字符串中最大的 3 位相同数字给你一个字符串 num ,表示一个大整数。如果一个整数满足下述所有条件,则认为该整数是一个 优质整数 :该整数是 num 的一个长度为 3 的 子字符串 。该整数由唯一一个数字重复 3 次组成。以字符串形式返回 最大的优质整数 。如果不存在满足要求的整数,则返回一个空字符串 “” 。注意:子字符串 是字
2022-05-09 15:58:50
545
原创 【读书笔记】MySQL存储引擎_第三天
文章目录视图一、视图的作用二、视图的用法分区表一、分区概述1.1 查看数据库是否开启分区功能1.2 mysql支持的分区类型二、分区类型2.1 RANGE分区参考资料视图视图是一个命名的虚表,由一个SQL查询来定义,可以当作表使用与持久表不同的是,视图中的数据没有实际的物理存储数据库中只存放了视图的定义,并没有存放视图中的数据,这些数据都存放在定义视图查询所引用的真实表中。使用视图查询数据时,数据库会从真实表中取出对应的数据。因此,视图中的数据是依赖于真实表中的数据的。一旦真实表中的数据发生改变,
2022-05-07 21:13:32
383
原创 每日刷题总结——广度优先搜索 / 深度优先搜索
目录286. 墙与门417. 太平洋大西洋水流问题286. 墙与门你被给定一个 m × n 的二维网格 rooms ,网格中有以下三种可能的初始化值:-1 表示墙或是障碍物0 表示一扇门INF 无限表示一个空的房间。然后,我们用 231 - 1 = 2147483647 代表 INF。你可以认为通往门的距离总是小于 2147483647 的。你要给每个空房间位上填上该房间到 最近门的距离 ,如果无法到达门,则填 INF 即可。示例 1:输入:rooms = [[2147483647,
2022-05-07 15:23:32
875
原创 2021届秋季校招笔试真题
目录【简单】meituan-001. 小美的用户名meituan-003. 小美的跑腿代购【中等】meituan-002. 小美的仓库整理【困难】meituan-004. 小团的复制粘贴心得【简单】meituan-001. 小美的用户名小美是美团的前端工程师,为了防止系统被恶意攻击,小美必须要在用户输入用户名之前做一个合法性检查,一个合法的用户名必须满足以下几个要求:用户名的首字符必须是大写或者小写字母。用户名只能包含大小写字母,数字。用户名需要包含至少一个字母和一个数字。如果用户名合法,请输
2022-05-05 19:42:54
1040
1
原创 每日刷题总结——滑动窗口
目录滑动窗口159. 至多包含两个不同字符的最长子串340. 至多包含 K 个不同字符的最长子串滑动窗口滑动窗口常见做题思路:定义需要维护的变量们(对于滑动窗口类题目,这些变量通常是最小长度,最大长度,或者哈希表)定义窗口的首尾端(start, end),然后滑动窗口更新需要维护的变量, 有的变量需要一个if语句来维护(比如最大最小长度)Step 4 - 情况1//如果题目的窗口长度固定:用一个if语句判断一下当前窗口长度是否超过限定长度//如果超过了,窗口左指针前移一个单位保证窗口长
2022-05-05 11:12:29
355
原创 每日刷题——二分查找
目录二分查找1060. 有序数组中的缺失元素1901. 找出顶峰元素 II⭐1231. 分享巧克力1182. 与目标颜色间的最短距离二分查找1060. 有序数组中的缺失元素现有一个按 升序 排列的整数数组 nums ,其中每个数字都 互不相同 。给你一个整数 k ,请你找出并返回从数组最左边开始的第 k 个缺失数字。示例 1:输入:nums = [4,7,9,10], k = 1输出:5解释:第一个缺失数字为 5 。示例 2:输入:nums = [4,7,9,10], k = 3
2022-05-05 09:35:51
302
原创 每日刷题总结——双指针
目录双指针202. 快乐数1229. 安排会议日程287. 寻找重复数⭐42. 接雨水【难】1868. 两个行程编码数组的积双指针202. 快乐数编写一个算法来判断一个数 n 是不是快乐数。「快乐数」 定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1,那么这个数就是快乐数。如果 n 是 快乐数 就返回 true ;不是,则返回 false 。示例 1:输入:n = 1
2022-05-05 09:34:49
329
原创 每日刷题总结——位运算
目录位运算201. 数字范围按位与位运算201. 数字范围按位与给你两个整数 left 和 right ,表示区间 [left, right] ,返回此区间内所有数字 按位与 的结果(包含 left 、right 端点)。示例 1:输入:left = 5, right = 7输出:4示例 2:输入:left = 0, right = 0输出:0示例 3:输入:left = 1, right = 2147483647输出:0来源:力扣(LeetCode)链接:https
2022-05-05 09:33:27
102
原创 leetcode-第291场周赛
目录2259. 移除指定数字得到的最大结果2259. 移除指定数字得到的最大结果给你一个表示某个正整数的字符串 number和一个字符 digit。从 number中 恰好 移除 一个 等于 digit 的字符后,找出并返回按 十进制 表示 最大 的结果字符串。生成的测试用例满足 digit在 number中出现至少一次。示例 1:输入:number = “123”, digit = “3”输出:“12”解释:“123” 中只有一个 ‘3’ ,在移除 ‘3’ 之后,结果为 “12” 。示
2022-05-02 18:43:06
511
转载 JVM学习-SoftReference软引用回收时机(十四)
目录1. 说明2. 源码3. 软引用回收时机4. 淘汰策略处理源码5. 可能导致的问题1. 说明以前学习各个引用类型的区别,最近在看一个JVM参数-XX:SoftRefLRUPolicyMSPerMB 对软引用有更深入的了解2. 源码public class SoftReference<T> extends Reference<T> { /** * 由垃圾回收器负责更新的时间戳 */ static private long clock;
2022-05-02 11:51:36
750
转载 JVM学习-freemarker导致内存泄露问题分析排查(十三)
目录1. 说明2. 排查步骤3. 一些误区1. 说明测试环境出现非常慢,测试说执行过工单word导出就出现这种问题2. 排查步骤1.查看机器cpu和内存 正常2.排查gc回收 发现一只在触发full gcjstat -gc 10755 3.dump堆信息进行分析jmap -dump:format=b,file=/Users/liqiang/Desktop/logs/heap.hprof pid4.先通过Vm查看根据大对象名字看不出什么问题5.使用MAT 导入dump文件进行分析
2022-05-02 11:48:12
658
转载 JVM学习-实践,记录OOM分析(十二)
目录1. 说明2. 排查1. 说明线上出现异常,但是查看节点状态正常,因为使用了容器,挂掉了会重启。因为jvm配置了-XX:HeapDumpOnOutOfMemoryError 参数,出现OMM就会将当时线程和jvm内存情况转存起来可参考:《JVM参数配置》2. 排查1.将运维发过来的hprof导入到 vm 可参考《JVM监控》2.我们去当时的线程日志查看3.搜索13219这个线程id找到线程查看堆栈信息4.分析堆栈找到业务代码 分析问题原因具体看标红处 发现是导入功能问题 导致oo
2022-05-02 11:37:34
284
转载 JVM学习-实践,记录一次jstack分析(十一)
目录1. 线程状态可参考2. 问题3. 排查分析3.1. dump jstack日志4. 日志分析1. 线程状态可参考https://www.cnblogs.com/LQBlog/p/15268773.html2. 问题测试环境dubbo服务出现问题,一直刷警告日志,前端反应各个功能模块很慢,看日志是dubbo线程池满了,但是测试环境没有压力2021-09-14 09:32:07,957 WARN [New I/O server worker #1-9] com.alibaba.dubbo.com
2022-05-02 11:30:34
174
转载 JVM学习-实践,记录一次jvm堆内存调整(十)
目录1. 说明2. 分析3. 针对form和to没按8:1:1配置4. 针对刚上线堆大小设置1. 说明线上内存告警占用了90%+ 订单服务占用了42% 8.3g,分析订单服务是否可以降低配置。2. 分析1.查看应用实际占用内存cat /proc/{pid}/status2.查看jvm启动参数3. 查看高峰期的时候jvm内存增长率jstat -gcutil {pid} 1000 500 1000:1秒采集一次 500:采集500次结论:eden区108秒会触发回收一次,每次
2022-05-02 11:26:12
102
转载 JVM学习-监控,内存泄露与高CPU占用排查(九)
目录1. 说明2. 代码模拟3. AB压测模拟4. 分析5. 分析dump *.hprof文件工具5.1. visualVM5.2. MAT5.3. 在线分析工具6. OQL语法例子7. 异常情况解决方式1. 说明一般我们发现内存持续增长,但是并没有得到释放,我们就需要排查是否内存泄露2. 代码模拟通过ThreadLocal模拟内存泄露为什么ThreadLocal会内存泄露?参考:《ThreadLocal》@RequestMapping("/testController")@Controlle
2022-05-02 11:16:11
437
转载 JVM学习-jvm调优(八)
目录1. 内存监控2. GC 性能衡量指标2.1. 吞吐量2.2. 停顿时间2.3. 垃圾回收频率3. GC 调优策略3.1 降低 Minor GC 频率3.2 降低 Full GC 的频率3.3. 选择合适的 GC 回收器4. 对象在堆中的生命周期5. 查看jvm默认配置6. 查看程序jvm配置7. 具体调优方法1. 内存监控参考:《JVM学习-内存监控(五)》2. GC 性能衡量指标2.1. 吞吐量这里的吞吐量是指应用程序所花费的时间和系统总运行时间的比值。我们可以按照这个公式来计算 GC 的
2022-05-02 10:55:25
468
转载 JVM学习-常用参数(七)
目录1. 内存监控1.1. -XX:+PrintGC1.2. -verbose:gc1.3. XX:+DisableExplicitGC1.4. -XX:MaxTenuringThreshold1.5. -XX:+PrintGCDetails1.6. -XX:+PrintGCTimeStamps1.7. -XX:+TraceClassLoading1.8. -XX:+PrintClassHistogram1.9. -XX:+PrintHeapAtGC1.10. -Xloggc1.11. -XX:+
2022-05-02 10:34:43
1605
转载 JVM学习-JIT即时编译(六)
目录1. 类编译加载执行过程2. 编译的空间开销2.1. C1 编译器2.2. C2 编译器2.3. 分层编译3. 为何HotSpot虚拟机要实现两个不同的即时编译器?4. 热点探测4.1. 方法调用计数器4.2. 回边计数器5. 编译优化技术5.1. 方法内联5.2. 逃逸分析5.2.1. 栈上分配5.3. 锁消除5.4. 标量替换1. 类编译加载执行过程先将java文件编译为class文件,再由类加载器加载到jvm。类在调用执行过程中,执行引擎会把字节码转为机器码,然后在操作系统中才能执行。在字节
2022-05-01 23:10:01
594
转载 JVM学习-内存监控工具(五)
目录1. jstat1.1. 类加载统计1.2. 编译统计1.3. gc统计1.4. 堆内分配统计1.5. 新生代gc和内存情况统计1.6. 老年代gc和内存情况统计1.7. 老年代内存统计1.8. jdk1.7永久代统计1.9. JDK8 下 元数据空间统计1.10. 内存使用百分比2. jstack2.1. 统计线程数量2.2. 高CPU占用排查3. JMAP3.1. 查看jvm配置以及内存信息3.2. dump内存信息3.3. 查看存活对象情况3.4. 查看正在等待执行finalizer方法的对象4.
2022-05-01 22:37:58
708
转载 JVM学习-垃圾回收器(四)
目录1. 查看当前机器所使用的垃圾回收器2. jvm回收流程3. jvm的几种垃圾回收器4. 常用搭配组合5. 并行,并发,吞吐量?6. serial收集器6.1. 特点6.2. 参数配置7. ParNew7.1. 特点7.2. 参数配置7.3. 流程图8. ParallelScavenge收集器8.1. 特点8.2. 参数配置8.3. 流程图9. Serial Old 收集器9.1. 特点10. Parallel Old 收集器10.1. 流程图11. CMS收集器11.1. 特点11.2. 缺点11.3
2022-05-01 21:01:11
131
转载 JVM学习-垃圾回收算法(三)
目录1. 如何判断一个对象是否能被回收1.1. 引用计数法1.2. 可达性算法2. 判断一个对象生存还是死亡3. 如何回收方法区4. jdk1.2后引用概念5. GC算法5.1. 标记清除法5.2. 标记压缩法5.3. 复制算法1. 如何判断一个对象是否能被回收1.1. 引用计数法比较古老的一种垃圾回收算法。在java的GC并没有采用增加一个引用 引用+1 减少一个引用引用减一每次清除引用为0的的对象缺点:不能回收循环引用的垃圾对象1.2. 可达性算法GC Roots 是该算法的基础,G
2022-05-01 20:25:09
77
原创 InnoDB的几个小知识点
目录一、哈希表二、有序数组三、搜索树四、InnoDB的索引模型五、索引下推六、锁6.1 全局锁6.2 表级锁6.3 行锁一、哈希表哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。优点:做数据新增时,索引的建立会比较快。适用于等值查询的场景。缺点:在进行数据区间查找时,会比较慢。二、有序数组由数组的特点可以知道,有序数组在等值查询和范围查询的场景的性能非常优秀。在有序数组中利用二分搜索可以快速的找到对应的值。但是当
2022-04-30 12:47:31
122
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人