redis 是一个完全开源的内存数据结构存储系统,可被用于数据库、缓存和消息代理。
redis 能够支持的数据类型包含 strings,hashes,lists,sets,范围查询的排序sets,bitmaps,带半径查询的地理空间索引。
redis 本身支持 replication、Luau 脚本、LRU eviction、事务和不同level的持久化策略,并通过RIDIS前哨和RADIS集群的自动划分提供高可用性。
arthas 运维监控
alibaba 开源的一个jvm监控软件,能够
- 反编译运行中的java程序的代码,
- 查看java程序的内存、
- 查看java程序的线程
- 查看类的静态变量值
- 查看classloader的继承树,urls,类加载信息
- 等等
https://alibaba.github.io/arthas/sysenv.html
下面为精简的常用接口
查看类的静态属性
1 | $ getstatic demo.MathGame random |
打印出类的Field信息
该方法只能获取 类信息,无法获取实例信息
1 | $ sc -d -f demo.MathGame |
反编译指定已加载类的源码
1 | jad demo.MathGame |
查看ClassLoader的继承树
1 | $ classloader -t |
使用ClassLoader去查找resource
1 | $ classloader -c 3d4eac69 -r META-INF/MANIFEST.MF |
观察方法调用前和方法返回后
watch 命令 具体 https://alibaba.github.io/arthas/watch.html
输出当前方法被调用的调用路径
1 | $ stack demo.MathGame primeFactors 'params[0]<0' -n 2 |
排查 method not found
先通过sc获取当前类的来源,执行以下命令后 查看 code-source
信息
sc -d 类名
使用 jad 反编译 代码,确认方法是否存在。
jad 类名
使用maven排查依赖
其他实践
watch com.example.demo.arthas.user.UserController * ‘{params, throwExp} –e
trace javax.servlet.Servlet * > servlet.txt # 结果在 ~/logs/arthas-cache/
trace javax.servlet.Filter *
- 动态修复代码/测试
redefine –p UserController.class
- UserController的logger是什么实现?
ognl ‘@com.example.demo.arthas.user.UserController@logger’
- 动态修改logger级别
ognl ‘@org.slf4j.LoggerFactory@getLogger(“root”).setLevel(@ch.qos.logback.classic.Level@DEBUG)’
- 查找冲突的logback.xml/log4j.properties
classloader -c 18b4aac2 -r logback.xml
- Spring Boot应用的Classloader结构
classloader –t
classloader -a -c 758f7d25
- jad反编绎jsp的实现
jad org.apache.jsp.jsp.hello_jsp
- tt 获取Spring Context
tt -t org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter invokeHandlerMethod
tt -i 1000 -w ‘target.getApplicationContext().getBean(“helloWorldService”).getHelloMessage()’
bash
翻译自 man bash
时间同步
系统crash日志
/var/spool/abrt 文件夹会保存 系统 crash事件的相关日志
表空间
在ORACLE数据库中,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段、区、块等逻辑结构。从物理结构上看是放在数据文件中。一个表空间可由多个数据文件组成。
常用运维命令
查看数据库表空间使用情况
1 | SELECT UPPER(F.TABLESPACE_NAME) "表空间名", |
以管理员身份登录oracle
1 | su - oracle |
新建用户
1 | Create user user50 identified by user50; |
责任链模式
红黑树
红黑树是一种自平衡二叉树查找树,是一种常用的数据结构。在jdk1.8中,TreeMap、TreeSet和HashMap都使用到了红黑树。
web三大组件-listener
JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext、HttpSession和 ServletRequest这三大域对象的创建、销毁事件以及监听这些域对象中的属性发生修改的事件。