趣果有间

凡人皆无法挡


  • 首页

  • 关于

  • 归档

  • 标签

  • 搜索

个人总结

发表于 2222-06-06 | 阅读次数

# 突然发现博客的侧栏点击进去不会自动用HTTPS,导致打不开页面,有时间得去解决一下,应该不是浏览器的问题,因为火狐和chrome都是这样。。不过手机端倒是会默认HTTPS。。。

居然好了,估计是之前DNS被劫持了。。。

个人总结

既然还是学生,就按照基础课程的脉络开始总结一下自己吧吧。

整理路线:
对[‘语言’,’网络’,’操作系统’,’数据结构与算法’,’数据库’, ‘设计模式’]其中的每一个大块,做以下整理:
书籍(除去教材看了哪些相关的专业书籍)->
结合该书籍学到的知识(学习涉及的领域):
其中掌握的知识(能够弄清楚原理及底层实现)->
其中能应用的知识(能自己动手写什么代码,做出什么项目,用具体成果来展示) ->

不足的地方(进步的空间,努力的方向)

阅读全文 »

计算广告总结

发表于 2017-11-18 | 阅读次数

最近在看《计算广告》,也在看相关的视频课程,所以做一个总结

阅读全文 »

python技巧全面总结

发表于 2017-10-01 | 阅读次数

闲来无事,总结一下常用到的python技巧

目录

  • 数据结构
  • 迭代协议
  • 字符串
  • I/O
  • 数据处理
  • 类和对象
  • 并发编程
  • 装饰器
阅读全文 »

C++11 的 Memory Oder

发表于 2017-09-30 | 阅读次数

最近也是一直准备秋招没怎么写博客,面试的情况也算一般吧,这周面完了百度和360,也不知道什么时候有结果,心累。

之前在看 《C++并发编程实战》的时候以及在C++并发学习/)的过程中就有学习过了,现在抽空把它总结一下。

在多核CPU,典型的系统架构如下:

它包含有2个CPU核,每个CPU核有一个私有的32KB 的 L1 cache,两个CPU 核共享 1MB的 L2 cache 以及 512MB的主存。

在这个内存模型下,cpu写数据并不是立即写入RAM中,而是写入L1 cache,再从L1 cache存入(store) RAM中,读数据也是先从L1 cache中读,读不到再从RAM中读,这种读写数据的模式是能够提高数据存取效率的,但是在一些特殊情况下会导致程序出错,考虑以下这个例子。

1
2
3
4
x = y = 0;
Thread 1 Thread 2
x = 1; y = 1;
r1 = y; r2 = x;

表面上看,r1 == r2 == 0 这种输出是不可能出现的,然而,有一种可能性是,由于r1不依赖于x,编译器可以把r1 = y这步操作调整到x = 1这步操作之前,同样,r2 = x这步操作可以调整到y = 1这步操作之前,这样一来,core 1可以先读取L1 cache中的y的值,core 2 才执行 y = 1的赋值操作,同理,r2 = x这步操作也可以在x = 1这步赋值操作之前执行,这时候就会出现r1 == r2 == 0的输出结果。

Memory Barrier

  • LoadLoad

  • StoreStore

  • LoadStore

  • StoreLoad

内存屏障用来代替互斥锁,既能保证程序的正确性,又能尽可能地提高程序执行效率

阅读全文 »

字典树的应用

发表于 2017-08-10 | 阅读次数

之前我们实现一个简单的字典树,现在我们学习一下它的应用场合:

  • 前缀匹配:给定字典库,输入一段字符,返回以该字符串为前缀的所有单词。

  • 字频统计:给出一段文本,统计其中指定单词出现的频数。

阅读全文 »

字典树的实现

发表于 2017-08-08 | 阅读次数

简单字典树的实现

字典树特征

根节点不包含字符,除去根节点的每一个节点均包含有一个字符。
从根节点到某一节点,路径上经过的所有节点的字符连接起来就是该节点对应的字符串。
每个节点的所有子节点包含的字符都不相同

字典树基本操作

  • 插入
  • 查找
  • 删除
阅读全文 »

Epoll+Timerfd实现定时器

发表于 2017-08-06 | 阅读次数

EpollfdTimer

基于linux timerfd实现的定时器模块. 使用Epoll来监听调度timerfd.

timerfd

timerfd是Linux为用户程序提供的一个定时器接口。这个接口基于文件描述符,通过文件描述符的可读事件进行超时通知,一般是被用于select/poll/epoll的应用场景。

我们的timerfd_create()把时间变成了一个文件描述符,该文件描述符会在超时时变得可读,这种特性可以使我们在写服务器程序时,很方便的便把定时事件变成和其他I/O事件一样的处理方式,并且此定时接口的精度也足够的高,所以我们只要以后在写I/O框架时用到了定时器就该首选

timerfd 与 select timeout 区别

阅读全文 »

RingBuffer实现定时器

发表于 2017-08-05 | 阅读次数

看到一篇讲定时器的文章:

很多时候,业务有定时任务或者定时超时的需求,当任务量很大时,可能需要维护大量的timer,或者进行低效的扫描。

例如:58到家APP实时消息通道系统,对每个用户会维护一个APP到服务器的TCP连接,用来实时收发消息,对这个TCP连接,有这样一个需求:“如果连续30s没有请求包(例如登录,消息,keepalive包),服务端就要将这个用户的状态置为离线”。

其中,单机TCP同时在线量约在10w级别,keepalive请求包大概30s一次,吞吐量约在3000qps。

一般来说怎么实现这类需求呢?

阅读全文 »
12…10
kelele67

kelele67

古老却神奇的shell表白代码 :(){:|:&};:

74 日志
71 标签
GitHub 微博 知乎
© 2017 kelele67
由 Hexo 强力驱动
主题 - NexT.Pisces