IDEA自动补齐汇总:
第一种:IDEA已定义
psvm: public static void main(String[] args){}
sout: System.out.println()
fori: for(i...)
第二种: 自定义:
打开IDEA的File-project settings--liveTemplates
点击右边的加号,先创建一个模板的分组template group,命名为JAVA
再添加live template,命名为main(自定义),再添加模板文本(也就是自动补全的代码),最后就是change(就是应用到哪里),比如是Java,JS还是其他地方
java技能图谱,2020-01-09开始系统学习java
graph LR
B1(java技能图谱)-->B2(计算机基础)
B1(java技能图谱)-->B3(java编程)
B1(java技能图谱)-->B4(JVM)
B1(java技能图谱)-->B5(软件工程)
B1(java技能图谱)-->B6(设计模式)
B1(java技能图谱)-->B7(Linux)
B1(java技能图谱)-->B8(数据)
B1(java技能图谱)-->B9(算法与数据机构)
B1(java技能图谱)-->B10(分布式系统)
B1(java技能图谱)-->B11(项目经验)
B2(计算机基础)-->B2_1(操作系统:<现代操作系统>)
B2(计算机基础)-->B2_2(编译原理)
B2(计算机基础)-->B2_3(计算机网络)
B2(计算机基础)-->B2_4(互联网协议)
B2_4(互联网协议)-->B2_4_1(TCP/IP:TCP/IP协议簇)
B2_4(互联网协议)-->B2_4_2(HTTP1.1/2.0)
B2_4(互联网协议)-->B2_4_3(HTTPS)
B2_4(互联网协议)-->B2_4_4(OAuth 2.0)
B2_4(互联网协议)-->B2_4_5(REST)
B3(java编程)-->B3_1(IDE)
B3(java编程)-->B3_2(版本控制)
B3(java编程)-->B3_3(笔记)
B3(java编程)-->B3_4(阅读)
B3(java编程)-->B3_5(基础语法)
B3(java编程)-->B3_6(集合框架:源码)
B3(java编程)-->B3_7(工具类)
B3(java编程)-->B3_8(JavaEE开发)
B3(java编程)-->B3_9(框架)
B3(java编程)-->B3_10(服务器)
B3(java编程)-->B3_11(高级特性)
B3(java编程)-->B3_12(构建)
B3(java编程)-->B3_13(安全)
B3(java编程)-->B3_14(测试)
B3_1(IDE)-->B3_1_1(Eclipse)
B3_1(IDE)-->B3_1_2(IntelliJIDEA:在使用)
B3_2(版本控制)-->B3_2_1(SVN)
B3_2(版本控制)-->B3_2_2(git)
B3_3(笔记)-->B3_3_1(Evernote:剪藏功能很强大)
B3_3(笔记)-->B3_3_2(有道云笔记)
B3_3(笔记)-->B3_3_3(插件)
B3_3_3(插件)-->B3_3_3_1(Chrome Evernote)
B3_3_3(插件)-->B3_3_3_2(微信公众号:evertnote和有道云笔记)
B3_4(阅读)-->B3_4_1(公众号)
B3_4(阅读)-->B3_4_2(优质计算机类纸质书)
B3_5(基础语法)-->B3_5_1(JDK8推荐:Java核心技术卷1)
B3_6(集合框架:源码)-->B3_6_1(List)
B3_6(集合框架:源码)-->B3_6_2(Set)
B3_6(集合框架:源码)-->B3_6_3(Map)
B3_6(集合框架:源码)-->B3_6_4(Queue:ConcurrentLinkedQueue)
B3_6(集合框架:源码)-->B3_6_5(Stack)
B3_6(集合框架:源码)-->B3_6_6(Collections的synchronizedXXX方法)
B3_6_1(List)-->B3_6_1_1(ArrayList)
B3_6_1(List)-->B3_6_1_2(LinkedList)
B3_6_2(Set)-->B3_6_2_1(HashSet)
B3_6_2(Set)-->B3_6_2_2(TreeSet)
B3_6_3(Map)-->B3_6_3_1(HashMap:JDK8的实现与之前版本不同)
B3_6_3(Map)-->B3_6_3_2(TreeMap)
B3_6_3(Map)-->B3_6_3_3(ConcurrentHashMap)
B3_7(工具类)-->B3_7_1(Google guava:推荐)
B3_7(工具类)-->B3_7_2(Apache common lang/BeanUtils/Collections/IO)
B3_7(工具类)-->B3_7_3(JSON)
B3_7_3(JSON)-->B3_7_3_1(fastjson)
B3_7_3(JSON)-->B3_7_3_2(gson)
B3_7_3(JSON)-->B3_7_3_3(jackson)
B3_8(JavaEE开发)-->B3_8_1(JSP/Servlet 3.x)
B3_8(JavaEE开发)-->B3_8_2(Session/Cookie)
B3_8(JavaEE开发)-->B3_8_3(jstl/EL)
B3_9(框架)-->B3_9_1(Spring)
B3_9(框架)-->B3_9_2(SpringMVC)
B3_9(框架)-->B3_9_3(Mybatis)
B3_9(框架)-->B3_9_4(shiro)
B3_9(框架)-->B3_9_5(Netty)
B3_10(服务器)-->B3_10_1(Servlet容器)
B3_10(服务器)-->B3_10_2(Nginx/Tengine:Web应用服务器)
B3_11(高级特性)-->B3_11_1(泛型)
B3_11(高级特性)-->B3_11_2(多态的实现原理)
B3_11(高级特性)-->B3_11_3(Lambda)
B3_11(高级特性)-->B3_11_4(并发编程)
B3_11_4(并发编程)-->B3_11_4_1(Executor框架)
B3_11_4(并发编程)-->B3_11_4_2(Fork/join)
B3_11_4(并发编程)-->B3_11_4_3(happen-before)
B3_11_4(并发编程)-->B3_11_4_4(数据结构)
B3_11_4_4(数据结构)-->B3_11_4_4_1(ConcurrentHashMap)
B3_11_4_4(数据结构)-->B3_11_4_4_2(ConcurrentLinkedQueue)
B3_11_4(并发编程)-->B3_11_4_5(线程池)
B3_11_4_5(线程池)-->B3_11_4_5_1(参数设置)
B3_11_4_5(线程池)-->B3_11_4_5_2(原理)
B3_11_4_5(线程池)-->B3_11_4_5_3(拒绝策略)
B3_11_4(并发编程)-->B3_11_4_6(线程状态)
B3_11_4(并发编程)-->B3_11_4_7(Lock/synchronized)
B3_11_4(并发编程)-->B3_11_4_8(原子操作类)
B3_11_4(并发编程)-->B3_11_4_9(并发工具类)
B3_11_4_9(并发工具类)-->B3_11_4_9_1(CountDownLatch)
B3_11_4_9(并发工具类)-->B3_11_4_9_2(Semaphore)
B3_11_4_9(并发工具类)-->B3_11_4_9_3(CyclicBarrier)
B3_11_4_9(并发工具类)-->B3_11_4_9_4(Exchanger)
B3_11(高级特性)-->B3_11_5(网络编程)
B3_11_5(网络编程)-->B3_11_5_1(Socket)
B3_11_5(网络编程)-->B3_11_5_2(基本案例实现)
B3_11(高级特性)-->B3_11_6(IO)
B3_11_6(IO)-->B3_11_6_1(BIO)
B3_11_6(IO)-->B3_11_6_2(NIO)
B3_11_6(IO)-->B3_11_6_3(AIO)
B3_11(高级特性)-->B3_11_7(序列化)
B3_11_7(序列化)-->B3_11_7_1(JDK自带)
B3_11_7(序列化)-->B3_11_7_2(Google probobuf:性能非常高)
B3_11(高级特性)-->B3_11_8(远程调用)
B3_11_8(远程调用)-->B3_11_8_1(RMI)
B3_11_8(远程调用)-->B3_11_8_2(Thrift)
B3_11_8(远程调用)-->B3_11_8_3(Dubbo/DubboX:服务器治理,页可以做为微服务器)
B3_11_8(远程调用)-->B3_11_8_4(gRPC:目前已推出1.0版)
B3_12(构建)-->B3_12_1(Maven:推荐Maven实战)
B3_12(构建)-->B3_12_2(Gradle)
B3_13(安全)-->B3_13_1(单散列算法:MD5/SHA)
B3_13(安全)-->B3_13_2(对称加密:DES)
B3_13(安全)-->B3_13_3(非对称加密:RSA:HTTPS)
B3_14(测试)-->B3_14_1(测试用例)
B3_14(测试)-->B3_14_2(百盒)
B3_14(测试)-->B3_14_3(黑盒)
B3_14(测试)-->B3_14_4(junit)
B3_14(测试)-->B3_14_5(Sprint Test)
B3_14(测试)-->B3_14_6(CmdExcetor)
B4(JVM)-->B4_1(认识Java虚拟机:默认Hostspot实现)
B4(JVM)-->B4_2(类加载机制:知道双亲委派模型)
B4(JVM)-->B4_3(内存模型)
B4(JVM)-->B4_4(GC:回收算法/垃圾收集器)
B4(JVM)-->B4_5(调优)
B4(JVM)-->B4_6(工具:jstack/jmap/jconsole)
B5(软件工程)-->B5_1(运维)
B5(软件工程)-->B5_2(持续集成:jenkins)
B5(软件工程)-->B5_3(TDD)
B5(软件工程)-->B5_4(原则)
B5_4(原则)-->B5_4_1(DRY)
B5_4(原则)-->B5_4_2(单一职责)
B5_4(原则)-->B5_4_3(开闭原则)
B6(设计模式)-->B6_1(工厂模式)
B6(设计模式)-->B6_2(代理模式)
B6(设计模式)-->B6_3(门面模式)
B6(设计模式)-->B6_4(观察者模式)
B6(设计模式)-->B6_5(责任链模式)
B6(设计模式)-->B6_6(适配器模式)
B6(设计模式)-->B6_7(装饰者模式)
B6(设计模式)-->B6_8(单利模式)
B7(Linux)-->B7_1(发行版:Server)
B7_1(发行版:Server)-->B7_1_1(Ubuntu)
B7_1(发行版:Server)-->B7_1_2(Redhat)
B7_1(发行版:Server)-->B7_1_3(CenterOS)
B7(Linux)-->B7_2(常用命令)
B7_2(常用命令)-->B7_2_1(查看正在执行的进程)
B7_2(常用命令)-->B7_2_2(查询指定的进程ID打开的文件)
B7_2(常用命令)-->B7_2_3(杀死指定PID的进程:PID为Process ID)
B7_2(常用命令)-->B7_2_4(计算文件的行数,字数或字符数)
B7_2(常用命令)-->B7_2_5(显示进程信息,并实时更新)
B7_2(常用命令)-->B7_2_6(调用top命令的-H选项,该选项会列出所有Linux线程)
B7_2(常用命令)-->B7_2_7(查看username的进程所打开的文件)
B7_2(常用命令)-->B7_2_8(在ps命令中,-T选项可以开启线程查看,下面列出的命令列出了由进程号为进程创建的所有线程)
B7_2(常用命令)-->B7_2_9(比较两个文件)
B7_2(常用命令)-->B7_2_10(后台执行,通过在shell中输入exit来退出终端)
B7_2(常用命令)-->B7_2_11(查看正在执行的任务)
B7_2(常用命令)-->B7_2_12(多线程执行)
B7_2(常用命令)-->B7_2_13(查看进程和线程的树形结构关系)
B7_2(常用命令)-->B7_2_14(ps命令-L参数显示进程,并尽量显示其LWP:线程ID和NLWP:线程的个数)
B7_2(常用命令)-->B7_2_15(ps命令查看线程在哪个CPU熵运行)
B7_2(常用命令)-->B7_2_16(取出文件的前面几行)
B7_2(常用命令)-->B7_2_17(动态查看文件变化)
B7_2(常用命令)-->B7_2_18(退出tail -f)
B7_2(常用命令)-->B7_2_19(tail程序放到后台去:ctrl+z,等处理完其他事情,在用fg命令将tail命令转到前台来)
B7_2(常用命令)-->B7_2_20(查看文件夹和子目录的大小)
B7_2(常用命令)-->B7_2_21(设置定时任务)
B7_2(常用命令)-->B7_2_22(重命名文件和文件夹)
B7_2(常用命令)-->B7_2_23(复制,剪切,清空和删除)
B7_2(常用命令)-->B7_2_24(Linux通信)
B8(数据)-->B8_1(NoSQL/MongoDB)
B8_1(NoSQL/MongoDB)-->B8_1_1(文档模型)
B8_1(NoSQL/MongoDB)-->B8_1_2(分片)
B8(数据)-->B8_2(分布式缓存)
B8_2(分布式缓存)-->B8_2_1(Memocached)
B8_2(分布式缓存)-->B8_2_2(Redis:重要)
B8(数据)-->B8_3(关系数据库)
B8_3(关系数据库)-->B8_3_1(MYSQL)
B8_3_1(MYSQL)-->B8_3_1_1(引擎)
B8_3_1_1(引擎)-->B8_3_1_1_1(InnoDB:支持事务)
B8_3_1_1(引擎)-->B8_3_1_1_2(MyISAM:支持全文索引)
B8_3_1(MYSQL)-->B8_3_1_2(分库分表)
B8_3_1_2(分库分表)-->B8_3_1_1(Cobar)
B8_3_1_2(分库分表)-->B8_3_1_2(Mycat)
B8_3_1(MYSQL)-->B8_3_1_3(SQL优化)
B8_3_1_3(SQL优化)-->B8_3_1_3_1(索引:主键索引/组合索引)
B8_3_1_3(SQL优化)-->B8_3_1_3_2(explain)
B8_3_1_3(SQL优化)-->B8_3_1_3_3(存储过程)
B8_3_1(MYSQL)-->B8_3_1_4(SQL注入:使用#而不实用$)
B8_3_1(MYSQL)-->B8_3_1_5(事物隔离级别:ACID)
B8_3_1_5(事物隔离级别:ACID)-->B8_3_1_5_1(原子性)
B8_3_1_5(事物隔离级别:ACID)-->B8_3_1_5_2(一致性)
B8_3_1_5(事物隔离级别:ACID)-->B8_3_1_5_3(隔离性)
B8_3_1_5(事物隔离级别:ACID)-->B8_3_1_5_4(持久性)
B8_3_1(MYSQL)-->B8_3_1_6(锁)
B8_3_1_6(锁)-->B8_3_1_6_1(表锁)
B8_3_1_6(锁)-->B8_3_1_6_2(行锁)
B8_3_1_6(锁)-->B8_3_1_6_3(乐观锁)
B8_3_1_6(锁)-->B8_3_1_6_4(悲观锁)
B8_3(关系数据库)-->B8_3_2(数据库设计)
B8_3_2(数据库设计)-->B8_3_2_1(范式:第1/2/3范式)
B8_3_2(数据库设计)-->B8_3_2_2(E-R图)
B8_3(关系数据库)-->B8_3_3(其他)
B8(数据)-->B8_4(搜索引擎)
B8_4(搜索引擎)-->B8_4_1(Solr)
B8_4(搜索引擎)-->B8_4_2(ElasticSearch)
B8(数据)-->B8_5(大数据:Hadoop/Hbase/Spark/Storm/Jstrom)
B9(算法与数据机构)-->B9_1(字符串:查找匹配KMP/正则化)
B9(算法与数据机构)-->B9_2(数组)
B9(算法与数据机构)-->B9_3(链表)
B9(算法与数据机构)-->B9_4(栈)
B9(算法与数据机构)-->B9_5(队列)
B9(算法与数据机构)-->B9_6(树)
B9_6(树)-->B9_6_1(二叉树)
B9_6_1(二叉树)-->B9_6_1_1(前序遍历)
B9_6_1(二叉树)-->B9_6_1_2(中序遍历)
B9_6_1(二叉树)-->B9_6_1_3(后续遍历)
B9_6(树)-->B9_6_2(B Tree/B+Tree)
B9_6(树)-->B9_6_3(红黑树)
B9(算法与数据机构)-->B9_7(哈希:哈希冲突/k-v)
B9(算法与数据机构)-->B9_8(图:BFS/DFS)
B9(算法与数据机构)-->B9_9(排序)
B9_9(排序)-->B9_9_1(内部排序)
B9_9_1(内部排序)-->B9_9_1_1(插入排序:直接插入排序/希尔排序)
B9_9_1(内部排序)-->B9_9_1_2(选择排序:简单选择排序/堆排序)
B9_9_1(内部排序)-->B9_9_1_3(交换排序:冒泡排序/快速排序)
B9_9_1(内部排序)-->B9_9_1_4(归并排序)
B9_9_1(内部排序)-->B9_9_1_5(基数排序)
B9_9_1(内部排序)-->B9_9_1_6(桶排序)
B9_9(排序)-->B9_9_2(外部排序)
B10(分布式系统)-->B10_1(从集中式到分布式)
B10(分布式系统)-->B10_2(分布式Session:Session复制/Session绑定/Session服务器)
B10(分布式系统)-->B10_3(分布式缓存:Redis/一致性hash)
B10(分布式系统)-->B10_4(数据库)
B10_4(数据库)-->B10_4_1(读写分离:主从热备)
B10_4(数据库)-->B10_4_2(分库)
B10_4(数据库)-->B10_4_3(分表)
B10(分布式系统)-->B10_5(一致性)
B10_5(一致性)-->B10_5_1(分布式事务:CAP/BASE/2PC/3PC/Paxos)
B10_5(一致性)-->B10_5_1(分布式锁:Redisson)
B10(分布式系统)-->B10_6(负载均衡)
B10_6(负载均衡)-->B10_6_1(硬件:F5)
B10_6(负载均衡)-->B10_6_2(软件:LVS)
B10(分布式系统)-->B10_7(消息队列)
B10_7(消息队列)-->B10_7_1(RabbitMQ)
B10_7(消息队列)-->B10_7_2(ZeroMQ)
B10_7(消息队列)-->B10_7_3(ActiveMQ)
B10_7(消息队列)-->B10_7_4(Kafka)
B10(分布式系统)-->B10_8(服务化)
B10_8(服务化)-->B10_8_1(服务注册与发现:Zeekeeper)
B10_8(服务化)-->B10_8_2(架构)
B10_8_2(架构)-->B10_8_2_1(微服务:Spring Boot/Dubbo)
B10_8_2(架构)-->B10_8_2_2(RPC)
B10_8_2(架构)-->B10_8_2_3(SOA)
B10(分布式系统)-->B10_9(虚拟化:Docker)
B10(分布式系统)-->B10_10(计算平台:实时/离线)
B10(分布式系统)-->B10_11(容灾,异地多活)
B11(项目经验)-->B11_1(角色)
B11(项目经验)-->B11_2(成果)
B11(项目经验)-->B11_3(思路)
B11(项目经验)-->B11_4(技术栈)
B1(java技能图谱)-->B10(分布式系统)
B1(java技能图谱)-->B11(项目经验)
graph TD
test.model.LogisticRankTest-->B2[client.service.RecsysSortService]
test.model.LogisticRankTest-->B4[recsyssort]
B2[client.service.RecsysSortService]-->B1[client.model.RecsysSortResult<br/>RecsysSortResult的定义]
B1[client.model.RecsysSortResult<br/>排序定义]-->B7[core.biz.RecsysSortBiz<br/>排序实现]
B7[core.biz.RecsysSortBiz<br/>排序实现]-->B8[core.entity.SortAlgorithm]
B8[core.entity.SortAlgorithm]-->B9[注册和调用构造好的<br/>排序方法和名称]
B7[core.biz.RecsysSortBiz<br/>排序实现]-->B10[core.util.EagleUtil]
B10[core.util.EagleUtil]-->B11(定义排序长度和同一<br/>类目最多返回商品数)
B9[注册和调用构造好的<br/>排序方法和名称]-->B12[core.biz.rank.impl.LogisticRank<br/>LR实现方法]
B12[core.biz.rank.impl.LogisticRank<br/>LR实现方法]-->B13[core.biz.rank.RankV1<br/>排序接口,定义输入格式]
B12[core.biz.rank.impl.LogisticRank<br/>LR实现方法]-->B14[core.biz.rank.uds.LogisticUDS<br/>从UDS配置中读取数据表]
B12[core.biz.rank.impl.LogisticRank<br/>LR实现方法]-->B3[core.entity.RedisClusterName]
B12[core.biz.rank.impl.LogisticRank<br/>LR实现方法]-->B15[core.dao.rank.LogisticRankDao<br/>连接数据库]
B3(core.entity.RedisClusterName)-->B21[定义redis库名,不需要修改]
B21[定义redis库名,不需要修改]-->B17(从UDS配置中读取数据表)
B13[core.biz.rank.Rank]-->B16(排序接口,定义输入格式<br/>已修改)
B14[core.biz.rank.uds.LogisticUDS]-->B17(从UDS配置中读取数据表)
B15[core.dao.rank.LogisticRankDao]-->B5[core.util.HSRedisUtil]
B15[core.dao.rank.LogisticRankDao]-->B6[core.util.RedisBaseUtil]
B5[core.util.HSRedisUtil]-->B18(获取用户商品和权重特征<br/>已修改 获取权重未生效?)
B6[core.util.RedisBaseUtil]-->B18(获取用户商品和权重特征<br/>已修改 获取权重未生效?)
B4(recsyssort)-->B22(定义排序服务,不需要修改)
例子:B8[core.entity.SortAlgorithm]-->B9[注册和调用构造好的
排序方法和名称]
1、前面的B只起到指示作用,无附加含义
2、数字8起到流程图中每个流程块的区分作用,最好不要重复
3、中括号"[]"表示图块的形状,不同的括号表示了不同的形状,可以修改尝试
4、<br/>换行,否则都显示在同一行中
5、符号-->表示标准的箭头,其他线条后续再尝试
6、graph TD表示流程图是自上而下的,TD换成LR表示自左向右
7、流程图的标识为: ```mermaid