海量数据问题

海量日志找出现次数最多的记录

  • 问题主要是记录不能全部载入到内存
  1. 先把整个文件分割成若干个小文件,比如1000个小文件
  2. 找出每个文件中出现次数最多的记录(输出1000个记录+频次)
  3. 从每个文件出现最多的记录找出全局出现次数最多的记录(合并记录,找出最多的频次)
    Read more »

服务器瓶颈

瓶颈

  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 »