一些容易忽略的Java基础题
protected 范围:本类、子类、包内 Oracle 在 DDL 前后各执行一次 COMMIT,所以慎用 truncate Servlet 每个请求一个线程 CGI (Common Gateway Interface,公共网关接口) 每个请求一个进程 switch 实际只能 int (byte short char 因为能向上转型),long 不行 1.5+Byte Short Char Integer enum(ordinal 是 int) 1.7 String(hashCode 是 int) Integer.parseInt 返回 int Integer.valueOf 返回对象 -128~127 已有,和自动装箱一致 int 和 Integer 比较会变成值比较从而相等 float与0比较: const float EP = 0.000001; if ((x >= - EP) && (x <= EP) ) str.replaceAll(regex, repl) 是正则替换,等同Pattern.compile(regex).matcher(str).replaceAll(repl) SQL 执行顺序: FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> TOP -> ORDER BY 扩容: 默认1<<4=16 最大1<<30 3/4=0.75 HashMap/HashSet c=16 | if(0.75c) 2c,12时32 Hashtable c=11 | if(0.75c) 2c+1,8时17 ArrayList c=0, c=10 | max(1.5c+1, l) Vector c=10 | 2c StringBuffer c=16 | max(2c+2, x+l) https://www.cnblogs.com/lq147760524/p/6713677.html 2的3次方最快方法1<<3 线程安全: ServletContext、HttpSession 非线程安全: ServletRequest SimpleDateFormat yyyy-MM-dd HH:mm:ss.S 特别注意24小时H大写 new Date(y-1900, M-1,d) HashMap kv 均可 null HashTable kv 均不可 null JVM 类加载器: BootStrapClassLoader 引导 ExtClassLoader 扩展 AppClassLoader 应用 CustomClassLoader 用户自定义 Tomcat 类加载器: Bootstrap 引导 jre/lib/ext, System 系统 CATALINA_HOME/bin, Common 通用 CATALINA_HOME/lib, webapp 应用 WEB-INF JS全局属性:Infinity NaN undefined 全局函数: 字符转代码执行 eval() 编解码 encodeURI()decodeURI() escape()unescape() encodeURIComponent() decodeURIComponent() 判属性 isFinite()isNaN() 类型转换 Number()String() parseFloat()parseInt() getPriority() 返回线程的优先级 TCP 状态: 客户端独有的:SYN_SENT FIN_WAIT1 FIN_WAIT2 CLOSING TIME_WAIT 服务器独有的:LISTEN SYN_RCVD CLOSE_WAIT LAST_ACK 共有的:CLOSED ESTABLISHED Join 算法: Nested Loop Join Sort Merge Join Hash Join