服务器瓶颈

瓶颈

  1. cpu
    测试的时候cpu占用率70% 多核情况下占用60%

    Read more »

场景题

输入一个url后到出现页面发生什么?

  1. DNS解析

    • 查询浏览器缓存
    • 查询操作系统缓存
    • 查询路由器缓存/ISP服务器缓存
    • 通过递归和迭代两种方式查询dns服务器
      Read more »

网络编程中协程的作用

记住一句话即可:协程可以实现同步的编程方式,性能和多线程异步回调相似。

Read more »

整体原理

  1. 整体框架
  • 包处理, 解析ip和基础端口信息
  • 解析器插件,负责检测协议
    Read more »

四大特性

  • 原子性:事务内包含的所有操作要么全部成功,要么全部失败回滚;实现:日志,将所有的更新操作全部写入日志当中,若因为一些系统奔溃/断电等原因导致事务中的部分更新操作已经执行,部分操作未执行,则通过回溯日志,将操作回滚,使系统保证原子性以及一致性;
  • 一致性:不管任何时间有少个并发的事务,系统也必须保持一致;
  • 隔离性:多个并发的事务的操作,在同一时间只能有一个事务执行(即串行的执行);
  • 持久性:事务正确执行后,事务中对数据的操作不会回滚;
    Read more »

问题描述

从n个元素中选出m个

Fisher-Yates Shuffle

假设待选元素数组N, 此算法核心思想为每次选一个,然后把此元素从数组删除。

Read more »

如何知道内存泄漏了?

  1. hook函数

定义malloc/free 或者new/delete 的hook函数,在c语言中使用dlsym。

  • 一些小技巧:如何知道是哪一行分配了资源?
    1
    2
    //编译器自带的
    __builtin_return_address();
    再使用address2line
1
address2line -fe xxxxx
Read more »

X86_64 寄存器

  • rax:函数返回值

  • rsp:栈指针寄存器,指向栈顶

  • rdi:函数第一参数

  • rsi:函数第二参数

  • rdx:函数第三参数、I/O操作时提供外部设备接口的端口地址

  • rcx:函数第四参数、循环操作和字串处理的计数控制

  • r8:函数第五参数

  • r9:函数第六参数

    Read more »