自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (6)
  • 问答 (5)
  • 收藏
  • 关注

原创 servlet中请求转发(forword)与重定向(sendredirect)的区别

servlet请求转发与重定向的区别:request.setAttribute("test","hello");request.getRequestDispacther("/test.jsp").forword(request,response); response.sendRedirect("test.jsp");一、显示结果:1、当用request.getRequestDi

2017-03-29 14:16:44 499

原创 使用Executors工厂类创建线程池

接口Executor仅仅是一种规范,是一种声明,是一种定义,并没有实现任何的功能,所以大多数的情况下,需要使用接口的实现类来完成指定的功能,比如ThreadPoolExecutor类就是Executor的实现类,但ThreadPoolExecutor在使用上并不是那么方便,在实例化时需要传入很多歌参数,还要考虑线程的并发数等与线程池运行效率有关的参数,所以官方建议使用Executors工程类来创建

2017-03-25 23:17:35 1492

原创 Executor接口介绍

在开发服务器端软件项目时,软件经常需要处理执行时间很短而数目却非常巨大的请求,如果为每一个请求创建一个新的线程,会导致性能上的瓶颈,因为线程对象的创建和销毁需要JVM频繁地进行处理,如果请求的执行时间很短,可能花在创建和销毁线程对象上的时间大于正真执行任务的时间,若这样,则系统性能大幅降低。在JDK5中提供了线程池的支持,主要的作用就是支持高并发的访问处理,并且可以将线程对象进行复用。核心原理

2017-03-25 20:05:44 576

转载 java序列化一定要应该注意的6个事项!

1、如果子类实现Serializable接口而父类未实现时,父类不会被序列化,但此时父类必须有个无参构造方法,否则会抛InvalidClassException异常。2、静态变量不会被序列化,那是类的“菜”,不是对象的。3、transient关键字修饰变量可以限制序列化。4、虚拟机是否允许反序列化,不仅取决于类路径和功能代码是否一致,一个非常重要的一点是两个类的序列化 ID

2017-03-21 12:43:51 793

原创 Exchanger的使用

类Exchanger的功能可以使2个线程之间传输数据,它比生产者/消费者模式使用的wait/notify要更加方便。所以本次将介绍此类在2个线程之间传递任意数据类型的数据,Exchanger类的使用与结构相当简单,主要的学习点就是exchange()方法。方法exchange()阻塞的特性类Exchanger中的exchange()方法具有阻塞的特色,也就是次方法被调用后等待其他线程来取数

2017-03-21 12:31:06 631

原创 Semaphore的使用之-多生产者-多消费者模式

本实验的目的不光是要实现生产者与消费者模式,还要限制生产者与消费者的数量,这样代码的复杂性就提高一些,但好在使用Semaphore类实现这个功能还是比较简单的。创建实验用的项目repastTest,类RepastService.java代码如下:

2017-03-21 00:05:30 1258

原创 Semaphore创建字符串池

类Semaphore可以有效地对并发执行任务的线程数量进行限制,这样功能可以应用在pool池技术中,可以设置同时访问pool池中数据的线程数量。本实验的功能是同时又若干个线程可以访问池中的数据,但同时只有一个线程可以获得数据,使用完毕后在放回池中。创建实验用的项目Semaphore_Pool_list,类ListPool.java代码如下:package com.yc.semephor

2017-03-20 00:04:48 416

原创 Semaphore的使用之-(多进路-多处理-多出路)和(多进路-单处理-多出路)

多进路-多处理-多出路本实现的目标是允许多个线程同时处理任务,更具体来讲,也就是每个线程都在处理自己的任务。创建实验用的项目Semaphore_MoreToOne_1,类Service.java代码如下:package com.yc.semephore_4_1;import java.util.concurrent.Semaphore;public class Service

2017-03-19 22:57:00 474

原创 Semaphore的使用之方法tryAcquire()的使用

无参方法tryAcquire()的作用是尝试的获得1个许可,如果获取不到则返回false,该方法通常与if语句结合使用,其具有无阻塞的特点。无阻塞的特点可以使线程不至于在同步处一直持续等待的状态,如果if语句判断不成立则线程会继续走slse语句,程序会继续向下运行。创建Java项目Semaphore_tryAcquire,MyService.java代码如下:package com.yc.

2017-03-19 22:20:07 20315 1

原创 Semaphore的使用之-公平与非公平信号量的测试

有些时候,获得许可的顺序与线程启动的顺序有关,这时信号量就要分为公平与非公平的。所谓的公平信号量是获得锁的顺序与线程启动顺序有关,但不代表100%地获得信号量,仅仅是在概率上能得到保证。而非公平信号量就是无关的了。创建测试用的项目semaphoreFairTest,类MyService.java代码如下:package com.yc.semephore_2;import java.

2017-03-19 21:06:04 1840

原创 类Semaphore的同步性

单词Semaphore的中文含义是信号、信号系统意思。此类的主要作用是限制线程并发的数量,如果不限制线程并发的数量。,则CPUD的资源很快就会被耗尽,每个线程执行的任务相当缓慢,因为CPU要把时间片分配给不同的线程对象,而且上下文切换也要耗时,最终造成系统运行效率大幅降低,所以限制并发线程的数量还是非常有必要的。在生活中也存在这种场景,比如一个生产键盘的生产商,发布了10个代理销售许可,所有最

2017-03-16 13:33:54 516

原创 为何stop()和suspend()方法不推荐使用

stop()方法作为一种粗暴的线程终止行为,在线程终止之前没有对其做任何的清除操作,因此具有固有的不安全性。 用Thread.stop()方法来终止线程将会释放该线程对象已经锁定的所有监视器。如果以前受这些监视器保护的任何对象都处于不连贯状态,那么损坏的对象对其他线程可见,这有可能导致不安全的操作。 由于上述原因,因此不应该使用stop()方法,而应该在自己的Thread类中置入一个标志,用于

2017-03-14 23:10:26 434

原创 线程的生命周期

1.线程的生命周期线程是一个动态执行的过程,它也有一个从产生到死亡的过程。(1)生命周期的五种状态   新建(new Thread)当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)。例如:Thread  t1=new Thread();就绪(runnable)线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正在就绪队列中

2017-03-14 22:59:03 356

转载 剖析为什么在多核多线程程序中要慎用volatile关键字?

主要内容有:1. C/C++中的volatile关键字2. Visual Studio对C/C++中volatile关键字的扩展3. Java/.NET中的volatile关键字4. Memory Model(内存模型)5. Volatile使用建议1. C/C++中的volatile关键字1.1 传统用途C/C++作为系统级语言,它们与硬件的联系是很紧

2017-03-14 22:21:40 1098

原创 并行编程中的“锁”难题

在并行程序中,锁的使用会主要会引发两类难题:一类是诸如死锁、活锁等引起的多线程Bug;另一类是由锁竞争引起的性能瓶颈。本文将介绍并行编程中因为锁引发的这两类难题及其解决方案。1. 用锁来防止数据竞跑在进行并行编程时,我们常常需要使用锁来保护共享变量,以防止多个线程同时对该变量进行更新时产生数据竞跑(Data Race)。所谓数据竞跑,是指当两个(或多个)线程同时对某个共享变量进行操

2017-03-14 22:19:24 612

原创 为什么程序员需要关心顺序一致性(Sequential Consistency)而不是Cache一致性(Cache Coherence?)

本文所讨论的计算机模型是Shared Memory Multiprocessor,即我们现在常见的共享内存的多核CPU。本文适合的对象是想用C++或者Java进行多线程编程的程序员。本文主要包括对Sequential Consistency和Cache Coherence的概念性介绍并给出了一些相关例子,目的是帮助程序员明白为什么需要在并行编程时关注Sequential Consistency。

2017-03-14 22:15:59 746

原创 多线程程序中操作的原子性

多线程程序中操作的原子性0. 背景原子操作就是不可再分的操作。在多线程程序中原子操作是一个非常重要的概念,它常常用来实现一些同步机制,同时也是一些常见的多线程Bug的源头。本文主要讨论了三个问题:1. 多线程程序中对变量的读写操作是否是原子的?2. 多线程程序中对Bit field(位域)的读写操作是否是线程安全的?3. 程序员该如何使用原子操作?1. 多线程环境下对变量的

2017-03-14 22:13:23 654

原创 设计模式-共享模式/享元模式(Flyweight模式)

Flyweight定义:避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类)。为什么使用共享模式/享元模式面向对象语言的原则就是一切都是对象,但是如果真正使用起来,有时对象数可能显得很庞大,比如,字处理软件,如果以每个文字都作为一个对象,几千个字,对象数就是几千,无疑耗费内存,那么我们还是要"求同存异",找出这些对象群的共同点,设计一个元类,封装可以被共享的类,

2017-03-01 23:35:13 554

wine-mono-4.5.6.msi

wine的mono插件镜像

2019-02-05

emacs-25-x86_64-deps.zip

emacs-25 的 deps.zip 是让windows支持更多的gnu库,比如使得org-mode可以显示png格式的图片等。

2018-06-20

ajax+zTree 文件树

zTree的js和css文件 + 可供参考的demo的fileCatalog.js文件

2018-04-18

win64_ssl_curl 插件

解压后进入curl.exe所在目录,然后打开命令行,输入 curl -V 可查看适用协议。由于要适用协议https,所有还得安装Win64-openSSL

2018-03-16

redis-trib.rb

redis集群工具redis-trib.rb

2017-05-05

Redis-x64-3.2.100.zip

该压缩包为windows64位操作系统下的redis

2017-05-05

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

TA关注的人

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