java并发编程
代码菜鸟旺仔
在代码的世界里没有什么做不到的
展开
-
Java线程:新特征-有返回值的线程
Java线程:新特征-有返回值的线程 在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写。或者干脆绕过这道坎,走别的路了。 现在Java终于有可返回值的任务(也可以叫做线程)了。 可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。 执行Callable任务转载 2015-08-13 11:40:59 · 462 阅读 · 0 评论 -
关于Mysql5.6中使用group_concat()函数返回的数据总数不完整的坑
最近项目中需要将数据以","隔开的形式返回,然后使用了group_concat(),整个sql如下SELECT group_concat(randomnumber ORDER BY randomnumber asc separator ',') as name FROM randomnumber 结果在测试环境中碰到问题,发现返回的数据长度小于实际的长度,真是大坑啊group_conc原创 2016-01-26 18:53:56 · 6922 阅读 · 4 评论 -
nginx上设置禁止通过ip访问服务器,只能通过域名访问
为了避免别人把未备案的域名解析到自己的服务器ip而导致服务器被断网,需要在nginx上设置禁止通过ip访问服务器,只能通过域名访问。最关键的一点是,在server的设置里面添加这么一行:Listen 80 default;后面的default参数表示这个是默认的虚拟主机。例如:别人如果通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回500。具体如下:Ser原创 2016-01-27 01:41:25 · 3700 阅读 · 0 评论 -
Jetty 的工作原理以及与 Tomcat 的比较
Jetty 的基本架构Jetty 目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器,它有一个基本数据模型,这个数据模型就是 Handler,所有可以被扩展的组件都可以作为一个 Handler,添加到 Server 中,Jetty 就是帮你管理这些 Handler。Jetty 的基本架构下图是 Jetty 的基本架构图,原创 2016-02-21 14:06:41 · 911 阅读 · 0 评论 -
Spring 框架的设计理念与设计模式分析
Spring 的骨骼架构Spring 总共有十几个组件,但是真正核心的组件只有几个,下面是 Spring 框架的总体架构图:图 1 .Spring 框架的总体架构图从上图中可以看出 Spring 框架中的核心组件只有三个:Core、Context 和 Beans。它们构建起了整个 Spring 的骨骼架构。没有它们就不可能有 AOP、Web 等上层的特性功能。下面也将主转载 2016-02-21 14:07:56 · 613 阅读 · 0 评论 -
利用nginx来屏蔽指定的user_agent的访问
对于做国内站的我来说,我不希望国外蜘蛛来访问我的网站,特别是个别垃圾蜘蛛,它们访问特别频繁。这些垃圾流量多了之后,严重浪费服务器的带宽和资源。通过判断user agent,在nginx中禁用这些蜘蛛可以节省一些流量,也可以防止一些恶意的访问。1、进入nginx的配置目录,例如cd /usr/local/nginx/conf2、添加agent_deny.conf配置文件 vi原创 2016-02-23 17:24:41 · 31499 阅读 · 0 评论 -
Nginx配置文件简单说明log_format
配置文件(说明)user nginx;nginx的运行账号(rpm安装时会自动创建这个账号),也可以写成user nginx nginx表示用户和组worker_processes 10;工作进程数(worker),一般等于cpu内核数或者两倍worker_rlimit_nofile 100000;文件描述符数量 error_log /var/l转载 2016-03-12 02:03:20 · 8620 阅读 · 0 评论 -
多线程详解java.util.concurrent
一、多线程1、操作系统有两个容易混淆的概念,进程和线程。进程:一个计算机程序的运行实例,包含了需要执行的指令;有自己的独立地址空间,包含程序内容和数据;不同进程的地址空间是互相隔离的;进程拥有各种资源和状态信息,包括打开的文件、子进程和信号处理。线程:表示程序的执行流程,是CPU调度执行的基本单位;线程有自己的程序计数器、寄存器、堆栈和帧。同一进程中的线程共用相同的地址空间转载 2016-03-26 16:01:10 · 2774 阅读 · 0 评论 -
kafka-0.8.1.1总结
目录一、 基础篇... 11. 开篇说明... 12. 概念说明... 13. 配置说明... 34. znode分类... 175. kafka协议分类... 246. Kafka线程... 297. 日志存储格式... 308. kakfa架构设计... 35原创 2016-04-14 20:47:00 · 7651 阅读 · 0 评论 -
十大数据挖掘算法及各自优势
1.C4.5C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法.C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;2) 在树构造过程中进行剪枝;3) 能够完成对连续属性的离散化处理;4) 能够对不完整数据进行处理。C4.5算法有如下优点:产生的分原创 2016-04-14 20:56:57 · 593 阅读 · 0 评论 -
java HashMap详解,剖析
HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实现类。虽然 HashMap 和 HashSet 实现的接口规范不同,但它们底层的 Hash 存储机制完全一样,甚至 HashSet 本身就采用 HashMap 来实现的。 通过 HashMap转载 2016-04-14 21:55:12 · 535 阅读 · 0 评论 -
java对redis的基本操作
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原创 2016-04-21 17:08:18 · 1526 阅读 · 0 评论 -
jdk中设计模式的实现
1、创建型设计模式抽象工厂模式特点:创建方法返回一个可以用来创建抽象类或接口的工厂类。javax.xml.parsers.DocumentBuilderFactory#newInstance()javax.xml.transform.TransformerFactory#newInstance()javax.xml.xpath.XPathFactor原创 2016-04-22 21:30:50 · 1279 阅读 · 0 评论 -
java之ReentrantLock公平锁和非公平锁
大多数情况下,大家可能都会选择使用synchronized来加锁,ReentrantLock确实是一种高级加锁工具,在确实需要一些 synchronized 所没有的特性的时候,比如时间锁等候、可中断锁等候、无块结构锁、多个条件变量或者锁投票。以下实现公平锁和非公平锁,公平锁在性能上会多消耗点package com.cmcc.web.test.lock;import java.util原创 2016-05-19 23:31:50 · 6373 阅读 · 0 评论 -
java.util.concurrent.locks与synchronized及其异同
关键字:synchronized、java.util.concurrent.locks.Lock、同步、并发、锁一、【引言】JDK1.5之前,实现同步主要是使用synchronized,而在JDK1.5中新增了java.util.concurrent包及其两个子包locks和atomic,其中子包locks中定义了系列关于锁的抽象的类。本文主要介绍java.util.concurren转载 2016-05-19 23:57:23 · 1440 阅读 · 0 评论 -
PowerDesigner16.5 破解版安装
安装文件: PowerDesigner 16.5 下载链接: http://download.sybase.com/eval/PowerDesigner/PowerDesigner165_Evaluation.exe 然后将pdflm16.dll覆盖到根目录原创 2016-07-21 20:54:35 · 1660 阅读 · 0 评论 -
Redis 集群规范
http://www.redis.cn/topics/cluster-spec.html转自Redis 集群的目标Redis 集群是 Redis 的一个分布式实现,主要是为了实现以下这些目标(按在设计中的重要性排序):在1000个节点的时候仍能表现得很好并且可扩展性(scalability)是线性的。没有合并操作,这样在 Redis 的数据模型中最典型的大数据值转载 2015-12-24 11:59:22 · 1167 阅读 · 0 评论 -
redis3.0.5集群部署安装详细步骤
Redis集群部署文档(centos6系统)(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下)127.0.0.1:7000127.0.0.1:7001127.0.0.1:7002127.0.0.1:7003127.0.0.1:7004127.0.原创 2015-12-24 11:40:46 · 5002 阅读 · 0 评论 -
java并发编程--AbstractQueuedSynchronizer条件锁分析(四)
前一篇J.U.C的锁的获取与释放的过程,这个过程主要通过在A.Q.S中维持一个等待队列来实现,其中我们也提到了,在A.Q.S中除了一个等待队列之外,还有多个Condition队列(Condition队列的多少取决于ConditionObject对象个数),在了解Condition队列之前,先来看一下Condition是怎么回事:The synchronizer framework pr转载 2015-08-13 11:31:09 · 634 阅读 · 0 评论 -
java并发编程--AbstractQueuedSynchronizer的lock()和lockInterruptibly()方法分析(五)
lock 与 lockInterruptibly比较区别在于:lock 优先考虑获取锁,待获取锁成功后,才响应中断。lockInterruptibly 优先考虑响应中断,而不是响应锁的普通获取或重入获取。 详细区别:ReentrantLock.lockInterruptibly允许在等待时由其它线程调用等待线程的Thread.interrupt方法来中断等待转载 2015-08-13 11:30:19 · 511 阅读 · 0 评论 -
java并发编程--AbstractQueuedSynchronizer公平锁和非公平锁分析(三)
juc包中,aqs实现的公平锁和非公平锁的最主要的区别是:非公平锁中,那些尝试获取锁且尚未进入等待队列的线程会和等待队列head结点的线程发生竞争。公平锁中,在获取锁时,增加了isFirst(current)判断,当且仅当,等待队列为空或当前线程是等待队列的头结点时,才可尝试获取锁。 1.1 NonfairSync.lock() Java代码转载 2015-08-13 11:31:55 · 984 阅读 · 0 评论 -
java并发编程--AbstractQueuedSynchronizer的tryLock()方法分析(六)
tryLock()仅尝试一次获取锁,不管成功与否,都将返回结果。 Java代码 public boolean tryLock()仅在调用时锁未被另一个线程保持的情况下,才获取该锁。 如果该锁没有被另一个线程保持,并且立即返回 true 值,则将锁的保持计数设置为 1。即使已将此锁设置为使用公平排序策略,但是调用 tryLock() 仍将 立即获转载 2015-08-13 11:28:36 · 428 阅读 · 0 评论 -
java并发编程--ThreadLocal的用法和分析
ThreadLocal这个类,理解起来比较简单,但是使用时,还是需要一些技巧的,简单介绍如下: 例子1:threadLocal变量一般用法 Java代码 package concurrent.thread; /** * 技巧: * 1.在当前线程里执行threadLocal.set(value) 相当于 cu转载 2015-08-13 11:27:45 · 406 阅读 · 0 评论 -
利用object.wait()和实现生产者和消费者模式
其实生产者和消费者模式概念很简单,就是生产者将生产出来的产品放在仓库里,然后消费者依次从仓库里取产品消费。归到程序里,这里的仓库就可以用数组,队列或栈来表示。掌握以下两点后,该模式的实现将不成问题。1. 首先要明白生产者和消费者之间的并发对象就是存放产品的队列,这样才能把并发方法提炼出来。2. 其次要掌握object.wait()和object.notifyAll()这两个转载 2015-08-13 11:36:07 · 456 阅读 · 0 评论 -
java线程的同步互斥和通讯
一、同步和锁定1、锁的原理Java中每个对象都有一个内置锁。当程序运行到非静态的synchronized同步方法上时,自动获得与正在执行代码类的当前实例(this实例)有关的锁。获得一个对象的锁也称为获取锁、锁定对象、在对象上锁定或在对象上同步。当程序运行到synchronized同步方法或代码块时才该对象锁才起作用。转载 2015-08-13 11:37:05 · 445 阅读 · 0 评论 -
线程池--jetty中QueuedThreadPool分析(一)
jetty版本:jetty-6.1.261.由于jetty中的许多组件都实现了LifeCycle接口,先了解下该接口的定义: Java代码 package org.mortbay.component; import java.util.EventListener; public interface LifeCycle转载 2015-08-13 11:26:29 · 1447 阅读 · 0 评论 -
java并发编程--AbstractQueuedSynchronizer加锁和解锁分析(二)
在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实现类ReentrantReadWriteLock),其实现都依赖java.util.concurrent.AbstractQueuedSynchronizer类,实现思路都大同小异,因此我们以ReentrantLock作为讲解切入点。1. Re转载 2015-08-13 11:32:58 · 886 阅读 · 0 评论 -
java线程:大总结
Java线程:大总结 Java线程是Java语言中一个非常重要的部分,Java5之前,多线程的语言支持还是比较弱的,内容也较少,写一个复杂的多线程程序是相当有挑战性的。 在Java5以后,Java对多线程做了很多扩展,扩展部分称之为并发包。这部分内容大大增强了Java多线程编程的能力,通过使用Java5线程新特征的API,可以很容易的做出复杂的多线程程序。与其他语言转载 2015-08-13 11:43:55 · 512 阅读 · 0 评论 -
JAVA wait(), notify(),sleep详解
在CSDN开了博客后,一直也没在上面发布过文章,直到前一段时间与一位前辈的对话,才发现技术博客的重要,立志要把CSDN的博客建好。但一直没有找到好的开篇的主题,今天再看JAVA线程互斥、同步的时候又有了新的体会,就以他作为开篇吧。 在JAVA中,是没有类似于PV操作、进程互斥等相关的方法的。JAVA的进程同步是通过synchronized()来实现的,需要说明的是,JAVA的sync转载 2015-08-14 11:53:37 · 505 阅读 · 0 评论 -
利用观察者模式来获取线程中的数据或者回调函数
首先//抽象主题角色,watched:被观察public interface Watched{ public void addWatcher(Watcher watcher); public void removeWatcher(Watcher watcher); public void notifyWatchers(Watcher watcher,String s原创 2015-08-18 22:30:32 · 2036 阅读 · 0 评论 -
日志采集之log4j2.x的使用
最近项目需要做日志采集,之前用的log4j1.x版本采集的速度真的是太慢了,做了一个简单的实验,往日志里面写入4000万的数据同步的时间在651284ms,异步的时间则为21860ms下面开始介绍log4j2.x吧maven的依赖 org.apache.logging.log4j log4j-api 2.3原创 2015-09-29 16:22:07 · 2046 阅读 · 3 评论 -
关于使用apache-tomcat-7.0.67中在apache-tomcat-7.0.67/log/catalina.out文件过大的解决方案
在正式的项目中用到tomcat作为容器,但有个问题apache-tomcat-7.0.67/log/catalina.out该文件会无限的扩大,而且里面记录的都是log4j已经记录的日志,所有apache-tomcat-7.0.67/log/catalina.out记录的日志对项目来说没有多大的意义而且也非常的消耗性能和IO,那么我们有什么办法来避免这个apache-tomcat-7.0.67/l原创 2016-01-25 13:55:20 · 7046 阅读 · 0 评论 -
关于通过nginx配置到apache-tomcat-7.0.67的端口的时候access中打印访问日志会一直输出nginx的地址而不是用户的真实地址
关于通过nginx配置到apache-tomcat-7.0.67的端口的时候access中打印访问日志会一直输出nginx的地址而不是用户的真实地址,在生产环境中碰到该问题,tomcat的access的日志的话对于后期做数据分析是非常有用的,那如何解决access日志中打印的ip不正确的问题那?需要修改的地方nginx的配置文件和tomcat的server.xmllocation原创 2016-01-25 14:08:25 · 1511 阅读 · 0 评论 -
使用zxing生成嵌图片的二维码,demo二维码
首先贴zxing生成二位的源码zxing的maven com.google.zxing core 2.2 package com.cmcc.web.test;import java.awt.Color;im原创 2016-04-14 22:22:14 · 2024 阅读 · 0 评论