随笔分类 -  java

java
JVM类加载源码路径
摘要:很早计划写篇研究JVM类加载源码的,忙于项目一直没时间深入研究,最近又要换工作,怕最近没时间研究了。之前一些粗浅的研究,主要是defineClass()和loadClass()方法在JVM源码中的几个相关位置,作个简单记录。1.defineClass由字节码加载自定义类,最终归结于java.lang.ClassLoader. defineClass0()这个native方法(关于java系统类层面的类加载机制,参见之前的两篇文章,本文只涉及JVM的c/c++层面源码)。该方法通过jni实现,对应的c代码位于:%openjdk-home%\jdk\src\share\native\java\la 阅读全文
posted @ 2013-04-02 14:40 编程趋势 阅读(1285) 评论(0) 推荐(0) 编辑
1号店Java工程师面经
摘要:周二面1号店Java工程师,果断挂掉。为纪念请假损失+路费约几百块钱,还是写个小面经~~面试地点还是在张江,一幢挺有气势的大楼(忘记数有几层了~)。进门先填信息表,很标准的那种,过会面试官就来了。面试官长得挺粗犷的,不过是双眼皮。领到四楼关进一小房间,拿出两张纸的笔试题,让半小时做完,然后扬长而去。一瞅那题,我去,在网上看到过,一模一样额(虽然我回来后死活也找不到那网页了,回忆起的内容写在本文最后没),看来1号店就是固定拿一套(至多是几套)笔试题了。对于做过电商或者科班培训的程序员,那套题目想必并不难,不过由于本人半路出家自己倒腾,很多基础知识不行,只能凭感觉和之前网上看到的印象做,估计达到点 阅读全文
posted @ 2013-03-29 16:41 编程趋势 阅读(3191) 评论(3) 推荐(1) 编辑
百度商务搜索部面经
摘要:12号在百度上海研发中心面商务搜索部的java,面完就感冒了orz(杀伤力啊......)。听同学说今年岗位紧,要是去年就进了,看来比较玄了。不过去了一趟总不能白去,写个面经给大家参考。张江这地方蛮有趣,路名都是XXX科学家,牛顿路,祖冲之路。路上居然还有有轨电车这种交通工具,怪瘆人的......百度在碧波路690号张江微电子信息港,应该是IT企业聚集的地方吧。面试约在两点,一点半去前台报到,没看到前台有特别PP的美女(失望啊~~)。报上一面面试官名字,很快面试官就捧着笔记本过来,带去一小房间。整个面试并没有涉及上机的,可能是职业习惯吧,不过感觉应该是可以带些项目的演示资料去,如果对方感兴趣, 阅读全文
posted @ 2013-03-17 13:57 编程趋势 阅读(2703) 评论(8) 推荐(1) 编辑
java远程类加载与轻客户端(程序中的胖子或瘦子)
摘要:web发展这么好,html用的这么多,主要还是在于部署起来方便,更新也快。应用程序的缺点就是更新复杂。通过该文章,完全可以让应用程序和web一样,部署容易。使用方便。上篇提到Java程序运行只依赖于字节码,修改class文件读写方式可以实现代码加密。所谓“字节码”只是一个byte字节序列,并非一定是class文件。也可从远程获取字节码实现类加载,使代码在客户端“不存在”,不仅安全性更高,还有一些额外优势。下面先来看如何实现。本文中通信采用jboss的开源框架Netty。这是一个异步通信框架,严格说不很实现远程类加载,采用Netty只是因为个人比较熟悉,完全可以用其他通信方式替代(如Http方式 阅读全文
posted @ 2013-02-01 14:33 编程趋势 阅读(2247) 评论(4) 推荐(1) 编辑
java字节码加密(超级干货大分享)
摘要:提到Java代码加密,常见方式是使用代码混淆工具,如proguard。混淆是一种逻辑层面的加密,被混淆的代码仍可以反编译,但由于命名与程序流程上的等效替换,使得程序的可读性变的很差,导致代码难以被理解和盗用。但若有方法使代码根本无法被反编译,效果显然优于逻辑上的加密,而一种可以实现的方式就是字节码加密。Java代码的实际运行与源代码(*.java)关系不大,只依赖于编译后的字节码文件(*.class)。class文件的内容有非常紧凑和严格的约定,使JVM可以识别和执行代码功能;反编译工具也是利用这种约定的结构将字节码反向解析成源码。只要破坏class文件的结构,就能使这个文件完全失效,变得不可 阅读全文
posted @ 2013-01-28 10:21 编程趋势 阅读(10137) 评论(9) 推荐(5) 编辑
反射方法参数的类型兼容性
摘要:Java方法调用在传参的时候遵循就近兼容原则:如果找不到实际参数类型与声明类型完全匹配的方法,Java会自动寻找其他可以兼容实际参数类型的方法。所谓“兼容”指实际参数类型从声明类型继承而来,或者如声明类型是接口,实际参数类型实现该接口(注:本文仅针对引用类型,暂不考虑基本类型之间的兼容性)最简单的例子如下(以构造函数为例):public class Test {public Test(List<?> arg1) {System.out.println("Instance Newed as List: "+arg1.getClass());}public stat 阅读全文
posted @ 2012-08-27 09:58 编程趋势 阅读(2754) 评论(0) 推荐(3) 编辑