![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
技术文档
文章平均质量分 83
历史文档
云灬
曾就职华为研究所、招商证券研究组;A+收割机
展开
-
数据结构--处理特殊业务场景
延迟队列延时任务有别于定式任务,定式任务往往是固定周期的,有明确的触发时间。而延时任务一般没有固定的开始时间,它常常是由一个事件触发的,而在这个事件触发之后的一段时间内触发另一个事件。也就是说,任务事件生成时并不想让消费者立即拿到,而是延迟一定时间后才接收到该事件进行消费。“延迟队列”也是一个消息队列,相对于普通消息队列(只有消息本身),延迟队列中还有一个重要元素就是说明这个消息何时被消费......原创 2019-09-05 15:50:57 · 125 阅读 · 0 评论 -
Java中父类引用指向子类对象好处
比如对于HashMap与Map的理解:HashMap 是 Map 接口的常用实现类(Map是一个接口),是一个键值对集合,建议使用实现接口的方式使用Map,如:Map<String, Object> parameters = new HashMap<>();不建议这样:HashMap<String, Object> parameters = new Ha...原创 2019-09-09 04:44:47 · 3286 阅读 · 0 评论 -
Innodb引擎 vs MyIASM引擎
Innodb引擎,Innodb引擎提供了对数据库ACID事务的支持。并且还提供了行级锁和外键的约束。它的设计的目标就是处理大数据容量的数据库系统。它本身实际上是基于Mysql后台的完整的系统。Mysql运行的时候,Innodb会在内存中建立缓冲池,用于缓冲数据和索引。但是,该引擎是不支持全文搜索的。同时,启动也比较的慢,它是不会保存表的行数的。当进行Select count(*) from ta...原创 2019-09-03 12:39:09 · 134 阅读 · 0 评论 -
锁系列:可重入锁
概述:什么是 “可重入”,可重入就是说某个线程已经获得某个锁,可以再次获取锁而不会出现死锁。可重入锁有synchronized ReentrantLockReentrantLock 和 synchronized 不一样,需要手动释放锁,所以使用 ReentrantLock的时候一定要手动释放锁,并且加锁次数和释放次数要一样例如:package com.cn.xj.to......原创 2019-09-05 15:40:46 · 133 阅读 · 0 评论 -
锁系列:乐观锁、悲观锁
何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转......原创 2019-08-27 15:59:24 · 58 阅读 · 0 评论 -
Java设计模式---工厂模式
工厂模式是Java中最常用的设计模式之一。工厂模式适用的一些场景(不仅限于以下场景):1. 对象的创建过程/实例化准备工作很复杂,需要初始化很多参数、查询数据库等。2. 类本身有好多子类,这些类的创建过程在业务中容易发生改变,或者对类的调用容易发生改变。第一步:创建“Shape”的接口//创建一个接口Shape.javapublic interface Shape{ ...原创 2019-08-25 17:31:33 · 87 阅读 · 0 评论 -
Java设计模式---单例模式
单例(Singleton)模式,是java中最简单的设计模式之一。这种类型的设计模式属于“创建模式”,因为此模式提供了创建对象的最佳方法之一。这种模式设计一个类,它负责创建一个对象,同时确保只创建一个对象。这个类提供了一种方法来访问它唯一的对象,可以直接访问,而不需要实例化类的对象。现实实例第一步:创建一个单例类package com.cn.xj.tool.Single;/*...原创 2019-08-26 11:20:51 · 95 阅读 · 0 评论 -
Java中集合的线程安全性
线程安全概念 线程安全:就是当多线程访问时,采用了加锁的机制;即当一个线程访问该类的某个数据时,会对这个数据进行保护,其他线程不能对其访问,直到该线程读取完之后,其他线程才可以使用。防止出现数据不一致或者数据被污染的情况。 线程不安全:就是不提供数据访问时的数据保护,多个线程能够同时操作某个数据,从而出现数据不一致或者数据污染的情况。 对于线程不安全的问题,一般会使用sync...原创 2019-09-04 19:47:34 · 252 阅读 · 0 评论 -
Redis相关解析
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库。传统数据库遵循 ACID 规则。而 NoSQL(Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称) 一般为分布式,而分布式一般遵循 CAP 定理。CAP定理一致性(Consi......原创 2019-08-31 10:19:10 · 215 阅读 · 0 评论 -
NoSQL非关系型数据库
NoSQL,指的是非关系型的数据库。NoSQL有时也称作 Not Only SQL 的缩写,意即"不仅仅是SQL",是对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL用于超大规模数据的存储。CAP定理一致性(Consistency)(所有节点在同一时间具有相同的数据) 可用性(Availability)(保证每个请求不管成功或者失败都有响应) 分隔容忍(Partit...原创 2019-08-30 18:13:29 · 462 阅读 · 0 评论 -
分布式锁的实现---基于数据库方式(不推荐)
前言:锁是用来解决什么问题的1. 一个进程中的多个线程,多个线程并发访问同一个资源的时候,如何解决线程安全问题。2. 一个分布式架构系统中的两个模块同时去访问一个文件对文件进行读写操作3. 多个应用对同一条数据做修改的时候,如何保证数据的安全性在单进程中,我们可以用到synchronized、lock之类的同步操作去解决,但是对于分布式架构下多进程的情况下,如何做到跨进程的锁(分布......原创 2019-08-26 17:56:04 · 288 阅读 · 0 评论 -
分布式锁的实现---基于缓存(Redis等)方式(推荐使用)
前言:锁是用来解决什么问题的1. 一个进程中的多个线程,多个线程并发访问同一个资源的时候,如何解决线程安全问题。2. 一个分布式架构系统中的两个模块同时去访问一个文件对文件进行读写操作3. 多个应用对同一条数据做修改的时候,如何保证数据的安全性在单进程中,我们可以用到synchronized、lock之类的同步操作去解决,但是对于分布式架构下多进程的情况下,如何做到跨进程的锁(分布......原创 2019-08-30 10:58:21 · 198 阅读 · 0 评论 -
分布式锁的实现---基于Zookeeper方式(推荐使用)
前言:锁是用来解决什么问题的1. 一个进程中的多个线程,多个线程并发访问同一个资源的时候,如何解决线程安全问题。2. 一个分布式架构系统中的两个模块同时去访问一个文件对文件进行读写操作3. 多个应用对同一条数据做修改的时候,如何保证数据的安全性在单进程中,我们可以用到synchronized、lock之类的同步操作去解决,但是对于分布式架构下多进程的情况下,如何做到跨进程的锁(分布......原创 2019-08-27 21:11:29 · 130 阅读 · 0 评论 -
kafka原理理解(一)
1.Kafkaconsumer是否可以消费指定分区消息?Kafkaconsumer消费消息时,向broker发出"fetch"请求去消费特定分区的消息,consumer指定消息在日志中的偏移量(offset),就可以消费从这个位置开始的消息,customer拥有了offset的控制权,可以向后回滚去重新消费之前的消息,这是很有意义的。消费者每次消费数据的时候,消费者都会记录消费的物理偏移量......原创 2019-08-26 16:32:40 · 306 阅读 · 0 评论 -
kafka原理理解(二)
术语和基本概念Broker:任何正在运行中的Kafka示例都称为Broker。 Topic:Topic其实就是一个传统意义上的消息队列。 Partition:即分区。一个Topic将由多个分区组成,每个分区将存在独立的持久化文件,任何一个Consumer在分区上的消费一定是顺序的;当一个Consumer同时在多个分区上消费时,Kafka不能保证总体上的强顺序性(对于强顺序性的一个实现是Ex......原创 2019-08-26 15:55:04 · 116 阅读 · 0 评论