- 浏览: 118154 次
- 性别:
-
最新评论
-
lueye:
...
java实现归并排序 -
lueye:
堆排序的时候for循环中是不是应该len > 0 而不是 ...
java实现选择排序(直接选择排序、堆排序) -
jadymrhu:
...
java集合辅助类 Collections、Arrays -
男人50:
...
java 集合的数据结构 -
shuizhaosi888:
string2020 写道RandomAccess 是干啥的
...
java ArrayList源码 下
文章列表
定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态
类型:行为类
类图:
我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用Ctrl+Z来进行返回。这时我们便可以使用备忘录模式来实现。
备忘录模式的结构
发起人:记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。
备忘录:负责存储发起人对象的内部状态,在需要的时候提供发 ...
git 基本信息
--设置全局用户名
git config --global user.name "HanShuliang" //设置用户名
git config --global user.email "13241153187@163.com" //设置邮箱
--查看环境配置
git config --list
--配置文件保存在
~/.gitconfig
---初始化一个空仓库
git init
---查看仓库repository状态
git status
git status -a 简要信息
...
1. 下载地址:http://maven.apache.org/download.html
2. 解压到指定目录(安装的目录,将文件名改成maven):D:\Program Files\maven
3. 将目录/bin添加到系统PATH中:D:\Program Files\maven\bin
4. 在系统变量中添加
变量名: JAVA_HOME
值:C:\Program Files\Java\jdk1.7.0_71
5. 测试安装是否成功cmd中:mvn -v ...
定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,共方法使一个类的实例化延迟到子类
工厂模式他的关键是:将创建对象和使用对象分开
/**
* 声明产品接口
*/
public interface ICar{
public void produ ...
单例模式
懒汉式
public class RunMain {
/**
* 私有构造
*/
private RunMain() {
}
/**
* 内部类,用于占位,只有
*/
private static class SingletonRunMain {
private static final RunMain runMain = new RunMain();
}
public static RunMain getInstance() {
return SingletonRunMa ...
能够写出高伸缩性的并发是一门艺术
在JAVA SE5中新增了3个包
java.util.concurrent
java.util.concurrent.atomic
java.util.concurrent.locks
在java的内存模型中,类的实例字段、静态字段和构成数组的对象元素都会被多个线程所共享,局部变量与方法参数都是线程私有的,不会被共享。
每个线程都有自己的工作内存(高速缓冲区),共享主内存的数据。线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,不能直接读写主内存的变量。不同的线程也无法访问对方工作内存中的变量,线程间变量值的传递 ...
在java类库中,任务执行的主要抽象不是Thread,而是Executor,将任务的提交过程和执行过程解耦
public interface Executor {
void execute(Runnable command);
}
public class RunMain implements Executor{
@Override
public void execute(Runnable command ...
/**
* 要执行的算法,返回结果v
*/
public interface Computable<A, V> {
public V comput(final A arg);
}
/**
* 用于缓存数据
*/
public class Memoizer<A, V> implements Computable<A, V> {
private final ConcurrentMap<A, Future<V>> cache = new ConcurrentHashMap<A, Fu ...
同步工具类包括信号量(Semaphore)、栅栏(barrier)、闭锁(CountDownLatch)
闭锁(CountDownLatch)
public class RunMain {
public long timeTasks(int nThreads, final Runnable task) throws InterruptedException {
final CountDownLatch startGate = new CountDownLatch(1);
final CountDownLatch endGate = new CountDownLatc ...
通过并发容器来改善同步容器的性能,同步容器将所有对容器状态的访问都串行化,来实现线程安全,这种方式严重降低并发性,当多个线程访问时,吞吐量严重降低。
并发容器ConcurrentHashMap
替代同步基于散列的Map,通过Lock控制。
原理锁分段,用new object[16]中每个元素作为一个锁,然后用synchronized(object[hash(key)%16])进行同步。
ConcurrentMap接口中增加了一些常见的复合操作的支持。对ConcurrentHashMap进行迭代不会抛出异常(弱一致性)。size,i ...
timertask
- 博客分类:
- concurrent
java.util.Timer timer = new java.util.Timer(true);
// true 说明这个timer以daemon方式运行(优先级低,
// 程序结束timer也自动结束),注意,javax.swing
// 包中也有一个Timer类,如果import中用到swing包,
// 要注意名字的冲突。
TimerTask task = new TimerTask() {
public void run() {
... //每次需要执行的代码放到这里面。
}
};
//以下是几种调度task的方法:
tim ...
JSP3个编译指令
page:针对当前页面,配置各种属性
<% @ page contentType="text/html" ; charset="gbk" language="java" isErrorPage="true"%>
include:用于指定包含另一个页面,可以将一个外部文件嵌入到当前JSP文件中,这个是个静态的include语句,它会把目标页面的其他编译指令也包含进来,适用于包含静态页面
<%@ include file="**.jsp"% ...
在java语言里,类型的加载、连接和初始化过程都是在程序运行期间完成的
加载:
通过类的全限定名来获取定义此类的二进制流
将这个字节流所代表的静态存储结构转化为方法区的运行时数据
在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类各种数据的访问入口
上面第一点,有很大的灵活性,可以从ZIP包中读取,从网络中获取,运行时计算生成(动态代理proxy),由其他文件生成(jsp),从数据库读取....
加载完成后,虚拟机外部的二进制字节流就按照虚拟机所需要的格式存储在方法区之中。然后在内存中实例化一个java.lang.Cl ...
java内存分为堆(heap),栈(stack),方法区(method Area),程序计数器(Program counter Register)
程序计数器:占用很小的内存,线程私有区域。唯一没有内存溢出异常(OutOfMemoryError)的区域。每个线程都有一个程序计数器用来记 ...
util 在spring2.0以后
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:c=& ...