自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 死锁的三种形式:一般死锁,嵌套管程锁死,重入锁死

死锁的定义:死锁一般是指两个(或两个以上)线程同时竞争两个(或者多个)资源,从而产生同时等待的现象,使得系统僵持不动。顺便复习一下线程与进程的定义以及他们之间的区别。进程:一个有独立功能的程序利用某些数据资源的一次远行过程。线程:一个进程里面的一条执行路径(或者执行过程),同一条进程下的n多条线程之间可以互相通信(共享数据)。区别:进程是相对独立的单位, 进

2016-05-31 22:23:02 2111

转载 Java使用ThreadFactory来创建新的线程

首先来构建线程封装类WorkThread,该类的功能主要是为了能够更好的管理线程而创建的public class WorkThread extends Thread {       private Runnable target;   //线程执行目标     private AtomicInteger counter;         public Wor

2016-05-31 21:49:02 741

转载 Spring线程池开发实战

作者:chszs,转载需注明。作者博客主页:http://blog.csdn.net/chszs本文提供了三个Spring多线程开发的例子,由浅入深,由于例子一目了然,所以并未做过多的解释。诸位一看便知。前提条件:1)在Eclipse创建一个Java项目,我取名为SpringThreadDemo。2)项目所需的JAR包如图所示: 下面开始。注

2016-05-30 23:19:54 386

转载 ThreadPoolExecutor机制

ThreadPoolExecutor机制 一、概述 1、ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等等服务; 2、Executors方法提供的线程服务,都是通过参数设置来实现不同的线程池机制。 3、先来了解其线程池管理的机制,有助于正确使用,避免错误使用导致严重故障

2016-05-30 22:46:38 381

转载 中断线程详解

在JAVA中,曾经使用stop方法来停止线程,然而,该方法具有固有的不安全性,因而已经被抛弃(Deprecated)。那么应该怎么结束一个进程呢?官方文档中对此有详细说明:《为何不赞成使用 Thread.stop、Thread.suspend 和 Thread.resume?》。在此引用stop方法的说明:1. Why is Thread.stop deprecated?Bec

2016-05-28 23:06:59 1286

转载 Spring单实例、多线程安全、事务解析

引言:    在使用Spring时,很多人可能对Spring中为什么DAO和Service对象采用单实例方式很迷惑,这些读者是这么认为的:    DAO对象必须包含一个数据库的连接Connection,而这个Connection不是线程安全的,所以每个DAO都要包含一个不同的Connection对象实例,这样一来DAO对象就不能是单实例的了。    上述观点对了一半。对的是

2016-05-24 23:54:53 437

转载 带返回结果的批量任务执行 CompletionService ExecutorService.invokeAll

一般情况下,我们使用Runnable作为基本的任务表示形式,但是Runnable是一种有很大局限的抽象,run方法中只能记录日志,打印,或者把数据汇总入某个容器(一方面内存消耗大,另一方面需要控制同步,效率很大的限制),总之不能返回执行的结果;比如同时1000个任务去网络上抓取数据,然后将抓取到的数据进行处理(处理方式不定),我觉得最好的方式就是提供回调接口,把处理的方式最为回调传进去;但是现在我

2016-05-22 23:03:57 561

转载 JDK并发工具包CompletionService和ExecutorCompletionService的好处和使用场景

《Java并发编程实践》一书6.3.5节CompletionService:Executor和BlockingQueue,有这样一段话:“如果向Executor提交了一组计算任务,并且希望在计算完成后获得结果,那么可以保留与每个任务关联的Future,然后反复使用get方法,同时将参数timeout指定为0,从而通过轮询来判断任务是否完成。这种方法虽然可行,但却有些繁琐。幸运的是,还有一种

2016-05-22 14:19:37 780

转载 使用CompletionService批处理任务

如果你向Executor提交了一个批处理任务,并且希望在它们完成后获得结果。为此你可以保存与每个任务相关联的Future,然后不断地调用timeout为零的get,来检验Future是否完成。这样做固然可以,但却相当乏味。幸运的是,还有一个更好的方法:完成服务(Completion service)。CompletionService整合了Executor和BlockingQueue的功能

2016-05-22 13:59:39 367

转载 Spring的事务管理多线程的困惑

由于Spring的事务管理器是通过线程相关的ThreadLocal来保存数据访问基础设施(也即Connection实例),再结合IoC和AOP实现高级声明式事务的功能,所以Spring的事务天然地和线程有着千丝万缕的联系。    我们知道Web容器本身就是多线程的,Web容器为一个HTTP请求创建一个独立的线程(实际上大多数Web容器采用共享线程池),所以由此请求所牵涉到的Spring容器中的

2016-05-21 23:30:15 10957 2

转载 wireshark使用教程

Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。与很多其他网络工具一样,Wireshark也使用pcap network library来进行封包捕捉。可破解局域网内QQ、邮箱、msn、账号等的密码。(在局域网广泛使用交换机的情况下,这个实际上现在已经不太可能了,而且QQ密码应该是无法通过简单的抓包能直接破解的,只要稍微

2016-05-21 23:11:59 702

转载 Spring 多数据源事务配置问题

在SpringSide 3 中,白衣提供的预先配置好的环境非常有利于用户进行快速开发,但是同时也会为扩展带来一些困难。最直接的例子就是关于在项目中使用多个数据源的问题,似乎 很难搞。在上一篇中,我探讨了SpringSide 3 中的数据访问层,在这一篇中,我立志要解决多数据源配置的难题,我的思路是这样的:第一步、测试能否配置多个DataSource第二步、测试能否配置多个Session

2016-05-19 00:14:15 1355

转载 spring实现动态数据源切换

一、前言    近期一项目A需实现数据同步到另一项目B数据库中,在不改变B项目的情况下,只好选择项目A中切换数据源,直接把数据写入项目B的数据库中。这种需求,在数据同步与定时任务中经常需要。    那么问题来了,该如何解决多数据源问题呢?不光是要配置多个数据源,还得能灵活动态的切换数据源。以spring+hibernate框架项目为例(引用:http://blog.csdn.net

2016-05-18 23:29:05 1524

转载 哪些方法不能实施Spring AOP事务

由于Spring事务管理是基于接口代理或动态字节码技术,通过AOP实施事务增强的。虽然Spring还支持AspectJ LTW在类加载期实施增强,但这种方法很少使用,所以我们不予关注。     对于基于接口动态代理的AOP事务增强来说,由于接口的方法都必然是public的,这就要求实现类的实现方法也必须是public的(不能是protected、private等),同时不能使用static的修

2016-05-18 09:47:36 5684

转载 Web应用中使用JavaMail发送邮件

现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件。邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息。今天我们也来实现一个这样的功能,用户注册成功之后,就将用户的注册信息以Email的形式发送到用户的注册邮箱当中,实现发送邮件功能就得借助于JavaMail了。一、搭建开发环境1.1、创建Web项目  

2016-05-17 13:50:51 692

转载 spring 数据连接泄漏

对于应用开发者来说,数据连接泄漏无疑是一个可怕的梦魇。只要你开发的应用存在数据连接泄漏的问题,应用程序最终都将因数据连接资源的耗尽而崩溃,甚至还可能引起数据库的崩溃。数据连接泄漏像一个黑洞那样让开发者避之唯恐不及。    Spring DAO对所有支持的数据访问技术框架都使用模板化技术进行了薄层的封装。只要你的程序都使用Spring DAO的模板(如JdbcTemplate、Hibernate

2016-05-16 21:43:59 402

转载 spring数据连接泄漏

对于应用开发者来说,数据连接泄漏无疑是一个可怕的梦魇。只要你开发的应用存在数据连接泄漏的问题,应用程序最终都将因数据连接资源的耗尽而崩溃,甚至还可能引起数据库的崩溃。数据连接泄漏像一个黑洞那样让开发者避之唯恐不及。    Spring DAO对所有支持的数据访问技术框架都使用模板化技术进行了薄层的封装。只要你的程序都使用Spring DAO的模板(如JdbcTemplate、Hibernate

2016-05-16 21:42:08 1719

转载 使用JavaMail创建邮件和发送邮件

一、RFC882文档简单说明  RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔。  邮件头包含的内容有:from字段   --用于指明发件人to字段       --用于指明收件人subject字段  --用于说明邮件主题cc字段      -- 抄送,将邮件发送给收件人的同时抄送给另一个

2016-05-15 22:25:31 398

转载 Redis Sentinel初体验

自Redis增加Sentinel集群工具以来,本博主就从未尝试过使用该工具。最近在调研目前主流的Redis集群部署方案,所以详细地看了一遍官方对于Sentinel的介绍并在自己的台式机上完成了三Redis实例+三Sentinel实例的部署,这里做一下简单的总结。    首先,下载安装Redis。目前随Redis 2.8发布的Sentinel版本被antirez称为Sentinel 2,是在

2016-05-14 23:03:43 418

转载 查看Redis信息和状态

以下内容复制自:http://redisdoc.com/server/info.htmlINFO [section]以一种易于解释(parse)且易于阅读的格式,返回关于 Redis 服务器的各种信息和统计数值。通过给定可选的参数 section ,可以让命令只返回某一部分的信息:server 部分记录了 Redis 服务器的信息,它包含以下域:

2016-05-14 01:15:18 5020

转载 Redis配置文件详解

# Redis 配置文件# 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写)## 1k => 1000 bytes# 1kb => 1024 bytes# 1m => 1000000 bytes# 1mb => 1024*1024 bytes# 1g => 1000000000 bytes#

2016-05-13 09:05:56 371

转载 Redis线程池及分布式

在大型的互联网网站中,单机的Redis往往是不支持大并发的,很多时候都需要分布式以及集群来降低服务器崩溃造成整个网站的停止运行,所以,Redis也是需要进行分布式以及集群去防范这种现象的发生。我们需要一些依赖:[html] view plain copy print?span style="white-space:pre"

2016-05-12 16:17:47 825

转载 邮件的发送与接收原理

一、 邮件开发涉及到的一些基本概念1.1、邮件服务器和电子邮箱  要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器。例如现在Internet很多提供邮件服务的厂商:sina、sohu、163等等他们都有自己的邮件服务器。  这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。  电子邮箱(E

2016-05-08 23:56:01 992

转载 JavaMail基础知识

1.       电子邮件相关协议:(1).SMTP简单邮件传输协议,定义了递送邮件的机制。我们将使用基于Java-Mail的程序与公司或者ISP的SMTP服务器进行通讯。这个SMTP服务器将邮件转发到接收者的SMTP服务器,直至最后被接收者通过POP或者IMAP协议获取。这并不需要SMTP服务器使用支持授权的邮件转发,但是却的确要注意SMTP服务器的正确设置(SMTP服务器的设置与Jav

2016-05-08 05:27:31 706

转载 redis高可用方案Sentinel配置

在最小配置:master、slave各一个节点的情况下,不管是master还是slave down掉一个,“完整的”读/写功能都将受影响,这在生产环境中显然不能接受。幸好redis提供了sentinel(哨兵)机制,通过sentinel模式启动redis后,自动监控master/slave的运行状态,基本原理是:心跳机制+投票裁决每个sentinel会向其它sentinal、master、

2016-05-08 02:30:38 1156

转载 注释驱动的 Spring cache 缓存介绍

概述Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如 EHCache 或者 OSCache),而是一个对缓存使用的抽象,通过在既有代码中添加少量它定义的各种 annotation,即能够达到缓存方法的返回对象的效果。Spring 的缓存技术还具备相当的灵活性,不仅能够使用 SpEL(Spring

2016-05-08 02:14:24 567

原创 java远程调用

1 编写服务端  服务端工程是RmiServer,接口如下,注意两点,一个是一定要继承Remote的父类,另外是远程调用的方法一定要抛出RemoteException的异常。package cn.server;import java.rmi.Remote;import java.rmi.RemoteException;public interface ITime

2016-05-07 10:49:30 550

转载 plsql查询数据显示为乱码解决方法

使用plsql查询数据显示为乱码:查看数据库编码: 通过网上搜索,发现需要设置环境变量,添加以下环境变量: LANG=zh_CN.GBK NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"    再次登录plsql查询,显示正常了!

2016-05-06 08:21:54 561

转载 spring事物传播特性

Spring事务机制主要包括声明式事务和编程式事务,此处侧重讲解声明式事务,编程式事务在实际开发中得不到广泛使用,仅供学习参考。Spring声明式事务让我们从复杂的事务处理中得到解脱。使得我们再也无需要去处理获得连接、关闭连接、事务提交和回滚等这些操作。再也无需要我们在与事务相关的方法中处理大量的try…catch…finally代码。我们在使用Spring声明式事务时,有一个非常重要的概

2016-05-03 21:25:45 518

转载 redis的aof持久化深入解析

Redis提供两种持久化方式,RDB和AOF;与RDB不同,AOF可以完整的记录整个数据库,而不像RDB只是数据库某一时刻的快照; 那么AOF模式为什么可以完整的记录整个数据库呢? 原理:在AOF模式下,Redis会把执行过的每一条更新命令记录下来,保存到AOF文件中;当Redis需要恢复数据库数据时,只需要从之前保存的AOF文件中依次读取命令,执行即可 eg.

2016-05-03 16:13:36 1956

转载 Java中的锁

锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂。因为锁(以及其它更高级的线程同步机制)是由synchronized同步块的方式实现的,所以我们还不能完全摆脱synchronized关键字(译者注:这说的是Java 5之前的情况)。自Java 5开始,java.util.concurrent.locks包中包含了一些锁的实现,

2016-05-03 14:26:25 377

转载 java内存模型

Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存模型。如果你想设计表现良好的并发程序,理解Java内存模型是非常重要的。Java内存模型规定了如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。原始的Java内存模型存在一些不足,

2016-05-03 11:54:47 306

转载 redis事务详解

Redis中的事务,提供了一种“将多个命令打包并且一次执行”的方式; 当用户输入MULTI命令时,就打开了客户端REDIS_MULTI选项,客户端从“非事务状态”切换到“事务状态”  之后客户端执行的所有命令都不会被Redis立即执行,而是放到客户端的“命令队列”里去(服务器返回QUEUED字样,表示命令已经入队),当客户端发出EXEC命令(表示客户端需要执行事务),这时候

2016-05-02 23:44:22 660

转载 java操作redis

基本功能测试  1、程序基本结构    2、主要类    1)功能类package com.redis;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Set;import redis.clients.je

2016-05-02 20:25:43 270

转载 redis主从复制深入解析

主从复制简单来说就是把一台redis数据库中的数据同步到另一台redis数据库,并且按照数据流向,数据的发送者我们称作master,数据的接受者我们称作slave(master/slave的划分并不是那么一定的,譬如B可以作为A的slave,但同时也可以作为C的master),下面就从slave和master的角度分别说明主从复制流程。 首先是slave端,对于slave端来说,主从复制主

2016-05-02 14:56:15 795

原创 sentinel监控主从服务器

1 启动三个redis,端口分别是6379,6380,6381,master是6379端口,slave分别是6380,6381端口2如果master机器redis服务器挂了。那么会导致整个redis系统都用不了。有两种方案,一种是手动把剩下的两个redis做主从,一个是自动把剩下的做主从。手动主从1 修改其中的一个redis为master,比如修改6380端口的redis为ma

2016-05-02 14:29:32 1039

原创 redis的aof方式持久化

Redis提供两种持久化方式,RDB和AOF;与RDB不同,AOF可以完整的记录整个数据库,而不像RDB只是数据库某一时刻的快照; 那么AOF模式为什么可以完整的记录整个数据库呢? 原理:在AOF模式下,Redis会把执行过的每一条更新命令记录下来,保存到AOF文件中;当Redis需要恢复数据库数据时,只需要从之前保存的AOF文件中依次读取命令,执行即可,如果aof和rdb同时存在,red

2016-05-02 11:12:27 604

转载 redis键过期

Redis可以为数据库中的每一个键关联一个过期时间,当到达指定时间后Redis就会把该键从数据库中删除redis 127.0.0.1:6379> setex name 5 diaocow   # 为键name设置5秒的过期时间  OK  redis 127.0.0.1:6379> 5 秒后...  redis 127.0.0.1:6379> get name   # 键

2016-05-02 01:32:39 1106

原创 redis的主从复制

集群的作用:1 主从备份,防止主机宕机2 读写分离,分担master的任务3 任务分离,如从服务器分担备份和计算工作。主从通信过程:1 slave需要同步的时候,slave会发起sync请求。2 master得到请求,会dump出rdb文件传给slave,slave拿到rdb文件塞到自己内存里面3如果在上述过程中,有新的命令过来,会缓冲在aof内

2016-05-01 22:08:12 436

转载 Redis主从复制

一、Redis的Replication:    这里首先需要说明的是,在Redis中配置Master-Slave模式真是太简单了。相信在阅读完这篇Blog之后你也可以轻松做到。这里我们还是先列出一些理论性的知识,后面给出实际操作的案例。    下面的列表清楚的解释了Redis Replication的特点和优势。    1). 同一个Master可以同步多个Slaves。

2016-05-01 21:29:59 328

空空如也

空空如也

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

TA关注的人

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