JAVA
chaobin05240108
glkk8.com?s=csdn
展开
-
JVM学习之—初识Java虚拟机
在大学的时候,一提到Java虚拟机,就马上想到JDK的Java命令,工作了2、3年,遇到内存溢出,才想到Jmap、Jstat命令、或者想到Java的一个进程(ps-ef|grep java、jsp-mlv)等。一直到现在,对JAVA虚拟机的真正的原理还并不熟悉,一下只是JVM的学习总结: 实际上呢,Java虚拟机包括三层的含义:(1)抽象的规范(2)一个具体的实现(3)一个原创 2013-12-21 17:50:23 · 610 阅读 · 0 评论 -
Java多线程设计模式 第九 Future Pattern
Future 是“未来”、“期货”的意思,假设有一个执行起来需要花一些时间的方法,我们就不要等待执行结果出来了,而获取一张替代的“提货单”。因为获取“提货单”不需要花费时间,这时这个“提货单”就是Future参与者。获取Future参与者的线程,会在事后再去获取执行结果。就好像拿着提货单去领取蛋糕一样,如果已经有执行结果了,就可以马上拿到数据。如果执行结果还没有好,则继续等待到执行结果出现为止原创 2014-08-04 07:43:33 · 600 阅读 · 0 评论 -
Java多线程设计模式 第十 Two-Phase Termination Pattern
“两阶段终止”,这个模式用来进行结束的操作后,再终止线程。 我们将线程进行平常的处理的状态称为[作业中]。当希望结束这个线程时,则送出“终止请求”。接着这个线程,并不会马上结束,而会开始进行必要的刷新工作。这个状态称为[终止处理中]。从[作业中]改变成[终止处理中]是第一阶段。[终止处理中]的状态时,不会进行平常的操作,虽然线程还在运行,但进行的是终止处理,直到终止处理结束后,才真正结原创 2014-08-05 07:55:29 · 490 阅读 · 0 评论 -
Java多线程设计模式 第十一 Thread-Specific-Storage Pattern
每个线程的保管箱,针对每个线程提供的内存空间;Thread-Specific Storage还有Per-Thread Attribute(每个线程的内容)Thread-Specific Data(线程独有的数据)Thread-Specific Field(线程独有的字段)Thread-Local Stroage(线程的区域内存空间)等各种称呼可以用java.lang.T原创 2014-08-05 17:40:23 · 815 阅读 · 0 评论 -
Java多线程设计模式 第五 生产者-消费者模式
生产者-消费者模式是在生产者与消费者之间加入一个“桥梁参与者”,以这个桥梁参与者缓冲线程之间的处理速度差。一般来说,可能存在多个生产者与多个消费者,不过也有可能生产者与消费者都只有一个。当两方都只有一个时,我们也称之为Pipe Pattern.范例程序中有2名厨师cook1、cook2 不停地做蛋糕放在桌子上,有2名顾客consumer1、consumer2不停地吃(胃口好,吃不饱),原创 2014-08-02 19:43:05 · 544 阅读 · 0 评论 -
关于Synchronized
遇到synchronized时,一定要想想这个锁在保护什么,保护的什么对象。Synchronized修饰方法时,是对当前对象进行加锁,类的两个不同实例就没有这种约束了。下面看一个例子,类Exam有两个方法isSyncA()与isSyncB();类Exam的两个实例a,b则:a.isSyncA()与a.isSyncB()是互斥的见图(a2),然而a.isSyncA与b.isSyncB()原创 2014-08-08 22:24:24 · 373 阅读 · 0 评论 -
AppScan漏洞扫描,问题处理总结
最近要上线一个项目,没有想到上线之前必须执行漏洞扫描,通过IBM Rational AppScan扫描发现不少问题1.输入框的特殊字符问题2.登录密码的加密(MD5)3.攻击性拦截对于第一个问题,用户名、密码、验证码 都必须进行特殊字符验证,否则的话AppScan给个严重警告。第二个问题,一般都会注意。第三个问题,攻击性处理,对于密集的攻击,最好还是搞成密码输入三次错误,2原创 2013-12-23 20:45:44 · 3010 阅读 · 1 评论 -
BeanPostProcessor
对项目中的所有bean进行一个代理。然后监控bean得方法的使用情况。转载 2014-09-28 16:12:22 · 345 阅读 · 0 评论 -
memcache的原理和命中率的总结
1 Memcache是什么Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自治理这些HashTable。 为什么会转载 2014-11-10 16:56:38 · 488 阅读 · 0 评论 -
二维码的数据容量
版本:即通常所说的QR码的版本,QR码从版本1到版本40共有四十个版本。版本1数据容量最小,版本四十容量最大。纠错等级:QR码有四个纠错等级,由高到低为L、M、Q、H,对应纠错率为7%,15%,25%,30%。纠错等级是在QR码在有一定损伤的情况下也能解码成功的比率。数字,字母数字,八位字节,日本汉字,中国汉字:分别是指在某版本下,对应的纠错级别所能容纳的纯数字、或纯字母数字、或纯八位字节转载 2014-10-09 16:32:26 · 4234 阅读 · 0 评论 -
解决svn的working copy locked并且cleanup恢复不能的情况
产生这种情况大多是因为上次svn命令执行失败且被锁定了。如果cleanup没有效果的话只好手动删除锁定文件。cd 到svn项目目录下,然后执行如下命令del lock /q/s就把锁删掉了。转载 2014-10-28 15:37:44 · 627 阅读 · 0 评论 -
Eclipse进行远程Debug代码
1.打开Eclipse,点击左上角的debug按钮,如图:转载 2014-10-30 18:44:39 · 492 阅读 · 0 评论 -
Java多线程设计模式 第七 Thread-Per-Message Pattern
每个消息/命令一个线程,对于每个命令或请求,分配一个线程,由这个线程执行操作。Thread-Per-Message的参与者如下:(1)Client(委托人)(2) Host(接收人)(3) Helper(任务处理人)UML类图如下所示:原创 2014-08-03 16:13:11 · 555 阅读 · 0 评论 -
Java多线程设计模式 第八 Worker Thread Pattern
工人线程(worker thread)会依次抓一件任务来处理,当没有任务时,工人线程会停下来等待。Worker-Thread也成为Background-Thread(背景线程),或者Thread-PoolWorker-Thread的所有参与者(1) Request(请求/任务)(2) WorkerThread(工人线程)(3) Channel(车间)原创 2014-08-03 20:21:39 · 765 阅读 · 0 评论 -
进程与线程
进程与线程之间的关系,会因为平台的差异(操作系统、硬件)有极大的不同,即使在相同的平台,进程与线程之间的关系也会因为JVM的实现方式而有所不同。一般而言,一个进程可以创建多个线程,进程与线程最大的差异在于内存能否共享进程:每个进程所拥有的内存空间是各自独立的,进程不能擅自读取、改写其他进程的内存空间。进程之间的切换比较复杂。线程:线程则是共享内存的,在java中就是共享相同原创 2014-08-03 17:52:16 · 348 阅读 · 0 评论 -
java获取主机IP地址总结
1.第一种方法,也是大家最常用的方法 InetAddress.getLocalHost().getHostAddress() 有些服务器上,这个方法得到的ip地址是127.0.0.1,但是,大多数服务器,都能够得到真实ip只要是得到127的地址的,hosts文件的配置都是这样:127.0.0.1 localhost.localdomain localhost::1 loc原创 2014-01-21 14:30:11 · 993 阅读 · 0 评论 -
创建和销毁对象
一、考虑用静态工厂方法代替构造器1.静态工厂方法的优势(1)易读性 例如:java.math.BigInteger构造器BigInteger(int,int,Random)返回的BigInteger可能为素数;如果用名为BigInteger.probablePrime的静态工厂方法来表示,则简单易懂。(2)不必每次调用它们的时候都创建一个新的对象。(3)可以返回转载 2014-02-07 18:36:36 · 523 阅读 · 0 评论 -
关于Object的扩展
Object所有的非final方法(equals、hashCode、toString、clone和finalize)都有明确的通用约定,它们被设计成是要被覆盖(override)的。一、覆盖equals时要遵守通用约定什么时候应该覆盖equals,如果类具有自己特有的“逻辑相等”概念,而且超类还没有覆盖equals以实现期望的行为,这时我们就需要覆盖equals方法。在覆盖equals转载 2014-02-10 15:48:52 · 459 阅读 · 0 评论 -
类和接口
类和接口是Java程序设计语言的核心,也是Java语言的基本抽象单元。类和接口设计的指导原则如下:一、使类和成员的可访问性最小化设计良好的模块会隐藏所有的实现细节,把它的API与它的实现清晰地隔离开来。然后,模块之间只通过它们的API进行通信,一个模块不需要知道其他模块的内部工作情况。这个概念被称为信息隐藏或者封装,是软件设计的基本原则之一。 封装的重要性在于:它可以有效地解转载 2014-02-10 18:43:48 · 409 阅读 · 0 评论 -
泛型
一、不要在新代码中使用原生态类型如果使用原生态类型,就失掉了泛型在安全性和表述性方面的所有优势。原生态类型只是为了与引入泛型之前的遗留代码进行兼容和互用而提供的。Set是个参数化类型,表示可以包含任何对象类型的一个集合,Set则是一个通配符类型,表示只能包含某种未知对象类型的一个集合;Set则是个原生态类型,它脱离了泛型系统,前两种是安全的,最后一种不安全。 二、消除非受检警告转载 2014-02-12 18:17:04 · 461 阅读 · 0 评论 -
Java GC
JVM内存组成结构JVM内存结构由堆、栈、本地方法栈、方法区等部分组成,结构图如下所示:1)堆所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,最后Survivor由FromSpace和ToSpace组成,结构图如下所示:新转载 2014-03-31 14:52:54 · 307 阅读 · 0 评论 -
JVM OPTS设置
JAVA_OPTS设置 JVM:JAVA_OPTS="-server -Xms2048m -Xmx2048m -Xss512k"-server:一定要作为第一个参数,在多个CPU时性能佳-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些-Xmx:java heap最大值,使用的最大内存上面两个值是分配JVM的最小和最大内存,取决于硬件物转载 2014-03-31 15:05:06 · 1411 阅读 · 0 评论 -
UML中 依赖关系,实现关系,泛化关系,关联关系(组合、聚合)
一、依赖关系(Dependence):假设A类的变化引起了B类的变化,则说明B类依赖于A类。转载 2014-06-05 22:17:27 · 594 阅读 · 0 评论 -
进程和线程
一、定义1.进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。转载 2014-06-05 20:37:41 · 320 阅读 · 0 评论 -
关于InterruptedException
当方法可能会抛出InterruptedException时,意味着该方法:(1) 这是“需要花些时间运行”的方法(2) 这是“可以取消”的方法有以上特点的Java标准类中主要是以下三个:(1) Java.lang.Object类的wait方法(2) Java.lang.Thread类的sleep方法(3) Java.lang.Thread类的j原创 2014-08-02 19:46:27 · 536 阅读 · 0 评论 -
Java多线程设计模式 第六 读-写模式
读-写模式将读取与写入分开来处理,在读取数据之前,获取共享锁,要写入的时候,获取互斥锁。写与写、读与写、写与读之间是互斥的;读与读之间是可以共享的;利用了“读取”操作彼此不会冲突的特性,提高程序的性能。适合读取操作繁重以及读取比写入次数频繁。 读-写模式的参与者如下:(1) ReaderThread(读取者)(2) WriterThread(写入者)(3) D原创 2014-08-03 10:05:13 · 699 阅读 · 0 评论 -
UUID
UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。 通常平台会提供生成UUID的API。UUID按照开放软件基金会(OSF)制定的标准计算, 用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。 表示通用唯一标识符 (UUID) 的类。 UUID 表示一个 128 位的值。 这些通用标识符具有不同的变体。此类的方法用于操作 Leac转载 2014-12-09 14:42:02 · 488 阅读 · 0 评论