文章分类 - Java
1
标准Java语言及Java库
git常用命令
摘要:#在github上通过GUI创建一个repositoryhttps://guides.github.com/activities/hello-world/ #新建一个文件echo "# my_fisrt_repository" >> README.md#在当前目录初始化一个git环境git init
阅读全文
java程序占用CPU过高问题排查
摘要:查看进程占多少CPU#top -p 25484 查看进程里各个线程占多少CPU#top -p 25484 -H 查看线程的执行栈信息先把线程号转换为16进制。#printf '%0x\n' 286166fc8再通过jstack命令看看这个线程在干嘛$jstack 25484 | grep -A 10
阅读全文
java程序内存泄漏排查
摘要:有个java程序越跑越慢,如何排查? 首先通过jps找到java进程ID。然后top -p [pid]发现内存占用达到了最大值(-Xmx)。开始怀疑是由于频繁Full GC导致的,于是通过jstat -gcutil [pid] 60000查看GC的情况,其中60000表示每隔1分钟输出一次。果然是F
阅读全文
TreeSet判断重复元素
摘要:TreeSet的底层是TreeMap的keySet(),而TreeMap是基于红黑树实现的,红黑树是一种平衡二叉查找树,它能保证任何一个节点的左右子树的高度差不会超过较矮的那棵的一倍。 TreeMap是按key排序的,所以TreeSet中的元素也是排好序的。显然元素在插入TreeSet时compar
阅读全文
常用缓存技术
摘要:热数据缓存 这是使用缓存最频繁最直接的方式,即我们把需要频繁访问DB的数据加载到内存里面,以提高响应速度。通常我们的做法是使用一个ConcuccrentHashMap<Request, AtomicInteger>来记录一天当中每个请求的次数,每天凌晨取出昨天访问最频繁的K个请求(K取多少个取决你的
阅读全文
数据访问接口
摘要:自己实现了一个简易的MySQL数据操作中间层,经过近一年的线上使用和维护,功能已比较完善,性能方面也没有发现大的问题。诚然类似的开源工具有很多,但对于想快速了解其实现原理的同学来说,本文可以成为你的一个切入口。 ORM实体关系映射 类注解@DataBase和@Table分别注明该类跟哪个库哪张表对应
阅读全文
Java反射
摘要:获取数组类型int[] arr=new int[3];System.out.println(arr.getClass());输出的是:class [Ipackage test;import java.lang.reflect.Method;import org.junit.Assert;public...
阅读全文
Java类和成员上的一些方法
摘要:isInstance和isAssignableFromobj instanceof Class判断obj是不是Class或者Class的子类的实例clazz.isInstance(obj)判断obj能不能强制转换成clazz类型,亦即obj是不是clazz或者clazz的子类的实例clazz1.is...
阅读全文
ThreadPoolExecutor
摘要:BlockingQueue先来说3种BlockingQueueSynchronousQueue。队列长度始终为0,因为任何一个put操作必须等待一个take操作,否则put就一直阻塞。所以一旦put成功之后,元素马上就被take出去了,队列长度始终为0。ArrayBlockingQueue。基于定长...
阅读全文
Guice--Java依赖注入框架
摘要:面向接口编程没有面向接口编程就没有依赖注入(Dependency Injection),所以讲依赖注入之前先重温一下面向接口编程。ps:依赖注入(DI,Dependency Injection)和控制反转(IoC,Inversion of Control)的关系public interface Ve...
阅读全文
java位移运算
摘要:public static void main(String[] args) { int number = -1; System.out.printf("number=%x\n", number);// 计算机存储负数里用的是补码形式 int a = 0x80000001; System....
阅读全文
JMeter使用总结
摘要:使用JMeter做压力测试1.下载Jmeter地址:http://jmeter.apache.org/download_jmeter.cgi2.启动jmeter运行bin/jmeter.bat3.添加线程组在TestPlan节点上右键,Add-->Threads(Users)-->ThreadGroup。NumberofThreads(Users):要模拟的并发用户量。RampUpPeriod(inseconds):在多长时间内均匀启动所有的线程。比如NumberofThreads设为10,RampUpPeriod设为1,则jmeter每隔0.1秒启动1个线程。LoopCount:
阅读全文
java读取pdf和MS Office文档
摘要:有时候PDF中的文字无法复制,这可能是因为PDF文件加密了,不过使用PDFBox开源软件就可以把它读出来。还有一个用于创建PDF文件的项目----iText。PDFBox下面有两个子项目:FontBox是一个处理PDF字体的java类库;JempBox是一个处理XMP元数据的java类库。一个简单示例:要引入pdfbox-app-1.6.0.jar这个包。package pdf;import java.io.File;import java.net.MalformedURLException;import org.apache.pdfbox.pdmodel.PDDocument;import
阅读全文
Java CookBook(二)
摘要:通过HTTP连接访问资源URLConnection封装任何对URL连接的基本功能,HttpURLConnection基于HTTP的连接扩展URLConnection。Step1.创建URL对象。URL(String rul) throws MalformedURLExceptionStep2.URL对象调用openConnection(),并将其返回的引用强制转换成HttpURLConnection。Step3.HttpURLConnection对象调用getContentType()获取资源的内容类型,调用getContentLength()获取资源的内容长度,调用Map<String
阅读全文
Java CookBook(一)
摘要:Java字符串和正则表达式String是固定不变的,即当你改变String时实际是上创建了一个新字符串,而原来的字符串保持不变。StringBuffer和StringBuilder允许内容是可变的,它们都提供setCharAt(),insert()等修改字符串内容的方法。StringBuffer是线程安全的,在多线程应用中必须使用StringBuffer。StringBuilder不是线程安全的,当不使用多线程时,使用StringBuilder更高效。java正则表达式由Matcher和Pattern提供支持。更常用的是String的一些方法如split(),matches()都可以将正则表达
阅读全文
使用HttpClient时出错NoClassDefFoundError
摘要:HttpClient的使用依赖于Apache commons项目中的两个组件——commons-logging.jar、commons-codec.jar。所以要在Eclipse中添加外部Jar包commons-logging.jar和commons-codec.jar。包括HttpClient.jar已经都在eclipse的plugin里面了,不需要另外下载。网上普遍讲的NoClassDefFoundError出错的原因是ClassPath没设好。
阅读全文
Android NDK--自己编写调用JNI
摘要:其实ubuntu中android开发环境的搭建也很简单(1)下载android-sdk (2)为Eclipse安装ADT,从help->Install New SoftWare进入,地址输入http://dl-ssl.google.com/android/eclipse/要进入NDK开发再下一个android-ndk就可以了以上开发包均可以从http://androidappdocs.appspot.com/sdk/ndk/index.html上下载得到然后vi .bashrc,在PATH中添加3个路径:android-sdk/tools android-sdk/platform-too
阅读全文
调用Google API做自己的翻译工具
摘要:其实ubuntu下星际译王也不怎么好用,启动慢,词典不好管理。果断自己调用Google API做翻译工具,而且是在终端运行,快捷方便。(1)编译java程序时指定依赖的第三方jar包$ javac -cp /usr/local/lib/google-api-translate-java-0.4.jar MyTranslate.java-cp是在指定classpath事先下载google-api-t...
阅读全文
安装监听的三种形式
摘要:Button是事件源,当Click事件发生后Button把事件丢给监听器来处理。方法一下面的代码是最易懂,最直白的表示方法:[代码]我们自定义了一个类MyListener实现了Button.OnClickListener接口(因为重写了接口中的onClick方法),然后创建了一个MyListener实例ml,最后在按钮bt上安装ml监听器(也就是bt.setOnClickListener(ml)这...
阅读全文
import package怎么用
摘要:看这么一个文件结构:[代码]上面出现的4个类都包含在包zcy.andrid中,但我们把3、7行的TextView类Button类称之为“直属”于包zcy.android,而14、18行的View和TextView类“直属”于zcy.android.widget包。如果我们另外新建了一个project,代码开头没有import任何包,而在代码中突然出现...
阅读全文
1