本文共 7649 字,大约阅读时间需要 25 分钟。
,, , jconsole, jinfo, jhat, javap, …
HeapOutOfMemory
Young OutOfMemory
MethodArea OutOfMemory
ConstantPool OutOfMemory
DirectMemory OutOfMemory
Stack OutOfMemory Stack OverFlow
当一个Java程序响应很慢时如何查找问题 当一个Java程序频繁FullGC时如何解决问题,如何查看垃圾回收日志 当一个Java应用发生OutOfMemory时该如何解决,年轻代、年老代、永久代解决办法不同,导致原因也不同
java.lang.String
java.lang.Integer`` java.lang.Long
java.lang.Enum
java.math.BigDecimal
java.lang.ThreadLocal
java.lang.ClassLoader & java.net.URLClassLoader
java.util.ArrayList & java.util.LinkedList`` java.util.HashMap & java.util.LinkedHashMap & java.util.TreeMap
java.util.HashSet & java.util.LinkedHashSet & java.util.TreeSet
上述数据结构的遍历 上述数据结构的使用场景 Java实现对
Array
/List
排序java.uti.Arrays.sort()
java.util.Collections.sort()
Java实现对List去重 Java实现对List去重,并且需要保留数据原始的出现顺序 Java实现最近最少使用cache,用LinkedHashMap
java.io.*
java.nio.*
nio和reactor设计模式 文件编码,字符集
反射与工厂模式
java.lang.reflect.*
java.io. Serializable
什么是序列化,为什么序列化 序列化与单例模式 google序列化protobuf
java.lang.ref.*
实验这些引用的回收
java.util.Properties
java.lang.annotation.*
javax.jms.*
java.lang.management.*
javax.management.*
java.lang.instrument
Junit,
Jmockit,
djUnit,
java.lang.util.regex.*
commons.lang
,commons.*...
guava-libraries
netty
JDK src.zip 源代码
java.lang.Thread
java.lang.Runnable
java.util.concurrent.Callable
java.util.concurrent.locks.ReentrantLock
java.util.concurrent.locks.ReentrantReadWriteLock
java.util.concurrent.atomic.Atomic*
java.util.concurrent.Semaphore
java.util.concurrent.CountDownLatch
java.util.concurrent.CyclicBarrier
java.util.concurrent.ConcurrentHashMap
java.util.concurrent.Executors
什么是锁,锁的种类有哪些,每种锁有什么特点,适用场景是什么 在并发编程中锁的意义是什么
C++ volatile关键字和Java volatile关键字 happens-before语义 编译器指令重排和CPU指令重排
public class Sample { private static int count = 0; public static void increment() { count++; }}
// 代码1public class Sample { private static int count = 0; synchronized public static void increment() { count++; }}// 代码2public class Sample { private static AtomicInteger count = new AtomicInteger(0); public static void increment() { count.getAndIncrement(); }}
如Java源代码:
public static void main(String[] args) { int i = 0; i += 1; i *= 1; System.out.println(i); }
编译后读取class文件输出以下代码:
public static void main(java.lang.String[]); Code: Stack=2, Locals=2, Args_size=1 0: iconst_0 1: istore_1 2: iinc 1, 1 5: iload_1 6: iconst_1 7: imul 8: istore_1 9: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream; 12: iload_1 13: invokevirtual #3; //Method java/io/PrintStream.println:(I)V 16: return LineNumberTable: line 4: 0 line 5: 2 line 6: 5 line 7: 9 line 8: 16
用位运算实现加、减、乘、除、取余
CGLIB和InvocationHandler的区别
动态代理模式 Javassist实现AOP
ASM实现AOP
实现客户端缓存功能,支持返回304 实现可并发下载一个文件 使用线程池处理客户端请求 使用nio处理客户端请求 支持简单的rewrite规则 上述功能在实现的时候需要满足“开闭原则”
搭建一个DNS服务器 搭建一个 Squid 或 Apache Traffic Server 服务器
spring,spring mvc,阅读主要源码 ibatis,阅读主要源码 用spring和ibatis搭建java server
熟悉使用jboss,熟悉使用tomcat,熟悉使用jetty,
sysdate sysdate - 1 sysdate - 1/24 sysdate - 1/(12*2)
QList
要求返回列表中匹配的对象,即最后两个对象;
代码:
var a = 1;var b = 2;var c = function() { var a = 3; println(a); println(b);};c();println(a);println(b);
输出:
3212
http://en.wikipedia.org/wiki/Abstract_syntax_tree https://javacc.java.net/ http://www.antlr.org/
Ubuntu Centos 使用linux,熟悉shell脚本
MySQL 如何看执行计划 如何搭建MySQL主备 binlog是什么 Derby,H2,PostgreSQL SQLite
Cache Redis Memcached Leveldb Bigtable HBase Cassandra Mongodb 图数据库 neo4j
在linux上部署solr,solrcloud,,新增、删除、查询索引
在linux上部署storm,用zookeeper做协调,运行storm hello world,local和remote模式运行调试storm topology。
Hdfs:部署NameNode,SecondaryNameNode,DataNode,上传文件、打开文件、更改文件、删除文件
MapReduce:部署JobTracker,TaskTracker,编写mr job
Hive:部署hive,书写hive sql,得到结果
Presto:类hive,不过比hive快,非常值得学习
http://www.openauthentication.org/
HOTP http://www.ietf.org/rfc/rfc4226.txt
TOTP http://tools.ietf.org/rfc/rfc6238.txt
OCRA http://tools.ietf.org/rfc/rfc6287.txt
http://en.wikipedia.org/wiki/Salt_(cryptography)
Groovy Scala LISP, Common LISP, Schema, Clojure R Julia Lua Ruby
了解以下概念 ASCII, ISO-8859-1 GB2312, GBK, GB18030 Unicode, UTF-8 不使用 String.getBytes() 等其他工具类/函数完成下面功能
public static void main(String[] args) throws IOException { String str = "Hello, 我们是中国人。"; byte[] utf8Bytes = toUTF8Bytes(str); FileOutputStream fos = new FileOutputStream("f.txt"); fos.write(utf8Bytes); fos.close();}public static byte[] toUTF8Bytes(String str) { return null; // TODO}
想一下上面的程序能不能写一个转GBK的? 写个程序自动判断一个文件是哪种编码
时区 & 冬令时、夏令时
闰年
闰秒
System.currentTimeMillis()
返回的时间是什么
修改代码,使程序输出“1 3 5”:
看一下这段代码,并解释一下为什么按Button1时没有alert出“This is button: 1”,如何修改:
jQuery ExtJS ArgularJS
http://en.wikipedia.org/wiki/Greasemonkey
ArgularJS,
《计算机程序设计艺术》
转载地址:http://rkuhj.baihongyu.com/