java咋进阶 工作一年的我感觉这就是增删改查?jvm字符串的创建指令的问题
java优点就是库多库多库多。
感觉看看源码吧。
比如socket,buffer,线程池,keep alive ,websocket,nio ,netty,rpc,soap协议。
(看到netty你可以了解reactor什么的,然后还能读读epoll。看到epoll,你就要了解计算机网络,异步,红黑色树,内核空间用户空间,⓪拷贝,然后你就可以买本《操作系统》《Unix高级编程》《Unix网络编程》,顺便了解事件是由linux哪个函数产生的,IPC rpc的种类和区别)
了解①下aqs模型(比如如何巧妙利用CompareAndSet这个函数,也就是cas)
,同步,并发包,collection包中没用过的数据结构(比如hashmap和hashtable的区别,arraylist如何自动扩容)
,信号量,生产者消费者模型,可重入锁,自旋锁,写锁,读锁。(操作系统的信号量会帮助比较大)
普通中断线程的方法,阻塞的io的中断方法,异步类比如future,callable,看看有没有什么线程切换过多,io阻塞什么的问题。了解①下class类,class loader。增删查改,大概是数据库吧。了解长查询,短查询。了解数据库如何加锁减少锁住整个表的几率。了解如何优化sql语句,加快查询。了解①下jdbc是怎么加载驱动的,读①下数据库的书,看看数据库的acid模型,各种锁什么行锁,表锁的代价,事务,什么索引什么的。(我现在准备看高性能MySQL)
了解①下HTTPS,看看人月神话。了解大概是②③钟设计模式。了解①下解决内存泄露的方法,比如弱引用什么的,学会正确持有和释放对象,不然out of memory很麻烦。了解注解。了解①下缓存cache策略,比如okhttp里面的lru算法啦。了解①下redis的源码和主要功能,怎么实现无锁的啦。(cache最好复习①下计算机组成,里面有很多cache的内容)
复习编译原理,看看加密或者编码的包,什么md⑤ · regex,dfa,nfa。
自己写个框架或者工具库。学①下怎么做好漂亮的封装,学习写好①手漂亮的注释,学习如何写好漂亮的文档。了解①下数据库备份比如什么热备,多机同步。学习负载均衡。补补算法,数据结构,补补前端设计功底,学①下游戏设计,了解①下游戏数据帧同步。数值设计。看看傅里叶变换,拉普拉斯变换。了解①下反射,unsafe包。看看Hadoop源码,听说里面有netty,所以看过netty应该轻松①点。回忆①下统计和概率论,做做大数据。或者看看tomcat的源码,人家是怎么封装的,怎么分发的。看看jvm的输出,看看内存泄露死锁什么的。(这时候可以买本《深入了解java虚拟机》,《深入了解c++模型》了解c++模型对java对象有更加深入的了解)
java的垃圾回收测试①下修改①下参数看看有什么不同。上上github,在stack overflow 刷分。学学怎么用java爬虫。试试调用jni。你要是还能继续就复习①下c++,看看jvm源码,找bug。
最后化化妆,变成小白脸,找个富婆包养你。从此走上人生巅峰。
更新
(我好像要转行去php了,其实上边的我只是看过,没多少实践的,我是跨专业,而且写得不多,只是吹吹牛,现在是大④狗,求大神带走)
你把指令都贴出来了,答案很明显就是第②种没在运行时创建实例。“a”是字符串常量,在类加载的过程中由JVM创建出来的,放在了字符串常量池里,这样①来不用每次String s= \"a\"都去创建①个实例来占用不必要的内存,String类设计成不可变类型也有这方面的考虑。想再深入的话看这篇博文
请别再拿“String s = new String(xyz);创建了多少个String实例”来面试了吧
我也是刚刚看的wiki。
LDC
push a constant #index from a constant pool (String, int, float, Class, java.lang.invoke.MethodType, or java.lang.invoke.MethodHandle) onto the stack
- 5星
- 4星
- 3星
- 2星
- 1星
- 暂无评论信息