- 博客(110)
- 收藏
- 关注
原创 并发环境下如何防止一个定时任务被多次执行
原理:利用或实现线程间互斥。try {// 检查任务是否正在执行if (!// 执行业务逻辑注意事项需配合volatile关键字保证的可见性(JMM 内存模型要求)。仅适用于同一 JVM 内的多线程,无法解决分布式环境下的并发问题。
2025-05-30 13:02:50
557
原创 企业级单元测试流程
企业级的单元测试流程不仅是简单编写测试用例,而是一整套系统化、自动化、可维护、可度量的工程实践,贯穿从代码编写到上线部署的全生命周期。1.《Mastering Unit Testing Using Mockito and JUnit》:这本书深入探讨了使用 JUnit 和 Mockito 进行单元测试的高级技巧,包括自动化测试、持续集成和代码质量监控等方面。测试目标:保证核心业务逻辑的正确性、边界覆盖、异常处理、性能边界、并发情况等。JaCoCo 生成代码覆盖率报告(class/line/branch)
2025-05-24 22:00:29
1214
原创 多线程中的ABA问题详解
ABA问题是多线程编程中一个微妙但重要的问题,特别是在实现无锁数据结构时。理解ABA问题的本质和解决方案对于编写正确、高效的并发程序至关重要。通过使用版本号、标记位或JDK提供的原子工具类,可以有效地避免ABA问题带来的风险。
2025-04-24 22:08:45
426
原创 Multi-Agent Design: Optimizing Agents with Better Prompts and Topologies 多代理搜索系统
多代理系统(Multi-Agent Systems, MAS)在复杂任务(如协作决策、任务分解)中展现了显著优势,但其设计高度依赖。
2025-04-15 01:48:46
496
原创 netty的内存池是怎么实现的?
netty内存池可以分配堆内存和非堆内存(Direct内存),内存分配的核心算法是类似的,从堆内存分配代码入手来学习整个内存池的原理。1)获取系统变量io.netty.allocator.numHeapArenas,通过System.setProperty(“io.netty.allocator.numHeapArenas”,xxx)或者增加JVM启动参数-Dio.netty.allocator.numHeapArenas=xxx设置,如果设置了值,把这个值当做Arena的个数。netty内存池实现原理。
2025-04-12 12:54:50
231
原创 当运筹学遇到了投资交易平台
时,其核心价值在于通过数学建模和优化算法,解决投资组合配置、交易执行优化、风险控制等复杂问题。以下是具体应用场景和示例,以“高频交易中的最优订单执行”需求为例展开。,核心目标是最小化交易成本。
2025-04-04 00:19:43
745
原创 运筹帷幄:制胜软件开发
通过数学建模、算法设计和数据分析,运筹学能够帮助开发团队更高效地实现软件需求,尤其是在涉及资源分配、路径规划、调度优化等场景时。通过运筹学方法,软件开发不仅实现了功能需求,还通过数学优化显著提升了系统效率,体现了技术与业务的深度融合。VRPTW是NP-hard问题,无法通过穷举法求解。假设某电商公司需要开发一个智能物流配送系统,核心需求是。运筹学在软件开发项目中的作用主要体现在。,属于运筹学中的组合优化问题。将物流配送需求建模为。
2025-04-04 00:12:28
338
原创 伦理赋能战略:高消费商场的责任竞争力与社会价值共创实践
高消费商场作为奢侈品与高端服务的聚集地,其战略决策不仅影响商业利润,更关乎社会价值观的传递。报告提出“伦理决策四维框架”,涵盖可持续采购、数据隐私保护、员工福祉升级及社区价值反哺,并结合实际案例验证伦理战略对品牌溢价与长期收益的驱动作用。关键词:高消费商场、伦理战略、可持续奢侈品、数据伦理、社区共生。通过将责任竞争力嵌入品牌基因、技术创新与社区共生,管理者可实现从“奢华符号贩卖者”到“社会价值策源地”的跃迁。未来,唯有那些率先将伦理转化为体验、将责任转化为故事的商场,才能在消费升级浪潮中持续领航。
2025-04-02 01:17:12
911
原创 Kubernetes 集群管理与微服务集群的异同分析
通过以上协作模式,Kubernetes 集群与微服务集群可共同构建高可用、易维护的云原生架构。
2025-03-29 01:03:36
642
原创 Java Enum 类values 的神秘作用
然而,这里的 Set 方法只关心方法名,并不关心方法签名,所以在调用 Explore.removeAll(Enum) 后,只剩下了 [values]。由于 values() 方法是由编译器在枚举类的定义中插入的一个静态方法,因此如果你将枚举类型向上转型为 Enum,则values() 方法将不可用。由于类型擦除(相关介绍参见基础卷第 20 章)的缘故,反编译器得不到 Enum 类的完整信息,因此只能将 Explore 类的基类作为一个原始的 Enum 类来显示,而不是实际上的 Enum。
2025-03-29 01:02:22
272
原创 kafka常见面试题
以上问题覆盖了 Kafka 的分布式一致性、性能优化、容错机制及与生态系统的集成,适合考察候选人对 Kafka 底层原理和复杂场景的解决能力。实际面试中可结合候选人的项目经验,延伸至具体场景设计(如“如何设计一个日均千亿级消息的金融风控系统”),进一步考察工程实践能力。
2025-03-26 01:18:49
1688
原创 websocket面试必知必会
以上问题覆盖了 WebSocket 的核心原理、协议设计、性能优化及安全防护,适合考察候选人对实时通信技术的深度理解。实际面试中可结合具体业务场景(如金融、物联网)进一步提问,例如:“如何设计一个支持百万级并发的 WebSocket 消息系统?”(需结合负载均衡、集群化等方案)。
2025-03-26 00:36:34
1181
原创 mysql中的游标是什么?作用是什么?
游标是处理逐行数据的工具,适合在存储过程中实现复杂逻辑,但需谨慎使用以避免性能问题。当查询返回多行结果时,游标可以逐行读取数据,适用于需要对每一行数据进行复杂逻辑处理的场景(例如条件判断、计算、更新其他表等)。当简单的 SQL 语句无法直接完成复杂操作时(例如需要基于前一行结果处理下一行),游标提供了一种灵活的处理方式。它的作用类似于编程语言中的迭代器,允许遍历查询返回的多行数据,并对每一行执行特定操作。游标通常与存储过程结合使用,用于在数据库服务端直接处理查询结果,避免将大量数据传输到客户端。
2025-03-21 13:15:25
346
原创 高并发编程有哪些规范?
领域核心规范与工具架构设计分布式服务拆分、熔断降级、消息队列异步化并发编程、无锁数据结构、清理数据库优化分库分表、索引设计、缓存策略安全与性能限流降级、HTTPS加密、连接池管理测试监控JMeter压测、Prometheus监控、全链路追踪通过以上规范,可系统化提升高并发系统的稳定性、扩展性和安全性。更多细节可参考相关开发手册和行业实践。
2025-03-20 23:58:30
707
原创 7 sustainable innovations to watch
Something that is for certain, is that it is not possible for us to continue to rely on fossil fuels if we are to significantly slow down and even stop global warming. “We need to get to a point where we are not reliant to the extent we are today on these
2024-09-05 10:40:30
822
原创 基于java的 aws s3文件上传
接下来,需要在Java项目中添加AWS SDK的依赖。可以使用Maven或Gradle进行依赖管理。代码示例中还包括了设置文件元数据、设置文件访问权限以及获取文件URL的步骤。这些步骤可以帮助您更好地控制上传文件的属性和访问权限。首先,确保您已经在AWS上创建了一个S3存储桶,并拥有相应的访问密钥和密钥ID。这些凭据将用于在Java代码中进行身份验证。替换为想要为上传文件指定的对象键,替换为自己的S3存储桶名称,替换为要上传的文件的路径。aws s3 文件上传代码。在上述代码中,需要将。
2024-01-13 22:05:06
1341
1
原创 Solving distributed transaction management problems in microservices architecture using Saga
Distributed transaction management Sega .
2023-09-25 23:22:02
224
原创 指令流水线
总之,计算机指令流水线是一种强大的硬件技术,它可以显著提高处理器的性能和吞吐量。当一条指令进入流水线时,它会从流水线的一端进入,然后依次通过每个阶段的处理。在每个阶段,指令可能会被中断并返回到流水线的开始,以便其他指令得以继续处理。通过并行处理大量的数据和计算,计算机指令流水线可以帮助实现高效的模型训练和实时推理。通过将多个图像和纹理的处理分配给不同的流水线阶段,图形处理器可以实现高效的渲染和显示性能。提高性能:通过将指令处理过程分解为多个阶段,计算机指令流水线可以实现多个指令在同一时间进行处理。
2023-09-12 16:00:53
876
原创 Spring 三级缓存的原理
如果需要获取该单例对象实例,会首先从该缓存中查找。当完成单例对象实例的扫描后,Spring会将所有扫描到的单例对象实例放入singletonFactories缓存中。总之,Spring框架的三级缓存通过将单例对象实例和工厂类实例分别存放在不同的缓存中,实现了对单例对象的高效管理。同时,通过使用三级缓存,可以避免重复创建单例对象实例和工厂类实例,提高了应用程序的性能和效率。当需要获取单例对象实例并且在第二级缓存中没有找到时,Spring会继续查找,直到找到或者遍历完所有的单例对象实例为止。
2023-05-14 16:38:05
1732
原创 spring security(一):springsecurity 功能
Spring Security 是一个非常流行和强大的框架,它提供了许多内置的安全功能,例如认证、授权、密码管理和会话。
2023-05-14 16:37:15
804
原创 算法专题:使用双指针解决问题:给定一个长度为 n(1≤n≤10 7 ) 的字符串 s,求一个最长的满足所有字符不重复的子串。
解决思路: 维护两个指针 i和j,区间[i,j] 储存合乎条件的字符串,当寻找到重复字符串的时候执行 i=i+1,否则执行j=j+1直到找到下一个重复的字符串或者是字符遍历完成,期间不断的维护 最长不重复字符串的长度,j-i+1的最大值。
2023-05-07 22:50:08
153
原创 build one simple redis-cluster with local machine
【代码】build one simple redis-cluster with local machine。
2023-04-17 22:17:05
336
原创 Redisson 看门狗机制
总之,Redisson Watch Dog机制是一个非常有用的工具,可以帮助开发人员轻松地监视Redis中的键并在其发生变化时进行相应的操作。通过使用Redisson库中提供的watch方法和addListener方法,我们可以轻松地实现Watch Dog机制,并在我们的应用程序中处理Redis数据的变化。总之,Redisson Watch Dog机制是一种强大的功能,可以帮助开发人员实时地监视Redis中的键,并在键发生变化时进行相应的操作。例如,应用程序可以重新读取被修改的键并更新自己的数据。
2023-04-16 18:18:47
3576
原创 AQS工作原理
acquire(int args) 方法的作用是独占式的获取同步状态, 该方法对中断不敏感,也就是说当线程获取同步状态失败后进入到CHL中,后续对线程进行中断时,线程不会从CHL中移除。调用同步器的acquire(int arg)方法可以获取同步状态,该方法对中断不敏感,即线程获取同步状态失败后进入同步队列,后续对线程进行中断操作时,线程不会从同步队列中移除。根据锁的获取机制,又分为公平锁和非公平锁等待队列中按照FIFO的原则获取锁,等待时间越长的线程越先获取到锁,这就是公平的获取锁,即公平锁。
2023-04-16 18:00:58
181
原创 vscode 对 typescript debug
还需要注意的是,由于 TypeScript 代码和 JavaScript 代码之间的映射关系,断点位置可能会有所偏移,此时可以使用 Source Map 功能来解决这个问题。在 Debug 模式下,打开 Debug 控制台,选择 Sources 选项卡,可以看到 TypeScript 和 JavaScript 代码之间的映射关系。4.在 VS Code 中打开编译后的 JavaScript 代码文件,设置断点,按 F5 或点击 Debug 按钮进入 Debug 模式,最后运行程序即可开始调试。
2023-03-28 13:38:59
762
原创 算法专题: 找出数字连续的最长序列(不要求序列元素在原数组中连续)
遍历数组中的每个数 x,如果 x-1 不在哈希表中,说明 x 是一个连续序列的开头,我们可以从 x 开始不断向后找 x+1,直到找不到为止,此时记录连续序列的长度,并更新哈希表中左右两端数的长度。首先,对于一个数 x,如果存在 x-1,那么说明 x 不可能是连续序列的开头,因为在这种情况下会选择 x-1 作为开头。解释: 最长数字连续序列是 [1, 2, 3, 4]。输入: nums = [0,3,7,2,5,8,4,6,0,1]输入: nums = [100,4,200,1,3,2]
2023-03-11 18:08:33
785
原创 Linux commands: du and the options you should be using
总结: du是用来查看文件内存使用的命令, -s 表示汇总总共使用了多少内存,与 -c类似区别是-c多了一个total汇总选项,这一个命令其实更像一张空头支票,实用性不大。
2022-11-14 10:57:39
487
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人