摘要: 阅读全文
posted @ 2019-10-07 20:18 Jemb 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 小于32G的机器,总结的GC调优参考模版: -Xms4096M -Xmx4096M -Xmn3072M -Xss1M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC - 阅读全文
posted @ 2019-10-07 17:20 Jemb 阅读(409) 评论(0) 推荐(0) 编辑
摘要: GC的收集器种类: 收集器存在连线的说明他们可以配合使用。 新生代垃圾收集器 1.串行GC(serial)垃圾回收器 单线程收集器,必须暂停所有的工作线程直到结束: 最古老,稳定效率高的垃圾回收器 对应的JVM参数是: -XX:+UseSerialGC 开启后会使用:Serial(Young区用) 阅读全文
posted @ 2019-10-06 11:18 Jemb 阅读(432) 评论(0) 推荐(0) 编辑
摘要: 4大垃圾回收思想: 引用计数(可能会死循环持有) , 复制( 新生代 ,因为对象生命周期短) , 标记清除 和 标记整理 (老年代) 什么时候会进行新生代的垃圾回收? 新生代里eden区和survivor1区空间快满了,就会触发MinorGC,把存活的对象移动到survivor2区中。 接着,就使用 阅读全文
posted @ 2019-10-05 22:51 Jemb 阅读(614) 评论(0) 推荐(0) 编辑
摘要: JVM的内存结构: 线程共享:堆(存放创建的各种对象),方法区(存放类信息,静态变量,常量池) 线程私有:栈(每个线程都有自己的栈空间,存放每个方法的局部变量),程序计数器(记录当前字节码指令的位置,执行到拿哪一条字节码指令),本地方法栈(跟栈类似,不同的是执行的native方法) JVM什么时候会 阅读全文
posted @ 2019-10-05 18:38 Jemb 阅读(128) 评论(0) 推荐(0) 编辑
摘要: java内存模型中,每个线程有自己的工作内存,同时还有一个共享的主内存。 为什么要让每个线程都有自己的工作内存呢? 线程运行的代码对应的是一些指令是由CPU执行的!但是CPU每次执行指令运算的时候,要是每次需要一个变量的值,都从主内存加载,性能会比较差! 要是线程的代码在执行过程中,就可以直接从自己 阅读全文
posted @ 2019-10-04 21:23 Jemb 阅读(171) 评论(0) 推荐(0) 编辑
摘要: java集合框架 Map体系 HashMap层次体系: 1.实现了Cloneable,可以被克隆 2.实现了Serializable,可以被序列化 3.继承AbstractMap,实现了Map接口,具有Map的所有功能。 HashMap的底层结构为 数组+链表或红黑树,当链表的数量达到一定数量的时候 阅读全文
posted @ 2019-10-04 20:17 Jemb 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 我们可以利用synchronized关键字来对程序进行加锁。它既可以用来声明一个synchronized代码块,也可以直接标记静态方法或者实例方法。 synchronized怎么实现线程的同步? 早期的synchronized属于重量级锁,依赖于mutex lock实现,线程之间的切换涉及到 用户态 阅读全文
posted @ 2019-10-04 18:03 Jemb 阅读(250) 评论(0) 推荐(0) 编辑
摘要: ElasticSearch设计的理念就是分布式搜索引擎。 ES与Solr对比? Solr在数据量不大的传统搜索应用表现要好于Elasticsearch,这体现在使用简易度上,功能上完整度上,还有少量数据搜索效率上。但Solr毕竟是很久之前的产品,似乎不太适应当前大数据发展的趋势,而Elasticse 阅读全文
posted @ 2019-10-04 12:22 Jemb 阅读(312) 评论(0) 推荐(0) 编辑
摘要: CAS: 如果多个线程想对 count 变量进行自增操作,最先想到的是使用synchronized。 初步方案: 虽然随着Java版本更新,也对synchronized做了很多优化(偏向锁,轻量级锁),但是处理这种简单的累加操作,仍然显得“太重了”。多个线程使用synchronized,不就相当于让 阅读全文
posted @ 2019-10-02 10:28 Jemb 阅读(371) 评论(0) 推荐(0) 编辑
摘要: 包含以下5个部分: 1.Tools 工具:(CountDownLatch,CyclicBarrier,Semaphore,Executors,Exchange) 2.Lock :(ReentrantLock,Condition) 3.Atomic :(AtomicInteger,AtomicBool 阅读全文
posted @ 2019-09-29 23:25 Jemb 阅读(230) 评论(0) 推荐(0) 编辑
摘要: ReentrantLock内部包含了一个AQS对象,也就是AbstractQueuedSynchronizer类型的对象。这个AQS对象就是ReentrantLock可以实现加锁和释放锁的关键性的核心组件。 线程A,B尝试进行加锁的过程: CountDownLatch应用场景:线程协调使用的时减法操 阅读全文
posted @ 2019-09-29 23:04 Jemb 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 事务有四个特性:ACID A:原子性:要么全成功,要么全失败 C:一致性:所有的操作前后,总额不变 I :隔离性:事务之间互不影响 D :持久性:事务一旦完成,无论出现什么错误,他的结果都不受影响 脏读:一个线程读取到另外一个线程未提交的数据 A 的数据未commit B 就不可能读到 不可重复读: 阅读全文
posted @ 2019-09-27 11:38 Jemb 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 算法介绍:在代理模式中,两个对象参与处理用一个请求,接收地请求有代理对象委托给真实对象处理,通过代理对象控制请求的访问。代理对象在客户端程序和真实目标对象起一个中间桥梁的作用, 通过使用对象聚合代替继承,有效地降低了软件模块之间地耦合度。 jdk动态代理结构图分析 JDK动态代理(代理接口) Cgl 阅读全文
posted @ 2019-09-25 16:45 Jemb 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 1.索引列的值设置为null,可以用空字符串代替,为null会导致不走索引 2.遵循最佳左前缀原则,因为MySQL的B+树索引结构根据最左的column进行创建的, 3.不要对索引列进行函数或表达式的计算,正确做法是将值计算好再传进来 4.避免全表扫描 Where 中少用 NOT、!=、<>、!<、 阅读全文
posted @ 2019-09-24 22:30 Jemb 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 1.项目中为什么要使用MQ。 解耦:模块之间的调用十分复杂,同时这个调用时不需要直接同步调用接口的,此时就可以考虑运用MQ去进行系统的解耦。 异步:如果A系统接收到一个请求,需要在自己本地写库,同时还需要调用MQ进行写库,自己需要20ms,BCD需要300ms,500ms,100ms.总共的耗时需要 阅读全文
posted @ 2019-09-24 21:37 Jemb 阅读(372) 评论(0) 推荐(0) 编辑
摘要: explain的所有参数 id: 编号 select_type: 查询类型 table: 表 type: 类型 possible_keys:预测用的索引 key: 实际使用到的索引 key_len: 实际使用的索引的长度 ref: 表之间的引用 rows: 通过索引查询到的数据两 Extra: 额外 阅读全文
posted @ 2019-09-24 11:58 Jemb 阅读(580) 评论(0) 推荐(0) 编辑
摘要: MySQL四层分层:(自上往下执行) 连接层:提供预客户端连接的服务。 服务层: 1.提供各种用户使用的接口 2.提供各种sql优化器(mysql如果发现你自己的sql写的太烂,会自动帮你优化) 引擎层: INNODB:事务优先 ( 适合高并发操作,使用的是行锁) MYISAM: 性能有限 (使用的 阅读全文
posted @ 2019-09-24 11:54 Jemb 阅读(107) 评论(0) 推荐(0) 编辑
摘要: Redis是基于内存K-V数据库,然而内存资源又是非常宝贵的,所以使用最合适的存储结构,做到尽量节省内存资源,又对性能的影响不大,成为一个至关重要的问题。 redisObject数据结构: len:表示缓存中已经占用的空间长度 free:表示buf中可剩余的空间长度,当free为0的时候,表示buf 阅读全文
posted @ 2019-09-24 10:23 Jemb 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 过程解析: 在redis启动初始化时,redis会将连接应答处理器跟AE_READABLE事件关联起来,接着如果一个客户端跟redis发起连接,此时会产生一个AE_READABLE事件,然后由连接应答处理器来处理跟客户端建立连接,创建客户端对应的socket,同时将这个socket的AE_READA 阅读全文
posted @ 2019-09-23 23:29 Jemb 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 软件秘笈 设计模式那点事 阅读全文
posted @ 2019-09-23 22:44 Jemb 阅读(176) 评论(0) 推荐(0) 编辑
摘要: Spring Cloud全家桶开箱即用,中小型公司用得比较多,包含了很多组件(网关,配置中心,熔断,降级。。)。本文介绍最核心的Eureka、Ribbon、Feign、Hystrix、Zuul这几个组件。 1.Eureka Eureka中每台机器都是peer-to-peer的,集群中的机器地位平等, 阅读全文
posted @ 2019-09-23 21:21 Jemb 阅读(7633) 评论(0) 推荐(0) 编辑
摘要: 什么单例模式? 单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。其实,GoF对单例模式的定义是:保证一个类、只有一个实例存在,同时提供能对该实例加以访问的全局访问方法。 为什么要使用单例模式? 在应用系统开发中,我 阅读全文
posted @ 2017-04-23 22:59 Jemb 阅读(183) 评论(0) 推荐(0) 编辑