自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (10)
  • 问答 (1)
  • 收藏
  • 关注

转载 redis 数据过期策略

本文对Redis的过期机制简单的讲解一下  讲解之前我们先抛出一个问题,我们知道很多时候服务器经常会用到redis作为缓存,有很多数据都是临时缓存一下,可能用过之后很久都不会再用到了(比如暂存session,又或者只存放日行情股票数据)那么就会出现一下几个问题了Redis会自己回收清理不用的数据吗?如果能,那如何配置?如果不能,如何防止数据累加后大量占用存储空间的问题?  之前一直接触Redis不...

2018-05-30 16:24:34 520

转载 redis 数据淘汰策略

转载自:《redis学习》-- 缓存淘汰策略redisredis缓存淘汰策略失效的内部实现passive way 消极方法Active Way缓存淘汰策略参考:Redis 内存淘汰机制​ 深入理解Redis主键失效原理及实现机制认识最大缓存在 redis 中,允许用户设置最大使用内存大小 server.maxmemory,默认为0,没有指定最大缓存,如果有新的数据添加,超过最大内存,则会使redi...

2018-05-30 16:19:55 818 1

转载 Netty编解码框架分析

转载自:李林锋 Netty系列之Netty编解码框架分析1. 背景1.1. 编解码技术通常我们也习惯将编码(Encode)称为序列化(serialization),它将对象序列化为字节数组,用于网络传输、数据持久化或者其它用途。反之,解码(Decode)/反序列化(deserialization)把从网络、磁盘等读取的字节数组还原成原始对象(通常是原始对象的拷贝),以方便后续的业务逻辑操作。进行远...

2018-05-30 15:14:47 1506 1

转载 Netty Codec框架

什么是 Codec编写一个网络应用程序需要实现某种 codec (编解码器),codec的作用就是将原始字节数据与目标程序数据格式进行互转。网络中都是以字节码的数据形式来传输数据的,codec 由两部分组成:decoder(解码器)和encoder(编码器)编码器和解码器一个字节序列转换为另一个业务对象。我们如何区分?想到一个“消息”是一个结构化的字节序列,语义为一个特定的应用程序——它的“数据”...

2018-05-30 14:55:16 3645

转载 Netty零拷贝原理实现

转载自:李林锋 Netty系列之Netty高性能之道很多用户都听说过Netty具有“零拷贝”功能,但是具体体现在哪里又说不清楚,本小节就详细对Netty的“零拷贝”功能进行讲解。Netty的“零拷贝”主要体现在如下三个方面:1) Netty的接收和发送ByteBuffer采用DIRECT BUFFERS,使用堆外直接内存进行Socket读写,不需要进行字节缓冲区的二次拷贝。如果使用传统的堆内存(H...

2018-05-29 23:57:15 8232 2

转载 dubbo源码浅析-远程服务调用流程

转载自:dubbo源码浅析(五)-远程服务调用流程非商业转载,如造成侵权,请联系本人删除消费端调用远程服务接口时,使用上和调用普通的java接口是没有任何区别,但是服务消费者和提供者是跨JVM和主机的,客户端如何封装请求让服务端理解请求并且解析服务端返回的接口调用结果,服务端如何解析客户端的请求并且向客户端返回调用结果,这些框架是如何实现的,下面就来看下这部分的代码。 消费端调用提供端服务的过程要...

2018-05-29 17:22:49 3368

原创 Dubbo——Transport网络传输层

Transport网络传输层1请求/响应的处理流程NettyHandler:继承netty对象SimpleChannelHandler,重写了channelConnected、channelDisconnected、messageReceived、writeRequested、exceptionCaught方法,当netty的通道发生连接、断开连接、收到消息、写入消息、捕获异常等事件时触发Nett...

2018-05-29 15:02:14 689

转载 Dubbo——Exchange信息交换层

Exchange信息交换层1、Exchange层的类分析ReferenceCountExchangeClient:将请求交HeaderExchangeClient处理,不进行任何其他操作。HeaderExchangeClient:提供心跳检查功能;将send、request、close等事件转由HeaderExchangeChannel处理,HeaderExchangeChannel对象中的Cha...

2018-05-29 11:36:19 980

转载 dubbo的超时机制和重试机制

超时是针对消费端还是服务端?如果是争对消费端,那么当消费端发起一次请求后,如果在规定时间内未得到服务端的响应则直接返回超时异常,但服务端的代码依然在执行。如果是争取服务端,那么当消费端发起一次请求后,一直等待服务端的响应,服务端在方法执行到指定时间后如果未执行完,此时返回一个超时异常给到消费端。dubbo的超时是争对客户端的,由于是一种NIO模式,消费端发起请求后得到一个ResponseFuture,然后消费端一直轮询这个ResponseFuture直至超时或者收到服务端的返回结果。

2018-05-29 10:55:54 23495 1

转载 动态代理模式和cglib代理模式

Java的三种代理模式概述静态代理模式:代理类和被代理类继承同一个接口;动态代理模式:被代理类继承某个接口;cglib代理模式:被代理类无需继承接口;1.代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思...

2018-05-29 10:20:09 587

转载 线程池工作队列饱和策略

Java线程池会将提交的任务先置于工作队列中,在从工作队列中获取(SynchronousQueue直接由生产者提交给工作线程)。那么工作队列就有两种实现策略:无界队列和有界队列。无界队列不存在饱和的问题,但是其问题是当请求持续高负载的话,任务会无脑的加入工作队列,那么很可能导致内存等资源溢出或者耗尽。而有界队列不会带来高负载导致的内存耗尽的问题,但是有引发工作队列已满情况下,新提交的任务如何管理的...

2018-05-29 00:05:54 496

转载 dubbo暴露服务的过程解析(从proxy层到exchange、transport层)

一 概述    上个章节已经描述了dubbo发布一个服务,但具体是如何发布服务只是粗略的描述了下,这里将深入描述服务发布时怎么样开启socket监听,即启动netty服务。二 开启netty服务上一节发布服务的重点入口代码如下[java] view plain copy//通过proxyFactory对象生成接口实现类代理对象Invoker  Invoker<?> invoker = ...

2018-05-28 16:16:46 886

转载 Dubbo框架设计官方文档

框架设计整体设计图例说明:图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口。图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代表层之间的依赖关系,每一层都可以剥离上层被复用,其中,Service 和 Config 层为 API,其它各层均为 SPI。图中绿色小块的为扩展接口,蓝色小块为实现类,图中只显示用于关联各层的实现类。图...

2018-05-28 15:44:54 834

转载 Netty轻量级内存池技术实现原理与应用

转载自:Netty轻量级内存池技术实现原理与应用在Netty中,通常会有多个IO线程独立工作,基于NioEventLoop的实现,每个IO线程负责轮询单独的Selector实例来检索IO事件,当IO事件来临的时候,IO线程开始处理IO事件。最常见的IO事件即读写事件,那么这个时候就会涉及到IO线程对数据的读写问题,具体到NIO方面即从内核缓冲区读取数据到用户缓冲区或者从用户缓冲区将数据写到内核缓冲...

2018-05-28 08:21:28 301

转载 Netty线程模型

转载自:李林锋 Netty系列之Netty线程模型1. 背景1.1. Java线程模型的演进1.1.1. 单线程时间回到十几年前,那时主流的CPU都还是单核(除了商用高性能的小机),CPU的核心频率是机器最重要的指标之一。在Java领域当时比较流行的是单线程编程,对于CPU密集型的应用程序而言,频繁的通过多线程进行协作和抢占时间片反而会降低性能。1.1.2. 多线程随着硬件性能的提升,CPU的核数...

2018-05-27 23:34:14 221

转载 Netty百万级推送服务设计要点

1. 背景1.1. 话题来源最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题。问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为如下几类:Netty是否可以做推送服务器?如果使用Netty开发推送服务,一个服务器最多可以支撑多少个客户端?使用Netty开发推送服务遇到的各种技术问题。由于咨询者众多,关注点也比较集中,我希望通过本文...

2018-05-27 18:05:46 352

转载 Netty in Action - Bootstrap

Bootstrap类型Bootstrap(引导) 是 Netty 中配置程序的过程,当你需要连接客户端或服务器绑定指定端口时需要使用 Bootstrap。如前面所述,Bootstrap 有两种类型,一种是用于客户端的Bootstrap,一种是用于服务端的ServerBootstrap。不管程序使用哪种协议,无论是创建一个客户端还是服务器都需要使用“引导”。面向连接 vs. 无连接请记住,这个讨论适...

2018-05-27 16:33:12 373

转载 Netty in Action -ChannelHandler和ChannelPipeline

本章主要内容ChannelChannelHandlerChannePipelineChannelHandlerContext我们在上一章研究的 bytebuf 是一个容器用来“包装”数据。在本章我们将探讨这些容器如何通过应用程序来移动,传入和传出,以及他们的内容是如何处理的。Netty 提供了应用开发的数据处理方面的强大支持。我们已经看到了channelhandler 如何链接在一起 Channe...

2018-05-27 16:17:22 371

转载 Netty in Action -ByteBuf

Buffer(缓冲)正如我们先前所指出的,网络数据的基本单位永远是 byte(字节)。Java NIO 提供 ByteBuffer 作为字节的容器,但这个类是过于复杂,有点难以使用。Netty 中 ByteBuffer 替代是 ByteBuf,一个强大的实现,解决JDK 的 API 的限制,以及为网络应用程序开发者一个更好的工具。但 ByteBuf 并不仅仅暴露操作一个字节序列的方法;这也是专门的...

2018-05-27 15:56:06 555

转载 Java NIO分析之Selector详解

1. Selector设计笔者下载得是openjdk8的源码, 画出类图比较清晰得看到,openjdk中Selector的实现是SelectorImpl,然后SelectorImpl又将职责委托给了具体的平台,比如图中框出的linux2.6以后才有的EpollSelectorImpl, Windows平台则是WindowsSelectorImpl,MacOSX平台是KQueueSelectorImpl.从名字也可以猜到,openjdk肯定在底层还是用epoll,kqueue,iocp这些.

2018-05-25 09:46:36 276

转载 java NIO Channel and buffer

Java NIO Channels are similar to streams with a few differences:You can both read and write to a Channels. Streams are typically one-way (read or write).Channels can be read and written asynchronously.Channels always read to, or write from, a Buffer.

2018-05-25 09:42:41 206

转载 AbstractQueuedSynchronizer的共享锁实现分析(以CountDownLatch为例)

前言经过本系列的上半部分JDK1.8 AbstractQueuedSynchronizer的实现分析(上)的解读,相信很多读者已经对AbstractQueuedSynchronizer(下文简称AQS)的独占功能了然于胸,那么这次我们通过对另一个工具类:CountDownLatch的分析来解读AQS的另外一个功能:共享功能。AQS共享功能的实现在开始解读AQS的共享功能前,我们再重温一下Count...

2018-05-21 23:40:37 227

原创 AbstractQueuedSynchronizer源码分析之独占锁实现

acquire()方法调用tryAcquire()方法判断同步状态是否满足,如果不满足则将线程封装成节点,加入到同步队列。加入到队列后的线程会反复阻塞,每次被唤醒后都再次调用tryAcquire()方法判断同步状态是否满足,如果仍然不满足,继续阻塞等待,直至同步状态满足为止。由于该方法忽略中断,所以在被唤醒后不会判断线程是否被中断。相对地,acquireInterruptibly()方法在被唤...

2018-05-21 23:23:20 267

转载 模板模式之spring的jdbcTemplate

转载:http://www.iteye.com/topic/713770?1306420721 最近一直在研读spring源码和学习设计模式,想把自己的一些领悟与大家分享,前几天发了几篇简单的文章,可能由于文字过于简单,几次被评为新手贴,心中滴汗啊  没办法,工作太忙,大家都知道,写篇文章是要很大精力地~~~~~ 今天恰有时间,把这两天的学习所得与大家分享,尽量写得详细一些,专家饶路走,新手觉得好...

2018-05-12 17:02:31 2940 4

转载 netty对http模型的实现

为了表示HTTP中各种消息体,netty设计了一套完整的类型定义,包括接口和实现类。由于类型比较多,部分实现类继承多个类和接口,关系有些复杂。我们按照接口先梳理一遍各个消息的基本情况,再看具体的类实现方式。HTTP接口定义基础接口我们先来看看HTTP的基本的接口定义。下图是netty中HTTP相关的6个接口的继承结构,还有他们继承的接口:先简单过一下各个接口的情况:...

2018-05-11 17:58:03 574

原创 ReentrantReadWriteLock源码分析

概述ReadWriteLockReadWriteLock持有一对锁,一个是用于读操作的readLock,一个用于写操作的writeLock。readLock是共享锁,可以被多个读线程同时持有,writeLock是独占锁。ReadWriteLock必须保证writeLock操作的内存一致性。也就是说,持有readLock的线程能看到先前writeLock释放后的所有更新。与只使用一个...

2018-05-11 15:43:52 2185

转载 HBase Catalog Tables (region定位原理)

译自: -ROOT- HBase and.META. table structure在HBase中,大部分的操作都是在RegionServer完成的,Client端想要插入,删除,查询数据都需要先找到相应的RegionServer。什么叫相应的RegionServer?就是管理你要操作的那个Region的RegionServer。Client本身并不知道哪个RegionServer管理哪个Regi...

2018-05-09 18:03:32 1266

原创 BIO和NIO的区别

概述BIO NIO 阻塞等待IO: 连接建立后,如果当前线程暂时没有数据可读,则当前线程会一直阻塞在 Read 操作上,造成线程资源浪费。 非阻塞IO: 当线程从某通道进行读写数据时,若没有数据可用时,该线程会去执行其他任务。线程通常将非阻塞IO的空闲时间用于在其他通道上执行IO操作,所以单独的线程可以管理多个输入和输出通道 BIO 基于字节流和字符流进行操作 NIO 基于 Channel(通道)和 Buffer(缓冲区)进行操作

2018-05-09 16:55:38 336

原创 curator2.1源码分析之LeaderLatch封装ZK主从选举

概述ZK主从选举的原理是:一组线程/进程竞争在zk的某个路径上创建临时节点,创建成功的则为主节点,其余的为从节点。LeaderLatch#start()方法判断连接是否已经建立,在连接建立后执行internalStart()方法。/** * Add this instance to the leadership election and attempt to acqu...

2018-05-09 15:31:00 776

转载 zookeeper和hbase

Client客户端、Master、Region都会通过心跳机制(RPC通信)与zookeeper保持联系。当在Hbase中插入或读取数据时流程如下;1、在Client中写一个Java类运行,客户端只需要连接zookeeper,客户端会从zookeeper中得到Regionserver的映射信息,之后客户端会直接连接到Region Server,2、RegionServer在启动之后会向zookee...

2018-05-08 17:41:11 1438 1

原创 ubuntu16.04 设置静态ip

ubuntu16.04 网卡命名       在给ubuntu的有线网卡或者无线网卡设置静态ip之前,首先我们需要了解有关网卡命名的知识。       在unbuntu16.04之后,ifconfig会发现网卡名eth0变成了enp2s0,wlan0变成了enp3s0或者类似的名称。这种改变可以参考Predictable Network Interface Names.网卡命名更换的原因如文中所说...

2018-05-08 10:34:24 21289 2

转载 HBase和Hive的区别和适用场景

一、区别:Hbase: Hadoop database 的简称,也就是基于Hadoop数据库,是一种NoSQL数据库,主要适用于海量明细数据(十亿、百亿)的随机实时查询,如日志明细、交易清单、轨迹行为等。 Hive:Hive是Hadoop数据仓库,严格来说,不是数据库,主要是让开发人员能够通过SQL来计算和处理HDFS上的结构化数据,适用于离线的批量数据计算。通过元数据来描述Hdfs上的结构化文本数据,通俗点来说,就是定义一张表来描述HDFS上的结构化文本,包括各列数据名称,数据类型是什么等,方便我

2018-05-07 17:39:19 308

转载 HBase架构解析

转载自:HBase架构解析HBase架构组成HBase采用Master/Slave架构搭建集群,它隶属于Hadoop生态系统,由一下类型节点组成:HMaster节点、HRegionServer节点、ZooKeeper集群,而在底层,它将数据存储于HDFS中,因而涉及到HDFS的NameNode、DataNode等,总体结构如下:其中HMaster节点用于:管理HRegionServer,实现其负载...

2018-05-06 20:33:19 305

转载 hbase的负载均衡策略

1.负载均衡概述Master的LoadBalancer线程周期性的在各个RegionServer间移动region维护负载均衡1 经常被并发查询的数据不要存储在同一个RegionServer中 , 避免热点读取问题 .2 当一个机器上经过大量的插入或者删除数据以后 ,region合并或者分裂 ,那么机器上的region的数量会相差很大 .3 当新增了节点以后 , 应该去分配一些其他机器上的region数据4 当某个RegionServer宕机以后 , 这台机器上数据的分配region的执行

2018-05-06 17:25:44 2380

转载 HBase的Region分裂和合并原理

Region分裂当MemStore的数据超过阈值时,将数据溢写磁盘,生成一个StoreFile文件。当Region中最大Store的大小超过阈值时,Region分裂,等分成两个Region,实现数据访问的负载均衡。新的Region的位置由HMaster来确定在哪个RegionServer中。下面是具体的细节:1.当一个region里的StoreFile增长到大于配置的参数:hbase.hregion.max.filesize的大小,也可以在创建HBase表的时候指定这个参数,region会被一分

2018-05-06 17:18:15 1307

转载 限流的4种策略--固定窗口、滑动窗口、漏桶、令牌桶

01 Why分布式系统中,由于接口API无法控制上游调用方的行为,因此当瞬时请求量突增时,会导致服务器占用过多资源,发生响应速度降低、超时、乃至宕机,甚至引发雪崩造成整个系统不可用。限流,Rate Limiting,就是对API的请求量进行限制,对于超出限制部分的请求作出快速拒绝、快速失败、丢弃处理,以保证本服务以及下游资源系统的稳定。哪些原因会带来瞬时请求量突增?1,热点业务、突发热点数据带来的激增。例如微博热搜的爆点。2,上游系统的bug导致。3,恶意的攻击流量。实现限流的方法很多,..

2018-05-04 11:27:37 3298

原创 kafka2.2源码分析之Log日志存储

概述Log由一系列LogSegment组成,每个LogSegment都有一个base offset,表示该段中的第一条消息。新的LogSegment会根据Log的配置策略来创建。配置策略控制了LogSegment的字节大小和创建的时间间隔。成员变量dirLogSegment的创建目录。LogStartOffset可以暴露给client端的最早offset。LogSta...

2018-05-03 10:59:07 663

ios的网络图片下载类库

ios的网络图片下载类库

2016-03-31

viewpager的下横线指示器

viewpager的下横线指示器,使用translateAnimation位移动画实现被选中页卡的下横线的移动

2015-07-30

viewpager实现页面导航之三

新特点是使用translateAnimation位移动画实现被选中的点的移动。而不是用以往的方法实现点的切换。之所以说是点的移动而不是点的切换是因为,运行代码滑动页面时真的可以看到像在Flash中绿点的移动效果。以往的方法只是一个点换成灰色图片,另一个换成绿色图片,没有移动。

2015-07-22

viewpager实现页面导航

viewpager实现页面导航,代码耦合性低。比如不在initiateItem()中设计并返回页卡布局文件对象。姑且可以看看了解

2015-07-21

viewpager与预编译的点布局实现页面导航效果

该源代码简洁的实现了在页面滑动时点的变化,而且包容点的布局是经过重写的布局,单独作为一个文件,不在MainActivity.java中,耦合低

2015-07-20

进销存管理系统之二

这是由明日科技公司开发的进销存管理系统,跟上一例代码有些相似之处

2015-07-17

进销存管理系统

这是个教你怎么连接sqlserver2008的代码,只要查看dao.java即可

2015-07-17

java+Mysql学生数据库管理系统

该源代码里会教你怎么自定义类将在数据库查询到的结果集以表格的形式展示在界面上;怎么自定义图形面板添加背景图片

2015-07-11

MyListView

listview的BaseAdapter用法的android源代码,还用了convert与viewholder的回收机制

2015-07-10

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

TA关注的人

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