Nginx离线安装
一、概览
服务器无法访问外网的情况下,Nginx只能离线安装,安装主要步骤如下:
安装gcc、g++
安装pcre、zlib
安装nginx
二、安装gcc、g++gcc --version
g++ --version
使用gcc --version g++ --version查看服务器是否已经安装过gcc、**g++**。
2.1 下载如果未安装,请下载gcc、**g++**及其依赖包进行安装,下面为Centos7 x86_64下 gcc 与 **g++ ** 4.8.5的依赖包:
gcc依赖包详见:gcc-4.8.5-39.el7.x86_64.rpm
g++依赖包详见:gcc-c++-4.8.5-39.el7.x86_64.rpm
根据上述依赖包列表下载安装包,下载地址:Centos Mirrors 、 阿里云 、网易,下载后的依赖包如下图所示:
上述安装包已分享至天翼云盘gcc g++ rpm安装包
注意
上图下载的依赖包有一些是gcc g++依赖包列表中不存在的,是因为那部分安装包是gcc g++ 依赖包的依赖包,这里参考网上下载了缺少的一些包
2 ...
Apache SkyWalking简介及使用
一、什么是SkyWalking分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。SkyWalking 是观察性分析平台和应用性能管理系统。
提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案.支持Java, .Net Core, PHP, NodeJS, Golang, LUA语言探针支持Envoy + Istio构建的Service Mesh更多内容参考SkyWalking官网
MySQL调优案例分享
MySQL调优案例分享——技术分享
JPA在不同数据库类下ID生成策略适配方案
JPA在不同数据库类下ID生成策略适配方案——技术解决方案
一致性哈希算法
一致性哈希算法一致性哈希算法是为了解决分布式缓存中的热点问题而提出的。一致性哈希将每个对象映射到圆环边上的一个点,系统再将可用的节点机器映射到圆环不同位置。查找某个对象对应的机器时,需要用一致性哈希算法计算得到对象在圆环上的位置,沿着圆环边顺序查找,直到遇到默认机器节点,这台机器即为该对象的存储位置。当删除一台节点机器时,这台机器上的所有对象都要移动到下一台机器上。当添加一台机器到圆环边上的一个点,这个点下一台机器需要将这个点之前的对象移动到新机器上。
ConcurrentHashMap源码解析
面试常见问题
ConcurrentHashMap实现原理
ConcurrentHashMap如何保证线程安全
本文基于JDK1.8
一、构造方法和基本属性JDK8中ConcurrentHashMap参考了JDK8 HashMap的实现,构造方法和基本属性与HashMap大致相同,可参考HashMap源码解,以下主要列举不同的地方。
/**
* Encodings for Node hash fields. See above for explanation.
*/
static final int MOVED = -1; // hash for forwarding nodes
static final int TREEBIN = -2; // hash for roots of trees
static final int RESERVED = -3; // hash for transient reservations
// Hash节点正常可用位
static final int HASH_BITS = 0x7fffffff; // usable bit ...
HashMap源码解析
面试常见问题
1、你看过那些源码吗?2、那你能讲讲HashMap的实现原理吗?3、HashMap什么时候会进行rehash?4、HashMap什么时候会进行扩容?5、那HashMap的初始容量设置成多少比较合适呢?6、结合源码说说HashMap在高并发场景中为什么会出现死循环?7、JDK1.8中对HashMap做了哪些性能优化?8、HashMap和HashTable有何不同?9、HashMap 和 ConcurrentHashMap 的区别?10、ConcurrentHashMap和LinkedHashMap有什么区别?11、为什么ConcurrentHashMap中的链表转红黑树的阀值是8?12、什么是ConcurrentSkipListMap?他和ConcurrentHashMap有什么区别?13、还看过其他的源码吗?Spring的源码有了解吗?14、SpringBoot的源码呢?知道starter是怎么实现的吗?
一、构造方法1.1无参构造方法
默认初始化容量16,加载因子0.75
/**
* Constructs an empty <tt>HashMap</ ...
MySQL插入速度测试
一、测试环境1.1 硬件环境
名称
配置
操作系统
win7 64位
CPU
4核4线程 i5-4590
内存
16G
硬盘
128G SSD
MySQL
Version 5.6
1.2 数据库表结构CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
`sex` int(11) DEFAULT NULL,
`phone` varchar(20) DEFAULT NULL,
`email` varchar(50) DEFAULT NULL,
`remark` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
二、插入实验2.1 普通插入
线程数
插入量(万)
...
深入理解Java线程池:ThreadPoolExecutor
看完ThreadPoolExecutor线程池源码准备写博客记录一下,但是发现一篇博客对ThreadPoolExecutor源码分析很详细,这里不再重复造轮子,所以直接转载了这篇文章。
原文地址:深入理解Java线程池:ThreadPoolExecutor
线程池介绍在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理。如果每次请求都新创建一个线程的话实现起来非常简便,但是存在一个问题:
如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,如此一来会大大降低系统的效率。可能出现服务器在为每个请求创建新线程和销毁线程上花费的时间和消耗的系统资源要比处理实际的用户请求的时间和资源更多。
那么有没有一种办法使执行完一个任务,并不被销毁,而是可以继续执行其他的任务呢?
这就是线程池的目的了。线程池为线程生命周期的开销和资源不足问题提供了解决方案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。
什么时候使用线程池?
单个任务处理时间比较短
需要处理的任务数量很大
使用线程池的好处
引用自 http://ifeve. ...
MySQL中MVCC是否真的能够解决幻读问题?
偶然间看到同事在看MySQL的MVCC问题,就随口插了一句,“MVCC模式解决了MySQL中的幻读问题”,但是
同事告诉我并没有,我说不可能,我清楚的记得在看《高性能MySQL 第3版》一书的事务隔离级别中的,在介绍**REPEATABLE READ **隔离级别时候提过,MVCC解决了幻读的问题。说完我还找到了书中内容给他看,内容如下:
英文原版:
REPEATABLE READ
REPEATABLE READ solves the problems that READ UNCOMMITTED allows. It guarantees that any rows a transaction reads will “look the same” in subsequent reads within the same transaction, but in theory it still allows another tricky problem: phantom reads. Simply put, a phantom read can happen ...