自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(105)
  • 收藏
  • 关注

原创 RAG检索增强生成全流程实践

检索增强生成,langchain,RAG,pdf切分,向量模型,双路检索,BGE,微调

2024-01-17 15:36:19 1210

原创 Elasticsearch Query详解

Elasticsearch查询特性,查询详解,match、highlight、term、collapse、phrase、filter查询

2023-12-20 17:40:39 1058

原创 Elasticsearch文本处理

文本处理是在index和search阶段对文本数据的处理,包括去除无效字符、分词、替换等操作。

2023-12-20 17:37:31 446

原创 Elasticsearch Mapping详解

Elasticsearch mapping映射详解,参数配置,空间优化。动态映射。无须显示指定文档字段数据类型,直接添加数据即可,es会自动推断数据类型,一般在测试时使用,生产过程避免使用字段推断。显式映射。创建索引时显式指定字段和数据类型。索引创建后不能修改字段名(可以添加alias),不能修改数据类型,可以添加新的字段运行时字段。在查询时确定数据类型,由于不会提前索引数据,可以节省存储空间以及提供更灵活的映射操作,但是在部分搜索API中的表现不同,并且由于运行时确定字段,性能上存在一定损失。

2023-12-20 17:36:04 986

原创 es混合检索与langchain检索增强

Elasticsearch全文检索,混合检索,向量检索,语义检索,kNN检索,rrf重排,langchain检索增强

2023-11-04 20:05:04 1117 1

原创 大模型加速与性能对比

正常运行通义千问会提示安装以获得更快的推理速度,缺少这个包并不影响模型运行。事实证明安装之后对于推理速度的提升也很小(5%),网上说对于微调训练的速度提升比较大,因为是在内网环境下,安装还费了一番周折。本人环境。

2023-09-22 18:28:17 854

原创 内网环境下ubuntu 20.04搭建深度学习环境总结

安装驱动和cuda其实挺简单的,内网可能稍微麻烦点,但本人还是碰到了各种各样的问题,安装完后PC工作站使用一段时间又会卡死,工作站又放在机房,每次重启很麻烦。找不到卡死的原因,推测是驱动的问题,又卸载重装,来来回回遇到很多问题,在这里统一记录下。关闭系统休眠关闭自动更新包冲突错误解决在安装各种包的过程中多次遇到版本冲突,无法解决,所有的都不执行,解决办法是使用apt下载需要的包,使用强制覆盖安装。内网安装外网包。

2023-05-19 16:28:57 346 1

原创 Java、Redis、Jackson序列化与反序列化

序列化:简单来说就是将应用程序中的数据转化为特定的格式,可以用于网络传输,保存到磁盘,数据库等。例如Java中的ObjectOutputStream、Python中的pickle是专门的序列化类、Hadoop中各节点数据传输。反序列化:将序列化对象从磁盘、网络等位置重新转化为程序中的对象信息。## 为什么需要序列化> 实现数据的跨语言使用实现数据的跨平台使用数据去内存地址降低磁盘存储空间1. 存储对象在存储介质中,以便在下次使用的时候,可以很快捷的重建一个副本。直接从磁盘、网络等位置转化为

2023-04-10 13:09:32 1611

原创 Using Where,Using index,Using index condition

当有where条件,但是不能使用索引或者使用索引后仍需扫描全表或者索引树判断条件的情况,简单来说,有效的where条件就Using where。索引覆盖,索引树已包含所有需要的数据,无需回表查询官方文档:https://dev.mysql.com/doc/refman/8.0/en/index-condition-pushdown-optimization.html索引条件下推(Index Condition Pushdown,ICP)是MySQL使用索引的情况的优化。简单来说,

2023-04-04 11:44:17 1975

原创 Spring中ApplicationContext扩展接口

ApplicationContext是一个ResourceLoader,可用于加载资源对象。Spring中的Resource是Java.net.URL类的包装。可以方便的由getResource方法从包括从类路径,文件系统,标准URL等位置加载。可以实现ResourceLoaderAware接口方便的加载资源。除此之外需要注意的一点是在开发过程中可以正常加载类路径下的资源,打成jar包之后会报错,比如以下写法,加载类路径下/img-types目录下的所有文件,开发环境正常,打包情况报错。

2023-04-04 11:42:55 102

原创 Spring事务

Spring事务到此告一段落了,根本没想到会写这么多内容,从动态代理到AOP到事务传播机制、源码分析。网上的文章大多对几种事务传播机制列个表一通介绍就完事了,这些源码中都有,当时从网上寻求答案,未果,只好自己写了这篇文章了。

2023-04-04 11:29:18 84

原创 SpringSecurity过滤器分析

无怪网友大多说SpringSecurity使用成本高,但是价值不大,许多功能看起来很鸡肋,添加的过滤器有点多,从一些过滤器来看,有前后端不分离时代的味道。本人配置的SpringSecurity,几乎没剩下什么了,自己写几个Filter估计也不是太难,网友诚不欺我。

2023-04-03 08:55:11 253

原创 SpringMVC执行流程,源码分析(一)

明确HandlerMapping、HandlerAdapter的作用和关系HandlerMapping决定请求走哪条HandlerExecutionChain,这条链中包含前置处理,HandlerAdapter适配器的Handler真正处理,后置处理。HandlerAdapter适配器模式,支持了Handler的多样性和灵活性。

2023-04-03 08:52:03 106

原创 Springboot-devtools原理分析

springdev-tools实现开发过程中,自动重启应用程序,提供了一定的方便。使用的话,需要引入starter依赖,然后设置IDEA文件更新策略,我一般设置为切出IDEA时更新类和文件。devtools检测类路径下文件夹变化,然后通过反射调用主类的Main方法重启应用程序,实现热部署。

2023-04-03 08:48:58 1377

原创 Springboot Validation 参数校验

如下为自定义枚举值校验,用于解决属性定义不是enum类型,但想约束其值为枚举类型,例如上面的gender,假如定义为Gender,那么默认只能MALE或者FEMALE,想要男、女也通过校验,可以使用该注解@Target({String message() default "错误的枚举值";Class

2023-04-03 08:45:29 193

原创 Spring AOP

面向切面编程(Aspect-oriented Programming)功能:让关注点代码和业务代码分离面向切面编程就是指: 对很多功能都有的重复的代码抽取,再在运行的时候往业务方法上横向插入”切面代码“。传统的OOP过程通过纵向的继承方式完成代码的封装、可重用等,每一个类有对应的功能或完成指定的业务。这纵向拓展的方式解决了大部分场景的代码冗余问题,但随着业务系统的越发复杂,OOP也显出了一些弊端。

2023-03-31 08:44:56 66

原创 Spring Mybatis项目多数据源配置

项目中使用到了多种数据库,需要配置多数据源,网上解决办法多种,但看来看去感觉总有点不靠谱,主要自己对于Spring如何管理事务,抽象统一接口供JPA、Mybatis整合,于是再翻了翻Mybatis和Spring事务管理的源码,调试了一次开启事务的数据库访问流程,如下代码所示。

2023-03-31 08:43:49 420

原创 MySQL索引

索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的,如果我想找到m开头的单词呢?或者ze开头的单词呢?是不是觉得如果没有索引,这个事情根本无法完成?

2023-03-31 08:40:13 38

原创 MySQL日志

MySQL数据库中的参数可以分为两类,动态参数和静态参数。静态参数是只读的,不能通过SET命令修改,只能改MySQL 的配置文件(my.cnf)。动态参数可以通过SET命令修改。SET命令可指定修改参数的作用域,SESSION,指该会话有效;GLOBAL,当前MySQL服务下有效,重启后失效。想要永久修改有效,需更改配置文件。

2023-03-31 08:10:49 37

原创 MySQL EXPLAIN命令

虽然使用了索引,但该索引列的值并不唯一,这样即使使用索引查找到了第一条数据,仍然不能停止,要在目标值附近进行小范围扫描。但它的好处是不需要扫全表,因为索引是有序的,即便有重复值,也是在一个非常小的范围内做扫描。估算要找到所需的记录,需要读取的行数。评估SQL 性能的一个比较重要的数据,mysql需要扫描的行数,很直观的显示 SQL 性能的好坏,一般情况下 rows 值越小越好。查询时匹配到的分区信息,对于非分区表值为NULL,当查询的是分区表时,partitions显示分区表命中的分区情况。

2023-03-31 08:09:30 52

原创 Mybatis运行流程源码分析

以XML文件配置为例这一步就是创建XMLParser解析主配置文件以及所有mapper文件的过程,所有的相关信息都被保存在Configuration对象中,最终返回一个DefaultSqlSessionFactory对象。依次解析每一个节点及其子节点对于每一个mapper文件,都有对应的XMLMapperParser解析在XMLStatementBuiler对象中,解析了每个增删改查标签的所有属性,构建了MappedStatement对象。我们在mapper中写的每个CRUD标签,都被解析成了M

2023-03-30 11:19:24 64

原创 Mybatis缓存

MyBatis一级缓存的生命周期和SqlSession一致。MyBatis的一级缓存最大范围是SqlSession内部,有多个SqlSession或者分布式的环境下,数据库写操作会引起脏数据,建议设定缓存级别为Statement。一级缓存失效四种情况查询条件不同执行了修改操作不同的sqlSession手动清除一级缓存(sqlSession的clearCache方法)总结。

2023-03-30 11:07:29 54

原创 Mybatis插件原理

在以下四大对象的创建过程中,出现了pluginAll方法- Excutor 在Configuration的newExecutor方法中- StatementHandler 在Configuration的newStatementHandler方法中- ParameterHandler 在BaseStatementHandler的构造方法中- ResultSetHandler 在BaseStatementHandler的构造方法中其中,- ParameterHandler作为Stat

2023-03-30 09:07:06 34

原创 JVM内存区域

程序计数器:当前线程所执行的字节码的行号指示器,相当于计算机系统中的PC寄存器,每个线程有一个独立的程序计数器。如果线程正在执行Java方法,计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行本地方法,这个计数器的值为空。- Java虚拟机栈:线程私有,生命周期与线程相同,相当于计算机系统中函数调用的栈。虚拟机栈描述的是Java方法执行的线程内存模型:每个方法被执行的时候,Java虚拟机都是同步创建一个栈桢(Stack Frame)用于存储局部变量表,操作数栈、动态连接、方法出口等信息。方

2023-03-30 08:58:29 51

原创 Java动态代理

JDK的动态代理是基于反射实现。JDK通过反射,生成一个代理类,这个代理类实现了原来那个类的全部接口,并对接口中定义的所有方法进行了代理。当我们通过代理对象执行原来那个类的方法时,代理类底层会通过反射机制,回调我们实现的InvocationHandler接口的invoke方法。并且这个代理类是Proxy类的子类。这就是JDK动态代理大致的实现方式。优点JDK动态代理是JDK原生的,不需要任何依赖即可使用;通过反射机制生成代理类的速度要比CGLib操作字节码生成代理类的速度更快;缺点。

2023-03-30 08:33:04 993

原创 InnoDB体系架构

下图来自MySQL技术内幕Innodb后台多线程模型,主要负责刷新内存池中的数据,保证缓冲池中的内存缓存是最近的数据。此外,将已修改的数据文件刷新到磁盘文件,同时保证数据库发生异常的情况下InnoDB能恢复到正常运行状态。

2023-03-17 14:43:17 71

原创 Hadoop3 HA高可用集群搭建-hadoop3ha高可用集群搭建

Hadoop3高可用(HA:High Available)测试集群搭建。NameNode是整个Hadoop集群的大脑。HDFS 在非 HA 模式的集群下,NameNode 和 DataNode 是一个主从的架构。在这样的主从架构之下只有一台 NameNode。一台 NameNode 的好处是无需因为元数据的同步而考虑数据的一致性问题。但这种模式下一旦NameNode挂掉,整个集群将不可用。

2023-03-17 14:42:47 632

原创 ExceptionHandlerExceptionResolver源码分析

ExceptionHandlerExceptionResolver部分属性. . .自定义WebMvcConfigSupport,不推荐,需要配置整个Mvc通过提供扩展接口参数解析器、返回值解析器、消息转换器、contentNegotiationManager,可通过MvcConfigureresponseBodyAdvice,通过ControllerAdive注解上两者都支持通过WebMvcRegistrations配置。

2023-03-17 14:41:50 106

原创 COUNT(1)、COUNT()和COUNT(字段)-count1count和count字段

这个问题在网上有好多说法,甚至一些已经工作许久的开发者也没能弄清楚,网上博客千千万都不如官方文档来得靠谱,MySQL8.0官方文档地址,可以找到关于。

2023-03-17 14:40:21 109

原创 大数据集群环境搭建

clickhouse默认配置文件在/etc/clickhouse-server/config.xml中,其中对配置进行了比较详细的注释,用户配置文件在users.xml中,这两个文件不建议进行更改,而是在config.d和user.d中新建配置文件,这两个文件夹中的文件默认会被加载,合并覆盖默认配置文件。在节点1上,/etc/yum.repos.d/centos.repo。为方便统一管理,将sh脚本放在/usr/local/bin目录中。3个节点,配置2个分片,其中第1分片2个副本,第2分片1个副本。

2023-03-13 22:14:40 100

原创 关于MySQL的锁(持续更新。。)

写这篇的原因是自己在了解Spring事务的实现原理时,对程序执行结果的一些疑问,发觉自己对于MySQL的认识还是太片面了。准备看一看《高性能MySQL》这本书,到时候对于MySQL的锁来一个总结以下均基于MySQL8.0.19,Innodb引擎。

2023-03-13 22:12:59 33

原创 虚拟机搭建hadoop集群-虚拟机搭建hadoop集群

注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的 data和logs目录,然后再进行格式化。测试集群:$HADOOP_HOME/bin/hadoop jar jar文件 启动类 输入文件路径 输出路径。/opt/cluster_nodes文件保存了所有节点的host。

2023-03-10 21:14:28 270

原创 虚拟机对象探秘-虚拟机对象探秘

对象的内存分配过程并不是线程安全的,一般有两种解决方案: - 对分配内存空间的动作进行同步处理,采用CAS配上失败重试的方式保证更新操作的原子性 - 每个线程在Java堆中预先分配一块内存,称为本地线程分配缓冲(Thread Local Allocation Buffer,TLAB),线程中的对象分配直接在线程内部完成,只有本地的TLAB用完了,分配新的内存才需要同步锁定3. 内存分配之后,虚拟机将对象分配到的内存空间(不包括对象头)都初始化为零值

2023-03-10 21:13:15 49

原创 虚拟机类加载机制-虚拟机类加载

Java虚拟机把描述类的数据从加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以直接使用的Java类型,这个过程被称为虚拟机的类加载机制。

2023-03-10 21:11:55 46

原创 虚拟机类加载器

通过灵活定义classloader的加载机制,我们可以完成很多事情,例如解决类冲突问题,实现热加载以及热部署,甚至可以实现jar包的加密保护。更多内容可以查看以上参考《深入理解Java虚拟机第三版》Oracle官方Java虚拟机规范机第三版》Oracle官方Java虚拟机规范。

2023-03-10 21:08:15 35

原创 虚拟机内存管理

事实上,Java虚拟机可以看作一个阉割版的操作系统。C、C++运行在操作系统上,Java字节码运行在虚拟机上。虚拟机的设计几乎都可以在操作系统中找到影子,其中,内存管理是不得不说的一块。Java与C++之间有一堵由动态内存分配和垃圾收集技术所围成的高墙。

2023-03-10 21:07:24 93

原创 DB-GPT-HUB Text-to-SQL微调

是一个利用LLMs实现Text-to-SQL解析的实验项目,主要包含数据集收集、数据预处理、模型选择与构建和微调权重等步骤,通过这一系列的处理可以在提高Text-to-SQL能力的同时降低模型训练成本,让更多的开发者参与到Text-to-SQL的准确度提升工作当中,最终实现基于数据库的自动问答能力,让用户可以通过自然语言描述完成复杂数据库的查询操作等工作。本次微调使用的基座模型是Qwen-14B-Chat。spider数据集,包含训练数据8659条,测试数据1034条。

2023-12-06 15:40:34 289

原创 多版本Python安装

源码安装python,windows安装python,安装多版本python

2023-12-06 09:16:30 376

原创 docker安装libreoffice

docker安装Libreoffice,服务端转pdf文件,pdf格式转换,Libreoffice转化pdf参数

2023-11-19 16:17:08 905 2

原创 centos9镜像源、网络配置、误删python恢复

centos9镜像源、阿里云配置,centos误删python恢复,centos9网络配置

2023-11-11 10:25:09 330

空空如也

空空如也

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

TA关注的人

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