自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

java使用小根堆实现优先级队列的几种方式

写在之前1.自定义实现采用数组作为内部数据结构2.内部数组通过grow方法进行扩容,每次只是简单的扩展为原来的2倍3.集中实现方式的主要区别在于siftDown方法4.以下给出关键代码,更多详细信息请看附件源码 实现方式一(递归实现)关键代码: @Override protected void siftDown(int index) {...

2017-12-19 10:31:30 574

原创 java数字转金额(任意金额、支持负数、前缀0)

小数金额转换(精确到分)A.包含功能:1.支持任意大小的金额2.支持整形、小数金额转换3.支持负数转换4.支持以+开头的数,如+1005.支持前缀0转换,如-000001、000001等6.支持逗号去除,如100,000 转为 100000后转换为大写金额7.将转换后开头的“壹拾”替换为“拾”(该功能可选,只要重新实现after方法即可)8.小数位超过2位则...

2017-12-19 10:11:01 1940

mac下使用JITWatch查看JDK1.8汇编代码

环境1.机器型号:MacBook Pro (Retina, 15-inch, Mid 2015)2.CPU型号:2.5 GHz Intel Core i73.操作系统:macOS 10.12.5 (16F73)4.内核版本:Darwin 16.6.05.JDK版本:java version "1.8.0_101"(重要,jdk版本不同hsdis库可能要重新编译)  ...

2017-07-22 16:14:53 718

mysql Merge引擎

若可以使用表分区,应首选表分区而不是使用merge来分表。1.也叫MRG_MyISAM,merge引擎使用示例:2.目前(2015-11-05)merge引擎所关联的表只能是MyISAM引擎,不能是Innodb引擎3.在merge table上是用drop table时只是影响的merge table并不影响被关联表如(t1,t2)4.创建merge表必须要有UNION=(l...

2017-07-11 13:54:52 411

centos下twemproxy安装

1.解压tar -xvf nutcracker-0.4.1.tar.gz 2.安装yum install -y libtoolcd nutcracker-0.4.1./configuremakemake install 3.配置文件cp /home/test/nutcracker-0.4.1/conf/nutcracker.yml /etc/tw...

2017-07-11 13:36:40 276

Redis持久化机制比对

[size=large][b]RDB[/b][/size]1.[color=red]按特定的时间间隔来为数据集做快照[/color]2.每次持久化都是将全量数据写入,而不是增量3.每次写入时先将数据写入临时文件再替换掉原来的rdb文件[b]优点:[/b]1.RDB是一个单独的文件,方便备份以及灾难恢复2.写数据的模式为parent进程fork出一个子进程来进行磁盘io操作,...

2017-07-11 13:32:59 130

JVM CMS垃圾回收日志详解

2017-02-13T13:08:44.032+0800: 70058.910: [GC (Allocation Failure) 2017-02-13T13:08:44.033+0800: 70058.910: [ParNew: 5565156K->90568K(5662336K), 0.1661369 secs] 8129600K->3164530K(13002368K), 0....

2017-02-17 10:56:42 375

原创 Spark架构

声明:本文中所将的spark内存模型是1.6+的版本,新的内存模型会在新的文章中讲到。 不久前我在StackOverflow上回答了一系列关于Apache Spark架构相关的问题。这似乎是由于网上缺乏好的Spark整体架构的文章。甚至是官网指导中也没有很多详细的介绍,当然也缺少好的架构图。“Learning Spark”这本书和官方资料中也一样没有。本文我将尝试解决这个问题并...

2016-03-28 21:28:26 221

Spark迷思

目前在媒体上有很大的关于Apache Spark框架的声音,渐渐的它成为了大数据领域的下一个大的东西。证明这件事的最简单的方式就是看google的趋势图: 上图展示的过去两年Hadoop和Spark的趋势。Spark在终端用户之间变得越来越受欢迎,而且这些用户经常在网上找Spark相关资料。这给了Spark起了很大的宣传作用;同时围绕着它的也有误区和思维错误,而且很多人还把这些误区作为...

2016-03-27 19:28:00 119

原创 Spark是否会替代Hadoop?

我经常会从客户或者网上听到这个问题,尤其是最近几年。那么关于spark哪些被我们神化了,哪些又是真实的,以及它在“大数据”的生态系统中又是怎样的?说实话,其实我把这个问题作为标题是有问题的,但是我们经常会这样问。Hadoop并不是一个单独的产品而是一个生态系统,而spark也是一样的。下面让我们来一个一个解释。目前Hadoop生态系统主要包括:HDFS—Hadoop分布式文件系统...

2016-03-24 23:17:14 1567 1

原创 solr4.7.2+mmseg2.0+pinyinAnalyzer实现拼音、简拼检索

生产环境:solr4.7.2jdk1.6lucene4.7.2mmseg4j-core-1.10 (https://github.com/chenlb/mmseg4j-core.git)mmseg-solr-2.0 (https://github.com/chenlb/mmseg4j-solr.git)pinyin4j-2.5.0pinyinAnalyzer (ht...

2016-03-14 13:02:54 391

影响IO密集型应用性能的因素

如果我们曾经在IO密集型应用中碰到过性能问题,那么我们可能都知道系统的性能会随磁盘压力增加而降低。这个因素是众所周知的,但是其背后的原因可能就不那么清晰了。本文将尝试解释这个过程背后所发生的事情。一 个典型的场景是当数据被写入一个文件时,它首先会被写入内存区域保留页面缓存;该缓存页保存还没有被写入的数据,这些数据被称为脏数据;经过一段事件后, 根据IO策略,系统内核将这些脏数据刷新到持久化...

2015-05-04 12:39:06 528

Java NIO与IO

当学习java NIO和IO API时,大脑中会很快涌现一个问题:什么时候用IO?什么时候用NIO?这篇文章作者将尝试阐明Java NIO和IO之间的一些区别、它们的用例、它们各自是如何影响我们的代码设计的。Java NIO和IO的主要区别以下表格简要说明了NIO和IO的区别,接着我们将详细说明表格中的每个不同点。IONIO流式(Stream oriented...

2015-04-20 12:44:20 172

设计模式问答(四)

什么是桥接模式?桥接模式有助于将抽象从实现中解耦。这样如果实现发生变化但是不会影响到抽象,反之亦然。如图“抽象和实现”所示,开关为抽象层,电子设备是实现;而开关可以被任何电子设备实现,因此开关是一种抽象思维而设备是实现。图1:抽象和实现下面我们编写开关和设备例子的代码。首先要做的事情是将实现和抽象分开到两个类总。图“实现”展示了‘IEquipment’接口,该接口包含‘Star...

2015-04-13 12:35:46 231

设计模式问答(三)

什么是状态模式?状态模式允许一个对象根据当前对象的值来决定其行为。如下图“状态模式示例”是一个关于电灯泡操作的例子。如果电灯的状态为关,当按下开关时状态将打开;如果开关为开,则按下开关灯关闭。简而言之,根据不同的状态行为会发生变化。图1:状态模式示例下 面我们尝试使用C#实现该示例。图“状态模式实践”展示了业务类和客户端代码。我们创建了一个类‘clsState’,该类包含有两个...

2015-04-07 10:16:25 146

设计模式问答(二)

什么是解释器模式?解 释器模式允许将语义解释到代码解决方案中。下面让我们来了解具体含义?语法是映射到类中来应用到解决方案中,例如7-2可以映射到‘clsMinus’ 类。在第一行解释器模式给我们提供了一种如何编写解释器的方案,该方案中解释器可以读取并在代码中执行该语法。例如以下例子中我们给出了一个日期格式化语 法,其中解释器给出了转换的代码解决方案并输出期望结果。 图1:日期语法...

2015-03-30 12:58:06 114

原创 设计模式问答(一)

什么是设计模式?您能说出工厂模式、抽象工厂模式、创建者模式、原型模式、原型模式的潜复制及深复制、单例模式、命令模式的原理吗?简介这是一个小巧的设计模式常见问题问答。在本节我们将一起探讨工厂模式、抽象工厂模式、创建者模式、原型模式、原型模式的浅复制及深复制、单例模式、命令模式的原理。在下面的链接中您可以阅读设计模式常见问题问答的后续部分 :-设计模式 FAQ’s 2 --- 解释...

2015-03-20 18:44:36 219

Java Executor框架在多线程应用中的使用

java平台一直对并发程序设计和多线程有这很好的支持。但在早期这种支持也只是在应用层调用原生结构,这种方式最大的缺陷就是使这些原始构件有效的被调用;否则,应用将不能正确运行或者不能达到期望结果。Executor框 架自java1.5中被作为comcurrency包的一部分被引入。它是java多线程的一个抽象层实现,并且作为java中首个实用的并发框架被用来 标准调用、在并行线程中调度、执行...

2015-03-09 14:39:36 212

Java程序员应当知道的10个面向对象设计原则

面向对象设计原则是OOPS编程的核心, 但我见过的大多数Java程序员热心于像Singleton (单例) 、 Decorator(装饰器)、Observer(观察者)等设计模式, 而没有把足够多的注意力放在学习面向对象的分析和设计上面。学习面向对象编程像“抽象”、“封装”、“多态”、“继承” 等基础知识是重要的,但同时为了创建简洁、模块化的设计,了解这些设计原则也同等重要。我经常看到不同经验水...

2015-03-02 11:00:25 103

Tomcat架构(四)

8、标准覆盖机制J2SE 1.4 and 1.5 都包含了一个XML处理解析器的Java API 。Bootstrap 类加载器加载这个解析器的类文件,所以这个解析器会优先于任何一个安装在CLASSPATH里的解析器 被加载,即使您已经安装了新版本的解析器。标准覆盖机制允许您重写JAVA_HOME/lib/endorsed文件夹里某些特定的类(例如CORBA 和 JAXP 类)。Boot...

2015-02-23 19:11:03 104

Tomcat架构(三)

嵌套组件这些组件是针对Tocmat做的特定实现,他们的主要目的是使各种Tomcat容器可以完成各自的工作。1、阀(Valve)valve是处理元素,它可以被包含在每个Tomcat容器的处理路径中--如engine、host、context以及servelt包装器。若要增加Valve到Tomcat容器则需要在server.xml中使用<Valve>标签。在server....

2015-02-20 19:28:41 130

红包来袭!!!

除夕更阑人不睡,厌禳钝滞迎新岁。很高兴程序员学架构能够陪大家走过几个月,能为大家技术生涯提供哪怕稍微一点帮助,我们也感到万分欣慰! 祝大家在羊年芝麻开花节节高! 温馨提示:我们在春节期间还会为大家更新文章,欢迎关注!!! 参加方式:关注公众号:程序员学架构(微信:archleaner)公众号二维码: 好废话不多说,大年三十晚20:30分:回复...

2015-02-18 16:31:26 278

Tomcat架构(二)

5、容器组件这一小节中我们将讨论请求处理组件:引擎(engine)、虚拟主机、上下文(context)组件。5.1、引擎(engine)引擎表示可运行的Catalina的servlet引擎实例并且包含了servlet容器的核心功能。在一个服务中只能有一个引擎。同时,作为一个真正的容器,Engine元素之下可以包含一个或多个虚拟主机。作为请求处理的主要组件,它接收代表...

2015-02-15 17:29:11 136

Tomcat 架构 (一)

在实践过程中,从WebSphere中实现一个EJB的容器以及从WebLogic中实现一个JMS几乎都是不可能的,然而来自Apache基金会的servlet容器Tomcat至少在理论上是可能做到的。请注意,这里所说的“接口”也包含抽象类。规范的API可能会提供一个实现的模板,其中包括定义了一些抽象的基本类型的操作来供服务提供者去实现。而服务提供者应提供这些接口和抽象类的具体实现。例如,在T...

2015-02-09 09:39:54 95

原创 Java类加载器深入解析(二)

在做Java开发时了解Java类加载机制是非常好的。而对类加载机制的基本理解对Java开发人员处理类加载器(ClassLoader)相关的异常也很有帮助。 类加载器委托机制Java类的装载是通过类加载器(CL)来完成的,这些类加载器负责将类加载到JVM中。简单的应用可以使用java平台自带的类加载器来加载自身的类,而稍微复杂一些的应用则倾向于自定义类加载来加载自身的类。在jav...

2015-01-25 21:30:27 98

原创 Java类加载器工作原理

Java类加载器是用来在运行时加载类(*.class文件)。Java类加载器基于三个原则:委托、可见性、唯一性。委托原则把加载类的请求转发给父 类加载器,而且仅加载类当父 类加载器无法找到或者不能加载类时。可见性原则允许子类加载器查看由父类加载器加载的所有的类,但是父类加载器不能查看由子类加载器加载的类。唯一性原则 只允许加载一次类文件,这基本上是通过委托原则来实现的并确保子类加载器不重新加载...

2015-01-19 18:01:07 453

原创 大写“O”符号详解

通常您会开发一个测试数据库。它可能只供 10 人访问,所以你的编程和测试工作可以流畅地进行。一旦完成开发和 QA’d (通过质量检验),它将会正式上线(发布), 人们开始访问该网站。过了一年左右,该网站的响应速度越来越慢。在添加更多的数据库服务器没有起到作用后,您的系统管理员在my.cnf’s度过了他的” 假期”, 甚至为系统新增了许多内存容量也无济于事。听起来像是在大批量访问网站的情况下...

2015-01-14 12:58:38 972

Memcache内部剖析

Memcache在 web社区中是一个非常著名的系统,而且有一个好的原因:它速度快、稳定、轻量级,而且如果你在网站服务器安装了memcache后它似乎会自动将网站访 问速度提升10倍。虽然这似乎有点不可思议,但是:定制一个好的缓存策略对网站或应用很有用。如果你只是想知道如果在你的网站中应用memcache,那 很不幸,本文并不是教你如何使用memcache。我们将抽丝剥茧,看看是什么使memca...

2015-01-05 19:20:57 100

Redis架构

REDIS是一个开源的、先进的键值存储系统。它通常可以被用作数据结构服务器,因为它的键可以包含字符串(string)、哈希值(hash)、列表(list)、集合(set)以及有序集合(sortedset)。而且Redis使用的是内存数据集合。根据你自身的使用情况,你可以定时将这些内存中的数据保存至磁盘中,或者将每个命令都添加至日志中。你可以通过redis的项目主页了解它的更多功能。Redis最...

2014-12-28 19:31:51 272

原创 如何在ubuntu14.0下为WordPress应用服务器搭建四层负载均衡

介绍在本教程中,我们将教你如何使用HAProxy为你的WordPress服务器搭建第四层负载均衡--特别是web应用层。负载均衡web服务器要在设置中增加冗余,这会在碰到服务器失败、网络问题时增加服务的可靠性;同时将负载分摊在多个服务器上可以提交读操作的性能。我们假设你所配置中包括一个WordPress应用服务器去连接一台单独的MYSQL数据库服务器(假设你已经知道如何架设)。如果你只...

2014-12-15 10:10:12 382

Nginx与HAProxy在web应用中的比较

这几天我对Nginx和HAProxy做了比较,得出了令人吃惊的结果。首先,介绍一些背景情况。在很长的一段时间里,我们在Bengler把Nginx作为我们项目的主要web服务器,就像在Mongrel下代理Rails运行一样。Nginx是一个非常好的小开源软件,它占用空间小、有合理的配置语言、功能先进而且速度快。然而,我们却很快发现nginx中代理的负载均衡特性却不尽如人意。这其中最核心的问...

2014-12-07 21:56:08 584

Apache 多路复用模块(MPMs) - Prefork, Worker, Event

 当整个世界都慢慢倾向于nginx的时候,如果你还在使用apache,那么你可能会用尽一切办法来保证速度。你也许会调整要加载的模块,使用Keepalive、摆弄内容协商模块(mod_negotiation,译注:从几个文档中选择一个最匹配客户端要求的文档)、FollowSymLinks指令(译注:允许在此目录中使用软链接)以及重写功能;你甚至可能还会投入更多硬件,并假装自己没...

2014-12-01 13:19:09 145

负载均衡调度算法

 负载主机可以提供很多种负载均衡方法,也就是我们常说的调度方法或算法:轮循(Round Robin)这种方法会将收到的请求循环分配到服务器集群中的每台机器,即有效服务器。如果使用这种方式,所有的标记进入虚拟服务的服务器应该有相近的资源容量以及负载形同的应用程序。如果所有的服务器有相同或者相近的性能那么选择这种方式会使服务器负载形同。基于这个前提,轮循调度是一个简单而有...

2014-11-16 12:02:04 190

理解负载均衡

负载均衡是一个针对许多节点的分布式负载。在网络行业,它通常作为一个web前端而被用来平衡各个服务器的http流量。为了这篇文章,我们关注Zenus负载均衡器在http和https流量上的负载均衡。负载均衡器允许用户智能的分发流量到许多使用不同协议的多台服务器中的单个IP。这意味这负载处理可以被多个节点共享,而不是局限于在活动频繁时提高行单个服务器性能。这提高了你的web应用的可靠性,而且允许...

2014-11-09 20:49:44 173

web安全:SQL注入

SQL注入是网站和web应用程序中最常见的安全漏洞。这种恶意技术有很多应用场景, 但(SQL注入)通常是指在数据输入的地方注入代码以利用数据库应用程序中的安全漏洞。 SQL注入在接收用户输入的接口处 (也就是说在注册表单、查询表单等地方)尝试执行注入操作。对(SQL注入)高度关注以及方便检测数据库应用程序中的安全漏洞使得攻击者经常地以最小的努力“测试”网站/应用程序的安全完整性。危害成...

2014-11-02 09:54:30 216

你设计的应用是IO依赖型还是CPU依赖型?

这个话题可能看起来很枯燥,但它对mysql的性能优化非常重要。事实上我在MYSQL 咨询工作中无时无刻接不在接触这类问题。IO工作负载与cpu依赖完全不同,尤其是当你的工作集(通常只有数据库的一小部分)载入内存的时候。当数据在内存中时读取是非常快的,如果不在内存中,则非常缓慢。例如,当你查询分析10000行数据时,如果这10000行全部加载在内存中,则只需要很短时间;但是如果到磁盘上去读的话...

2014-11-02 09:52:23 180

【重磅】移动网络性能揭秘(下)--网络协议及性能提升实践

网络协议的性能现在轮到我们实际上可以控制的东西了。网络处理的性能与延迟时间的增加是不成比例的。这是由于大多数网络协议的内在操作是双向信息交换。本章的其余部分则侧重于理解为什么会产生这些信息交换以及如何减少甚至消除它们交换的频率。 图3:网络协议 传输控制协议传输控制协议(TCP)是一种面向连接、基于ip的传输协议。TCP影响下的无差错双工通信信道对其他协议如HT...

2014-10-25 12:27:56 169

【重磅】移动网络性能揭秘(上)--移动网络组件详解

简介在过去的几年里我们在移动蜂窝网络性能方面取得了重大进展。但是由于网络延迟的膨胀导致许多应用并没有得到改善。延迟问题长期以来一直制约着移动网络。尽管近年来已取得一些进展,但减少网络延迟没有跟上延迟的增长速度。正是由于这种不对等导致了延迟,而不是吞吐量,成为影响网络性能的最大因素。这篇文章逻辑上主要包含两章。第一部分将讨论导致移动网络延迟的细节;第二部分介绍提高网络性能降低延迟的软...

2014-10-25 01:34:50 404

分布式还是混合式? 谈CDN架构对服务质量的影响

 传统分布式模型通 常,内容分发网络(CDN)采用分布式模型。在这种模型里, 用户的文件存放在一个源服务器上,并且由大量边缘服务器负责分发这些文件。这些边缘服务器的磁盘空间比较小,所以大多数的文件被放在内存中。因此,当一个 文件传输至终端用户之前,如果该文件在边缘的CDN缓存服务器上不存在,那么这些服务器会先去原始服务器请求该文件或流。这种分布式模型起 源于20世纪末,也就...

2014-10-18 22:31:53 299

网速慢?这可不仅仅是带宽问题!

从服务质量角度来看,如果不考虑其他因素,那么家庭网络服务很大程度上取决于带宽。虽然带宽对于web内容用户来说非常重要,但是它并不是仅有的重要指标。众所周知,市面上所卖的高带宽连接并不是真正意义上的传输速度,它们不过是最大网速,只是一个卖点而已。直接说就是:不要期望能达到广告中的速度。让我们来看一个东西...TCP或者叫传输控制协议,是你的浏览器连接一个网站时所使用的网络协议,而且是数据如何...

2014-10-14 21:29:20 264

空空如也

空空如也

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

TA关注的人

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