自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (1)
  • 收藏
  • 关注

原创 spring:《spring实战》读后感一

1.spring所做的一切都是为了简化java开发。2.为了降低java开发的复杂性,spring采取了以下4种关键策略: 1).基于POJO的轻量级和最小侵入性编程. 2).通过依赖注入和面向接口实现松耦合. 3).基于切面和惯例进行声明式编程. 4).通过切面和模板减少样板式代码.3. Spring通过应用上下文(Application Cont...

2019-12-31 16:15:10 418

原创 数据结构: 排序算法介绍

算法的时间复杂度: 常数阶对数阶线性阶线性对数阶平方阶

2019-12-28 22:43:00 188

原创 设计模式:迭代器模式(Iterator Pattern)

迭代器模式(Iterator Pattern): 属于行为型模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即: 不暴露其内部结构。...

2019-12-28 16:17:22 253

原创 设计模式:访问者模式(Visitor Pattern)

访问者模式(Visitor Pattern): 封装一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 主要将数据结构与数据操作分离,解决数据结构和操作耦合性问题。 访问者模式的基本工作原理: 在被访问的类里面加一个对外提供接待访问者的接口。public abstract class Action { publi...

2019-12-28 14:44:33 196

原创 数据结构:回溯--解决八皇后问题

public class Queue8 { int max = 8; int count = 1; // 定义数组,保存皇后放置位置的结果,比如arr = {0,4,7,5,2,6,1,3} int[] arr = new int[max]; public static void main(String[] args) { Que...

2019-12-27 23:31:45 215

原创 设计模式:命令模式(Command Pattern)

命令模式(Command Pattern): 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接受者是谁,也不知道请求的操作是哪个。 我们只需在程序运行时指定具体的请求接受者即可,此时,可以使用命令模式来进行设计。 命令模式在spring框架的JdbcTemplate中有应用。 通俗易懂的理解, 将军发布命令,士兵去执行。其中有几个角色,将军(命令...

2019-12-26 16:09:24 252

原创 设计模式:模板方法(Template Method Pattern)

模板方法模式: 在一个抽象类公开定义了执行它的方法的模板,它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。 属于行为型模式。 spring ioc容器初始化时运用到模板方法模式。// 抽象类,表示豆浆public abstract class SoyMilk { // 模板方法可以做成final,不让子类覆盖 final void make(){...

2019-12-26 09:39:08 195

原创 设计模式:代理模式(Proxy)

1. 代理模式: 为一个对象提供一个替身,以控制对这个对象的访问,即通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。2. 被代理的对象可以是远程对象,创建开销大的对象或需要安全控制的对象。3. 代理模式有不同的形式,主要有三种: 静态代理,动态代理(JDK代理,或者接口代理)和cglib代理。静态代理 ...

2019-12-25 14:43:00 221

原创 设计模式:享元模式(Flyweight Pattern)

1。享元模式:也叫蝇量模式,运行共享技术有效的支持大量细粒度的对象。 2。享元模式常用于系统底层开发,解决系统的性能问题。比如数据库连接池,里面都是创建好的连接对象。 3。享元模式能够解决重复对象的内存浪费问题,当系统中有大量相似对象,需要缓冲池时,不需总是创建新对象,可以从缓冲池里拿。这样可以降低系统内存,同时提高效率。 4。享元模式经典的应用场景就是池技术。S...

2019-12-20 16:49:28 278

原创 设计模式:外观模式(Facade)

外观模式(Facade)也叫过程模式, 外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节。 外观类(Facade): 为调用端提供统一的调用接口,外观类知道哪些子系统负责处理请求,从...

2019-12-20 10:17:09 243

原创 设计模式:组合模式(Composite Pattern)

组合模式: 又叫部分整体模式, 它创建了对象组的树形结构,将对象组合成树状结构以表示"整体-部分"的层次关系。 JDK中的HashMap就使用了组合模式public abstract class OrganizationComponent { private String name; // 名字 private String desc; // 说明 public...

2019-12-19 10:35:11 227

原创 设计模式:装饰者模式(Decorator)

装饰者模式: 动态的将新功能附加到对象上, 在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(OCP).java的IO结构,FileInputStream就是一个装饰者public abstract class Drink { public String desc; // 描述 private float price = 0.0f; public S...

2019-12-18 10:10:22 187

原创 设计模式:桥接模式(Bridge)

桥接模式: 将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。public abstract class Phone { private Brand brand; public Phone(Brand brand){ this.brand = brand; } public void open() { this.brand.open(); }...

2019-12-17 14:08:36 204

原创 netty:NIO模型--选择器(Selector)

1. java的NIO,用非阻塞的IO方式,可以用一个线程,处理多个的客户连接,就会使用到Selector(选择器).2. Selector能够检测多个注册的通道上是否有事件发生(注意: 多个Channel以事件的方式可以注册到同一个Selector)。3. 只有在 连接/通道 真正有读写事件发生时,才会进行读写,就大大地减少了系统开销,并且不必为每个连接都创建一个线程,不用去维护多...

2019-12-16 10:30:45 591

原创 netty:IO模型

BIO,NIO模型

2019-12-10 22:39:11 417

原创 线程:线程的状态

状态NEW, RUNNABLE, TERMINATED new: 线程实例化后,还从未执行start()方法时的状态。 runnable: 线程进入运行的状态。 terminated: 线程被销毁时的状态。public class MyThread extends Thread{ public MyThread(){ System.out.prin...

2019-12-10 09:54:08 195

原创 线程:Timer定时器

定时/计划功能主要使用的就是Timer对象,它在内部还是使用多线程的方式进行处理,所以它和线程技术还是有非常大的关联。Timer类主要作用就是设置计划任务,但封装任务的类却是TimerTask类。TimerTask类是一个抽象类。执行任务的时间晚于当前时间-----在未来执行的效果import java.util.Date;import java.util.TimerTa...

2019-12-09 10:40:44 401

原创 线程:ReentrantReadWriteLock类

ReentrantReadWriteLock类为读写锁。读写锁也有两个锁,一个是读操作相关的锁,称为共享锁;另一个是写操作相关的锁,也叫排他锁。也就是多个读锁之间不互斥,读锁与写锁互斥,写锁与写锁互斥。一个线程拥有了对象A的写锁,在释放写锁前其他线程无法获得A的读锁、写锁,因此其他线程此时无法读写;一个线程拥有了对象A的读锁,在释放前其他线程可以获得A的读锁但无法获得A的写锁,因...

2019-12-08 22:34:02 229

原创 线程: ReentrantLock类

使用ReentrantLock实现同步 ReentrantLock对象的lock()方法获取锁, 调用unlock()方法释放锁 调用ReentrantLock对象的lock()方法的线程就持有"对象监视器",其他线程只有等待锁被释放时再次争抢。效果和使用synchronized关键字一样。 关键字synchronized与wait()和notify()/notifyAll()...

2019-12-07 18:28:10 263

原创 线程:类ThreadLocal的使用

类ThreadLocal主要解决的就是每个线程绑定自己的值,可以将ThreadLocal类比喻成全局存放数据的盒子,盒子中可以存储每个线程的私有数据。 方法get()和nullpublic class Run { private static ThreadLocal tl = new ThreadLocal(); public static void main(...

2019-12-07 16:04:58 209

原创 线程:方法join的使用

方法join()的作用是等待线程对象销毁。 方法join()的作用是所属的线程对象x正常执行run()方法中的任务, 而使当前线程z进行无限期的阻塞,等待线程x销毁后再继续执行线程z后面的代码。public class MyThread extends Thread{ @Override public void run(){ try { int secondVal...

2019-12-05 16:41:26 242

原创 线程:等待/通知机制

方法wait() 方法wait()的作用是使当前执行代码的线程进行等待, wait()被执行后,锁被自动释放。wait()方法是Object类的方法,该方法用来将当前线程置入"预执行队列"中,并且在wait()所在的代码处停止执行,直到接到通知或被中断为止。 方法notify() 在执行完notify()方法后,当前线程不会马上释放该对象锁,呈wait状态的线程也并不能...

2019-12-04 09:35:55 223

原创 设计模式:策略模式

jdk中的比较器Comparator就使用到了策略模式

2019-12-02 22:43:02 174

原创 线程:volatile关键字

关键字volatile的作用是强制从公共堆栈中取得变量的值,而不是从线程私有数据栈中取得变量的值。 使用volatile关键字增加了实例变量在多个线程之间的可见性。但volatile关键字最致命的缺点是不支持原子性。 volatile解决的是变量在多个线程之间的可见性,而synchronized关键字解决的是多个线程之间访问资源的同步性。使用原子类进行i++操作im...

2019-12-02 10:46:32 227

《操作系统真相还原》读书笔记八:获取物理内存容量以及本书源代码

《操作系统真相还原》读书笔记八:获取物理内存容量以及本书源代码

2024-03-11

结构化思考,重塑自己的思考方式

结构化思考

2024-02-04

libfastcommon-master.zip

libfastcommon-master,安装fastdfs分布式文件存储系统.fastDFS 是以C语言开发的一项开源轻量级分布式文件系统,他对文件进行管理,主要功能有:文件存储,文件同步,文件访问(文件上传/下载),特别适合以文件为载体的在线服务,如图片网站,视频网站等

2020-06-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除