深入理解Java虚拟机笔记1: OOM实战
通过代码模拟Java虚拟机规范中描述的各个运行时区域内存溢出的场景。1. Java堆溢出2. 虚拟机栈和本地方法栈溢出2.1 StackOverflowError2.2 栈OutOfMemoryError3. 方法区和运行时常量池溢出3.1 运行时常量池溢出3.2 方法区溢出4. 本机直接内存溢出
Java编程思想学习笔记4 - 序列化技术
今天来学习下Java序列化和反序列化技术,笔者对《Java编程思想》中的内容,结合网上各位前辈的帖子进行了整理和补充,包括:序列化概述Java原生序列化技术Hessian序列化技术JSON序列化技术Java XML序列化技术
Java编程思想学习笔记3 - NIO
本章内容承接“Java编程思想 - 18.1 - 字节流和字符流”。JDK 1.4引入了新的Java IO类库java.nio.*旨在提高IO速度。笔者愚钝,认为NIO是Java编程思想第18章中最难理解的部分,Eckel在这部分内容的安排上也让人难以抓到重点,笔者总结主要有以下内容:Java NIO概述:NIO与IO的区别缓冲器Buffer通道Channel选择器Selector
Java编程思想学习笔记2 - 字节流和字符流
《Thinking in Java》第18章的内容是相当丰富精彩的,也在网络学习参考了很多前辈们的笔记,个人由于能力有限(毕竟和大神Bruce Eckel的能力相差甚远),将这一章的内容分三个部分来写,希望能够慢慢品味和领悟Java IO的精粹: 第一部分、字节流和字符流,可以认为是传统的Java IO; 第二部分、新IO,指JDK 1.4引入的java.nio.*类库; 第三部分、Java序列化和反序列化技术,包括了对象序列化、XML等内容。 当然,笔者的能力相当有限,纯属一个菜鸟做得笔记,希望各位前辈不吝赐教!言归正传,本篇主要讲Java IO的字节流和字符流,章节安排如下:起步:File类字节流和字符流概述装饰者模式(Decorator)和适配者模式(Adapter)基于字节流的IO操作基于字符流的IO操作
译文——OkHttp, 安卓和Java应用的HTTP&HTTP2.0客户端
HTTP是现代应用网络交互数据信息和媒介影像的主要传输方式。更有效率的HTTP传输会使你的互联网应用加载更快,同时节省带宽。
Java编程思想学习笔记1 - 内部类
内部类简单来说就是定义在一个类内部的类。一直很难理解为什么要使用内部类,对内部类的理解始终停留在表明。今天详细学习了Java内部类的机制,总结下内部类的使用。归纳大纲如下: 1. 内部类的基础结构 2. 内部类的优点和使用场景 3. 内部类的分类 4. 内部类的继承
Redis(2)- 基本数据结构和操作
Redis的一个特点就是处理基本字符串,还支持多种数据结构,包括Hash,List,Set,SortedSet。本章主要介绍Redis的数据结构和基本操作,并给出一些典型的使用场景。
Redis(1)- Redis概述和安装
Redis(Remote Dictionary Server)是目前电商行业比较通用的主要数据缓存手段。各家基本上是在其基础上做了优化和扩展,增加了一些新的特性,生成满足自身业务需求数据缓存组件。追根溯源,Redis自身有哪些特性呢?基本操作和高级特性又有哪些?在什么场景下我们该考虑使用Redis呢?带着这些问题,今天笔者认真学习了一遍Redis组件,并梳理成Redis学习笔记系列。
Nginx实现HTTP/2——原理、实践与数据分析
HTTP/2(Hypertext Transfer Protocol Version 2)无疑是下一代互联网加速技术的基石与方向,自诞生以来经历了00~17 共 18 版草案,目前,已经拥有了明确的RFC标准:RFC 7540和RFC 7541。 目前支持 HTTP/2 的浏览器有 Chrome 41+、Firefox 36+、Safari 9+、Windows 10 上的 IE 11 和 Edge。服务器方面则有 F5、H2O、nghttp2 等数十种选择,各种语言实现的都有。Nginx自1.9.5版本开始支持HTTP/2的http_v2_module模块,在这个过程中修复了一些bug,目前稳定的版本是nginx-1.10.1。另外,移动端开发可以使用OkHttp来实现HTTP/2。
Nginx开启Gzip详解
最近生产上发生了一些问题,原先所有的静态资源文件都是经过gzip压缩的,然而这几天突然都没有压缩了,经过一顿排查,发现是Nginx的配置有问题,借此机会详细了解了Nginx的Gzip配置。
解决Nginx 400 Bad Request问题的一些思路
400 Bad Request是一种HTTP错误状态码。HTTP/1.1对400 Bad Request的定义主要是:1、语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。2、请求参数有误。 在这段时间笔者遇到了好几次生产问题Nginx报400异常,且原因细究下来各不相同,有些甚至在网上没有搜到类似案例。遂产生了兴趣,做了本次梳理,希望会对大家有一定帮助!
基于Selenium和ChromeDriver的自动化页面性能测试
Selenium WebDriver(以下简称SW)提供了一套用于Web应用程序的自动化测试工具。SW按其应用场景不同可以分为(1)基于HtmlUnit的无界面实现,并非驱动真实浏览器进行测试;(2)模拟真实输入,对多浏览器的支持和测试,包括FirefoxDriver、InternetExplorerDriver、OperaDriver和ChromeDriver;(3)对移动应用的测试,包括AndroidDriver和iPhoneDriver。 针对SW进行功能性测试的文章和书已经很多了,比如如何操作获取页面元素内容。而本文所要写的是如何基于Selenium和ChromeDriver做页面性能测试,比如获取页面请求的加载时间、获取页面的DOM元素加载完成时间等等。类似于一些成熟的拨测产品的实现原型(这也是笔者正在做的项目)。我想这是非常有意义的一次探索。
CentOS 7.x环境下搭建: Headless chrome + Selenium + ChromeDriver 实现自动化测试
笔者所在公司希望使用Selenium进行高性能的自动化测试。出于稳定性考虑,我们选择linux环境,而不是Windows环境。同时为了追求测试效率,去UI化,所以选择了Chrome的Headless方案。 在环境搭建上,没有成熟的文档和方案支持,遇到了一些问题,花了不少精力,终于完成。因此记录下来希望对大家有所帮助。