- 博客(245)
- 收藏
- 关注
原创 如何在本地使用 DeepSeek Janus-Pro
本文介绍了如何本地部署DeepSeek Janus-Pro多模态模型。Janus系列包含Janus、JanusFlow和Janus-Pro三个版本,通过创新框架统一视觉理解和生成任务。文章详细指导了从GitHub克隆项目、修改代码(改用1B轻量级模型)、创建Docker镜像到本地运行的完整流程。测试表明,1B模型在多模态理解和文本生成方面表现优异,能准确解释图像内容并生成细节丰富的超现实主义图像,效果媲美Stable Diffusion XL。该方法解决了原Gradio演示的软件冲突问题,使模型可在个人电脑
2025-08-08 19:58:04
922
原创 2025 年最佳 AI 代理:工具、框架和平台比较
AI代理:企业创新与效率的新引擎 随着企业面临重复性任务与创新需求的双重挑战,传统自动化已难以应对复杂场景。AI代理凭借感知、决策、学习和多模态处理能力,成为突破性解决方案。2025年领先的AI代理工具包括: 开发框架:如LangGraph(状态保持)、AutoGen(多代理协作)和CrewAI(角色化代理),适合技术团队定制开发。 无代码/开源工具:Dify(低代码)、AutoGPT(任务分解)和Rasa(对话AI),助力非技术团队快速部署。 企业级平台:DevinAI(全栈开发)、Agentforce(
2025-08-08 19:40:23
810
原创 2025 年最佳no-code和open-source AI Agents
低代码/开源AI工具助力非技术团队快速开发智能应用。Dify作为低代码平台支持可视化开发,兼容数百种语言模型;AutoGPT能分解复杂任务并保持记忆,适合技术团队;n8n提供拖拽式工作流自动化;Rasa专注定制化对话系统;BotPress结合可视化与代码钩子创建聊天机器人。这些工具均支持多模型集成、API连接和开源扩展,显著降低AI应用开发门槛,适用于企业级部署和快速原型设计。
2025-08-07 22:30:16
785
原创 什么是AI Agents
AIAgent是一种能够感知环境、自主决策并采取行动以实现目标的智能系统。文章介绍了AIAgent的核心特征:自主性、学习适应性和环境交互能力,以及反应型和思考型两种主要类型。在应用方面,AIAgent在医疗领域可辅助诊疗和预测分析,在金融领域则用于自动化交易和欺诈检测。文章还推荐了使用Docker和SpringAI运行AI模型的技术方案。这些智能系统正通过实时数据处理和决策能力,推动各行业的数字化转型。
2025-08-07 20:08:40
1099
原创 如何设计一个开放授权平台?
本文介绍了开放授权平台的两大核心功能:认证和授权。在认证方面建议采用OAuth2.0协议标准;授权方面详细说明了第三方应用注册流程,包括提供clientID、消息推送地址和密钥对等必要信息,并阐述了公钥加密、私钥解密的交互机制。特别指出授权平台会同步返回处理结果,而业务数据则通过异步推送方式传输。最后推荐了SpringAI-LLM模型自动生成SQL语句的技术方案。
2025-08-06 22:53:23
317
原创 什么是OAuth2.0协议?有哪几种认证方式?什么是JWT令牌?和普通令牌有什么区别?
OAuth2.0是一种开放授权标准,允许用户授权第三方应用访问其存储在服务提供方的数据,而无需共享密码。该协议包含四种认证模式,核心在于处理三方之间的信任关系。普通令牌存在性能瓶颈问题,而JWT令牌通过将授权信息加密存储在令牌字符串中,使资源服务器无需频繁向授权服务器验证,有效提升性能。JWT令牌本质是一个包含用户信息和授权的加密字符串,解决了高并发场景下的令牌验证效率问题。
2025-08-06 22:50:18
467
原创 ES集群规划与调优
Elasticsearch集群规划需考虑数据规模、增长趋势和机器配置。JVM堆内存建议不超过32G,30G堆约可处理10T数据。业务搜索场景通常需要2-4台机器(千万到数十亿数据),大数据分析场景(如ELK)可能需要上百节点(千亿级数据)。节点可配置为Master、Data或Coordinator角色,支持多角色组合。分片数量建议按节点数的1.5-3倍设置,单个分片不超过30GB,日志类按日期索引可设单分片。
2025-08-04 18:16:11
291
原创 ESDocValues机制
ElasticSearch通过倒排索引实现快速搜索,但在排序和聚合时效率较低。DocValues通过构建正排索引解决了这个问题,将文档映射到词项,便于排序、聚合等操作。DocValues默认开启,关闭后无法进行相关操作。它采用列式存储结构,支持数据压缩(如数字类型使用最大公约数),减少磁盘空间占用并提高访问速度。DocValues与倒排索引配合使用,前者用于搜索,后者用于聚合,共同提升ElasticSearch性能。
2025-08-04 18:10:04
680
原创 ES集群调优策略
本文介绍了Elasticsearch索引性能优化的几个关键方法:1)首次数据导入时设置副本数为0,写入完成后再恢复;2)自动生成docID避免版本检查;3)合理设置mappings减少不必要索引;4)禁用_source字段或过滤不必要内容;5)调整刷新间隔降低系统负载;6)使用批处理提升写入效率。这些优化措施通过减少磁盘I/O、降低CPU消耗、合并操作等方式,可显著提升Elasticsearch的索引性能。
2025-08-04 18:03:07
668
原创 衡量分布式系统的指标有哪些
本文介绍了分布式系统的关键性能指标:吞吐量、响应延迟和并发能力,三者往往相互制约。同时阐述了系统可用性的衡量方式及其作为容错能力体现的重要性。在可扩展性方面,指出了分布式系统追求线性扩展性的目标。最后讨论了副本机制带来的数据一致性问题,强调一致性模型对用户体验的影响。文章还推荐了相关技术架构体系的延伸阅读。
2025-07-29 09:05:38
300
原创 JVM 内存分配性能问题
JVM内存分配不合理会导致频繁GC,影响系统吞吐量和响应时间。文章通过模拟抢购接口的压力测试,发现高并发下堆内存不足引发FullGC问题。通过分析GC日志,调整-Xms和-Xmx参数增大堆内存后,系统吞吐量提升40%,响应时间降低50%。建议结合具体业务场景,通过监控GC日志持续优化JVM内存配置,以提升系统性能。
2025-07-29 08:44:12
824
原创 TLAB(Thread Local Allocation Buffer)
TLAB是JVM为每个线程分配的私有内存区域,用于避免多线程对象分配时的同步冲突。线程在自己的TLAB中分配对象,满后归还给Eden区并申请新TLAB。这种机制分摊了同步开销,提高了分配效率。GC时Eden区的TLAB和非TLAB区域会被统一处理,存活对象被复制到Survivor区。所有堆上对象均可共享,GC只根据根集合扫描对象。该机制类似于TCMalloc等内存分配器的优化策略。
2025-07-24 22:24:41
358
原创 G1垃圾收集器
G1垃圾收集器采用"垃圾优先"原则,通过分区域(Region)内存管理实现,兼顾空间回收效率与停顿时间控制。其设计目标是避免完全回收,但当并发收集速度不足时会触发单线程全GC(计划优化为并行)。关键参数包括:Region大小(1-32MB)、最大停顿时间、并行/并发线程数等。G1通过动态区域分配平衡吞吐量与延迟,适合大内存应用场景。
2025-07-24 22:22:29
413
原创 JVM之方法内联
方法内联是JVM将高频调用方法替换为其方法体的优化技术,旨在消除方法调用的额外开销(栈帧操作、参数传递等)。热点代码判定标准取决于编译模式(客户端1500次/服务端10000次),可通过参数调整。内联条件包括:方法体大小限制(热点方法<325字节)、推荐使用private/static/final修饰以避免类型检查。该优化能提升性能,但需平衡方法体大小与缓存效率。
2025-07-10 20:54:22
327
原创 Kafka的无消息丢失配置怎么实现
Kafka保证消息不丢失的核心在于确保消息"已提交"并满足特定条件:生产者需使用带回调的send方法,设置acks=all和适当的重试次数;Broker端需配置unclean.leader.election.enable=false,设置副本数≥3且min.insync.replicas>1;消费者应禁用自动提交位移。这些措施共同构成了Kafka消息可靠性的保障机制,但需注意其保证是有限度的,依赖于系统的基本可用性前提。
2025-07-10 20:48:44
830
原创 JVM调优第一步,了解JVM常用命令行参数
本文介绍了JVM命令行参数使用指南,包括标准参数(-开头)、非标准参数(-X开头)和不稳定参数(-XX开头)的分类。通过HelloGC示例程序演示了内存溢出情况,并对比了内存泄漏与内存溢出的区别。重点讲解了GC日志分析方法和内存区域地址表示方式,强调不同垃圾回收器的日志格式差异。最后探讨了JVM调优的两个核心指标:吞吐量(用户代码时间占比)和响应时间(STW时长),建议根据应用类型(科学计算/Web服务)选择合适的GC策略(PS+PO或G1)。
2025-06-22 19:39:57
633
原创 彻底征服 Spring AOP 之 理论篇
AOP(面向切面编程)是OOP的补充,其基本单元是切面(Aspect),由切点(Pointcut)和增强(Advice)组成。Spring AOP通过动态代理将切面织入目标对象的方法连接点(Joinpoint)中,实现横切逻辑。Advice包括前置、后置、环绕等类型,通过切点表达式定位特定方法。典型应用场景如权限校验、日志记录等,通过@AspectJ注解配置切面,结合@Pointcut定义匹配规则,用@Before/@Around等实现增强逻辑,使核心业务与通用逻辑解耦。
2025-06-22 19:33:44
778
原创 怎样设计聚合?
摘要:本文介绍了DDD领域建模中聚合构建的5个步骤。以保险投保业务为例,首先通过事件风暴识别实体和值对象;其次选择具有独立生命周期的聚合根(如投保单和客户);然后根据高内聚原则构建包含聚合根、实体和值对象的聚合;接着建立聚合内对象间的引用关系模型;最后将相关聚合划分到同一限界上下文中。文中特别说明了投保聚合中客户数据引用的处理方式,确保数据一致性。
2025-06-17 23:22:57
469
原创 如何理解DDD的领域和子域?
领域是指特定的业务范围或边界,领域驱动设计(DDD)通过细分业务领域来解决问题。领域可以划分为更小的子领域,类似于科学研究中的分析方法。例如,研究桃树时将其细分为器官、组织直至细胞单元,对应DDD中从领域到子域的分解过程。子域的划分有助于建立清晰的模型边界,最终构建完整的业务知识体系。
2025-06-17 23:20:15
417
原创 如何调优Kafka
Kafka调优的核心目标是提升吞吐量(TPS)和降低延时。吞吐量指每秒处理的消息数或字节数,延时则指消息从发送到持久化或消费的耗时。调优时可采用批次化处理策略,通过适当增加少量延时(如从2ms增至10ms)换取吞吐量的大幅提升(如从500条/秒提升至100,000条/秒),这种权衡在实际场景中往往可接受,因为内存操作远快于网络I/O。优化漏斗表明,合理设计可显著改善系统性能。
2025-06-14 21:58:12
1069
2
原创 Spring中观察者模式的应用
观察者模式与发布订阅模式都用于对象间通信,但存在关键差异。观察者模式包含观察者和被观察者,被观察者直接通知观察者;而发布订阅模式通过经纪人(Broker)中介,发布者和订阅者完全解耦。在Spring框架中,事件驱动模型基于观察者模式实现,包含ApplicationEvent(事件)、ApplicationListener(监听器)、ApplicationEventPublisher(发布者)和ApplicationEventMulticaster(事件广播)四大核心组件。Spring提供了多种内置事件如Co
2025-06-14 21:41:07
1571
1
原创 如何评价代码的质量
摘要:本文探讨了高质量代码的五个核心特性:1)可维护性,强调代码修改时能保持稳定;2)可读性,提出代码应便于人类理解;3)可扩展性,遵循"对修改关闭,对扩展开放"原则;4)灵活性,体现为代码对新功能的兼容性;5)简洁性,遵循KISS原则,用简单方案解决复杂问题。文章指出这些特性相互关联,共同构成优秀代码的标准。其中,可维护性因人而异,而可读性是其他特性的基础,最终目标都是提升代码质量和开发效率。
2025-06-11 21:53:49
428
原创 Spring Security是如何完成身份认证的?
摘要:Spring Security认证流程包含四个关键步骤:1)用户凭证被封装为UsernamePasswordAuthenticationToken;2)AuthenticationManager进行验证;3)验证成功返回包含权限信息的Authentication对象(密码被移除);4)认证信息通过SecurityContextHolder存入安全上下文。示例代码展示了完整的认证过程,包括自定义AuthenticationManager实现和线程绑定认证信息的操作。该流程体现了Spring Securi
2025-06-11 21:45:24
592
原创 UC并发工具 CountDownLatch应用&源码分析
摘要:CountDownLatch是JUC包下的并发计数器工具,用于并行任务协同。主线程通过await()等待计数器归零,子任务完成时调用countDown()减1。源码分析显示其基于AQS实现,state存储计数值,await()阻塞线程至state=0,countDown()CAS减state并在归零时唤醒阻塞线程。适用于多任务并行处理并需全部完成的场景,如文中的三任务并行示例。还介绍了超时等待和中断处理机制。
2025-06-08 14:49:56
934
原创 深入了解NIO的优化实现原理
网络通信中,最底层的就是内核中的网络 I/O 模型了。随着技术的发展,操作系统内核的网络模型衍生出了五种 I/O 模型,《UNIX 网络编程》一书将这五种 I/O 模型分为阻塞式 I/O、非阻塞式 I/O、I/O 复用、信号驱动式 I/O 和异步 I/O。每一种 I/O 模型的出现,都 是基于前一种 I/O 模型的优化升级。
2025-06-08 14:35:13
634
原创 CDN:静态资源如何加速?
CDN(Content Delivery Network/Content Distribution Network,内容分发网络)。简单来说,CDN 就是将静态的资源分发到,位于多个地理位置机房中的服务器上,因此它能很好地解决数据就近访问的问题,也就加快了静态资源的访问速度。在大中型公司里面,CDN 的应用非常的普遍,大公司为了提供更稳定的 CDN 服务会选择自建 CDN,而大部分公司基于成本的考虑还是会选择专业的 CDN 厂商,网宿、阿里云、
2025-06-06 23:04:09
1147
原创 配置管理:成千上万的配置项要如何管理?
配置管理的主要方式包括文件管理和配置中心管理。在Linux系统中,可通过配置文件或sysctl命令动态调整配置。应用开发中,初期常将配置与代码耦合,后期独立为配置文件(如properties、xml、yaml格式),但仍需重启生效。配置中心(如Apollo、Disconf)通过存储和推送机制实现动态更新,避免重启。关键设计包括:选择合适的存储组件(MySQL、ZooKeeper等)、变更推送机制(轮询或长连)、以及高可用方案(客户端两级缓存)。配置中心的高可用性尤为重要,可通过内存和文件缓存实现灾备,确保服
2025-06-06 22:56:22
624
原创 什么是I/O多路复用?
I/O多路复用技术让程序能用单线程高效管理多个I/O流,避免多线程开销。其工作原理类似同时监控多个炉灶:通过集中轮询机制(如select/poll)或事件通知机制(如epoll/kqueue)实时检测各I/O状态,实现单线程并发处理。典型实现包括跨平台的select/poll函数,以及系统专用的epoll(Linux)和kqueue(BSD/Mac),它们都能显著提升程序吞吐量和响应速度。这种技术尤其适合高并发网络应用场景。
2025-06-01 20:55:05
161
原创 在Java中,NIO(New I/O)与传统的I/O模型有什么不同?NIO中的核心组件有哪些?
Java NIO与传统I/O的主要区别在于阻塞机制:传统I/O是阻塞式的,需等待当前操作完成才能继续;而NIO是非阻塞式的,可以同时处理多个I/O操作。NIO的核心组件包括通道(数据传输管道)、缓冲区(数据容器)、选择器(多通道状态监控器)和通道适配器(不同类型I/O接口连接器),这些组件共同提升了I/O处理效率,避免了单线程阻塞问题。NIO模型类似自助餐厅的多任务处理方式,比传统I/O的单线程等待模式更高效。
2025-06-01 20:52:36
215
原创 TCP粘包和拆包问题是如何产生的,以及如何在网络编程中处理这些问题
文章摘要: TCP粘包和拆包是网络编程中的常见问题。粘包指多条消息被合并发送,接收方难以区分;拆包指单条消息被分割发送,接收方难以重组。解决方法包括:添加消息边界标识、使用固定长度消息或在应用层采用JSON/XML等协议处理粘包;通过消息长度标识或固定长度格式避免拆包。这些方法能有效保证TCP传输的准确性和完整性。
2025-06-01 20:50:36
291
原创 电商产品详情接口并发编排提升性能
本文介绍了使用Java的CompletableFuture实现电商系统产品详情接口的并发编排优化。通过异步调用产品基本信息、库存、定价和评论等多个服务,显著提升接口响应性能。文章详细展示了项目结构设计,包括Controller层、Service层和各服务类的实现,重点解析了CompletableFuture.allOf方法用于并发任务编排,以及thenApply进行结果合并的关键技术。这种非阻塞的异步设计不仅提高了系统性能,还保持了代码的模块化和可扩展性,为类似场景的接口优化提供了实用参考方案。
2025-06-01 14:25:09
933
原创 MySQL中的锁
摘要: MySQL InnoDB引擎通过多种锁机制解决并发事务问题,包括共享锁(S锁)和排他锁(X锁)等行级锁,以及表级锁和意向锁。锁的类型根据操作需求选择,读操作可使用MVCC避免阻塞,写操作需加锁保证数据一致性。InnoDB还支持间隙锁(Gap锁)防止幻读。死锁发生在多个事务互相等待资源时,MySQL能自动检测并解除。锁的粒度影响并发性能,行锁比表锁更细粒度但开销更大。实际应用中需平衡锁的并发控制与系统性能。
2025-06-01 11:22:15
1035
原创 Tomcat优化篇
reloadable:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下 class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用。你可以简单地理解为,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。nio:new I/O,同步非阻塞的I/O操作,比传统的bio有更好的并发运行性能。
2025-06-01 11:19:25
1348
原创 Https
摘要:HTTPS已成为现代互联网安全的重要标准,本课程将从原理到实战讲解HTTPS技术。内容包括:通过OpenSSL工具生成服务器证书和自建CA机构进行签名,详细介绍在Windows和Linux系统中安装配置OpenSSL的步骤,以及如何创建私钥、待签名证书和根证书。最后讲解如何将生成的证书配置到Nginx服务器,实现HTTPS安全连接。课程旨在帮助学员掌握企业级HTTPS应用技术,提升网站数据传输安全性。
2025-06-01 09:40:12
1005
原创 内存模型以及如何判定对象已死问题
本文介绍了Java内存管理相关内容,主要包括: 使用VisualVM的VisualGC插件监控JVM内存; 演示三种内存溢出情况:堆内存溢出(OOM)、方法区溢出(Metaspace)和栈溢出(StackOverflow); 四种引用类型(强引用、软引用、弱引用、虚引用)的区别及代码示例; 对象生命周期和垃圾回收机制,包括可达性分析和GC Roots概念; finalize方法的作用和局限性。 文章通过具体代码演示了各种内存异常场景,并分析了垃圾回收的判断标准和工作原理,帮助理解JVM内存管理机制。
2025-06-01 09:24:21
1174
原创 Java并发编程
本文系统地介绍了Java并发编程的核心知识,涵盖了线程基础、并发特性、锁机制和阻塞队列四大模块。 线程基础部分首先讲解了进程与线程的区别,线程是CPU调度的基本单位。接着详述了多线程的优缺点,包括提升CPU利用率但可能带来线程安全问题。还介绍了线程状态转换、创建线程的三种方式(继承Thread、实现Runnable、实现Callable)以及线程的常用方法。 并发编程三大特性部分深入解析了: 原子性:通过synchronized、CAS、Lock和ThreadLocal四种方式保证 可见性:使用volati
2025-06-01 09:22:36
921
原创 Spring的事务机制
Spring事务机制基于数据库事务和AOP实现,通过代理对象处理@Transactional注解方法,控制事务的创建、提交与回滚。事务隔离级别对应数据库设置,传播机制则通过多数据库连接实现。失效场景包括:非代理对象调用方法或将方法设为private(cglib无法代理)。事务的核心在于修改连接autocommit属性,由AOP在方法执行前后管理事务状态。
2025-05-27 21:33:41
308
原创 作为程序员,你应该有产品意识
产品意识是站在产品角度思考问题的思维方式,包含用户意识、数据意识和商业意识。用户意识要求挖掘真实需求,提升用户体验;数据意识强调通过数据分析验证决策;商业意识关注产品价值。程序员培养产品意识需要转变思维习惯:从技术实现转向用户体验,从功能开发转向价值创造。具备产品意识能提升模块体验、优化技术方案、改善协作效率,为产品和自身带来更大价值。关键在于解放思想、改变习惯并付诸实践,在技术思维基础上融合产品视角。
2025-05-27 21:26:34
386
原创 为什么要使用线程池
摘要:Java线程创建成本高昂,涉及内存分配和系统调用,频繁创建销毁线程效率低下。线程池通过复用线程提升性能,并管理线程统计信息实现高效任务调度。推荐阅读业务幂等性技术架构相关内容。
2025-05-24 16:46:43
243
原创 如何用事件风暴构建领域模型?
本文介绍了通过事件风暴进行领域建模的方法,以用户中台为例,重点阐述了产品愿景和业务场景分析两个关键阶段。产品愿景阶段需要明确产品定位、目标用户和核心价值,通过团队讨论达成一致;业务场景分析则需从用户视角出发,梳理典型业务流程(如系统岗位设置、用户权限配置、登录校验等),识别领域对象。该方法强调跨职能团队参与,确保业务需求与系统设计的有效对接。
2025-05-24 16:39:53
294
蚂蚁金融智能中台的数据底座建设与应用场景
2025-02-06
腾讯社交网络APM端到端运维监控体系解析及其应用场景
2025-01-20
对于MySQL调优,需要确认业务表结构设计是否合理,SQL语句优化是否足够,该添加的索引是否都添加了,是否可以剔除多余的索引等等
2025-01-17
基于Activiti的低代码办公平台设计与开发:实现流程与表单自动化管理
2025-01-11
银行业IT治理最佳实践-构建安全、高效的IT治理框架以适应数字化转型
2025-01-10
华为变革及流程管理框架:IPD和ISC流程的详细解析
2024-12-18
领域驱动设计中实体与限界上下文的重构方法
2024-12-17
构建高效研发体系:IPD理论及案例解析
2024-11-01
领域驱动设计(DDD)中统一语言的开发方法与实践
2024-10-26
代码为王时代:车企软件开发能力转型策略解析
2024-10-21
云闪付微服务基础设施建设及分布式ID实践
2024-10-10
加州政府企业架构框架V2.0
2024-09-24
业务结果驱动型企业架构的分阶段规划
2024-09-24
TOGAF系列指南:企业架构中的业务场景方法论
2024-09-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人