自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

转载 Java读取property文件

public static Properties loadProps(String fileName) { Properties properties = null; InputStream inputStream = null; try { inputStream = Thread.curre...

2019-09-01 17:01:00 143

转载 ThreadPoolExecutor参数

参数明细查看大图ThreadPoolExecutor执行顺序: 线程池按以下行为执行任务当线程数小于核心线程数时,创建线程。当线程数大于等于核心线程数,且任务队列未满时,将任务放入任务队列。当线程数大于等于核心线程数,且任务队列已满若线程数小于最大线程数,创建线程若线程数等于最大线程数,抛出异常,拒绝任务设置参数...

2019-08-19 23:22:00 425

转载 Java线程池

线程池的好处线程池主要处理流程线程池的创建使用ThreadPoolExecutor来创建,专门写一篇介绍。线程池的配置在《Java Concurrency in Practice》一书中,给出了估算线程池大小的公式:  Nthreads=NcpuxUcpux (1 +W/C),其中  Ncpu=CPU核心数  Ucpu=CP...

2019-08-18 21:25:00 153

转载 用java多线程模拟数据库连接池

模拟一个ConnectionDriver,用于创建Connectionpackage tread.demo.threadpool;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import jav...

2019-08-18 20:15:00 273

转载 一个靠谱的maven仓库镜像地址

<mirror> <id>sprintio</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name><url>https://repo.spring.io/libs-sna...

2016-08-21 22:53:00 179

转载 Tomcat && Servlet(1)

一、概述为了让web服务器和web应用程序进行访问交互,servlet是这个交互的标准接口,web服务器必须符合servlet标准,web应用应该实现servlet接口。tomcat是一个符合servlet标准的servlet容器。如下图所示。二、tomcat作为servlet容器的基本功能Tomcat作为运行Servlet的容器,其基本功能是负责接收和解析来自客户的...

2016-08-21 18:15:00 90

转载 Eclipse自动生成 get/set

步骤一:在声明的数据域中按Ctrl+1: 步骤二:点击最后一个选项Create getter and setter,在弹出的对话框中点击确定: 在介绍另外一个方法: 步骤一:声明完类的数据域之后,输入set,按住Alt+/: 步骤二:同...

2016-04-29 23:03:00 78

转载 Six Basic Functional Areas of Spring

转载于:https://www.cnblogs.com/Brake/p/5440738.html

2016-04-27 22:35:00 91

转载 No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

选择当前使用的jdk版本。 然后alt+F5 更新maven project。再次buildOK。 转载于:https://www.cnblogs.com/Brake/p/5440728.html

2016-04-27 22:33:00 81

转载 Eclipse 进入前选择Workspace

如果选择了默认的Workspace会有一个问题。 打开一个workspace的时候,再次打开eclipse会报错,提示当前workspace正在被使用,然后让选择workspace。 最好的方法是每次打开都让选择要进入的workspace,这样就避免报错。 下图,选择Prompt选项。 转载于:https://...

2016-04-26 23:50:00 449

转载 抽象类和接口的区别、使用和选择

不谈抽象类可以有实现等语法糖的问题,本文主要讲在语义层面抽象类和接口的本质区别、以及使用以及选择。一、介绍抽象类,首先是个类,类是对现实世界中对象的建模模型,抽象类是对类整体的抽象描述,包含方法,以及属性。接口是对类某特性行为的抽象。对抽象类的继承才是Is-A的关系,对接口的实现,则是“有没有”的关系。比如鸟和飞机都有飞行这个特性,这个时候可以把飞行这个特性设计为接口:IF...

2016-04-02 23:05:00 143

转载 代码大全-继承

继承是Is-A的关系。曾经看到有人为了复用而使用了继承:有一个Base类,里面写了很多Common的方法,很多类继承自这个类,这种做饭就是把Has-A用Is-A来实现的。继承的概念是说一个类是另一个类的特化。Liskov替换原则:派生类必须能够通过基类的接口而被使用,且使用者无需了解两者之间的差异。该原则感觉下来是为了保证继承的语义没有变,这样便可以控制继承的复杂度。针对继承...

2016-04-02 21:54:00 114

转载 代码大全-良好的类接口

类的接口分为两部分良好的抽象(Good Abstraction)良好的封装(Good Encapsulation)一、良好的抽象  类的接口应该展现一致的抽象层次。每一个类应该实现一个ADT,并且仅仅实现这个ADT。  一定要理解类所实现的抽象是什么。理解对应的ADT。  提供成对的服务,比如Add、Delete。On、Off等。不要盲目创建相反的操作,但...

2016-03-28 09:17:00 207

转载 Java 虚拟机-垃圾收集算法

本文主要介绍Java虚拟机的垃圾回收算法。一、概述二、标记-清除算法Mark-Sweep。如同名字,该算法分两步:标记:标记处需要回收的对象清除:标记完成后统一回收被标记的对象。缺点:效率问题:标记和清除的效率都不高空间问题:标记清除以后会产生大量不连续的内存碎片三、复制算法复制算法是对标记清除的优化,它将堆上的内存分为两个大小...

2016-01-21 23:59:00 75

转载 Java 虚拟机-Java内存区域

简要介绍Java的内存区域:运行时数据区域HotSpot虚拟机对象一、概览二、运行时数据区域2.1 程序计数器Program Counter Register,代表当前线程所执行的字节码的行号指示器,操作系统中的PC,这两个是一个概念。执行时就是通过改变这个计数器来选取下一条需要执行的字节码指令。Java支持多线程,所以每个线程有自己独享的PC,类似于...

2016-01-19 23:39:00 115

转载 Operating System-进程/线程内部通信-管程(Monitor)介绍,实现以及应用

本文主要内容:管程(Monitor)介绍管程实现管程应用一、管程(Monitor)介绍1.1 管程前一篇文章介绍了信号量以及使用,信号量已经提供了一个方便且高效的进程同步机制,但是信号量有个缺点就是每次都需要程序员专门的去调用PV操作,如果程序员由于大意调用错了PV操作,比如该调用P操作的时候却调用了V操作,该针对X信号量调用P操作,却对Y信号量调用了P操...

2016-01-02 23:26:00 209

转载 Operating System-进程/线程内部通信-信号量、PV操作的实现和应用(解决哲学家进餐和生产者消费者问题)...

本文主要内容:信号量的实现利用信号量解决哲学家用餐问题利用信号量解决生产者消费者问题一、信号量的实现1.1 信号量结构typedef struct{ int value; struct process * list} semaphore;value代表当前信号量可以使用的数量,list代表当前信号量上所等待的进程。...

2015-12-30 21:17:00 221

转载 Operating System-进程/线程内部通信-信号量和PV操作

本文介绍操作系统进程管理的两个核心概念:信号量PV操作一、信号量介绍1.1 信号量引入信号量(Semaphore)1965年由Dijkstra引入的。信号量一般由一个值是一个变量,其值有可能是0,或者一个正数,或者是负数:0表示没有资源可以使用大于0,标识可用资源的数量小于0,其绝对值表示等待这个资源的进程的个数针对信号量,Dijkst...

2015-12-21 22:42:00 137

转载 Operating System-进程间互斥的问题-生产者&&消费者引入

之前介绍的几种解决进程间互斥的方案,不管是Peterson方案还是TSL指令的方式,都有一个特点:当一个进程被Block到临界区外面时,被Block的进程会一直处于忙等待的状态,这个不但浪费了CPU资源,还会有一个很坏的副作用。假设两个进程,H,L,H的优先级高,L进程的优先级非常低,CPU的调度规则是只要H处于Ready状态,则开始运行H,问题来了:H处于BLock状态,可能在...

2015-12-17 21:35:00 84

转载 Operating System-进程间互斥的方案-保证同一时间只有一个进程进入临界区(3)- TSL指令...

本文接上一篇文章继续介绍如何实现同一时间只允许一个进程进入临界区的机制。本文主要介绍TSL指令。方案汇总屏蔽中断锁变量严格轮换法TSL指令Peterson解法一、What is TSLTSL是Test and Set Lock的缩写。要实现TSL需要硬件的支持。硬件指令:TSL RX, LOCK该指令所做的事情...

2015-12-16 21:47:00 1679

转载 Operating System-进程间互斥的方案-保证同一时间只有一个进程进入临界区(2)- Peterson解法...

本文接上一篇文章继续介绍如何实现同一时间只允许一个进程进入临界区的机制。本文主要介绍Peterson解法。方案汇总屏蔽中断锁变量严格轮换法TSL指令Peterson解法一、Peterson解法基于锁变量以及严格轮换的方法1981年,有位叫Peterson的大师提供了一个更加简单的方法来解决进程间互斥。代码#define N 2 //进程...

2015-12-11 20:47:00 437

转载 Operating System-进程间互斥的方案-保证同一时间只有一个进程进入临界区(1)- 屏蔽中断,锁变量,严格轮换法...

上上篇文章提出了进程件的竞争条件,上一篇文章提出了临界区的概念,通过同一时间只允许一个进程进入临界区的机制从而避免了进程间的竞争条件,本文接上一篇文章主要介绍如何实现同一时间只允许一个进程进入临界区的机制。方案汇总屏蔽中断锁变量严格轮换法Peterson解法TSL指令一、屏蔽中断1.1 介绍在单CPU的系统中可以通过屏蔽中断达到进程间的互斥:当...

2015-12-10 21:57:00 1028

转载 Operating System-进程/线程内部通信-临界区(Critical Regions)

上一篇文章讲述了进程之间的竞争条件:多个进程同时进入一个共享区域,导致了数据的不一致,本文主要介绍如何解决这个问题。一、临界区介绍解决这个问题就是阻止多个进程同时进入这个共享区域,换句话说,进程之间针对这块共享区域需要排他(Mutual Exclusion)。问题的根源是进程B在进程A没有从共享区域返回之前就进入了共享区域。在大部分情况下两个进程之间是不会共享变量的,只会有一...

2015-12-09 21:06:00 301

转载 Operating System-进程/线程内部通信-竞争条件(Race Conditions)

从本文开始介绍进程间的通信,进程间通信遇到的问题以及方式其实和线程之间通信是一致的,所以进程间通信的所有理论知识都可以用在线程上,接下来的系列文章都会以进程之间的通信为模版进行介绍,本文主要内容:进程间通信简介(IPC)进程间的竞争条件(Race Conditions)一、进程间通信简介InterProcess Communication(IPC)。进程间通信主要...

2015-12-08 21:23:00 132

转载 Operating System-Thread(5)弹出式线程&&使单线程代码多线程化会产生那些问题

本文主要内容弹出式线程(Pop-up threads)使单线程代码多线程化会产生那些问题一、弹出式线程(Pop-up threads)以在一个http到达之后一个Service的处理为例子来介绍弹出式线程。上面的例子中传统的做法有可能是在Service中有一个线程一直在等待request的到达,等request到达后这个线程会开始检查请求最后在进行处理。当这个...

2015-12-06 17:24:00 275

转载 Operating System-Thread(4) 线程的调度激活机制(Scheduler Activations)

本文主要介绍线程的调度激活机制(Scheduler Activations),主要内容:调度激活机制简介上行调用(upcall)中断处理(Interrupt)一、调度激活机制简介上一篇文章详细阐述了用户空间和内核空间的线程实现,各有优劣,内核线程在各方面都比较灵活,但是太慢,性能不高,经常会出现请求在用户空间和内核空间的传递。那么如何在拥有内核空间线程的灵...

2015-12-03 22:52:00 733

转载 Operating System-Thread(3)用户空间和内核空间实现线程

本文主要内容:操作系统用户空间和内核空间简介在用户空间实现线程在内核空间实现线程用户空间和内核空间线程混合使用一、用户空间和内核空间简介用户空间:User space,内核空间:Kernel Space。这两个是操作系统的重要概念之一,今天为了线程做一下简单的介绍:内核空间用于运行操作系统核心组件,比如内存管理组件,IO交互组件,文件管理、中断管理...

2015-12-02 21:28:00 193

转载 Operating System-Thread(2) Multi-Process-Parallel vs Multi-Thread-Parallel

本文主要介绍线程的模型一、Multi-Process-Parallel vs Multi-Thread-Parallel多进程的并行:CPU在多个进程之间进行切换,系统给人一种多个进程在并行执行的假象。多线程的并行:CPU在多个线程之间进行切换,系统给人一种多个线程在并行执行的假象。进程是资源分配的基本单元,线程是CPU执行的基本单元。二、进程和线程所独占的资源...

2015-11-26 21:33:00 116

转载 Operating System-Thread(1)What and Why Thread &&进程和线程的对比

开始线程(Thread)之旅,作为程序员,打交道更多的是线程,各种多线程程序,并行编程都是以线程为基础进行的。本文主要内容:What and Why Thread进程和线程的对比一、What and Why Thread1.1 What线程是进程内部的执行单元,进程作为运行程序的实例用于把资源整个在一起,线程属于进程,线程作为在CPU上执行的实体而存在,CPU...

2015-11-25 21:57:00 97

转载 Operating System-Process(2)进程表&&中断处理

上一篇文章阐述了进程的基本信息,本文主要介绍进程的实现,主要内容:进程表(Process Table or Process Control Blocks)中断处理(Interrupt)一、进程表操作系统以数组的形式维护了一个进程表,每个进程有一个入口,示意图如下图所示。针对每一个进程,进程表中保存着进程的状态、程序计数器(PC)、指向栈的指针、进程对应内存的地址等...

2015-11-24 21:35:00 137

转载 Operating System-Process(1)什么是进程&&进程的创建(Creation)&&进程的终止(Termination)&&进程的状态(State)...

本文阐述操作系统的核心概念之一:进程(Process),主要内容:什么是进程进程的创建(Creation)进程的终止(Termination)进程的状态(State)一、什么是进程1.1 基本信息进程是执行程序的一个实例,是对正在运行的程序的抽象(Abstraction),包含当前运行程序的所有程序计数器(PC),寄存器以及变量:程序运行所需要的指令和...

2015-11-23 21:26:00 265

转载 Operating System-Kickoff:什么是操作系统&&操作系统的核心概念

接下来会写一系列Operating System(操作系统)的文章,今天先开个头。本文主要内容:什么是操作系统操作系统的核心概念程序=数据结构+算法一、什么是操作系统1.1 操作系统是对硬件的抽象(abstracion)操作系统的重要功能之一就是隐藏硬件,且把硬件的功能用漂亮高度抽象的接口展露个应用程序。OS在整个计算机系统中的位置如上图所示。...

2015-11-15 16:49:00 150

转载 Parallel Programming-多消费者,多生产者同时运行并行

在上一篇文章演示了并行的流水线操作(生产者和消费者并行同时执行),C#是通过BlockingCollection这个线程安全的对象作为Buffer,并且结合Task来实现的。但是上一篇文章有个缺陷,在整个流水线上,生产者和消费者是唯一的。本文将演示多个消费者多个生产者同时并行执行。一、多消费者、多生产者示意图与前一篇文章演示的流水线思想类似,不同之处就是本文的topic:消...

2015-11-14 11:59:00 262

转载 Parallel Programming-实现并行操作的流水线(生产者、消费者)

本文介绍如何使用C#实现并行执行的流水线(生产者消费者):流水线示意图实现并行流水线一、流水线示意图上图演示了流水线,action1接收input,然后产生结果保存在buffer1中,action2读取buffer1中由action1产生的数据,以此类推指导action4完成产生Output。以上也是典型的生产者消费者模式。上面的模式如果使用普通...

2015-11-13 23:14:00 363

转载 Parallel Programming-Concurrent Collections

备忘:asp.net平台下线程安全集合类。ClassDescriptionBlockingCollection<T>Provides blocking and bounding capabilities for thread-safe collections that implement IProducerConsumerColle...

2015-11-12 21:38:00 77

转载 Parallel Programming-Task Result && Continuation Task

本文主要介绍带有返回值的Task和Continuation Task带返回值的TaskContinuation TaskContinueWhenAll即多任务延续一、带返回值的Task1.1代码演示前一篇博客介绍了Task,主要是没有返回值的Task。本文所介绍的带有返回值的Task,返回值通过task.Result进行读取。 class Tas...

2015-11-11 23:32:00 241

转载 Parallel Programming-Task Base

Parallel.For/ForEach是数据层面的并行,本文所讲的Task是将不同的操作并行执行,本文主要内容:Task的工作模型初始化Task完成Task取消Task一、Task工作模型.Net中Task的工作模式是Fork/Join或者Master/Worker模式。核心思想是Master负责接受Client的请求,并且负责将请求分配给最终的Wrok...

2015-11-09 22:48:00 79

转载 Parallel Programming-Paralle.For && ForEach

本文主要介绍Parallel.For以及Parallel.ForEach。Parallel.For是普通步长为1的for循环的并行代替方案。Parallel.ForEach是以集合为基准进行循环的foreach的并行代替方案。主要以下内容:使用例子如何退出并行循环Break、Stop详细介绍Partitioner一、Parallel.For1.1 使用例子...

2015-11-07 23:30:00 132

转载 Parallel Programming-Parallel.Invoke

本文主要介绍Parallel.Invoke的使用。一、使用例子 class ParallelInvoke { public void Action1() { Thread.Sleep(3000); Console.WriteLine("in action1"); ...

2015-11-05 23:50:00 92

转载 Parallel Programming-使用CancellationTokenSource调度并行运行的Task

本文主要介绍使用CancellationTokenSource调度并行运行的Task。一、使用场景有多个Task并行运行时,如果其中一个Task所运行的程序出现异常,我们想马上终止所有待执行的Task。这样对系统的性能等各个方面都是有好处的。二、源码2.1 被多线程执行的代码 public class Handler { publi...

2015-11-03 22:06:00 128

空空如也

空空如也

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

TA关注的人

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