jvm学习笔记
java虚拟机与程序的生命周期在如下几种情况下,java虚拟机将结束生命周期:
执行了System.exit()方法
程序正常执行结束
程序在执行过程中遇到了异常或错误而异常终止
由于操作系统出现错误而导致java虚拟机进程结束
加载.class文件的方式:
从本地系统中直接加载
通过网络下载.class文件
从zip,jar等归档文件中加载.class文件
从专有数据库中提取.class文件
将java原文件动态编译为.class文件
线程运行诊断
Cpu 占用过多
用top定位那个进程对cpu的占用过高。
ps H -eo pid,tid,%cpu | grep 进程id(用ps进一步定位是那个线程引起的cpu占用过高)
Jstack 进程id
可以根据线程id找到问题的线程,进一步定位问题代码的源码行数。
堆内存
jps 查看当前系统中有哪些java进程
Jmap 查看堆内存占用情况 jmap -heap 进程id
Jconsole 图形界面
StringTable特性
常量池中的字符串仅是符号,第一次用到时才变成对象。
利用串池的机制,来避免重复 ...
设计模式-简单工厂模式
定义简单工厂模式:定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法模式。
UML
Prodcut(抽象产品角色):它是所有工厂类所创建的所有对象的父类,封装了各种产品对象的共有方法。
ProductA(具体产品角色):它是简单工厂模式的创建目标,继承了抽象产品角色。
Factory(工厂角色):简单工厂模式的核心,负责实现创建所有产品实例的内部逻辑,可以被外界直接调用,提供了静态工厂方法。
简单工厂模式的简化有时候,为了简化简单工厂模式,可以将抽象产品类和工厂类合并,将静态工厂方法移至抽象产品类中。
总结
简单工厂模式的主要优点如下:(1) 工厂类包含必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的职责,而仅仅“消费”产品,简单工厂模式实现了对象创建和使用的分离。(2) 客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可, 对于一些复杂的类名,通过简单工厂模式可以在一定程 ...
设计模式-单例模式
在实际开发中,为了节约系统资源,有时需要确保系统中某个类只有唯一的一个实例,当这个唯一的实例创建成功后,我们无法再创建一个同类型的其他对象,所有的操作都基于这个唯一的对象,这就是单例模式的动机所在。类图如下:
为了实现唯一性,该类有以下特性:1.将该类构造函数的可见性改为private。2.定义一个静态类型的Singtelon私有变量。3.增加一个共有的静态方法,用来获得该私有变量。
class Singleton {
private Singleton(){} //私有的构造函数
private static Singleton instance = null;//私有静态变量
public Singleton getInstance(){
if(instance == null){
return new Singleton();
}
return ...
git使用
git使用今天写了一个在在标签页显示数字的chrome扩展程序,打算提交到github,顺便学习了将一个已有的项目提交到github的方法。
登录github,新建一个仓库
进入项目的本地目录,执行如下命令:
git initgit remote add origin git@github.com:haominglfs/tab_number.git//与远程仓库建立关联git add .git commit -m 'tab_number extension of chrome v0.1'git push -u origin master //push到远程仓库
iTerm2
#iTerm2配置
配色1.git clone git@github.com:altercation/solarized.git2.这里我们要使用的是iterm2-colors-solarized目录下的,包括Solarized Dark.itermcolors和Solarized Light.itermcolors两个配置文件。3.打开Preferences->Profiles->Color面板,在Color Presets中将以上 两个配置方案导入,然后选择Solarized Dark或者Solarized Light即可。一般推荐使用Solarized Dark,Solarized Light有种亮瞎的感觉。
oh-my-zsh1.接下来,用oh-my-zsh来武装zsh,一行命令搞定:sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"2.oh-my-zsh中提供了多套主题可供选 ...
shadowsocks配置
#shadowsocks配置
第一步 用远程工具登录aws主机
第二步:安装shadowsocks依赖
sudo -s //获取超级管理员权限
apt-get update//更新apt-get
apt-get install python-pip//安装pyton包管理工具
pip install shadowsocks//安装shadowsocks
ssserver -c /etc/shadowsocks.json -d start//启动shadowsocks
第三步:配置shadowsocks
vi /etc/shadowsocks.json//编辑配置文件
单一端口配置
{
"server":"0.0.0.0",
"server_port":端口,
"local_address":"127.0.0.1" ...