草庐IT

抓到 Netty 一个 Bug,顺带来透彻地聊一下 Netty 是如何高效接收网络连接的

本系列Netty源码解析文章基于4.1.56.Final版本,大家如果看到图片显示不了的话,可以查看公众号原文对于一个高性能网络通讯框架来说,最最重要也是最核心的工作就是如何高效的接收客户端连接,这就好比我们开了一个饭店,那么迎接客人就是饭店最重要的工作,我们要先把客人迎接进来,不能让客人一看人多就走掉,只要客人进来了,哪怕菜做的慢一点也没关系。本文笔者就来为大家介绍下netty这块最核心的内容,看看netty是如何高效的接收客户端连接的。下图为笔者在一个月黑风高天空显得那么深邃遥远的夜晚,闲来无事,于是捧起Netty关于如何接收连接这部分源码细细品读的时候,意外的发现了一个影响Netty接收

聊一聊js中元素定位的方法

在做seleniumweb自动化的时候,有时通过selenium定位不到,或无法操作元素,这个时候就需要通过js来定位/操作元素,然后通过selenium自带的execute_script()方法去执行js语句。下面介绍几种js的定位方法。一.IDid的值都是唯一的,所以当存在id字段时可优先使用DOCTYPEhtml>htmllang="en">head>metacharset="UTF-8">title>Titletitle>head>script>functiona(){alert(document.getElementById("button_id").style.display='b

聊一聊js中元素定位的方法

在做seleniumweb自动化的时候,有时通过selenium定位不到,或无法操作元素,这个时候就需要通过js来定位/操作元素,然后通过selenium自带的execute_script()方法去执行js语句。下面介绍几种js的定位方法。一.IDid的值都是唯一的,所以当存在id字段时可优先使用DOCTYPEhtml>htmllang="en">head>metacharset="UTF-8">title>Titletitle>head>script>functiona(){alert(document.getElementById("button_id").style.display='b

HTTP:聊一聊HTTP中的协商缓存

一、什么是协商缓存协商缓存是服务器端的一种缓存策略,服务端提供一种记号,用来判断客户端资源和服务端是否一样。一致返回304,否则返回200和新资源。 二、如何实现主要是通过在responseheader中携带相关标识一种通过last-modified资源的最后修改时间第一次请求时,服务器端会在responseheader插入last-modified最后修改时间,下一次客户端请求时在request header携带if-modified-since,对比最后修改时间是否一致,来判定需要返回新数据。 一种通过Etag资源的唯一标识符(一种字符串)第一次请求时,服务器端会在responsehead

HTTP:聊一聊HTTP中的强制缓存

http响应responseheaders中会有一个cache-control,这个参数就是用来做强制缓存的一、什么是强制缓存强制缓存就是服务端告诉客户端某些资源(JSCSSIMG)需要按照某种方法存在客户端本地,下次请求时直接从本地缓存中获取资源,不用再通过服务器,提高了网页加载速度。 例如上面的图片资源就被缓存在本地中,时间有效期长达1年二、cache-control有哪些参数max-age:最大有效期no-cache:不用本地缓存,交给服务端处理no-store:不用本地缓存以及服务端的缓存措施注:expire也是控制缓存有效期的,只不过被cache-control替代了

HTTP:聊一聊HTTP中的协商缓存

一、什么是协商缓存协商缓存是服务器端的一种缓存策略,服务端提供一种记号,用来判断客户端资源和服务端是否一样。一致返回304,否则返回200和新资源。 二、如何实现主要是通过在responseheader中携带相关标识一种通过last-modified资源的最后修改时间第一次请求时,服务器端会在responseheader插入last-modified最后修改时间,下一次客户端请求时在request header携带if-modified-since,对比最后修改时间是否一致,来判定需要返回新数据。 一种通过Etag资源的唯一标识符(一种字符串)第一次请求时,服务器端会在responsehead

HTTP:聊一聊HTTP中的强制缓存

http响应responseheaders中会有一个cache-control,这个参数就是用来做强制缓存的一、什么是强制缓存强制缓存就是服务端告诉客户端某些资源(JSCSSIMG)需要按照某种方法存在客户端本地,下次请求时直接从本地缓存中获取资源,不用再通过服务器,提高了网页加载速度。 例如上面的图片资源就被缓存在本地中,时间有效期长达1年二、cache-control有哪些参数max-age:最大有效期no-cache:不用本地缓存,交给服务端处理no-store:不用本地缓存以及服务端的缓存措施注:expire也是控制缓存有效期的,只不过被cache-control替代了

聊一聊分布式锁的设计模型

  一、什么是分布式锁?什么是分布式锁?对于这个问题,相信很多同学是既熟悉又陌生。随着分布式系统的快速发展与广泛应用,针对共享资源的互斥访问也成为了很多业务必须要面对的需求,这个场景下人们通常会引入分布式锁来解决问题。我们通常会使用怎么样的分布锁服务呢?有开源的MySQL,Redis,ZooKeeper,Etcd等三方组件可供选择,当然也有集团内自研的Tair,Nuwa等分布式锁服务提供方。总的来看,我们对分布式锁的需求可以大体划分为以下两类应用场景:实现操作原子性:在单机环境中,为了实现多进程或多线程对共享资源操作过程的原子性,我们可以借助内核提供的SpinLock或Mutex机制,保证只有

聊一聊分布式锁的设计模型

  一、什么是分布式锁?什么是分布式锁?对于这个问题,相信很多同学是既熟悉又陌生。随着分布式系统的快速发展与广泛应用,针对共享资源的互斥访问也成为了很多业务必须要面对的需求,这个场景下人们通常会引入分布式锁来解决问题。我们通常会使用怎么样的分布锁服务呢?有开源的MySQL,Redis,ZooKeeper,Etcd等三方组件可供选择,当然也有集团内自研的Tair,Nuwa等分布式锁服务提供方。总的来看,我们对分布式锁的需求可以大体划分为以下两类应用场景:实现操作原子性:在单机环境中,为了实现多进程或多线程对共享资源操作过程的原子性,我们可以借助内核提供的SpinLock或Mutex机制,保证只有

聊一聊 HBase 是如何写入数据的?

hi,大家好,我是大D。今天继续了解下HBase是如何写入数据的,然后再讲解一下一个比较经典的面试题。RegionServer寻址HBaseClient访问ZooKeeper;获取写入Region所在的位置,即获取hbase:meta表位于哪个RegionServer;访问对应的RegionServer;获取hbase:meta表,并查询出目标数据位于哪个RegionServer中的哪个Region中。并将该table的Region信息以及meta表的位置信息缓存在客户端的metacache,方便下次访问;写HlogHBaseClient向RegionServer发送写Hlog请求;Regio