2013年11月10日

数据库的死锁及解决

摘要: deadlocks(死锁)所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程.由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。 一种情形,此时执行程序中两个或多个线程发生永久堵塞(等待),每个线程都在等待被其他线程占用并堵塞了的资源。例如,如果线程A锁住了记录1并等待记录2,而线程B锁住了记录2并等待记录1,这样两个线程就发生了死锁现象。计算机系统中,如 阅读全文

posted @ 2013-11-10 20:43 heartstage 阅读(395) 评论(0) 推荐(0) 编辑

Java小对象的解决之道——对象池(Object Pool)的设计与应用

摘要: 一、概述面向对象编程是软件开发中的一项利器,现已经成为大多数编程人员的编程思路。很多高级计算机语言也对这种编程模式提供了很好的支持,例如C++、Object Pascal、Java等。曾经有大量的软件工程师使用C语言作为他们的谋生工具,随着面向对象的深入人心,微软公司也对其C语言进行了扩充,形成了C++语言,全面支持面向对象的软件开发模式。“面向对象”的主角即是“对象”,其良好的可充用性和对数据逻辑的封装成了它在当今计算机软件开发领域一炮走红的主要因素。程序开发人员也正是利用了对象的这些特点在程序中大量创建对象,以至于他们往往忽略了这种创建对象以及以后销毁对象是带来的系统开销之大是多么不可想象 阅读全文

posted @ 2013-11-10 20:30 heartstage 阅读(4484) 评论(0) 推荐(0) 编辑

Java中的对象池技术

摘要: java中的对象池技术,是为了方便快捷地创建某些对象而出现的,当需要一个对象时,就可以从池中取一个出来(如果池中没有则创建一个),则在需要重复重复创建相等变量时节省了很多时间。对象池其实也就是一个内存空间,不同于使用new关键字创建的对象所在的堆空间。本文只从java使用者的角度来探讨java对象池技术,并不涉及对象池的原理及实现方法。个人认为,如果是真的专注java,就必须对这些细节方面有一定的了解。但知道它的原理和具体的实现方法则不是必须的。1,对象池中对象和堆中的对象public class Test{ Integer i1=new Integer(1); Integer i2=new 阅读全文

posted @ 2013-11-10 20:29 heartstage 阅读(2176) 评论(0) 推荐(0) 编辑

死锁活锁饥饿

摘要: 死锁定义:一组进程中的每一个进程,均无限期地等待此组进程中某个其他进程占有的,因而永远无法得到的资源,这种现象称为进程死锁。结论:参与死锁的进程至少有二个每个参与死锁的进程均等待资源参与死锁的进程中至少有两个进程占有资源;死锁进程是系统中当前进程集合的一个子集。在一个动态系统中,资源请求与释放是经常性发生的进程行为.对于每类系统资源,操作系统需要确定一个分配策略,当多个进程同时申请某类资源时,由分配策略确定资源分配给进程的次序。资源分配策略可能是公平的(fair),能保证请求者在有限的时间内获得所需资源;资源分配策略也可能是不公平的(unfair),即不能保证等待时间上界的存在。在后一种情况下 阅读全文

posted @ 2013-11-10 20:28 heartstage 阅读(1602) 评论(0) 推荐(0) 编辑

java中ThreadLocal类的使用

摘要: ThreadLocal是解决线程安全问题一个很好的思路,ThreadLocal类中有一个Map,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值对应线程的变量副本,由于Key值不可重复,每一个“线程对象”对应线程的“变量副本”,而到达了线程安全。我们知道Spring通过各种DAO模板类降低了开发者使用各种数据持久技术的难度。这些模板类都是线程安全的,也就是说,多个DAO可以复用同一个模板实例而不会发生冲突。我们使用模板类访问底层数据,根据持久化技术的不同,模板类需要绑定数据连接或会话的资源。但这些资源本身是非线程安全的,也就是说它们不能在同一时刻被多个线程共享。虽然模板类通过资源 阅读全文

posted @ 2013-11-10 20:23 heartstage 阅读(583) 评论(0) 推荐(0) 编辑

Java多线程-run方法与start方法的区别

摘要: [java] view plaincopyprint?packagecom.interview;/***java多线程的两种实现方式以及run、start方法的区别*@authorMEI.LIU**/publicclassThreadTest{publicstaticvoidmain(String[]args)throwsInterruptedException{ThreadTesttt=newThreadTest();Thread1t1=tt.newThread1();Thread2t2=tt.newThread2();Thread3t3=tt.newThread3();Thread4t4= 阅读全文

posted @ 2013-11-10 19:58 heartstage 阅读(502) 评论(0) 推荐(0) 编辑

Java并发编程实践笔记

摘要: 1, 保证线程安全的三种方法 : a, 不要跨线程访问共享变量 b, 使共享变量是 final类型的 c, 将共享变量的操作加上同步2, 一开始就将类设计成线程安全的 , 比在后期重新修复它 ,更容易 .3, 编写多线程程序 , 首先保证它是正确的 , 其次再考虑性能 .4, 无状态或只读对象永远是线程安全的 .5, 不要将一个共享变量裸露在多线程环境下 (无同步或不可变性保护 )6, 多线程环境下的延迟加载需要同步的保护 , 因为延迟加载会造成对象重复实例化7, 对于 volatile 声明的数值类型变量进行运算 , 往往是不安全的 (volatile 只能保证可见性 , 不能保证原子性 ) 阅读全文

posted @ 2013-11-10 19:57 heartstage 阅读(163) 评论(0) 推荐(0) 编辑

Socket读取页面

摘要: http://www.knowsky.com/363189.htmlhttp://hi.baidu.com/myyers/item/f90fa3f57d89e1d243c36a34http://hi.baidu.com/gnevvsnnkzbabjd/item/25b9211c1629450ce65c36ad 阅读全文

posted @ 2013-11-10 15:03 heartstage 阅读(208) 评论(0) 推荐(0) 编辑

Struts2与Servlet之间的关系

摘要: 在struts2.0中,可以通过ServletActionContext.getRequest()获取request对象。 在action的方法中return一个字符串,该字符串对应struts.xml中的result标签的name相同,result标签中包含的就是跳转页面, 其原理,我的理解是这样的: 一.客户端提起一个(HttpServletRequest)请求,如上文在浏览器中输入”http://localhost:8080/TestMvc/add.action” 二.请求被提交到一系列(主要是三层)的过滤器(Filter),如ActionContextCleanUp,FilterDis 阅读全文

posted @ 2013-11-10 14:55 heartstage 阅读(578) 评论(0) 推荐(0) 编辑

JVM中堆内存和栈内存的区别

摘要: Java把内存分成两种,一种叫做栈内存,一种叫做堆内存在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在栈中的这个特殊的变量就变成了数组或者对象的引用变量,以后就可以在程序中使用栈内存中的引用变量 阅读全文

posted @ 2013-11-10 14:01 heartstage 阅读(1213) 评论(0) 推荐(0) 编辑

java basic

摘要: java中的修饰符http://bdcwl.blog.163.com/blog/static/76522265200910232174261/java static final 初始化http://tanbing1986411.blog.163.com/blog/static/7259798220103610224434/java final变量http://blog.csdn.net/adderking/article/details/7622983 阅读全文

posted @ 2013-11-10 13:57 heartstage 阅读(126) 评论(0) 推荐(0) 编辑

Oracle plsql

摘要: http://wenku.baidu.com/view/336e950b763231126edb11a6.htmlhttp://wenku.baidu.com/view/0b9beb6448d7c1c709a14504.htmlhttp://wenku.baidu.com/link?url=VMgKeSLbGfa_Levi-haFYyy0H9tpZH8PeUMHNx53ils1lI_KuQvm_-xoKC8U8CXHkau_nSzX6ScrwX29RJgsFVBJcCdwu7Ue0fqiInmdzkqhttp://wenku.baidu.com/link?url=mUs6qC4iq5xGX5X 阅读全文

posted @ 2013-11-10 13:56 heartstage 阅读(166) 评论(0) 推荐(0) 编辑

Spring和依赖注入的价值

摘要: javaeye上看到有帖子,置疑spring和依赖注入的价值,回复内容整理如下: 依赖注入对设计有利,而spring则促进了依赖注入的使用。 如果业务处理类,它所使用的倚赖,都是依靠在这个类内部实现或者查找,那么必然使得正常的业务逻辑和获取依赖的方法混在一起。 我取个最简单的场景,某个注册的工作类,它需要获取当前"容许的用户名的最大长度",这个依赖非常简单吧?基本每个注册类都有这个限制,我们现在 把场景考虑的全面一点,对于复杂一点的系统,这个最大长度的限制可能来源很多,比如配制文件,数据库,可能类工作在前台比如web而配制在后台,可能需要 和第三放系统一起工作而需要到第三方 阅读全文

posted @ 2013-11-10 13:46 heartstage 阅读(287) 评论(0) 推荐(0) 编辑

JDBC操作数据库的基本流程

摘要: 所有的JDBC应用程序都具有下面的基本流程: 1、加载数据库驱动并建立到数据库的连接。 2、执行SQL语句。 3、处理结果。 4、从数据库断开连接释放资源。下面我们就来仔细看一看每一个步骤:其实按照上面所说每个阶段都可得单独拿出来写成一个独立的类方法文件。共别的应用来调用。1、加载数据库驱动并建立到数据库的连接:[html] view plaincopyprint?StringdriverName="com.mysql.jdbc.Driver";StringconnectiionString="jdbc:mysql://10.5.110.239:3306/test 阅读全文

posted @ 2013-11-10 13:42 heartstage 阅读(382) 评论(0) 推荐(0) 编辑

Java 字符串倒序输出

摘要: http://zhidao.baidu.com/link?url=EgrnN03fDYLB1qu5TbzwyaL4Q9aWGz3QVTldC8UwfuvzNg2ikQrDr1-AhxARZxjrEdHfSXg6FU7JzfN1jod1mRAffA2g5R5pzkZx-Fcshlmhttp://blog.csdn.net/justinavril/article/details/2719567 阅读全文

posted @ 2013-11-10 13:31 heartstage 阅读(209) 评论(0) 推荐(0) 编辑

java中类的加载,及执行顺序

摘要: http://hi.baidu.com/linyongboole/item/74c32815dbe5c10fd1d66d04 阅读全文

posted @ 2013-11-10 13:27 heartstage 阅读(149) 评论(0) 推荐(0) 编辑

Forward与include的区别

摘要: Forward与include的区别标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入。从一个JSP文件传递request信息到另外一个JSP文件,后面的部分将不会被执行。可以使用传递参数。将包含的文件放在JSP中和其他一起执行。标签用于把请求转发给另外一个资源。语法:"/>page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得getRequestDispatcher后面的参数可以是一个servlet,jsp或者html页面 对于forward方法,本意是让第一个页面处理request,第 阅读全文

posted @ 2013-11-10 13:26 heartstage 阅读(483) 评论(0) 推荐(0) 编辑

Java 排序算法

摘要: Java 排序算法http://easense2009.iteye.com/blog/1568614 阅读全文

posted @ 2013-11-10 13:22 heartstage 阅读(114) 评论(0) 推荐(0) 编辑

Java异常处理机制及两种异常的区别

摘要: java异常处理机制主要依赖于try,catch,finally,throw,throws五个关键字。 try 关键字后紧跟一个花括号括起来的代码块,简称try块。同理:下面的也被称为相应的块。 它里面可置引发异常的代码。catch后对应异常类型和一个代码块,用于表明catch块用于处理这种类型的代码块。后还可以跟一个finally块,finally块用于回收在try块里打开的物理资源,异常机制会保证finally块总被执行。throws关键字主要在方法签名中使用,用于声明该方法可能抛出的异常,而throw则用于抛出一个实际的异常,throw可以单独作为语句使用,抛出一个具体的异常的对象 .. 阅读全文

posted @ 2013-11-10 13:21 heartstage 阅读(639) 评论(0) 推荐(0) 编辑

Java异常处理机制

摘要: 本文从Java异常最基本的概念、语法开始讲述了Java异常处理的基本知识,分析了Java异常体系结构,对比Spring的异常处理框 架,阐述了异常处理的基本原则。并且作者提出了自己处理一个大型应用系统异常的思想,并通过设计一个异常处理的框架来论述此思想。 一、 异常的概念和Java异常体系结构 异常是程序运行过程中出现的错误。本文主要讲授的是Java语言的异常处理。Java语言的异常处理框架,是Java语言健壮性的一个重要体现。 Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。在Java API中已经定义了许多异常类,这些异常类分为两大类, 阅读全文

posted @ 2013-11-10 13:20 heartstage 阅读(122) 评论(0) 推荐(0) 编辑

导航