自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 问答 (1)
  • 收藏
  • 关注

原创 小谈HashMap与ConcurrentHashMap

HashMapJDK7:在JDK7中,HashMap通过数组加链表的形式存储,当元素个数达到阈值,并且数组下标已经存在元素,则会进行扩容,如果数组下标不存在元素,则直接添加,不会扩容。JDK7中添加元素使用的是头插法,在高并发的环境下可能会导致死链。新增对象丢失原因:并发赋值时被覆盖。扩容中的数据迁移,新增的数据落在了原来的HashMap中,并且所在的哈希槽已经被遍历过。多个线程同时执行resize方法,每个线程都会创建Entry,最后的赋值中会覆盖其他线程的数据。迁移丢失。在并发迁移过

2020-10-24 14:56:32 126

原创 Redis(四)分布式锁+穿透/雪崩/击穿

分布式锁分布式锁本质就是在Redis中设置一把锁,当别的进程也要上锁时,入股发现已经被上锁了,就需要放弃或者重试。上锁一般使用set(set if not exits)指令,只允许一个客户端上锁,用完之后使用del指令释放。但是如果成功上锁后,程序出现问题,无法执行del,那么锁将永远不能释放。对此,可以将锁设置一个过期时间,set [key] [value] ex [timeout] nx,这个指令是将setnx和expire组合在一起的原子指令,这就是分布式锁的核心。Redlock算法加锁时

2020-10-24 08:54:23 355

原创 Redis(三)持久化

RDB(Redis DataBase)Redis使用操作系统的多进程 COW(Copy On Write)机制来实现快照持久化。Redis在持久化时会调用 glibc 的函数fork产生一个子进程,快照持久化完全交给子进程来处理,父进程继续处理客户端请求。触发条件save满足规则的情况执行FLUSHALL、FLUSHDB退出Redis恢复RDB文件中的数据只需要将.rdb文件放在指定的目录,Redis启动时会自动加载并恢复其中数据目录存在位置:127.0.0.1:637

2020-10-24 08:51:35 102

原创 Redis(二)事务+配置文件详解

Redis中单条语句保证原子性,整个事务不保证原子性。当出现语法错误时,所有的命令都不会执行;语法没有错误的,只会有一条语句返回错误。Redis事务中没有隔离级别的概念。开启事务MULTI执行事务EXEC放弃事务DISCARD监控WACTH key [key …] 等同于一个乐观锁,如果监视的key中的值发生,则整个事务放弃取消监控UNWATCH 如果执行EXEC或者DISCARD,则不需要手动执行UNWATCH。###############################..

2020-10-24 08:50:12 240

原创 Redis(一)基础

Redis是什么Redis(Remote Dictionary Service,远程字典服务)是C语言开发的一个开源(遵从BSD协议)的高性能键值对(key-value)的内存数据库。可以用作数据库、缓存、消息中间件等。它是一种NoSQL(not-only sql)的数据库。Redis特点:性能优秀,数据存放在内存中,读写速度非常快,根据官方文档信息,读的速度是110K次/s,写的速度是81K次/s。在处理业务时是单进程单线程,是线程安全的(因为如果是多线程会引起CPU的上下文切换,非常耗时);在

2020-10-24 08:46:03 171

原创 设计模式/设计模式七大原则

设计模式的目的在进行软件开发时,为了让程序的实现**高内聚,低耦合,以及提高程序的维护性、扩展性、重用性、灵活性等**。设计模式的本质就是**提高软件的维护性、通用性和扩展性,并降低软件的复杂度**。核心思想:找出应用中可能需要变化之处,把他们独立出来,不要和那些不会变化的代码混在一起针对接口编程,而不是针对实现编程为了交互对象之间的松耦合设计而努力设计模式七大原则单一职责原则单一职责原则(SRP),就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把

2020-10-09 14:47:29 122

原创 在Linux上启动Kibana失败

在配置好kibana.yml后,在Linux上启动kibana时报错(忘记复制错误了,下面时大概错误)[error][reporting] Failed to install browser. See kibana logs for more details.error [] [fatal] Extract.<anonymous> (/opt/es/kibana-6.3.1-linux-x86_64/node_modules/x-pack/plugins/reporting/server/b

2020-10-07 10:34:13 3428 2

原创 Linux中的ActiveMQ8161端口本机无法访问解决方案

Linux中的ActiveMQ8161端口本机无法访问解决方案最近在Linux上学习ActiveMQ时,发现在虚拟机或者云服务器上开启的ActiveMQ服务,在本机使用http://ip:8161"无法访问。在尝试了各种方法后,发现错误并没有我认为的那么复杂。这篇博客也是想让其他人不要走这么多弯路,更为了提醒自己这类错误以后的解决方法。1. 在Linux环境下,第一点需要注意的就是查看端口是否开放注意CentOS的版本,版本不同,设置防火墙的shell语句可能不同,本人使用的语句对应的时ContOS7

2020-08-28 09:42:01 3009 3

原创 BIO/NIO/AIO

IO模型BIO​ BIO全称为 Blocking I/O,是一种同步阻塞IO。最开始的网络通信就是BIO模型,服务端创建一个ServerSocket,客户端创建一个 Socket 去连接服务端,这样客户端与服务端便可以进行通信了。产生的问题:​ 这个过程是阻塞的,因为服务端需要一直等待客户端的连接请求,当客户端连接之后,服务器在处理客户端请求时,客户端只能进行等待,如果客户端暂时没有请...

2020-03-30 19:49:50 353 1

原创 事务详解

事务详解什么是事务?事务是对数据库进行一组操作时的最小单位(不可再分割),这一组操作作为一个整体向数据库进行提交,要么都执行,要么都不执行。事务的四大特性(ACID)原子性(Atomicity):事务是对数据库操作的最小执行单位,不允许再分割;原子性保证了事务要么都执行,要么都不执行。一致性(Consistency):执行事务前后,数据要保持一致。保证了多个事务对同一个数据的读取结...

2020-03-10 16:55:09 204

原创 String、StringBuffer和StringBuilder的区别

StringString是字符串常量,使用final修饰的字符数组来保存字符串(private final char value[]),创建后便不可以在修改。虽然平时使用"+"算符看似可以拼接两个字符串从而实现对字符串的修改,可实际上并不是这样的。String str = "123";System.out.println(str.hashCode());str = "123" + "456...

2020-03-09 17:30:04 154

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除