- 博客(164)
- 资源 (25)
- 收藏
- 关注
原创 Java多线程总结(7)synchronized的缺陷及concurrent.locks包类结构简介
1 synchronized的缺陷参考:Java并发编程:Lock synchronized是java中的一个关键字,也就是说是Java语言内置同步的特性。那么为什么会出现Lock呢? 如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里获取锁的线程释放锁只会有两种情况: 1. 获取锁的线程
2015-12-22 15:23:29 1894
原创 Java多线程总结(6)— 线程池的基本使用和执行流程分析
1 线程池的实现原理及基本类结构 合理利用线程池能够带来三个好处。降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。 Executor线程池框架的最大优点是把任务的提
2015-12-18 21:36:17 9792 2
原创 Java多线程总结(5)— 原子性、可见性、有序性和并发库的原子性操作
1 原子性、可见性和有序性的基本概念 1.原子性(Atomicity) 由Java内存模型来直接保证的原子性变量操作包括read、load、use、assign、store和write六个,大致可以认为基础数据类型的访问和读写是具备原子性的。如果应用场景需要一个更大范围的原子性保证,Java内存模型还提供了lock和unlock操作来满足这种需求,尽管虚拟机未把lock与unlock操作直接开放
2015-12-17 15:25:05 2372
原创 Java多线程总结(4)— 线程范围内数据操作的隔离及ThreadLocal类
1. Java内存模型 在java中,所有实例域、静态域和数组元素存储在堆内存中,堆内存在线程之间共享(本文使用“共享变量”这个术语代指实例域,静态域和数组元素)。局部变量(Local variables),方法定义参数(java语言规范称之为formal method parameters)和异常处理器参数(exception handler parameters)不会在线程之间共享,它们不会有
2015-12-16 16:39:23 3412
原创 Java多线程总结(3)— Timer 和 TimerTask深入分析
1. 基本概念 java.util.Timer:是一个实用工具类,该类用来调度一个线程(schedule a thread),使它可以在将来某一时刻执行。 Java的Timer类可以调度一个任务运行一次,或定期循环运行。 Timer tasks should complete quickly. 即定时器中的操作要尽可能花费短的时间。 java.util.TimerTask:是一个抽象类,它实现了
2015-12-15 22:31:27 6554 1
原创 Java多线程总结(2) — 线程生命周期中常用方法
1. 线程的状态回顾 线程从创建到最终的消亡,要经历若干个状态。一般来说,线程包括以下这几个状态:(原文更好理解,就不翻译了)New When we create a new Thread object using new operator, thread state is New Thread. At this point, thread is not alive and it’s a sta
2015-12-14 22:19:13 1074
原创 Java多线程总结(1) — 创建线程的两种方式
1. 基本概念1.1 ProcessA process is a self contained execution environment and it can be seen as a program or application. However a program itself contains multiple processes inside it. Java runtime enviro
2015-12-14 14:31:14 1282
原创 java反射机制(3)- 动态类加载与重载(Load and Reload)
1 类加载器 The ClassLoader Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由JVM中的类装载器Class Loader完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中 。 当一个类完成加载时,所涉及的类也都会被加载。类加载过程是一个递归的模式。但并不一定是一个应用里面所有类都会被加载,与这个被加载类的引用链无关的类是不会被加载的,直到有引用关系的
2015-12-04 15:31:16 5005
原创 Computer English
Java Reflection Tutorial1. Only scratch the surface of Java Reflection. 仅仅涉及java反射机制的皮毛2. This tutorial will also clear up some of the confusion out there about what Generics information i
2015-12-03 18:13:32 733
原创 java反射机制(2)- 实践:反射机制+动态代理实现模拟RMI远程方法调用
转载请注明出处:反射机制+动态代理实现模拟RMI远程方法调用 1 涉及主要知识点 1、RMI(Remote Method Invocation):远程方法调用是一种计算机之间利用远程对象互相调用实现双方通讯的一种通讯机制。使用这种机制,某一台计算机上的对象可以调用另外 一台计算机上的对象来获取远程数据。RMI是Enterprise JavaBeans的支柱,是建立分布式Java应用程序的方便途径。
2015-11-29 21:46:41 4642 4
原创 java反射机制(1)- 知识点总结Java Reflection API操作
转载需注明出处:java反射机制(1)- 知识点总结Java Reflection API操作1 什么是反射机制 什么是反射机制?简单点说就是程序在运行时能够获取自身的信息。在java中,只要给定类的全名,就可以通过反射机制来获取类的所有信息。 复杂点说就是:通过Class类,可以在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这
2015-11-28 17:02:58 4094 2
原创 Struts2系统学习(10)文件上传与下载案例及原理分析
10. 文件上传 第一步:上传组件依赖与commons-fileupload-1.3.1.jar和commons-io-2.2.jar。这两个文件可以从http://commons.apache.org/下载或struts解压缩包中获取。 第二步:把form表单的enctype设置为:“multipart/form-data“,如下:<form action="/Struts2Study/u
2015-11-17 17:03:46 1666
转载 Struts2系统学习(17)Struts2标签库详解
Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。头声明:struts2的标签可以分为五大类:一、逻辑控制标签(1)条件标签条件标签主要有3个子标签,用于执行基本的条件流转[
2015-11-16 12:44:49 1197
原创 Struts2系统学习(16)OGNL表达式及基本原理分析
16. OGNL表达式16.1 OGNL表达式语言简介 OGNL (Object Graph Navigation Language)对象图导航语言。Struts2框架使用OGNL作为默认的表达式语言。 OGNL相对其它表达式语言具有下面几大优势:支持对象方法调用,如xxx.doSomeSpecial();支持类静态方法的调用和值的访问,表达式的格式: @[类全名(包括包路径)]@
2015-11-15 22:52:09 1943
原创 Struts2系统学习(15)Struts2校验框架基本原理分析
15 Struts2校验框架 Struts2提供的验证框架,功能强大而且简单易用。那么一个好的验证框架需要考虑哪些因素呢? 1. 验证功能的复用性 比如都是对一个int数据类型的验证,验证的是它的数据范围,如果验证功能抽象的好,就可以复用同样的验证功能,省去重复开发的麻烦。 2. 验证功能的可扩展性 是不是可以自己扩展验证功能,并保证扩展功能和原有的框架功能一样使用。
2015-11-14 20:53:56 1622
原创 Struts2系统学习(14)输入校验-基于XML配置方式实现校验
14. 输入校验<font size=4> 在struts2中,我们可以实现对action的所有方法进行校验或者对action的指定方法进行校验。 对于输入校验,struts2提供了两种实现方法: 1. 采用手工编写代码实现。 2. 基于XML配置方式实现。<font size=4 color=#1099ff> 这一节,主要讨论基于XML配置方式实现校
2015-11-14 11:32:13 2484
原创 Struts2系统学习(13)输入校验-采用手工编写代码实现校验
13. 输入校验 在struts2中,我们可以实现对action的所有方法进行校验或者对action的指定方法进行校验。 对于输入校验,struts2提供了两种实现方法: 1. 采用手工编写代码实现。 2. 基于XML配置方式实现。 这一节,主要讨论采用手工编写代码实现校验。13.1 对action所有方法进行校验 通过重写validate() 方法
2015-11-14 11:26:03 1233
原创 Struts2系统学习(12)自定义拦截器
拦截器必须是无状态的,不要使用在API提供的ActionInvocation之外的任何东西。要求拦截器是无状态的原因是Struts 2不能保证为每一个请求或者action创建一个实例,所以如果拦截器带有状态,会引发并发问题。创建步骤:直接或间接实现接口com.opensymphony.xwork2.interceptor.Interceptor或者继承类com.opensymphony.
2015-11-13 21:07:10 975 1
原创 Struts2系统学习(11)多文件上传
11. 多文件上传 多文件上传类似与单文件上传。下面直接通过案例说明。 (1)提交表单:<form action="/Struts2Study/uploadFiles.action" enctype="multipart/form-data" method="post"> 文件1:<input name="uploadFile" type="file"><br> 文件2:<i
2015-11-13 20:52:32 840
原创 Struts2系统学习(9)Action中操作request/session/application等对象
9. Action中操作request/session/application对象 在action中操作request/session/application属性: 方法一:直接在scope范围内put数据ActionContext actionContext = ActionContext.getContext();
2015-11-13 20:08:50 1425
原创 Struts2系统学习(8)自定义类型转换器
8. Struts2自定义类型转换器 应用中,常需要将字符串请求参数转换为相应的数据类型,或将一定的数据类型类型转换为字符串显示显示给用户,Struts2提供了类型转换机制。 Struts2的类型转换是基于OGNL表达式(后期详细学习)的,只要我们把HTML输入项(表单元素和其他GET/POET的参数)命名为合法的OGNL表达式,就可以充分利用Struts2的转换机制。 除此之外,Struts2
2015-11-13 19:33:33 1142
原创 Struts2系统学习(7)Action中取得请求参数的方法总结
7. Action中取得请求参数的方法总结7.1 采用基本类型接收请求参数(get/post) 方法一:当把参数作为Action的类属性,且提供属性的getter/setter方法时,xwork的OGNL会自动把request参数的值注入到类对象的属性中,此时在action中访问请求参数只需要访问类属性即可。 方法二:可以通过ActionContext对象的Map parameterMap=
2015-11-13 10:43:36 1153
原创 Struts2系统学习(6)action中方法调用的三种方式总结
6 action中方法调用的三种方式总结 在Struts2中对action中的方法调用概括起来主要有三种形式: 第一种方式:配置文件中指定调用action的method属性<action name="student" class="com.markliu.Student" method="add"> <result name="add">/success.j
2015-11-13 10:29:29 4203
原创 Struts2系统学习(5)为应用指定多个struts配置文件
5. 为应用指定多个struts配置文件 在大部分应用里,随着应用规模的增加,系统中Action的数量也会大量增加,导致struts.xml配置文件变得非常臃肿。为了避免struts.xml文件过于庞大、臃肿,提高struts.xml文件的可读性,我们可以将一个struts.xml配置文件分解成多个配置文件,然后在struts.xml文件中包含<include>其他配置文件。下面的struts.x
2015-11-13 10:13:22 1140
原创 Struts2系统学习(4)Struts2的处理流程
4. Struts2的处理流程(初步了解) 此处先简单了解下Struts2的基本处理流程,后期会深入详细分析。 当用户请求到来时,web.xml中设置的过滤器拦截所有请求:<filter> <filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsP
2015-11-12 19:59:34 1048
原创 Struts2系统学习(3)Action深入
Action深入 在Struts2中,一个Action类代表一次请求或调用,每个请求的动作都对应于一个相应的Action类,一个Action类是一个独立的工作单元。 也就是说,用户的每次请求,都会转到一个相应的Action类里面,由这个Action类来进行处理,因此说一个Action类代表了用户的一次请求或调用。
2015-11-12 18:00:51 1198 1
原创 Struts2系统学习(2)Struts2-HelloWorld
2. Struts2—Hello World 在struts2框架中使用包来管理Action,包的作用和java中的类包是非常类似的,它主要用于管理一组业务功能相关的action。在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。
2015-11-12 16:52:32 924
原创 Struts2系统学习(1)Struts2简介与环境搭建
1. Struts2简介与环境搭建1.1 Struts2简介1.1.1 Struts2优点Struts2是在WebWork2基础发展而来的。和struts1一样,Struts2也属于MVC框架。不过有一点大家需要注意的是:尽管Struts2和struts1在名字上的差别不是很大,但Struts2和struts1在代码编写风格上几乎是不一样的。那么既然有了struts1,为何
2015-11-12 10:56:02 1020
原创 Ajax快速学习笔记
目录 1、 Ajax简介 12、 Ajax工作原理框图 13、 关于同步和异步 24、 Ajax所包含的技术 35、 XmlHttpRequest对象 36、 AJAX - 向服务器发送请求 56.1 open,send方法 56.2 post和get 56.3 url - 服务器上的文件 66.4 异步 - True 或 False 67、 AJA
2015-11-02 16:48:53 946
原创 xshell传输文件—rz,sz命令
在windows和linux上传或下载某个文件时,由于是跨系统,SCP不能使用,rz,sz可方便的解决此问题。rz,sz是便是Linux/Unix同Windows进行ZModem文件传输的命令行工具,简单方便。首先,linux服务器需要安装有rz,sz:sudo apt-get install lrzszrz命令:即接收文件,xshell就会弹出文件选择对话框,选好文件之后
2015-11-01 17:07:34 3541
转载 经典JavaScript正则表达式实战
匹配结尾的数字来源:如何用 javascript 正则表达式 取出字符串最后一组数字,谢谢如30CAC0040 取出403SFASDF92 取出92 正则如下:/\d+$/g --> \d+至少包含一个数字;$字符串结尾统一空格个数来源:正则匹配空格的问题字符串内字符键有空格,但是空格的数量可能不一致,通过正则将空格的个数统一变为一个。
2015-10-09 18:46:43 1264
转载 扩展系统功能——装饰模式(四):透明与半透明装饰模式,装饰模式注意事项,装饰模式总结
12.4 透明装饰模式与半透明装饰模式 装饰模式虽好,但存在一个问题。如果客户端希望单独调用具体装饰类新增的方法,而不想通过抽象构件中声明的方法来调用新增方法时将遇到一些麻烦,我们通过一个实例来对这种情况加以说明:在Sunny软件公司开发的Sunny OA系统中,采购单(PurchaseRequest)和请假条(LeaveRequest)等文件(Documen
2015-09-13 12:10:33 4422 2
转载 扩展系统功能——装饰模式(三):图形界面构件库的装饰模式解决方案
12.3 完整解决方案 为了让系统具有更好的灵活性和可扩展性,克服继承复用所带来的问题,Sunny公司开发人员使用装饰模式来重构图形界面构件库的设计,其中部分类的基本结构如图12-4所示:图12-4 图形界面构件库结构图 在图12-4中,Component充当抽象构件类,其子类Window、TextBox、ListBox充当具体构件类,Component类
2015-09-13 10:46:27 1068
转载 扩展系统功能——装饰模式(二):装饰模式概述
12.2 装饰模式概述 装饰模式可以在不改变一个对象本身功能的基础上给对象增加额外的新行为,在现实生活中,这种情况也到处存在,例如一张照片,我们可以不改变照片本身,给它增加一个相框,使得它具有防潮的功能,而且用户可以根据需要给它增加不同类型的相框,甚至可以在一个小相框的外面再套一个大相框。 装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式来给对象动态增加职
2015-09-13 10:34:11 750
转载 扩展系统功能——装饰模式(一):图形界面构件库的设计
尽管目前房价依旧很高,但还是阻止不了大家对新房的渴望和买房的热情。如果大家买的是毛坯房,无疑还有一项艰巨的任务要面对,那就是装修。对新房进行装修并没有改变房屋用于居住的本质,但它可以让房子变得更漂亮、更温馨、更实用、更能满足居家的需求。在软件设计中,我们也有一种类似新房装修的技术可以对已有对象(新房)的功能进行扩展(装修),以获得更加符合用户需求的对象,使得对象具有更加强大的功能。这种技术对应于一
2015-09-13 10:11:44 2124
转载 建造者模式(三):关于Director的进一步讨论,建造者模式总结
8.4 关于Director的进一步讨论 指挥者类Director在建造者模式中扮演非常重要的作用,简单的Director类用于指导具体建造者如何构建产品,它按一定次序调用Builder的buildPartX()方法,控制调用的先后次序,并向客户端返回一个完整的产品对象。下面我们讨论几种Director的高级应用方式: 1.省略Director 在
2015-09-12 20:55:41 2385
转载 建造者模式(二):游戏角色设计的建造者模式解决方案
8.3完整解决方案 Sunny公司开发人员决定使用建造者模式来实现游戏角色的创建,其基本结构如图8-3所示:图8-3 游戏角色创建结构图 在图8-3中,ActorController充当指挥者,ActorBuilder充当抽象建造者,HeroBuilder、AngelBuilder和DevilBuilder充当具体建造者,Actor充当复杂产品。完整代码如下所示
2015-09-12 20:40:00 3740
转载 复杂对象的组装与创建——建造者模式(一):游戏角色设计,建造者模式概述
没有人买车会只买一个轮胎或者方向盘,大家买的都是一辆包含轮胎、方向盘和发动机等多个部件的完整汽车。如何将这些部件组装成一辆完整的汽车并返回给用户,这是建造者模式需要解决的问题。建造者模式又称为生成器模式,它是一种较为复杂、使用频率也相对较低的创建型模式。建造者模式为客户端返回的不是一个简单的产品,而是一个由多个部件组成的复杂产品。8.1游戏角色设计Sunny软件公司游戏
2015-09-12 20:21:56 1642
转载 职责链模式(四):纯与不纯的职责链模式,职责链模式总结
16.4 纯与不纯的职责链模式 职责链模式可分为纯的职责链模式和不纯的职责链模式两种: (1)纯的职责链模式 一个纯的职责链模式要求一个具体处理者对象只能在两个行为中选择一个:要么承担全部责任,要么将责任推给下家,不允许出现某一个具体处理者对象在承担了一部分或全部责任后又将责任向下传递的情况。而且在纯的职责链模式中,要求一个请求必须被某一个处理
2015-09-07 18:34:30 1219
转载 职责链模式(三):采购单分级审批的职责链模式解决方案
16.3 完整解决方案 为了让采购单的审批流程更加灵活,并实现采购单的链式传递和处理,Sunny公司开发人员使用职责链模式来实现采购单的分级审批,其基本结构如图16-3所示: 在图16-3中,抽象类Approver充当抽象处理者(抽象传递者),Director、VicePresident、President和Congress充当具体处理者(具体传递者),Purch
2015-09-07 18:18:37 1656
我国网上零售市场现状及影响因素研究
2022-07-04
基于主成分分析的江苏省城市竞争力研究
2022-07-04
智能医学平台创业商业计划书
2022-07-01
研究资讯 _ 应用视角 _ 人工智能在医学影像领域的应用
2022-06-29
北邮-计算机软件基础实验-全套 Python 代码
2022-06-21
SE305 数据库技术-Database System Technology-全套 PPT 课件-作业
2022-06-21
EI374 高级算法-全套 PPT 课件-笔记
2022-06-21
EI339 人工智能-ARTIFICIAL INTELLIGENCE-全套 PPT 课件
2022-06-21
EI338 计算机系统工程-Computer Systems Engineering-全套 PPT 课件
2022-06-21
EI333 软件工程-Software Engineering-全套 PPT 课件
2022-06-21
EI332计算机组成原理-Computer Organization and Application-全套 PPT课件
2022-06-21
EI331 信号与系统-Signals and Systems-全套 PPT 课件
2022-06-21
CS385 机器学习-全套 PPT 课件-作业
2022-06-21
CS258 信息论-Information Theory-全套 PPT 课件
2022-06-21
CS222 算法分析与设计-ALGORITHM DESIGN AND ANALYSIS-全套 PPT 课件
2022-06-21
CS221 数据结构-全套 PPT 课件
2022-06-21
CS125 程序设计-程序设计思想与方法-全套PPT
2022-06-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人