`
文章列表
缓存一般作为RDS的前置组件,将常用的资源缓存,用来减少RDS的读取压力,也是诸多系统常用的一种方案,如果允许访问缓存失败直接访问数据库,然后再将数据回写到缓存中,那么就会存在缓存击穿的问题, 缓存击穿:缓存中的数据未被命中,进而请求直接对数据库进行查询,当大量的类似查询瞬间出现,就会出现数据库的压力爆炸甚至引起数据库的雪崩,本质就是一种缓存失效引发的极端问题 如何应对这种情况? 在很多面试过程中碰到这样的问题,给出答案:不给缓存击穿的机会 首先不允许跨过缓存直接访问数据库,在缓存中及认为数据可以被访问,否则则认为访问的数据不存在, 接下来就是RDS和缓存的同步问题,保证数据最终会呈现给用户, ...
接触到一个经典的面试题:类似于背包最优解的问题, 原题如下 import java.util.List; public class SplitOrders { public class Item{ /** * 卖家用户id */ long sellerId; /** * 商品 ...
java condition await() 与object wait()的区别 object wait() * The current thread must own this object's monitor. The thread      * releases ownership of this monitor and waits until another thread      * notifies threads waiting on this object's monitor to wake up      * either through a call to the {@co ...
java中的voliatile变量,在java中右有两个语义 1.可见性,每次voliatile变量修改时,都会直接写到主内存中 2.有序性, 1.可见性,        表现为每次voliatile变量修改时,都会直接写到主内存中,另外每个线程读取voliatile变量时,都 ...

JVM stop the world

JVM 在进行GC的时候,需要做两个事情,一个是GC root 做可达性分析 GC root的对象 可能是常量,类静态变量,以及虚拟栈中的局部变量,这些大概组成了GC root对象,GC root 需要在一个JVM 某个时间点的快照,然后基于这个快照来做可达性的分析,基于这个快照,判断哪些对象是要被回收的,接下来就要真正的GC操作,在新生代,老年代,会做不同的GC操作,标记清理,或者复制整理,或者标记整理, 将新生代的存活的对象,转入到老年代,老年代也会做自己的回收策略 在GC回收是,大多数JVM 会做stop the world 的一个操作,即停止整个JVM,这个操作多少会影响到JVM 对 ...
理解JVM 的内存模型之前,有必要理解一些硬件的内存架构,因为JVM的内存模型也是为了解决系统和硬件间内存交互的问题,才构建的一种虚拟的内存模型,这样就可以通过JVM来屏蔽硬件和系统的差异,达到统一的内存交互方式( ...
之前做了一下ES 的分词搜索,在网上找的资料很少,只能根据API一点点扒拉,总算长得帅还是有好处的,成功的通过分词进行搜索,适用的场景,根据某些字段进行分词匹配,并指定字段不同的优先级,都是通过http请求直接完成,自己实现是通过java封装了一下,java代码就不贴出来了,大家可以根据根据自己需要进行封装 分词查询大概需要两步操作:1.设置ES 某index下的mapping,2,针对字段进行query搜索 前提是先安装ES的分词插件,参考地址:http://ludizhang.iteye.com/blog/2323939 1.设置index mapping 向ES发送http PUT请 ...

mysql 事务级别

mysql 数据四种事务级别:Read Uncommitted,Read Committed,Repeatable Read,Serializable Read Uncommitted,Read Committed 这个两个就不多做介绍了 主要说明一下Repeatable Read 这个是mysql 默认的事务级别 此事务级别的表现为,可重读:此事务内的查询,不受其他事务的影响,会坚持从本事务内查询,因此,这个事务内的同一个查询(查询的数据不经过本事务的修改),会一直是一样的 如事务A,中有一个sql select * from A where id>3,假设表A中只有id 1.2.3. ...
1.下载IK https://github.com/medcl/elasticsearch-analysis-ik/tree/v1.9.2 IK 对应的Elasticsearch版本 详情见github [img] [/img] 2.解压并打包IK 解压到elasticsearch-analysis-ik-1.9.2 目录结构如下 [img] [/img] 3.安装IK   1. mvn clean   2.mvn compile [img] [/img]   3.mvn package   [img] [/img] 4.安装完成后,找到target\release ...
内存泄漏(memory leak):该被回收的对象没有被回收,或者说没有被及时回收,导致了废弃对象依然占用着空间,一方面内存泄漏的问题具有常发性,一旦会发生一次就会发生100次,直接导致程序的运行性能,甚至出现OOM 咱们看例子 public class Stack { private Object[] objects; private int size; private int STACK_LEN = 16; public Stack(){ objects = new Object[STACK_LEN]; } ...
线程安全 1.什么是并发? 2.什么是线程安全 3.如何保证线程安全 参考书籍《java并发编程》 此篇博客是回答我懵懂骚年时代的一下疑问,希望可以帮助大家解惑,共勉!! 1.什么是并发?   我喜欢用并行,串行,并发做比较   并行:完全独立在不同CPU上的程序执行,完全平行,没有任何交叉   串行:在同一个CPU上执行的程序,一个个排队执行   并发:在同一个CPU上“同时”执行的程序,这个同时是感官上,其实可以理解为有交叉的意思,程序之前存在资源抢占的情况, 2.并发不一定指的是线程,但是在java中的并发目前只有线程一种形式,在java并发的情况下,总也逃脱不了线程安全性的问题 , ...
1.UML的重要性,推荐plantUml 2.编码编的其实是思路:先写注释(思路),在写代码 3.设计之初,所有方法都是黑盒 4.设计模式要顺其自然 5.接口的重要性是告诉别人我是干什么的 6.接口设计的伸缩性:考虑中间数据状态,减少对应 ...
这么长的时间,么有好好总结过自己的学习路线,今天和大家一起分享一下java学习路线 图中每一个字都是一管一管撸上去的,请大家轻喷,由于梳理比较粗略,一方面是一个小伙伴嗷嗷待乳,一方面确实比较忙一点,希望大家见谅
2016年7月8日,周五,本来一个欢快的日子,大家准备去吃会火锅唱会歌,下班前DBA同学发现突然有几个更新语句在query中,一直无法执行完,更新的语句基本是针对同一条更新的,语句的大概意思就是在交易完成后更新一条出库 ...
听听就好了 1.“先这样写,反正后面要重构”,作死指数4颗星 2.产品经理:“这个是需求比较小,改应该很快的”,惨死指数3颗星 3."这么简单的需求需要这久?你们是专业的么?",程序员不要上当,否则惨死指数4颗星 4."再坚持这一个迭代,我们就可以步入正规了",离职指数4星 5."来一起开个会,就一会",浪费指数3颗星 6."**开发小组来了一个妹子",失望指数4颗星 7."大家以后有分红",失望指数5颗星 8."我们要用新技术",作死指数4颗星 9."我要开始用设计 ...
Global site tag (gtag.js) - Google Analytics