- 博客(284)
- 资源 (3)
- 收藏
- 关注
原创 深入剖析ThreadLocal实现原理以及内存泄漏问题
一、概述在2017京东校园招聘笔试题中遇到了描述ThreadLocal的实现原理和内存泄漏的问题,之前看过ThreadLocal的实现原理,但是网上有很多文章将的很乱,其中有很多文章将ThreadLocal与线程同步机制混为一谈,特别注意的是ThreadLocal与线程同步无关,并不是为了解决多线程共享变量问题! ThreadLocal官网解释: This class provides...
2017-12-05 11:08:37
318
原创 Netty入门到精通二(转)
在第一篇里面我们了解了传统IO,这篇我们就来介绍一下Nio吧,废话就不多说了,来看看代码吧import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.SelectionKey;import java.nio.ch...
2017-10-16 13:36:35
207
原创 Netty入门到精通一(转)
因为一次工作需要,要从华为的一个区跑到另一个区开会,我终于见到了我心目中的大神(李林锋:Netty中国推广者,现华为技术有限公司平台中间件架构与设计部设计师),喜欢技术的我迫不及待的和他交流了起来,大神的技术果然牛逼,小弟膜拜中,大牛给我讲解了很多设计思想,在我遇到大部分开发者中,大多交流技术,用了什么什么技术,然后觉得很牛逼,经过和大牛交流后,才明白设计思想很重要,很多人注重用神马神马框架,...
2017-10-16 13:29:13
284
原创 Java设计模式之工厂模式(三种)
工厂模式 1. 简单工厂 理解 简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。 不修改代码的话,是无法扩展的。 例子 产品接口 //产品接口 public interface ProductI { public void productName(); } 产品实体类 public class ProductA implements ProductI { ...
2017-07-26 13:58:30
158
原创 nodejs中cluster使用
摘自<Node.js即学即用>第3章使用NODE中cluster利用多核CPU [javascript] view plain copy print?var cluster = require('cluster'); var http = require('http'); var numCPUs = require('os')....
2017-05-10 16:40:03
302
原创 解读Nodejs多核处理模块cluster
从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发。Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎。chrome浏览器就基于V8,同时打开20-30个网页都很流畅。Nodejs标准的web开发框架Express,可以帮助我们迅速建立web站点,比起PHP的开发效率更高,而且学习曲线更低。非常适合小型网站,个性化...
2017-05-10 10:58:05
140
原创 nodejs优缺点及适用场景讨论
概述: NodeJS宣称其目标是“旨在提供一种简单的构建可伸缩网络程序的方法”,那么它的出现是为了解决什么问题呢,它有什么优缺点以及它适用于什么场景呢? 本文就个人使用经验对这些问题进行探讨。 一. NodeJS的特点 我们先来看看NodeJS官网上的介绍: Node.js is a platform built on Chrome's JavaScr...
2017-05-10 10:50:44
176
原创 Namenode HA原理详解(脑裂)
Namenode HA原理详解社区hadoop2.2.0 release版本开始支持NameNode的HA,本文将详细描述NameNode HA内部的设计与实现。 为什么要Namenode HA?1. NameNode High Availability即高可用。2. NameNode 很重要,挂掉会导致存储停止服务,无法进行数据的读写,基于此NameNode的计算(...
2017-05-09 10:46:32
152
原创 为Hadoop集群选择合适的硬件配置
随着Apache Hadoop的起步,云客户的增多面临的首要问题就是如何为他们新的的Hadoop集群选择合适的硬件。尽管Hadoop被设计为运行在行业标准的硬件上,提出一个理想的集群配置不想提供硬件规格列表那么简单。 选择硬件,为给定的负载在性能和经济性提供最佳平衡是需要测试和验证其有效性。(比如,IO密集型工作负载的用户将会为每个核心主轴投资更多)。在这个博客帖子中,你将会学到一些工作...
2017-05-08 12:59:13
256
原创 Hadoop2.6.0 + zookeeper集群环境搭建
前提:已安装好centos6.5操作系统 Hadoop HA(QJM)集群配置规划IPHostname备注192.168.100.101h1m1NN(active)、RM、ZKFC192.168.100.102...
2017-05-05 15:05:17
187
原创 ZKFailoverController( zkfc)介绍
1.基本原理zk的基本特性:(1) 可靠存储小量数据且提供强一致性(2) ephemeral node, 在创建它的客户端关闭后,可以自动删除(3) 对于node状态的变化,可以提供异步的通知(watcher)zk在zkfc中可以提供的功能:(1) Failure detector: 及时发现出故障的NN,并通知zkfc(2) Active node locator: 帮助客户端定位哪个...
2017-05-05 14:54:54
288
原创 haproxy配置详解
对ha配置文件解析: global # 全局参数的设置log 127.0.0.1 local0 info# log语法:log <address_1>[max_level_1] # 全局的日志配置,使用log关键字,指定使用127.0.0.1上的syslog服务中的local0日志设备,记录日志等级为info的日志user haproxygro...
2017-03-10 13:50:58
139
原创 haproxy安装配置
简介HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露...
2017-03-05 13:53:58
109
原创 haproxy日志配置
AProxy配置日志策略默认情况下,HAProxy是没有配置日志的在centos6.3下默认管理日志的是rsyslog,可以实现UDP日志的接收,将日志写入文件,写入数据库先检测rsyslog是否安装rpm -q rsyslog安后在/etc/rsyslog.d/下创建haproxy.conf,内容如下:$ModLOad imudp$UDPServerRun 514local3....
2017-03-05 13:53:51
172
原创 FFmpeg 基本用法
FFmpegFFmpeg 基本用法本课要解决的问题1.FFmpeg的转码流程是什么?2.常见的视频格式包含哪些内容吗?3.如何把这些内容从视频文件中抽取出来?4.如何从一种格式转换为另一种格式?5.如何放大和缩小视频?6.如何旋转,翻转,填充,裁剪,模糊,锐化视频?7.如何给视频加logo,删除logo?8.如何给视频加文本,动态文本?9.如何处理图片...
2017-02-24 17:28:33
132
原创 Cent OS6.5 安装nodeJS(分分钟搞定)
第一步 下载cd optwget https://nodejs.org/dist/v7.5.0/node-v7.5.0-linux-x64.tar.xz第二步 解压缩文件包xz -d node-v7.5.0-linux-x64.tar.xztar -xvf node-v7.5.0-linux-x64.tar第三部 NODE 环境配置这样可以使得在任何目录下,都可以使用/opt/node-v7.5...
2017-02-20 16:21:46
156
原创 二进制转十进制快速方法
如果你是搞网络的,我觉得你一定要记住以下几种二进制数的转换值。你是一个网络工程 师,当看到一串二进制数时,你不要告诉我你会拿出笔纸或掰手指算半天才知道它转化成十进制的数值。要想快,那就记下下面几种常见的二进制--十进制转换: 以8位 来演示: 1.第一种: 00000001 1 00000010 2 00000100 4...
2017-02-16 13:48:43
328
原创 Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算。下面详细介绍每个位运算符。 1.与运算符与运算符用符号“&”表示,其使用规律如下:两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段。public class data13...
2017-02-16 13:41:51
97
原创 Storm和Storm比较
1、What——JStorm是什么? 概述: JStorm 是一个分布式实时计算引擎,类似Hadoop MapReduce的系统, 用户按照规定的编程规范实现一个任务,然后将这个任务递交给JStorm系统,Jstorm将这个任务跑起来,并且按7 * 24小时运行起来,一旦中间一个worker 发生意外故障, 调度器立即分配一个新的worker替换这个失效的worker。因此,从应用的角...
2017-02-15 14:51:46
1082
原创 接近淘宝 80%的大数据实时计算平台,从0搭建的经验和坑
上周一,来自武汉的直播平台斗鱼TV宣布C轮融资,腾讯领投的 15 亿人民币,距其获得 B 轮1亿美元不到半年,也是大写的牛逼。但小寻更关心他们的大数据架构,作为一个在 2 年多时间里崛起的公司,其流量经历了从 0 到 PB 级别的飞跃。刚好今年 3月,斗鱼的大数据团队负责人参加过简寻主办的首届武汉开发者峰会,分享了一些经验和坑,结合一些资料,小寻整理了这个帖子,供有志于大数据的同学参考和...
2017-02-15 10:34:35
287
原创 携程实时大数据平台实践分享
今天给大家分享的是携程在实时数据平台的一些实践,按照时间顺序来分享我们是怎么一步一步构建起这个实时大数据平台的,目前有一些什么新的尝试,未来的方向是怎么样的,希望对需要构建实时数据平台的公司和同学有所借鉴。一、为什么要做实时数据平台首先先介绍一下背景,为什么我们要做这个数据平台?其实了解携程的业务的话,就会知道携程的业务部门是非常多的,除了酒店和机票两大业务之外,有近20个SBU和公共部...
2017-02-15 10:33:51
211
原创 Kafka剖析(一):Kafka背景及架构介绍
Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Apache Storm、Spark都支持与Kafka集成。InfoQ一直在紧密关注Kafka的应用以及发展,“Kafka剖析”专栏将会从架构设计、实现、应用场景、性能等方面深度解析Kafka。背景介绍Kafka创建背景...
2017-02-14 17:28:51
85
原创 高性能IO模型浅析
服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(Blocking IO):即传统的IO模型。(2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。(3)IO多路复用(IO Multiplexing):即...
2017-02-13 15:55:30
66
原创 nio Selector 阻塞 唤醒 原理
Selector:java nio无阻塞io实现的关键。阻塞io和无阻塞io:阻塞io是指jdk1.4之前版本面向流的io,服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒 绝请求,如果有的话,客户端会线程会等待请求结束后才继续执行。当并发量大,而后端服务或客户端处理数据慢时就会产生产生大量线程处于等待中,即上述的阻塞。...
2017-02-13 14:27:56
557
原创 JAVA NIO的selector的实现原理
Java NIO的核心类库多路复用器Selector就是基于epoll的多路复用技术实现的 相比select、poll系统调用,epoll有如下优点:1.支持一个进程打开的socket描述符(FD)不受限制,仅受限于操作系统的最大文件句柄数。 select最大的缺陷是单个进程所打开的FD是有一定限制的,它由FD_SETSIZE设置,默认值是1024。可以选择修改这个宏后重新编译内核,...
2017-02-13 14:15:45
186
原创 Netty高性能之Reactor线程模型
Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源组件也基于...
2017-02-13 11:40:51
160
原创 linux下使用awk,wc,sort,uniq,grep对nginx日志进行分析和统计
通过对awk, wc, uniq, grep, sort等命令的组合,分析nginx的access和error日志。统计各种总量、单位时间量。 access.log日志格式(见下图)说明:a). 按照Tab键拆分每项数据b). 字段含义(如下说明)column1:ip_addresscolumn2:log_timecolumn3:requestcolumn4:status_c...
2017-02-13 09:45:00
573
原创 Netty系列之Netty安全性
本文转至http://www.infoq.com/cn/articles/netty-security/ 1. 背景1.1. 严峻的安全形势1.1.1. OpenSSL Heart bleed漏洞2014年上半年对网络安全影响最大的问题就是OpenSSL Heart bleed漏洞,来自Codenomicon和谷歌安全部门的研究人员发现OpenSSL的源代码中存...
2016-12-20 15:17:32
153
原创 升级OpenSSL修复高危漏洞Heartbleed
背景: OpenSSL全称为Secure Socket Layer,是Netscape所研发,利用数据加密(Encryption)作技术保障在Internet上数据传输的安全。可确保数据在网络上的传输不会被qie听及截取。 当然,OpenSSL是一个强大的密码库,我们在使用SSL协议的时候不一定非得采用OpenSSL,不过目前基本上都是用的OpenSSL,因为它更...
2016-12-19 11:48:27
139
原创 cassandra如何分离一个表或者一个keyspace到新集群
cassandra数据迁移有好多种方法,只要你的sstable文件没有丢失,这里只讲述两种常见易用的方式:第一种方式:copy命令使用方法:适用于数据量小的情况下。使用方式:copy mykeyspace.mytable to ‘/home/db.csv’这样就成功的把表mytable以csv的格式导出到了db.csv文件。然后再另外一个集群中,建一个一模一样的表,然后...
2016-12-16 14:48:27
159
原创 cassandra如何扩容和替换一个节点
增加一个节点和替换一个DOWN掉的节点,步骤都是一样的,只是启动参数不一样。第一:准备一个新机器,cassandra的配置使用和集群中一个普通节点相同的配置。第二:然后就可以启动了,增加一个节点,只要bin/cassandra 启动就可以了。如果是替换一个节点(假设DOWN掉的节点ip=192.168.1.101),启动的时候,可以使用bin/cassandra -Dcassand...
2016-12-13 11:23:27
672
原创 cassandra日常维护之nodetool cleanup
nodetool cleanup 官方的解释是:cassandra在扩容一个节点到新集群的时候,有些数据会复制一份到新节点,然后属于新节点的数据仍然存在那些老节点上。它自己不会主动的去删除。所以在每次扩容之后,你需要在每个老节点上执行cleanup操作。根据实践:cleanup操作在执行过程中可能会生成一些临时文件,并且导致IO利用率少许上升,机器负载少许增加,cleanup是单线程操作,...
2016-12-13 11:22:45
453
原创 译 - Cassandra 数据建模的基本规则
http://blog.csdn.net/bbaiggey/article/details/53033333
2016-12-13 11:22:26
109
原创 cassandra新版驱动,使用SchemaBuilder进行表的操作
在cassanda的官方驱动cassandra-driver-core-2.1.3.jar之前,创建表、修改表、创建索引操作,只能通过拼CQL语句,然后通过session去执行的方式。可能会经常导致语法格式错误。在最新版的驱动cassandra-driver-core-2.1.3.jar中,提供了一种更方便的对表的修改方式。类似于用于增删改查操作的com.datastax.driver.c...
2016-12-13 11:19:42
341
原创 cassandra日常维护之nodetool repair
前提cassandra的根据分区key的操作是很快的,这也是它的优势,但是它的多条件查询是很弱的,特别是如果你有删除操作的话,就更坑爹了。cassandra的删除操作,实际上并不是真的删除,它是执行的插入操作,插入的数据叫做tombstone(墓碑),记录了被删除记录的信息和删除时间。当你根据条件查询的时候,如果它会把满足条件的记录查询出来,包括tombstone。然后过滤掉删除的记录,再把结...
2016-12-13 11:19:27
993
一份完整的Spring+Hibernate+DWR+extJs的生成树及下拉comBoboxTre..
2009-12-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人