- 博客(21)
- 资源 (1)
- 收藏
- 关注
原创 Mac升级MacOs Mojave 后,IDEA xcrun: error: invalid active developer path
Mac升级MacOs Mojave 后,IDEA xcrun: error: invalid active developer path后,使用git总是报错。xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Devel...
2018-12-01 01:49:02
360
转载 【缓存】缓存架构分析
一、缓存穿透预防及优化 缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,但是出于容错的考虑,如果从存储层查不到数据则不写入缓存层,如图 11-3 所示整个过程分为如下 3 步:缓存层不命中 存储层不命中,所以不将空结果写回缓存 返回空结果 缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义。 图-1...
2018-10-09 22:04:33
601
翻译 【JVM原理与优化】Java堆空间VS栈空间 - Java中的内存分配
近期在学习JVM,看到JVM堆内存和栈内存,但是对于堆内存和栈内存的解释不是很足,现在翻译一篇博客,加以理解。Java堆空间Java堆空间由Java运行时用于为Objects和JRE类分配内存。每当我们创建任何对象时,它总是在堆空间中创建。垃圾收集在堆内存上运行,以释放没有任何引用的对象使用的内存。在堆空间中创建的任何对象都具有全局访问权限,可以从应用程序的任何位置引用。Java堆...
2018-08-28 22:45:28
5635
转载 【JVM原理与优化】JVM内存设置多大合适?Xmx和Xmn如何设置?
原文地址:https://www.dutycode.com/jvm_xmx_xmn_xms_shezhi.html问题:新上线一个java服务,或者是RPC或者是WEB站点, 内存的设置该怎么设置呢?设置成多大比较合适,既不浪费内存,又不影响性能呢?分析:依据的原则是根据Java Performance里面的推荐公式来进行设置。 具体来讲:Java整个堆大小设...
2018-08-27 23:52:24
4650
转载 【通信网络】TCP 三次握手四次挥手详解
原文:http://blog.youkuaiyun.com/imilli/article/details/50620104TCP头部: 其中 ACK SYN 序号 这三个部分在以下会用到,它们的介绍也在下面。 暂时需要的信息有:ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1SYN(SYNchronization) : 在连接建立...
2018-08-24 23:15:07
200
转载 【Java并发】ThreadLocal原理分析及理解
本文转发自技术世界,原文链接 http://www.jasongj.com/java/threadlocal/ThreadLocal解决什么问题由于 ThreadLocal 支持范型,如 ThreadLocal< StringBuilder >,为表述方便,后文用 变量 代表 ThreadLocal 本身,而用 实例 代表具体类型(如 StringBuidler )的实例。...
2018-08-23 01:16:11
270
原创 【Java锁】AQS原理解析
(一)AQS简介AQS(AbstractQueuedSynchronizer),AQS是JDK下提供的一套用于实现基于FIFO等待队列的阻塞锁和相关的同步器的一个同步框架。这个抽象类被设计为作为一些可用原子int值来表示状态的同步器的基类。如果你有看过类似 CountDownLatch 类的源码实现,会发现其内部有一个继承了 AbstractQueuedSynchronizer 的内部类 Sy...
2018-08-18 01:16:47
1526
原创 【Java并发】Semaphore原理解析
今天主要是写关于Semaphore的原理及解析(一)Semaphore的介绍信号量为多线程协作提供更强大的控制。从广义上来讲,是锁的增强,synchronized、ReentrantLock只能对一个线程加锁,而信号量可以对多个线程进行控制。(二)Semaphore的使用Semaphore 主要是acquire 申请信号量的许可,release释放许可供其他线程申请。如果acq...
2018-08-17 00:02:18
2624
原创 【Java锁】synchronized锁原理
最近在看《实战Java高并发程序设计》,看到synchronized锁,故整理下synchronized锁的锁原理及源码分析,若有错及建议,请指正。一、synchronized 的用法(1)修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁(2)修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁(3)修饰代码块,指定加锁对象,对给定对象加锁,进入同...
2018-08-08 23:52:27
626
原创 关于并发的基础概念
最近在阅读《实战Java高并发程序设计》,写一写关于并发的一些理解。(一)异步和同步 同步和异步通常用来形容一次方法的调用。 同步意味着方法一旦调用开始,调用者必须等到方法返回才能进行后续的行为。 异步调用意味的方法一旦调用就会立即返回,调用者可以立即进行后续的行为,异步调用表现的更像是一个消息传递。但是异步调用会在另一个线程中“真实”执行。如果异步...
2018-08-04 15:15:49
272
转载 【Http协议】Https简介
HTTP 的缺点到现在为止,我们已了解到 HTTP 具有相当优秀和方便的一面,然而 HTTP 并非只有好的一面,事物皆具两面性,它也是有不足之处的。HTTP 主要有这些不足,例举如下。1、通信使用明文( 不加密) , 内容可能会被窃听2、不验证通信方的身份, 因此有可能遭遇伪装2、不验证通信方的身份, 因此有可能遭遇伪装3、无法证明报文的完整性, 所以有可能已遭篡改这些问题不仅在...
2018-07-19 00:11:45
871
转载 【Http协议】Http协议简介
HTTP简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系...
2018-07-18 00:26:59
1027
转载 【数据库】分布式事务
原文:http://www.infoq.com/cn/articles/solution-of-distributed-system-transaction-consistency讲到分布式事务,我们就想到ACID、CAP定律、BASE理论。一、ACID关系型数据库通常具有ACID特性,原子性(Atomicity)、一致性(Consistency)、隔离型(Isolation)、持久性(Durab...
2018-07-10 23:34:52
1818
转载 【数据库】水平分库分表的关键步骤以及可能遇到的问题
原址:作者:丁浪;http://www.infoq.com/cn/articles/key-steps-and-likely-problems-of-horizontal-split-table?utm_source=infoq&utm_campaign=user_page&utm_medium=link经常在面试的时候碰到一个问题,分库分表的时候如何保证全局分布式ID唯一性。在聊...
2018-07-10 00:16:39
1239
转载 【数据库】分库分表的难点
垂直分库分表能分担单库的承担能力,提高整个系统的承载处理能力、IO能力,有效缓解系统的性能瓶颈和压力,突破IO、连接数、硬件资源的瓶颈。但是,与此同时,分库分表也为分库查询等带来了相应的痛点。垂直分库带来的问题和解决思路:跨库join的问题在拆分之前,系统中很多列表和详情页所需的数据是可以通过sql join来完成的。而拆分后,数据库可能是分布式在不同实例和不同的主机上,join将变得非常麻烦。而...
2018-07-09 00:17:12
729
转载 【数据库】分库分表的几种方式及总结
分库分表的几种常见形式公司业务的发展过程中,提高系统的处理承载能力,在数据库端通常都会选择分库分表。今天对数据库的分库分表进行了一次学习与总结。1、垂直分表垂直分表在日常开发和设计中比较常见,通俗的说法叫做“大表拆小表”,拆分是基于关系型数据库中的“列”(字段)进行的。通常情况,某个表中的字段比较多,可以新建立一张“扩展表”,将不经常使用或者长度较大的字段拆分出去放到“扩展表”中,如下图所示:在字...
2018-07-08 23:41:36
13298
原创 【生产问题】线上CPU使用率过高问题排查
1、问题描述 最近在生产上遇到一个HashMap问题,高并发下HashMap扩容导致链表成环,导致CPU使用率过高。2、问题排查 CPU利用率过高一般是因为出现了出现了死循环,导致部分线程一直运行。占用cpu时间。使用jstack工具dump出问题的那台服务器的栈信息。死循环的话,首先查找RUNNABLE的线程,找到问题代码如下:HashMap在高并发的环境下会出现死循环,主要是...
2018-07-04 00:54:00
1337
转载 Synchronized源码分析
java内部锁synchronized的出现,为多线程的并发执行提供了一个稳定的环境,有效的防止多个线程同时执行同一个逻辑,其实这篇文章应该写在深入分析Object.wait/notify实现机制之前,本文不会讲如何使用synchronized,以HotSpot1.7的虚拟机为例,对synchronized的实现进行深入分析。synchronized的HotSpot实现依赖于对象头的Mark Wo...
2018-07-02 19:54:47
661
转载 【缓存】缓存中常见的4种问题分析以及解决方案
原文: https://blog.youkuaiyun.com/zzh920625/article/details/78173099
2018-06-30 10:15:44
966
1
转载 memcached redis 对比分析
作者:安静1337链接:https://www.jianshu.com/p/e94fa7340923來源:简书简介memcached和redis都属于内存(memory)键-值(key-value)数据库,在设计和思想上有许多相同之处,功能和应用在很多场合(如分布式缓存服务)也相似。它们都从属于数据库解决方案中的nosql家族,由于两者都将数据存储在内存中,自然而然,它们都是非常理想的缓存实现方案...
2018-06-14 00:39:44
199
转载 缓存更新的套路
原文地址:https://coolshell.cn/articles/17416.html 看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还是老的...
2018-06-13 20:55:49
139
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人