- 博客(197)
- 资源 (1)
- 收藏
- 关注
原创 快速掌握MCP——Spring AI MCP包教包会
是一个开源的协议,可以让大模型应用更方便的集成各种数据源和工具,经典举例为:使用Type-C接口适配各种电器,使用统一的接口为大模型应用提供各种工具。MCP官网中将MCP主要分为:MCP Hosts、MCP Clients、MCP Servers、Local Data Sources、Remote Services这几个部分。同时,MCP官网还提供了多种语言的SDK,python、java、c#、typescript等都有。在本文中所使用到的框架为spring-ai。
2025-04-03 21:12:59
492
原创 JVM-GC(G1)实践—GC异常定位、参数调整、GC更换
自JDK9的正式发布,G1便成为了JDK9+的默认垃圾回收器,与之对应的提案也算是有了一个正式的完结。查阅javase官网,可对G1有一个大致的了解。简单来说,G1所管理的堆区域由一系列区域(region)组成,每一个region是G1对JVM进行内存管理的最小单元。需要注意的是,在G1中的年轻代和老年代是动态分配的,即:同一个region,在不同的时刻可能属于不同的分代,如时刻A是属于年轻代,时刻B又属于老年代了。
2025-03-25 20:15:00
805
原创 SDN高性能网络之——P4快速入门并实现ECMP(Load Balancing)
P4是(与协议无关的,可编程的数据包处理器)的简写。从我的视角来看,P4即是一门技术体系,也是一种编程语言。与传统路由交换厂商的固有硬件(ASIC)相比,P4是一种技术颠覆,使用它可以实现任何的协议并进行处理。在学习P4时,我们需要注意P4当前有两个版本,分别为p4_14(2014年)与p4_16(2016年)两个版本,这和python2与python3类似,也就是p4_14和p4_16的语法是不兼容的。由于p4_14已逐渐废弃,学习时选择p4_16版本即可。
2025-02-07 18:15:00
993
原创 Blender 3D建模——AI脚本3D建模技巧
前些天刷到了的机械结构视频,颇受震撼。的模型源文件大多为格式的,3D建模领域小白的我折腾了一下体验还不错,奈何Inventor软件太贵最后只得转到了。完全免费,及具备script脚本功能,这为的我们带来了许多遍历,即便对Blender软件操作不熟悉,通过翻阅和的普及下,也能让我们快速创作出我们想要的模型。为避免遗忘,特此本文记录一些使用AI进行建模的技巧,方便后续快速查找。(本文使用的Blender版本为4.3.2,脚本与方法基本通用)
2025-02-05 19:50:56
1579
1
原创 AutoGen入门——快速实现多角色、多用户、多智能体对话系统
autogen是一多智能体的框架,属于微软旗下的产品。依靠我们可以快速构建出一个多智能体应用,以满足我们各种业务场景。本文将以几个示例场景,使用AutoGen快速构建出多智能体应用,一起体验下它的具体用法。
2025-01-21 20:00:00
6584
4
原创 使用MPTCP+BBR进行数据传输,让网络又快又稳
通过对前文《链路聚合技术——多路径传输Multipath TCP(MPTCP)快速实践》和本文的综合应用,相信对于MPTCP的配置和实践有了一定的了解,体验下来后也会感悟到MPTCP的应用领域还是比较多的。与LACP与BOND相比,MPTCP在数据传输时不会因子路径的增加而新开辟单独的TCP连接,这种底层协议级的链路聚合也具有更好的性能表现。在开源产品方面,基于MPTCP的链路聚合路由器也获得了不错的好评。愿网络越来越快,越来越稳~
2025-01-03 18:00:00
1686
原创 链路聚合技术——多路径传输Multipath TCP(MPTCP)快速实践
有什么办法可以让网络传输时让链路叠加,以实现网络传输时的“更快更强”?LACP(Link Aggregation Control Protocol,链路汇聚控制协议),一般使用支持LACP的设备进行链路汇聚linux bond,在具有多网口的linux服务器上配置bond,根据需求使用指定的bond类型实现链路汇聚MPTCP(MultiPath TCP),在现有的TCP协议上扩展实现的多路径传输协议,可将数据包拆分为多个子包传输。
2025-01-01 11:42:02
1629
原创 SD-WAN——使用WireGuard与ipv6实现高速免费异地组网
在本文中,通过免费的WireGuard与IPv6,再结合价格低廉的路由器完成了主机到主机,网段到网段的组网,算是SD-WAN组网的一种实践与体验。从本文也可以看出,WireGuardIPv6这种组网方式对于各种组网场景几乎都能应对,与高昂的专线组网相比,这种方式的组网也带来了极大的便利性。网络真奇妙,为WireGuard与各大运营商。
2024-12-20 17:06:43
4214
2
原创 使用Spring AI中的RAG技术,实现私有业务领域的大模型系统
RAG,即,检索增强生成。它是大模型和信息检索技术的结合技术。百度百科上的解释为:当模型需要生成文本或者回答问题时,它会先从一个庞大的文档集合中检索出相关的信息,然后利用这些检索到的信息来指导文本的生成,从而提高预测的质量和准确性。“让大模型为行业赋能”。RAG的工作流程可参考SpringAI中的这张图:即:在用户向大模型检索某个信息时,会携带关于所需要检索的背景知识,这样以让大模型可以参考已有知识来进行应答。使用SpringAI内置的RAG和功能可以快速实现一个针对私有业务领域。
2024-11-12 19:00:00
2432
1
原创 使用SpringAI快速实现离线/本地大模型应用
使用Spring AI进行离线大模型平台的搭建又快又简单,智能对话、图片识别、文生图、图生图样样都不错。为Spring AI点赞,向ollama与各种开源大模型致敬!
2024-11-08 20:06:42
3091
1
原创 【即见未来,为何不拜】聊聊分布式系统中的故障监测机制——Phi Accrual failure detector
昨天在看tcp拥塞控制中的(Bottleneck Bandwidth and Round-trip propagation time)算法时,发现了这一特点:在BBR以前的拥塞控制算法中(如Reno、Cubic、Vegas),都依赖于丢包事件的发生,在高并发时则会看到网络波动的现象。而在BBR诞生后,由于其基于数学模型的思想,BBR通过对包延迟的实时计算,持续对瓶颈带宽进行估算,使得网络又快又稳。又看了些BBR的相关资料后,笔者内心有被其中的数学机制。
2024-10-17 22:40:18
1067
1
原创 结合理论与实践,聊下为什么有时http2比http1.1还慢
突然提出了一个质疑:http2一定比http1.1快吗?中学老师经常告诉我们,当题中有“一定”这个关键词时,这个题基本都是错的。那么对于“http2一定比http1.1快吗?”这个问题也是如此,在很多场景下http1.1仍然比http2快。具体在哪些场景下http2比http1.1慢,在了解了http1.1和http2的原理后,便可很容易列举几个,再配合实验验证即可。
2024-09-19 19:15:00
1118
原创 NGINX开启HTTP3,给web应用提个速
如rfc9114所述,http3主要基于QUIC协议实现,在具备高性能的同时又兼备了可靠性的特点,在大多数场景下可提高web应用的访问速率。关于http3和quic的介绍网上资料有很多,这里不再过多赘述。自nginx的1.25.0版本开始,nginx首次对http3进行了正式支持,这也为我们在WEB服务器上部署http3提供了极大的便利。本文以重实践角度出发,使用web服务器——NGINX,分享下如何在NGINX中开启HTTP3。在浏览器中通过ip或域名访问搭建的站点。
2024-09-08 12:16:43
2972
原创 还在人工代码review?reviewdog和PMD了解一下
一般来讲,通过代码review可发现的问题主要有以下几类:代码规范,如常量名应使用大写驼峰命名……代码漏洞,如代码空指针……业务代码缺陷,如用户登录成功后应提示“登录成功”实际代码为“登录失败”……本文将介绍一种代码merge request提交后自动进行代码review的方案。通过既定的规则扫描,实现对增量代码的代码自动review与评论,为项目中的代码review提个速
2024-08-05 22:40:37
1180
原创 使用frrouting、gns3、pim实现ipv6组播(三)
ipv6下实现组播收发包。ospfv3、pimv6、pim sm asm。模拟器支持私有vm、qemu、virtalbox、docker镜像、kvm等各种镜像,丰富的网络与GUI可视化界面解压kvm包,然后执行如下命令启动。
2024-07-28 16:54:37
1071
1
原创 Frrouting快速入门——北向接口事务cli与gRPC(二)
在前文中我们使用frrouting内置的CLI工具vtysh实现了ospf组网通信。使用cli的方式配置网络的过程稍微有一点繁琐,但它整体还算简单且可靠,也是目前配置frrouting使用最多的方式。比如在sonic中,sonic的配置模块与FRR通信也使用的是CLI的方式进行配置的传递。
2024-07-15 21:42:36
1842
1
原创 Frrouting快速入门——OSPF组网(一)
FRR是FRRouting的简称,是一个开源的路由交换软件套件。其作者源自老牌项目quaga的成员,也可以算是的新版本。FRR支持的协议众多,也有较为完备的北向接口。FRR的安装方式多种多样,如仅仅把它当做工具使用,使用docker运行FRR是一个不错的选择。docker方式运行frr时需要注意:较新版本FRR的docker仓库由quay.io维护,并没有在dockerhub中。
2024-07-04 21:06:57
2778
1
原创 聊聊二叉堆、红黑树、时间轮在定时任务中的应用
程序=算法+数据结构。不同的算法与数据结构有着它独特的美,在实际业务运用时也需要从具体的业务出发进行多维度分析,选择一个底层实现最适合的框架,以让您的业务场景运行起来速度又快占用空间又少,岂不美哉。
2024-06-07 23:02:37
1351
原创 一文秒懂cli、snmp、yang、netconf、restconf、openconfig
自以太网诞生以来,各种技术引领着一代代的潮流。星辰闪耀,数不尽的网络承载着各种通信的可能,让我们也不禁感慨网络之浩瀚。前有“云大物移智链边”的风起云涌,后有AI浪潮的大放异彩。上层应用的遍地开花,也迫使着底层网络技术的不断发展。SD-WAN、P4、QUIC、SRV6、SNOIC等一堆和网络相关的技术也应运而生。无论以上种种技术如何的变迁,最终信息的传递还是基础硬件扛下了所有。尽管这些年来也有高性能硬件也在不断诞生,如多年前处理网络数据包速度达到6.5Tb/s的Tofino芯片犹如破竹之势,与传统交
2024-04-06 17:22:38
3190
原创 从vrrp、bfd、keepalived到openflow多控制器--理论篇
在一个网络中,通常会使用vrrp技术来实现网关的高可用。直接使用vrrp由于定时间隔较长存在检测迟缓的问题,融入bfd机制后可实现毫秒级故障检测。在sdn中要实现设备的高可用,实现控制器的集群和高可用是非常有必要的
2024-03-31 22:23:11
1184
原创 使用mininet快速入门ONOS路由交换技术与原理-路由篇
但在芸芸网络的世界中,主机间的通信除了二层域外更多的还是纷繁复杂的三层ip路由通信。上篇文章使用mininet搭建了一个简单的网络拓扑,并实现了同一交换机下同网段多主机的通信,其中涉及到的通信知识主要以二层mac地址通信为主。路由协议可分为静态路由协议和动态路由协议,在动态路由协议中,根据路由协议的作用范围主要又分为IGP与EGP。其中EGP中的BGP协议根据其强悍的设计可支撑起各数以亿记的路由条目,同是也是动态路由协议中最为复杂的一个。而本文将结合BGP路由协议,通过一小示例实现SDN下不同网段多主机通信
2024-02-29 21:50:57
1820
原创 使用mininet快速入门ONOS路由交换技术与原理-交换篇
onos-2.7.0ideamininet提供了多种方式模拟openfllow交换机与主机,如命令行和python脚本方式。另外还可使用mininet源码中的miniedit构建需要模拟的拓扑信息,miniedit软件截图如下:如要使用miniedit,可将mininet代码clone,,运行对应位置的miniediy.py即可。
2024-01-18 22:22:10
2405
原创 SDN控制器-ONOS中的最终一致性存储
ONOS中设备信息的存储基于GOSSIP协议实现,节点间进行数据交换主要有定时随机传播和数据变更后主动广播两种方式。通信的实现上基于atomix组件(底层基于NETTY)使得用户无需关心具体的通信过程。在节点数据交换的过程中,主要使用PUSH的方式进行数据交换。首次PUSH时本节点仅传递本节点的摘要信息(基于时间戳)推送到对端节点,对端节点收到摘要数据后进行对比,将新的数据PUSH到源节点。
2023-12-17 17:00:21
458
原创 使用bitmap实现可回收自增id
设计一个方法,每次调用返回一个自增id,同时需要满足以下要求。思路一:如果数据量非常小,直接使用一个集合存储已使用的id,使用循环和维护这个集合即可,但数据量大了,此方法返回数据的时间复杂度和占用的空间都是比较大的。思路二(推荐):建立一个(位图)bitmap,初始时bitmap的每一位都为0,0代表未使用,1代表已使用。每次请求获取id时从此bitmap的第0位开始返回一个未使用的index即可。以一个bitmap长度为65536的bitmap为例,示意图如下:初始时每一个bit位值都为0此时请求id返回
2023-11-09 22:47:14
366
原创 四叉堆在GO中的应用-定时任务timer
在数据量不太大的情况下,四叉堆的综合性能比二叉堆更优GO中time.timer和time.tick是使用四叉堆实现的time.tick的任务每次运行后会重新入堆,time.timer的任务每次运行后会从堆顶删除。
2023-10-15 18:22:39
500
原创 map、sync.map、concurrent-map适用场景与源码解析
在go中进行KV存储时,常用map、sync.map、concurrent-map这3种map实现。项目中选型时具体应该使用哪个需要分析具体的业务场景,可参考sync.map中的这段话:最后,再简单总结一下:项目中选型时,应优先考虑使用原生map进行KV存储;多个协程的并发读写场景,应优先考虑在map中加上互斥锁(Mutex)或读写锁(RWMutex)实现,这样对map的编码方式改动也最小。并发场景为读多写少的场景,则可考虑sync.map;
2023-08-27 23:03:44
668
原创 使用家庭宽带和摄像头,实现公网直播
那天去逛商场看到有个营业厅,本想进去问问有没有存话费送话费的活动,结果被忽悠办了一个19.9升千兆宽带加送一个路由器的业务。
2023-07-03 12:08:24
3379
原创 多网口UDP发包无法收到回包排查与解决
最近几周几乎都是单休,加班很多,也遇到了很多未知的问题,杂事也多时间比较紧张,也没有多少空余来进行一些总结积累。这点让我很是怀念起几年前的日子,任务安排周期长,做技术纯粹又专心。前几天遇到了一个UDP发包无法收到回包的问题,趁着今天不加班来记录回顾一下。
2023-06-30 23:20:32
2798
原创 go中后台启动程序
很多时候,我们想要让某个程序在后台运行,通常会使用nohup来启动这个程序。最常见的用法如下:如果要启动的程序较少,手动使用nohup启动就可以了。但遇到一次需要启动很多程序,那么使用程序脚本来启动这些程度则是一个不错的选择。正好最近公司项目中每次调试时需要启动很多关联程序,每次逐个检查每个程序的运行状态也是一件无聊又枯燥的事。正好最近接触到go,为了偷懒就用go来写个脚本代码,那些费时伤神的事就让go去干吧~
2023-06-17 22:36:37
1457
原创 使用thrift进行RPC通信(附c程序示例)
为了实现不同语言的程序跨进程、跨主机通信,一般可以采用mq或rpc框架来实现。对于异步通知的场景可以使用mq,如zeroMQ。但对于某些实时性较强且同步的应用场景,使用成熟的rpc框架来实现也是一种比较更好的选择。开源的rpc框架有很多,其中跨语言的rpc框架以使用google公司采用protobuf协议的grpc框架,和facebook公司的thrift框架最为知名。
2023-05-17 21:37:22
1344
1
原创 mongodb使用docker搭建replicaSet集群与变更监听
在mongodb如果需要启用变更监听功能(watch),mongodb需要在replicaSet或者cluster方式下运行。replicaSet和cluster从部署难度相比,replicaSet要简单许多。如果所存储的数据量规模不算太大的情况下,那么使用replicaSet方式部署mongodb是一个不错的选择。
2023-03-30 20:16:47
1933
1
原创 onos中引入外部依赖
当前版本的onos使用的是bazel进行依赖管理的那么对于外部依赖的管理也由bazel负责在bazel的官方文档中也有对应的说明,详细可参考在ONOS中,通过查看源码根目录下的可以看到关键信息:对于外部依赖的引入是由完成的,此文件存放在项目的路径下,如下图:在此文件中定义了依赖包的具体远程地址每个包的依赖都和maven仓库中的资源对应。
2023-02-15 23:48:21
461
原创 java-raft框架之atomix进行分布式管理
atomix的api远不止本例中的两个,还有其他很多的api。如分布式锁、分布式事务、分布式自增id、分布式队列、分布式信息号等,这些在atomix中都有实现,详细可见atomix的类方法:也正如当前所说,当前基于JAVA实现的atomix已经停止维护了。如果要在生产环境中使用atomix,可以移步atomix的官网,获取在k8s环境下的新版atomix的使用方式,依然很强大。
2023-01-30 22:44:54
1164
原创 SDN控制器-ONOS源码编译与mininet快速入门
sdn快速入门,使用ONOS源码方式编译。ONOS-2.7.0+Bazel+Mininet快速入门。
2022-11-21 13:28:09
3433
9
原创 docker下快速部署openldap与self-service-password
通过docker部署slf-service-password,实现ldap下的用户密码自助修改功能
2022-11-01 22:32:02
1617
1
原创 docker下快速部署openldap与PHPLdapAdmin
在一个组织中,为了简化各种内部系统的账号和密码的管理,往往就需要ldap来进行管理了。对于ldap的实现方式也非常多,但在免费的开源系统中,openldap是ldap的首选系统。同时,在这一切讲究快速的时代,采用docker来进行openldap的部署,也是一个很好的选择。在这里,我们来一起学习体验一下。
2022-10-31 23:44:40
1971
原创 花了大半天,写了个springdoc/springfox/swagger文档转word的工具
swagger/springfox/springdoc接口文档导出word,附源码
2022-08-22 16:41:50
1733
4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人