Tomcat PermGen outOfMemory 问题排查

JVM 堆内存的组成部分 堆内存 = 年轻代 + 年老代 + 永久代 年轻代 = Eden区 + 两个Survivor区(From和To) 用 jstat 命令查看 JVM 资源占用情况 命令语法 jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ] jstat 命令实例 用 jps 命令查询 jvm 进程端口号 jps -J-Djava.io.tmpdir=/home/yrfz/apache-tomcat-7.0.39/temp/ 用 jstat 命令查看内存占用 jstat -J-Djava.io.tmpdir=/home/yrfz/apache-tomcat-7.0.39/temp/ -gc 22685 1000 4 [root@AY1404091653014031c9Z »

从 Githug 里学到的技巧

趁等联调的间隙刷了刷 Githug,学到了几招。 第19关 git commit --amend 追加提交,并修改 commit message。 第21关 使用 reset 将文件移出 staging area git reset HEAD to_commit_second.rd 第22关 放弃最近一次提交,同时保留改动到 staging area git reset --soft HEAD^1 第24关 查看 remote 地址 git remote -v 第27关 添加远程 repo ???这个操作的作用是? git remote add origin https://github.com/githug/githug 第28关 rebase 当前状态: Yans-MacBook-Pro:git_hug »

用 Let's Encrypt 给博客加 SSL 证书

趁周末给自己的博客配置了 SSL 证书,配置过程比较顺利。使用的服务与工具有: CentOS 7.1 SSL 证书由 Let's Encrypt 生成 通过 Nginx 配置反向代理与 SSL 证书 1. 为什么要添加 SSL 证书 个人博客为什么要添加 SSL 证书呢?有下面几个好处 提升逼格~ 练习 Nginx 反向代理的配置与使用 在国内的网络环境下,SSL 可以有效地防止运营商劫持,避免访问博客时出现莫名其妙的广告(update:现在 https 貌似也有可能被劫持了,看看这里的讨论) 。 另外,在 Chrome 浏览器中,还可以获得小绿锁认证: 2. 两个免费的 SSL 服务 SSL 证书服务大多是收费的,而且价格不菲。目前好用的免费 SSL 服务端是 Let's Encrypt 和 StartSSL 两家。 Let's »

iTerm 2、Terminal 启动加速

采用默认设置时,iTerm 2 启动速度较慢,主窗口出现后还需要等待5-6秒才可以输入命令。Terminal 也有这个问题。 原因是 iTerm 2 默认的 startup shell 是 /usr/bin/login,login 启动时需要首先读取所有的系统日志,导致启动速度慢。可以通过下面两种方式加速 iTerm 2 的启动。 方法一:清空 Apple System Log 删除 /var/log/asl/ 下的所有系统日志(asl 是 Apple System Log 的缩写): sudo rm /var/log/asl/*.asl 方法二:替换 startup shell 将 startup shell 从默认的 /usr/bin/login 改为 /bin/bash »

为 iTerms 2 配置 Color Scheme

什么是 iTerm 2 我们的目标是——干掉系统原生终端! -- iTerm 2 官网 iTerm 2 是 Max OS 下的一款终端仿真器。与原生终端相比,iTerm 2 有多标签、快捷键快速唤出、窗口内搜索、自动补全等实用的 feature,使用更加方便。 选择并导入一个色彩主题 默认的 iTerm 2 主题是黑底白字,看久了不免单调。为了用上丰富多彩的终端,可以在色彩设置中一项项进行配置,也可以下载预先设置好的色彩主题配置文件,直接导入到 iTerm 2 中。 Iterm2-color-schemes 列出了大量 iTerm 2 色彩主题,并提供了各个背景色下的效果预览图。下载主题包到本地并解压即可。 打开 iTerm 2 按 CMD + i 调出设置 切换到 “Colors” 标签 点击 “Load Presets” 点击 “Import” 选择扩展名为 »

Xcode 插件推荐

Xcode 是一个不完美的 IDE,需要安装插件来进行功能扩展,方便日常开发。 安装下面的插件前,需要首先安装 Xcode 的插件管理工具:Alcatraz。 VVDocumenter 规范注释生成器。输入三个斜线 ///,快速生成规范注释。配合 Doxygen,可以省去绝大部分文档撰写工作。 SCXcodeMiniMap 提供类似 SublimeText 中的代码“小地图”,方便快速定位到文件中的某一块代码。 update: SCXcodeMiniMap 会导致 Xcode 7 崩溃,截至 Xcode 7.2 版本仍未修复。使用需谨慎。 update 2: 目前已可以兼容 XCode 7.3。 KSImageNamed 扫描工程文件下的所有图片,为 imageNamed:@"" 提供自动补全。 XcodeColors 更改调试控制台配色 XAlign 强大的代码对齐插件 Backlight 为 Xcode 添加当选行高亮选项。安装完 Backlight 插件后,需要到 Edit->Backlight »

git-svn 工作流

Mac 下好用的 SVN 客户端只有 Versions、Cornerstone 两款,但都是付费软件,使用体验也都一般。最近 Version 试用期限已到,于是换用 SourceTree 来做版本控制。 SourceTree 原生支持 Git 与 Mercury,然而内置的 git-svn 使得这款软件也可以用来管理 SVN 版本库。SourceTree 在本地使用 Git 对 SVN 库做版本控制,需要与远程 SVN 库交互,拉取或推送代码时会自动调用 git-svn 命令,既可以在日常开发中发挥 git 拉分支带来的便利,又可以方便地与远程 SVN 库保持同步。 典型的 Git 工作流包括下面几个步骤: clone 版本库到本地 创建分支,在分支上进行开发 合并分支,解决冲突 推送本地 commit 到远程版本库 使用 git-svn 做为版本控制工具,工作流和使用 git »

Objecive-C 如何判断 NSString 为空

写 Objective-C 代码时常需要判断字符串是否为空,最简洁的代码是 if ([string length] == 0) { // ... } 上面的条件可以正确判断长度为0的字段串(@""),以及空字符串(string 为 nil 或 [NSNull null])。因为对 nil 调用 length 同样会返回0。 实际上,对 nil 发任何消息,返回值都为0。这一行为在下面的第二条参考资料中有详细说明。这种约定是出于方便使用的考虑,但牺牲了一定的安全性。 参考 How do I test if a string is empty in Objective-C Sending a message to nil? »