2019年1月31日

【Tomcat】Tomcat日志切割

摘要: 下载并解压缩 cronolog # tar zxvf cronolog-1.6.2.tar.gz 2、进入cronolog安装文件所在目录 # cd cronolog-1.6.2 3、运行安装 # ./configure # make # make install 4、查看cronolog安装后所在 阅读全文

posted @ 2019-01-31 17:28 我是司 阅读(296) 评论(0) 推荐(0)

【Tomcat】上线部署tomcat。常用命令

摘要: ps -ef | grep tomcat-web 【查询tomact进程】kill -9 pid 【结束tomcat进程】/opt/tomcat-web/bin/startup.sh 【启动tomcat】tail -800f /opt/tomcat-web/logs/catalina.out 【跟踪 阅读全文

posted @ 2019-01-31 17:20 我是司 阅读(338) 评论(0) 推荐(0)

【Tomcat】性能优化

摘要: 一、JVM优化 1、内存优化。 2、垃圾回收策略优化。 二、server.xml的connector优化(connector是与HTTP请求处理相关的容器,三个容器的初始化顺序为:Server->Service->Connector) (1)指定使用NIO模型来接受HTTP请求 (2)http co 阅读全文

posted @ 2019-01-31 17:19 我是司 阅读(364) 评论(0) 推荐(0)

tomcat 集群中 session 共享的三种方法

摘要: 前两种均需要使用 memcached 或 redis 存储 session ,最后一种使用 terracotta 服务器共享。 建议使用 redis ,不仅仅因为它可以将缓存的内容持久化,还因为它支持的单个对象比较大,而且数据类型丰富, 不只是缓存 session ,还可以做其他用途,一举几得啊。 阅读全文

posted @ 2019-01-31 17:10 我是司 阅读(1349) 评论(0) 推荐(0)

MyBatis的学习总结:调用存储过程【参考】

摘要: 一、创建存储过程 存储过程的目的:统计edi_test_task 正在运行的任务和非运行的任务 二、SQL映射文件 阅读全文

posted @ 2019-01-31 16:47 我是司 阅读(441) 评论(0) 推荐(0)

【Tomcat】部署Web到tomcat的四种方式

摘要: 一、静态部署 1、直接将web项目文件件拷贝到webapps 目录中 Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。所以可以将JSP程序打包成一个 war包放在目录下,服务器会自动解开这个war包,并在这个目录下生成一个同名的文件夹。一个w 阅读全文

posted @ 2019-01-31 16:40 我是司 阅读(2362) 评论(0) 推荐(0)

【Mysql】常用命令

摘要: 登录mysql -uroot -p 查看有哪些数据库show databases; 创建一个普通用户 sa ,密码是 some_passCREATE USER 'sa'@'%' IDENTIFIED BY 'some_pass'; 给这个用户授予 SELECT,INSERT,UPDATE,DELET 阅读全文

posted @ 2019-01-31 15:46 我是司 阅读(158) 评论(0) 推荐(0)

【Mysql】MySQL event 计划任务

摘要: 一、查看event是否开启 二、 -- 设置时区并设置计划事件调度器开启,也可以 event_scheduler = ONset time_zone = '+8:00';set GLOBAL event_scheduler = 1; -- 设置该事件使用或所属的数据库base数据库use test; 阅读全文

posted @ 2019-01-31 15:45 我是司 阅读(426) 评论(0) 推荐(0)

【mysql】service mysql start出错,mysql启动不了,解决mysql: unrecognized service错误

摘要: service MySQL start出错,mysql启动不了,解决mysql: unrecognized service错误的方法如下: [root@ctohome.com ~]# service mysql startmysql: unrecognized service[root@ctohom 阅读全文

posted @ 2019-01-31 15:41 我是司 阅读(4130) 评论(0) 推荐(0)

【Mysql】mysql乐观锁总结和实践

摘要: 乐观锁介绍: 乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让返回用户错误的信息,让用户决定如何去做。那么我们如何实现乐观锁呢,一般来说有以下2种方式: 阅读全文

posted @ 2019-01-31 15:40 我是司 阅读(374) 评论(0) 推荐(0)

Windows下MariaDB数据库安装图文教程

摘要: MariaDB是基于MySQL的开源数据库,兼容MySQL,现有的MySQL数据库可以迁移到MariaDB中使用 说明: MariaDB是基于MySQL的开源数据库,兼容MySQL,现有的MySQL数据库可以迁移到MariaDB中使用 MariaDB下载: 32位:http://mirrors.hu 阅读全文

posted @ 2019-01-31 15:25 我是司 阅读(7121) 评论(0) 推荐(0)

【mysql】连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案

摘要: 1. 增加 MySQL 的 wait_timeout 属性的值。 修改 /etc/mysql/my.cnf文件,在 [mysqld] 节中设置: # Set a connection to wait 8hours in idle status. wait_timeout =86400 将这2个参数设 阅读全文

posted @ 2019-01-31 15:08 我是司 阅读(849) 评论(0) 推荐(0)

代理(Proxy)

摘要: 一、代理的概念 动态代理技术是整个java技术中最重要的一个技术,它是学习java框架的基础,不会动态代理技术,那么在学习Spring这些框架时是学不明白的。 动态代理技术就是用来产生一个对象的代理对象的。在开发中为什么需要为一个对象产生代理对象呢? 举一个现实生活中的例子:歌星或者明星都有一个自己 阅读全文

posted @ 2019-01-31 14:55 我是司 阅读(596) 评论(0) 推荐(0)

Maven三种仓库的配置

摘要: 1 本地仓库的配置 在第一篇中我们介绍过,Maven的仓库有三类,这里不再介绍。 1、要创建本地仓库我们需要有相应的jar包文件,本人经过长时间的寻找和积累,已经有了一个jar包仓库,现将此jar包提供给大家使用。下载地址:http://pan.baidu.com/s/1jH77z2Q。 2、将下载 阅读全文

posted @ 2019-01-31 14:21 我是司 阅读(9992) 评论(0) 推荐(1)

Maven远程仓库的各种配置

摘要: 1.远程仓库的配置 在平时的开发中,我们往往不会使用默认的中央仓库,默认的中央仓库访问的速度比较慢,访问的人或许很多,有时候也无法满足我们项目的需求,可能项目需要的某些构件中央仓库中是没有的,而在其他远程仓库中有,如JBoss Maven仓库。这时,可以在pom.xml中配置该仓库,代码如下: re 阅读全文

posted @ 2019-01-31 13:52 我是司 阅读(10953) 评论(0) 推荐(2)

maven配置之:<distributionManagement>snapshot快照库和release发布库

摘要: 在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次。我们知道,maven的依赖管理是基于版本管理的,对于发布状态的artifact,如果版本号相同,即使我们内部的镜像服务器上的组件比本地新,maven 阅读全文

posted @ 2019-01-31 13:48 我是司 阅读(594) 评论(0) 推荐(0)

使用Nexus搭建Maven私服

摘要: 为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库。 1.首先确定 阅读全文

posted @ 2019-01-31 13:41 我是司 阅读(203) 评论(0) 推荐(0)

加快maven中jar包的下载速度,maven镜像收集

摘要: maven下载jar包的默认仓库是http://my.repository.com/repo/path速度较慢,通过配置国内镜像提高下载速度 1.打开eclipse >Window >Preferences >选择Maven下的User Settings 如图找到User Settings路径中的s 阅读全文

posted @ 2019-01-31 13:37 我是司 阅读(626) 评论(0) 推荐(0)

【LInux】查看Linux系统版本信息

摘要: 一、查看Linux内核版本命令(两种方法): 1、cat /proc/version [root@S-CentOS home]# cat /proc/versionLinux version 2.6.32-431.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos. 阅读全文

posted @ 2019-01-31 13:32 我是司 阅读(412) 评论(0) 推荐(1)

【Linux】常用命令,持续更新

摘要: 一、linux的组成 内核,shell,文件系统,应用程序 二、linux目录结构 bin,sbin,home,root,boot,dev,etc,lib, 三、文件目录操作 ls,cd,mkdir,touch,echo,cat,more,find,mv,cp,rm,wc,ln 【Linux】lin 阅读全文

posted @ 2019-01-31 13:30 我是司 阅读(156) 评论(0) 推荐(0)

【Linux】rpm常用命令及rpm参数介绍

摘要: RPM是RedhatPackageManager的缩写,是由RedHat公司开发的软件包安装和管理程序,同Windows平台上的Uninstaller比较类似。使用RPM,用户可以自行安装和管理Linux上的应用程序和系统工具。RPM可以让用户直接以binary方式安装软件包,并且可替用户查询是否已 阅读全文

posted @ 2019-01-31 13:27 我是司 阅读(1775) 评论(0) 推荐(0)

【CentOS】设置服务开机自动启动

摘要: CentOS安装好apache、mysql等服务器程序后,并没有设置成开机自动启动的,为避免重启后还要手动开启web等服务器,还是做下设置好,其实设置很简单,用chkconfig命令就行了。 例如,要开机后自动启动mysql、apache、vsftpd服务,用以下命令即可: 要关闭自动启动的话,把o 阅读全文

posted @ 2019-01-31 13:16 我是司 阅读(382) 评论(0) 推荐(0)

查看所使用的Linux系统是32位还是64 位的方法

摘要: 方法一:getconf LONG_BIT 1 1 我的Linux是32位!!! 方法二:arch 1 1 显示 i686 就是32位,显示 x86_64 就是64位 方法三:file /bin/ls 1 1 方法四:uname -a 1 1 阅读全文

posted @ 2019-01-31 13:14 我是司 阅读(499) 评论(0) 推荐(0)

CentOS7 安装rabbitmq

摘要: 【1、安装erlang环境】yum install http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm 【2、安装rabbitmq】yum install http://www.rabbitmq. 阅读全文

posted @ 2019-01-31 13:12 我是司 阅读(121) 评论(0) 推荐(0)

排查CentOS7.0的联网情况

摘要: 1、ifconfig命令。 查看网络配置是否有问题 在/etc/sysconfig/network-scripts/ifcfg-ens33里面配置好网络,记住onboot=on这个选项一定要设置,不然网络启动不了 onboot=yes IPADDR=192.168.1.31 NETMASK=255. 阅读全文

posted @ 2019-01-31 11:47 我是司 阅读(1228) 评论(0) 推荐(0)

Java POI的使用

摘要: 很多时候,一个软件应用程序需要生成Microsoft Excel文件格式的报告。有时,一个应用程序甚至希望将Excel文件作为输入数据。例如,一个公司开发的应用程序将财务部门需要所有输出生成自己的Excel。 任何Java程序员愿意将MS Office文件的输出,可以使用预定义和只读API来做到。 阅读全文

posted @ 2019-01-31 11:38 我是司 阅读(5190) 评论(0) 推荐(0)

【Dubbo&&Zookeeper】6、 给dubbo接口添加白名单——dubbo Filter的使用

摘要: 在开发中,有时候需要限制访问的权限,白名单就是一种方法。对于Java Web应用,Spring的拦截器可以拦截Web接口的调用;而对于dubbo接口,Spring的拦截器就不管用了。 dubbo提供了Filter扩展,可以通过自定义Filter来实现这个功能。本文通过一个事例来演示如何实现dubbo 阅读全文

posted @ 2019-01-31 11:37 我是司 阅读(614) 评论(0) 推荐(0)

【Dubbo&&Zookeeper】5、dubbo总结和学习资料汇总

摘要: Dubbo学习资料 阿里巴巴分布式服务框架 Dubbo 团队成员梁飞专访 RPC介绍 什么是RPC? RPC(Remote Procedure Call)远程过程调用。见名知意 - 从远程主机调用一个过程/函数。 RPC的目标是:使得本程序调用其它远程主机上的函数,好像调用本程序内的函数一样简单,并 阅读全文

posted @ 2019-01-31 11:36 我是司 阅读(108) 评论(0) 推荐(0)

【Dubbo&&Zookeeper】4、 Java实现Dubbo服务提供者及消费者注册

摘要: 编写Java代码。实现2个数相加。 编写Java代码,读取spring配置文件。 将HelloDubbo下的接口类及resources下的文件复制过来使用。 修改dubbo.xml及applicationContext.xml如下图所示 编写测试类 public class DubboTest {  阅读全文

posted @ 2019-01-31 11:34 我是司 阅读(272) 评论(0) 推荐(0)

【Dubbo&&Zookeeper】3、Failed to read schema document 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd'问题解决方法

摘要: 我们公司使了阿里的dubbo,但是阿里的开源网站http://code.alibabatech.com,挂掉有好几个月了,为什么我们的应用启动没有问题? 我们的应用的spring配置文件里有类似的配置: [html] view plaincopy <?xml version="1.0" encodi 阅读全文

posted @ 2019-01-31 11:33 我是司 阅读(737) 评论(1) 推荐(0)

【Dubbo&&Zookeeper】2、 windows平台dubbo-admin管理平台搭建

摘要: 一、前言 dubbo的使用,其实只需要有注册中心,消费者,提供者这三个就可以使用了,但是并不能看到有哪些消费者和提供者,为了更好的调试,发现问题,解决问题,因此引入dubbo-admin。通过dubbo-admin可以对消费者和提供者进行管理。 二、下载与配置打包 dubbo-admin的下载,可自 阅读全文

posted @ 2019-01-31 11:32 我是司 阅读(126) 评论(0) 推荐(0)

【Dubbo&&Zookeeper】1、Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)

摘要: 互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的。现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应。 第一:介绍Dubbo背景 大规模服务化之前,应用可能只是通过RMI或 阅读全文

posted @ 2019-01-31 11:31 我是司 阅读(138) 评论(0) 推荐(0)

【Java并发编程】23、ConcurrentHashMap原理分析(1.7和1.8版本对比)

摘要: jdk 1.8版本 ConcurrentHashMap在1.8中的实现,相比于1.7的版本基本上全部都变掉了。首先,取消了Segment分段锁的数据结构,取而代之的是数组+链表(红黑树)的结构。而对于锁的粒度,调整为对每个数组元素加锁(Node)。 put的步骤大致如下: get()方法没有加锁操作 阅读全文

posted @ 2019-01-31 11:17 我是司 阅读(134) 评论(0) 推荐(0)

【Java并发编程】21、线程池ThreadPoolExecutor源码解析

摘要: 一、前言 JUC这部分还有线程池这一块没有分析,需要抓紧时间分析,下面开始ThreadPoolExecutor,其是线程池的基础,分析完了这个类会简化之后的分析,线程池可以解决两个不同问题:由于减少了每个任务调用的开销,它们通常可以在执行大量异步任务时提供增强的性能,并且还可以提供绑定和管理资源(包 阅读全文

posted @ 2019-01-31 11:15 我是司 阅读(178) 评论(0) 推荐(0)

【Java并发编程】22、Exchanger源码解析(JDK1.7)

摘要: Exchanger是双向的数据传输,2个线程在一个同步点,交换数据。先到的线程会等待第二个线程执行exchangeSynchronousQueue,是2个线程之间单向的数据传输,一个put,一个take。 先举个例子说明一下如何使用 再看一下内部结构 关键技术点1:CacheLine填充 交换数据的 阅读全文

posted @ 2019-01-31 11:15 我是司 阅读(130) 评论(0) 推荐(0)

【Java并发编程】20、DelayQueue实现订单的定时取消

摘要: 当订单定时取消需要修改数据库订单状态,但是怎么确定订单什么时候应该改变状态,解决方案有下面两种: 第一种,写个定时器去每分钟扫描数据库,这样更新及时,但是如果数据库数据量大的话,会对数据库造成很大的压力。 第二种,创建订单的时候再订单表里面创建一条记录,然后把这条记录保存到DelayQueue队列里 阅读全文

posted @ 2019-01-31 11:14 我是司 阅读(2182) 评论(0) 推荐(0)

【Java并发编程】18、PriorityBlockingQueue源码分析

摘要: PriorityBlockingQueue是一个基于数组实现的线程安全的无界队列,原理和内部结构跟PriorityQueue基本一样,只是多了个线程安全。javadoc里面提到一句,1:理论上是无界的,所以添加元素可能导致outofmemoryerror;2.不容许添加null;3.添加的元素使用构 阅读全文

posted @ 2019-01-31 11:13 我是司 阅读(102) 评论(0) 推荐(0)

【Java并发编程】19、DelayQueue源码分析

摘要: DelayQueue,带有延迟元素的线程安全队列,当非阻塞从队列中获取元素时,返回最早达到延迟时间的元素,或空(没有元素达到延迟时间)。DelayQueue的泛型参数需要实现Delayed接口,Delayed接口继承了Comparable接口,DelayQueue内部使用非线程安全的优先队列(Pri 阅读全文

posted @ 2019-01-31 11:13 我是司 阅读(211) 评论(0) 推荐(0)

【Java并发编程】17、SynchronousQueue源码分析

摘要: SynchronousQueue是一种特殊的阻塞队列,不同于LinkedBlockingQueue、ArrayBlockingQueue和PriorityBlockingQueue,其内部没有任何容量,任何的入队操作都需要等待其他线程的出队操作,反之亦然。如果将SynchronousQueue用于生 阅读全文

posted @ 2019-01-31 11:12 我是司 阅读(149) 评论(0) 推荐(0)

【Java并发编程】16、ReentrantReadWriteLock源码分析

摘要: 一、前言 在分析了锁框架的其他类之后,下面进入锁框架中最后一个类ReentrantReadWriteLock的分析,它表示可重入读写锁,ReentrantReadWriteLock中包含了两种锁,读锁ReadLock和写锁WriteLock,可以通过这两种锁实现线程间的同步,下面开始进行分析。 二、 阅读全文

posted @ 2019-01-31 11:11 我是司 阅读(106) 评论(0) 推荐(0)

【Java并发编程】14、Thread,线程说明

摘要: 线程的状态:New、Runnable、Blocked、Waiting、Timed waiting、Terminated 1. RUNNABLE,对应"就绪"和"运行"两种状态,也就是说处于就绪和运行状态的线程在java.lang.Thread中都表现为"RUNNABLE"2. BLOCKED,对应" 阅读全文

posted @ 2019-01-31 11:10 我是司 阅读(181) 评论(0) 推荐(0)

【Java并发编程】15、ReentrantLock实现原理深入探究

摘要: 前言 这篇文章被归到Java基础分类中,其实真的一点都不基础。网上写ReentrantLock的使用、ReentrantLock和synchronized的区别的文章很多,研究ReentrantLock并且能讲清楚ReentrantLock的原理的文章很少,本文就来研究一下ReentrantLock 阅读全文

posted @ 2019-01-31 11:10 我是司 阅读(154) 评论(0) 推荐(0)

【Java并发编程】13、forkjoin

摘要: http://www.infoq.com/cn/articles/fork-join-introduction http://www.importnew.com/14506.html Java7中的ForkJoin并发框架初探(下)—— ForkJoin的应用 http://www.molotang 阅读全文

posted @ 2019-01-31 11:09 我是司 阅读(110) 评论(0) 推荐(0)

【Java并发编程】11、volatile的使用及其原理

摘要: 一、volatile的作用 在《Java并发编程:核心理论》一文中,我们已经提到过可见性、有序性及原子性问题,通常情况下我们可以通过Synchronized关键字来解决这些个问题,不过如果对Synchronized原理有了解的话,应该知道Synchronized是一个比较重量级的操作,对系统的性能有 阅读全文

posted @ 2019-01-31 11:08 我是司 阅读(168) 评论(0) 推荐(0)

【Java并发编程】12、ThreadLocal 解决SimpleDateFormat非线程安全

摘要: 大致意思:Tim Cull碰到一个SimpleDateFormat带来的严重的性能问题,该问题主要有SimpleDateFormat引发,创建一个 SimpleDateFormat实例的开销比较昂贵,解析字符串时间时频繁创建生命周期短暂的实例导致性能低下。即使将 SimpleDateFormat定义 阅读全文

posted @ 2019-01-31 11:08 我是司 阅读(207) 评论(0) 推荐(0)

【Java并发编程】9、非阻塞同步算法与CAS(Compare and Swap)无锁算法

摘要: 锁(lock)的代价 锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,加锁、释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很大的损失。操作系统对多线程的锁进行 阅读全文

posted @ 2019-01-31 11:07 我是司 阅读(245) 评论(0) 推荐(0)

【Java并发编程】10、Java 理论与实践: 正确使用 Volatile 变量

摘要: Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。本文介绍了几种有效使用 volati 阅读全文

posted @ 2019-01-31 11:07 我是司 阅读(138) 评论(0) 推荐(0)

【Java并发编程】8、各种锁的概念

摘要: 共享锁(S锁):如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁,直到已释放所有共享锁。获准共享锁的事务只能读数据,不能修改数据。 排他锁(X锁):如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的锁,直到在事务的末尾将资源上的锁释放为止。获准排他锁的事务既 阅读全文

posted @ 2019-01-31 11:06 我是司 阅读(418) 评论(0) 推荐(0)

【Java并发编程】7、线程池

摘要: 1. 为什么使用线程池 诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 HTTP、FTP 或 POP)、通过 JMS 队列或者可能通过轮询数据库。不管请求如何到达 阅读全文

posted @ 2019-01-31 10:26 我是司 阅读(154) 评论(0) 推荐(0)

【Java并发编程】6、volatile关键字解析&内存模型&并发编程中三概念

摘要: volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于v 阅读全文

posted @ 2019-01-31 10:05 我是司 阅读(101) 评论(0) 推荐(0)

【Java并发编程】4、JDK7中TransferQueue的使用以及TransferQueue与SynchronousQueue的差别

摘要: JDK7对JDK5中的J.U.C并发工具进行了增强,其中之一就是新增了TransferQueue。Java并发相关的JSR规范,可以查看Doug Lea维护的blog。现在简单介绍下这个类的使用方式。 [java] view plain copy public interface TransferQ 阅读全文

posted @ 2019-01-31 10:04 我是司 阅读(249) 评论(0) 推荐(0)

【Java并发编程】5、java中ConcurrentLinkedQueue类

摘要: 一、类结构: 类型参数:E - 在此 collection 中保持的元素类型所有已实现的接口: Serializable, Iterable<E>, Collection<E>, Queue<E> 二、概述: public class ConcurrentLinkedQueue<E> extends 阅读全文

posted @ 2019-01-31 10:04 我是司 阅读(350) 评论(0) 推荐(0)

【Java并发编程】3、DelayQueue应用场景,多考生考试

摘要: 模拟一个考试的日子,考试时间为120分钟,30分钟后才可交卷,当时间到了,或学生都交完卷了考试结束。 这个场景中几个点需要注意: 抽象出两个类,学生类和老师类,用DelayQueue存储考生(Student类)。每一个考生都有自己的名字和完成试卷的时间 Teacher线程对DelayQueue进行监 阅读全文

posted @ 2019-01-31 10:03 我是司 阅读(246) 评论(0) 推荐(0)

【Java并发编程】1、ConcurrentHashMap原理分析

摘要: 集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的 阅读全文

posted @ 2019-01-31 10:02 我是司 阅读(147) 评论(0) 推荐(0)

【Java并发编程】2、无锁编程:lock-free原理;CAS;ABA问题

摘要: 定义 无锁编程是指在不使用锁的情况下,在多线程环境下实现多变量的同步。即在没有线程阻塞的情况下实现同步。这样可以避免竞态、死锁等问题。 原理 CAS是指Compare-and-swap或Compare-and-Set CAS是一个原子操作,用于多线程环境下的同步。它比较内存中的内容和给定的值,只有当 阅读全文

posted @ 2019-01-31 10:02 我是司 阅读(354) 评论(0) 推荐(0)

导航