epoll 使用示例
服务端
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/epoll.h>
#define SERVER_PORT (7778)
#define EPOLL_MAX_NUM (2048)
#define BUFFER_MAX_LEN ...
Python
python 性能问题
字典、列表、元组初始化用 {} [] () 还是 dict() list() tuple()
import timeit
print(timeit.timeit(stmt='{}', number=10000000))
print(timeit.timeit(stmt='dict()', number=10000000))
输出:
0.1654788
0.83084
import timeit
print(timeit.timeit(stmt='[]', number=10000000))
print(timeit.timeit(stmt='list()', number=10000000))
输出:
0.1816867
0.8409157
impo...
Golang
1、Go 语言简介
Go 语言起源 2007 年,并于 2009 年正式对外发布
Go 语言三位作者:
Robert Griesemer,参与开发 Java HotSpot 虚拟机;
Rob Pike,Go 语言项目总负责人,贝尔实验室 Unix 团队成员,参与的项目包括 Plan 9,Inferno 操作系统和 Limbo 编程语言;
Ken Thompson,贝尔实验室 Unix 团队成员,C 语言、Unix 和 Plan 9 的创始人之一,与 Rob Pike 共同开发了 UTF-8 字符集规范
为什么要创造一门编程语言:
C/C++ 的发展速度无法跟上计算机发展的脚步,十多年来也没...
系统设计
1、高并发
系统设计高并发
1.1、负载均衡
根据节点负载情况,将客户端请求发送到不同的节点。常用的负载均衡算法如下:
轮询
加权轮询
最少连接数
随机
源地址哈希(IP Hash)
1.2、缓存
网站性能优化的第一定律:有限考虑使用缓存。
1.3、消息队列
1.3.1、模型
点对点模式:一个消息只能被一个消费者消费一次。
发布订阅模式:多个订阅者可以从频道订阅这条消息并消费。
1.3.2、使用场景
异步处理:例如用户注册发送奖励。
流量削锋:服务器根据处理能力从消息队列中获取消息处理。防止短时间内大量请求压垮服务器。
应用解藕:一个模块修改不影响其他模块,实现可扩展性。
1.3.3、可靠性
发送端可靠性:使用本地...
Zookeeper
什么是Zookeeper
漫画:什么是ZooKeeper?
Zookeeper是一个分布式协调服务,可以在分布式系统中共享配置,协调锁资源,提供命名服务。
Zookeeper的数据模型很像数据结构当中的树,也很像文件系统的目录。
Zookeeper的数据存储基于节点,这种节点叫做Znode。Znode包含了数据、子节点引用、访问权限等等。
data:Znode存储的数据信息。
ACL:记录Znode的访问权限,即哪些人或哪些IP可以访问本节点。
stat:包含Znode的各种元数据,比如事务ID、版本号、时间戳、大小等等。
child:当前节点的子节点引用,类似于二叉树的左孩子右孩子。
Zo...
C++
1、C++语法基础
指针和引用
指针有自己的一块内存空间,引用只是一个别名。
sizeof 指针大小为4,sizeof 引用为被引用对象的大小。
引用必须初始化,且是一个已存在对象的引用。指针可以初始化为 nullptr。
可以有const指针,但是没有const引用。
程序编译过程
预处理阶段:对源代码文件中文件包含关系(头文件)、预编译语句(宏定义)进行分析和替换,生成预编译文件。
编译阶段:将经过预处理后的预编译文件转换成特定汇编代码,生成汇编文件。
汇编阶段:将编译阶段生成的汇编文件转化成机器码,生成可重定位目标文件。
链接阶段:将多个目标文件及所需要的库连接成最终的可执行目标文件。
static、const、#define的用法和...
共计 24 篇文章,3 页。