不灭的焱

革命尚未成功,同志仍须努力

作者:php-note.com  发布于:2018-10-14 19:52  分类:Java基础 

transient的作用及使用方法

我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。

然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比方,如果一个用户有一些敏感信息(如密码,银行卡号等),为了安全起见,不希望在网络操作(主要涉及到序列化操作,本地序列化缓存也适用)中被传输,这些信息对应的变量就可以加上transient关键字。换句话说,这个字段的生命周期仅存于调用者的内存中而不会写到磁盘里持久化。

作者:php-note.com  发布于:2018-09-23 16:34  分类:Java基础 

假如你正在为一个大型公司开发一个全新的具有历史意义的使命级的应用,在第一个会议上你了解到这个系统必须无损且高效地支持150000用户并发使用,所有人的眼光都注视着你,你打算怎么说?

如果你自信地说:“可以,没有问题”,所有人将会对你脱帽致敬,但是大多数的我们都会谨慎地去思考。比如去思考可执行性,接着你会拿着一台电脑,然后去搜索“高性能的java网络编程”

 

如果你今天搜索这样的关键词,大概下面的第一个结果就是你将看见的:

作者:php-note.com  发布于:2018-09-17 16:33  分类:Java基础 
public static void main(String[] args) {
    String keyWord = "chrome.exe";

    Runtime runtime = Runtime.getRuntime();

    try {
        Process process = runtime.exec("cmd /c Tasklist");

        BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));

        String s;
        while ((s = in.readLine()) != null) {
            s = s.toLowerCase();
            if (s.startsWith(keyWord)) {
                System.out.println("==========>" + keyWord);
                break;
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
作者:php-note.com  发布于:2018-08-26 17:03  分类:Java基础 

web.xml 文件中,

metadata-complete="true" 是默认值!

metadata-complete 值必须修改掉为 "false" !

Servlet 3.0 的部署描述文件 web.xml 的顶层标签 <web-app> 有一个 metadata-complete 属性,该属性指定当前的部署描述文件是否是完全的。如果设置为 true,则容器在部署时将只依赖部署描述文件,忽略所有的注解(同时也会跳过 web-fragment.xml 的扫描,亦即禁用可插性支持,);如果不配置该属性,或者将其设置为 false,则表示启用注解支持(和可插性支持)。

作者:php-note.com  发布于:2018-08-26 16:02  分类:Java基础 

作者:php-note.com  发布于:2018-08-23 11:49  分类:Java基础 

异常处理是程序开发中必不可少操作之一,但如何正确优雅的对异常进行处理确是一门学问,笔者根据自己的开发经验来谈一谈我是如何对异常进行处理的。

由于本文只作一些经验之谈,不涉及到基础知识部分,如果读者对异常的概念还很模糊,请先查看基础知识。

作者:php-note.com  发布于:2018-08-19 20:03  分类:Java基础 

遇到一个问题:

interface Foo {
    int k = 0;
}

public class Test implements Foo {
    //......
}

public static void main(String args[]) {
        int i;
        Test test = new Test();

        i = test.k;
        i = Test.k;
        i = Foo.k;
    }
}

答案:Compilation   succesds.   

我觉得 i = Test.k; 应该出错,因为 k 并不是 Test 的 static变量 啊!

作者:php-note.com  发布于:2018-08-14 00:08  分类:Java基础 

Class类 简介

Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识。这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类。

Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建。

Class 没有公共构造方法。Class 对象是在加载类时由Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的,因此不能显式地声明一个Class对象。

作者:php-note.com  发布于:2018-08-11 13:47  分类:Java基础 

appendReplacement(StringBuffer sb, String replacement)

将当前匹配子串替换为指定字符串,并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个StringBuffer对象里,而

appendTail(StringBuffer sb) 方法则将最后一次匹配工作后剩余的字符串添加到一个StringBuffer对象里。

例如,有字符串 fatcatfatcatfat,假设既有正则表达式模式为"cat",第一次匹配后调用appendReplacement(sb, "dog"),那么这时StringBuffer sb的内容为fatdog,也就是fatcat中的cat被替换为dog并且与匹配子串前的内容加到sb里,而第二次匹配后调用 appendReplacement(sb, "dog"),那么sb的内容就变为fatdogfatdog,如果最后再调用一次 appendTail(sb),那么sb最终的内容将是 fatdogfatdogfat。

作者:php-note.com  发布于:2018-07-01 23:53  分类:Java基础