- 博客(183)
- 资源 (24)
- 收藏
- 关注
原创 java并发编程的艺术笔记第十章--Executor框架
Executor框架简介Executor框架的两级调度模型在上层,Java多线程程序通常把应用分解为若干个任务,然后使用用户级的调度器(Executor框架)将这些任务映射为固定数量的线程;在底层,操作系统内核将这些线程映射到硬件处理器上。底层的调度不受应用程序的控制Executor框架的结构与成员1.Executor框架的结构Executor框架主要由3大部分组成如下。·任务。包括...
2019-03-26 18:33:28 335
原创 java并发编程的艺术笔记第八章--Java中的并发工具类
概述在JDK的并发包里提供了几个非常有用的并发工具类。CountDownLatch、CyclicBarrier和Semaphore工具类提供了一种并发流程控制的手段,Exchanger工具类则提供了在线程间交换数据的一种手段。1等待多线程完成的CountDownLatchCoundDownLatch用法比较简单,和Thead.join()方法功能类似,但是更灵活,直接看示例public c...
2019-03-25 15:35:52 473
原创 java并发编程的艺术笔记第九章--Java中的线程池
概述在开发过程中,合理地使用线程池能够带来3个好处:第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控。但是,要做到合理利用线程池,必须对其实现原理了如...
2019-03-25 15:29:42 338
原创 java并发编程的艺术笔记第七章--Java中的13个原子操作类
概述java为了方便在多线程环境下安全的更新变量,在Atomic包里一共提供了13个类,属于4种类型的原子更新方式,分别是原子更新基本类型、原子更新数组、原子更新引用和原子更新属性(字段)。Atomic包里的类基本都是使用Unsafe实现的包装类。1.原子更新基本类型类使用原子的方式更新基本类型,Atomic包提供了以下3个类。·AtomicBoolean:原子更新布尔类型。·Atom...
2019-03-22 11:40:20 240
原创 java并发编程的艺术笔记第六章--java并发容器和框架
ConcurrentHashMap的实现原理与使用1.1 为什么要使用ConcurrentHashMap在并发编程中使用HashMap可能导致程序死循环。而使用线程安全的HashTable效率又非常低下,基于以上两个原因,便有了ConcurrentHashMap的登场机会。线程不安全的HashMap多线程进行hashMap的put操作会因导致在扩容hashmap的时候时候形成entryS...
2019-03-22 10:38:21 246
原创 java并发编程的艺术笔记第五章--java中的锁
lock接口Lock接口比synchronized关键字额外的特性尝试非阻塞的获取锁能被中断的获取锁超时获取锁void lock():获取锁,电泳该方法当前线程会获取锁,获得锁后,从该方法返回;void lockInterruptibly():可中断地获取锁,和lock()方法的不同之处在于该方法会响应中断,即在锁的获取中可以中断当前线程;boolean tryLoc...
2019-03-22 10:37:48 294
原创 java并发编程的艺术笔记第四章--java并发编程的基础
线程简介什么是线程现代操作系统调度的最小单元是线程,也叫轻量级进程(Light Weight Process),在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。处理器在这些线程上高速切换,让使用者感觉到这些线程在同时执行。为什么要使用多线程更多的处理器核心更快的响应时间更好的编程模型线程优先级设置线程优先级时,针对频繁...
2019-03-22 10:35:58 192
原创 java并发编程的艺术笔记第三章--java内存模型
Java内存模型的基础并发编程模型的两个关键问题线程之间如何通信及线程之间如何同步线程之间的通信机制有两种:共享内存和消息传递。Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行,整个通信过程对程序员完全透明.在共享内存的并发模型里,线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信。java内存模型的抽象结构堆内存.所有实例域、静态域和数组元素...
2019-03-22 10:33:55 447
原创 java并发编程的艺术笔记1-2章
第一章 并发编程的挑战多线程带来的上下文切换的成本频繁的切换上下文的效率开销某些情况下还不如单线程效率高减少上下文切换的手段:减少上下文切换的方法有无锁并发编程、CAS算法、使用最少线程和使用协程。·无锁并发编程。多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一些办法来避免使用锁,如将数据的ID按照Hash算法取模分段,不同的线程处理不同段的数据。CAS算法。Java...
2019-03-22 10:30:57 209
原创 ReentrantReadWriteLock实现原理
ReentrantReadWriteLock.ReadLock readLock = reentrantReadWriteLock.readLock(); readLock.lock(); sync.acquireShared(1); 1.tryAcquireShared(arg) 1.如果写...
2019-05-22 17:08:08 405
转载 Redhat Linux NFS配置
Linux下,All deviceis file,所有的设备都是文件。当我们需要把某些文件夹就或者文件共享给其他用户,就可以使用网络文件系统。 本文介绍Redhat Linux下的NFS配置。 在使用NFS之前,确保安装以下rpm包:nfs-utils-xxx.i686.rpm、nfs4-acl-tools-xxx.i686
2014-12-30 14:53:24 955
原创 读书笔记--编写高质量代码 改善java程序的151个建议(八)异常
读书笔记--编写高质量代码:改善java程序的151个建议(八)异常这个异常内容不多,简单总结一下就好了提倡异常封装异常封装可以提高系统的友好性,和可维护性,封装后给用户提供的异常信息更友好,然后给代码维护人员更容易阅读。受检异常尽可能的转化为非受检异常受检异常使接口声明变得很脆弱,代码可读性降低,还增加了开发工作量,但是在受检异常威胁到系统的安全性、稳定性、可靠性
2014-08-14 11:13:53 1227 1
原创 读书笔记--编写高质量代码 改善java程序的151个建议(六)枚举与注解
读书笔记--编写高质量代码 改善java程序的151个建议(六)枚举与注解使用枚举定义常量使用枚举定义常量相对来说更简单,而且枚举常量的个数是确定的不用担心越界啊或者其他字符串判断等问题。每个自定义的枚举类型都是Enum的子类,所以都继承了Enum定义的方法,用起来很方便,除了Enum定义的方法外编译器在编译自定义枚举的时候还会追加静态方法values和valueof(这个方法和Enu
2014-08-08 11:26:12 984
原创 读书笔记--编写高质量代码:改善java程序的151个建议(五)数组和集合
读书笔记--编写高质量代码:改善java程序的151个建议(五)数组和集合考虑性能的话,首选数组数组在操作基本类型的时候的性能比用list要高很多倍。如果有性能瓶颈,也可以自己实现变长数组来提高性能,比集合类要快很多。还有要警惕数组的浅拷贝,数组在操作对象的时候,数组里保存的是对象的内存地址,所以拷贝的时候也是拷贝的内存地址,要深拷贝需要自己实现。条件允许的情况下,可以为集
2014-07-02 10:06:13 1315
转载 JVM垃圾回收(GC)原理
一、相关概念 基本回收算法 1. 引用计数(Reference Counting) 比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。 2. 标记-清除(Mark-Sweep) 此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍
2014-06-25 14:56:06 971
转载 Tomcat中session的管理机制
Tomcat中session的管理机制1. 请求过程中的session操作:简述:在请求过程中首先要解析请求中的sessionId信息,然后将sessionId存储到request的参数列表中。然后再从request获取session的时候,如果存在sessionId那么就根据Id从session池中获取session,如果sessionId不存在或者session失效
2014-06-23 11:19:37 2440
转载 阿里巴巴常考面试题及汇总答案
原文地址:http://blog.csdn.net/free0sky/article/details/7927275一、String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?答: 1、String是字符串常量,StringBuffer和StringBuilder都是字符串变量。后两者的字符内容可变,而前
2014-06-20 18:26:50 1022
转载 HTTP 报文格式
HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。请求报文一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。 (1)请求行请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔
2014-06-20 18:06:52 856
转载 Servlet生命周期
大多数程序员都知道Servlet的生命周期,简单的概括这就分为四步:servlet类加载--->实例化--->服务--->销毁。对这个过程只是肤浅了解下,对于servlet何时被销毁,还是不太情楚。下面我们描述一下Tomcat与Servlet是如何工作的,首先看下面的时序图.1、Web Client 向Servlet容器(Tomcat)发出Http请求2、Servlet容器
2014-06-20 17:54:46 748
原创 读书笔记--编写高质量代码:改善java程序的151个建议(四)String,StringBuilder,StringBuffer
读书笔记--编写高质量代码:改善java程序的151个建议(四)String,StringBuilder,StringBuffer使用字符串字面量赋值更加高效。Java为了避免在一个系统中大量产生String对象,于是就设计了一个字符串池(也有叫做字符串常量池),在字符串池中所容纳的都是String字符串对象。String创建规则:创建一个字符串时,首先没有检查池中是否有字面值
2014-06-19 09:47:34 1036
原创 读书笔记--编写高质量代码:改善java程序的151个建议(三)重写equals六大原则
读书笔记--编写高质量代码:改善java程序的151个建议(三)重写equals六大原则自反性原则:对于任何非空引用x,x.equals(x)应该返回true我们在写一个JavaBean时,经常会覆写equals方法,其目的是根据业务规则判断两个对象是否相等,比如我们写一个Person类,然后根据姓名判断两个实例对象是否相同,这在DAO(Data Access Objects)层是经常
2014-06-18 18:15:38 983
原创 读书笔记--编写高质量代码:改善java程序的151个建议(二)匿名类与构造代码块
读书笔记--编写高质量代码:改善java程序的151个建议(二)匿名类与构造代码块使用构造代码块精炼程序什么叫代码块(Code Block)?用大括号把多行代码封装在一起,形成一个独立的数据 体,实现特定算法的代码集合即为代码块,一般来说代码块是不能单独运行的,必须要有运 行主体。在 Java 中一共有四种类型的代码块:(1)普通代码块就是在方法后面使用“{}”括起来的
2014-06-16 10:00:53 997 3
原创 读书笔记--编写高质量代码 改善java程序的151个建议(一)基础
读书笔记--编写高质量代码 改善java程序的151个建议(一)基础不要再常量和变量中出现易混淆的字母例如在定义long i = 1l时 末尾的l应该使用大写L防止混淆三元操作符的类型务必一致例如在i覆写变长方法也循规蹈矩例如父类有public void method(int t,int... ints){}方法,子类覆写父类方法:public void met
2014-06-13 11:08:04 883
翻译 建造者模式实践
建造者模式实践本文翻译自:http://www.javacodegeeks.com/2013/01/the-builder-pattern-in-practice.html我不打算跳入设计模式的过多细节中,因为已经有一大堆的文章和书籍很详细的解释过了。所以我打算告诉你为什么和什么时候你应该考虑使用设计模式。然而,值得一提的是本文中的模式和设计模式可复用面向对象软件基础一书中的提
2014-05-26 10:16:17 1263
翻译 Java8中学并发
Java8中学并发本文翻译自:http://jaxenter.com/lean-concurrency-in-java-8-49924.html有人曾经说过(很不幸,我们没有原话了):初级程序员认为并发很难。中级程序员认为并发很简单。高级程序员认为并发很难。这说的很对。但是从好的方面来看,通过lambda表达式和很多改进的API使编写并发代码更容易,
2014-05-26 10:12:37 1853
翻译 JDK8新增便利的Map默认值方法
本文由 ImportNew - kingviker 翻译自 javacodegeeks。欢迎加入Java小组。转载请参见文章末尾的要求。在JDK8中Map接口提供了一些新的便利的方法。因为在本文中我所提到的所有Map方法都是以默认值方法的方式实现的,所以现有的Map接口的实现可以直接拥有这些在默认值方法中定义的默认行为,而不需要新增一行代码。本文涵盖的JDK8中引进的Map方法有:getO
2014-05-19 10:25:50 15995
转载 理解RESTful架构
越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点。网站开发,完全可以采用软件开发的模式。但是传统上,软件和网络是两个不同的领域,很少有交集;软件开发主要针对单机环境,网络则主要研究系统之间的通信。互联网的兴起,使得这两个领域开始融合,现在我们必
2013-12-09 08:57:07 775
转载 redis命令总结
Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些command可以在Linux终端使用。在编程时,比如使用Redis 的Java语言包,这些命令都有对应的方法。下面将Redis提供的命令做一总结。官网命令列表:http://redis.io/commands (英文)1、连接操作相关的命令quit:关闭连接(connection)auth:简
2013-12-05 11:32:34 893
原创 maven3总结
preface 早在2010年就听说了maven这个强大的工具,只是一直未能有机会在工作中尝试,让我苦恼了很旧,最近经理决定升级项目框架,才用maven来作为项目管理工具,让我好是开心了一番.what is Maven ? 绝大部分Maven用户都称Maven是一个"构建工具":一个用来把源代码构建成可发布的构件的工具。 构建
2013-12-04 10:58:45 2004
翻译 编写你自己的jquery插件
jquery很棒,它跨浏览器,简单易学,可以轻而易举的给网站增加交互性,而且有非常多的插件来帮助你完成你想做的事情. 但是,如果你找不到刚好适合你站点的插件怎么办?也许你只是通过合并一些常用的函数到一个干净整洁的package里面?解决方案也许是用你自己的插件来完全的满足需求. 首先,编写自己的jquery plugin不想它看起来那么难,下面这个例子将会贯
2013-11-20 15:21:46 2546 1
转载 jQuery 1.9 移除了 $.browser 的替代方法
授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/35)的形式标明文章原始出处和作者信息及本声明。jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support 。 在更新的 2.0 版本中,将不再支持 IE 6/7/8。 以后,如
2013-07-16 11:24:39 1693
转载 oracle修改表字段顺序
1.'GYZL_BZPWL_TB' 为要修改的表名,注意表名一定要大写!此句可以获取表的id。 select object_id from all_objects where object_name='GYZL_BZPWL_TB' 2.查看表中的字段名和序号,其中后面的条件就是我们第一步中查出来的表ID select obj#,col#,name from sys
2013-07-12 18:14:43 1430
转载 EqualsBuilder和HashCodeBuilder
自动化hashCode()和equals() 问题产生:当需要自动实现hashCode()和equals()方法 解决方法:使用EqualsBuilder和HashCodeBuilder 使用举例: import org.apache.commons.lang.builder.HashCodeBuilder;import org.apache.commons.la
2013-07-12 10:18:37 3331
转载 python 接收邮件示例:pop3与imap
简单来说主要区别就是imap可以不用把所有的邮件全部下载,就通过客户端直接对服务器上的邮件进行操作。IMAP它只下载邮件的主题,并不是把所有的邮件内容都下载下来. =============================pop3================================= Python代码 import poplib emai
2013-07-02 10:22:56 3905
原创 Django模板系统——过滤器
记下来,省得每次google过滤器,变量的显示形式的改变一、形式:小写{{ name | lower }} 二、串联:先转义文本到HTML,再转换每行到 标签{{ my_text|escape|linebreaks }} 三、过滤器的参数显示前30个字{{ bio | truncatewords:"30" }}格
2013-06-23 12:53:11 1326
转载 Python正则表达式指南
本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化正则表达式,这些主题请查看其他教程。注意:本文基于Python2.4完成;如果看到不明白的词汇请记得百度谷歌或维基,whatever。尊重作者的劳动,转载请注明作者及原文地址 >.html1. 正则表达式基
2013-06-22 19:41:56 826
原创 python之小说下载器version3.0
1.0版本链接:传送门 2.0版本链接:传送门 我想了一下,每个版本打包exe 意义不大,如果是最终版什么的 打一个还行,所以暂时不打包了 有需要的可以留言,我在打包. 这里使用了第三方库pyquery,安装方法见:1.0版本链接 在上一版本的基础上做个改进.主要是,增加推荐榜,支持模糊查询,交互方式有
2013-06-21 15:02:23 1432
转载 Python字符串的encode与decode研究心得乱码问题解决方法
为什么Python使用过程中会出现各式各样的乱码问题,明明是中文字符却显示成“\xe4\xb8\xad\xe6\x96\x87”的形式?为什么会报错“UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)”?本
2013-06-09 10:25:43 1111
原创 python判断变量类型时,为什么不推荐使用type()方法
用type()这种判断变量的方法,结果老鸟被鄙视了,不知所以然。求各位讲解:这个问题出在哪里,怎样判断一个变量的类型才是好方法?>>> n = 911>>> type(n)type 'int'>>>> type(n) is intTrue和Python的new-style class有关。相关链接 http://www.python.org/doc/
2013-06-03 17:10:42 2013
原创 python之小说下载器version2.0
上一版本链接:传送门 这是我用pyinstaller打包成的exe文件,方便体验:传送门 这里使用了第三方库pyquery,安装方法见:上一版本链接 在上一版本的基础上做个改进.先上图: 下面是代码:# -*- coding:gbk -*-'''file desc:novel downloaderaut
2013-05-31 17:11:48 1829
activiti5.9修复mysql order by 排序bug
2013-04-07
lucene全文检索word2007
2012-08-18
Poi修改word eclipse项目,
2012-08-11
jbpm4.4web请假实例,eclipse工程第一卷
2012-06-25
jquery插件:ajax和iframe加载提示效果1.1版
2012-05-05
extjs2.2中文api chm
2011-05-22
W3CSchool.chm完整版
2011-05-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人