尽管ThreadLocal与并发问题相关,可是很多程序猿只将它作为一种用于“方便传參”的工具,胖哥觉得这或许并非ThreadLocal设计的目的,它本身是为线程安全和某些特定场景的问题而设计的。ThreadLocal是什么呢。每一个ThreadLocal能够放一个线程级别的变量,可是它本身能够被多个线程共享使用,并且又能够达到线程安全的目的,且绝对线程安全。比如:public final static ThreadLocal<String> RESOURCE = new ThreadLocal<String>();
...
开篇
设计模式对于很多小伙伴来说都是它认识你,但是你不认识它,设计模式可以帮助我们简化代码,提高代码的复用率,减少代码的耦合性,以及增加代码的重复利用性,但是设计模式并非是好用的代言,有些时候也会给我们代来很多问题,比如简单的判断语句会变成复杂的多类关联,也会引发一些安全问题,比如今天要说的单例模式。
基本介绍
单例模式(Singleton Pattern)是Java中最简单的设计模式之一(暗藏玄机)。属于创建模式之一,...
一、Java I/O中的设计模式
1、适配器模式
适配器模式就是把一个类的接口变换成客户端所能接受的另一种接口,从而使两个接口不匹配而无法在一起工作的两个类能够在一起工作。通常被用在一个项目需要引用一些开源框架来一起工作时,这些框架的内部都有一些关于环境信息的接口,需要从外部引入,但是外部的接口不一定能匹配,在这种情况下,就需要适配器模式来转换接口。 Java的I/O类库中有许多这样的需求,如将字符串转成字节数据保...
容错恢复机制 容错恢复机制是应用程序开发中非常常见的功能。那么什么是容错恢复呢?简单点说就是:程序运行的时候,正常情况下应该按照某种方式来做,如果按照某种方式来做发生错误的话,系统并不会崩溃,也不会就此不能继续向下运行了,而是有容忍出错的能力,不但能容忍程序运行出现错误,还提供出现错误后的备用方案,也就是恢复机制,来代替正常执行的功能,使程序继续向下运行。 举个实际点的例子吧,比如在一...
Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等,这些方法在提升Java运行效率、增强Java语言底层资源操作能力方面起到了很大的作用。
但由于Unsafe类使Java语言拥有了类似C语言指针一样操作内存空间的能力,这无疑也增加了程序发生相关指针问题的风险。在程序中过度、不正确使用Unsafe类会使得程序出错的概率变大,使得Java这种安全的语言变得不再...
The role of proxy, application scenarios, and implementation in Java programs.代理是程序设计和开发时频繁使用的技术,可以提高程序灵活性和可扩展性。
1 代理作用在不修改原代码的基础上,扩展和增强实现;
代码解耦,在代理中通过参数可以判断真实类,做出不同的响应或调用,灵活方便;
隐藏部分实现过程和细节。2 应用场景ICar接口类,有一个drive方法,传入speed(速度)行驶,现在已经有Mitsubishi(三菱车)和Bwm(宝马车)实...
The role of proxy, application scenarios, and implementation in Java programs.代理是程序设计和开发时频繁使用的技术,可以提高程序灵活性和可扩展性。
1 代理作用
在不修改原代码的基础上,扩展和增强实现;代码解耦,在代理中通过参数可以判断真实类,做出不同的响应或调用,灵活方便;隐藏部分实现过程和细节。
2 应用场景ICar接口类,有一个drive方法,传入speed(速度)行驶,现在已经有Mitsubishi(三菱车)和Bwm(宝马车)实...
学习IO,首先要明白四个东西。
1.同步
java自己去处理io。
2.异步
java将io交给操作系统去处理,告诉缓存区大小,处理完成回调。
3.阻塞
使用阻塞IO时,Java调用会一直阻塞到读写完成才返回。
4.非阻塞
使用非阻塞IO时,如果不能立马读写,Java调用会马上返回,当IO事件分发器通知可读写时在进行读写,不断循环直到读写完成。
1.BIO:同步并阻塞,服务器的实现模式是一个连接一个线程,这样...
抽象类
注:先将抽象类中的两种方法解释完,再综合解释抽象类
抽象方法应用场景:其下所有子类都应该有该方法但是大部分子类具体的执行步骤是有所不同的。
必须重写:也可以说“必须实现”,因为父类的抽象方法没有方法体。
关键字:abstract普通方法应用场景:其下所有子类都应该有该方法而且大部分子类具体的执行步骤是完全相同。
可重写:普通方法是可以重写的,对于每一个子类执行步骤都是相同的自然没有必要去重写;绝大部分子...
定义:1、BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时,服务器就启动一个线程来处理,如果这个连接不处理任何事情会造成不必要的线程开销,可以通过线程池机制改善。2、NIO:同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。3、AIO:异步非阻塞,服务器实现模式为一个有效请求一个线程,即客户...
一、this关键字
1.代表当前类的对象
2.通过” . ”调用成员属性和成员方法
3.通过this可以区分成员属性和参数
参数名和属性名相同的情况,默认是参数名
二、非静态成员属性和静态成员属性的区别非静态通过“对象.属性“的方式调用
静态通过“类名.属性“的方式调用
非静态属性每个对象各有一份,静态属性被对象之间共享,属于类
三、类的加载顺序
创建对象时:
1.首先加载静态资源
a) 静态代码块
b) 静态成员属性
静态资源只...
角色抽象角色:接口类
实现角色: 实现类
代理角色:代理实现的类,最终使用的对象静态代理
1. 接口 1 /**2 * description3 *4 * @author 70KG5 * @date 2018/8/16 */7 public interface IBusinessA {8 9 /**
10 * Description: 卖包的业务接口
11 * Author:70KG
12 * Param [brand] 品牌
13 * Return void
14 * Date 2018/8/1 9:46
15 */
16 void saleBag(String brand);
17
18 }2. ...
多线程的目的是充分利用 cpu 的运算性能
场景1:web 服务器采用多线程,以应对大量的请求。场景2:定时任务,如定期更新配置文件、定期采集信息。场景3:比较耗时的任务,如用户注册后的积分赠送。场景4:比较耗时的任务,如备份数据库。可以开启1个线程备份数据库,前台定时查询备份状态。场景5:比较耗时的任务,如验证 10000 条 url。可以开启 50 个线程,每个线程验证 200 条即可。场景6:比较耗时的任务,如读取文件。由于磁盘...
首先这些对象都应用都是一些单词的简称,也是一种应用思想,故其他语言也可以使用,在 Java? 里比较常见这些对象吧。下面来一一解释。
一、POJO(Plain Ordinary Java Object)。
简单而言,就是一个简单的对象,而且没有任何规则约束。有的时候拿 POJO? 来泛指用来做传输对象 Java bean (包括今天要介绍的 DTO? 、 VO? 、 BO? 、 PO? 等)也是可以的。
二、DTO(Data Transfer Object)
数据传输对象,单纯用来数据传输的对象。我...
nginx正向代理server {listen 8090;server_name www.gps.com;location / {resolver 218.85.157.99 218.85.152.99;resolver_timeout 30s;proxy_pass http://$host$request_uri;}access_log /data/httplogs/proxy-$host-aceess.log;
}测试:http://www.gps.com:8090resolver指令语法: resolver address … [valid=time];默认值: —配置段: http, server, location配置DNS服务器IP地址。可以指定多个,以轮询方式请求。nginx会...