Java SE
文章平均质量分 59
童年的天空
管理?产品?技术?运营?项目?不求面面精通,但求左右逢源。
展开
-
高并发系统限流中的漏桶算法和令牌桶算法,通过流量整形和速率限制提升稳定性
在大数据量高并发访问时,经常会出现服务或接口面对暴涨的请求而不可用的情况,甚至引发连锁反映导致整个系统崩溃。此时你需要使用的技术手段之一就是限流,当请求达到一定的并发数或速率,就进行等待、排队、降级、拒绝服务等。在限流时,常见的两种算法是漏桶和令牌桶算法算法,本文即对相关内容进行重点介绍。一、漏桶和令牌桶算法的概念漏桶算法(Leaky Bucket):主要目的是控制数据注入到网络的速率,平滑网络上原创 2016-11-09 18:20:22 · 11271 阅读 · 5 评论 -
JVM调优总结 -Xms -Xmx -Xmn -Xss
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。 典型设置:java-Xmx35转载 2012-10-21 12:15:12 · 1259 阅读 · 0 评论 -
使用递归算法将批量调用异步处理转化为同步调用,并使用Java模拟ExtJs异步处理同步化(续)
上一篇文章(http://blog.csdn.net/scorpio3k/article/details/7875895)中提到在Ex tJs中使用递归处理批量发送异步请求同步化的问题,但后来被指点javascript的递归会存在严重的性能问题,是javascript对递归的实现不好,但java中的递归的思路应该是没有问题的。对于javascript,原本的思路是这样的:batchProc原创 2012-08-17 13:43:25 · 2422 阅读 · 1 评论 -
使用递归算法将批量调用异步处理转化为同步调用,并使用Java模拟ExtJs异步处理同步化
【问题】使用ExtJs处理批量数据时,使用for循环通过Ext Ajax调用后台,代码如下:for(var i=0; i<params.length; i++){ Ext.Ajax.request({ url:this.url, params:params[i], method:'POST', success:function(response) { }, sco原创 2012-08-17 09:42:41 · 4370 阅读 · 0 评论 -
BI:Java调用Kettle执行任务或转换
Java调用Kettle执行任务或转换,需要使用Kettle中的jar,可以先导入lib目录中的几个基本的jar,如:kettle-core.jar、kettle-db.jar、kettle-engine.jar ,其它jar根据情况进行添加,所需的jar在\lib、\libext下面都可以找到,本示例引用的jar如下图: 之后编写代码测试Java调用,调用前先使用Kett原创 2012-08-15 15:06:27 · 33889 阅读 · 17 评论 -
策略枚举模式
先看看策略模式:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(原文:The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them interchangeable. Strategy lets the alg原创 2012-07-23 08:50:34 · 2832 阅读 · 0 评论 -
Java编程中“为了性能”需做的26件事
最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了。下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。1.尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:转载 2012-06-11 12:57:19 · 909 阅读 · 0 评论 -
ibatis缓存介绍
转自:http://www.cnblogs.com/yongze103/archive/2011/07/25/2116593.html 一、缓存介绍1.1、引入 什么影响Internet访问速率? 访问网站的过程是通过建立在TCP/IP协议之上的HTTP协议来完成的。从客户端发出一个HTTP请求开始,用户所经历的等待时间主要决定于DNS和网站的响应时间。网站域名转载 2012-02-26 13:56:15 · 1236 阅读 · 0 评论 -
java锁机制Synchronized
java锁机制Synchronized转载 2010-12-17 09:04:00 · 1568 阅读 · 0 评论 -
Java获取操作系统信息
Java获取操作系统信息转载 2010-12-17 08:58:00 · 1098 阅读 · 0 评论 -
Ant/Junit: 利用Ant执行测试用例并生成测试报告
ant junit report原创 2010-09-05 20:27:00 · 3261 阅读 · 0 评论 -
java编程中使用二进制进行权限或状态控制
基本概念package test;public class Rights { public static void main(String[] args) { int a=1; // 001 状态a int b=2; // 010 状态b int c=4; // 100 状态c int ab = a | b; // 001 | 010 = 011 初始状态原创 2012-10-22 23:05:20 · 8277 阅读 · 3 评论 -
JAXB: 使用JAXB标注POJO,进行XML转换
JAXB POJO XML java 李文锴原创 2010-09-11 17:50:00 · 2553 阅读 · 0 评论 -
在线/不重启/不暂停的对Java应用进行Debug,通过程序打断点并输出断点信息
平时我们进行程序开发时经常需要通过Debug的方式查看代码运行到某一行时的上下文变量信息,以便进行代码调式分析。但是在生产环境下,正在线上运行的程序如果发现有问题需要进行调式,如果手动SocketRemote连接并设置断点并跟踪断点信息,会造成程序阻塞,影响线上正在运行的业务。本文将通过Java JDI技术,介绍如何在程序正常运行的情况下,通过Java代码在不阻塞程序正常运行的情况下获取某一个代码原创 2016-10-26 17:59:10 · 5110 阅读 · 0 评论 -
Java的Integer类型用==进行比较原来还有神奇的结果,奥秘是对象缓冲池
在JDK5.0以后,JVM在启动的时候会实例化9个对象池,这9个对象池分别用来存储八种基本数据类型的包装类(比如int对应的Integer)和String对象(当我们在程序中直接用双引号括起来一个字符串时,JVM就到String的对象池里面去找是否有一个相同值的对象,如果有就拿现成的对象,如果没有就在对象池里面创建一个对象,并返回)。来看下面一个例子:输出的结果为:上面的结果可能和很多人预想的不一原创 2016-10-25 11:01:02 · 1727 阅读 · 0 评论 -
JVM类加载时经典的双亲委派模型
双亲委派模型:某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,依次递归,如果父类加载器可以完成类加载任务,就成功返回;只有父类加载器无法完成此加载任务时,才自己去加载。类加载器按照层次,从顶层到底层,分为以下三种(1)启动类加载器(Bootstrap ClassLoader) 这个类加载器负责将存放在JAVA_HOME/lib下的,或者被-Xbootclasspath参数原创 2016-07-27 18:54:45 · 1502 阅读 · 0 评论 -
ActiveMQ常见的高可用架构模式及使用LevelDB、ZooKeeper进行高可用消息架构
ActiveMQ进行高可用架构可以采用主从方式(Master-Slave)或负载均衡(集群)方式。 1. 主从模式Master-Slave方式中,只能是Master提供服务,Slave是实时地备份Master的数据,以保证消息的可靠性。当Master失效时,Slave会自动升级为Master,客户端会自动连接到Slave上工作。主从模式,可以使用如下方式实现:1.1. 基于共享文件(Shared原创 2016-07-27 18:48:53 · 4963 阅读 · 1 评论 -
BI: Kettle获取命令行参数和Java调用Kettle传递参数
本示例旨在实现数据抽取,支持抽取指定ID的数据和全部数据功能,其中指定的ID通过Java传递。如下为Java调用本地的转换文件,其中String[] params就是参数,示例传递了两个参数:“123”, “234”,传递的参数全部是字符串类型,使用时需要转换成具体的格式: /** * 调用本地的转换文件(带参数) * * @Description: * @param tra原创 2012-08-16 10:39:58 · 19503 阅读 · 1 评论 -
Java Class编译时使用的JDK版本查看
使用二进制查看class文件 版本对应关系JDK 编译器版本target 参数十六进制 minor.major十进制 minor.majorjdk1.1.8不能带 target 参数00 03 00 2D45.3jdk1.2.2不带(默认为 -target 1.1)00 03 00 2D45.3原创 2014-03-11 15:03:50 · 8635 阅读 · 0 评论 -
使用jeval进行精确的浮点数计算
比较了多个工具,使用jeval计算的结果,对于浮点数的计算是最精确的。 /** * 表达式计算 * * @Description: * @param exp * @return * @throws Exception * @author李文锴 * @since:2011-8-20 下午02:59:22 */ pri原创 2013-03-05 13:57:43 · 2045 阅读 · 0 评论 -
MD5加密
import java.lang.reflect.Array;public class MD5 {/** * MD5算法的java Bean * md5 类实现了RSA Data Security, Inc.在提交给IETF * 的RFC1321中的MD5 message-digest 算法。 * */ /* 下面这些S11-S44实际上是一个4*4的矩阵,在原始的C实现转载 2008-11-21 10:11:00 · 1207 阅读 · 0 评论 -
Java SE 下使用Timer和TimerTask进行定时服务,时间的格式化
最近在做一个项目,用到了定时服务,所以把代码拿来与大家分享。 /** * 根据启动时间,启动定时器的定时服务,间隔24小时字段运行 * @param time */ private void getOrderByAuto(String time) { timer = new Timer(); //任务调度 t原创 2009-01-09 17:27:00 · 1445 阅读 · 0 评论 -
BigDecimal帮助double进行精确运算
double、float类型不能精确的表示0.1double d1 = 5.85;double d2 = 3.21;所以d1 - d2 = 2.6399999999999997此时可以使用如下方法(根据小数点位数进行扩增),但要防止数值越界double d = d1*100 - d2*100; d = d/100;System.out.println(d);或者使用BigDecim原创 2009-03-19 23:08:00 · 4039 阅读 · 1 评论 -
JConsole:给普通命令行程序和Tomcat添加JMX支持
jconsole jmx tomcat原创 2010-09-03 08:59:00 · 2979 阅读 · 2 评论 -
spring来发EMAIL
spring对mail的支持是org.springframework.mail.MailSender接口来定义的,其中的org.springframework.mail.javamail.JavamailSenderImpl这个实现类提供了对javamail的支持,下面简单介绍其用法,首先看下不用注入的方法,再看用注入的方法。1、发送简单邮件的例子 首先,我们要需要springframwo转载 2009-10-19 22:38:00 · 1521 阅读 · 0 评论 -
如何对List中的对象进行排序
最近研究了一下对list中的对象进行排序,以前还真不知道可以这么搞. 首先,需要排序的对象需要实现Comparable接口.这个接口需要实现的方法名是public int compareTo(比较对象). 这个方法返回三种状态,大于0的int,等于0的int ,小于0的int. 当当前对象大于比较对象的时候返回大于0的int,以此类推:Java代码 <a title="复制代码" o转载 2009-09-25 11:20:00 · 3269 阅读 · 2 评论 -
一个理解wait()与notify()的例子
下面是我原来在CSDN论坛上看到的一个贴子,涉及到同步,wait(),notify()等概念的理解,我试着根据原来的一些回复和Think in Java上的相关概念将wait()和notify()这两个方法剖析了一下,欢迎指教. 问题如下: //分析这段程序,并解释一下,着重讲讲synchronized、wait(),notify 谢谢! class ThreadA转载 2008-07-24 14:26:00 · 794 阅读 · 0 评论 -
Java多线程设计模式:wait/notify机制
通常,多线程之间需要协调工作。例如,浏览器的一个显示图片的线程displayThread想要执行显示图片的任务,必须等待下载线程downloadThread将该图片下载完毕。如果图片还没有下载完,displayThread可以暂停,当downloadThread完成了任务后,再通知displayThread“图片准备完毕,可以显示了”,这时,displayThread继续执行。转载 2008-07-24 14:25:00 · 849 阅读 · 0 评论 -
守护线程
守护线程 是特殊的线程,一般用于在后台为其他线程提供服务. isDaemon():判断一个线程是否为守护线程. set Daemon():设置一个线程为守护线程. Thread类和Runnable接口 Thread类 类Thread在包java.lang中定义,它的构造方法如下: public Thread(); public Thread(Rannable target); public转载 2008-07-24 14:21:00 · 1219 阅读 · 0 评论 -
java线程学习笔记(一)
线程简介 我们都习惯于线性的思考,而且不适应于在程序中以并行思路来思考,但是没有理由保留我们所习惯的单线程思考方式。 术语:线程(thread)其实是控制线程(thread of control)的简写。而控制线程,简单地说,就是在一个程序中与其他控制线程无关的能够独立运行的代码片段。 单线程进程的特征: 进程从一个众所周知的入口点开始运行;(例原创 2008-07-23 21:33:00 · 1027 阅读 · 0 评论 -
SubVersion使用概要
【svnadmin create E:/svn】 建立服务器端仓库:先建立目录 ,例:E:/svn,然后使用命令行命令: svnadmin create E:/svn,如果没有显示任何信息,则说明建立成功,查看目录。【svnserve -d -r E:/svn】 启动服务器,进行网络监听,才能检查到客户端的相关命令请求。 svnserve -d -r E:/svn 让svn将此原创 2008-07-11 09:36:00 · 1117 阅读 · 0 评论 -
SubVersion使用详解
1。安装软件,官方网址:http://subversion.tigris.org/2。检查安装都得路径内的bin目录是否加入了path路径下,在命令行输入svn测试3。建立服务器端仓库:先建立目录 ,例:E:/svn,然后使用命令行命令: svnadmin create E:/svn,如果没有显示任何信息,则说明建立成功,查看目录。4。启动服务器,进行网络监听,才能检查到客原创 2008-07-11 09:33:00 · 8405 阅读 · 1 评论 -
增强Eclipse ,MyEclipse 的代码提示功能
一般默认情况下,Eclipse ,MyEclipse 的代码提示功能是比Microsoft Visual Studio的差很多的 ,主要是Eclipse ,MyEclipse本身有很多选项是默认关闭的,要开发者自己去手动配置。如果开发者不 清楚的话,就不知道Eclipse ,MyEclipse的代码提示功能一样能像Microsoft Visual Studio的代码提 示转载 2008-05-01 13:47:00 · 1112 阅读 · 0 评论 -
NetBean免安装运行
有的时候需要把NetBeans在移动硬盘上运行,而无需进行额外的安装 1。将NetBeans和JDK安装目录拷到移动硬盘或者一台没有安装JDK的计算机上2。正确配置3个变量:PTAH,CLASSPATH,JAVA_HOME(当然,也可以不去设置JAVA_HOME)3。修改NetBean的配置:安装目录下的/etc/netbeans.conf,修改其配置:netbeans_jdkhome="c:/原创 2008-04-13 23:51:00 · 1844 阅读 · 0 评论 -
搞定Java安装包制作
经过一天的努力,终于完成了,比较了几种不同的工具,最终也选出了较为满意的,虽然感觉了浪费很多时间,但毕竟还是有一定收获的,对以后的应用更是影响深远,呵呵从网上查了半天, 工具不算多,我下载了exe4j,InstallAnywhere和SetupFactory。开始一一试验,exe4j全是英文的,感觉界面也不是很好,最终早早的放弃了。InstallAnywhere这是功能原创 2008-03-30 23:55:00 · 2087 阅读 · 2 评论 -
java中几种常用的排序算法
最主要的是冒泡排序、选择排序、插入排序以及快速排序1、冒泡排序 冒泡排序是一个比较简单的排序方法。在待排序的数列基本有序的情况下排序速度较快。若要排序的数有n个,则需要n-1轮排序,第j轮排序中,从第一个数开始,相邻两数比较,若不符合所要求的顺序,则交换两者的位置;直到第n+1-j个数为止,第一个数与第二个数比较,第二个数与第三个数比较,......,第n-j个与第n+1-j个比较,共比转载 2008-03-31 10:13:00 · 1234 阅读 · 0 评论 -
多线程的应用 多线程
多线程的应用:1.网络聊天工具开发 一个线程负责发消息,一个负责收消息。两者互不干扰,如果是单线程,那么就可能前面在等待,而后面就接收不了消息。2.大量数据库记录的复制。 如果一个复制要花3天时间,那么当你中途觉得没有必要,要停止的时候,你发现你不能让他停下来。而多线程的情况,一个 现成负责拷贝,是个无限循环 while(bStop) {get data copy dat转载 2008-07-24 14:16:00 · 1117 阅读 · 0 评论 -
java线程简介(线程的生命)
1、创建线程在 Java 程序中创建线程有几种方法。每个 Java 程序至少包含一个线程:主线程。其它线程都是通过 Thread 构造器或实例化继续类 Thread 的类来创建的。 Java 线程可以通过直接实例化 Thread 对象或实例化继续 Thread 的对象来创建其它线程。在线程基础中的示例(其中,我们在十秒钟之内计算尽量多的素数)中,我们通过实例化 CalculatePr转载 2008-07-24 14:24:00 · 1624 阅读 · 0 评论 -
用md5加密用户密码
import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import sun.misc.BASE64Encoder; public class te转载 2009-09-25 11:19:00 · 1498 阅读 · 0 评论 -
java boolean的|=或&=或^=写法
package jack.test;/** * 有时候看一看开源框架可以学到很多有用的东西,在看Simple Log的时候发现了一种写法 * 在对boolean操作时可以使用|=或者&=或者^=进行运算。 * 逻辑操作符 * 逻辑操作符的操作对象和结果均为boolean型,共六个: * !(逻辑非) && (逻辑与) ||(逻辑或) * ^(逻辑并或) & (原创 2009-09-07 14:47:00 · 9655 阅读 · 1 评论