`
文章列表
     ReentrantLock/CountDownLatch/Semaphore/FutureTask/ThreadPoolExecutor的源码中都会包含一个静态的内部类Sync,它继承了AbstractQueuedSynchronizer这个抽象类。 AbstractQueuedSynchronizer是java.util.concurrent包中的核心组件之一,为并发包中的其他synchro ...
  中断(Interrupt):java中的每个线程自身都维护这一个boolean型的中断标识(JVM帮我们搞定了),唯有通过Thread.interrupt()方法可以将其置为true,(我们可以通过interrupted()/isInterrupted()方法来判断线程是否处于中断状态,需要注意的是:interrupted()方法会重置线程的中断状态,即将标识置为false),线程遇到中断,并不会立即停止,而且线程会是死亡、等待新的任务亦或是无视中断继续运行,这都还取决于程序本身的处理。    其实,java也试图提供过抢占式中断,像已经被deprecated的Thread.stop( ...
首先介绍一下什么是Compare And Swap(CAS)?简单的说就是比较并交换。 CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。无论哪种情况,它都会在 CAS 指令之前返回该位置的值。CAS 有效地说明了“我认为位置 V 应该包含值 A;如果包含该值,则将 B 放到这个位置;否则,不要更改该位置,只告诉我这个位置现在的值即可。” Java并发包(java.util.concurrent)中大量使用了CAS操作,涉及到并发的地方都调用了sun.misc.Uns ...
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> -DgeneratePom=true Where: <path-to-file> the path to the file to load <group-id> the ...

forward与redirect区别

    博客分类:
  • J2EE
  forward方式:是服务器内部的重定向,服务器接收到请求之后交给另一个action处理,客户端是感觉不到的;   redirect方式:相当于客户端进行了两次请求,当服务器接收到请求后会发送给客户端一个状态头(HttpStatus---302),然后需要客户端再进行一次请求。    根据上述我们会发现,forward方式会将request state信息带到下一个action中。而redirect方式是先返回给客户端一个状态头,然后再由客户端请求一次,故不会保存上次请求的信息。做了个小测试,例如: @RequestMapping("/forwardTest") ...
网上已经有很多关于redirect和forward区别的文章,更多的都是只是一些概念上的描述,虽然在大多情况下,知道这些就已经足够了。但也有例外:forward not working for struts2,why?我也是在工作中碰到了这个问题,才特意看了下tomcat有关这部分的源代码。深刻的了解下也无妨。 redirect和forward都是属于servlet规范的,不同的servlet容器的实现可能会有一些区别,但原理都是类似的。 redirect和forward的定义: 1. redirect(重定向):服务端发送给客户端一个重定向的临时响应头,这个响应头包含重定向之后的URL,客户 ...
   当我们打开java的按照路径,我们会在JAVA_HOME/bin/下发现jdk已经 捆绑了许多工具。毫无疑问,java.exe和javac.exe被所有的java开发者使用,也是最受欢迎的两个工具。但是其中的大部分工具对于普通的开发者来说,很少被临幸了。但是如果我们有效的使用这些工具,将会大大缩减我们的开发时间。   以下是对java se 8JDK的工具们的一个合影,作为一枚爪哇人 ,我觉得我们都应该去了解他们一下,(至于翻不翻牌去临幸它们应人而异了)。   以下5个工具,我觉得是在众多工具中比较鹤立鸡群的。 javap jvisualvm jcmd jhat Orac ...

Html5 canvas 基础API

   Canvas对象表示一个html元素<canvas>,它自己并没有行为,但是它将绘图的API交给了客户端脚本javascript。从而我们有机会运用javascript将我们想要绘制的东西展示在canvas画布上。它可以绘制路径、矩形、圆、字符以及图像等, ...
   这我们得实际开发当中,当遇到并发的应用时,我们总是需要设计一个这样的对象,该对象在多线程下被调用,而调用的这些方法都会改变对象自身的状态,为了避免竞争条件(race condition)的产生,对于这类对象的设计,需要 ...
   java自带的monitor机制,其实是一种解决同步的机制。    当遇到并发情况时,多个线程同时访问一个对象,那么我们为了数据的一致性,只能给其中的一个线程发放通行证(我们姑且将monitor描述成一个对象,线程获取通行证其实等价于线程获得这个monitor对象,当该线程执行完它的工作需要将monitor对象归还 然后其他等待的线程则有机会获得monitor对象 执行自己的逻辑,那么当一个线程访问一个对象时发现它的monitor对象被其他对象占用了,它们在"Entry set"中排好队等待获取monitor对象)。    当然这个持有monitor对象通行证的 ...
jstack dump日志文件中的线程状态 dump 文件里,值得关注的线程状态有: 死锁,Deadlock(重点关注)  执行中,Runnable    等待资源,Waiting on condition(重点关注)  等待获取监视器,Waiting on monitor entry(重点关注) 暂停,Suspended
一直以来都觉得五线谱好神秘,作为计算机专业的我,音乐水平也就停留在儿时“一闪一闪亮晶晶”的层次上。最近有幸认识了一位音乐方面的“大神”,难得抓住一个机会,好好请教一下。最终的结果还是对得起自己的音乐智商的,我也从一个对音乐无知的小白,变成了一个能看懂五线谱的菜鸟了(在这里需要特别的感谢这位无私的“大神”~)。如果你有兴趣也想了解五线谱的话,不如过来一起分享一下获得这些知识的快乐~ 我们按照三个步骤来学习: 1.学习简谱的基本知识。 2
  (⊙o⊙)…  百忙之中 用cxf写了几个服务,然后就在大功告成 提交SVN,结果 别人机器上报出了异常:     - Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.cxf.jaxws.EndpointImpl---91536504': Resolution of declared constructors on bean Class [org.apache.cxf.jaxw ...

log4j 配置备忘

    博客分类:
  • J2EE
  虽然我现在一直使用logback,升级版嘛 各方面都有提升。不过笔者接触的不少老系统仍然使用的是log4j ,好记性不如烂笔头 记录一下使用方法。    log4j.rootCategory=INFO, stdout , R log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j. ...

vi 命令 整理

    vi 打开文件命令:       vi filename :打开或新建文件,并将光标置于第一行首        vi +n filename :打开文件,并将光标置于第n行首        vi + filename :打开文件,并将光标置于最后一行首        vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处        vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename        vi filename....filename :打开多个文件,依次进行编辑     输入模 ...
Global site tag (gtag.js) - Google Analytics