- 博客(79)
- 收藏
- 关注
原创 内存溢出(Out of Memory, OOM) 和 内存泄漏(Memory Leak)的区别
程序在申请内存时,系统无法提供足够的可用内存空间以满足需求,导致程序崩溃或异常。程序在运行过程中,未能释放不再使用的对象,导致这些对象持续占用内存,最终可能引发内存溢出。系统无法满足内存申请需求。代码缺陷导致对象无法释放,可能引发溢出。
2025-02-24 18:12:13
708
原创 Java获取html标签内容中的图片链接
这种语法简单直观,易于理解和维护。:Jsoup 能够准确解析复杂的 HTML 结构,包括嵌套标签、不规范的 HTML 等。虽然在某些情况下,正则表达式的性能可能更高,但在处理复杂的 HTML 结构时,Jsoup 的性能通常更优。正则表达式:正则表达式虽然功能强大,但在处理复杂 HTML 时,表达式可能会变得非常复杂,难以维护。:Jsoup 对 HTML 的容错性很强,即使 HTML 代码不规范,也能正确解析。:虽然正则表达式也可以实现类似的功能,但其语法复杂,难以阅读和维护。
2025-02-18 17:05:45
224
原创 Java中过滤器,拦截器,AOP之间的区别以及分别执行的时机
过滤器是 Servlet 层级的粗粒度控制,适合处理所有请求的通用逻辑。拦截器是 Spring MVC 层级的细粒度控制,适合针对 Controller 的定制逻辑。AOP是方法层级的灵活切面,适合解耦业务无关的横切关注点(如日志、事务)。
2025-02-11 22:26:35
687
原创 微信开发中的openid和unionid相关总结
在处理小程序登录过程中,经常遇到openid和unionid的相关概念,以下做相关对比说明:定义:openid 是用户在某个微信公众号或小程序中的唯一标识。作用范围:openid 是针对每个微信公众号或小程序独立的。同一个用户在不同的公众号或小程序中会有不同的 openid。同一个小程序或者公众号中,登录的微信号不变的情况下,请求获取到的openid是不变的。(如:在该小程序注销后,使用同一个微信号重新注册登录,openid还是相同的)获取方式:通过微信公众号或小程序的接口(如 wx.login(
2025-02-06 21:29:26
863
原创 MySQL时间类型相关总结(DATETIME, TIMESTAMP, DATE, TIME, YEAR)
MySQL官方文档:https://dev.mysql.com/doc/refman/8.0/en/date-and-time-types.html在 MySQL 中,处理时间相关的数据类型主要有以下几种:DATE、TIME、DATETIME、TIMESTAMP 和 YEAR。每种类型适用于不同的场景,并且它们之间有一些细微的差别。以下是这些时间类型的特性和比较:DATE格式:YYYY-MM-DD范围:1000-01-01 到 9999-12-31用途:仅存储日期,不包含时间部分。精度:到天。TIM
2025-02-06 20:48:55
783
原创 MySQL获取前/后几年/月/日/秒/毫秒(DATE_ADD(),DATE_SUB())相关总结
https://dev.mysql.com/doc/refman/8.4/en/date-and-time-functions.html#function_date-add常规使用示例:复合型使用示例:注意:示例:二. DATE_SUB(date,INTERVAL expr unit)说明:date:是你想要修改的日期INTERVAL:是一个关键字,用于表示接下来的表达式是一个时间间隔expr:是你想要添加的时间量unit:是你想要添加的时间间隔的类型示例:
2024-07-26 11:07:41
470
原创 .m3u8格式视频在线播放
m3u8文件格式最初是由苹果公司提出,用于存储基于HTTP Live Streaming(HLS)协议的播放列表。HLS是一种用于实时流传输的协议,旨在提供更流畅的视频体验。m3u8文件作为播放列表,包含了视频流的信息,指导播放器如何获取和解码视频内容。
2024-07-02 16:40:37
60245
原创 腾讯地图API相关总结
开发文档:https://lbs.qq.com/service/webService/webServiceGuide/webServiceGeocoder开发文档:https://lbs.qq.com/service/webService/webServiceGuide/webServiceGcoder开发文档:https://lbs.qq.com/service/webService/webServiceGuide/webServiceIp
2024-03-12 20:49:37
836
原创 关于MySQL回表,索引覆盖,最左匹配相关总结
指的是在进行查询时,首先通过索引定位到对应页,然后再根据行的物理地址找到所需的数据行。换句话说,回表是指根据索引查询到的主键值,再去根据主键索引获取完整的数据记录。如:一张表: id,name, age, gender, address其中id主键,name普通索引;
2023-10-06 21:37:22
305
原创 为什么MySQL索引选择B+树而不使用B树?
一般innodb索引层数有几层?解析:一般情况下,3-4层,因为3-4层的B+树足以支撑千万级别的数据存储;索引列的键(key)值怎么选?解析:innodb非叶子节点的存储是指针+键值,指针一般变化不大,所以索引列要尽可能选择占用空间小的字段,因为占用越小,单个节点能存储的 指针+键值 自然就更多,存储的数据自然就更多。创建表的时候,主键是否需要自增?
2023-10-06 20:50:29
1133
原创 Mysql之 optimizer_trace 相关总结
MySQL优化器可以生成Explain执行计划,通过执行计划查看sql是否使用了索引,使用了哪种索;但是有些时候,你会发现为什么没想按照我们所想的思路执行:为什么会使用这个索引?!为什么没有使用添加的索引?!于是,MySQL5.6版本之后开始引入optimizer trace(优化器追踪),它可以查看优化器生成执行计划的整个过程,以及做出的各种决策,包括访问表的方法、各种开销计算、各种转换等等,帮助我们更好的去优化sql。
2023-08-16 22:42:49
580
原创 MySQL之 show profile 相关总结
和命令用于展示SQL语句的资源使用情况,包括CPU的使用,CPU上下文切换,IO等待,内存使用等,这个命令对于分析某个SQL的性能瓶颈非常有帮助,借助于show profile的输出信息,能让我们知道一个SQL在哪个阶段耗时最长,消耗资源最多,从而为SQL优化,提高SQL性能提供重要的依据。版本情况:Mysql从5.0.37版本开始增加了对 show profiles 和 show profile 语句的支持。
2023-08-10 16:23:35
531
原创 MySQL的数据插入总结(不存在就插入,存在就更新)
数据表id是自动递增的不建议使用该语句;如果冲突数据比较多,新增的下一条id会相应跳跃的比较大。有并发事务执行的insert 语句情况下不建议使用该语句,可能会导致产生死锁。
2023-08-07 19:13:57
3640
原创 Redis中BigKey、HotKey的发现与处理
参考自: https://developer.aliyun.com/article/788271?
2023-08-07 17:10:32
437
原创 分层领域模型相关总结(DO/PO/VO/BO/DTO/Query等概念)
(2) 使用org.apache.commons.beanutils.BeanUtils进行copy对象时,被copy的对象(source/orig)中包含的字段目标对象(target/dest)必须包含,可以有其他的多于字段,类型可以不相同,但字段名称必须一。一个是 org.springframework.beans.BeanUtils 包下的,一个是org.apache.commons.beanutils.BeanUtils 包下的。⚫ Query:数据查询对象,各层接收上层的查询请求。
2023-05-04 11:37:43
1522
1
原创 Mybatis-Flex
(阿里云开发的 Mybatis 增强框架,来至于阿里云·云效产品团队)都要强大;(老牌的 MyBatis 增强框架,开源于 2016 年),以及。据说最终结果是:无论。
2023-04-25 22:39:15
2343
原创 MySQL中文全文检索
常规数据库搜索都是用 like 语句,但是like 语句是不能利用索引的,查询效率极其低下。这也就是为什么很多功能都只提供标题搜索的原因,因为如果搜索内容,几万数据就跑不动了。Mysql 全文索引是专门为了解决模糊查询提供的,可以对整篇文章预先按照词进行索引,搜索效率高,能够支持百万级的数据检索。
2023-04-17 18:33:08
1641
原创 Spring事务传播行为总结
事务传播行为(propagation behavior):指的就是当一个事务方法被另一个事务方法调用时,这个事务与事务应该如何运行。事务传播行为是Spring框架独有的事务增强特性。这是Spring为我们提供的强大的工具箱,使用事务传播行为可以为我们的开发工作提供许多便利。对应场景外围是否开启事务外围方法是否包含异常外围是否捕获异常person方法是否包含异常最终执行结果3.1.1×√××均成功3.1.2×××√user成功,person失败3.1.3√√×。
2023-03-14 19:11:35
1843
原创 MySQL的事务总结(事务特性,隔离级别,脏读,不可重复读,幻读,常见问题)
读到了别的事务回滚前的脏数据。比如事务A执行过程中修改了id=1的数据,在未提交前,事务B读取了id=1的数据,而事务A又回滚了,这样事务B就形成了脏读。事务A首先读取了一条数据,然后执行逻辑的时候,事务B将这条数据改变了,然后事务A再次读取的时候,是A的事务修改成功后的数据,发现数据不匹配了,就是所谓的不可重复读了。一个事务在前后两次查询同一个范围的时候,第一次查到的数据比第二次查到的数据条目不一致。
2023-01-31 18:12:43
576
原创 登录授权方案:JSON Web Tokens (JWT)
JWT 即 json web tokens,通过JSON形式作为Web应用中的令牌,用于在各方之间安全地将信息作为JSON对象传输,在数据传输过程中还可以完成数据加密、签名等相关处理。可用于登录授权或者其他服务之前的信息交换;JWT本质就是一个字符串,它是一个开放标准(rfc7519),定义了一种紧凑的、自包含的方式,用于在各方之间以JSON对象安全地传输信息,它是无状态的,去中心化的;(1)JWT 是去中心化的, 不仅可以用于认证,也可以用于交换信息。有效使用 JWT,可以降低服务器查询数据库的次数。
2023-01-18 01:17:30
928
原创 Yearning MYSQL
Yearning MYSQL 是一个SQL语句审核平台。提供查询审计,SQL审核等多种功能,支持Mysql,可以在一定程度上解决运维与开发之间的那一环,功能丰富,代码开源,安装部署容易!
2023-01-12 16:29:00
174
原创 线程池相关总结
线程池(Thread Pool):把一个或多个线程通过统一的方式进行调度和重复使用的技术,统一管理,避免了因线程过多而带来使用上的开销和不可控。降低资源消耗,通过重复利用已创建的线程降低线程频繁创建和销毁造成的损耗;提高响应速度,因为省去了创建线程这个步骤,所以在拿到任务时,可以立刻开始执行。提高线程的可管理性,如控制线程并发数量,降低服务器压力,制定统一策略,增强拓展性。。等;
2022-11-16 19:57:02
1363
原创 Redis的数据淘汰策略
1. noeviction(系统默认策略):对于写请求不再提供服务,直接返回错误(DEL请求和部分特殊请求除外);:从所有key中使用LRU算法进行淘汰(LRU算法:即最近最少使用算法);:从设置了过期时间的key中使用LRU算法进行淘汰;:从所有key中随机淘汰数据;:从设置了过期时间的key中随机淘汰;:在设置了过期时间的key中,淘汰过期时间剩余最短的;
2022-11-07 15:48:12
1366
原创 Git连接远程仓库(私有/公开仓库),克隆代码
git官网下载地址:https://git-scm.com/download/win但是 ,git官网的话,下载速度比较慢,可以使用阿里的镜像下载速度会比较快:阿里的git镜像下载地址:https://registry.npmmirror.com/binary.html?path=git-for-windows/另外,git相关的文档参考链接,包含搭配使用的客户端,插件,托管平台,服务,教程,常用命令等等,git大全:https://gitee.com/all-about-gitgit安装完成后,鼠标
2022-10-31 22:04:45
2576
原创 MySQL的锁总结
MyISAM 和 InnoDB 引擎均支持表锁。优点:开销小,加锁快,不会出现死锁。缺点:锁定力度大,发生锁冲突概率高,并发度最低。# 对user表加读锁 lock table user read;# 同时对user表加读锁,对order表加写锁 lock tables user read , order write;什么情况下需要用到表锁?当需要更新表中的大部分数据事务涉及到多张表,业务逻辑复杂,加表锁可以避免死锁。
2022-10-02 13:18:28
146
原创 neo4j部署:ServiceUnavailable: WebSocket connection failure. Due to security constraint...
neo4j部署linux,连接后报错:ServiceUnavailable: WebSocket connection failure. Due to security constraint…阿里云/腾讯云需要到对应的服务器控制面板,放开对应的端口号,否则界面访问不了,也会报上面的错误!解决:一共需要放开三个端口:7473,7474,7687。可能是对应的neo4j配置文件没有配置完整;可能是防火墙拦截了对应的端口号;
2022-09-28 11:52:44
2668
原创 图数据库Neo4j
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。节点 和 边节点:代表一个实体,可以是人,物,地点等等;边。
2022-09-21 16:47:47
887
原创 GNU screen -- Linux上快速部署管理jar包
Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。(类似的应用还有tmux)
2022-09-21 16:29:52
644
原创 Mybatis-Plus 之 @TableId(value=“xxx”,type = IdType.xxx)注解
或者在数据组装返回时,自己做个 String 的转换;原因:mybatis-plus 的 ID_WORKER 策略生成了一个 Long 型的很长的19位数字,这个数字传到前台之后,超过了 js 中数字的最大范围,导致最后两位始终为 0。原因:主键 id 上没有标识 @TableId(value = “id”,type = IdType.AUTO) 注解,默认使用了 type = IdType.ID_WORKER。:设置主键类型、如果数据库主键设置了自增建议使用“AUTO”......
2022-08-18 23:32:58
5728
原创 SchedulerException:Based on configured schedule, the given trigger “xxxxxxxx“ will never fire.
被quartz调度的某个任务job的触发者cronTrigger的触发时间通过。检查找不合法的cron表达式并修改或注释该定时任务。,比如几千年之后,导致该job永远不会被执行到;根据定时器的配置,给定的触发器永远不会触发.......
2022-08-18 22:06:20
467
原创 为什么服务器选择Linux而不用Windows
为什么服务器选择Linux而不用Windows全球大量数据中心的服务器已经开始向基于 Linux Server 平台转移。相较 Windows Server 而言,Linux Server 提供了更多优势。包括 Google、Twitter、Facebook 和 Amazon 在内的诸多国际及国内的互联网巨头,都在基于 Linux Server 的服务器上运转他们的服务。Linux应该优于Windows和Mac等专有软件平台的原因有很多:高安全性:在系统上安装和使用Linux是避免病毒和恶意软件
2022-04-28 15:20:16
6832
原创 MySQL将多列数据合并成一行 函数GROUP_CONCAT的用法
Mysql将多列数据合并成一行 函数Group_concat的用法例:原始数据:一个 channel_id 对应多个 category_id处理后数据:每个 channe_id 对应的 category_id对应处理数据的sql:SELECT channel_id,GROUP_CONCAT(category_id) FROM test GROUP BY channel_id函数Group_concat的用法:group_concat([DISTINCT] 要连接的字段 [Order
2022-04-18 12:33:44
8172
2
原创 集合中的常用转化
集合中的常用方法1.将 List< T > 提取其中某个字段转换成 List< T > :例: 从 List< UserEntity > userList 提取 UserEntity 中的一个字段,如手机号 phoneNum:(1).使用stream的方式:List<String> phoneNumList = userList.stream().map(UserEntity -> UserEntity.getPhoneNum()).coll
2022-03-29 21:46:20
1183
原创 MySQL 8.0 之 JSON_CONTAINS()
Mysql 8.0 之 JSON_CONTAINS()8.0.24版本前存在mysql的一个bug:json索引不生效问题描述:通过测试,上线之后,发现网页某个推荐界面空白,查找原因之后发现有个接口响应超时,检查后不存在问题,对比测试与生产环境的sql结构也不存在问题,执行sql语句: SELECT count(1) FROM table_xxx WHERE json_contains(字段名,"String")执行结果:测试环境:零点几秒;生产环境:几十秒没响应;问题解
2022-03-28 20:23:21
11075
2
原创 json的转换与解析
阿里FastJsonUtil工具类1.添加maven依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.41</version> </dependency>2.封装的FastJsonUtil工具类:public class FastJso
2021-12-03 18:58:25
434
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人