- 博客(160)
- 收藏
- 关注
原创 Python快速入门四:Python3 数据类型转换
有时候,我们需要对数据内置的类型进行转换,数据类型的转换,一般情况下你只需要将数据类型作为函数名即可。
2025-04-08 00:12:09
572
原创 GraphRAG与知识图谱
Graph RAG 思想: 对用户输入的query提取实体,然后构造子图形成上下文,最后送入大模型完成生成知识图谱(Knowledge Graph)是一种以结构化形式描述现实世界实体及其关系的技术,通过将数据组织为“节点-边-节点”的三元组(如“北京-是-中国首都”),构建出语义关联的网络。实体(Entities):表示具体或抽象的事物,如“李白”“北京”。关系(Relationships):连接实体的边,定义交互方式,如“出生于”“首都”。。
2025-04-07 22:17:11
977
原创 Python快速入门三:Python3 基本数据类型
等号(=)用来给变量赋值。等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。执行以上程序会输出如下结果:1001000.0runoob。
2025-04-07 22:15:43
402
原创 服务异常挂掉问题:java invoked oom-killer
我的服务突然被kill了,没有任何人操作过。messages内容截图:messages日志内容:以下是kimi的分析;5. 调用栈信息含义:调用栈信息记录了触发 OOM Killer 的代码路径:6. 内存信息7. 内存节点信息含义:内核打印了不同内存节点(DMA、DMA32、Normal)的详细信息:8. 内存分配情况**含义:**内核打印了不同内存节点的页面分配情况,显示了每个大小的页面数量和状态(如 (U) 表示未使用,(M) 表示已使用)。9. 交换空间信息含义:11. 进程列表含
2025-04-07 22:15:12
961
原创 mybatisX插件的使用,以及打包成配置
装mybatisX插件;idea连接数据库;点击mybatisx-generator,设置自己装mybatisX插件;idea连接数据库;点击mybatisx-generator,设置自己要的包和类;如果要把自己的配置设置成一个自定义模板:1、 使用idea链接数据库要的包和类;
2025-01-06 23:51:49
2002
原创 spring cache源码解析(四)——从@EnableCaching开始来阅读源码
@EnableCaching:开启缓存功能;@Cacheable:获取缓存;@CachePut:更新缓存;@CacheEvict:删除缓存;
2024-12-24 00:01:50
878
1
原创 Python快速入门二:Python3 基础语法
默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。上述定义允许在源文件中使用 Windows-1252 字符集中的字符编码,对应适合语言为保加利亚语、白俄罗斯语、马其顿语、俄语、塞尔维亚语。
2024-12-08 15:19:54
781
原创 基于maxKb+ollama+qwen搭建知识库
prompt,在LLM中,Prompt是指用于引导模型生成文本的输入文本。Prompt可以是一个问题、一个主题、一段描述等等,它可以帮助模型理解用户的意图并生成相应的文本。在使用LLM进行文本生成时,Prompt的选择和设计非常重要,因为它将直接影响生成的文本的质量和准确性;
2024-11-29 00:29:46
1716
原创 Python快速入门一:Python学习前置准备
python在安装之后会默认的自带一个包管理工具pip,可以使用它去下载安装python的第三方库。而anaconda自带的包管理功能是conda,除了可以去下载安装包之外还可以去更新和升级指定版本的包,而且anaconda上还可以使用pip。
2024-11-28 00:09:53
684
原创 SpringCache源码解析(三)——@EnableCaching
总结:AutoProxyRegistrar.registerBeanDefinitions()往容器中注入了一个类InfrastructureAdvisorAutoProxyCreator。这段是不是很熟悉,没错,声明式事务中注入的也是这个InfrastructureAdvisorAutoProxyCreator类,用来生成代理对象。
2024-09-09 00:16:09
950
1
原创 AutoProxyRegistrar里关键代码分析
放入 BeanDefinitionRegistry 的 beanDefinitionMap 中的类并不是直接实例化后的对象,而是 BeanDefinition 对象,它描述了如何实例化一个类(例如,类名、构造函数参数、依赖项等)。当一个类的 BeanDefinition 被添加到 beanDefinitionMap 中时,这意味着Spring容器知道了如何创建该类的一个实例,但它并不意味着类已经被实例化或注入到容器中。该方法强制自动代理创建器使用基于类的代理,而非接口代理。这里走完后,就加一个属性了。
2024-09-02 23:38:09
836
原创 SpringCache源码解析(二)-Annotation
value 或 cacheNames: 指定缓存名称,可以是单个或多个;allEntries: 清除所有缓存项;condition: 指定清除缓存的条件SpEL表达式;简介:表示清除该方法的缓存KEY对应的缓存;可作用于类和方法,作用于类上,则表示对该类的所有方法都有效;
2024-08-27 01:07:04
1013
原创 SpringCache源码解析(一)
SpringBoot 确实是通过 spring.factories 文件实现自动配置的。Spring Cache 也是遵循这一机制来实现自动装配的。具体来说,Spring Cache 的自动装配是通过 org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration 这个类来实现的。这个类位于 spring-boot-autoconfigure 包下。
2024-08-24 00:42:19
1228
原创 【group by 之后去重,某个字段展示最后一次的值】sql怎么写
实现效果:group by 之后去重,多条条件相同数据变为一条,判断多条数据的某些字段,只要有为1的就为1。
2024-07-21 21:46:18
493
原创 IDEA 源码阅读技巧
平时,我们阅读源码的时候,经常需要查看类的层次结构。就比如我们遇到抽象类或者接口的时候,经常需要查看其被哪些类实现。拿 Spring 源码为例,CacheAspectSupport是一个关于 Bean 属性/定义的接口。如果我们需要查看 CacheAspectSupport被哪些类实现的话,只需要把鼠标移动到 CacheAspectSupport类名上,然后使用快捷键 Ctrl + H 即可。
2024-07-21 21:08:48
1511
原创 Mysql之Using index for skip scan
Skip Scan 是一种针对索引的优化技术,当查询条件无法完全匹配索引的前缀部分时,它仍然可以利用索引的某些部分来提高查询效率。这种技术尤其适用于多列索引。假设我们有一个包含两列的复合索引 (col1, col2),如果查询条件只涉及 col2 而不包括 col1,传统的索引扫描可能无法有效利用这个索引。然而,通过 Skip Scan,MySQL 可以跳过不必要的索引前缀部分,直接扫描后续部分,从而提高查询性能。
2024-07-08 22:11:41
2281
原创 Innodb Buffer Pool缓存机制(四)预读与Mysql改进的LRU策略
InnoDB提供了预读(read ahead)。所谓预读,就是InnoDB认为执行当前的请求可能之后会读取某些页面,就预先把它们加载到Buffer Pool中。
2024-06-06 00:08:03
1079
原创 Innodb Buffer Pool缓存机制(三)Innodb Buffer Pool内部组成
其内部结构如下,buffer pool 的前一部分存储【控制块】,后一部分存储【缓冲页】,如果中间有未被利用的空间,就叫他【内存碎片】吧。buffer pool 的初始化:数据库会在启动的时候,安装配置中的 buffer pool 的大小,去向操作系统申请一块内存,作为 buffer pool 的内存区域,然后会按照默认的缓存页的大小【16KB】以及对应的【800字节左右】的【控制块】的大小,在buffer pool 中划分出一个一个的缓存页和一个一个与其对应的描述数据(控制块)。
2024-06-04 23:26:50
1087
原创 记一次linux获取截取pid截取不全的问题
awk是一种强大的文本处理工具,这里用它来提取进程ID(PID)。'{print $2}'表示打印每行的第2个字段,也就是PID。
2024-05-31 00:28:22
424
原创 Innodb Buffer Pool缓存机制(二)innodb_buffer_pool_size等参数篇
在MySQL5.5之前,广泛使用的和默认的存储引擎是MyISAM。MyISAM使用操作系统缓存来缓存数据。InnoDB需要innodb buffer pool中处理缓存。所以非常需要有足够的InnoDB buffer pool空间。
2024-05-22 01:09:22
5799
原创 算法新手(一)——位运算、算法是什么、介绍位运算和简单排序
i >= 0;// 32位//////////print(-1);print(a);////
2024-04-21 20:52:49
1102
原创 SQL的in、exists和join哪个性能好?结果你可能不敢信
SQL界一直以来都流传这样一种说法,不要用in,要用exists代替in,in的性能很低。甚至在程序中使用了in还会被同行嫌弃,认为在任何时候exists的性能都比in高。小数据量这几个用起来肯定没有太多区别,而要造几百万的数据进行测试,毕竟稍显麻烦。既然所有的大神都这么说,那么就这么信吧。现在主流的观点认为,外表比内表(子查询表)结果集大,用in效率比exists高;内表(子查询表)比外表结果集大,用exists效率比in高。但实际如何,还是看最后的测试结果吧。
2024-04-21 14:13:51
2736
1
原创 浅谈Mysql(四)——Mysql知识补充
MySQL中的查询语句通常不会锁表,因为查询操作只读取数据而不修改数据。然而,当执行某些特定的查询语句或者在特定情况下,MySQL可能会对表进行锁定以保证数据的一致性和完整性。需要注意的是,MySQL的锁定机制是为了保证数据的一致性和隔离性,但过多的锁定可能会导致性能下降和并发性降低。因此,在设计数据库和查询时,应该合理选择锁定的粒度,并优化查询语句,以减少锁定的需求,并提高系统的性能和并发能力。
2024-04-08 00:06:51
2527
2
原创 浅谈Mysql(三)——MySQL/InnoDB 事务隔离级别分享
• 原子性(Atomicity• 一致性(Consistency)• 隔离性(Isolation)• 持久性(Durability。
2024-03-29 00:20:11
995
原创 浅谈Mysql(二)——慢sql、mysql锁、大事务的影响
如上图,如果事务1是超大事务,最后一行是查询id=1的数据,事务二…事务N,都在更新id=1的数据,那么事务1中的select * from …而是上undo 日志从后往前推,一直推到t1事务的视图,所以 是可能产生慢sql的。每个事务开始的时候,都会维护一个视图。这个视图记录了每一行的变化点,假设事务1是从t1时间开始记的,有变化就记。说mysql的时候,一定要区分是在service层,还是引擎层;通常认为5%的时间是定位数据,95%的时间是用来取数据。那事务1查找id=1的值的过程是怎样的?
2024-03-29 00:19:57
1092
原创 浅谈Mysql(一)——索引、隔离级别、死锁等
少了一次数据复制,这层复制就是innodb引擎向service层复制数据的过程,即使复制了一个小的字段,也是有io上的消耗的的。而后者,mysql执行前会进行分析,最终可能只走了A索引,也可能只B索引,也可能两个索引都走了,最后取交接。也有可能是这样的:mysql的索引是一种数据结构,一开始是在磁盘里的,访问一次,会加载到内存当中的,这样就少了一次查询b+数的过程;——就是为了存各种各样的buffer,有查询的缓存,有更新的缓存,有binlog刷日志的缓存,等等;会有一些cpu的性能上的问题;
2024-03-13 02:02:00
1090
原创 fastjson序列化MessageExt对象问题(1.2.78之前版本)
fastjson 序列化需注意问题,不能序列化RocketMq工具类中MessageExt对象,会报错;原因:MessageExt包含ByteBuffer类型的nio包对象,而低版本fastjson没有该类型序列化器(JavaBeanSerializer),使用默认的序列化器;ByteBuffer中getLong方法,getLong方法的position偏移8个字节,而MessageExt中,构建的ByteBuffer存储的时4个字节,所以会BufferUnderflowException异常。
2024-02-28 01:15:39
1091
原创 left join+group by语句性能优化
需求:求【昨日触达】、【本周拜访】、【本月活动数】。背景:三个维度的数据都按日统计在一张表里。首先想到的就是left join +group by。
2024-02-27 01:09:52
734
原创 @Valid常用的用法
除了@Null,@ NotNull,@ NotBlank,@NotEmpty 这四个外,其他所有的注解,传 null 时都会被当作有效处理。
2024-02-06 00:27:22
515
原创 “SET key value [EX seconds] [PX milliseconds] [NX|XX]“和redis分布式锁
在 Java 中,Redisson提供了一个RedissonLock类,它有类似于SET key value [EX seconds] [PX milliseconds] [NX]的 API 。
2024-02-06 00:24:58
1562
原创 Json打印MQ对象问题
图中红色方框当中,用的序列化方式为 fastjson,此行代码会抛出异常,导致消费失败,进入重试队列,且没有任何业务日志输出。结论:无论是kafka,还是RocketMq,消费者方法参数中的MessageExt对象不能被 fastjson默认的方式序列化。至此:问题显而易见,fastjson在1.2.31及之前,没有提供ByteBuffer 序列化器,所以用了默认的。fastjson序列化的过程源码这里就不分析了,有兴趣自己看一下,总之是要获取对应的序列化器;
2024-02-05 01:02:14
568
原创 内存问题(三)——生成内存问题案例
由于条件问题,一个查询语句把一个表里所有的记录都查询出来了,数据量很大,把内存打爆,造成现场验收卡,卡,卡…在写完递归方法后,自测一定要认真测试到递归方法层的输入与返回,功能通过不能代表代码没有问题。在使用ArrayList的时候,如果可以预知数组的大小范围,尽量对其进行容量大小的初始化,避免其频繁扩容。将服务器监控预警做到位,此次疏于预警,导致服务器异常,没有及时发现,而是由业务方通知发现的,以后应避免此类事情再次发生。
2024-01-11 00:26:02
1153
原创 mysql 条件位运算实现多值存储
mysql 条件位运算位运算实现多值存储,方法适合数据范围有限,且不会变更在业务上往往会出现多选的情况,例:选择 周一 至 周日 随意组合;数据在设计时就会如何去储存?七个二进制分别代表 周一至周日,0-未选 1-选中,例: 选择了周日、周一、 周二。对应二进制位:11000001,数据库储存十进制:67注意:mysql位运算,一个字段表示多选值;这种方式可以提高查询效率,减少like语句的应用;这种方式,。比如张三,第一次勾选了周一,第二次想新增周三、周四,那么前端传值:1,8,16;
2024-01-03 01:22:41
1368
原创 内存问题(二)——内存问题模拟
慢sql的累计,最先会导致数据库服务器cpu飙高。如果超过20%,一般来说,肯定是有慢sql了,监控慢sql,最方便的就是配一个慢sql日志,每天查一下;——因为栈没有执行完的时候,栈上所有方法不能释放。如果不释放,恰巧来了请求,内存达到一定阈值,会出发gc。除了mat分析工具,还有jprofile工具,只不过是收费的。疑惑:生成的dump.hprof文件,与课上的不一样;一般情况下,内存溢出,只是异常,不会使jvm进程死掉。t线程1代码抛出异常了,线程2还会运行;——这里的栈溢出,只是一个栈帧装不下;
2023-12-21 00:43:02
895
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人