本项目很多内容来自廖雪峰、JavaGuide、advanced-java、CS-Notes、srs 等开源库,进行简单排版与补充整理,内容涵盖 Java、PHP、C++、JVM、CS、Redis、MySQL、高并发、高可用、分布式、微服务、海量数据处理等领域知识。
本项目基于 Docsify 进行构建,目前支持以下站点访问:
GitHub Pages:https://langyastudio.github.io/langya-doc
下载到本地查看,推荐 Markdown 编辑器 Typora
依据 jvm 规范实现的一套 API,反射、泛型、IO、函数编程、异常、注解等
扩展
- java 常见关键字
- java IO 模型
- java BIO NIO AIO 你了解吗
- java BigDecimal 如何解决精度损失的问题
- java 代理模式
- java security 加密解密详解
- java junit 测试框架
源码解读
多线程、线程安全、AQS、锁、并发容器、原子类、ABA 问题、伪共享等
扩展
存储级别 or 执行级别,jdk 提供了一系列工具来窥探这些信息。包含jstat、jmap、jstack、jvisualvm 等都是最常用的。 垃圾收集器、Class文件结构、类加载机制、参数调优、字节码、锁升级、JMM、JVM并发、JIT等
扩展
mybatis
spring
- SSH 框架已经过时了吗
- spring 常见问题总结
- spring 注解详解
- spring5 新特性与增强的功能
- spring IOC 容器详解
- spring AOP 代理模式详解
- spring 如何操作数据库
- spring MVC 框架详解
- spring Scheduler 如何执行任务
- spring Aware 是什么
spring boot
- spring boot 常见知识点
- spring boot 零基础快速入门
- spring boot restful web 应用
- spring boot properties 配置文件详解
- yml 配置文件详解
- spring boot package 打包与 devtools
- spring boot 日志 log4j2
- spring boot actuator 监控/健康检查/审计/统计
- spring boot 深度理解定时任务 schedule
- spring boot 多线程异步调用 Async
- spring boot 整合 mybaits 数据库开发框架
- spring boot mybatis 缓存机制
- spring boot exception 全局异常处理
- spring boot 如何解决跨域问题
- spring boot validation 数据校验
打包
工具集
fastjson、Hutool 等
数据库范式、字符集、索引(聚集索引、非聚集索引、复合索引、自适应哈希索引)、事务(ACID、隔离级别、MVCC)、锁(锁与同步锁、公开锁、非公平锁、悲观锁、乐观锁、互斥锁、共享锁、死锁)等
- mysql 基础知识
- mysql 常见必知必会的 SQL 语句操作
- mysql 索引详解
- mysql 事务隔离级别
- mysql 高性能优化指南
- mysql 日志详解
- mysql 如何执行 SQL 语句
- mysql innodb-存储引擎对mvcc的实现
设计
数据库连接池方面,国内使用 druid 最多
现在的企业,数据量都非常大,数据仓库是必须的。 搜索方面,solr 比较成熟,稳定性更好一些,但实时搜索方面不如 es。 列式存储方面,基于 Hadoop 的 hbase,使用最是广泛;基于 LSM 的 leveldb 写入性能优越,但目前主要是作为嵌入式引擎使用多一些。 时序数据库方面,opentsdb 用在超大型监控系统多一些
实时数据同步工具,都是把自己模拟成一个从库,进行数据拉取和解析。 mysql 通过 binlog 进行同步;canal、maxwell 等工具,都支持将要同步的数据写入到 mq 中进行后续处理。对于ETL(抽取、清洗、转换)来说,datax、logstash、sqoop 等,都是这样的工具。
分布式缓存来说,优先选择的就是
redis
。由于 redis 是单线程的,并不适合高耗时操作。所以对于一些数据量比较大的缓存,比如图片、视频等,使用老牌的 memcached 效果会好的多。 redis、caffeine、vernemq等
Redis
- redis 基础知识
- redis 缓存读写策略
- redis 除了做缓存,还可以怎么用?
- 缓存如何确保数据的一致性
- redis 内存碎片是什么
- redis停止服务报错 NOAUTH Authentication required 导致关机异常慢
一个大型的分布式系统,通常都会异步化,走消息总线。 kafka 有着极高的吞吐量 rocketmq 和 rabbitmq 都是电信级别的消息队列,在业务上用的比较多 mqtt 具体来说是一种协议,主要用在物联网方面
RocketMQ
websocket
quartz 是 java 中比较古老的调度方案,分布式调度采用数据库锁的方式,管理界面需要自行开发。相对来说 xxl-job 更加轻量好用
thrift、dubbo、gRPC 默认都是二进制序列化方式的 socket 通讯框架;feign、hessian 都是 onhttp 的远程调用框架。
Dubbo
Java 中,netty 已经成为当之无愧的网络开发框架,包括其上的 socketio。服务的响应时间主要耗费在业务逻辑以及数据库上,通讯层耗时在其中的占比很小。
Tomcat、Nginx、Apache等
Apache
- Apache 如何配置多端口与域名访问
- Apache 修改最大连接数/并发数
- Apache ab 并发负载压力测试
- Apache mod_xsendfile 为php提供更快的文件下载
- Apache 支持mp4与flv拖动播放的功能模块
- Apache 防盗链模块mod_auth_token的安装配置
- Apache 启用GZIP压缩功能 mod_deflate的安装配置
- xampp 安装与配置
Tomcat
nginx
分布式系统 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 亲生的
- spring cloud 入门总结
- Spring Cloud Alibaba 介绍
- nacos 服务注册与发现 看这一篇就够了
- nacos 配置管理 这样用就对了
- openfeign 结合 nacos 进行声明式服务调用
- sentinel 实现熔断与限流 原来这么简单
- gateway 新一代API网关服务
- Spring Cloud Gateway + OAuth2 + JWT 实现统一认证与鉴权
- RocketMQ 如何快速实现微服务消息机制
- Seata 彻底解决分布式事务问题
- Spring Boot Admin 最简单的微服务应用监控
读写分离、负载均衡、分库分表(推荐使用驱动层的
sharding-jdbc
,或者代理层的mycat
,方案一旦确定,几乎无法回退)进行垂直拆分、水平拆分、不停机切换、HA&FailOver等
内核参数优化、jvm优化、网络参数优化、事务优化、数据库优化、池化等
限流、熔断(sentinel)、降级、排队、超时与重试、容灾、应用层容灾、跨机房容灾等
DDD、Aotor模式、响应式设计、RESTful、Service Mesh等
web 安全(SQL注入、XSS、CSRF、DDOS、脚本注入、漏洞、验证码)、隐私信息保护、加密解密、证书体系、网络隔离、内外网隔离、跳板机、授权认证(OAuth、SSO、JWT)等
基本的数据结构非常重要,无论接触什么编程语言,基本数据结构都是首先要掌握的。 队列、栈、链表、数组、字典、图、堆、树(红黑树、B、B+、B*树、LSM 树、二叉树、平衡二叉树、平衡二叉树、BST 二叉查找树)等
算法是某些大厂的门槛,能够培养逻辑思维能力和动手能力,最快的进阶途径就是刷 leetcode。 排序算法、贪心算法、动态规划、回溯算法、剪枝算法、图算法等
熟悉 Netty 开发是入门网络开发的捷径。 网络基础、网络模型、Epoll、Kqueue、长连接、爬虫等
对于计算密集型应用,就需要关注程序执行的效率;对于I/O密集型,要关注进程(线程)之间的切换以及I/O设备的优化以及调度。 计算机原理、CPU、内存、IO、进程线程等
srs
- srs 与主流流媒体服务器的对比
- srs 部署分发 HLS 与 FLV 服务
- srs RTMP/HLS 低延时模式与 reload
- srs 回调授权与管理
- srs 使用阿里云cdn提高并发
- srs 利用集群提高并发量 支持更多的推流与播放
内存溢出排查、堆内外层排查、网络排查、IO排查、高负载排查等
服务器一般采用稳定性较好的 centos,并配备 ansible工具进行支持 haproxy、lvs、keepalived、APM、Docker、CI/CD、jenkins、自动化(ansible)、监控(zabbix、prometheus + grafana + telegraf、es/logstash/kibana)等
Docker
硬件
Linux
- ECS 安装图形化桌面
- Linux-CentOS 搭建ssr服务端
- U盘安装CentOS系统 提示No Caching mode page found /dev/root does not exist错误的解决方法
- CentOS 安装FFmpeg
- CentOS 磁盘挂载与NFS共享
- /bin/bash^M: 坏的解释器: 没有那个文件或目录
- Linux 时间如何同步
- Linux 最大打开文件数和进程数
- CentOS 磁盘空间修改
Windows
监控
Platform
IDE、代码管理、项目构建等
- IDEA 常用插件推荐
- IDEA 如何快速的进行代码重构
- IDEA 源码阅读技巧
- IDEA Maven配置
- IDEA Tomcat 配置详解
- IDEA 配置XDebug 远程调试 PHP 代码 详细教程
架构评审、重构、代码规范、代码评审、RUP、看板管理、SCRUM、敏捷开发、结对编程、PDCA、FMEA 管理模式等
TDD、单元测试、压力测试、全链路压测
行业、技术趋势、行业数据分析等
- PHP Supported Versions 支持的版本
- PHP8 新特性
- PHP this parent static self 关键字
- PHP 密码哈希password_hash的使用方法
- 分分钟解决 PHP 上传文件大小限制的问题
- PHP 获取 IP 地址所在的地理位置信息/城市
- PHP 获取内存/CPU/负载/网络带宽数据包/磁盘IO读写等监控指标
- PHP 实现敏感词过滤(附敏感词库)
扩展
- PHP 性能优化简述
- PHP SSO 原来单点登录这么简单
- PHP List数据集/数组转换成树状结构Tree
- PHP ajax请求返回数据后,如何在后台继续执行代码
- PHP扩展 opcache 操作码优化加速组件的配置
- PHP 源码加密解密工具php-beast
- soar-php SQL语句优化与重写的自动化工具
- PHP Yaconf 一个高性能的配置管理扩展(PHP7)
- thinkphp 如何有效提高应用性能
- workerman 支持多少并发量