`
xfxlch
  • 浏览: 162789 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表

spring的IOC和DI

很多的时候,我们讲spring,都会提到spring的核心功能,IOC和DI。即控制反转和依赖注入。 很多的文章,在提到两者的时候,更多的是把他们等同起来看,即普遍认为ioc就是di,di也就是ioc。 其实不然,可以这样子认为:通常情况下,我们的程序都不可能完全的由一个类来完成一整个复杂的业务,所以当我们在一个业务类A要调用另外一个业务类B的时候,我们都是手工的去new 一个对象出来。这个是我们自己来做的。由程序员来控制这个被调用类B的使用情况和生命周期。现在有了spring容器,我们可以把这样的操作权交给spring容器来帮我们完成。即我们把需要调用的业务类B通过xml配置的方式,来帮我们n ...
这里简要说明一下内存泄露和内存溢出的区别: 内存泄露是指分配出去的内存没有被回收回来,由于失去了对该内存区域的控制,因而造成了资源的浪费。Java中一般不会产生内存泄露,因为有垃圾回收器自动回收垃圾,但这也不绝对,当我们new了对象,并保存了其引用,但是后面一直没用它,而垃圾回收器又不会去回收它,这边会造成内存泄露 内存溢出是指程序所需要的内存超出了系统所能分配的内存(包括动态扩展)的上限。 http://www.360doc.com/content/14/0102/10/9297708_341884354.shtml
【零】布尔型 boolean boo = true; 对应字节码 0:   iconst_1 1:   istore_1 【①】byte型: byte m = 1; 对应的字节码: 0:   iconst_1 1:   istore_1 【②】int型: int m = 1; 对应字节码 0:   iconst_1 1:   istore_1 【③】short型: short m = 1; 对应字节码 0:   iconst_1 1:   istore_1 【④】long型: long m = 1; 对应字节码: 0:   lconst_1 1:   lstore_1 【⑤】cha ...
链接:http://www.boyunjian.com/do/article/snapshot.do?uid=net.csdn.blog%2Fjava169%2Farticle%2Fdetails%2F2460659 大多Java程序员知道他们的程序通常不会被编译为本机代码而是被编译为由java虚拟机(JVM)执行的字节码格式。然而,很少有java程序员曾经看过字节码因为他们的工具不鼓励他们去看。大多Java 调试工具不允许单步执行字节码,它们要么显示源代码行,要么什么也不显示。 幸运的是JDK提供了javap,一个命令行工具,它使得查看字节码很容易。让我们看一个范例: public cla ...

jvm字节码入门

    博客分类:
  • jvm
jvm字节码解读:HelloWorld.javapublic class HelloWorld{  public static void main(String args[]) {   System.out.println("Hello, Jack!");  } } 编译完之后的字节码文件: main函数的字节码指令如下:0 getstatic #2 <java/lang/System.out> 3 ldc #3 <Hello, Jack!> 5 invokevirtual #4 <java/io/PrintStream ...

javap命令

    博客分类:
  • jvm
对于已经编译为class的字节码文件,我们除了用jclasslib等小软件来查看字节码指令外,还可以用jdk自带的javap命令来查看。用法是在命令行中,直接输入如下的命令行:javap -c HelloWorld[命令] [参数][class文件名]
Java程式可以跨平台,這是你在許多書或文件早就看過的描述,但是跨平台是怎麼一回事?在這之前,你得先了解不能跨平台是怎麼一回事。其 實對於電腦而言,它只認識一種語言,也就是0101序列所組合而成的指令。當你使用的是C/C++等之類的高階語言撰寫程式時,其實這些語言,都是比較貼 近人類可閱讀的文法,精確點來說,大部份就是比較接近英文文法的語言。這是為了方便人類閱讀及撰寫。電腦其實看不懂C/C++這類語言。你要有個「翻譯員」將你寫的C/C++程式,翻譯為電腦看得懂的0101序列指令,這個翻譯員就是所謂的「編譯器」(Compiler):問 題在於,每個平台所認識的0101序列並不一樣。在Windo ...

jvm运行时数据区

    博客分类:
  • jvm
java虚拟机里定义了若干程序在运行时会用到的运行时数据区,一些是与虚拟机相关的,随着虚拟机的创建而创建,关闭而消亡;另一些是与运行在虚拟机上的线程相关的,随着线程的创建与结束而产生和销毁。任何一个虚拟机的线程都是与一个java虚拟机栈相对应,这个虚拟机栈用来保存局部变量和运行时产生的一些中间值。 Java虚拟机栈可能发生如下异常情况:  如果线程请求分配的栈容量超过Java虚拟机栈允许的最大容量时,Java虚拟机将会抛出一个StackOverflowError异常。  如果Java虚拟机栈可以动态扩展,并且扩展的动作已经尝试过,但是目前无法申请到足够的内存去完成扩展,或者在建立新 ...
今天在公司有发现用到了PropertyUtils.copyProperties方法来拷贝两个对象之间的属性值,后来上网查了一下,发现还有一个方法是BeanUtils.copyProperties,对比了一下,说两者之间的主要区别是BeanUtils.copyProperties不支持类型的转换,而PropertyUtils.copyProperties 支持简单的类型转换,有时间过一下这两个方法的源代码。看看真正的区别在哪里。

也玩java反射

try { //利用反射拿到我们要的class类 Class clazz = Class.forName("com.luch.sample.common.thread.Jack"); //拿到类的属性名 Field field = clazz.getField("name"); //获取属性的值 String obj = (String) field.get(clazz.newInstance()); System.out.println(obj); Field[] ...
今天在做一个线程工具的时候,突然要用到日期格式的转换。 然后就自己写了一个计算天数的方法,我输入自己的出生年月,发现我快活了10000天了。我要加油啦。输入自己的出生日期,自己算一下吧。例如:birthday="1988-12-12"   public void fetchAge(String birthday) throws ParseException { SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd"); Date birthDate = format.parse( ...
人生最值得的投资就是磨练自己,因为生活与服务人群都得靠自己,这是最珍贵的工具。 工作本身并不能带来经济上的安全感,具备良好的思考,学习,创造与适应能力,才能立于不败之地。拥有财富,并不代表经济独立,拥有创造财富的能力才是真正的可靠。
在学习中经常会拿26个英文字母序列做为字符串的例子来说明。但是自己又不想每次都自己手动输入。所以就想写个方法能快速的生成这个字符串。 /** * generate 26 english Characters * @return void */ public static void generate26chars(){ StringBuffer sb = new StringBuffer(); char zz = 'z'; char z = 'Z'; for(int j = 65; ;j++){ sb.append((char)j); ...
最近在用JSF用一个项目,可是项目中很多的JSF标签让人摸不着头脑,并且标签里面那很多的属性也是真的够折腾人的。虽然JSF或者PrimeFaces有相应的很多官方文档可以查,但是仅仅就那么一点的描述真的还不能让人很快的上手, ...
   今天系统有个小的bug:程序中log4j生成的log日志在开发环境和部署完之后的运行环境两个地方的不一样很是奇怪。以下log4j.properties文件: # Define the root logger with appender file log4j.rootLogger = DEBUG, FILE, INFO # Define the file appender log4j.appender.FILE=org.apache.log4j.RollingFileAppender # Set the name of the file log4j.appender.F ...
Global site tag (gtag.js) - Google Analytics