Redis集群分两种模式,一种是Master-Slave模式,就是主从模式,一个master带多个slave, 另外一种是cluster模式,由多组master-slave组成。
HTML页面性能指标
前端页面的性能一直都是一个热议的话题,从老早雅虎提出的35条”军规”开始我们就一直在关注页面的性能问题。
在前面巨人们的身后每个人也有自己的一些页面性能的经验,本文主要是介绍页面加载事件和性能评价指标。
Python命名规约
应该避免的名称
- 单字符名称, 除了计数器和迭代器.
- 包/模块名中的连字符(-)
- 双下划线开头并结尾的名称(Python保留, 例如init)
JVM性能分析工具jstack介绍
JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外, 还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,每一种工具都有其自身的特点, 用户可以根据你需要检测的应用或者程序片段的状况,适当的选择相应的工具进行检测, 先通过一个表格形式简要介绍下这几个命令的作用和使用方法。本文重点介绍jstack的使用方法。
命令 | 作用 |
---|---|
jps | 基础工具 |
jstack | 查看某个Java进程内的线程堆栈信息 |
jmap | jmap导出堆内存,然后使用jhat来进行分析 |
jhat | jmap导出堆内存,然后使用jhat来进行分析 |
jstat | JVM统计监测工具 |
hprof | hprof能够展现CPU使用率,统计堆内存使用情况 |
IDEA不能下载maven依赖包的源码
有时候在IDEA里面直接点击查看源码,报:cannot download sources
使用Maven命令。经过测试,好用。下载了所有POM里的依赖包的source,这点不是想要的,原来只想下载想看的依赖的source。 参考:IDEA-165800 Can’t download dependency’s source code
JDK的两个版本解释
每次去Oracle官网去下载JDK,就会发现有两个版本,一个基数版本,一个偶数版本。比如最新的jdk-8u191和jdk-8u192。这是咋回事?
这是官方对于奇数版本与偶数版本区别的解释:
从JDK版本7u71以后,JAVA将会在同一时间发布两个版本的JDK,其中:
奇数版本为BUG修正并全部通过检验的版本,官方强烈推荐使用这个版本。
偶数版本包含了奇数版本所有的内容,以及未被验证的BUG修复,Oracle官方表示:除非你深受BUG困扰,否则不推荐您使用这个奇数版本。
NPM版本号规则以及更新策略
初次使用NodeJS的时候,被package.json中的版本规则搞晕,现在记录一下。
聊聊Reactor I/O模型
上一篇介绍了Unix系统支持的I/O模型,以及相应的在Java中的实现方式。本篇重点讲解一下Reactor模型原理和实现机制。
I/O多路复用又被称为”事件驱动”,就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪), 能够通知程序进行相应的读写操作,技术上是通过调用操作系统的select、pselect、poll、epoll来实现。
与多进程和多线程技术相比,I/O多路复用技术的最大优势是系统开销小,系统不必创建进程/线程,也不必维护这些进程/线程,从而大大减小了系统的开销。
Reactor是一种应用在服务器端的开发模式,目的是提高服务端程序的并发能力,其实就是实现了I/O多路复用这种I/O模型。
聊聊Java中的几种I/O模型
同步、异步、阻塞、非阻塞都是和I/O(输入输出)有关的概念,最简单的文件读取就是I/O操作。而在文件读取这件事儿上,可以有多种方式。
本篇会先介绍一下I/O的基本概念,通过一个生活例子来分别解释下这几种I/O模型,以及Java支持的I/O模型。
在解释I/O模型之前,我先说明一下几个操作系统的概念
Nginx重新编译添加模块
编译安装Nginx的时候,有些模块默认并不会安装,比如http_ssl_module,那么为了让Nginx支持HTTPS,必须添加这个模块。
下面讲解如何在已经安装过后再次添加新的模块。
1、找到安装nginx的源码根目录(即安装包存放目录),如果没有的话下载新的源码并解压
1 | cd software |