
java
文章平均质量分 65
逍遥子_
重点关注大并发处理、分布式计算、微服务、物联网、大数据等领域
展开
-
一个简单限速器的java实现[2]
在 http://blog.youkuaiyun.com/houjixin/article/details/45222081 或者 http://houjixin.blog.163.com/blog/static/3562841020153233201796/ 中实现的限速器,需要内部维持一个容器来记录每次访问的时间,在每次新请求资源时通过计算容器中首尾两个时间的差值以及容器中的访问次数来确定是否超速,原创 2015-04-28 09:46:45 · 3712 阅读 · 0 评论 -
由浅入深了解Thrift(二)——Thrift工作原理
三、 Thrift的工作原理1.普通的本地函数调用过程例如,有如下关于本地函数的调用的java代码,在函数caller中调用函数getStr获取两个字符串的拼接结果:代码3.1 本地函数调用调用方和被调用方都在一个程序内部,只是cpu在执行调用的时候切换去执行被调用的函数,执行完被调用函数之后,再切换回来执行调用之后的代码,其调用过程如下图3.1所示:原创 2015-01-16 17:38:23 · 28329 阅读 · 4 评论 -
代码开发过程中对日志的使用总结
在日常开发过程中,日志是代码的必要组成部分,一个好的代码也必然有一个好的日志输出,优秀的日志不仅可以快速帮助我们分析定位问题还可以在对日志的数据挖掘中产生很大的威力。 1、java在发生异常时可以打印它的堆栈信息以帮助调试,但是java的异常也有下列问题: 1)java出现异常时只能展示静态的调用堆栈信息,对应异常之前的调用参数则无法进行展示,也就是只知道哪里发生了异常,而不知道是哪些数原创 2015-04-20 14:01:46 · 5789 阅读 · 0 评论 -
一个简单限速器的java实现[1]
在日常开发过程中,经常遇到对资源使用频度的限制,例如:某个接口只允许每秒调用300次,或者某个资源对象只允许每秒使用300等等,下面是一个简单的限速器的java实现,它可以实现对一个字段在若干时间(毫秒内)只允许多少次访问,具体实现代码如下:package test_tmp;import java.util.concurrent.ConcurrentLinkedDeque;import java.原创 2015-04-23 15:15:52 · 4330 阅读 · 0 评论 -
使用nohup以守护进程方式启动程序
要实现守护进程,一种方法是按守护进程的规则去编程(本站有文章介绍过),比较麻烦;另一种方法是仍然用普通方法编程,然后用nohup命令启动程序: nohup <程序名> & 则控制台logout后,进程仍然继续运行,起到守护进程的作用(虽然它不是严格意义上的守护进程)。 使用nohup命令后,原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用,实现了完整的守原创 2015-04-27 11:21:25 · 4444 阅读 · 0 评论 -
jmap简单实用示例
导出到文件: jmap -dump:format=b,file=/usr/test33.bin 10424直接显示jmap -histo 10424 num #instances #bytes class name---------------------------------------------- 1: 343原创 2014-12-02 19:41:46 · 2616 阅读 · 0 评论 -
Can not find a java.io.InputStream with the name [...] in the invocation stack. ...
3379748 [qtp33117621-12] ERROR org.apache.struts2.dispatcher.StreamResult - Can not find a java.io.InputStream with the name [joGroupMembers] in the invocation stack. Check the tag specified for this原创 2015-03-03 10:13:53 · 2359 阅读 · 0 评论 -
由浅入深了解Thrift(三)——Thrift server端的几种工作模式分析
一、 Thrift服务器端几种工作模式分析与总结Thrift为服务器端提供了多种工作模式,本文中将涉及以下5中工作模式:TSimpleServer、TNonblockingServer、THsHaServer、TThreadPoolServer、TThreadedSelectorServer,这5中工作模式的详细工作原理如下:1. TSimpleServer模式TSimpl原创 2015-01-16 17:49:33 · 18825 阅读 · 6 评论 -
jedis使用pipline的方法
在集中操作redis的地方,使用jedis的pipline的功能能够极大地提升效率,普通的redis操作形式都是下面这种:client ---request1---> redisclient ---response1--> redisclient ---request2---> redisclient ---response2--> redis.....原创 2014-12-17 14:48:20 · 3368 阅读 · 0 评论 -
如何快速开发一个支持高效、高并发的分布式ID生成器(一)
ID生成器是指能产生不重复ID服务的程序,在后台开发过程中,尤其是分布式服务、微服务程序开发过程中,经常会用到,例如,为用户的每个请求产生一个唯一ID、为每个消息产生一个ID等等,ID生成器也是进行无状态服务开发的重要需求之一。ID生成器有其特殊要求:(1) 产生的ID不能重复,在任何情况下产生的ID都不能重复,例如:在ID生成器程序重启之后,ID生成器产生的新ID不能与重启之前产生原创 2016-04-09 10:30:01 · 5106 阅读 · 4 评论 -
如何快速开发一个支持高效、高并发的分布式ID生成器(二)
前面介绍的是利用redis快速搭建一个ID生成器服务,这种方式搭建的ID生成器服务还存在一些缺陷:(1) 与应用耦合高,没有对外屏蔽掉内部实现细节,例如redis,用户完全不需要知道ID生成器使用什么产生的ID;(2) 扩展性差,在项目规模较大时,ID的应用会非常多,如果用一组redis无法满足需求时,不方面扩展;下面将对上述的ID生成器进一步改进,改进方式为通过thrif原创 2016-04-09 10:36:45 · 2190 阅读 · 1 评论 -
logback logback.xml 常用配置详解
包含的属性:">一:根节点包含的属性:scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logb转载 2016-05-17 15:20:41 · 1165 阅读 · 0 评论 -
使用idea 打jar包
原文参考:https://blog.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/?spm=a2c4g.11186623.2.10.aRzTRi1.选择"file"=>"Project Structure"2.依次选择"Artifacts" => "+" => "jar" => "From modules with dependen原创 2018-02-06 11:22:46 · 11069 阅读 · 0 评论 -
Spring是什么
原文转自:http://blog.youkuaiyun.com/lp1052843207/article/details/512530711.1.1.Spring是什么Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。应用程序是由一组相互协作的对象组成。而在传统应用程序开发中,一个完整的应用是由一组相互协作转载 2017-10-30 17:43:58 · 10875 阅读 · 2 评论 -
大数据平台在分布式服务中的应用
对大数据平台的一些理解大数据是目前比较火的领域,它涉及的领域比较广泛,例如数据挖掘、机器学习等等;所有这些基于数据的操作能够正常工作的前提是:搭建相应的大数据收集平台,在该平台中能够通过主动和被动的方式收集到足够的数据;一般情况下,大数据平台里的数据来源主要有:(1) 日志数据,相对于大数据平台,这是一种主动收集数据的方式;这种方式可能是大数据平台中最主要的数据来源,并且随着用户请求量、服务数量原创 2017-06-27 18:03:22 · 3797 阅读 · 2 评论 -
关于redis的pipline和lua脚本
1. 关于redis命令执行方式的一点看法:Redis命令执行时是串行的,在同一个连接上客户端发送一条命令,redis对这个命令进行操作然后返回结果,客户端只有接到这个结果之后才能发送下一条命令,例如: 如此串行的执行方式效率非常低,为此,redis引入了pipline,它可以让客户端依次发送一批命令过期,然后redis依次执行这些命令,并把这些命令的结果依次放入到一个list里面一次返回原创 2017-03-03 18:21:18 · 3000 阅读 · 3 评论 -
关于推送系统设计的一些总结与思考(三)
**四、 推送系统的集群化**4.1长连接集群推送系统作为一项基础服务,它需要承载全部在线用户量,对于移动互联网行业,在设计之初的期望目标用户量就非常大,并且用户未来一段时间的增长量通常难以预估,因此要求在设计推送系统时,都要求能够集群化部署、支持动态扩展。那么长连接集群化设计时需要解决那些问题呢? 个人认为长连接服务需要解决三个问题:路由、管理和动态扩展;另外,如果想要锦上添花,让长连接通道更加原创 2016-11-24 19:43:51 · 3411 阅读 · 0 评论 -
TCP通信的基本流程
1. 简单的示例伪程序服务端伪代码:// 1. 建立一个监听socket listen_socket = socket(AF_INET, SOCK_STREAM, 0); // 2. 创建一个监听socket绑定的本地地址结构体 serverAddr.sin_family = AF_INET; serverAddr.sin_addr.s_addr = h原创 2016-01-21 11:09:29 · 5887 阅读 · 0 评论 -
在logback、log4j等日志输出工具中输出java异常调用堆栈
使用logback、log2j输出java异常如果采用如下方式:try{ ... }catch (Exception e){ logger.error("[lid:{}] [{}]<< exception happened! detail:{}", logIndex, logFlag, e); }则无法输出异常的调用堆栈,下面这个一个静态工具函数,可以输出异常的堆栈信息,如下:publ原创 2016-09-27 09:12:29 · 9000 阅读 · 1 评论 -
如何快速开发一个支持高效、高并发的分布式ID生成器(三)
前面两个ID生成器只是简单的完成功能,如果实际应用到生产环境,则对ID生成器的要求更高,具体包括但不限于以下几点:(1) 产生全局唯一、且单调递增的ID;(2) 任何情况下ID不能重复或者回退;(3) 具备高效率产生ID的能力;(4) 具备提供多种ID的能力;(5) 便于运维管理; ID生成器整个系统需要分为四个部分:web管理端、IdGen服务、redis以及mysql,其中:(1原创 2016-08-10 19:20:12 · 3301 阅读 · 0 评论 -
java的类对象
1.在运行期间,java虚拟机为*每个类*维护*一个类对象*,例如有类MyClass,其有两个对象a和b,则对象a和b的类对象是一样的(是同一个,可以用==进行比较),即://如下为定义的MyClass类package com.test.service;public class MyClass{private int v1 = 125;public MyClass(原创 2015-01-04 09:40:10 · 1251 阅读 · 0 评论 -
由浅入深了解Thrift(一)——Thrift介绍与用法
相关示例代码见:http://download.youkuaiyun.com/detail/hjx_1000/8374829一、Thrift简单介绍1.1、 Thrift是什么?能做什么?Thrift是Facebook于2007年开发的跨语言的rpc服框架,提供多语言的编译功能,并提供多种服务器工作模式;用户通过Thrift的IDL(接口定义语言)来描述接口函数及数据类型,然后通过Thrif...原创 2015-01-16 16:27:17 · 125963 阅读 · 15 评论 -
jedis开发过程中遇到的问题及其解决方法
The constructor ShardedJedisPool(GenericObjectPool$Config, List) refers to the missing type GenericObjectPool$Config原创 2014-07-29 14:30:44 · 5250 阅读 · 0 评论 -
一些有用的网址
下载jar包的网址:http://www.java2s.com/Code/Jar/CatalogJar.htm原创 2014-07-14 13:48:30 · 1004 阅读 · 1 评论 -
一致性哈希算法 应用场景
一致性哈希算法 应用场景(转)原创文章,转载请注明: 转载自LANCEYAN.COM本文链接地址: 一致性hash和solr千万级数据分布式搜索引擎中的应用互联网创业中大部分人都是草根创业,这个时候没有强劲的服务器,也没有钱去买很昂贵的海量数据库。在这样严峻的条件下,一批又一批的创业者从创业中获得成 功,这个和当前的开源技术、海量数据架构有着必不可分的关系。比如我们使用mysq转载 2014-07-25 14:02:36 · 3485 阅读 · 1 评论 -
长宽相等的矩阵(二维数组)逆时针旋转90度
将长宽相等的矩阵(二维数组)逆时针旋转90度,例如,有如下一个二维数组00 10 20 30 40 50 60 01 11 21 31 41 51 61 02 12 22 32 42 52 62 03 13 23 33 43 53 63 04 14 24 34 44 54 64 05 15 25 35 45 55 65 06 16 26 36 46 56 6原创 2013-11-04 21:46:06 · 3737 阅读 · 0 评论 -
Windows下搭建Eclipse+Android4.0开发环境
官方搭建步骤: http://developer.android.com/index.html搭建环境之前需要下载下面几个文件包:一、安装Java运行环境JRE(没这个Eclipse运行不起来)和JDK 官网下载 http://www.oracle.com/technetwork/java/javase/downloads/index.html, 先装J转载 2013-07-16 11:51:01 · 1141 阅读 · 0 评论 -
eclipse中java环境配置
到官方网站http://www.eclipse.org/下载eclipse。ECLIPSE是绿色版软件,解压后即可,这里用的是eclipse3.4中文版。但在此之前要安装JDK(Java Development Kit)包含了Java运行环境(Java Runtime Envirnment),Java工具和Java基础的类库(rt.jar)。JDK是一个写Java的applet和应用程序的转载 2013-05-28 22:23:24 · 1595 阅读 · 0 评论 -
eclipse android 开发问题:No active compatible AVD's or devices found
[2012-10-24 21:16:49 -] Android Launch![2012-10-24 21:16:49 -] adb is running normally.[2012-10-24 21:16:49 -] Performing com.example.testsocket_client2.MainActivity activity launch[2012-10-24 2原创 2012-10-27 22:29:09 · 14389 阅读 · 0 评论 -
dom4j解析xml字符串实例
//先加入dom4j.jar包 import java.util.HashMap;import java.util.Iterator;import java.util.Map;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHelper;import org.dom4j.转载 2012-05-23 19:49:03 · 1242 阅读 · 0 评论 -
Dom4j下载及使用Dom4j读写XML简介
要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4j包下载地址:http://nchc.dl.sourceforge.net/sourceforge/dom4j/dom4j-1.6.1.zip解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就可以了,如果需要使用XPath的转载 2012-05-23 19:48:04 · 1010 阅读 · 0 评论 -
CentOS安装JAVA
一般情况下,我们都要将linux自带的OPENJDK卸载掉,然后安装SUN的JDK。 首先查看Linux自带的JDK是否已安装。输入如下命令,查看已经安装的JAVA版本信息。 Linux代码 java -version 输入如下命令,查看JDK的信息。Linux代码 rpm -qa|gre转载 2014-07-11 11:14:45 · 997 阅读 · 0 评论 -
fastjson的一些常见用法
1、创建一个json对象:[1]通过解析一个json字符串生成一个json对象(json字符串就是已经按照json格式组装的字符串)String jsonString = "{\"key1\":\"value1\"}";JSONObject aJsonObj = JSONObject.parseObject(jsonString);这时aJsonObj就是一个下面格式的json对象原创 2014-09-18 18:03:13 · 2724 阅读 · 1 评论 -
使用Junit的时候出现InitializationError
开发过程为:将junit的jar包junit原创 2014-08-18 11:03:55 · 13278 阅读 · 2 评论 -
Exception while invoking! org.apache.thrift.protocol.TProtocolException: Bad version in readMessageB
问题描述:在使用thrift做开发的时候出现下面的问题:[dp]2014-12-0217:55:23.520 WARN [Thread-4][AbstractNonblockingServer.java:520] - Exception while invoking!org.apache.thrift.protocol.TProtocolException:Bad version原创 2014-12-03 09:13:16 · 8800 阅读 · 0 评论 -
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
摘要 JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。 现实企业级Java开发中,有时候我们会碰到下面这些问题:OutOfMemoryError,内存不转载 2014-12-02 19:54:40 · 1352 阅读 · 0 评论 -
常见Java开发过程中遇到的问题及其解决办法
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/XXX/XXX/dataproxy/service/DataProxyMain : Unsupported major.minor version 51.0at java.lang.ClassLoader.defineClass1(Native Meth原创 2014-09-28 13:32:29 · 10105 阅读 · 0 评论 -
Netty 5用户指南
原文地址:http://netty.io/wiki/user-guide-for-5.x.html 译者:光辉勇士 校对:郭蕾前言问题现如今我们使用通用的应用程序或者类库来实现系统之间地互相访问,比如我们经常使用一个HTTP客户端来从web服务器上获取信息,或者通过web service来执行一个远程的调用。然而,有时候一个通用的协议和他的实现并没有转载 2014-12-02 09:49:41 · 1471 阅读 · 0 评论 -
java 使用logback进行日志输出
在java项目中使用logback可以非常方便的进行日志输出,logback的使用方法与log4j非常类似;使用logback所需要的jar包包括:logback-classic-1.0.13.jarlogback-core-1.0.13.jarslf4j-api-1.7.5.jarslf4j-simple.jar使用示例代码为:import org.slf4j.Log原创 2014-12-16 11:46:20 · 3325 阅读 · 0 评论 -
metrics的timer功能在java项目中的使用方法
metrics是开源的统计工具,其官网地址为:https://dropwizard.github.io/metrics/3.1.0/使用时所需的jar包为:metrics-core-3.X.X.jar,例如:metrics-core-3.1.0.jar在使用过程中,一般一个程序创建一个全局的MetricRegistry,由其对数据进行统计;数据统计的结果可用reporter输出,met原创 2014-12-16 11:12:51 · 9253 阅读 · 0 评论