2021年10年后端开发程序员最新《C/C++Linux 服务器开发》学习路线总结,建议收藏
前言
从事开发行业也有10多年了,在摸爬滚打的工作这段时间里,深知了有一个「完整的知识体系」是非常重要的。当事人非常后悔没有在大学期间知道这个道理……
众多大厂招人的需求也是非常注重此方面,毕竟我们不能单单只是一个只会写代码的程序员,更应该成为一个全面的工程师,能够迅速解决工作上的需求及众多问题。
以下是整理的学习路线视频链接:C/C++Linux服务器开发/Linux后台架构师-学习视频
特此,我根据多年的开发经验总结了一份较为全面的【C/C++Linux 服务器开发】 成长路线知识点,我自己也是在跟着这份思维导图进一步的学习,希望这份路程也能伴随大家的成长。
特此说明下:
- 所有学习资料和高清思维导图的获取的方式见文章末尾(机智的你,应该发现图就有途径)
一. 精进基石
1、数据结构与算法
1.1 面试必聊的排序与KMP:
- 插入排序
- 快速排序
- 希尔排序桶排序
- 基数排序
- 归并排序
- 字符串匹配
- KMP算法
1.2 随处可见的红黑树:
- 红黑树的应用场景 进程调度cfs,内存管理
- 红黑树的数学证明与推导
- 手撕红黑树的左旋与右旋
- 红黑树添加的实现与添加三种情况的证明
- 红黑树删除的实现与删除四种情况的证明
- 红黑树的线程安全的做法
- 分析红黑树工程实用的特点
1.3 磁盘存储链式的B树与B+树:
- 磁盘结构分析与数据存储原理
- 多叉树的运用以及B树的定义证明
- B树插入的两种分裂
- B树删除的前后借位与节点合并
- 手撕B树的插入,删除,遍历,查找
- B+树的定义与实现
- B+树叶子节点的前后指针
- B+树的应用场景与实用特点
- B+树的线程安全做法
1.4 海量数据去重的Hash与布隆过滤器,bitmap:
- hash的原理与hash函数的实现
- hash的应用场景
- 分布式hash的实现原理
- 海量数据去重布隆过滤器
- 布隆过滤的数学推导与证明
1.5 图论算法,dijkstra,dfs,bfs,动态规划:
- 图的构建与需求应用场景
- dijkstra的实现
- 经典动态规划问题
2、设计模式
2.1 创建型设计模式
- 单例模式
- 工厂方法模式与抽象工厂模式
- 原型模式
2.2 结构型设计模式
- 适配器模式
- 代理模式
- 桥接模式
- 组合模式
2.3 行为型设计模式
- 策略模式
- 观察者模式
- 责任链模式
- 状态模式
3、工程管理
3.1 手写:Makefile/cmake/configure
- Makefile的规则与make的工作原理
- 单文件编译与多文件编译
- Makefile的参数传递
- 多目录文件夹递归编译与嵌套执行make
- Makefile的通配符,伪目标,文件搜索
- Makefile的操作函数与特殊语法
- configure生成makefile的原则
- cmake的写法
3.2 操作:git/svn与持续集成
- git的工作流程
- 创建操作与基本操作
- 分支管理,查看提交历史
- git服务器搭建
3.3 Linux 系统运行时参数命令
- 进程间通信设施状态
- ipcs Linux系统运行时长
- uptime CPU平均负载和磁盘活动
- iostat 监控,收集和汇报系统活动 sar
- 监控多处理器使用情况
- mpstat 监控进程的内存使用情况 pmap
- 系统管理员调优和基准测量工具 nmon
- 密切关注Linux系统 glances
- 查看系统调用 strace
- ftp 服务器基本信息 ftptop
- IO监控 iotop
- 电量消耗和电源管理 powertop
- 监控 mysql 的线程和性能 mytop
- 系统运行参数分析 htop/top/atop
- Linux网络统计监控工具 netstat
- 显示和修改网络接口控制器 ethtool
- 网络数据包分析利刃 tcpdump
- 远程登陆服务的标准协议 telnet
- 获取实时网络统计信息 iptraf
- 显示主机上网络接口带宽使用情况 iftop
二. 高性能网络设计
1、网络编程
1.1 网络io与select,poll,epoll:
- socket与文件描述符的关联
- sigio的异步通知
- 多路复用select/poll
- 手撕epoll单线程,多线程,多进程的多种写法
- 代码实现LT/ET的区别
1.2 reactor的原理与实现
- epoll封装
- send_cb/recv_cb/accept_cb reactor多核实现
- 跨平台(select/epoll/kqueue)的封装reactor
1.3 http/https服务器的实现
- reactor sendbuffer与recvbuffer封装http协议
- http协议格式
- http2.0与http3.0
- 有限状态机fsm解析http
- https的工作流程
- https证书配置
1.4 websocket协议与服务器实现
- reactor sendbuffer与recvbuffer封装websocket协议
- websocket握手流程
- websocket协议头封装
- tcp分包与粘包的解决方案
- websocket数据流的编解码
2、网络原理
2.1 服务器百万并发实现
- 同步处理与异步处理的数据差异
- 网络io线程池异步处理
- ulimit的fd的百万级别支持
- sysctl.conf的rmem与wmem的调优
- conntrack的原理分析
2.2 redis,memcached,nginx网络组件
- redis单线程reactor的实现
- memcached的多线程master-worker的reactor实现
- nginx的多进程reactor的实现
- 多进程reactor的坑点,惊群,共享内存
2.3 posix API与网络协议栈
- connect,listen,accept与三次握手 listen参数backlog syn泛洪的解决方案
- close与四次挥手
- 11个状态迁移
- 大量close_wait与time_wait的原因与解决方案
- tcp keepalive与应用层心跳包
- 拥塞控制与滑动窗口
2.4 udp的可靠传输,QUIC,KCP
- udp的优缺点
- udp高并发的设计方案
- qq早期为什么选择udp作为通信协议
- udp可靠传输原理
- quic协议的设计原理
- quic的开源方案quiche
- kcp的设计方案与算法原理
3、自研框架:协程框架实现NtyCo
3.1 协程的设计原理与切换汇编实现
- 协程存在的3个原因
- 同步与异步性能,服务端异步处理,客户端异步请求
- 协程原语 switch,resume,yield,
- 协程切换的三种实现方式,setjmp/longjmp, ucontext
- 汇编实现 寄存器讲解
- 协程初始启动 eip寄存器设置
- 协程栈空间定义,独立栈与共享栈的做法
- 协程结构体定义
3.2 协程的调度器实现与性能测试
- 调度器的定义分析
- 超时集合,就绪队列,io等待集合的实现
- 协程调度的执行流程
- 协程接口实现,异步流程实现
- hook钩子的实现
- 协程实现mysql请求
- 协程多核方案分析
- 协程性能测试
4、自研框架:用户态协议栈NtyTCP
4.1 tcp/ip设计
- 用户态协议栈的存在场景与实现原理
- netmap开源框架
- eth协议,ip协议,udp协议实现
- arp协议实现
- icmp协议实现
4.2 tcp/ip定时器与滑动窗口的实现
- tcp协议头实现
- tcp控制块的实现
- 滑动窗口的实现
- 重传定时器,坚持定时器,time_wait定时器,keepalive定时器
4.3 Epoll的实现
- epoll数据结构封装与线程安全实现
- 协议栈fd就绪回调实现
- epoll接口实现
- LT/ET的实现
三. 基础组件实现
1、池式组件
- 服务端reactor事件封装
- libevent接口分析
- event_base_new, event_add, event_del, event_base_loop
- memcached网络模块分析
- libev的主要数据结构
- EV_WATCH, EV_WATCH_LIST libevent与libev性能对比
1.1 线程池与性能分析
- 线程池的异步处理使用场景
- 线程池的组成 任务队列 执行队列
- 任务回调与条件等待
- 线程池的动态防缩
- 扩展:nginx线程池实现对比分析
1.2 ringbuffer与内存池实现
- 内存池的应用场景与性能分析
- 内存小块分配与管理
- 内存大块分配与管理
- 手写内存池,结构体封装与API实现
- 避免内存泄漏的两种万能方法
- 定位内存泄漏的3种工具
- 扩展:nginx内存池实现
1.3异步请求池 http/mysql/redis/dns
- 异步请求处理流程
- King式四元组,create,commit,callback, destory
- 异步请求框架封装
- 应用协议redis/dns/http请求封装
1.4 mysql/redis连接池的实现
- 连接池性能的影响的2个因素,tcp连接和mysql认证
- 连接请求归还策略
- 连接超时未归还策略
- 链接断开重连策略
- 连接数量最优策略
2、高性能组件
2.1 原子操作CAS与锁实现原理实现
- 互斥锁的使用场景与原理
- 自旋锁的性能分析
- 原子操作的汇编实现
2.2 消息队列与无锁实现
- 有锁无锁队列性能
- 内存屏障 Barrier
- 数组无锁队列设计实现
- 链表无锁队列设计实现
2.3 定时器方案 红黑树 时间轮 最小堆
- 定时器的使用场景
- 定时器的红黑树存储
- 时间轮的实现
- 最小堆的实现
- 分布式定时器的实现
2.4 try/catch组件的实现
- setjmp/longjmp
- try/catch宏定义实现
- try/catch嵌套
- try/catch线程安全
- 线程私有数据 pthread_key
3、开源组件
3.1 libevent/libev框架实战的那些坑
- 服务端reactor事件封装
- libevent接口分析
- event_base_new, event_add, event_del, event_base_loop
- memcached网络模块分析
- libev的主要数据结构
- EV_WATCH, EV_WATCH_LIST
- libevent与libev性能对比
3.2 异步日志方案log4cpp
- 日志库性能瓶颈分析
- 异步日志库设计与实现
- 批量写入与双缓存冲机制
- 奔溃后的日志找回
3.3 应用层协议设计ProtoBuf/Thrift
- IM,云平台,nginx,http,redis协议设计
- 如何保证消息完整性
- 手撕protobuf IM通信协议
- protobuf序列化与反序列化
- protobuf编码原理
3.4 Openssl 对称加密与非对称加密
- 对称加密与非对称加密
- hash的数据结构与使用
- 内存分配与管理
- 抽象IO BIO的具体实现
- base64编码的原理
- RSA的使用场景与数学证明
- https证书操作与原理分析
3.5 Json数据解析/Xml解析器和工具包
- cjson,jsoncpp,repidjson接口应用
- json序列化和反序列化
- TinyXML2接口应用
- XML序列化和反序列化
- XML/json不同应用场景
3.6 字符编码Unicode原理及编程实践
- 字符集与字符编码的关系
- UTF8/UTF16/UTF32具体区别
- mysql,redis,nginx使用中的字符集问题分析
- zlib数据压缩
- 手撕zlib压缩与解压
- nginx中的zlib实现原理
四. 中间件开发
1、MySQL
1.1 MySQLSQL语句,索引,视图,存储过程,触发器
- MySQL体系结构,SQL执行流程
- SQL CURD与高级查询
- 视图,触发器,存储过程
- MySQL权限管理
1.2 MySQL索引原理以及SQL优化
- 索引,约束以及之间的区别
- B+树,聚集索引和辅助索引
- 最左匹配原则以及覆盖索引
- 索引失效以及索引优化原则
- EXPLAIN执行计划以及优化选择过程分析
1.3 MySQL事务原理分析
- 事务的ACID特性
- MySQL并发问题 脏读,不可重复读,幻读
- 事务隔离级别
- 锁的类型,锁算法实现以及锁操作对象
- S锁 X锁 IS锁 IX锁
- 记录锁,间隙锁,next-key lock
- 插入意向锁, 自增锁 MVCC原理剖析
1.4 MySQL缓存策略
- 读写分离,连接池的场景以及其局限
- 缓存策略问题分析
- 缓存策略强一致性解决方案
- 缓存策略最终一致性解决方案
- 2种mysql缓存同步方案 从数据库与触发器+udf
- 缓存同步开源方案 go-mysql-transfer
- 缓存同步开源方案
- canal原理分析
- 3种缓存故障,缓存击穿,缓存穿透,缓存雪崩
1.5 MySQl集群方案与Replication原理
- 分库分表:水平分库,垂直分库,水平分表,垂直分表
- MySQl官方三种集群方案 replication,Fabric,Cluster
- 三个开源集群方案 MMM, MHA, Galera Cluster
2、Redis
2.1 Redis 相关命令详解及其原理
- string,set,zset,list,hash
- 分布式锁的实现
- lua脚本解决ACID原子性
- Redis事务的ACID性质分析
2.2 Redis协议与异步方式
- Redis协议解析
- 特殊协议操作
- 订阅发布
- 手撕异步redis协议
2.3 存储原理与数据模型
- string的三种编码方式 int,raw,embstr
- 双向链表的list实现 字典的实现,hash函数
- 解决键冲突与rehash 跳表的实现与数据论证
- 整数集合实现
- 压缩列表原理证明
2.4 主从同步与对象模型
- 对象的类型与编码
- 字符串对象
- 列表对象
- 哈希对象
- 集合对象
- 有序集合
- 类型检测与命令多态
- 内存回收
- 对象共享
- 对象空转时长
2.5 集群方案主从复制/哨兵/集群与持久化
- redis的3种集群方式 主从复制,sentinel,cluster
- 4种持久化方案
- 大厂的那些分布式缓存方案
3、Nginx
3.1 Nginx反向代理与系统参数配置conf原理
- Nginx静态文件的配置
- Nginx动态接口代理配置
- Nginx对Mqtt协议转发
- Nginx对Rtmp推拉流
- Openresty对Redis缓存数据代理
3.2 进程间通信与Slab共享机制
- shmem的三种实现方式
- 原子操作
- nginx channel
- 信号 信号量
- 文件锁,互斥锁
- slab共享内存
- 如何解决"惊群"问题 如何实现负载均衡
3.3 广告内容推送 Nginx过滤模块的实现
- Nginx Filter模块运行原理
- 过滤链表的顺序
- 模块开发数据结构
- ngx_str_t, ngx_list_t, ngx_buf_t, ngx_chain_t error日志的用法
- ngx_comond_t的讲解
- ngx_http_module_t的执行流程
3.4 访问频率统计 Nginx handler模块的实现
- Nginx Handler模块运行原理
- ngx_module_t/ngx_http_module_t的讲解
- ngx_http_top_body_filter/ngx_http_top_header_filter的原理
- ngx_rbtree_t的使用方法
- ngx_rbtree自定义添加方法
- 模块性能测试
3.5 Nginx http状态机流程
- Nginx的核心数据结构 ngx_cycle_t, ngx_event_moule_t
- http 请求的11个处理阶段
- http包体处理
- http响应发送
- Nginx Upstream机制的设计与实现
4、MongoDB
4.1 接口编程与文档操作
- 文档/集合/聚合函数操作
- 五种索引做法 单字段索引,复合索引,TTL索引,全文索引,hash索引
- GridFS存储大文件
- WiredTiger存储引擎
- WiredTiger的事务
- journal日志
4.2 集群方案与持久化备份
- Master-Slave的三个服务:Mongos/config/shard服务
- Replica Set读写策略
- Sharding的实现与原理
- 三种Mongodb性能优化策略:时间同步,磁盘预读功能,内存管理
- 项目:MongoDB跨数据中心的数据复制平台
- 抓取Oplog操作日志
- 日志分离
- 日志订阅
- 数据路由
- Cache同步
五. 开源框架分析及实战
1、Skynet
1.1 Skynet设计原理
- 多核并发编程-多线程,多进程,csp模型,
- actor模型 actor模型实现-lua服务和c服务
- 消息队列实现 actor消息调度
1.2 skynet网络层封装以及lua/c接口编程
- skynet reactor网络模型封装
- socket/socketchannel封装
- 手撕高性能c服务
- lua编程以及lua/c接口编程
1.3 skynet重要组件以及手撕游戏项目
- 基础接口 skynet.send,skynet.call,skynet.response
- 广播组件 multicastd 数据共享组件
- sharedatad datasheet
- 手撕万人同时在线游戏
2、ZeroMQ
2.1 消息队列与ZeroMQ的应用
- REQ/REP模型原理分析
- PUB/SUB模型原理分析
- PUSH/PULL模型原理分析
- Router/Dealer模型原理分析
2.2 ZeroMQ源码分析:消息模型的实现
- 消息模型
- 消息传递模式
- 消息分帧
- 中间层代理
- 消息丢失处理
2.3 ZeroMQ源码分析:网络机制与性能分析
- 零拷贝技术
- 消息高水位标记
- 无锁队列
- 可靠性设计
3、DPDK
3.1 DPDK环境与testpmd/l3fwd/skeleton
- DPDK环境参数讲解
- 多队列网卡的工作原理
- CPU亲和性
- Burst数据包的优缺点
- DPDK轮询模式 异步中断,轮询模式,混合中断轮询模式
- virtio与vhost
3.2 DPDK的用户态协议栈实现
- 内核网络接口 KNI的实现原理
- 接收线程/发送线程/KNI线程
- 内存数据结构 rte_mbuf, rte_mempool
- 端口数据结构 rte_kni, rte_kni_conf, rte_kni_ops, rte_eth_conf
- 协议数据结构 rte_ether_hdrrte_ipv4_hdr, rte_udp_hdr
- 数据处理接口 rte_eth_rx_burst,rte_kni_tx_burst,rte_pktmbuf_mtod
3.3 千万级流量并发的DNS处理
- udp协议包处理
- dns协议实现
- 配置文件解析
- 数据结构 rte_ring
- trex数据包性能测试
3.4 高性能数据处理框架VPP
- vpp使用vmxnet3
- DPDK ACL实现数据过滤
- vpp web应用
- vpp基础库 VPPInfra
- 高速查找路由表,CAM表
3.5 DPDK的虚拟交换机框架 OvS
- OvS三大组件 ovs-vswitchd, ovsdb-server, openvswitch.ko
- OvS报文处理机制
- OvS 4种数据路径
- VXLAN数据协议
六. Linux内核源码
1、进程管理
1.1 进程原理与运行分析
- task_struct结构数据
- 进程的生命周期
- 进程优先级
- 进程状态迁移
- 写时复制
1.2 全方位剖析调度机制
- 调度器 stop/rt/deadline/cfs/idle
- 调度策略 SCHED_RR/SCHED_FIFO
- smp多核调度
1.3 锁与进程间通信
- 自旋锁的实现
- 互斥锁的实现
- 大内核锁 BKL-Big Kernel Lock
- 消息队列
- 共享内存
2、内存管理
2.1 内存原理与内存杂乱繁多的细节
- uma与numa的内存结构
- tlb的工作原理
- mm_struct结构体
- 页表与缺页异常
- 高速缓存
2.3 物理内存与虚拟内存管理
- 分配器原理
- slab/slub/slob分配器
- 不连续页原理
- 内存映射
- 伙伴算法
2.4 虚拟内存及API调用
- 进程内存映射
- 进程堆栈管理
- 用户空间与内核空间
- 系统调用kmalloc/vmalloc
3、文件系统
3.1 虚拟文件系统
- 通用文件模型
- VFS结构
- 文件操作系统调用
- file/inode原理
3.2 无持久存储的文件系统
- 文件系统数据结构
- 管理/proc数据项
- 系统控制机制
- sysfs数据结构
- 挂载文件系统
- 文件目录操作
- sysfs增加数据
3.3 磁盘文件系统
- Ext2文件系统
- Ext3文件系统
- Ext4文件系统
3.4 用户态文件系统fuse
- fuse使用场景
- fuse原理
- fuse实现
- 用户态文件接口实现
4、设备驱动
4.1 实现进程间通信组件
- file_operation原理
- 系统调用的流程
- ioctl流程
- 请求中断
4.2 块设备运行原理
- 资源管理
- I/O调度
- BIO结构原理
- PCI总线原理
4.3 虚拟网络适配器的实现
- 网络结构体 net_device/net_device_ops
- sk_buff原理
- 网卡数据中断
- 网卡 mmap
七. 性能分析
1、性能工具
- 高性能代码构建系统 tundra
- Http压测工具 WRK
- 网站压测工具 webbench
2、调试库
- 内存调试性能分析工具 Valgrind
- 谷歌C++测试框架 GoogleTest
- 内存分配跟踪库 MemTrack
3、内核跟踪与火焰图分析
- 内核探测SystemTap
- 火焰图分析与生成
八. 分布式架构
1、架构实战
1.1 腾讯微服务RPC框架Tars
- Tars微服务应用场景
- RPC协议的序列化与反序列化
- 路由管理Registry
- 服务发布管理 Patch
- 分布式MySQL与分布式Cache
- 服务发现与服务治理解决方案
1.2 容器化Docker与容器编排
- Docker镜像管理
- 镜像元数据管理与存储驱动
- 网络管理与GRE实现跨网络通信
- Docker容器安全解决方案
- SElinux Dockerfile的容器构建
- 编排三剑客 Fig/Compose/Swarm
- 编排小神器 Fleet
- Flynn体系架构与实现原理
1.3 容器化管理 k8s与核心组件
- k8s使用场景
- k8s 核心组件 APIServer, scheduler, controller manager, kubelet, kube-proxy
- 网络核心原理 单pod单ip, pod和网络容器
- 用户认证与namespace设计
2、架构原理
2.1 分布式注册服务中心etcd
- etcd的应用场景与功能分析
- 强一致性raft算法原理
- etcd的分布式锁实现
- 单机部署与集群部署
2.2 内核级支持的分布式存储Ceph
- ceph的集群部署
- monitor与OSD
- ceph 5个核心组件
- ceph集群监控
- ceph性能调调优与benchmark
2.3 快播核心技术揭秘 P2P框架的实现
- 网关NAT表分析
- NAT类型,完全锥型NAT,对称NAT,端口限制锥形NAT,IP限制锥型NAT
- 代码逻辑实现NAT类型检测
- 网络穿透的原理
- 网络穿透的3种情况
九. 上线项目实战
1、互联网并发云盘
1.1 fastdfs架构分析和配置
- fastdfs架构分析
- 快速配置fastdfs
- 上传文件逻辑分析
- 下载文件逻辑分析
1.2 fastdfs存储原理
- tracker,storage分析
- 存储机制
- 支持断点续传
- 相同文件内容只保存一份
1.3 分布式fastdfs存储集群部署
- 同步机制
- 线性扩容
- 如何实现高可用
- 负载均衡
1.4 高负载nginx/fastcgi
- fastdfs-nginx-module模块分析
- fastcgi请求与响应
- nginx与fastcgi如何通信
- nginx-fastcgi-fastdfs如何实现上传下载
1.5 文件传输和接口设计
- 云盘接口设计
- 云盘数据库设计
- 云盘文件上传,下载功能实现
- 云盘源码业务流程实现
1.6 产品上云公网发布/测试用例
- 使用云服务器的各种坑分析
- fiddler监控http请求,postman模拟请求
- wrk测试接口吞吐量
- jmeter压力测试
2、微服务即时通讯
2.1 IM即时通讯项目框架分析和部署
- 接入层、逻辑层、持久层架构划分
- 消息实时性分析
- 即时通讯数据库设计
- 单聊、群聊消息原理
- 群成员管理
- 未读消息原理
- 池化技术的使用
- 快速配置IM项目
2.2 IM消息服务器/文件传输服务器
- protobuf通信协议设计
- 数据库分表设计
- reactor百万并发模型
- login_server负载均衡
- 登录请求响应模型
2.3 消息服务器/路由服务器
- 请求登陆逻辑
- 最近联系会话逻辑
- 查询用户在线主题
- 未读消息机制
- 单聊消息推拉机制
- 群聊消息推拉机制
- 路由转发机制
2.4 数据库代理服务器设计
- main函数主流程
- 响应流程
- redis缓存
- 消息计数(单聊和群聊)
- 未读消息机制
- 群成员管理
- 单聊群聊
2.5 文件服务器和docker部署
- 在线文件传输机制分析
- 离线文件传输机制分析
- etcd微服务注册与发现
- docker制作与部署
2.6 产品上云公网发布/公网测试上线
- 单元测试案例
- testbench如何设计
- IM项目性能压测
- 定制私有功能
- 云服务器部署
思维导图获取点击:导图
十、视频学习
每个人的学习方法不一样,个人认为视频是很好的学习的方式,当然也要质量不佳好的视频,有人一步一步的讲解教学,配合的相应的文档,学习起来效率更佳。
后记
技术的瓶颈是认知的问题,认知不是知其名,还需要知其因,更需要知其原。
祝大家早日成为大牛,以下C/C++Linux后端服务器开发高级架构系统学习视频点击:
C/C++Linux后端服务器开发高级架构系统学习视频
2021年10年后端开发程序员最新《C/C++Linux 服务器开发》学习路线总结,建议收藏相关推荐
- apk对齐优化,作为移动开发程序员应该怎样去规划自己的学习路线?系列篇
背景 经常有网友在知乎问答提两个问题:"现在学习移动开发还有前景吗?""开发还有什么可以研究的?".网友回复:"现在还学移动开发?如同49年加入国军! ...
- 通过三种情况深度分析,复杂的公网环境,网络穿透如何做到?丨C++后端开发丨P2P丨c/c++Linux服务器开发丨网关API
通过三种情况深度分析,复杂的公网环境,网络穿透如何做到? 视频讲解如下,点击观看: 通过三种情况深度分析,复杂的公网环境,网络穿透如何做到?丨C++后端开发丨P2P丨c/c++Linux服务器开发丨网 ...
- java开发程序员_Java大牛给入门Java开发程序员的10个学习建议
Java的知识点其实非常多,并且有些知识点比较难以理解,有时候我们自以为理解了某些内容,其实可能只是停留在表面上,没有理解其底层实现原理. 纸上得来终觉浅,绝知此事要躬行. 学习Java基础的时候,应 ...
- 推荐一个专注程序员编程提效网站,编程学习利器,建议点赞收藏
今天给大家分享一个专注程序员编程提效网站. 在这里有程序员学习开发几乎想要的一切导航. 1.常用学习手册 LeetCode.SQL.Java.Python.Go.Redis等详细手册. 2.技术社区 ...
- 吐血整理-高级程序员必备Java并发编程原理,没时间看建议收藏
简介: Java线程之间的通信对程序员完全透明,内存可见性问题很容易困扰Java程序员,这一系列几篇文章将揭开Java内存模型的神秘面纱.这一系列的文章大致分4个部分,分别是: Java内存模型基础, ...
- 2021最全大数据学习路线(建议收藏)
个人简介:非科班双一流硕士,CAE仿真方向转行大数据,现杭州某大厂大数据工程师! 我可以给你提供最全的[大数据学习路线]:帮助你搭建大数据知识体系,从入门到精通:亲自指导你大数据工程师面试的简历该如何 ...
- 微信小程序之小程序UI组件、开发框架、实用库学习资源汇总-建议收藏
weui-wxss ★852 - 同微信原生视觉体验一致的基础样式库 地址:https://github.com/weui/weui-wxss Wa-UI ★122 - 针对微信小程序整合的一套UI库 ...
- 程序员需知的11个在线教程网站,建议收藏!
作为一个"收藏从未停止,学习从未开始"的博主,秉承着好东西不能独享的态度,把收藏的学习网站整理分享出来,希望大家不要学我,一定要好好学习,天天进步,升职加薪. 一.在线教程 首先列 ...
- 作为有经验的程序员如果不懂Lambda表达式就说不过去了吧,建议收藏!!!
最近刚好有空给大家整理下JDK8的特性,这个在实际开发中的作用也是越来越重了,本文重点讲解下Lambda表达式 Lambda表达式 Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最 ...
- GIS开发程序员简历怎么写?怎么面试?GIS开发面试题?GIS专业怎么找工作?
目录 23届校招招聘企业(GIS开发) 23届校招招聘企业(其他岗位) GIS开发程序员简历怎么写? 1.个人基础信息(包括学历) 2.项目/实习等实践经历 竞赛/论文等优秀的相关经历 简单的技能清单 ...
最新文章
- matlab绘制图形hold on_matlab 中 hold on 和hold off的使用
- 如何让SiteMapPath使用指定路径指定名称的sitemap文件。
- 被压缩的视觉:视频编解码技术
- Elasticsearch-PHP requires cURL, or a custom HTTP handler.
- 修改Chrome的User Agent的方法 真实有效
- 【预测模型】基于狼群算法优化BP神经网络实现预测matlab源码
- 根据IP获取对应国家
- struct lnode{}Lnode后面的Lnode是什么意思
- win10系统怎么找服务器地址,win10系统下如何快速查找本地ip地址
- 给女友定时发送睡前小故事
- 订单拆单-产品逻辑分析研究
- 《棒球殿堂》:棒球联盟LEAGUE·东北乐天金鹫
- 二维数组与指向指针的指针
- 2019年暑期集训总结
- IIS打开aspx文件
- Repository epel is listed more than once in the configuration解决办法
- 中国海洋大学计算机学院在哪个校区,中国海洋大学校区有几个 地址是什么
- Linux 抓取网页实例(shell+awk)
- 深度学习——day38 读论文:基于深度学习的数据竞争检测方法(DeleRace计算机研究与发展 2022)
- CrackMe 之 006
热门文章
- 使用ASP.NET MVC Web SignalR 构建单身聊天室(一)
- 大禹电子:元宵佳节逛花灯,猜灯谜好不热闹
- 临江屯的月亮湾---月亮泡子
- com.mysql.jdbc.driver jar下载_com.mysql.jdbc.Driver
- Python条件语句(if、pass)
- 阿里云mysql空间不足_阿里云数据库MySQL系统文件导致实例空间满的解决办法
- Google提供Fastboot和ADB单独下载服务(转载)
- matlab 数字和字符串转换
- 男生追女生时的21个致命问题
- 夜神模拟器-软件apk存放目录