自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(234)
  • 收藏
  • 关注

原创 工作过程中常用的linux命令

该文章主要用于个人使用,纯粹是个人经验之谈ls //查看当前目录文件ll //查看当前目录文件详细信息,常用于查看权限cd //进入文件夹cat //查看文件vim 创建/查看/修改文件pwd //查看当前目录rm -rf //强制性删除文件及一下文件mkdir 创建目录/文件夹cp a b 把a文件复制到bcp -r a b 把a目录所有文件复制到bmv a b 把a改成b/移动到blsof -i:8080 查看8080端口占用情况kill -9 pid 删掉线程

2020-11-13 15:45:24 570

原创 torch serve部署原理探索

TorchServe 采用的是 基于 Java 服务化框架 + JNI 调用 LibTorch(C++) 的混合架构,而非直接依赖 Python 进程或纯 Java 实现。局限性:对 C++/JNI 的依赖可能增加部署复杂度,需处理跨平台编译问题(如 Linux/Windows 的 .so/.dll 文件)。数据传递到 C++:通过 JNI 将输入数据(如 JSON 或二进制)转换为 LibTorch 张量(torch::Tensor)。热更新:通过 Java 管理模块动态加载/卸载模型,无需重启服务。

2025-04-24 17:59:59 532

原创 工程初探AI模型服务化部署思想

然后对自己而言python web 的就是flask /FastAPI ,然后用torch serve 部署的时候发现是java,作为一个java 工程师,那种暗暗的开心是很难描述的。注意:.pth 和 .pt 文件扩展名通常用于表示保存的模型权重或整个模型的状态字典(state dictionary)。实际上,这两种扩展名没有本质的区别,它们都是用来存储使用 torch.save() 函数保存的模型或者检查点。1.TorchScript:PyTorch 的序列化格式,支持脱离 Python 环境运行。

2025-04-24 17:46:41 719

原创 AI工程pytorch小白TorchServe部署模型服务

由于torch server底层是java ,使用了Log4j2 作为日志框架,运行的代码日志非常乱,所以建议重写log4j2.xml,同时注意,python error 日志被torch server 都处理为了info日志(感觉很奇怪)整体来看,DetectronHandler 类提供了一种将 Detectron2 模型集成到基于 TorchServe的服务中的方式,使得可以通过简单的接口调用来执行对象检测等任务。根据你的应用场景,可能需要对模型的输出进行解码或其他处理,以生成用户友好的输出。

2025-04-24 17:10:27 1225

原创 CompletableFuture 和 List<CompletableFuture> allOf() join() get() 使用经验

不过要注意的是,在这个过程中,CompletableFuture 存在时间损耗,比计数器和线程 耗时久一些,但是为了整体的可控和代码的可维护,在复杂组场景的线程池来讲使用它还是一个相对友好的方案。2.如果不同的CompletableFuture 嵌套在方法里面可以选择将CompletableFuture 放入一个List集合内,然后for 循环依次使用 get/join ,这样的方法同时显得格外的简洁美丽。当你需要详细的异常信息时,可以使用 get(),因为它提供了更具体的异常类型。

2025-04-09 18:31:22 559

原创 java 多线程阻塞主线程 parallelStream || 程序计数器 + 线程池 || CompletableFuture使用性能经验

注:问题3我保持个人建议,如果是复杂的组合类型,或者对性能要求没那么高同时希望能够很方便的管理线程,那使用CompletableFuture 是比较好的,除此之外我还是坚持 计数器+线程池 ,但是要保证计数器能够准确同时能释放,否则就是天塌了。对于简单的并行计算任务,线程池可能表现更好;parallelStream: 在启动和管理线程方面的开销较高,尤其在数据量小的情况下,可能会因为线程管理的开销而导致性能下降。大任务: 对于较大的任务,线程池可能会更高效,因为它可以避免频繁的线程创建和销毁。

2025-04-09 11:14:19 599

原创 springboot 集成ThreadPoolTaskExecutor

ExecutorService 和 ThreadPoolTaskExecutor 都是用于管理和调度线程池的工具,它们在底层都依赖于 Java 的并发库(java.util.concurrent)。通过以上分析和测试,你可以更好地理解 ExecutorService 和 ThreadPoolTaskExecutor 在性能方面的差异,并根据具体需求做出合适的选择。Spring 应用: 推荐使用 ThreadPoolTaskExecutor,因为它提供了更好的集成和便利性,即使有一定的性能开销也是值得的。

2025-04-09 10:17:06 326

原创 milvus线程池获取client报错,解决方案

加个finally 作用是将一个之前从连接池中获取的Milvus客户端实例(searchClient)返回到指定类型的客户端池(在这个例子中为SEARCH类型)。这种模式通常用于资源管理,确保资源能够被有效地重用,并防止资源泄露。

2025-04-03 10:27:38 264

原创 springboot milvus search向量相似度查询 踩坑使用经验

原因:java.lang.ClassNotFoundException:com.google.gson.ToNumberPolicy。1.前提提要:java的pom 版本为:2.4.9 milvus 版本是:2.4.13-hotfix。和上次使用的经验一样,肯定没有最新的包,果然,换成最新的谷歌的包问题解决。使用线程池获取MilvusClient连接对象,具体可看之前的博客。

2025-03-21 17:19:13 584

原创 java解析json 数据:实体中套子实体,json 字段数据解析到子实体 jackson @JsonUnwrapped

想要 @JsonProperty(“linkId”)输出到MenuItem里面。

2025-03-20 11:04:21 267

原创 springboot 集成向量数据库milvus==>1.bean 注入 2.milvus 连接池注入

最后,总结连接池的优势:通过复用连接对象,减少系统开销,尤其在频繁请求时,避免重复创建和销毁资源。而单例Bean注入确保连接池本身只创建一次,两者结合既保证了资源的高效管理,又遵循了Spring的依赖注入最佳实践。需要引入com.google.guava的包,我个人感觉是高版本的包,milvus 官方提供的依赖版本经常缺方法,下面的也一样。连接池中的对象(如MilvusClientV2)是池化的资源,而Spring管理的Bean(如连接池实例本身)通常是单例的。需要进一步对比两者的对象创建逻辑。

2025-03-05 11:42:28 553

原创 cursor sign in 网页登录成功但是不可用,报错: net::ERR_NO_SUPPORTED_PROXIES

3.这个时候就麻爪了,情不知所起,一往而情深,直接把网页copy到浏览器,发现get请求正常,这个时候就知道是cursor的问题,这个时候就考虑是不是cursor代理的问题。发现果然不一样,我的是http://@172.29.242.3:8080/但同事的是http://域账号:密码@172.29.242.3:8080/根据网上换默认浏览器 ,没有用 ,但是大家可以试一下。1.cursor 打开开发者模式。cursor一直登录失败。改HTTP2的代理也失败。改了之后,进行重新登录。

2025-02-18 12:32:22 3072 13

原创 软考中级-软件设计师通过心路经验分享

3.个人考试经历,纸质考试到机考的过程,可能工作后失去了大学考试的方法,或者大学的考试太应付了,老是不自信,不自信就会抗拒第二点,对整个计算机考试做题存在应付的心态,觉得考考就完了,做做题就完了,因为不自信反向自恋为超自信,反正已经工作了,而且是中级,有什么难得,难也是软考不行。第四次考试,真的被刺激到了,直接破釜沉舟了,不过就不考了,一鼓作气,再而衰,三而竭,这次真的是力竭之后的羞耻了,因为在大学的时候同学高级都过了,工作的同事也通过。意识到问题,还不更正,最后焦虑,习惯非常差。

2024-12-11 17:33:47 902

原创 解决milvus migration 迁移数据出现数据丢失问题

分析下来是因为buuferSize 设置的是500条数据,但是迁移工具对一次迁移的数据是是有大小限制的,如果500条数据的总大小大于4194304,就会导致数据迁移失败。注意:这个在2.3.x 迁移到2.4.5 的时候没有出现这个问题,问题出现在2.4.5迁移到2.4.13-hotfix的时候出现的。问题是数据在批量迁移的过程中,这个错误会被忽略掉。解决方案:bufferSize 修改的条数少一点。在迁移数据的时候发现数据丢失。

2024-10-28 14:20:34 574 1

原创 springboot RedisTemplate支持多个序列化方式

前提纪要:因为业务变动,需要在原先只支持protobuf的前提序列化的前提下,新增正常的序列化读取数据所以在原先的基础上进行优化。#1024程序员节|征文#

2024-10-23 15:58:37 567

原创 解决springboot redisTemplate lua execute hash脚本 field有转义符的问题

添加DefaultRedisScript 改为Object 去掉范式,设置指定的序列化方式,同时入参从 Map 改为Map而不是redisTemplate hash 存储的序列化方式。发现这个方法是直接调用下图的方法。问题:使用execute,是。会存在field有转义符。使用的序列化的方式是。

2024-10-22 18:25:37 627

原创 springboot redisTemplate hash 序列化探讨

在使用的过程中,难免会疑问为什么 key field value 序列化的方式,尤其是fields 的序列化方式。从上面两个图可以看到key,fields,value 是不同方式的序列化方式。疑问:hash如何序列化的,重点:fields 是如何序列化的?redisTemplate 有两种插入hash的方式。前提提要:这个是个人小白总结,写完博客后开始厌蠢。ok,废话不多说,先说结果,后分析。因为在配置序列化方式的时候。

2024-10-22 11:42:06 535

原创 Springboot redis luttuce lua脚本 存储压缩的protobuf key:byte[] value:map<byte,byte[]>

注释部分是正常的map<string,value> 的方式,对该lua脚本进行了优化。

2024-09-11 15:05:51 476 1

原创 springboot luttuc redis 集成protobuf,手动序列化反序列化

3.考虑到其他项目使用原生的luttuce,不支持key/value 结构不一致,所以对redis key field value 都进行压缩了(关注官网变更哦,后面会支持。路径一致,否则会报错。2.由于为了和公司其他的项目达成一致,所以版本,依赖 都尽量保证一致,所以版本需要各位看官具体决定了哈(团队使用时不同版本会有冲突)4.由于初期设计的.proto文件,可能存在压缩不完全的问题(后面会具体聊),大家可以见仁见智了啊,欢迎反馈。这个是对可变的Map 进行压缩的,可能会压缩不完全。

2024-09-11 14:57:32 767

原创 milvus使用milvus migration工具迁移数据

下载模板文件yaml,放入milvus_migration/configs 下,一般命名:migration.yaml。github地址:https://github.com/zilliztech/milvus-migration。如果目标 Milvus 中没有与源集合对应的集合,milvus-migration工具会自动创建该集合。看的出来就是shell脚本for 循环执行就行了,但是我的表很多哎,这样一点点写很烦,改一下吧。目标的milvus 官方称之为:目标target milvus。

2024-08-29 20:10:22 1284

原创 milvus多个Querynode,资源消耗都打在一个节点上

当代理收到数据加载请求时,会将请求发送给查询协调器,查询协调器决定如何将分片分配到不同的查询节点。1.数据量太小,且数据是动态新增的,且没有60s间隔,没有达到segement分区的限制,没有从growingSegement态,所以都落在其中的一个segement。3.调整flush的阈值,我觉得在小数据量的情况下操作有点杀鸡用牛刀,完全可以使用命令塞入数据的指定多个副本,做负载…2.在数据量小的情况下,少querynode ,每个querynode 多资源。其中大致的内容都看懂了,比较困难的是。

2024-08-28 16:29:16 702

原创 milvus资源限制 benchmarker压测 qps优化

总结:官网提供的资源配置,应该是以数据为主的,但是如果对milvus 有性能要求,应该提高queryNode 的资源。还是保持质疑,刚好dev 环境没有资源,不能限制pulsar ,发现性能还是很差,所有排除pulsar问题。1.dev 环境 对接不同的配置最大的qps 如下(dev的机器内存很小)2.于是认为当前的性能是匹配的,然后加上资源限制,配置。

2024-08-27 19:23:05 767

原创 wireShark tcpdump 抓包 ,检测dns

将 生成的 clirent.pcap使用wireshark 分析。过滤目标ip or 域名。

2024-08-19 16:21:22 389

原创 milvus helm k8s开启监控

文章写的很清晰 ,我这边做一下个人补充,初版可能只是配置,具体的grafana 监控报表后期补一下。values.yaml 配置 enabled: true 改为true。生产的可执行yaml (可直接手动部署)

2024-08-14 16:32:37 459

原创 milvus helm k8s开启权限管理,attu管理

eg:角色菜单是通用的,但是其权限是 库-用户-角色 ,即每个库都有该用户新的角色权限。举个例子:登录不同的游戏,换不同的区,一切重新开始。该configMap 添加 ,然后重启milvus 集群可生效。选择一个库,使用用户-角色管理,配置用户和角色对应的权限。将会生成上面的配置,然后按照官网的配置流程就行。或者直接在value.yaml 中添加该配置。开启后登录attu 会爆权限不足的配置。建立三个databases;

2024-08-14 16:24:13 532

原创 milvus - VectorDBBench benchmaker 性能测试工具使用经验

条件: --m 8 --ef-construction 64 --ef-search 64 --k 64。条件:–m 8 --ef-construction 64 --ef-search 10 --k 10。1.ivf_flat 性能验证。2.hnsw 性能验证。2.hnsw 性能验证。

2024-07-30 16:22:50 903

原创 向量数据量milvus k8s helm 对接外部安装部署流程

1.如果你想要直接部署,不对接外部组件,直接使用在线部署,当前要注意上面的问题:使用魔法先把需要的镜像下载下来!官方部署网址:https://milvus.io/docs/install_cluster-helm.md。前情概要:历经了太多的坑,从简单的到困难的,该文章主要是为大家尽可能的展现安装部署流程中遇见的坑!k8s可执行文件milvus_manifest.yaml。

2024-07-15 17:16:30 1070 3

原创 pulsar cli 命令行命令

【代码】pulsar cli 命令行命令。

2024-07-12 17:47:15 334

原创 leetCode-数组和字符串-寻找数组的中心索引

如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。给你一个整数数组 nums ,请计算数组的 中心下标。自己独自完成的第一个题,虽然效果差了些,但是要纪念一下。

2024-06-06 17:45:49 282 1

原创 使用线程池 Future超时解决集合子线程性能差问题

基于上篇文章使用程序计数器去承接多个子线程解决性能差的远程网络I/O问题,但是发现会出现集合多线程情况下的未知情况:因为程序计数器只是对线程进行阻塞,当程序计数器减为0 或者 时间到时,子线程依旧在执行和主线程异步执行,如果子线程被修改的集合被下面执行的主线程调用,则会出现。最后压测和实验发现,一个线程处理其自己的线程性能最好,同时,异步等待超时,中断线程。基于这个问题使用很多的解决方案,

2024-06-05 11:50:46 456

原创 线程池+CountDownLatch 使用过程中遇到的坑和当前的疑问

此外,虽然在这个特定的 submit 调用中直接捕获异常可能不是必需的(因为 submit 方法本身不会抛出检查型异常,并且会返回一个 Future 对象,任何异常都将被存储在该 Future 对象中),但在 lambda 表达式内部可能会抛出异常,这取决于您的代码逻辑。1.还是会存在线程池满的问题,对于当前的问题,有种无力的感觉,这个时候就在想:md,这是线程池和这个服务接口的问题,我代码一点问题没有,突然思路打开了,是不是代码可以优化一下,至少没那么难看,(1.换成全局线程池后,发现错误的范围蔓延了!

2024-05-30 11:33:59 780

原创 pytho爬取南京房源成交价信息并导入到excel

python爬取南京房源成交信息

2024-04-29 18:59:50 814

原创 使用线程池+线程计数器迭代器删除List集合元素(新建对象版)

【代码】使用线程池+线程计数器迭代器删除List集合元素(新建对象版)

2024-03-26 11:12:39 179

原创 springboot 集成 redis luttuce && redisson ,单机 && 集群模式(根据不同环境读取不同环境的配置)

luttuce 和redisson配置过程中实际上是独立的,他们两个可以同时集成,但是没有直接相关关系,配置相对独立。所以分为Lettuce 和 Redisson 两套配置。lettuce yaml配置。redisson配置文件。cluster集群模式。

2023-12-15 14:41:58 887

原创 luttuce(RedisTempate)实现hash(动态数据) expire lua脚本

2.直接String 执行LUA脚本。

2023-12-15 11:00:33 1246

原创 redis 内存机制探索篇

发现操作系统的内存大小是在376G ,查看了redis 的内存分配机制,如果说redis 没有配置maxmemory 那 redis 会在达到峰值的时候像操作系统申请内存,假设操作系统内存完全提供给redis, 那。,那上述问题就解决了,意思是当前内存使用量和redis 已经申请的内存的达到一定值的时候,redis 会向操作系统申请内存来应对内存使用满的情况,直到redis 的内存量和操作系统的内存量达到一致。意思是如果这个比例如果达到了100%就会导致内存写满,这个时候非常慌张,但是又有文章说。

2023-11-29 16:22:51 2321

原创 java.lang.UnsupportedOperationException 关于Arrays.asList问题解决

问题排查参考文档:https://blog.csdn.net/thekenofdis/article/details/78289067。

2023-11-21 15:54:23 636

原创 java switch case 多条件 正确案例&错误案例

2.错误案例: switch case 不支持 | 的方式执行!,最终执行判定的时候导致所有都执行不成功!1.多条件下可以通过case 7: case 3: 执行条件或|,简而言之就是。

2023-11-20 16:24:07 3027

原创 yyyy-MM-dd‘T‘HH:mm时间格式探索

T 即代表 UTC(Coodinated Universal Time),协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。按照北京时间计算,北京时间比UTC时间快8个小时。这个是工具类内部支持的样式,这样我们就可以通过T替换" "避免解析问题,同时也可以标注为标准时间格式的数据,一举多得。一直以后这个T是为了避免yyyy-MM-dd HH:mm:ss空格出现解析报错。但是这个T实际是一个标识符,作为小时元素的开始。

2023-08-25 17:48:21 2491

原创 java 排序方式&&解读返回值

java 排序方式&&解读返回值

2023-06-20 18:18:00 838

空空如也

空空如也

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

TA关注的人

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