君子生非异也

导航

 
上一页 1 2 3 4 5 6 ··· 9 下一页

2021年5月14日

摘要: 最大句柄数修改:长连接的接入,首先需要优化的就是 Linux 内核参数,其中 Linux 最大文件句柄数是最重要的调优参数之一,默认单进程打开的最大句柄数是 1024,当单个推送服务接收到的链接超过上限后,就会报“too many open files”,所有新的客户端接入将失败 阅读全文
posted @ 2021-05-14 14:49 徐知语的笔记 阅读(1464) 评论(0) 推荐(0) 编辑
 

2021年5月13日

摘要: 形象的理解,线程阻塞需要消耗凭证(permit),这个凭证最多只有1个。当调用park方法时,如果有凭证,则会直接消耗掉这个凭证然后正常退出;但是如果没有凭证,就必须阻塞等待凭证可用;而unpark则相反,它会增加一个凭证,但凭证最多只能有1个。 阅读全文
posted @ 2021-05-13 17:15 徐知语的笔记 阅读(1011) 评论(0) 推荐(0) 编辑
 
摘要: AQS核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态。如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制,这个机制AQS是用CLH队列锁实现的,即将暂时获取不到锁的线程加入到队列中。 阅读全文
posted @ 2021-05-13 15:47 徐知语的笔记 阅读(286) 评论(0) 推荐(0) 编辑
 

2021年5月11日

摘要: LRU是什么?按照英文的直接原义就是Least Recently Used,最近最久未使用法,它是按照一个非常著名的计算机操作系统基础理论得来的:最近使用的页面数据会在未来一段时期内仍然被使用,已经很久没有使用的页面很有可能在未来较长的一段时间内仍然不会被使用。基于这个思想,会存在一种缓存淘汰机制,每次从内存中找到最久未使用的数据然后置换出来,从而存入新的数据!它的主要衡量指标是使用的时间,附加指标是使用的次数。在计算机中大量使用了这个机制,它的合理性在于优先筛选热点数据,所谓热点数据,就是最近最多使用的数据!因为,利用LRU我们可以解决很多实际开发中的问题,并且很符合业务场景。 阅读全文
posted @ 2021-05-11 09:14 徐知语的笔记 阅读(445) 评论(0) 推荐(0) 编辑
 

2021年4月29日

摘要: SPI的全名为Service Provider Interface.大多数开发人员可能不熟悉,因为这个是针对厂商或者插件的。在java.util.ServiceLoader的文档里有比较详细的介绍。简单的总结下java spi机制的思想。我们系统里抽象的各个模块,往往有很多不同的实现方案,比如日志模块的方案,xml解析模块、jdbc模块的方案等。面向的对象的设计里,我们一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可拔插的原则,如果需要替换一种实现,就需要修改代码。为了实现在模块装配的时候能不在程序里动态指明,这就需要一种服务发现机制。 java spi就是提供这样的一个机制:为某个接口寻找服务实现的机制。有点类似IOC的思想,就是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要。 阅读全文
posted @ 2021-04-29 16:29 徐知语的笔记 阅读(266) 评论(0) 推荐(0) 编辑
 

2021年4月28日

摘要: 比如说一个线程one从内存位置V中取出A,这时候另一个线程two也从内存中取出A,并且two进行了一些操作变成了B,然后two又将V位置的数据变成A,这时候线程one进行CAS操作发现内存中仍然是A,然后one操作成功。虽然程序正常执行了但是内存位置V中的A已经不是原来的那个A了。由于ABA问题带来的隐患,各种乐观锁的实现中通常都会用版本戳version来对记录或对象标记,避免并发操作带来的问题,在Java中,AtomicStampedReference 阅读全文
posted @ 2021-04-28 16:09 徐知语的笔记 阅读(220) 评论(0) 推荐(0) 编辑
 
摘要: 中断通常被定义为一个事件,该事件能够改变处理器执行指令的顺序。这样的事件与 CPU 芯片内外部硬件电路产生的电信号相对应。有了中断,单片机不用频繁地去查询这些条件是否具备,从而专心地进行工作,但中断发生时,又可以随时作出响应。中断提高了CPU的利用率,也是现代操作系统实现并发执行的重要手段。例如现代操作系统对进程的调度,一般都是采用基于时间片的优先级调度算法,把CPU的时间划分为很细粒度的时间片,一个任务每次只能执行这么多的时间,时间片到了由定时器触发一个时钟中断,CPU收到中断信号后重新调度进程。 阅读全文
posted @ 2021-04-28 14:51 徐知语的笔记 阅读(1191) 评论(0) 推荐(0) 编辑
 

2021年4月27日

摘要: 写入时复制是计算机程序设计领域中的一种优化策略。其核心思想是,如果有多个调用者(Callers)同时要求相同的资源(如内存或者是磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者视图修改资源内容时,系统才会真正复制一份专用副本(private copy)给该调用者,而其他调用者所见到的最初的资源仍然保持不变。这过程对其他的调用者都是透明的(transparently)。此做法主要的优点是如果调用者没有修改资源,就不会有副本(private copy)被创建,因此多个调用者只是读取操作时可以共享同一份资源。 阅读全文
posted @ 2021-04-27 14:04 徐知语的笔记 阅读(229) 评论(0) 推荐(0) 编辑
 

2021年4月22日

摘要: 根据局部性原理,所以通常,刚被访问的数据在短时间内再次被访问的概率很高,于是我们可以用 PageCache 来缓存最近被访问的数据,当空间不足时淘汰最久未被访问的缓存。所以,读磁盘数据的时候,优先在 PageCache 找,如果数据存在则可以直接返回;如果没有,则从磁盘中读取,然后缓存 PageCache 中。 阅读全文
posted @ 2021-04-22 16:25 徐知语的笔记 阅读(506) 评论(0) 推荐(0) 编辑
 
摘要: 在分段的方法中,每次程序运行时总是把程序全部装入内存,而分页的方法则有所不同。分页的思想是程序运行时用到哪页就为哪页分配内存,没用到的页暂时保留在硬盘上。当用到这些页时再在物理地址空间中为这些页分配内存,然后建立虚拟地址空间中的页和刚分配的物理内存页间的映射。分页的实质就是操作系统向进程描述了一个完整的连续的虚拟地址空间供进程使用,但是在物理内存中进程数据的存储采用离散式存储(提高内存利用率),虚拟地址与物理内存地址的映射关系采用页表来维护。 阅读全文
posted @ 2021-04-22 10:39 徐知语的笔记 阅读(511) 评论(0) 推荐(0) 编辑
 
上一页 1 2 3 4 5 6 ··· 9 下一页