Nginx配置详细解读 #运行用户user nobody;#启动进程,通常设置成和cpu的数量相等worker_processes 1;#全局错误日志及PID文件#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;#工作模式及连接数上限events { #epoll是多路复用IO(I/O Multiple.
Java诊断工具 Arthas 是什么Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。可以解决如下常见问题: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!...
排序算法动图演示 0.1 算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。0.2 算法复杂度0.3 相关概念稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。 不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。 .
分布式ID 生成方案 ID是数据的唯一标识,传统的做法是利用UUID和数据库的自增ID,在互联网企业中,大部分公司使用的都是Mysql,并且因为需要事务支持,所以通常会使用Innodb存储引擎,UUID太长以及无序,所以并不适合在Innodb中来作为主键,自增ID比较合适,但是随着公司的业务发展,数据量将越来越大,需要对数据进行分表,而分表后,每个表中的数据都会按自己的节奏进行自增,很有可能出现ID冲突。这时就需要一个单独的机制来负责生成唯一ID,生成出来的ID也可以叫做分布式ID,或全局ID。下面来分析各个生成分布式ID的机制
分布式锁-超卖问题案例分析 我们先来看一个业务场景:系统A是一个电商系统,目前是一台机器部署,系统中有一个用户下订单的接口,但是用户下订单之前一定要去检查一下库存,确保库存足够了才会给用户下单。由于系统有一定的并发,所以会预先将商品的库存保存在redis中,用户下单的时候会更新redis的库存。假如某个时刻,redis里面的某个商品库存为1,此时两个请求同时到来,其中一个请求执行到上图的第3步,更新数据库的库存为0,但是第4步还没有执行。而另外一个请求执行到了第2步,发现库存还是1,就继续执行第3步。这样的结果.
LSM树 Log-Structured Merge Tree 代表数据库:nessDB、leveldb、hbase、InfluxDB等核心思想的核心就是放弃部分读能力,换取写入的最大化能力。LSM Tree ,这个概念就是结构化合并树的意思,它的核心思路其实非常简单,就是假定内存足够大,因此不需要每次有数据更新就必须将数据写入到磁盘中,而可以先将最新的数据驻留在内存中,等到积累到最后多之后,再使用归并排序的方式将内存内的数据合并追加到磁盘队尾(因为所有待排序的树都是有序的,可以通过合并排序的方式快速合并到一起)。日志结构的合并树(LSM-tree)是一种基于硬
并发中的三大特性详解 前言:Java并发编程的三大特性:原子性、可见性、有序性。要保证并发代码的安全性则必须满足这三大特性原子性:一个或者多个操作,要么全部执行(执行的过程是不会被打断的)、要么全部不执行。案例分析:http://www.51testing.com/html/87/300987-814461.html...
GC 时间过长的优化一般思路 JVM 的调优首要任务就是缩短GC 时stop working 的时间。下面是GC分析、调优的一般思路。发现分析的过程:用户、运维反映、XX页面卡顿->前端人员分析页面代码没问题。->继续分析XX数据接口相应的时间太长->反映给后台开发->后台开发本地测试-> 相应时间正常-> 测试线上的接口-> 相应时间过长-> 分析一般系统日志->发现SQL查询时间正常、但是相关的业务代码执行时间过长。此时怀疑GC时间过长导致程序停顿->通过在
常见OutOfMemoryError 分析与解决 java.lang.OutOfMemoryError:Javaheap space当堆内存(Heap Space)没有足够空间存放新创建的对象时,就会抛出 java.lang.OutOfMemoryError:Javaheap space 错误(根据实际生产经验,可以对程序日志中的 OutOfMemoryError 配置关键字告警,一经发现,立即处理)原因分析:Javaheap space 错误产生的常见原因可以分为以下几类:1、请求创建一个超大对象,通常是一个大数组。2、超出预期的访.
Springboot 自动装配源码分析 点击去之后可以看到 核心注解springbootApplication 包含了三个注解@SpringBootConfiguration :实现配置功能@EnableAutoConfiguration :实现自动配置功能@ComponentScan:spring组件扫描再看一下最最主要的注解@EnableAutoConfiguration,点进去分析一下AutoConfigurationImportSelector内部实现 @Overridepublic String[] sel...
Spring中的设计模式 第一种:简单工厂又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。 spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。 如下配...
redis pipeline的使用 背景:在某些业务场景中 会对redis 产生频繁的读写操作。这样会导致系统延时过高,吞吐量低下,无法满足目标;其中,redis pipeline(管道机制)的应用是一个解决手段。Redis普通请求-处理模型:Redis pipeline请求-处理模型:从两个图的对比中可看出,普通的请求模型是同步的,每次请求对应一次IO操作等待;而Pipeline 化之后所有的请求合并...
Redis 常见的错误(坑) 从redis 的设计规范、命令的使用、分布式场景的使用、集群 等角度来说说常见的坑。目录Bigkey问题:bigkey是指某个key所对应的值过大,如string 应该控制在10kb,hash、list、set、zset元素不要超过2000个防止在高并发场景下查询流量过大导致慢查询、占用网卡流量、导致redis 阻塞。若确实存在bigkey要注意:不要使用del删除,使用hsc...
zookeeper基概 zookeeper 中节点叫znode存储结构上跟文件系统类似,以树级结构进行存储。不同之外在于znode没有目录的概念,不能执行类似cd之类的命令。znode结构包含如下:path:唯一路径childNode:子节点stat:状态属性type:节点类型节点类型 类型 描述 PERSISTENT 持久节点 ...