总是会说下次再看,下次再看,可是下次到底是什么时候呢?之前会把一些觉着蛮不错的东西记录在微博上面,然后想着会抽时间把零散的东西整理成文章,可是还没有等到我来总结,微博账号就不能登录了,也不知道为什么。我的400+微博呀,然后我就决定把内容记到这里来,然后慢慢的也把这些变成文章。可以留在记忆中,而不是风中。
Linux命令集学习:https://www.howtoforge.com/linux-commands/
vlan介绍 参考:https://zhuanlan.zhihu.com/p/35616289
iptables防火墙 参考:https://www.linuxidc.com/Linux/2018-08/153567.htm
Java excel lib ; alibaba easyexcel
Elastic-job 重新开始维护
wireshark
三层交换机和路由器
网络io命令 分析那个程序在一直在消耗网络
Linux磁盘管理
数据库druid
ssh的配置文件解读
文件系统挂载相关 mount unmount 永久性和临时性
添加磁盘
创建分区
格式化分区,写入文件系统
分区挂载到指定目录下
自动化运维工具Ansible
spring中 formatter和converter
利用 “sh -c” 命令,它可以让 bash 将一个字串作为完整的命令来执行
java code rules tricks
Minikube 国内环境搭建实验:https://developer.aliyun.com/article/221687
标记接口,比如:RandomAccess,Serializable,Cloneable
包装类,基本数据类型(面向过程),包装类,从面向对象的概念中需要包装类,java中的类对象本身有点类似于对于指针地址值得操作。
java中transient关键字和对象序列化有关系,修饰的字段不会被序列化,也就是序列化后的字节数组里面就没有了;@Transient 是jpa的注解,修饰的字段不会进行持久化,一般来说也就是数据库中不会有此字段。
看guava中的代码,一直说看看来着,也看过一部分,
内存中的堆栈划分,栈内存:在函数中定义的基本类型的变量和对象的引用变量都是在函数的栈内存中分配;堆内存:堆内存用于存放由new创建的对象和数组。java中的内存分配策略:静态存储分配,编译时就可以确定。栈式存储分配:进入一个程序模块时,必须要知道该程序模块所需的数据区大小才能为其分配内存。堆式存储分配:专门负责在编译时或运行时程序模块入口处都无法确定存储要求的数据结构的分配。栈有一个很重要的特殊性,就是存在栈中的数据可以共享。
看下java.security里面的内容
Comparable 可以让实现它的类的对象进行比较,具体的比较规则是按照 compareTo 方法中的规则进行。这种顺序称为 自然顺序。Comparator 定制排序,使用的是一种策略模式,将排序本身和业务本身进行解耦。
在看apollo源码的过程中发现了CAT(Central Application Tracking),其实应该是我第一次看apollo 源码的时候就已经发现了,然后也没有记录,也就像往常一样忘记了。CAT是一个实时和接近全量的监控系统,它侧重于对Java应用的监控,基本接入了美团上海侧所有核心应用。目前在中间件(MVC、RPC、数据库、缓存等)框架中得到广泛应用,为美团各业务线提供系统的性能指标、健康状况、监控告警等。相关地址:https://tech.meituan.com/2018/11/01/cat-in-depth-java-application-monitoring.html;https://github.com/dianping/cat
其实看很多第三方一些框架的时候,因为借助于spring本身会提供很多拓展,ioc,aop这些,但是在开发一些框架的时候,可能你就不能建立在你有一个spring的基础上,这个时候就需要一些别的类似功能的jar来完成一些你的特定需求;还有比如不能说你开发一个框架,你本身还依赖第三方很多util这样,也不是说不能引用,只是想表达自己开发出来的框架要尽可能的减少对于外界的依赖,做到尽可能功能丰富的同时比较轻量。 也是在看apollo源码的时候发现了Google的Guice,Google开源的一个依赖注入类库,然后网友说到在ES中有大量用到。
一个觉得比我的博客要好看的博客模板引擎:https://beautifuljekyll.com/;https://wowchemy.com/
通信之间的连接的选择场景,长连接:高频,服务端主动推送,有状态[当服务端有多台机器的时候,尽量保持客户端一直连接到同一台服务器上面];短连接:低频,无状态
rpc和http,rpc是远端过程调用,其调用协议通常包含传输协议和编码协议;http使用tcp传输协议,dubbo自定义tcp协议,所以rpc为什么要自定义tcp协议呢?通用定义的http1.1协议的tcp报文包含太多可能没有用的信息
dubbo默认的通信协议dubbo协议,以及默认的序列化方式hessian2
一个网关应该包含哪些组件,提供哪些功能,路由,限流,鉴权,下游不同的协议分发
多了解中间件
关于线程池里面的最大线程数,QPS = 1000ms/(CPU Time) * coreSize * cpuRatio;**我们发现当线程数增加的时候,线程的上下文切换会增加,GC Time会增加。这也就导致CPU time 增加,QPS减小,RT也会随着增大。**我们希望的是在核数一定的情况下找到某个点,使系统的QPS最大,RT相对较小。所以我们需要不断的压测,调整线程池,找到这个QPS的峰值,并且使CPU的利用率达到100%,这样才是系统的最大QPS和最佳线程数。后台批处理服务须与线上面向用户的服务进行分离。
coolPoolSize = tasks/(1/taskcost) =tasks*taskcost
maxPoolSize = (max(tasks)- queueCapacity - corePoolSize)/(1/taskcost)+corePoolSize(最大任务数-队列容量-核心线程数)/每个线程每秒处理能力 + 核心线程数= 最大线程数)
queueCapacity = (corePoolSize/taskcost)responsetime
《Effective Java 3rd》
UML表达不同类接口之间的关系,泛化(继承),实现,聚合(整体和部分不强依赖,部门不存在(撤销)了,员工依然存在),组合(部分和整体强依赖,公司没有了,部分也就不存在了),关联(通常是以成员变量存在的),依赖(体现为类构造方法及类方法的传入参数)
关于protected修饰符,比较难理解,核心:可见性,基类的protected成员是包内可见的,并且对子类可见;若子类与基类不在同一包中,那么在子类中,子类实例可以访问其从基类继承而来的protected方法,而不能访问基类实例的protected方法。碰到涉及protected的调用时,首先要确定出该protected成员来自何方,其可见性范围是什么,然后就正确无误的使用了。
关于java泛型(Generics)和通配符,泛型会擦除到它的第一个匹配的边界<T extends Fruit>
这里T必须是Fruit或者Fruit的导出类型(子类),泛型擦除后,Fruit就是T的边界,所有的出现T的地方都用Fruit替换。对于泛型数组的理解,泛型设计的目的之一就是将一些运行期的错误在编译器可以发现;PECS指Producer Extends,Consumer Super。
换句话说,如果参数化类型表示一个生产者,就使用<? extends T>;如果它表示一个消费者,就使用<? super T>,如果你想 历collection,并对每一项元素操作时,此时这个集合是生产者(生产元素),应该使用 Collection<? extends Thing>,如果你是想添加元素到collection中去,那么此时集合是消费者(消费元素)应该使用Collection<? super Thing>
使用缓存就要明白缓存的一些淘汰策略:LRU,LFU,RAMDOM
java中的PropertyEditor 属性编辑器
TCP的连接,使用中,关闭,不同状态的意义
已经使用OpenRestry,然后开始用lua尝试一些简单业务进行编写,拦截请求,添加内容等。
GraphQL查询语言和规范
关于服务网格
已经使用OpenRestry,然后开始用lua尝试一些简单业务进行编写,拦截请求,添加内容等。
acme.sh 证书续约问题处理:https://segmentfault.com/a/1190000018244767。
Java堆外内存的使用和回收。
命名空间的理解。
在Linux操作系统中,/proc
是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息,例如我们可以使用 cat /proc/cpuinfo
查看CPU信息。然而在macOSX系统中,由于系统实现机制的原因,并没有提供此功能,所以此命令不可用。所以通过sysctl命令可以查看很多信息。
想学Perl
TiDB
编译原理不做到很熟悉,也要把相关的课程进行看一遍
Linux下对于大文件的处理方案,很早之前都想过这个问题却一直没有给出较好的使用方案
查看每个进程占用的内存情况「物理内存百分比,使用的虚拟内存总量,使用的虚拟内存中被换出的大小,进程使用的、未被换出的物理内存大小,可执行代码占用的物理内存大小,可执行代码以外的部分(数据段+栈)占用的物理内存大小,共享内存大小」
查看每个进程占用的内存情况「物理内存百分比,使用的虚拟内存总量,使用的虚拟内存中被换出的大小,进程使用的、未被换出的物理内存大小,可执行代码占用的物理内存大小,可执行代码以外的部分(数据段+栈)占用的物理内存大小,共享内存大小」
想对HTTP特别熟悉
CICD
Netty
0.0.0.0网络意味着什么?0.0.0.0表示整个网络,在路由器配置中可用0.0.0.0/0表示默认路由,作用是帮助路由器发送路由表中无法查询的包。如果设置了全零网络的路由,路由表中无法查询的包都将送到全零网络的路由中去;
关于路由表
单元测试的理解,代码质量,Mock框架Mockito,以及Spock;对于在项目中进行单元测试写demo的时候同样遇到了不同版本使用时需要注意不同注解的问题「Junit4和Junit5」,然后对于可以不启动spring容器的就不启动,不启动web容器的就不启动,都使用mock来模拟数据,单元测试的本质还是要一段代码的分支运行逻辑是否正确。
开发好玩的公共jar来慢慢的学着开发小框架
闭包:内部函数可以引用外部函数的参数和局部变量,当外部函数返回内部函数时,相关参数和变量都保存在返回的函数中,
js的变量提升。
JMX,Java平台本身对于Bean的管理
> 可在下面留言(需要有 GitHub 账号)