查找 CPU 占用高的进程ID
ps aux
获取 CPU 占用高的线程 ID
ps -mp <pid> -o THREAD,tid,time
转换线程 ID 为16进制
printf "%x\n" <tid>
输出线程栈信息
jstack <pid> |grep <十六进制tid> -A 100
如果栈信息比较长可以设置输出的行数大点^_^
拿到栈信息后,就可以根据输出内容定位错误了。
查找 CPU 占用高的进程ID
ps aux
获取 CPU 占用高的线程 ID
ps -mp <pid> -o THREAD,tid,time
转换线程 ID 为16进制
printf "%x\n" <tid>
输出线程栈信息
jstack <pid> |grep <十六进制tid> -A 100
如果栈信息比较长可以设置输出的行数大点^_^
拿到栈信息后,就可以根据输出内容定位错误了。
如需使用另一个容器里的mysql,需要参数 —link mysql1:mysql,其中mysql1是mysql容器的名称
查找tomcat镜像
docker search tomcat
新建tomcat-users.xml
vim tomcat-users.xml
<tomcat-users>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>
</tomcat-users>
ZooKeeper Server是一个Java语言实现的分布式协调服务框架,因此需要JDK6+的支持。为了确保ZooKeeper服务的稳定与可靠性,通常是搭建成一个ZK集群来对外提供服务。ZK有一个重要的特性:集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的,所以建议集群的机器数量为奇数。
#官网 http://www.apache.org/dyn/closer.cgi/zookeeper/
wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar zxf zookeeper-3.4.6.tar.gz
cd zookeeper-3.4.6
回顾一下主流的(HotSpot JVM)JAVA垃圾回收器,堆被内存分解为三个区域,具体分为:新生代、老年代、持久代。
Java 7 HotSpotVM
Java 8 HotSpotVM
相信许多Java开发者都见过“java.lang.OutOfMemoryError: PermGen space”问题,这通常是类加载器相关的内存泄漏以及新类加载器的创建导致的,一般出现于代码热部署时。相对于正式产品,该问题在开发机上出现的频率更高,通常“问题”是默认值太低了, 常用的解决方法是将其设置为256MB或更高。
PermGen space的全称是Permanent Generation space,是指JVM永久保存区域,这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。JVM 种类有很多(如Oralce-Sun Hotspot, Oralce JRockit, IBM J9, Taobao JVM)。Oracle-Sun Hotspot才有PermGen space,JRockit以及J9没有这个区域。
随着JAVA8时代的来临,新增一种使用本地内存来存储类元数据信息称之为元空间(Metaspace),JVM永久区被元空间(Metaspace)替换(JEP 122), 与Oracle JRockit 和IBM JVM’s很相似。JVM参数 -XX:PermSize 和 -XX:MaxPermSize被XX:MetaSpaceSize 和 -XX:MaxMetaspaceSize代替,如果使用了-XX:PermSize 和 -XX:MaxPermSize启动时会发出警告。。 这意味着不会再有java.lang.OutOfMemoryError: PermGen问题,也不再需要你进行调优及监控内存空间的使用。
Java虚拟机拥有自动管理内存机制,所以Java 程序员不需要像C/C++一样去关注内存的分配和释放,也不容易出现内存泄露和内存溢出的问题。但是如果一旦出现此类问题,如果我们对虚拟机的内存管理机制不了解,那么解决这类问题还是比较困难的,所以我们要深入学习JVM的内存管理。
创建型模式,共5种
1. 工厂方法模式
2. 抽象工厂模式
3. 单例模式
4. 建造者模式
5. 原型模式
结构型模式,共7种
1. 适配器模式
2. 装饰器模式
3. 代理模式
4. 外观模式
5. 桥接模式
6. 组合模式
7. 享元模式。
行为型模式,共11种:
1. 策略模式
2. 模板方法模式
3. 观察者模式
4. 迭代子模式
5. 责任链模式
6. 命令模式
7. 备忘录模式
8. 状态模式
9. 访问者模式
10. 中介者模式
11. 解释器模式
Charles 是一个网络抓包工具,可以在电脑起一个代理,手机配置代理 IP 后,就可以用 Charles 看到手机的网络请求了。
设置-无线局域网-选择已连接的局域网-HTTP代理-手动,服务器:你电脑的 IP,端口:8888
第一次用手机请求网络时,Charles会提示是否允许接入,选择Allow就可以了。
如果是 HTTPS 抓包,需要安装证书,证书地址:http://www.charlesproxy.com/ssl.zip