java成神流程学习
vincentff7zg
。
展开
-
JMS Activemq (二)
转载自:http://www.iteye.com/topic/1125922Java Message Service是Java EE的规范之一,可以用来发送异步消息,在某些场景下,可以作为不同系统,或者不同模块之间的集成方式。可以类比为通过数据库来集成的方式,模块A完成逻辑以后,往数据库插入一条记录,模块B定时轮询数据库,如果查到相应的记录,就进行处理。jms集成实转载 2017-01-12 14:26:33 · 385 阅读 · 0 评论 -
JAVA守护线程 非守护线程
笔记:第一篇转载写的比较好,将守护线程同linux的守护进程概念进行了对比。当非守护线程执行完jvm就退出,不管是否还有守护线程在执行。所以守护线程尽量不要执行逻辑代码,顶多执行一些可有可无的辅助性代码。什么东西作为守护线程,还是不太明确?第二篇举了一个实际例子,可以加深理解。以下转载自:http://blog.csdn.net/basycia/article/deta转载 2017-02-21 10:35:19 · 3343 阅读 · 0 评论 -
JAVA与尾递归
总结:对于递归,每次调用都会新分配一个栈,因为调用结束后可能要继续执行原来的代码,原来的栈现场必须保留。尾递归的标准:如果函数中所有的递归调用一定是该路径的最后一步,且,改递归函数返回后直接在当前函数返回,不需要再使用当前函数的数据做额外操作(即,所有用到的数据都传入了递归函数,而不是在递归函数返回后做一些运算处理)。由于尾递归要求所有递归返回值直接在外层函数返回,不需要使用外层函数的转载 2017-02-21 11:25:43 · 779 阅读 · 0 评论 -
java多线程之Semaphore信号量详解
总结:语义:信号量语义是允许多个线程同时申请一定数量的资源信号。从这个角度,同readlock很像。此外,同一个线程可以多次获得信号,但必须释放对应次数,即也允许重入,和reentrantreadlock很像。但是,没有读写锁的互斥判断逻辑。所以内部实现同重入读写锁类似,只是省去了读写锁互斥判定的逻辑。只提供room内人数的check功能,不提供room内变量的互斥操作支持:信号量只是转载 2017-02-09 10:07:08 · 378 阅读 · 0 评论 -
彻底理解java语言的线程安全volatile用法
转载自:http://blog.csdn.net/zhanghongjie0302/article/details/51445986Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchron转载 2017-01-17 15:31:55 · 173 阅读 · 0 评论 -
java之CPU缓存
总结:CPU处理时是依次从L1,L2,L3,物理内存中取数据。如果该层没找到就找下一层,访问速度逐步降低。Lx中是按行进行缓存的,即缓存行,是最小访存单位,类似磁盘一个(扇区?)。所以,如果大部分相关数据都在一个缓存行(通常64字节)中,访问一次就可以获取到所有的数据。提高性能如何将相关数据都放到一个缓存行?这就需要分析缓存行是怎么存数据的:按照加载顺序,例如将相关代码都放到一个数组,转载 2017-02-21 13:40:44 · 420 阅读 · 0 评论 -
JAVA之伪共享
总结:当多个CPU时,访问同一段代码并缓存时,可能在每个CPU的本地缓存都维护该代码数据的缓存行,之间需要进行同步。尤其是,CPU1修改了包含数据X的缓存行R1后,需要告诉同样包含X的CPU2的缓存行R2需要更新,使用RFO消息通信,相当于多CPU通过总线同步了,影响效率!为了避免这种情况,尽量让不同CPU同一时间访问的资源在代码数据中能被划分为不同的缓存行,避免属于同一个缓存行导致R转载 2017-02-21 13:46:08 · 280 阅读 · 0 评论 -
什么才是真正的 RESTful 架构?
笔记:一个资源有且仅可对应一个实际物理上的存储项,一个存储项可以对应多个资源。对于某个存储项的多步骤操作,可以尝试用多个资源分别表示,而不是用批操作?对于第三级,学习使用返回“key:链接”作为路径指引的重要意义:第一个意义,做到了服务的动态发现,避免客户端预处理或预编码:即客户端不需要记忆或预先从去他渠道获取每个目标的地址,只需要记住几个或者说一个serviceprovider,例如转载 2017-02-14 10:26:37 · 1113 阅读 · 0 评论 -
SPI和service provider framework介绍
以下内容来自:http://blog.csdn.net/mosquitolxw/article/details/25290315What is the difference between Service Provider Interface (SPI) and Application Programming Interface (API)?More specifically, for J转载 2017-01-25 15:22:04 · 655 阅读 · 0 评论 -
JAVA之动态代理,静态代理和CGLIB
总结:静态代理:最简单,首先要有接口,然后new实际类A,并将指针转为接口传给proxy,proxy实现了接口,在每个函数内部的before和after执行代理代码后,再调用传入的A的接口函数。使用时,使用proxy类的接口指针。动态代理:不用专门实现一个具体的proxy类。实现一个通用类即可,内部使用getProxyClass(目标类的loader, 目标类的interfaces)函转载 2017-02-22 16:53:38 · 1745 阅读 · 0 评论 -
什么时候使用CountDownLatch
总结:主要是为了同步用,例如,多条分支线程收束到一个节点,然后又从这个节点发散出多个分支线程。这个节点就适合用CountDownLatch。以下转载自:http://www.importnew.com/15731.html本文由 ImportNew - 张涛 翻译自 howtodoinjava。欢迎加入翻译小组。转载请见文末要求。正如每个转载 2017-02-09 13:47:58 · 188 阅读 · 0 评论 -
java多线程编程-ReentrantReadWriteLock笔记
总结两类核心数据结构:第一,针对已经申请到锁的线程的数据结构,记录已经持有的锁数目(重入);第二,针对正在申请中阻塞的线程,会根据先后顺序记录。对于第一类数据结构,主要是exclusive排它锁计数器和share共享锁计数器,前者对应写锁,后者对应读锁。系统实现上,将两类计数器保存在一个32位变量中,高16位和低16位分别对应读锁和写锁,使用Sync内部类的位操作函原创 2017-02-08 14:30:05 · 196 阅读 · 0 评论 -
java.util.concurrent.Callable, Runnable, Future,ExecutorService介绍
常见流程: ExecutorService executorService = Executors.newCachedThreadPool(); executorService.submit入参和返回值(以下四选一)入参callable,返回futue + future.get有返回值入参runnable,返回future + future.get返回null入参n转载 2017-02-03 11:07:43 · 323 阅读 · 0 评论 -
java之NIO select基本设计思路梳理
总结:多路复用概念:允许一个线程阻塞等待多个fd文件描述符的集合,只要任意一个有数据就返回。举个例子,大楼有许多门,保安晚上为了防止窃贼,最简单的方法就是一直巡视每个门看是否被打开了。但保安想偷懒睡觉,于是就用一条有铃铛的绳子绑在所有的门把手上,只要任何一个门打开了,铃铛就会想,保安就会知道某个门被打开了。操作系统对多路复用的支持:多路复用是OS的IO中一个比较重要的概念,在windo原创 2017-03-03 15:06:30 · 2785 阅读 · 1 评论 -
JAVA NIO : Buffer ,Channel, Selector,Pipe
原始文章源自:http://ifeve.com/server-socket-channel/该转载文章做了整合,该文直接转载于此:http://blog.csdn.net/kiss_the_sun/article/details/49930491概述标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是转载 2017-03-03 15:12:46 · 376 阅读 · 0 评论 -
java之IOC原理理解和框架实现
总结:IOC即依赖注入,IOC常见的注入形式有三种:构造函数时注入,set方法注入,调用真正的业务函数时以入参注入(最原始的方法)下文对于IOC的注入原理和方式讲的比较清晰了,这里再补充一种注入框架:包括使用自定义注解标记欲注入的属性,根据注解注入的机制实现。自定义注解标记欲注入的属性:首先需要定义一个注解例如MyIOC,然后在类中需要注意的属性上标记@MyIOC,然后添加se转载 2017-02-24 15:10:49 · 10529 阅读 · 1 评论 -
死锁实现和怎样分析死锁
总结:最简单的死锁是:线程A持有锁1申请锁2,同时线程B持有锁2申请锁1。-------如果两个线程申请顺序一致,释放顺序同申请顺序也一致,是不会死锁的。使用visualvm查看死锁:首先会提示发现死锁,然后点击“线程dump”查看blocked或者wait的线程,其中Locked ownable synchronizers:表示当前线程持有的锁资源,parking to wa转载 2017-02-21 09:54:49 · 467 阅读 · 0 评论 -
Java动态编程初探——Javassist
转载自:http://www.cnblogs.com/hucn/p/3636912.html最近需要通过配置生成代码,减少重复编码和维护成本。用到了一些动态的特性,和大家分享下心得。我们常用到的动态特性主要是反射,在运行时查找对象属性、方法,修改作用域,通过方法名称调用方法等。在线的应用不会频繁使用反射,因为反射的性能开销较大。其实还有一种和反射一样强大的特性,但是开销却很低,它就转载 2017-01-10 09:47:32 · 355 阅读 · 0 评论 -
JMX 介绍
转载自:http://blog.csdn.net/javafreely/article/details/92377991. 什么是 JMX JMX (Java Management Extensions)是一个为应用程序,设备,系统等植入管理功能的框架。 JMX 规范可以分为三层: 设备层, 代理层, 分布式服务层。转载 2017-01-13 15:45:18 · 331 阅读 · 0 评论 -
Java泛型中的PECS原则
转载自:http://blog.csdn.net/xx326664162/article/details/52175283先来看一个错误:List extends Foo> list1 = new ArrayList();List extends Foo> list2 = new ArrayList(); /* Won't compile */ list2.add( new转载 2017-01-17 14:14:21 · 590 阅读 · 0 评论 -
【JUC】JDK1.8源码分析之ReentrantLock
这篇博文的特点是绘制了一套复杂场景每个关键帧的状态图,形象清晰, 便于验证理解。以下转载自:http://www.cnblogs.com/leesf456/p/5383609.html一、前言 在分析了AbstractQueuedSynchronier源码后,接着分析ReentrantLock源码,其实在AbstractQueuedSynchronizer转载 2017-02-07 08:42:50 · 380 阅读 · 0 评论 -
java多线程编程-ReentrantLock笔记
总纲:分为里那个大块,lock和unlock。对于lock,又分为尝试加锁逻辑和队列操作阻塞逻辑。基础知识:原子操作函数CAS:compareAndSet(int expect, int update)setState(int value)getState()基础知识:park和unpark:原创 2017-02-06 21:03:08 · 232 阅读 · 0 评论 -
Java基础加强总结--注解(Annotation)
转载自: http://www.cnblogs.com/xdp-gacl/p/3622275.html一、认识注解 注解(Annotation)很重要,未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,现在的Struts2有一部分也是基于注解的了,注解是一种趋势,现在已经有不少的人开始用注解了,注解是JDK转载 2017-01-12 11:28:35 · 318 阅读 · 0 评论 -
JMS Activemq (一)
转载自:http://boy00fly.iteye.com/blog/11035861. JMS架构 Java 消息服务(Java Message Service,简称JMS)是用于访问企业消息系统的开发商中立的API。企业消息系统可以协助应用软件通过网络进行消息交互。JMS 在其中扮演的角色与JDBC 很相似,正如JDBC 提供了一套用于访问各种不同关系数据库的公共API转载 2017-01-12 14:25:16 · 319 阅读 · 0 评论 -
JMX整理(Bean用于远程调用)
转载自:http://www.bubuko.com/infodetail-1156476.html阅读目录Standard MBean与MXBean的区别实现Notification认证与授权JConsoleCustom ClientWhat and Why JMX JMX的全称为Java Management Extensi转载 2017-01-17 14:09:47 · 3520 阅读 · 0 评论 -
eclipse中导入tomcat源码的配置流程(附版本号和错误解决)
配置ant官网下载ant:http://ant.apache.org/ 并将ant对应目录配置到环境变量注意: 1.10和1.9版本均可。作者采用的是1.10. 下载tomcat源码官网下载源码:http://tomcat.apache.org/注意:如果下载的是tomcat 7,那么在ant build时,必须配置JAVA环境为JDK6原创 2017-02-17 11:44:35 · 915 阅读 · 0 评论 -
Tomcat 7服务器线程模型
笔记:很标准的一个服务器线程模型,先记录下来。可以用于后续分析理解设计tip。网上的tip:Poller线程用来轮询Selector,这样的好处就是:在没有请求数据时,只有极少数的Poller线程阻塞,而避免了直接使用多个Work线程阻塞的消耗。------------那么没有数据时,worker线程不阻塞在做什么?这种方式,worker相当于被动接收信息,那就还需要一个同步切入点,怎转载 2017-02-16 10:51:16 · 305 阅读 · 0 评论 -
Java中的锁
笔记:偏向锁(避免自己不断lock或者unlock获取同步块的开销):假设当前线程A在不断lock或者unlock过程中,没有任何其他线程获取该锁。则实际上不需要同步。即A第一次获取锁是使用CAS标记当前线程ID为自己,然后后续都不需要同步。如果线程B也需要获取该锁,首次时检查当前线程ID不是自己,会标记。当到达安全点???(此时,没有正在执行的字节码??线程B将当前线程ID标记为转载 2017-02-15 15:21:30 · 809 阅读 · 0 评论 -
解释一下关系数据库的第一第二第三范式?
以下转载自:https://www.zhihu.com/question/24696366解释一下关系数据库的第一第二第三范式作者:刘慰链接:https://www.zhihu.com/question/24696366/answer/29189700来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。国内绝大多数院校用的王珊的《数转载 2017-02-13 15:52:06 · 727 阅读 · 0 评论 -
Java线程池
以下转载自:http://www.cnblogs.com/zhujiabin/p/5404771.html介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用。本文是基础篇,后面会分享下线程池一些高级功能。1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗?new Thread(new Runn转载 2017-02-10 11:40:53 · 400 阅读 · 0 评论 -
同步屏障CyclicBarrier
笔记:类似CountDownLatch都是实现同步,但CountDownLatch是专门用一个控制线程调用await来同步。而CyclicBarrier是业务线程自己调用await来同步,不需要控制线程。此外,CyclicBarrier还支持reset功能。以下转载自:http://ifeve.com/concurrency-cyclicbarrier/转载 2017-02-09 14:25:48 · 179 阅读 · 0 评论 -
lock与synchronized的比较
整理自http://blog.csdn.net/chengguotao/article/details/50498090?locationNum=2&fps=1:Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现;synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock在发生异常时,如果转载 2017-02-20 10:05:05 · 197 阅读 · 0 评论 -
java之sleep, wait, notify, notifyall
Sleepsleep语义:放弃CPU资源,并告诉操作系统未来N时间内不参与CPU资源竞争。由于是竞争,所以超过N时间,也可能仍竞争不到。sleep不释放资源锁:如果持有锁,则sleep时仍然持有。sleep可以被中断唤醒。sleep(0)语义:告诉系统重新进行一次CPU资源竞争,自己仍可能抢占到CPU资源。缺点是频繁执行会耗费大量CPU时间,优点是适当使用可以提高系统总体响应性能。原创 2017-02-20 11:41:10 · 597 阅读 · 0 评论 -
不用synchronized和lock,实现线程安全的单例模式
总结:单例模式必然会被多个线程访问。多线程访问一定要注意锁的问题。参考博主之前分享的转载文章《java中的锁》,有几种方式如下:自旋锁类锁和对象锁共享锁和排它锁偏向锁互斥锁闭锁活锁分段锁无锁无状态编程线程本地存储volatileCAS协程不使用synchronized和lock这两种工具,但仍可以参考其他方案:无状态编程:不适用线程本地存储:例如lock原创 2017-02-27 13:45:45 · 4417 阅读 · 0 评论