源码地址: go/src/runtime/chan.go
//TODO
源码地址: go/src/runtime/hashmap.go
就是一个哈希表,不过和以前看到的哈希表好像有点不同。
哈希表复习: http://mdgsf.github.io/c/2016/07/01/c-hashtable.html
//TODO
#user nobody;
worker_processes 1;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid logs/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 65535;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
upstream webservers {
server 111.230.34.80:12345 weight=10;
server 111.230.34.80:12346 weight=10;
}
server {
listen 80 default;
server_name localhost;
location /server1 {
proxy_pass http://127.0.0.1:12345;
#proxy_pass http://webservers;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
}
location /server2 {
proxy_pass http://127.0.0.1:12346;
#proxy_pass http://webservers;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
}
}
}
server {
listen 80 default;
server_name localhost;
location /server1 {
proxy_pass http://127.0.0.1:12345/;
#proxy_pass http://webservers;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
}
location /server2 {
proxy_pass http://127.0.0.1:12346/;
#proxy_pass http://webservers;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
}
}
server {
listen 80 default;
server_name localhost;
location /server1/ {
proxy_pass http://127.0.0.1:12345;
#proxy_pass http://webservers;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
}
location /server2/ {
proxy_pass http://127.0.0.1:12346;
#proxy_pass http://webservers;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
}
}
server {
listen 80 default;
server_name localhost;
location /server1/ {
proxy_pass http://127.0.0.1:12345/;
#proxy_pass http://webservers;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
}
location /server2/ {
proxy_pass http://127.0.0.1:12346/;
#proxy_pass http://webservers;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
}
}
package main
import (
"fmt"
"io"
"log"
"net/http"
)
//HelloServer server1
func HelloServer(w http.ResponseWriter, req *http.Request) {
io.WriteString(w, "server1\n")
}
func main() {
fmt.Println("vim-go")
http.HandleFunc("/", HelloServer)
err := http.ListenAndServe(":12345", nil)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
#user nobody;
worker_processes 1;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid logs/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 65535;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
upstream webservers {
server 111.230.34.80:12345 weight=10;
server 111.230.34.80:12346 weight=10;
}
server {
listen 80 default;
server_name localhost;
location /server {
proxy_pass http://webservers;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
}
}
}
package main
import (
"fmt"
"io"
"log"
"net/http"
)
//HelloServer server1
func HelloServer(w http.ResponseWriter, req *http.Request) {
io.WriteString(w, "server1\n")
}
func main() {
fmt.Println("vim-go")
http.HandleFunc("/", HelloServer)
err := http.ListenAndServe(":12345", nil)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
ACK (Acknowledgment) TCP 首部中的确认标志
API (Application Programming Interface) 应用编程接口
ARP (Address Resolution Protocol) 地址解析协议
ARPANET (Defense Advanced Research Project Agency NETwork) 美国国防部远景研究规划局
AS (Autonomous System) 自治系统
ASCII (American Standard Code for Information Interchange) 美国信息交换标准码
ASN.1 (Abstract Syntax Notation One) 抽象语法记法1
BER (Basic Encoding Rule) 基本编码规则
BGP (Border Gateway Protocol) 边界网关协议
BIND (Berkeley Internet Name Domain) 伯克利 Internet 域名
BOOTP (BOOTstrap Protocol) 引导程序协议
BPF (BSD Packet Filter) BSD 分组过滤器
CIDR (Class InterDomain Routing) 无类型域间选路
CIX (Commercial Internet Exchange) 商业互联网交换
CLNP (ConnectionLess Network Protocol) 无连接网络协议
CRC (Cyclic Redundancy Check) 循环冗余校验
CSLIP (Compressed SLIP) 压缩的 SLIP
CSMA (Carrier Sense Multiple Access) 载波侦听多路存取
DCE (Data Circuit-terminating Equipment) 数据电路端接设备
DDN (Defense Data Network) 国防数据网
DF (Don’t Fragment) IP 首部中的不分片标志
DHCP (Dynamic Host Configuration Protocol) 动态主机配置协议
DLPI (Data Link Provider Interface) 数据链路提供者接口
DNS (Domain Name System) 域名系统
DSAP (Destination Service Access Point) 目的服务访问点
DSLAM (DSL Access Multiplexer) 数字用户线接入复用器
DSSS (Direct Sequence Spread Spectrum) 直接序列扩频
DTS (Distributed Time Service) 分布式时间服务
DVMRP (Distance Vector Multicast Routing Protocol) 距离向量多播选路协议
EBONE (European IP BackbONE) 欧洲 IP 主干网
EOL (End of Option List) 选项清单结束
EGP (External Gateway Protocol) 外部网关协议
EIA (Electronic Industries Association) 美国电子工业协会
下文转自stormzhang微信公众号
最近是跳槽的高峰,很多人应该都在准备面试,我知识星球有球友问我面试需要注意什么事项,其实面试需要注意的事项你可以网上搜索一大堆,那些事项会对你的面试多少有点帮助,但不会起到决定性的作用,最重要的还是自己要有实力,没有实力的话,任何注意事项都是白搭。
但是,今天我想给大家说下我面试时一定会问的一个问题:
你最擅长什么?
这不是说你业余擅长什么,而是在你的专业领域内你最擅长什么。
很多人一开始是懵的,想想自己各方面都还可以,但实在想不到自己最擅长什么地方,其实,如果你面试的是高级工程师职位,这个点异常重要。
所谓的高级工程师,除了你的项目经验比较丰富,综合能力较强之外,他们一定有个自己擅长的点,比如拿 Android 来说,有人擅长动画、有人擅长音视频、有人擅长插件化、有人擅长性能优化、有人擅长架构等等等,这些领域不需要你每一门都多么精通,毕竟人的精力是有限的,但是一定要在某一领域花时间深入的研究过,甚至还有自己的理解,让这个点形成自己的核心竞争力,才是别人眼里的高级人才。
当然,有人可能会误解,这里稍作解释下,并不是说只会一个点就够了,而是说在其他领域都还可以的情况下,有一个点是最擅长最突出的,这种人才才是稀缺的,也是不可替代的。
我前后面过很多人,哪怕工作六七年的人,也有从来没注意过这个问题。
前段时间就有人在微信上问我,说自己做开发四五年了,但是总感觉自己遇到了瓶颈,他还是在国内某互联网大公司工作的人,按理说已经比大部分人要优秀的多了。
我当时就问了他这么一个问题,他想了半天没有答案,自我感觉就是各方面能力都还行,说的好听点是全面发展,然而也意味着没有自己的核心竞争力,我给他的建议就是,想走技术路线的话,就一定要针对某一领域去深入研究,别以为某一领域看起来很简单,然而任何一个方向想深入研究下去,都需要花费大量精力的。
所以,不管你是为了面试也好,还是以后你想让自己更进一步发展,不妨问问自己这个问题,如果没有答案,现在开始为时不晚。
今天跑去腾讯面试了,就被问了,直接傻了。就是上面典型的没有自己的核心竞争力。于是回来了就想了下,如果自己选一个方向,那么要选什么呢?
C 语言, Nginx
C++ 语言, 泛型编程 STL, Qt 图形库
Golang 语言, Docker 容器, Kubernetes, Beego
网络技术, ARP, TCP, UDP, HTTP, WebSocket, DNS
Linux 系统
Windows 系统
数据库, MySQL, Oracle, postgreSQL, SQLServer
No-sql, redis,
算法
全栈开发
安全加密
设计模式
编辑器, vim, vscode
版本控制, git, svn
人的精力是有限的,只能从这么多的东西中选择一个深入研究。