- 浏览: 9313 次
最新评论
文章列表
java代理模式学习
- 博客分类:
- 设计模式
需求
主人公frade 刚刚来到北京,马上就要开启自己的北漂生活了,首先解决的问题就是需要找房子,那么问题来了,北京的房子如果你想找房东去租,难度太大,比较容易的办法就是找中介。这里咋们用proxy模式来实现下这个需求。
proxy模式分为两种:静态代理和动态代理,以下是两种方式分别实现上面的需求;
静态代理
1. 抽象角色
按照java面向对象的思路首先定义一个person的接口。
public interface Person {
/**
* 这里有两个参数,用来设置目标房源的 ...
Lock
Java5的concurrent包引入的接口: java.util.concurrent.locks,其功能与synchronize类似,在开始代码处调用lock() 方法获取锁,在结尾处调用unlock()释放锁。
public class MainClass
{
private Lock lock;
private Object shared;
...
java 并发编程二
- 博客分类:
- java
竞态条件和同步
1、竞态条件(Race Condition) :两个以上的线程同时对一个公用的变量进行读写操作,由于执行顺序无法控制,导致结果出现错误。
计算输出 : 比如方法调用的结果
不受控制:比如线程调度是不受控制的,具有随机性
顺序或时机:比如那个线程先执行,执行到哪一行代码由OS切换出去,那个线程切换进来有CPU执行
下面举个浅显的例子,假设有这样一个计算器:
public class Calculator
{
private final int[] input;
private int start; ...
基础知识
线程的本质是机器执行的路径,是操作系统的最小执行单元,它完全是多任务操作系统之上的虚拟概念,从硬件角度来说每一个cup只有一条执行路径。成百上千个线程同时执行是操作系统调度的假象。
每一个计算机程序,或每个进程,至少有一个线程,这个线程称为主线程,Java的主线程称为main thread。它以某个class类的main方法为起点。任何计算机程序都是由单一线程开始运行的。进程独享一个内存空间,进程中的线程共享这个内存空间,每个线程有单独的栈来存储数据。
并发编程的术语
屏障(Barrier):屏障代表多个线程的集合点 ...
Centos 下mysql my.cnf参数
- 博客分类:
- mysql
# 客户端参数
[client]
#设置默认字符集格式
default_character_set=utf8
[mysql]
default_character_set=utf8
#服务端参数
[mysqld]
#设置默认字符集格式
character_set_server=utf8
bind_address=127.0.0.1
port=3306
...
Mockito 单元测试
- 博客分类:
- mockito
Mockito 简介
Mockito是一个java仿冒架构,所谓的仿冒就是创建一个“虚拟”的java类来模拟一个java类的行为。之所以使用仿冒可能出于以下几个原因:
某个类已经进入单元测试,但是协作的类还没有开发完成;
协作类可能有缺陷,使用仿冒机制隔离缺陷;
模拟在单元测试阶段难以获得的对象,这些对象往往与环境和容器相关,如:HttpServletRequest
Mockito的三个事件,mock仿冒、验证(verification)和打桩(stubbing)。所谓的验证就是断言预期的行为,所谓的打桩就是mock对象在特定 ...
下载mysql镜像
docker pull hub.c.163.com/nce2/mysql:5.6
创建mysql5.6容器
docker run --name mymysql -d -P hub.c.163.com/nce2/mysql:5.6
验证容器状态
通过主机进入mymysql容器
docker exec -it mymysql bash
//输出
root@4344add2cca7:/#
登录mysql数据库,查看mysql是否可以正常使用
$ docker exec -it mymysql bash
root@4344ad ...
运算符分类
运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算、双目运算符和三目运算符。运算符按其功能来分,有算术运算符、赋值运算 ...
1. 在镜像仓库中下载ubuntu桌面版本镜像
docker pull dorowu/ubuntu-desktop-lxde-vnc
2. 运行镜像 映射宿主机的8080端口和镜像的80端口
docker run -it -p 8080:80 --name vnc dorowu/ubuntu-desktop-lxde-vnc
3. 查询docker环境变量配置
docker-machine env
4. 用本地浏览器访问 http://192.168.99.100:8080/
1. 不带参数的ls 显示目录下的所有文件
2. ls -l 显示目录的长列别
文件属性 文件个数 拥有者 所属分组 文件大小 日期 文件名称
文件属性类型
第一个字母代表的类型
- 常规文件 d目录 l 符号链接 c 字符特殊设备 b 模块特殊设备 p FIFO s 套接字
其余的每3个格代表一列 rwx r 代表读 w 代表写 x 代表可执行 。第一组表示当前用户对文件的权限
第二组表示该组用户对文件的操作权限;第三组表示其余用户对文件的操作权限
...
docker 基础知识
- 博客分类:
- docker
基础概念:
container 容器。可以把每个 container 看做是一个独立的主机。 container 的创建通常有一个 image 作为其模板。类比成虚拟机的话可以理解为 image 就是虚拟机的镜像,而 container 就是一个个正在运行的虚拟机。一个虚拟 ...
netty基础知识2
- 博客分类:
- netty
本文所使用JDK7和netty5.0为基础。Netty5.0
Netty 服务端开发
import io.netty.bootstrap.ServerBootstrap;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.*;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import i ...
json解析工具jackson
- 博客分类:
- java
Jackson库(http://jackson.codehaus.org),是基于Java语言的开源json格式解析工具,整个库包含3个jar包:
jackson-core.jar——核心包(必须),提供基于“流模式”解析的API。
jackson-databind——数据绑定包(可选),提供基于“对象绑定”和“树模型”相关API。
jackson-annotations——注解包(可选),提供注解功能。
Jackson的优势
相对于Java json解析的其他库,诸如json-lib、gson包,Jackson具有以下优点:
功能全面,提供多种模式的 ...
Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在 java.lang.annotation 包中。
1、元注解
元注解是指注解的注解。包括 @Retention @Target @Document @Inherited四种。
1.1、@Retention: 定义注解的保留策略
@Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含
netty基础学习1
- 博客分类:
- netty
1、netty是什么
Netty 是一个基于 JAVA NIO 类库的异步通信框架,它的架构特点是:异步非阻塞、基于事件驱动、高性能、高可靠性和高可定制性。
2、NIO入门
首先我们看一下基于同步线程阻塞IO(BIO)的线程模型图
从上 ...