Java反射

1、什么Class类,什么是反射

在Java中,任何一个类都是java.lang.Class类的实例对象,Class类只有Java虚拟机可以new出来。

反射指Java运行时,任意一个类都可以知道这个类的所有属性和方法;对于任意一个对象,都可以调用他的方法和属性,这种动态获取信息和动态调用对象方法的功能机制成为反射机制。

2、Class类的3种动态加载

2.1 getClass()

xxObject obj;
Class c1 = obj.getClass();

2.2 Class.forName("className")

Class c2 = Class.forName("java.util.HashMap");

注意className是类的完全限定名,且可能抛出ClassNotFoundException

2.3 T.class

Class c3 = java.util.HashMap.class;

参考资料:getClass()forName()T.class

- 阅读全文 -

Spring的IoC容器初始化过程

IoC容器初始化分为3个过程:

1、Resource定位:寻找BeanDefinition定义(常见为Xml)的位置。

BeanDefinition资源定位是由ResourceLoader通过Resource接口完成,这个接口可以对各种形式的BeanDefinition做处理。

2、BeanDefinition载入:把用户定义好的Bean表示成IOC容器内部的数据结构(BeanDefinition)

BeanDefinition是POJO对象在IOC容器的抽象,IOC容器通过BeanDefinition管理各个Bean。

3、向IoC容器注册BeanDefinition:通过BeanDefinitionRegistry接口注册到IoC容器。

把载入过程中解析到的BeanDefinition通过BeanDefinitionRegistry接口注册到IoC容器,在IOC容器内部通过HashMap持有BeanDefinition。

- 阅读全文 -

反向代理和正向代理

正向代理: 是代理Client,为Client收发请求,对Sever来说,Server只知道Proxy存在,比如ShadowsSocks。
反向代理: 代理Server,为Server收发请求,Client只知道Proxy的存在,常用于负载均衡,比如Nginx。

反向代理和正向代理-张国利

线程安全/不安全

未完成

线程安全指多线程操作同一个对象时,采用加锁机制,先后更改数据也不会造成数据不一致或者数据污染的情况,线程不安全时常用synchronized,但是这可能会带来性能问题。

jsoup入门

Maven:

    <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>1.10.2</version>
    </dependency>

获取网页内容、加载为Document对象

 Document doc = Jsoup.connect(String url).get();
 Document doc = Jsoup.parse(Strng url);
 Document doc = Jsoup.parse(String htmlSource);
<div id="main">
    <a id="title" name="title" class="large">
        Jsoup操作Document对象
    </a>
</div>

- 阅读全文 -

vim命令

Esc进入命令模式
:q退出
:w保存
:w!强制保存
:wq! 强制保存并退出

:set number 显示行号

:/word 向下(后)找word
:?word 向上(前)找word
查找时,按n查找下一个匹配的单词

G 到文本最后一行,也就是shift+g
ctrl+d 下一页
ctrl+u 上一页

其他linux命令 Java程序员开发中常用Linux命令

RabbitMQ安装

本文环境:CentOS 6.5(final)

1、更换源(可忽略)

备份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载repo到/etc/yum.repos.d/

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

生成缓存

yum clean all
yum makecache

2、准备

yum -y install unixODBC unixODBC-devel java libxslt xmlto

3、安装simplejson

wget https://pypi.python.org/packages/source/s/simplejson/simplejson-3.5.3.tar.gz#md5=d5f62dfa6b6dea31735d56c858361d48 --no-check-certificate

tar zxvf simplejson-*.tar.gz
cd simplejson-*
python setup.py build
python setup.py install

- 阅读全文 -

Spring常用注解

注解可以用在类,方法,方法的参数上

@ResponseBody

Spring以字符串的形式渲染结果并将结果直接填充到HTTP的响应体中,直接返回给调用者,常用于构建RESTful的api

@Controller

用于定义控制器类,处理http请求在spring 项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层)

@RestController

@ResponseBody和@Controller的合集,返回json

注意@Controller和@RestController在使用上的区别

@RequestMapping('/path')

配置URL映射,拦截'/*'的http请求

多个URL访问一个方法:@RequestMapping(value={"/path1","/path2"})

@Component

泛指组件,常在公用类上使用或当组件不好归类时

@Controller @Service @Repository 和 @Component在大多数的情况下是等效的

@ComponentScan

表示将该类自动发现(扫描)并注册为Bean,可以自动收集所有的Spring组件,包括不限于@Controller、@Service、@Repository、@Component和@Configuration类。我们经常使用@ComponentScan注解搜索beans,并结合@Autowired注解导入。

- 阅读全文 -

表格隔行换色

使用下面的css可以使表格隔行换色

tr {
    background: #0FF;
}

tr:nth-child(2n) {
    background: #CCC;
}

tr {
    background-color:expression((this.sectionRowIndex % 2 == 0) ? "#F00":"#CCC" );
}

效果:

展示效果-张国利博客

- 阅读全文 -