Linux Epoll 与 Java NIO的底层实现
Epoll在Linux系统中,实现IO多路复用的机制有select、poll、epoll,其中epoll性能表现最为优秀。这里的复用指的是对进程的复用。 使用示例和epoll核心API详解我们先从一个使用示例出发,接着探究epoll如何在底层做了支持。epoll使用示例: #define MAX_EVENTS 10 struct epoll_event ev, events[MAX_EVENTS]; int listen_sock, ...
Netty Channel
Channel简介Netty中的Channel,是对网络通信信道的抽象。官方解释如下: A nexus to a network socket or a component which is capable of I/O operations such as read, write, connect, and bind. 大致含义是:能够执行read、write、connect和bind操作网络套接字或组件的链接。也就是说,Channel的两头都是网络套接字。 ...
Netty项目结构
#maven模块关系oss-parent[pom] netty-parent[pom] netty-netty-all netty-dev-tools netty-common netty-buffer netty-codec netty-codec-dns netty-codec-haproxy netty-codec-http netty-codec-http2 netty-codec-memcache netty-codec-mqtt netty-codec-redi ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new " ...
Spring Framework Overview
一些翻译不好的段落就贴上原文了,英文好的朋友有兴趣可以帮忙翻译一下。 Spring使创建Java企业级应用变得简单。它提供了你在企业环境下拥抱Java语言所需要的一切,包括支持Groovy和Kotlin作为JVM上的替代语言,根据应用的需求创建多种架构的灵活性。As of Spring Framework 5.0, Spring requires JDK 8+ (Java SE 8+) and provides out-of-the-box support for JDK 9 ...
JVM-Threads and Locks
记得初学Java,对于Java中的线程和锁的相关内容理解的不够透彻,对涉及到并发的相关代码缺乏判断力,并不真切的知道代码背后的含义。市面上的一些书籍(各大技术网站推荐的某并发编程的艺术)并不是说不正确,但总感觉介绍的很晦涩。后来看到Java语言规范的原版,才发现很多书籍和网上文章就是在翻译规范,而且是选择性翻译,造成初学者对此一知半解,似懂非懂。一知半解的知识,还不如不懂!这里贴一下规范原版,并写一些自己的注解,欢迎交流。 Chapter 17. Threads and Lo ...
InnoDB架构
InnoDB内存结构 Buffer Pool(缓冲池) Change Buffer Adaptive Hash Index(一致性哈希索引) Log Buffer(日志缓冲) InnoDB磁盘结构 表 索引 表空间 系统表空间 InnoDB数据字典 双写缓冲 “撤销”日志(Undo Logs) ChangeBuffer “一表一文件”表空间 通用表空间 “撤销”表空间(Undo Tablespaces) 临时表空间 “重做”日志(Redo Log) ...
InnoDB内存结构
Buffer Pool(缓冲池) Change Buffer Adaptive Hash Index(一致性哈希索引) Log Buffer(日志缓冲) Buffer PoolBuffer Pool是InnoDB用来缓存数据表和索引的一块内存区域。Buffer Pool允许经常使用的数据可以从内存中被处理,从而加速数据的处理。在一些专用的服务器上,高达80%的物理内存被分配给buffer pool。 为了提升大容量数据读操作的效率,buffer pool被分成了多个数 ...
深入探讨Java类加载器[转]
类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java Applet 需要从远程下载 Java 类文件到浏览器中并执行。现在类加载器在 Web 容器和 OSGi 中得到了广泛的使用。一般来说,Java 应用的开发人员不需要直接同类加载器进行交互。Java 虚拟机默认的行为就已经足够满足 ...
一次设置HTTP隧道代理的问题排查
问题通过用户名和密码使用VIP代理时,指定了代理域名,代理端口,用户名,密码,但是代理仍然返回“HTTP/1.1 407 Proxy Authentication Required”。代码如下: 认证器 package zone.guo.ipcheck; import lombok.Setter; import java.net.Authenticator; import java.net.PasswordAuthentication; @Setter publi ...
递归过滤数组元素
相信面试过程中各位都会遇到对递归思想的考察。这里记录一道小面试题,可以作为面试的前菜。 问题给定一个整型数组origin,要求使用递归的方式过滤掉其中不满足指定条件(如大于3)的元素。 分析对于递归类的问题,有两个点需要重点考虑: 问题分解 递归终止条件 具体到这个问题,首先我们引入两个变量方便说明问题。start,对origin进行过滤的起始元素的索引;length:origin数组的长度。 首先将原数组分割为两个数组,分别为origin[start] 和 origin ...
HashMap源码解析
在本篇文章中,我们会从平时经常使用的HashMap方法入手,通过流程图的方式,剖析HashMap的源码。看似平平无奇,但是还是有暗藏玄机的地方。而正是这些地方的考量,体现了作者的编程功底。 put()方法 resize()方法 ...
Happens-before Order
一直对happens-before的理解有些模糊,看了网上的一些解读也是似懂非懂。怎么办?直接看看The Java® Language Specification中是如何解释的,准确、权威。 17.4.5. Happens-before OrderTwo actions can be ordered by a happens-before relationship. If one action happens-before another, then the first is ...
字体溢出测试博文
原文:https://www.ibm.com/developerworks/cn/java/j-lo-classloader/index.html ...
这是水
译/btr [btr注] 《This is water》是已故美国作家David Foster Wallace于2005年5月21日在Kenyon College毕业典礼上的演讲,后以书籍形式出版。 欢迎并祝贺凯尼恩大学2005年毕业班的同学们。有两条幼小的鱼游来游去,它们碰巧遇见一条年长的鱼从另一边游过来,它向它们点头示意并说道“孩子们,早上好。水怎么样?”而这两条幼鱼继续游了一会儿,随后其中一条终于看着另一条说“究竟什么是水啊?” 这是美国毕业典礼演讲的标准要 ...