java
阿凡T
这个作者很懒,什么都没留下…
展开
-
Head First设计模式笔记(观察者模式--jdk自带实现)
1.主题类package com.TWO;import java.util.Observable;public class WeatherData extends Observable { private float temp; private float humidity; private float pressure; public WeatherData(){}原创 2017-07-05 16:45:37 · 219 阅读 · 0 评论 -
OSGI笔记
1.OSGI的特性 1. 可插拔的系统 基于OSGI的系统,可通过安装新的Bundle,更新或停止现有的Bundle来实现系统功能的插拔 2. 可动态改变行为的系统 3. 稳定高效的系统 4. 规范的,可积累的模块2.OSGI框架 Equinox knopflerfish Oscar3.OSGI介绍 OSGI框架是一个微核结构的容器,所有的模块都需要运行在容器范围内,在O原创 2017-06-14 15:45:34 · 321 阅读 · 0 评论 -
Head First设计模式笔记(观察者模式)
观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新 1.主题package com.TWO;public interface Subject { void registerObserver(Observer o); void removeObserver(Observer o); //当主题状态改变时,这个方法会被调用原创 2017-07-05 16:09:47 · 181 阅读 · 0 评论 -
Head First设计模式笔记(oo模型)
1.初期 抽象鸭子类package com.one;public abstract class Duck { //呱呱叫 public void quack(){ System.out.println("quack....."); } //游泳 public void swim(){ System.out.print原创 2017-07-04 21:05:47 · 247 阅读 · 0 评论 -
volatile
1.当把变量申明为volatile类型后,编译器与运行时都会注意到这变量是共享的,因此不会将该变量上的操作与其他内存操作一起被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile变量时总会返回最新写入的值原创 2017-07-04 19:07:20 · 144 阅读 · 0 评论 -
Head First设计模式笔记(模板方法模式)
在研究模板模式之前,先看2段代码 1.public class Coffee { void prepareRecipe(){ boilWater(); brewCoffeeGrinds(); pourInCup(); addSugarAndMilk(); } public void boilWater(){原创 2017-07-13 11:13:18 · 363 阅读 · 0 评论 -
Head First设计模式笔记(外观模式)
外观模式:提供了一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用 外观模式我自我感觉很简单,它的核心应该是封装细节,让接口更加简单,用户不必关系具体的细节,在下面展现的代码中因为简单,我就没展现全面 1.外观模式的核心类public class HomeTheaterFacade { Amplifier amp; Tuner tuner;原创 2017-07-13 10:32:29 · 171 阅读 · 0 评论 -
OSGI框架嵌入Http服务器
1.Eclipse 4.2以后的 OSGI 依赖的Bundleorg.eclipse.osgiorg.apache.felix.gogo.runtimeorg.apache.felix.gogo.commandorg.eclipse.equinox.consoleorg.eclipse.equinox.http.jettyorg.apache.felix.gogo.shelljavax.原创 2017-06-12 16:00:08 · 764 阅读 · 0 评论 -
Could not find bundle: org.eclipse.equinox.console
在启动OSGI时,报错org.eclipse.equinox.console 解决方案: 缺少org.eclipse.equinox.console 并且缺少console依赖的组件 org.apache.felix.gogo.command org.apache.felix.gogo.runtime org.apache.felix.gogo.shell or原创 2017-06-12 15:24:42 · 290 阅读 · 0 评论 -
Head First设计模式笔记(装饰器模式)
装饰器模式:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案 父类饮料类package com.TWO;//店内所提供的饮料都必须继承自此类public abstract class Beverage { String description = "unknown Beverage"; public String getDescription(){原创 2017-07-05 18:42:39 · 310 阅读 · 0 评论 -
OSGI框架学习
1.OSGI框架的组成 1.运行环境 2.模块 3.生命周期管理 4.服务注册2.bundle中的原数据信息 属性 属性描述 bundle-Activator bundle的Activator类名 Bundle-category原创 2017-06-14 21:24:36 · 336 阅读 · 0 评论 -
java中Integer对象127之前的数缓冲
package com.afan.test;public class Test { static class SynAddRunable implements Runnable{ int a,b; public SynAddRunable(int a,int b){ this.a = a; this.b = b;原创 2017-10-31 20:55:25 · 261 阅读 · 0 评论 -
对象死后自救
package com.afan.test;public class FinalizeEscapeGC { public static FinalizeEscapeGC SAVE_HOOK = null; public void isAlive(){ System.out.println("yes i am still alive!"); } @Overri原创 2017-10-31 17:06:07 · 289 阅读 · 0 评论 -
Head First设计模式笔记(单例模式)
单例模式:确保一个类只有一个实例,并提供一个全局访问点 1.第一个实现方式package com.TWO;//这个种方法将延迟实例化,如果我们不需要这个实例,它就永远不会产生public class Singleton { private static Singleton uniqueInstance; //构造器是私有的,只有Singleton类内部才可以调用 privat原创 2017-07-10 15:46:45 · 362 阅读 · 3 评论 -
Redis主备复制环境的搭建
采取主从复制(Replication)的方式来搭建一个master-slave环境 3台机子: 192.168.103.32 master 192.168.103.31 slave(32的slave) 192.168.103.33 slave(31的slave) 1主2备 3.Redis环境搭建的步骤 1.在redis原创 2017-09-26 18:14:16 · 435 阅读 · 0 评论 -
java并发编程2
1.java集合的遍历与改变同时存在的话,可能产生问题,下面的方法可以简单的防止,也就是采用客户端加锁的机制 第一种: public static Object getLast(Vector list){ synchronized(list){ int lastIndex = list.size() - 1; return li原创 2017-09-07 15:49:21 · 185 阅读 · 0 评论 -
JAVA并发编程1
1.java监视器模式 public class PrivateLock{ private final Object obj = new Object(); Widget widget; void someMethod(){ synchronized(obj ){ //访问或者修改widge原创 2017-09-07 15:15:28 · 177 阅读 · 0 评论 -
OLAP与OLTP系统
OLTP与OLAP的介绍数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。转载 2017-09-14 17:38:37 · 601 阅读 · 0 评论 -
Head First设计模式笔记(工厂方法模式)
工厂方法模式:通过让子类决定该创建的对象是什么,来达到将对象创建的过程封装的目的。工厂方法让类把实例化推迟到子类 抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类 1.Pizza类package com.TWO;import java.util.ArrayList;import java.util.List;public abstract class Pizza原创 2017-07-10 14:53:15 · 199 阅读 · 0 评论 -
主线程等待子线程全部执行完成
实例代码import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.TimeUnit;public class Demo { public static v原创 2017-07-03 17:53:03 · 328 阅读 · 0 评论 -
Head First设计模式笔记(设配器模式)
设配器模式:将一个类的接口,转换成客户期望的另一个接口,设配器让原来接口不兼容的类可以合作无间 火鸡接口public interface Turkey { void gobble(); void fly();}具体的火鸡public class WildTurkey implements Turkey{ @Override public void gobble()原创 2017-07-12 17:55:50 · 182 阅读 · 0 评论 -
cas
cas的原理简单代码描述import java.util.ArrayList;import java.util.LinkedHashMap;import java.util.List;import java.util.concurrent.atomic.AtomicInteger;public class Counter { private AtomicInteger atomicI原创 2017-06-06 21:55:00 · 211 阅读 · 0 评论 -
测试串行与并行的运行速度
直接上代码 private static final long count = 10000000; public static void main(String[] args) throws InterruptedException { concurrency(); serial(); } private static void conc原创 2017-06-06 21:49:49 · 617 阅读 · 0 评论 -
Callable和Future
Callable启动线程,它可以有返回值,可以通过future.get()方法来获取线程的执行结果public static void main(String[] args){ Callable<Integer> callable = new Callable<Integer>() { public Integer call() throws Exceptio原创 2017-06-06 21:42:25 · 181 阅读 · 0 评论 -
java 去重
import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.util.HashSet;import java.util.Set;public class JavaFile {原创 2017-06-06 21:25:12 · 241 阅读 · 0 评论 -
java的内存分配
java将内存控制的权利交给了jvm,自己不用去分配与释放内存,但是内存一旦出现问题,如果你不了解虚拟机是怎么使用内存的,排查错误将会成为一项异常艰难的工作,因此我们要学习java的内存管理机制 程序计数器 在多线程下每一个线程都有一个程序计数器,我将它看做是一个按照顺序排列的一堆命令的集合java虚拟机栈 与程序计数器一样,也是线程私有的,存放基本类型与对象的引用的区域原创 2017-05-06 15:38:06 · 269 阅读 · 0 评论 -
深入理解sping AOP
深入理解spring的AOP关键名词 1.横切关注点 散落于应用中多处的功能 2.切面 将横切关注点模块化为特殊的类,这个类被称为切面 3.通知:切面的工作被称为通知前置通知(before):在目标方法被调用之前调用通知功能后置通知(after):在目标方法完成之后调用通知,此时不会关心方法的输出是什么返回通知(after-returning):在目标原创 2017-05-05 19:35:07 · 251 阅读 · 0 评论 -
面向切面编程
面向切面编程定义 AOP(aspect-oriented-programming)是将遍布在应用各处的功能分离 形成可重用的组件,使得软件系统实现关注点(诸如日志,事务管理,安全)分离的一项技术 不用AOP的系统架构就像是如下 其中日志模板,安全模块,事务模块都杂合到业务模块中,导致系统繁杂,后期不好维护,不好扩展 AOP净化了业务模块,并以声明的方式将其运用到需要它的模块上,使得处理原创 2017-05-04 19:55:43 · 327 阅读 · 0 评论 -
spring装配bean的三种方式
spring装配bean的三种方式在xml中进行显示配置 <bean id = "" class = "..."/>在java中进行显示配置 @bean隐式的bean发现机制和自动装配 a.组件扫描 组件注释常见的包括:@Component @Service @Repository @Controller<context:compone原创 2017-05-04 21:11:43 · 461 阅读 · 0 评论 -
spring中bean的作用域
单例(singleton):在整个应用中,只创建bean的一个实例 <bean id = "" class = "" scope = "singleton">原型(Prototype):每次注入或者通过spring应用上下文获取的时候,都会创建一个新的bean实例 <bean id = "" class = "" scope = "prototype">会话(session):在原创 2017-05-04 21:34:48 · 1020 阅读 · 0 评论 -
守护线程
守护线程的演示例子public class Daemon { public static void main(String[] args) { Thread thread = new Thread(new DaemonRunner(),"DaemonRunner"); thread.setDaemon(true); thread.start();原创 2017-06-06 21:57:39 · 198 阅读 · 0 评论 -
死锁
死锁的代码演示public class DeadLockDemo { private static String A = "A"; private static String B = "B"; public static void main(String[] args) { new DeadLockDemo().deadLock(); } priva原创 2017-06-06 21:59:01 · 196 阅读 · 0 评论 -
Head First设计模式笔记(命令模式)
命令模式:将“请求”封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象,命令模式来支持可撤销的操作命令接口//命令接口public interface Command { void execute();}对象灯public class Light { public void on(){ System.out.println("light on");原创 2017-07-12 16:24:06 · 174 阅读 · 0 评论 -
事务注释@Transactional
1.类加载机制:虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的java类型原创 2017-06-22 20:32:14 · 449 阅读 · 0 评论 -
xml文件的解析
应用程序开发过程中,不是直接对XML文档进行操作的,而是首先由XML分析器对xml文档进行分析,而应用程序对分析器分析的结果进行操作,从而间接地实现对xml文档的访问 1.DOM解析 将整个xml文件的内容都读入到内存中,可以对xml文件进行随机访问,使用简单,但是dom解析必须一次性解析完整个文档,内存占用高,特别是对于大文档来说 2.sax解析 不用将xml文件中的全部内原创 2017-07-11 18:06:47 · 251 阅读 · 0 评论 -
RMI
代码演示 服务端代码import java.rmi.Remote;import java.rmi.RemoteException;public interface IHello extends Remote{ public String helloworld() throws RemoteException; public String sayHelloToSomeBoy(Strin原创 2017-06-06 22:30:07 · 167 阅读 · 0 评论 -
Wait与Notify
import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.TimeUnit;import com.afan.util.SleeepUtils;public class WaitNotify { static boolean flag = true; static Object原创 2017-06-06 22:24:50 · 172 阅读 · 0 评论 -
thread的状态
jvisualvm监控线程的几种状态import com.afan.util.SleeepUtils;public class ThreadState { public static void main(String[] args){ new Thread(new TimeWaiting(),"TimeWaitingThread").start(); new T原创 2017-06-06 22:23:06 · 254 阅读 · 0 评论 -
获取java中jvm启动的线程信息
获取JVM中执行的线程信息import java.lang.management.ManagementFactory;import java.lang.management.ThreadInfo;import java.lang.management.ThreadMXBean;public class MultiThread { public static void main(String原创 2017-06-06 22:16:45 · 2211 阅读 · 0 评论 -
线程中的join方法
import java.util.concurrent.TimeUnit;public class Join { public static void main(String[] args) throws InterruptedException { Thread previous = Thread.currentThread(); for(int i = 0;原创 2017-06-06 22:13:35 · 230 阅读 · 0 评论