皮皮网

【ocpp 1.6 源码】【期货模型源码公式】【android如何读源码】读懂java源码_如何读懂java源码

来源:锁机源码密码 时间:2024-12-23 20:05:51

1.一个简单的读懂懂例子教会您使用javap
2.怎么看JAVA开源项目的源码?
3.java编码理解
4.如何快速读懂项目源码javaWeb

读懂java源码_如何读懂java源码

一个简单的例子教会您使用javap

       javap是JDK自带的工具。

       下面这段简单的源码a源Java代码将作为讲解的例子。

       通过以下命令行对NullableTest进行反编译,何读以获取java编译器生成的读懂懂字节码:

       javap -v NullableTest >c:\code\1.txt

       接下来,我们将查看方法way1()对应的源码a源字节码。

       以下wiki提供了java字节码中每个指令的何读ocpp 1.6 源码详细说明:

       en.wikipedia.org/wiki/J...

       现在,让我们对NullableTest反编译得到的读懂懂字节码进行一些说明:

       0: invokestatic # // Method getInitializedOuter:()Ljava8/Outer;

       这表示调用静态方法getInitializedOuter,其返回类型为Outer。源码a源

       3: astore_0

       上述静态方法调用返回的何读outer引用被存储在局部变量中,其ID为0。读懂懂

       4: aload_0

       由于在Java源代码中,源码a源我已经将静态方法返回的何读对象引用与null进行了比较,因此使用aload_0指令将存储在ID为0的读懂懂局部变量中的对象引用重新加载到栈上,以便与null进行比较。源码a源期货模型源码公式

       5: ifnull

       这是何读我在Java源代码中编写的IF分支。如果检测到的outer引用为null,则直接返回。在字节码中,如果ifnull为true,则跳转到第行字节码,即直接返回。

       如果ifnull不为true,则继续执行下去。outer引用再次加载到栈上。

       从字节码的分析中,我们可以观察到有趣的现象。再次看看我们的android如何读源码IF语句。

       Java编译时,编译器实际上将其转换成了以下写法:

       这一事实可以通过以下图表得到确认。

       javap生成的字节码中的LineNumberTable非常有用。这张表中每行的line后面的数字代表Java源代码的序号,line XX冒号后面的数字代表字节码中每行指令的序号。以下是Java源代码和对应的字节指令在LineNumberTable中的映射关系。

       LineNumberTable维护了Java源代码与字节指令的映射关系,确保了Java代码调试的顺利进行。

怎么看JAVA开源项目的源码?

       有个开源代码托管平台叫github来了解下。

       GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名GitHub。

       github也可以是企业信用源码一个远程代码仓库,你可以将你的代码或者项目上传到github仓库,这个完全没有问题,网上有github客户端管理软件,操作非常简单,就类似于:SVN、CVS。

       github也是一个开源代码协作社区,通过github你可以参与别人的开源项目,也可以让别人参与你的开源项目。有些公司的产品,自己不想投入人力,但又不想放弃,就采用github代码托管的企业源码最新分享方式,将代码开源出去,让开发爱好者参与进来,其中docker就是一个很好的例子,也是开源最成功的一个项目。

       下面介绍如何从github上拿到开源项目:zxin。

       1、打开github官网“,全是英文,

要能读懂源代码,需要有很好的英文阅读能力,祝你好运。学JAVA经常听老师说有空去看看源码,也不告诉人家怎么看,该看什么东西。不可能是无脑的把一个开源的项目反编译就这样看吧例如二维码的ZXing开源项目,我想阅读下这个的源码,该怎么看,请大神赐教了,谢谢。

java编码理解

          <%@ page contentType= text/ charset=utf pageEncoding= GBK %>

          jsp页面(pageEncoding)——根据pageEncoding的设定读取jsp——>翻译成统一的UTF JAVA源码(即 java)——由JAVAC的JAVA源码至java byteCode的编译——>

          编译成UTF encoding的二进制码(即 class)——Tomcat(或其的application container)载入和执行阶段二的来的JAVA二进制码——>输出contentType编码给浏览器

           页面输入的参数用pageEncoding来编码

           页面的默认编码是什么?

       

          ntentType的默认编码是什么?

           编码和解码过程各种文件时什么编码

          response setContentType( text/ charset=gb ) 是在页面显示时设置的字符格式request setCharacterEncoding( gb ) 是servlet接受请求后对请求中的字符进行设置字符格式 因为默认通过网络传输的内容都被进行了iso 编码 如果想在后处理的时候不让中文成乱码 那就得对得到的内容进行gb 编码

          JSP pageEncoding和contentType属性

          JSP要经过两次的 编码 第一阶段会用pageEncoding 第二阶段会用utf 至utf 第三阶段就是由Tomcat出来的网页 用的是contentType

          关于JSP页面中的pageEncoding和contentType两种属性的区别

          pageEncoding是jsp文件本身的编码

          contentType的charset是指服务器发送给客户端时的内容编码

          JSP要经过两次的 编码 第一阶段会用pageEncoding 第二阶段会用utf 至utf 第三阶段就是由Tomcat出来的网页 用的是contentType

          第一阶段是jsp编译成 java 它会根据pageEncoding的设定读取jsp 结果是由指定的编码方案翻译成统一的UTF JAVA源码(即 java) 如果pageEncoding设定错了 或没有设定 出来的就是中文乱码

          第二阶段是由JAVAC的JAVA源码至java byteCode的编译 不论JSP编写时候用的是什么编码方案 经过这个阶段的结果全部是UTF 的encoding的java源码

          JAVAC用UTF 的encoding读取java源码 编译成UTF encoding的二进制码(即 class) 这是JVM对常数字串在二进制码(java encoding)内表达的规范

          第三阶段是Tomcat(或其的application container)载入和执行阶段二的来的JAVA二进制码 输出的结果 也就是在客户端见到的 这时隐藏在阶段一和阶段二的参数contentType就发挥了功效

          contentType的设定

          pageEncoding 和contentType的预设都是 ISO 而随便设定了其中一个 另一个就跟着一样了(TOMCAT 是如此) 但这不是绝对的 这要看各自JSPC的处理方式 而pageEncoding不等于contentType 更有利亚洲区的文字 CJKVç³»JSP网页的开发和展示 (例pageEncoding=GB 不等于 contentType=utf )

          jsp文件不像 java java在被编译器读入的时候默认采用的是操作系统所设定的locale所对应的编码 一般我们不管是在记事本还是在ue中写代码 如果没有经过特别转码的话 写出来的都是本地编码格式的内容 所以编译器采用的方法刚好可以让虚拟机得到正确的资料

          但是jsp文件不是这样 它没有这个默认转码过程 但是指定了pageEncoding就可以实现正确转码了

          举个例子

          <%@ page contentType= text/ charset=utf %>大都会打印出乱码 因为我输入的 你好吗 是gbk的 但是服务器是否正确抓到 你好吗 不得而知

          但是如果更改为

lishixinzhi/Article/program/Java/hx//

如何快速读懂项目源码javaWeb

       一:学会如何读一个JavaWeb项目源代码 步骤:表结构->web.xml->mvc->db->spring

       ioc->log-> 代码

       1、先了解项目数据库的表结构,这个方面是最容易忘记 的,有时候我们只顾着看每一个方法是怎么进行的,却没

       有去了解数据库之间的主外键关联。其实如果先了解数据 库表结构,再去看一个方法的实现会更加容易。

       2、然后需要过一遍web.xml,知道项目中用到了什么拦

       截器,监听器,过滤器,拥有哪些配置文件。如果是拦截 器,一般负责过滤请求,进行AOP 等;如果是监 可能是定时任务,初始化任务;配置文件有如使用了 spring

       后的读取mvc 相关,db 相关,service 相关,aop 相关的文件。

       3、查看拦截器,监听器代码,知道拦截了什么请求,这

       个类完成了怎样的工作。有的人就是因为缺少了这一步, 自己写了一个action,配置文件也没有写错,但是却怎么

       调试也无法进入这个action,直到别人告诉他,请求被拦

       4、接下来,看配置文件,首先一定是mvc相关的,如 springmvc

       中,要请求哪些请求是静态资源,使用了哪些 view 策略,controller 注解放在哪个包下等。 然后是db 相关配置文件,看使用了什么数据库,使用了

       什么orm框架,是否开启了二级缓存,使用哪种产品作 为二级缓存,事务管理的处理,需要扫描的实体类放在什 么位置。最后是spring 核心的ioc

       功能相关的配置文件, 知道接口与具体类的注入大致是怎样的。当然还有一些如 apectj 置文件,也是在这个步骤中完成

       5、log

       相关文件,日志的各个级别是如何处理的,在哪些 地方使用了log 记录日志

       6、从上面几点后知道了整个开源项目的整体框架,阅读 每个方法就不再那么难了。

       7、当然如果有项目配套的开发文档也是要阅读的。