Java
福龙楼主
这个作者很懒,什么都没留下…
展开
-
管道流实现两个线程间通信
Java中实现多线程间的通信主要通过两种方式:共享变量和管道流。共享变量一般通过加锁的方式来保证线程的安全性,在之前的多篇博客中已提供了多个例子,这里不赘述。知道在使用锁的过程中,注意锁作用的对象以及锁的作用区域就可以了。原创 2016-12-11 22:38:56 · 2352 阅读 · 0 评论 -
synchronized关键字、ReentrantLock与原子类比较
我们先比较ReentrantLock与synchronized的用法1、ReentrantLock拥有synchronized相同的并发性和内存语义,此外还多了锁投票,定时锁等候和中断等候。线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定。使用synchronized时,如果A不释放,B将一直等待下去,无法中断。使用ReentrantLock时,如果A不释原创 2016-11-28 20:59:03 · 942 阅读 · 0 评论 -
HashMap与Hashtable区别及HashMap实现原理
Map是编码过程中喜欢经,常使用到的容器,而HashMap和Hashtable都实现了Map的,所以我们往往会把两者进行对比。HashMap和Hashtable区别Hashtable是线程安全的,HashMap是非线程安全的。Hashtable是基于老的Diactionary类实现的,HashMap是Java 1.2引进Map接口后的重新实现。Hashtable的方法,进行了锁同步,可原创 2016-12-04 16:52:06 · 2140 阅读 · 1 评论 -
Spring MVC工作原理
一、用户发磅请求,web.xml中servlet-mapping映射到DispatcherServlet二、DispatcherServlet调用doService->doDispatch,1、通过HandlerMapping找到对应的handler,并构建一个HandlerExecutionChain,它包含handler和HandlerMapping本身的一些拦截器,返回给Disp原创 2017-11-02 15:14:27 · 321 阅读 · 0 评论 -
五种常用算法理解
分治法:将问题实例划分成几个较小的子问题(可以递归的划分),然后对这些较小的子问题求解,合并这些较小的子问题,以得到原始问题的解。有点类似Map/Reduce思想。主要区别在于:Map/Reduce的关键是把一个大的任务,拆分成尽可能多的小任务,再合并子任务的解。任务本身往往并不复杂,主要是计算量大,基本做一次水平的拆分就够了。而分治法则是把一个不太容易解决的问题,拆分成几个小点儿的问题(原创 2017-10-13 16:30:20 · 4467 阅读 · 0 评论 -
java IO流总结
流:流是一组有序的,有起点、终点的字节集合,是对数据传输的总称和抽象。即数据在两设备间的传输称为流,流的本质是数据传输。根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。根据处理数据类型不同分类:字符流和字节流根据数据流向不同分为:输入流和输出流根据是否直接连接数据源分为:节点流和处理流(装饰流)字符流和字节流的区别:字节流:一次读入或读出8位二进制(一个字节),能处原创 2017-10-24 10:13:20 · 263 阅读 · 0 评论 -
多线程的三种实现
最近写多篇关于多线程的博客,这里做个总结。线程从创建到消亡的过程中,可能会经历五种状态:New:线程刚被创建。 Runnable:线程的start方法被调用后所处的状态,该状态下,线程才有了竞争时间片的可能,即可运行态。 Running:线程正在执行run方法 Dead:执行完run方法,或者被stop Blocked:线程放弃CPU使用权,进入阻塞状态。该状态下,线程可能重新...原创 2016-12-12 00:38:33 · 439 阅读 · 0 评论 -
八皇后问题递归实现
八皇后的问题大家应该都不陌生,问题简单描述如下:在8*8的国际象棋棋盘上,摆放8个皇后,使它们两两间不能互相攻击(不能在同一行,同一列,同一对角线)。上学时,用的回溯的算法解决,今天重新思考这个问题,发现用递归也很容易实现。分析:要在n*n的棋盘上摆放n个皇后,则至少每一行,每一列有且只有一个皇后。问题解决的必要条件是在前n-1列的棋盘上要摆放n-1个皇后。再检查每n列的每一格:在该位原创 2017-10-12 16:40:04 · 428 阅读 · 0 评论 -
使用Jena访问RDF数据库环境搭
RDF:资源描述框架,RDF使用XML语法和RDF Schema(RDFS)来将元数据描述成为数据模型。XML:可扩展标记语言元数据:即Metadata,又称中介数据、中继数据,为描述数据的数据,主要是描述数据的属性信息。Jena:一个用于构造语义网(Semantic Web)及关联数据(Linked Data)应用的Java开源构架。Semantifc Web:即语义网,通过给全球信息网上文档添加能够被计算机理解的语义元数据,从而使整个互联网成为一个通用的信息交换媒介。Linked原创 2017-10-12 16:16:23 · 3679 阅读 · 2 评论 -
Web项目常见编码问题总结
Web项目开发过程中经常遇到中文乱码的问题。一般项目都使用UTF-8编码,在项目的初始阶段都要对项目、环境的文件编码进行设置。原创 2017-07-05 21:07:39 · 2134 阅读 · 0 评论 -
java接口压力测试
根据用户输入的线程数,创建多个线程,每个线程串行的发送n/c个请求(其中n为请求数,m为线程数)。并且实时的反馈,完成的请求数,以及成功接收返回结果的请求数量。原创 2017-05-09 21:23:54 · 13719 阅读 · 1 评论 -
Ant + Ivy 管理项目依赖
在该目录 下执行ant,可以看生成一个lib目录,下面放着个ant-2.7.1.jar。Ivy-module元素中的version定义了此文件使用的ivy的版本。在info元素中你可以定义自己的组织信息和模块的名称;关键是配置dependency标签,dependency元素定义具体的依赖信息,我们使用org、name和rev来唯一标识依赖项。其中org是组织信息,name是模块名称,rev是模块的版本。Ivy默认使用maven2组件仓库,所以我们可以去mvnrepositoy.com找到我们需要的模块信息原创 2017-03-16 23:20:06 · 3647 阅读 · 0 评论 -
java序列化
java通过serialVersionUID来控制对象的序列化、反序列化。当我们示设置serialVersionUID时,会通过类的名字、域的名字、方法的名字及已实现的接口生成一个隐式的serialVersionUID。所以类在后续的版本中,如果开发人员修改过代码,会引起serialVersionUID的值发生改变。这样原来的代码就无法向下兼容。原创 2017-03-08 23:13:15 · 383 阅读 · 0 评论 -
正则表达式总结
一、常用元字符\:转义符,其中:\d:匹配数字字符;\D:匹配非数字字符;\n:换行符;\r:回车符;\t:制表符;\v:垂直制表符;\f:换页符\s:匹配任意空字符,等价于[\r\n\t\v\f];\S:匹配任意空字符;\b:匹配单词边界;\B:匹配非单词边界\w:匹配包括下划线的任意字符,类似但不等价于[a-zA-Z0-9_],这里的"单词"使用Unicode字符集;\原创 2017-02-26 23:24:13 · 1548 阅读 · 0 评论 -
Java synchronized关键字总结
Java的synchronized关键字,主要用来保证线程安全,即每次运行的结果与单个线程运行的结果一的致,避免执行结果出现二义性。当一个线程获得synchronized修饰代码时,其他线程对该代码访问将被阻塞,同一时间只允许一个线程访问该代码。Java中synchronized关键字用法主要有两种:synchronized成员方法。synchronized修饰代码块。原创 2016-11-20 20:40:19 · 331 阅读 · 0 评论 -
Collections.synchronizedMap()与ConcurrentHashMap的区别
Collections.synchronizedMap()与ConcurrentHashMap主要区别是:Collections.synchronizedMap()和Hashtable一样,实现上在调用map所有方法时,都对整个map进行同步,而ConcurrentHashMap的实现却更加精细,它对map中的所有桶加了锁。所以,只要要有一个线程访问map,其他线程就无法进入map,而如果一个线程在访问ConcurrentHashMap某个桶时,其他线程,仍然可以对map执行某些操作。这样,Concurre原创 2016-12-07 00:13:14 · 36527 阅读 · 6 评论 -
ThreadLocal的用法
Java中除了通过共享变量,还可以通过ThreadLocal来实现多线程访问的问题。按字面理解,ThreadLocal相当于线程的局部变量 。在每个线程中为目标对象创建一个副本,这样自然避免了共享变量参数传递带来的线程安全问题。原创 2016-12-14 22:27:40 · 260 阅读 · 0 评论 -
偏向锁、轻量级锁、重量级锁
Java SE1.6为了减少获得锁和释放锁所带来的性能消耗,引入了“偏向锁”和“轻量级锁”的概念,所以在Java SE1.6里锁一共有四种状态:无锁状态,偏向锁状态,轻量级锁状态和重量级锁状态,它会随着竞争情况逐渐升级。锁可以升级但不能降级,这种策略目的是为了提高获得锁和释放锁的效率。偏向锁 Hotspot的作者经过以往的研究发现大多数情况下锁不仅不存在多线程竞争,而且总原创 2017-10-26 16:44:13 · 381 阅读 · 0 评论