物联网知识体系构建中

C++技术栈

多线程与多进程

垃圾回收

由于C++没有提供垃圾回收机制,资源申请和释放都需要编程实现。C++编程中不可避免的就是内存泄漏的问题,RAII是Resource Acquisition Is Initialization(wiki上面翻译成 “资源获取就是初始化”)的简称,是C++语言的一种管理资源、避免泄漏的惯用办法。 链接:C++中的RAII机制

网络编程模型

常见的网络编程模型主要分为四种,同步阻塞模型,同步非阻塞,IO多路复用,异步IO. 链接:
1. IO多路复用机制详解
2.深度理解select、poll和epoll
3.完成端口

基于Libevent的网络编程

Libevent是基于IO多路复用的网络编程模型,提供的select,poll和epoll方法来进行I/O复用,但是针对于多个系统平台上的不同的I/O复用实现方式,libevent进行了重新的封装,并提供了统一的API接口。libevent在实现上使用了事件驱动这种机制,其本质上是一种Reactor模式。 链接:1. libevent高性能网络库源码分析

JAVA技术栈

JAVA基础

JAVA语言

动态代理

JAVA并发编程

为什么wait,notify和notifyAll要与synchronized一起使用
Lock和synchronized的区别和使用

JVM

类的加载机制
JVM的内存区域划分

网络编程基础

网络编程模型

NIO框架详解:Netty的高性能之道
Java NIO:浅析I/O模型

Java web开发基础

Servlet简介
POJO

后端框架

Spring

简单的来说,Spring主要简化了两个编程中常见的麻烦,一个是依赖注入,另一个是面向切面编程。
浅析依赖倒置(DIP)、控制反转(IOC)和依赖注入(DI)
spring 源码阅读
spring 源码解析

Struts2

MVC框架指的是Model-View-Controller模型。
Struts2要解决什么问题呢?通俗的理解就是如何将前端的url请求和表单数据映射到服务端的方法中。
Struts2工作原理以及核心思想

Hibernate

Hibernate要解决什么问题呢?就是要将服务端程序中数据映射,存储到数据库中。

Mybaits

mybatis

Spring MVC

Spring MVC与Struts2是功能很相似的框架,但是与Struts2相比,Spring MVC可以直接将前端请求映射到后端的方法上,且使用注解简化了配置。

Spring boot

Spring boot 是搭建Spring MVC工程的脚手架,Spring boot可以简化配置文件。

Spring Cloud

Spring Cloud是基于Spring boot 的互联网微服务框架,组件间通讯方式是restful+json形式。
SpringCloud详解
大话Spring Cloud

Dubbo

Dubbo是阿里巴巴开源的一个SOA框架,组件间通信方式是webservice+xml方式。

中间件

WEB开发不可避免的涉及到许多中间件技术,虽然这些中间件的是由C++实现的,但是因为在笔者接触的业务场景中服务于JAVA编写的WEB程序,因此将其放在此处

Tomcat

四张图带你了解Tomcat系统架构

Zookeeper

Zookeeper实现了分布式一致性协议,广泛的应用于集群管理,在目前我接触的业务中主要作为dubbo框架的注册中心。
分布式理论之paxos
zookeeper中的ZAB协议理解

ActiveMq

ActiveMQ是常见的消息中间件,在实际项目中通过ActiveMq 的发布订阅模式。

Nginx

Nginx是反向代理的服务器,在实际项目中主要是防止xss和csrf攻击。
参考文献:什么是Nginx?为什么使用Nginx

ElasticSearch

在实际的业务场景中,服务端需要提供给客户端接口,实时精确查询视频监控点名称,然后根据具体的监控点进行视频播放。如果从关系数据库中直接查询,将会十分耗时,影响用户体验,ElasticSearch是基于lucene的用于海量数据检索的中间件,lucene的基本原理是倒排索引。
Lucene关系数据库的使用
Elasticsearch

ElasticJob

Elastcjob基于quartz定时任务的中间件,实际的业务场景中,应用于定时从其他服务组件拉去文件,进行解析。

keepalive

KeepAlive–高可用解决方案

LTS 任务调度框架

quartz源码分析——执行引擎和线程模型
light-task-scheduler

数据库

关系型数据库

第一范式 第二范式 第三范式 BC范式
为什么B+树适合作为索引的结构

Not only Sql

Redis

MongoDB

Hbase

一条数据的HBase之旅

网络编程

HTTP长连接、短连接

网络安全

数字签名与数字证书以及https
数字签名与数字证书技术简介

数据结构与算法

机器学习

机器学习算法

统计学习

深度学习

机器学习框架

大数据

大数据相关算法

Bitmap和布隆过滤器

离线处理

Hadoop

实时处理

Spark

Storm

S4

链接: S4,Storm; Mesos,YARN;Spark,Hadoop

业务流程

BS模式编程相关

cookie,session,token

CAS单点登录

用户一次登录之后,其他服务不可再次登录即可访问。
单点登录原理与简单实现

基于RBAC的权限管理

管理用户可访问资源,列表
RBAC用户、角色、权限、组设计方案

资源管理

增删改查

OAuth 2.0

理解OAuth 2.0

Leetcode

Leetcode题库涉及到基本的数据结构和算法。

架构设计

9种高性能高可用高并发的技术架构
后端架构师技术图谱
Java 微服务框架选型
微服务架构理解
JavaGuide

项目开发中常见问题

Maven

Maven中 jar包冲突原理与解决办法.
Maven本地仓库添加本地jar包.

常用开源工具包

模拟接口工具
easymock
json解析,json转POJO
fastjson
对象映射
mapStruct
生产率提高工具,减少getter、setter这类的业务代码
lombok

书单推荐: