Java 引用传递和值传递

前几天有个朋友问了我个问题,就是 Java 中什么时候是值传递什么时候是引用传递。他的理解是,基本数据类型是值传递,复杂对象是引用传递。 所以就有了如下的一个测试代码: public class Main { public static void main(String[] args) { int a = 0; Integer b = 0; Sys... [阅读全文]

记一个非常有意思的项目

机缘巧合之下,和朋友聊天的时候,知道他们那有一个基于 Java 的 web 系统。于是,作为一个 Java 功底还算过得去的人,我觉得,应该可以去玩玩。 因为,作为一个 Javaer,说到 Java web 的时候,无外乎 Spring,Struts,Hibernate,或者 MyBatis。于是乎,作为复习,我拿过来看了下。不过第一眼确实是非常惊讶。 因为朋友那边没能拿到相关的文档,没有部署方式和设计方式,所以... [阅读全文]

一次线上debug的过程

事情的缘由是这样的,很久之前,我写了一个爬虫,然后爬虫幸福的运行在服务器上,突然有一天,我收到一份邮件,上面写着爬虫失效,然后 肯定先是ssh上去看看进程. 先top一下看状况,一切良好,java进程的运行比较平稳,所以排除了死循环的错误,或者是NPE退出的错误. 然后线上使用**jstack**查了下虚拟机栈,然后就发现了如下一段奇葩的栈: ``` "pool-6-thread-629" prio=10 ti...<0... [阅读全文]

Java中数字的几个好玩的地方

开始 我们先从一个简单的例子开始: 你们可以大胆的猜测下结果。 相信很多人直接就已经没有了往下看得欲望。因为这道题目很简单,特别是还做了对比的输出。其中的道理也很简单,越界了。因为在给result赋值之前,后面执行的过程都是基于int的计算。所以最后的结果就是: 好了,简单的问题结束了。开始更加有趣的事情了。 传说中的Integer常量池 说到常量池,S...阅读全文>> [阅读全文]

Btrace调试Java代码

之前有一个同学提到了一个需求,就是需要在程序跑起来之后查看程序的调用情况,和一些参数变化,当然,如果 没有部署到生产环境中,我们可以用强大的Eclipse使用Debug模式进行单步调试。但是一旦部署到了生产环境中, 我们的强大的调试工具就失去了作用。 于是我们可以参考使用JVisualVM中的Btrace。当然本文章的大部分内容都有参考周志明的深入理解Java虚拟机 接下来的内容...阅读全文>> [阅读全文]

Jar代码注入

有段时间没有写博客了,主要的原因是期末考试和回老家过年,这段时间基本上没有看相关的内容,不过还是有很多可以用来分享的。 就像前一篇日志提到的一样,Java可以从字节码的方式进行玩耍。通过使用Javassist这个类库,可以很方便的进行字节码的操作。 从这个角度讲,有很多我们之前没有想到的方面也可以进行实施。比如说有这么一个jar包,需要进行引用开发,于是乎,我们可以进行一些简单的恶作剧...阅读全文>> [阅读全文]

Oracle面试之行

    之前也是和同学做了一下Oracle的PAC测试,也没有怎么去想结果,但是在周六的晚上九点半接到电话,说今天要去面试- -,然后就翘了计算机组成去面试了,其实呢,面试官挺好的,主要我去的比较早,然后一个人挺无聊的,就看了一会kindle.     接下来说面试的内容了,总体来说,难度不是很难,但是很基础,有些内容以前是...阅读全文>> [阅读全文]

近期几个调错的总结

    文如标题,最近的几个调试的笔记了。     第一个案例就是一个学长写的网关模块代码,代码很长,很乱,真的很乱- -,所以也没有想去研读代码,直接上手测试不过的案例,开visualVM进行跟踪,这个例子就是在一条连接进入到连接跪了这段时间,这个程序的cpu占用会到100%,然后我就看,发现这个进程中并没有太多的线程,也... 阅读全文>> [阅读全文]

调优我的Eclipse

        通过学习之后,决定尝试一次真正意义上的Java调优,于是就开始从自己的Eclipse开始。 准备环境 首先是准备环境使用的是JDK自带的JVM监控插件,一般是在JDK文件夹下的bin目录下,jvisualVM.运行的时候直接./jvis... 阅读全文>> [阅读全文]