
java
文章平均质量分 79
bigcakewshwl
这个作者很懒,什么都没留下…
展开
-
FindBugs NN_NAKED_NOTIFY
工作中遇到的,NN_NAKED_NOTIFY,表示找不到notify对应的wait方法还可能原因是你你锁的是同一个变量,但是FindBugs不能识别成是同一个变量,即使两个变量指向同一个地址,findbugs也为认为你是两个不一样的变量,举个例子吧Object a = new Object();Object b = a;synchronized(a){ a.noti转载 2016-01-15 15:47:10 · 736 阅读 · 0 评论 -
JRE 与 JDK ,JVM Client Server了解
一、JRE: java runtime environment java 运行环境JRE是运行java所需要的环境。包含JVM标准实现和JAVA核心类库,以及javaplug-in。可以在JRE上进行运行、测试和传输应用程序。JRE不包括编译器,调试器和其他工具。也就是说,如果直接运行一个java编译好了的class文件,使用JRE就OK 了。但是如果你要开发一个java文件,然转载 2015-12-30 13:39:58 · 244 阅读 · 0 评论 -
Guava Cache
http://www.cnblogs.com/peida/p/Guava_Cache.htmlGuava Cache是一个全内存的本地缓存实现,它提供了线程安全的实现机制。整体上来说Guava cache 是本地缓存的不二之选,简单易用,性能好。 Guava Cache有两种创建方式: 1. cacheLoader 2. callable callback转载 2015-12-16 20:43:13 · 290 阅读 · 0 评论 -
完整理解XML领域
每个人都知道什么是XML,也知道它的格式.如果深入点理解如何使用XML,可能就不是每个人都知道的了. XML是一种自描述性文档,它的作用是内容的承载,和展示没有任何关系.所以,如何将XML里的数据以合理的方式取出展示,是XML编程的主要部分. 这篇文章从广度上来描述XML的一切特性. XML有一大堆的官方文档和Spec文档以及教程.但是它们都太专业,文字太官方,又难懂,文字多,例子少,篇幅转载 2016-01-18 14:11:21 · 251 阅读 · 0 评论 -
XML External Entity漏洞攻防
一、XML基础知识XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。 DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。DTD 可以在 XML 文档内声明,也可以外部引用。内部声明DTD转载 2016-01-18 14:49:53 · 665 阅读 · 0 评论 -
Java 数组Security
MethodReturnsInternalArray: Exposing internal arrays directly allows the user to modify some code that could be critical. It is safer to return a copy of the array.翻译 方法返回内部数组:暴露内部数组直接允许用户修改的代码会是非原创 2016-01-18 15:01:53 · 545 阅读 · 0 评论 -
java中的native关键字 Thread中的private native void start0()
以下分三点来讲述一下java native:1、什么是Native Method简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一转载 2016-01-18 15:24:17 · 3556 阅读 · 2 评论 -
Thread.currentThread().getContextClassLoader() 和 Class.getClassLoader()区别
打个简单的比方,你一个WEB程序,发布到Tomcat里面运行。首先是执行Tomcat org.apache.catalina.startup.Bootstrap类,这时候的类加载器是ClassLoader.getSystemClassLoader()。而我们后面的WEB程序,里面的jar、resources都是由Tomcat内部来加载的,所以你在代码中动态加载jar、资源文件的时候,首先应转载 2016-01-18 15:48:15 · 182 阅读 · 0 评论 -
避免在 Java 接口中使用数组的 3 个理由
如果你发现在一个接口使用有如下定义方法: ?1public String[] getParameters();那么你应该认真反思。数组不仅仅老式,而且我们有合理的理由避免暴露它们。在这篇文章中,我将试图总结在Java API中使用数组的缺陷。首先从最出人意料的一个例子开始。数组导致性能不佳 你可能认为使用数转载 2016-01-18 16:15:14 · 278 阅读 · 0 评论 -
java中volatile关键字的含义
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。 synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized转载 2016-01-18 17:50:15 · 232 阅读 · 1 评论 -
Java中使用同步关键字synchronized需要注意的问题
在Java中,synchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。synchronized既可以加在一段代码上,也可以加在方法上。关键是,不要认为给方法或者代码段加上synchronized就万事大吉,看下面一段代码: 12345678910转载 2016-01-18 18:01:19 · 186 阅读 · 0 评论 -
大数据量下高并发同步的讲解
对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了。而并发问题是绝大部分的程序员头疼的问题,但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究一下常见的并发和同步吧。 为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和异步 1、同步和异步的区别和联系 所谓同步,可以理解为在执行完一个函数或转载 2016-01-18 18:06:52 · 114 阅读 · 0 评论 -
并发编程基础一--继承Thread,实现Runnable,实现Callable和Future.
一.继承Thread的线程 1.定义Thread类的子类,并重写该类的run()方法,该run()方法就是代表了线程要完成的任务.因此run方法是线程执行体.2.创建Thread子类的实例,就是创建了线程对象.3.调用线程对象的start()方法来启动该线程. ?1234567891011121314转载 2016-01-18 18:15:37 · 156 阅读 · 0 评论 -
java的concurrent用法
java的concurrent用法详解http://www.ibm.com/developerworks/cn/java/j-5things4.htmlhttp://blog.youkuaiyun.com/cping1982/article/details/1931539http://www.open-open.com/bbs/view/1320131360999/http://www.ope转载 2015-12-16 20:52:59 · 241 阅读 · 0 评论 -
GNU Trove
http://trove4j.sourceforge.net/javadocs/trove是轻量级实现java.util Collections API的第三方开源项目 官网: http://trove.starlight-systems.com/overview trove相比jdk原生的集合类有三个优势: 1、更高的性能 2、更底的内存消耗 3、除了实现原生Collecti转载 2015-12-16 20:41:01 · 257 阅读 · 0 评论 -
多线程并发
多线程并发传统线程机制的回顾创建线程的方式1 在Thread子类覆盖的run方法中编写运行代码 涉及一个以往知识点,能否在run方法生命上抛出 InterruptedException异常, 以便省略run方法内部对Thread.sleep语句的try catch处理?2 在传递给Thread对象的Runnable对象的run方法中编写代码总结转载 2015-12-16 13:40:46 · 255 阅读 · 0 评论 -
java对redis的基本操作
java对redis的基本操作redis2.6http://blog.youkuaiyun.com/java2000_wl/article/details/8531702redis-benchmark.exe:性能测试, 用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的ab 工具).redis-check-aof.exe:更新转载 2015-12-17 16:29:38 · 97 阅读 · 0 评论 -
线程的生命周期
对于线程来说,它既不是一启动就进入执行状态,也不是一直处于执行状态.它的生命周期总体为: 新建(New)准备就绪(Runnable)运行(running)阻塞或说等待(Blocked)死亡(Dead)线程有五种状态,当线程启动,开始运行后,它也不会一直处于运行状态,而是会在就绪,运行,阻塞之间来回切换. 1,2阶段 新建,准备: 一般情况下着两个在代码里总是转载 2016-01-19 10:19:16 · 188 阅读 · 0 评论 -
join线程,后台线程,线程睡眠,线程让步,改变线程优先级
1.join线程join线程的意思就是在当前这个线程A里,加入另一个线程B,此时A阻塞,进入就绪状态,等B完成(结束,线程死亡),A才会继续执行. 这个方法通常由使用线程的程序调用,用以将大问题划分成许多小问题,每个小问题配一个线程,但所有小问题处理后,再调用主线程进一步操作. ?123456789101112转载 2016-01-19 10:22:50 · 147 阅读 · 0 评论 -
同步代码块,同步方法,lock,死锁
老生常谈的一个问题,就bank的那个例子,同一张卡同时取钱,并发2个,每个取800,但卡里只有1000,不能让2个人同时操作.这里就需要线程同步.比如下面的DEMO.首先定义一个账户类: ?123456789101112131415161718192021222324转载 2016-01-19 10:24:14 · 351 阅读 · 0 评论 -
线程通信 Condition BlockingQueue
当线程在系统内运行时,线程的调度具有一定的透明性,程序通常无法准确控制线程的轮换执行,但我们可以通过一些机制来包装线程的协调运行. 1.传统的线程通信 Object类有三个特殊的方法,分别是 wait(),notify(),notifyAll()这3个方法,他们不属于Thread,但和Thread却是息息相关.他们3个必须是由同步监视器对象来调用.对于使用synchronize转载 2016-01-19 10:28:05 · 132 阅读 · 0 评论 -
需要了解的关键字 寄存器 voliatile const,goto native sum.msic.Unsafe
寄存器voliatileconst,gotonativesum.msic.Unsafe寄存器 寄存器是CPU内部重要的数据存储资源,是汇编程序员能直接使用的硬件资源之一。 由于寄存器的存取速度比内存快,所以,在用汇编语言编写程序时,要尽可能充分利用寄存器的存储功能。 寄存器一般用来保存程序的中间结果,为随后的指令快速提供操作数,从而避免把中间结果存入内存,再读取内存的操作。在高转载 2016-01-19 10:31:33 · 268 阅读 · 0 评论 -
Jetty
Jettyjetty嵌入eclipsehttp://www.cnblogs.com/super-d2/p/3837415.htmlJetty开发指导:HTTP Clienthttp://www.bubuko.com/infodetail-293376.htmlJetty HTTP client被实现和提供一个异步的API,不会因为I/O时间阻塞,因此使它在线程的利用转载 2015-12-16 20:50:41 · 292 阅读 · 0 评论 -
java对redis的基本操作
java对redis的基本操作redis2.6http://blog.youkuaiyun.com/java2000_wl/article/details/8531702redis-benchmark.exe:性能测试, 用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的ab 工具).redis-check-aof.exe:更新转载 2015-12-17 16:32:45 · 164 阅读 · 0 评论 -
并发编程中级一:java并发包下的原子变量归纳总结
目录[-]一.java并发包下的原子变量综述二.Atomic包介绍三.原子更新基本类型3.1 函数列表3.2 AtomicLong.lazySet是如何工作的?3.3 其他基本类型怎么办?3.4 AtomicLong 使用示例四:原子更新数组4.1 AtomicLongArray函数4.2 AtomicIntegerArray的实现片断:4.3 AtimicLongArray示例五.原子更转载 2016-01-19 14:05:38 · 134 阅读 · 0 评论 -
Java 锁框架[ReentrantLock,Condition]
目录[-]综述Lock接口互斥锁ReentrantLockCondition-线程通信更高效的方式两者结合的实例:综述 Java中的锁,大致可以分为"同步锁"和"java.util.concurrent.locks中的锁"。 同步锁就是使用synchronized关键字来进行同步的锁机制,实现资源的互斥访问的锁。Java 1.0就有了. java.util.conc转载 2016-01-19 14:13:03 · 154 阅读 · 0 评论 -
Java 锁框架[LockSupport]
LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。 LockSupport中的park() 和 unpark() 的作用分别是阻塞线程和解除阻塞线程,而且park()和unpark()不会遇到“Thread.suspend 和 Thread.resume所可能引发的死锁”问题。因为park() 和 unpark()有许可的存在;调用 park() 的线程和另一个试图将转载 2016-01-19 14:15:23 · 150 阅读 · 0 评论 -
java中使用多线程不能明显提高程序效率的一些原因.
java中使用多线程不能明显提高程序效率的一些原因. 使用多个线程来处理多任务的时候,效率肯定是有提高的.但是必须要慎用,否则容易出现问题. 1.多线程主要是为了充分利用多核cpu,大内存这些资源.如果你的硬件跟不上,只有一个cpu,那么多线程从并发变成了串行了,另外再加上线程上下文切换的时候,那你就得不偿失了. 2.原子问题 如果多线程是同步操作一个原子数转载 2016-01-19 14:19:02 · 413 阅读 · 0 评论 -
JAVA 中BIO,NIO,AIO的理解
在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解。具体如下: 序号 问题1 什么是同步?2 什么是异步?3 什么是阻塞?4 什么是非阻塞?5 什么是同步阻塞?6 什么是同步非阻塞?7 什么是异步阻塞?8 什么是异步非阻塞?散仙不才,在查了一部分资料后,愿试着以通俗易懂的方式解释下这几个名词。如有不足之处,还望告知。 在转载 2016-01-19 14:34:25 · 106 阅读 · 0 评论 -
JAVA NIO 实例
我们都知道TCP是面向连接的传输层协议,一个socket必定会有绑定一个连接,在普通的BIO(阻塞式IO)中,需要有三次握手,然后一般的socket编程就是这样的形式。Socket服务器端流程如下:加载套接字->创建监听的套接字->绑定套接字->监听套接字->处理客户端相关请求。 Socket客户端同样需要先加载套接字,然后创建套接字,不过之后不用绑定和监听了,而是直接连接服务器,发送相关转载 2016-01-19 17:20:35 · 113 阅读 · 0 评论 -
Java NIO示例:多人网络聊天室
一个多客户端聊天室,支持多客户端聊天,有如下功能:功能1: 客户端通过Java NIO连接到服务端,支持多客户端的连接功能2:客户端初次连接时,服务端提示输入昵称,如果昵称已经有人使用,提示重新输入,如果昵称唯一,则登录成功,之后发送消息都需要按照规定格式带着昵称发送消息功能3:客户端登录后,发送已经设置好的欢迎信息和在线人数给客户端,并且通知其他客户端该客户端上线功能4:服务器收到已登录转载 2016-01-19 17:21:50 · 121 阅读 · 0 评论 -
JAVA 垃圾回收机制原理
这里,我不用什么理论方式讲述垃圾回收机制原理.我只通过2个简单的程序,探讨我对Java 垃圾回收机制的理解.毕竟很多东西,理论的术语可能没有直观的测试更好. [java] view plaincopy⃕package cn.vicky.chapt14; /** * * @author Vicky.H */ public clas转载 2016-01-19 17:30:58 · 155 阅读 · 0 评论 -
Java简单实现固定长度队列(FIFO)
版权声明:本文为博主原创文章,未经博主允许不得转载。[java] view plaincopy⃕/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package linkedlisttest;转载 2016-01-19 17:36:22 · 1541 阅读 · 0 评论 -
java.util.concurrent.LinkedBlockingQueue
一、简介 LinkedBlockingQueue是BlockingQueue的一种使用Link List的实现,它对头和尾(取和添加操作)采用两把不同的锁,相对于ArrayBlockingQueue提高了吞吐量。它也是一种阻塞型的容器,适合于实现“消费者生产者”模式。二、具体实现 LinkedBlockingQueue底层的定义如下:[java] view转载 2016-01-19 17:40:55 · 162 阅读 · 0 评论 -
java.util.concurrent.ConcurrentHashMap
一、简介 ConcurrentHashMap是Map的一种并发实现,在该类中元素的read操作都是无锁了,而write操作需要被同步。这非常适合于读操作远大于写操作的情况。在实现过程中,ConcurrentHashMap将所有元素分成了若干个segment,每个segment是独立的,在一个segment上加锁并不影响其他segment的操作。segment本身是一个hashtable,转载 2016-01-19 17:42:16 · 176 阅读 · 0 评论 -
java.util.concurrent.BlockingQueue ArrayBlockingQueue
一、简介 BlockingQueue接口定义了一种阻塞的FIFO queue,每一个BlockingQueue都有一个容量,让容量满时往BlockingQueue中添加数据时会造成阻塞,当容量为空时取元素操作会阻塞。ArrayBlockingQueue是对BlockingQueue的一个数组实现,它使用一把全局的锁并行对queue的读写操作,同时使用两个Condition阻塞容量为空时的转载 2016-01-19 17:42:56 · 119 阅读 · 0 评论 -
java.util.concurrent.CopyOnWriteArrayList CopyOnWriteArraySet
一、简介 JDK5中添加了新的concurrent包,其中包含了很多并发容器,这些容器针对多线程环境进行了优化,大大提高了容器类在并发环境下的执行效率。 CopyOnWriteArrayList类是一个线程安全的List接口的实现,在该类的内部进行元素的写操作时,底层的数组将被完整的复制,这对于读操作远远多于写操作的应用非常适合。在CopyOnWriteArrayList上进行转载 2016-01-19 17:44:10 · 294 阅读 · 0 评论 -
Spring定时器
[xhtml] view plaincopy⃕ bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask"> property name="timerTask" ref="battleTimerTask"/>转载 2016-01-19 17:47:14 · 155 阅读 · 0 评论 -
java.security.MessageDigest的使用
我们知道,编程中数据的传输,保存,为了考虑安全性的问题,需要将数据进行加密.我们拿数据库做例子.如果一个用户注册系统的数据库,没有对用户的信息进行保存,如,我去页面注册,输入"Vicky","123456".注册.web服务器未对数据进行加密而直接写入数据库,那么数据库中的用户信息,便是一个直接可用的数据!一旦服务器服务器被黑~那么用户的信息将毫无保留的展现在黑客面前...为了解决这个弊端,现在大转载 2016-01-19 17:50:38 · 336 阅读 · 0 评论 -
ThreadLocal的实现原理,及使用实例,解决spring,hibernate非web项目下的懒加载 no session or session was closed(1)!
JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的局部变量独立问题... 查看API我们可以查看ThreadLocal的定义与方法: 该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始转载 2016-01-19 17:53:36 · 133 阅读 · 0 评论