Skip to content

Fundamentals

  • 带回溯的自上而下分析实际上采用了一种穷尽一切可能的试探法,因此效率很低,代价极高。因此我们需避免带回溯的自上而下分析。
    • I think the idea is that we can have some restrictions over the grammar such that it is impossible to have ambiguity which might lead to backtracking.
  • 交换机和路由器的区别
  • void Func ( char str[100] ) { sizeof( str ) = ? }: 4
  • LR 分析器是一种由下而上(bottom-up)的上下文无关语法分析器。
  • 游戏服务器应该为每个用户开辟一个线程还是一个进程,为什么?参考回答:游戏服务器应该为每个用户开辟一个进程。因为同一进程间的线程会相互影响,一个线程死掉会影响其他线程,从而导致进程崩溃。因此为了保证不同用户之间不会相互影响,应该为每个用户开辟一个进程
  • 线程模型主要优势为线程间切换代价较小,因此适用于 I/O 密集型的工作场景,
  • 多进程模型,适用于 CPU 密集型。
  • 如何解决死锁
    • 资源一次性分配,而不是争夺资源
    • 资源可剥夺
    • 资源有序分配
  • LFU(最不经常访问淘汰算法):
    • 开销:排序开销。
    • 弊端:缓存颠簸。
  • LRU(最近最少使用替换算法)
    • 优点:LRU 算法对热点数据命中率是很高的。
    • 缺陷:
      • 1)缓存颠簸,当缓存(1,2,3)满了,之后数据访问(0,3,2,1,0,3,2,1。。。)。
      • 2)缓存污染,突然大量偶发性的数据访问,会让内存中存放大量冷数据。
  • LRU-K(LRU-2、LRU-3)
    • LRU-K[15] evicts the page whose K-th most recent access is furthest in the past. For example, LRU-1 is simply LRU whereas LRU-2 evicts pages according to the time of their penultimate access. LRU-K improves greatly on LRU with regards to locality in time.
  • 2^16 = 65536
  • Combination: