依据 jvm 规范实现的一套 API,反射、泛型、IO、函数编程、异常、注解等
知识点
多线程、线程安全、AQS、锁、并发容器、原子类、ABA 问题、伪共享等
存储级别 or 执行级别,jdk 提供了一系列工具来窥探这些信息。包含jstat、jmap、jstack、jvisualvm 等都是最常用的。 垃圾收集器、Class文件结构、类加载机制、参数调优、字节码、锁升级、JMM、JVM并发、JIT等
spring boot
- SSH 框架已经过时了
- spring boot 零基础快速入门
- spring boot restful web应用
- spring boot properties配置文件详解
- spring boot package打包与devtools
- spring boot 日志log4j2
- spring boot actuator监控/健康检查/审计/统计
- spring boot 深度理解定时任务schedule
- spring boot 多线程异步调用Async
fastjson、Hutool 等
数据库范式、字符集、索引(聚集索引、非聚集索引、复合索引、自适应哈希索引)、事务(ACID、隔离级别、MVCC)、锁(锁与同步锁、公开锁、非公平锁、悲观锁、乐观锁、互斥锁、共享锁、死锁)等
设计
数据库连接池方面,国内使用 druid 最多
实时数据同步工具,都是把自己模拟成一个从库,进行数据拉取和解析。 mysql 通过 binlog 进行同步;canal、maxwell 等工具,都支持将要同步的数据写入到 mq 中进行后续处理。对于ETL(抽取、清洗、转换)来说,datax、logstash、sqoop 等,都是这样的工具。
分布式缓存来说,优先选择的就是
redis
。由于 redis 是单线程的,并不适合高耗时操作。所以对于一些数据量比较大的缓存,比如图片、视频等,使用老牌的 memcached 效果会好的多。 redis、caffeine、vernemq等
Redis
一个大型的分布式系统,通常都会异步化,走消息总线。 kafka 有着极高的吞吐量 rocketmq 和 rabbitmq 都是电信级别的消息队列,在业务上用的比较多 mqtt 具体来说是一种协议,主要用在物联网方面
quartz 是 java 中比较古老的调度方案,分布式调度采用数据库锁的方式,管理界面需要自行开发。相对来说 xxl-job 更加轻量好用
thrift、dubbo、gRPC 默认都是二进制序列化方式的 socket 通讯框架;feign、hessian 都是 onhttp 的远程调用框架。
Java 中,netty 已经成为当之无愧的网络开发框架,包括其上的 socketio。服务的响应时间主要耗费在业务逻辑以及数据库上,通讯层耗时在其中的占比很小。
现在的企业,数据量都非常大,数据仓库是必须的。 搜索方面,solr 比较成熟,稳定性更好一些,但实时搜索方面不如 es。 列式存储方面,基于 Hadoop 的 hbase,使用最是广泛;基于 LSM 的 leveldb 写入性能优越,但目前主要是作为嵌入式引擎使用多一些。 时序数据库方面,opentsdb 用在超大型监控系统多一些
Tomcat、Nginx、Apache等
Apache
- Apache 修改最大连接数/并发数
- Apache 如何配置多端口与域名访问
- Apache ab 并发负载压力测试
- Apache mod_xsendfile 为php提供更快的文件下载
- Apache 支持mp4与flv拖动播放的功能模块
- Apache 防盗链模块mod_auth_token的安装配置
- Apache 启用GZIP压缩功能 mod_deflate的安装配置
Tomcat
知识点
- PHP Supported Versions 支持的版本
- PHP this parent static self 关键字
- PHP 密码哈希password_hash的使用方法
- 分分钟解决 PHP 上传文件大小限制的问题
- PHP 获取 IP 地址所在的地理位置信息/城市
- PHP 获取内存/CPU/负载/网络带宽数据包/磁盘IO读写等监控指标
- PHP 实现敏感词过滤(附敏感词库)
扩展
- PHP 原来单点登录这么简单
- PHP List数据集/数组转换成树状结构Tree
- PHP ajax请求返回数据后,如何在后台继续执行代码
- PHP扩展 opcache 操作码优化加速组件的配置
- PHP 源码加密解密工具php-beast
- PHP 性能优化简述
- soar-php SQL语句优化与重写的自动化工具
- PHP Yaconf 一个高性能的配置管理扩展(PHP7)
- struct 结构体的变量声明加冒号
- C++ 回调函数详解
- C++ 硬件信息 获取网卡MAC地址
- C++ 硬件信息 获取硬盘序列号
- C++ 硬件信息 获取CPU序列号
- C++ 硬件信息 获取主板序列号
- C#调用C++ 基于P/Invoke实现
- C#调用C++ 基于CLI实现
- U盘插拔监控
- 垃圾回收机制GC详解
- C# WinForm 用户自定义控件闪烁的问题
- C# 注册自定义文件类型
- C# UrlEncode 与 Java、PHP 不一致
DDD、Aotor模式、响应式设计、RESTful、Service Mesh等
分布式系统 zookeeper 能用在很多场景,与其类似的还有基于 raft 协议的 etcd 和 consul。 CAP/BASE、Paxos/Raft、分布式锁、API网关、CC、分布式文件系统、分布式Id、分布式事务等
注册中心默认的 eureka 不再维护,consul 已经成为首选,nacos 带有后台,比较适合国人使用习惯 熔断组件官方的 hystrix 不再维护,推荐阿里的 sentinel or resilience4j 调用链推荐 jaeger or skywalking 配置中心推荐 apollo 对于 spring cloud 来说,zuul 系列推荐使用 zuul2,zuul1 是多线程阻塞的有硬伤。spring-cloud-gateway 是 spring cloud 亲生的,但目前用的不是很广泛
读写分离、负载均衡、分库分表(推荐使用驱动层的
sharding-jdbc
,或者代理层的mycat
,方案一旦确定,几乎无法回退)进行垂直拆分、水平拆分、不停机切换、HA&FailOver等
限流、熔断(sentinel)、降级、排队、超时与重试、容灾、应用层容灾、跨机房容灾等
内核参数优化、jvm优化、网络参数优化、事务优化、数据库优化、池化等
基本的数据结构非常重要,无论接触什么编程语言,基本数据结构都是首先要掌握的。 队列、栈、链表、数组、字典、图、堆、树(红黑树、B、B+、B*树、LSM 树、二叉树、平衡二叉树、平衡二叉树、BST 二叉查找树)等
算法是某些大厂的门槛,能够培养逻辑思维能力和动手能力,最快的进阶途径就是刷 leetcode。 排序算法、贪心算法、动态规划、回溯算法、剪枝算法、图算法等
熟悉 Netty 开发是入门网络开发的捷径。 网络基础、网络模型、Epoll、Kqueue、长连接、爬虫等
对于计算密集型应用,就需要关注程序执行的效率;对于I/O密集型,要关注进程(线程)之间的切换以及I/O设备的优化以及调度。 计算机原理、CPU、内存、IO、进程线程、Linux、Windows等
Windows
知识点
SRS
- SRS与主流流媒体服务器的对比
- SRS 安装与部署RTMP服务
- SRS 部署分发HLS与FLV服务
- SRS RTMP/HLS低延时模式
- SRS 回调授权与管理
- SRS Reload不中断服务
- SRS 利用集群提高并发量 支持更多的推流与播放
web 安全(SQL注入、XSS、CSRF、DDOS、脚本注入、漏洞、验证码)、隐私信息保护、加密解密、证书体系、网络隔离、内外网隔离、跳板机、授权认证(OAuth、SSO、JWT)等
TDD、单元测试、压力测试、全链路压测
内存溢出排查、堆内外层排查、网络排查、IO排查、高负载排查等
服务器一般采用稳定性较好的 centos,并配备 ansible工具进行支持。 haproxy、lvs、keepalived、APM、Docker、CI/CD、jenkins、自动化(ansible)、监控(zabbix、prometheus + grafana + telegraf、es/logstash/kibana)等
Linux
- U盘安装CentOS系统 提示No Caching mode page found /dev/root does not exist错误的解决方法
- /bin/bash^M: 坏的解释器: 没有那个文件或目录
- CentOS 安装FFmpeg
- CentOS 磁盘挂载与NFS共享
Docker
硬件
架构评审、重构、代码规范、代码评审、RUP、看板管理、SCRUM、敏捷开发、结对编程、PDCA、FMEA 管理模式等
IDE、代码管理、项目构建等
IDEA
Git
其他
行业、技术趋势、行业数据分析等