自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 收藏
  • 关注

Error occurred during initialization of VM Could not reserve enough space for ob

       今天中午同事让我重启一下我负责的dev项目,然后ssh连接到dev的服务器上,进入到data/deploy/目录,运行./mkd.sh脚本,通过ps -ef |grep xxx没有看到服务的进程。通过cd /data/Application/xxxx/log/目录下,查考log日志看到:Error occurred during initialization of VMCo...

2017-05-04 14:37:38 1390

原创 二叉堆(三)之 Java的实现

概要前面分别通过C和C++实现了二叉堆,本章给出二叉堆的Java版本。还是那句话,它们的原理一样,择其一了解即可。目录1. 二叉堆的介绍2. 二叉堆的图文解析3. 二叉堆的Java实现(完整源码)4. 二叉堆的Java测试程序更多内容:数据结构与算法系列 目录(01) 二叉堆(一)之 图文解析 和 C语言的实现(02) 二叉堆(二)之 C++的实现(03) 二叉堆(三)之 J...

2016-06-23 16:56:45 154

原创 Java提高篇(二七)—–TreeMap

TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解,其实这篇博文的名字叫做:根据红黑树的算法来分析TreeMap的实现,但是为了与Java提高篇系列博文保持一致还是叫做TreeMap比较好。通过这篇博文你可以获得如下知识点:1、红黑树的基本概念。2、红黑树增加节点、删除节点的实现过程。3、红黑树左旋转、右旋转的复杂过程。4、Java 中Tr...

2016-06-23 16:07:30 223

原创 聊聊并发(四)深入分析ConcurrentHashMap

术语定义术语英文解释哈希算法hash algorithm是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表hash table根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所得存储位置称为哈希地址或散列...

2016-06-20 17:35:29 109

原创 聊聊并发-Java中的Copy-On-Write容器

Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySe...

2016-06-20 17:06:15 78

原创 hessian 500 read time out问题

         昨天,提交了一个订单撤销发送短信的需求。QA的同事在测试该问题的时候,发现原来的代客下单给用户发送短信的功能也不好用。最后通过追踪QA服务器上的日志文件,发现日志中并没有找到要发送短信人的信息。         这个问题,我同时在DEV的环境上进行了复测。令人意想不到的是DEV环境的数据竟然可以返回。这就让我觉得很诧异。同样的代码为什么会有不一样的数据返回呢?     ...

2016-06-13 11:03:39 666

原创 [转载]Java 中 byte、byte 数组和 int、long 之间的转换

 Java 中 byte 和 int 之间的转换源码: [java] view plain copy  print?//byte 与 int 的相互转换  public static byte intToByte(int x) {      return (byte) x;  }    public static int byteToI...

2016-05-18 10:56:17 67

原创 [转载]Java 中 byte、byte 数组和 int、long 之间的转换

 Java 中 byte 和 int 之间的转换源码: [java] view plain copy  print?//byte 与 int 的相互转换  public static byte intToByte(int x) {      return (byte) x;  }    public static int byteToIn...

2016-05-18 10:54:56 77

原创 [转载]Java 中 byte、byte 数组和 int、long 之间的转换

 Java 中 byte 和 int 之间的转换源码: [java] view plain copy  print?//byte 与 int 的相互转换  public static byte intToByte(int x) {      return (byte) x;  }    public static int byteToIn...

2016-05-18 10:53:54 114

原创 【转】Netty系列之Netty 服务端创建

1. 背景1.1. 原生NIO类库的复杂性在开始本文之前,我先讲一件自己亲身经历的事:大约在2011年的时候,周边的两个业务团队同时进行新版本开发,他们都需要基于NIO非阻塞特性构建高性能、异步和高可靠性的底层通信框架。当时两个项目组的设计师都咨询了我的意见,在了解了两个项目团队的NIO编程经验和现状之后,我建议他们都使用Netty构建业务通信框架。令人遗憾的是其中1个项目组并没有按...

2016-04-08 13:52:02 87

原创 用redis处理并发写的工作总结

     公司运营部那边需要做一个营销活动-springrain活动,上午和team leader、同一组的同事和产品经理一同听取并讨论了活动的需求,以及一些细节性的东西。      大致需求是这样的,由于保密的原因,这里只列出大概的需求。就是每一个阶段都有一个浇水的滴数,达到这个浇水的滴数,app上的小数就成长一个阶段,以此类推。一共有5个阶段。      后面我和同事就开始进行数据...

2016-03-28 16:05:05 141

原创 java NIO(一)

Java NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲区):标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。Asynchronous IO(异步IO):Java NIO可以让你异步的使用IO,例如:当线程从通道读取...

2016-03-28 13:13:53 92

原创 【转】内存屏障

本文我将和大家讨论并发编程中最基础的一项技术:内存屏障或内存栅栏,也就是让一个CPU处理单元中的内存状态对其它处理单元可见的一项技术。CPU使用了很多优化技术来实现一个目标:CPU执行单元的速度要远超主存访问速度。在上一篇文章 “Write Combing (合并写)”中我已经介绍了其中的一项技术。CPU避免内存访问延迟最常见的技术是将指令管道化,然后尽量重排这些管道的执行以最大化利用缓存,...

2016-03-22 16:03:07 118

原创 【转】致敬disruptor:CAS实现高效(伪)无锁阻塞队列实践

引言在多线程开发中,我们常常遇到这样一种场景:一些线程接受用户请求,另外一些线程处理这些请求,之所以把接受请求和处理请求的逻辑分开,一方面是出于资源调度的考虑(用户请求也许很多,但这些请求涉及的资源很少),另一方面也可能是异步响应的需求。这种场景存在于NIO的通信框架,存在于Tomcat的回调处理框架,存在于日志系统的异步flush,存在于各种类型的线程池中。总之,这种典型的生产者消费者场景...

2016-03-22 14:49:10 210

原创 【转】玩转单元测试之 Testing Spring MVC Controllers

 The Spring MVC Test framework provides first class JUnit support for testing client and server-side Spring MVC code through a fluent API. Typically it loads the actual Spring configuration throu...

2016-02-17 15:50:11 108

原创 【转】就是这么简单(续)!使用 RestAssuredMockMvc 测试 Spring MVC Controllers

接我前面一篇文章关于RestAssured测试Restful web service的, RestAssured还有一个功能, 使用RestAssuredMockMvc 单元测试你的Spring MVC Controllers, 这个MockMvc 是建立在Spring MockMvc基础上的, 其目的是让我们用起来更便捷。 Getting Ready<dependen...

2016-02-17 11:59:55 222

原创 【转】玩转单元测试之WireMock -- Web服务模拟器

WireMock 是一个灵活的库用于 Web 服务测试,和其他测试工具不同的是,WireMock 创建一个实际的 HTTP服务器来运行你的 Web 服务以方便测试。它支持 HTTP 响应存根、请求验证、代理/拦截、记录和回放, 并且可以在单元测试下使用或者部署到测试环境。它可以用在哪些场景下:测试移动应用依赖于第三方REST APIs创建快速原型的APIs注入否则难于模拟第...

2016-02-17 11:45:20 167

原创 Spring HTTP invoker RPC

Spring HTTP invoker是spring框架中的一个远程调用模型,执行基于HTTP的远程调用(意味着可以通过防火墙),并使用java的序列化机制在网络间传递对象。客户端可以很轻松的像调用本地对象一样调用远程服务器上的对象,这有点类似于webservice,但又不同于webservice,区别如下:webserviceHTTP invoker跨平...

2016-02-01 15:01:56 121

原创 Hessian源码分析和Hack --让Hessian携带远程调用端的信息(下)

接着说Spring包装过的Hessian怎么来Hack。 刚开始我以为只要改了hessian的源码,就可以了。其实不然,因为Spring通过了几层包装,让你不能得不到request对象。 Spring里边hessian的入口是HessianServiceExporter这个类,主要方法有两个 Java代码  public void prepare() {      H...

2016-02-01 14:25:16 169

原创 Hessian源码分析和Hack --让Hessian携带远程调用端的信息(上)

项目选定Hessian作为web service的实现方式,确实很轻量级,速度就跟直接用socket差不多,全是二进制传送节约了不少开销。但是在使用过程中有业务需要是必须获得远程端的ip地址,主机名等信息的。翻便Hessian的文档和google了n次未果,迫不得已到caucho和spring论坛去问,都没有得到答复。今天心一横把hessian的源代码加入到项目中单步跟踪,总算有点小收获。献丑...

2016-02-01 14:17:26 220

原创 基于反射机制的服务代理调用

实现原理:通过传递服务bean的名称、执行的方法及参数,通过反射机制进行调用返回。优点:只需对外提供一个接口服务即可,只要容器中操作服务bean,通过接口即可调用,增加服务bean无需增加对外接口。代码如下:接口类 [java] view plain copy  print?public interface ProxyService {  ...

2016-02-01 11:51:30 91

原创 RPC原理实现剖析

      最近对RPC的一些实现原理,以及一些RPC框架比较感兴趣。所以,抽时间想研究一下RPC中涉及到的一些技术实现,通讯、序列化和反序列化、动态代理、通讯协议(消息的编解码)。      在一个针对阿里找招聘的群里,发现一些阿里的技术文档 ,故下载下来查看了一下。一种有一位大牛正好讲到了RPC调用的一些实现原理或者涉及到的技术。本人是做java开发的,这位大牛也是基于java的角度来做...

2016-02-01 10:58:15 79

原创 Twitter的分布式自增ID算法Snowflake

在分布式系统中,需要生成全局UID的场合还是比较多的,twitter的snowflake解决了这种需求,实现也还是很简单的,除去配置信息,核心代码就是毫秒级时间41位 机器ID 10位 毫秒内序列12位。 10---0000000000 0000000000 0000000000 0000000000 0 --- 00000 ---00000 ---000000000000...

2016-01-21 21:00:43 94

原创 创建和销毁对象

     想写一下关于Java高效开发的一些方法总结,作为自己技术提升的一种必要反省。同时为我们在每一次编写程序代码时,更多的考虑一下我们这样写代码是不是更高效,更简单的一种方法。     今天第一次写,后续会陆续发出关于Java高效开发的一些总结文章。希望有任何想法的Java同行们一同共勉,同时编写博客也是为了训练自己的表达的能力,作为技术成长的一个见证。好了,废话不多说。     对...

2015-12-28 17:03:03 123

原创 AngularJS ui-router $state.go('^') only changing URL in address bar, but not loa

公司前端采用的AngularJS框架,在做订单保存跳转到列表页面的时候,由于按钮加了权限(权限框架采用的是shiro),造成了跳转到列表页面,按钮不显示的问题。只有手动刷新,按钮才会出现,问了公司的前端工程师,由于$state.go(xxx)默认只改变地址栏的地址,而不会向后台真正发送请求。造成了不会走权限拦截器,拿不到这个人的权限资源。解决方案方案一:在需要做页面跳转的地方,放上如下代...

2015-12-15 12:02:46 89

原创 【第十三章】 测试 之 13.3 集成测试 ——跟我学spring3

转载自私塾在线【http://sishuok.com/forum/blogPost/list/0/2557.html】13.3  集成测试13.3.1  概述       集成测试是在单元测试之上,通常是将一个或多个已进行过单元测试的组件组合起来完成的,即集成测试中一般不会出现Mock对象,都是实实在在的真实实现。        对于单元测试,如前边在进行数据访问层单元测试时...

2015-11-29 10:46:17 71

原创 分布式缓存ignite与其他缓存特效比较

如下内容摘自于:http://www.infoq.com/cn/articles/apache-ignite-explorer 在Ignite以前,大规模、大数据量、高并发企业级或者互联网应用为了解决数据缓存、降低数据库负载、提高查询性能等突出问题,很多采用了Hazelcast或者Oracle Coherence或者GemFire(比如12306网站)或者目前应用越来越广泛的Redis等缓...

2015-11-25 18:04:15 954

原创 Shell脚本语法记录

  最近正在看<<How tomcat works>>这本书,其中讲到了如何通过shell脚本启动tomcat的章节。因为平时很少写这个东西,故在此记录一下,作为自己的学习笔记。同时作为自己的技术积累,作为比较高级的shell脚本开发者来说,本文章可能不符合你的口味。烦请不要拍砖。   下面开始记录shell脚本的正文部分,都是一些基础命令的讲解。   首先一个...

2015-11-13 13:31:53 70

原创 最近的阅读以及博客计划

最近看了一些技术博客和技术文章,在此记录一下想要阅读或者是博客的记录文章一、谈一下对分布式系统的理解二、Tomcat原理以及架构解析三、对于jvm的理解四、RPC框架的一些理解五、容器技术的应用与实践六、分布式协调框架dubbo的研究七、基于zookeeper的一些理解与应用范围八、RPC框架dubbo、hessian、ice的一些比较九、基于Javanio...

2015-11-11 18:38:03 83

原创 mysql表名带有关键字的处理方法

今天讨论完数据库设计字段之后,回来就连上数据库准备创建相应的数据表,在执行sql时出现:一开始没反应过来这是什么错误,就百度了一下1064 mysql,发现是表名使用了关键字。故不能创建成功,给出的解决方案是:在数字键1的左边的那个“·”把表名给包裹起来,就可以创建成功。 ...

2015-09-16 17:15:22 497

HashMap实现原理分析

1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。...

2015-09-14 10:06:00 56

从MySQL到Redis,提升数据迁移的效率

题外话:看到一篇不错的从mysql迁移数据到redis的解决方案,特此记录一下。 做开发的同学都知道,一旦设计到底层存储优化,数据结构甚至数据库的变更,通常都会进行数据迁移的工作。如果系统运行时间过长,数据迁移的数量可能非常庞大。这时候,如何进行高效的数据迁移,实际也是上线质量的直接影响因素之一。下面内容是转载的一个小技巧(原文),无法适用于各种变化的场景,仅供大家参考。场景是...

2015-09-10 15:11:00 91

通过ServiceLoader实现链式处理

ServiceLoader与ClassLoader是Java中2个即相互区别又相互联系的加载器.JVM利用ClassLoader将类载入内存,这是一个类声明周期的第一步(一个java类的完整的生命周期会经历加载、连接、初始化、使用、和卸载五个阶段,当然也有在加载或者连接之后没有被初始化就直接被使用的情况)。详情请参阅:详解Java类的生命周期那ServiceLoader又是什么呢?Se...

2015-09-10 12:34:00 61

浅谈spi机制

看到公司的项目代码中,在META-INF下service中定义了一些文件。文件名都是以全限定类名的方式命名的,而且没每个文件里的内容也是一堆全限定类名的值。搞不懂这些是什么用途,遂百度了一下看到了一篇介绍java中spi的博客链接,该博客中对于java的spi机制做了一些介绍,博客链接附上:点击打开链接传统的应用中,我们对于一个接口有多个实现类。每一个实现类我们在使用的...

2015-09-10 11:31:00 208

分布式系统架构的基本原则和实践

采用分布式系统架构是由于业务需求决定的,若系统要求具备如下特性,便可考虑采用分布式架构来实现:1.数据存储的分区容错,冗余2.应用的大访问、高性能要求3.应用的高可用要求,故障转移分布式系统遵循几个基本原则1.CAP原理CAP Theorem,CAP原理中,有三个要素:一致性(Consistency)可用性(Availab...

2015-09-10 09:36:00 88

Redis各种数据结构介绍以及相应的业务场景应用

1.redis现存的数据结构二进制安全的 字符串 string二进制安全的 字符串列表 list of string二进制安全的 字符串集合 set of string,换言之:它是一组无重复未排序的element。可以把它看成Ruby中的 hash–其key等于element,value都等于’true‘。有序集合sorted set of string,类似于集合set,但其中每个元素都和一个...

2015-09-09 21:15:00 134

redis学习笔记(三)

Redis - 分区分区是一种将数据分成多个Redis的情况下,让每一个实例将只包含你的键字的子集的过程。分区的好处它允许更大的数据库,使用的多台计算机的存储器的总和。如果不分区,一台计算机的内存可支数量有限。它允许以大规模的计算能力,以多个内核和多个计算机,以及网络带宽向多台计算机和网络适配器。分区的缺点通常不支持涉及多个键的操作。例...

2015-09-09 16:53:00 51

redis学习笔记(二)

Redis - 订阅Redis的订阅实现了邮件系统,发送者(在Redis的术语中被称为发布者)发送的邮件,而接收器(用户)接收它们。由该消息传送的链路被称为通道。在Redis客户端可以订阅任何数目的通道。示例以下举例说明如何发布用户的概念工作。在下面的例子给出一个客户端订阅一个通道名为redisChatredis 127.0.0.1:6379> SU...

2015-09-09 15:44:00 46

Redis学习笔记(第一天)

Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案。Redis 优势异常快速:Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录。支持丰富的数据类型:Redis支持最大多数开发人员已经知道像列表,集合,有序集合,散列数据类型。这使得它非常容易解决各种各样的问题,因为我们知道哪些问...

2015-09-09 09:42:00 62

Oracle OLAP 与 OLTP 介绍

数据处理大致可以分成两大类: 联机事务处理 OLTP( on-line transactionprocessing)、 联机分析处理 OLAP( On-Line Analytical Processing)。( 1) OLTP 是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。 OLTP 系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作...

2015-07-06 17:16:00 80

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除