
技林漫步
文章平均质量分 80
跨域杂谈集锦
乐只乐之
互联金融原生从业者,主营大后端;懂点前端、懂点网络、懂点AI;写点小诗、搞点摄影;远在远方的风比远方更远
展开
-
考古:IT架构演进之IOE架构
IOE架构由IBM小型机、Oracle数据库和EMC存储系统三大支柱构成,适用于金融、电信等关键业务领域。然而,IOE架构在扩展性和成本方面存在局限性。文章详细阐述了IOE架构的高可用实现机制,包括硬件冗余、数据库集群、存储冗余和集群技术等。同时,文章分析了“去IOE”运动的背景和意义,指出了IOE架构在互联网时代面临的挑战。最后,文章提供了进一步优化文章的建议,包括增加示例、展望IOE架构的发展方向等。原创 2024-04-05 15:51:25 · 1870 阅读 · 0 评论 -
Redis Scan指令解析与使用示例
scan指令相比于keys指令,采用分步遍历,不会阻塞线程,并提供了limit参数限制每次遍历的字典槽位数量。它采用高位进位加法进行遍历,以防止字典扩容缩容时重复遍历或遗漏key。尽管scan返回结果可能重复,遍历过程中数据改动可能导致漏掉key,但它是遍历大规模key列表的更好选择。原创 2024-03-30 07:00:00 · 515 阅读 · 0 评论 -
Redis持久化机制详解
众所周知Redis的所有数据都放在内存里,如果突然宕机,数据就会全部消失,从而Redis提供了数据持久化来保证其可靠性。Redis持久化机制有两种,一是快照,二是AOF日志。原创 2024-03-29 22:17:04 · 878 阅读 · 0 评论 -
Redis基础数据结构及操作命令解析
Redis的五种基础数据结构及其常用操作命令,其中包括string、list、hash、set、zset。原创 2024-03-29 22:04:37 · 975 阅读 · 0 评论 -
DelayQueue:实现原理、主要方法和使用示例
DelayQueue是Java提供的一种高效定时任务队列,通过维护一个基于二叉堆的优先队列来实现延迟队列。本文详细介绍了DelayQueue的实现原理、主要方法和使用示例,帮助读者深入理解并掌握如何在Java中使用DelayQueue。同时,文章还涉及了Leader/Followers模式在DelayQueue中的应用,以及如何自定义延迟元素类。通过阅读本文,读者将能够更好地理解DelayQueue的内部机制,并在实际项目中灵活运用。原创 2024-03-28 07:00:00 · 2072 阅读 · 2 评论 -
ArrayList删除元素的细则
删除ArrayList数组中某个元素,通常会使用for循环匹配目标元素完成删除操作。原创 2022-08-31 22:29:14 · 4970 阅读 · 0 评论 -
信号量(semaphore):解决并发问题的有力工具
二进制信号量常用于实现互斥访问,其初始值为1以确保首次访问临界区;计数信号量则用于更为复杂的同步问题,如生产者-消费者模型,通过设置初始值大于0,允许一定数量的线程并发执行。在生产者-消费者案例中,通过三个信号量(互斥信号量、emptyBuffer和fullBuffer)确保了缓冲区操作的正确同步与互斥。同时强调了P、V操作顺序的重要性,指出V操作顺序可交换,而P操作顺序不当可能导致死锁。原创 2024-03-23 20:31:27 · 1081 阅读 · 0 评论 -
多线程应用中的性能优化:创建合适的线程数
在多线程应用中,为了降低延迟和提高吞吐量,我们可以采取两种主要策略:优化算法或充分利用硬件性能。要发挥硬件的极致性能,就需要使用多线程来提高CPU或I/O的利用率。CPU核心资源有限,因此创建多少线程合适就需要看多线程的应用场景是I/O密集型还是CPU密集型。对于CPU密集型,理论上“线程的数量 = CPU核数”是最合适的。在工程上,线程的数量一般会设置为“CPU核数+1”。对于I/O密集型,最佳线程数的计算更为复杂,可以通过公式“最佳线程数 = CPU核数 * [ 1 +(I/O 耗时 / CPU 耗时)原创 2024-03-20 21:55:31 · 1048 阅读 · 0 评论 -
《模仿游戏》:天才团队如何破解密码学之谜
计算机科学相关的电影不少,有探索人工智能的《黑客帝国》、还有逻辑和结构学的《盗梦空间》、还有互联网创业的《社交网络》和《硅谷海盗》、还有探索虚拟世界的《源代码》,更甚有国产计算机科学科幻启蒙儿童电视剧《快乐星球》。其在主线中图灵设计并建造了一台名为“Colossus”的早期计算机,开启用机器打败机器的先河,最终破解德军的恩尼格玛密码系统,大大缩短了战争进程。1936年图灵发表了他的硕士论文《论可计算数及其在判定问题中的应用》,提出了“图灵机”的概念,一种抽象的计算模型,并为后来计算机的设计提供了理论基础。原创 2024-02-25 17:53:58 · 1356 阅读 · 0 评论 -
操作系统启动背后的故事:BIOS、BootLoader和CPU控制权移交
以X86架构为例,BIOS的内存空间地址为CS:IP=0xf000:fff0,其中CS代表段寄存器,IP代表指令寄存器。通常位于硬盘的第一个主引导扇区。BIOS的任务就是在硬盘的这个特定位置找到BootLoader,并将其加载到内存中。在X86架构中,BootLoader通常被加载到内存的0x7C00位置,占据512字节的空间。每个阶段完成后,都需要将CPU控制权移交给下一阶段,以确保整个启动过程的顺利进行。随着UEFI(统一可扩展固件接口)的普及,传统的BIOS正在被逐渐替代,启动过程也有所变化。原创 2024-03-20 14:34:49 · 830 阅读 · 1 评论