5 木霖森77

尚未进行身份认证

暂无相关简介

等级
TA的排名 2w+

Redis的三种模式 笔记记录

https://cloud.tencent.com/developer/news/8009,可以看一下这两篇文章https://blog.csdn.net/ahfywangqiang/article/details/86537421之前有看过一些Redis模式相关文章,今天又看了上面两篇。这里总结一下笔记。学习之用。主从模式下,一主多从的话,主挂了,本Redis服务就不能写,只能读(从服务...

2019-06-05 11:30:16

生产者和消费者代码实现java

https://www.cnblogs.com/chentingk/p/6497107.html

2019-05-02 16:25:52

数据结构之红黑树

其实红黑树就是一种自平衡的二叉搜索树,因为如果插入的数据时有序的时候,二叉树会变成链表,插入删除的效率非常的低。规则当插入(删除)一个节点时,必须遵循一定的规则,他们被称为红黑规则。遵循红黑规则,树就是平衡的:每一个节点不是黑就是红;根节点总是黑色的;红节点的子节点必须是黑色的(红色节点不能连续),反之则不一定成立;从根节点到叶子节点or空子节点的每条路径 上的黑色节点数目(黑色高...

2019-05-02 16:20:15

select epoll poll的区别

(1)select,poll实现需要自己不断轮询所有fd集合,直到设备就绪,期间可能要睡眠和唤醒多次交替。而epoll其实也需要调用epoll_wait不断轮询就绪链表,期间也可能多次睡眠和唤醒交替,但是它是设备就绪时,调用回调函数,把就绪fd放入就绪链表中,并唤醒在epoll_wait中进入睡眠的进程。虽然都要睡眠和交替,但是select和poll在“醒着”的时候要遍历整个fd集合,而epoll...

2019-05-02 11:33:01

各个MQ消息队列介绍以及区别比较(RabbitMq ActiveMQ、ZeroMQ、Kafka)

首先,MQ其实就是消息队列,队列我们可以理解为管道,以管道的放手做消息传递。1. RabbitMQ,ActiveMq,ZeroMq比较TPS比较:ZeroMq 最好,RabbitMq 次之, ActiveMq 最差。持久化消息:ZeroMQ不支持。ActiveMQ和RabbitMQ都支持。技术点:可靠性、灵活的路由、集群、事务、高可用的队列、消息排序、问题追踪、可视化管理工具、插件系统...

2019-05-02 09:51:49

Redis和memcache的区别(Redis相关、Redis的String中key和value的最大值是512M)

Redis的String中key和value的最大值(512M)Redis的特点速度快;因为数据存在内存中。类似于HashMap,HashMap的优势就是查找和操作的速度都是O(1);支持丰富的数据类型:String、list、set、sorted set、hash支持事务,操作都是原子性的;丰富的特性:可用于缓存、消息等,按照Key设置过期时间,过期之后自动删除,有多种过期策略支持...

2019-05-02 09:30:21

面试 Redis必看

https://blog.csdn.net/qq_34337272/article/details/80012284

2019-05-02 09:30:07

秒杀系统相关-分布式锁解决秒杀超卖的优化and高并发的攻击和解决

这两篇文章很简单易懂,自己看一下就行,所以没有自己写一下。蛮有趣的。分布式锁解决超卖的优化:《用分布式锁来防止库存超卖,但是是每秒上千订单的高并发场景,如何对分布式锁进行高并发优化来应对这个场景?》](https://blog.csdn.net/u010391342/article/details/84372342)高并发情况下出现的问题和如何解决:《Web大规模高并发请求和抢购的解决方案》...

2019-05-02 08:08:09

分布式理论(CAP BASE TCC 2PC 3PC)

分布式数据一致性因为在分布式系统中,为了保证数据的高可用,会将数据保留多个副本(replica),这些副本分布在不同的物理机器上。所以可能导致数据在进行写入副本的过程中出现丢失等故障,造成数据不一致的问题。CAPConsistency 一致性、Availability 可用性、Partition Tolerance 分区容错性Consistency 一致性:这个和数据库ACID的一致性类似...

2019-04-29 10:36:04

幂等的实现方案

我之前有写过关于HTTP的幂等性:《(HTTP的)幂等性Idempotence》但是其实幂等不仅仅只是用于HTTP的设计中,很多重要的情况,这些逻辑都需要幂等的特性来支持。幂等性概念幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使...

2019-04-28 09:09:58

ThreadLocal理论以及其内存泄漏的问题

本人的另一个关于ThreadLocal理论和实践的文章:《ThreadLocal实现线程范围内数据共享》ThreadLocal的实现是这样的:每个Thread 维护一个 ThreadLocalMap 映射表,这个映射表的 key 是 ThreadLocal 实例本身,value 是真正需要存储的 Object。具体原理ThreadLocal里类型的变量,其实是放入了当前Thread里。每个T...

2019-04-28 09:00:04

减少GC开销 &&可能出现内存泄漏的情况&&两个对象相互引用会不会被GC

如何降低java GC开销,减少GC次数其他详见:《如何减少垃圾回收的次数 jvm虚拟机》1.选择一个较好的GC器Java9在2017年九月发布,G1(“Garbage First”)垃圾回收器 成为 HotSpot 虚拟机默认的垃圾回收器。从 serial 垃圾回收器到CMS 收集器, JVM 见证了许多 GC 实现,而 G1 将成为其下一代垃圾回收器。随着垃圾收集器的发展,每一代 GC...

2019-04-28 08:38:26

java8怎么解决java7中HashMap 多线程扩容发生死链的情况

首先 先仔细看一下关于扩容的问题:http://www.cnblogs.com/wang-meng/p/7582532.html我这里截取文章中的一部分内容:在HashMap的源码中,resize这个函数中调用了transfer(),该方法源码 见下图:单线程扩容:假设:hash算法就是简单的key与length(数组长度)求余。hash表长度为2,如果不扩容, 那么元素key为3,5...

2019-04-28 07:41:16

线程池详解-队列、抛弃策略

**newFixedThreadPool和newSingleThreadExecutor在默认情况下将使用一个无界的队列(LinkedBlockingQueue),**如果所有线程都在执行任务,那么任务将在队列中等待,如果任务到达的速度大于线程执行的速度,造成的后果将是队列无限期增加。更稳妥的管理策略是使用有界队列,如:ArrayBlockingQueue,有界的LinkedBlockingQu...

2019-04-23 10:20:29

HotSpot虚拟对象(对象创建 内存分配 栈上分配 TLAB 对象内存布局和对象访问等 )

对象的创建整个对象的创建过程如下所示:首先进行类加载的检查:虚拟机遇到new指令的时候,首先去检查该指令的参数是否能够在常量池中定位到这个类的符号引用,并且检查该符号引用代表的类是否已经被加载过、解析和初始化过。若没有,必须先执行相应的类加载的过程。分配内存:类加载检查通过之后,虚拟机为对象分配内存。(内存大小在类加载完后就能确定)。分配的方式有“指针碰撞”和“空闲列表”两种,若java...

2019-04-21 18:27:56

Mybatis实现原理

https://yq.aliyun.com/articles/603907

2019-04-21 16:36:05

mybatis中#和$的区别 SQL

在mybatis中的$与#都是在sql中动态的传入参数。eg:select id,name,age from student where name=#{name} 这个name是动态的,可变的。当你传入什么样的值,就会根据你传入的值执行sql语句。两者区别就是将传入的值作为字符串的形式。用#{}传入值,sql动态解析为一个JDBC预编译语句(preparedStatement)的参数标记...

2019-04-21 14:39:09

AspectJ 实现代理

《两种动态代理:JDK实现和CGLIB字节码生成文件》《java中的代理(静态代理和动态代理)》先复习一下,看一下之前的两篇文章然后我们说一说AspectJ代理:AspectJ静态编译织入(Aspect for java),他其实是一套独立的面向切面编程的解决方案。Spring中虽然使用了Aspect的Annotation,但是并没有使用它的编译器和织入器。关于AOP的相关概念学习可以看...

2019-04-20 11:21:00

Set怎么去重 HashSet TreeSet LinkedHashSet

首先,Set和List的区别就是Set是无序不可重复的序列HashSet底层是hash表,可以为null,但只能有一个null;TreeSet底层是一个二叉树,保证有序(继承自SortedSet),不能有null。两者都是线程不安全的。LinkedHashSet也是根据元素的hashcode值来决定元素的存储位置。但是它同时使用链表维护元素的次序。Set怎么去重其实Set中的源码很简单...

2019-04-20 10:35:25

SpringAOP基础以及四种实现方式

首先。AOP 面向切面编程。就是说通过配置将业务逻辑和系统的服务分离。目的是让业务逻辑之关系业务的处理而不再去处理其他事情。其中切面一般都是哪些可以为多个类提供服务的模块,将其封装起来称为切面。减少系统的重复代码和低模块之间的耦合度。一般用于权限验证、日志、事务等。拦截器也是应用了AOP的思想,将拦截(请求)Action以进行一些预处理或者结果处理。Spring的AOP可以拦截Spring管理...

2019-04-20 10:13:42

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。