- 博客(16)
- 收藏
- 关注
原创 五、Kafka,构建TB级异步消息系统
五、Kafka,构建TB级异步消息系统5.1、阻塞队列代码演示:public class BlockingQueueTests { public static void main(String[] args){ BlockingQueue queue = new ArrayBlockingQueue(10); new Thread(new Producer(queue)).start(); //一个生产者生产数据,三个消费者同时并发地消费数据
2021-07-01 08:55:09 258
原创 四、Redis,一站式高性能存储方案
四、Redis,一站式高性能存储方案4.1、spring整合redis导入依赖:spring-boot-starter-data-redis <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>配置re
2021-07-01 08:49:52 203
原创 JMM:Java内存模型
五、JMM:Java内存模型(1)什么是JMM?Java 内存模型是一种规范,定义了很多东西:所有的变量都存储在主内存(Main Memory)中。每个线程都有一个私有的本地内存(Local Memory),本地内存中存储了该线程以读/写共享变量的拷贝副本。线程对变量的所有操作都必须在本地内存中进行,而不能直接读写主内存。不同的线程之间无法直接访问对方本地内存中的变量。JMM:JAVA内存模型,不存在的东西,是一个概念,也是一个约定!JMM主要是为了规定了线程和内存之间的一些关系,是深入
2021-06-30 19:29:26 106
原创 MYSQL索引
MYSQL索引聚集索引(主键索引):是一种存储方式。InnoDB 的聚簇索引实际上在同一个结构中保存了 B-Tree 索引和数据行,非叶子结点储存索引,叶子结点储存完整的数据记录非聚集索引:(MYISAM)索引文件和数据文件分离辅助索引(二级索引):非主键索引,叶子节点=主键值+书签覆盖索引:就是select的数据列只用从索引中就能够取得,不必从数据表中读取,换句话说查询列要被所使用的索引覆盖,也即,索引包含了查询正在查找的所有数据当发起一个被索引覆盖的查询(也叫作索引覆盖查询)时,在EXPL
2021-06-30 19:25:01 98
原创 INNODB和MYISAM
INNODB和MYISAMMySQL InnoDB 引擎使用 redo log(重做日志) 保证事务的持久性,使用 undo log(回滚日志) 来保证事务的原子性。MySQL InnoDB 引擎通过 锁机制、MVCC 等手段来保证事务的隔离性( 默认支持的隔离级别是 REPEATABLE-READ )。保证了事务的持久性、原子性、隔离性之后,一致性才能得到保障。MYISAMINNODB事务支持不支持支持数据行锁定不支持支持外键不支持支持全文索
2021-06-30 19:21:12 74
原创 抽象和接口类
抽象和接口类抽象类抽象方法 : 没有方法体的方法。抽象类:包含抽象方法的类。public abstract calss Animal{ public abstract void eat();}不能直接new抽象类方法必须用一个子类来继承extents抽象父类继承抽象类的子类必须重写父类所有的抽象方法。抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。接口类 public interface 接口名称 { //1. 抽象方法 public a
2021-06-21 10:51:05 53
原创 三、开发社区核心功能
三、开发社区核心功能3.1、过滤敏感词(前缀树)什么 是前缀树?参考LeetCode 208. 实现 Trie (前缀树)在resource下定义一个敏感词文件sensitive-words.txt在util工具类中定义敏感词过滤工具类SensitiveFilter.java:(1) 定义前缀树 : // 前缀树 private class TrieNode { // 关键词结束标识 private boolean isKeywo
2021-06-16 09:10:12 124
原创 线程池:三大方式、七大参数、四种拒绝策略
线程池线程池:三大方式、七大参数、四种拒绝策略池化技术程序的运行,本质:占用系统的资源!我们需要去优化资源的使用 ===> 池化技术线程池、JDBC的连接池、内存池、对象池 等等。。。。资源的创建、销毁十分消耗资源池化技术:事先准备好一些资源,如果有人要用,就来我这里拿,用完之后还给我,以此来提高效率。(1)线程池的好处:1、降低资源的消耗;2、提高响应的速度;3、方便管理;线程复用、可以控制最大并发数、管理线程(2)线程池:三大方法ExecutorService th
2021-06-15 16:34:22 175
原创 悲观锁、乐观锁、自旋锁
18)悲观锁、乐观锁、自旋锁(1)乐观锁乐观锁是一种乐观的思想,即认为读多写少,遇到并发的可能性低,每次拿数据时都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用 版本号机制 和 CAS 算法实现。Java 中的乐观锁基本都是通过 CAS 操作实现的,CAS 是一种更新的原子操作,比较当前值跟传入值是否一样,一样则更新,否则失败。–>缺点:ABA问题:CAS 会导致 “ABA 问题”。CAS 算法实现的一个重要前提是需要取出内存中某时
2021-06-15 16:05:53 221
原创 多线程的基础
多线程基础一、并发与并行的区别:**并发:**多线程操作同一个资源。CPU 只有一核,模拟出来多条线程,天下武功,唯快不破。那么我们就可以使用CPU快速交替,来模拟多线程。并发编程的本质:充分利用CPU的资源!并行: 多个人一起行走CPU多核,多个线程可以同时执行。 我们可以使用线程池!多线程的内存图:二、线程的状态:1)new新建状态2)block阻塞3)runnable运行4)terminated死亡5)sleep休眠6)waiting无线等待wait/sle
2021-06-15 16:01:49 1123 1
原创 进程与线程
进程与线程进程是操作系统中的应用程序、是资源分配的基本单位,线程是用来执行具体的任务和功能,是CPU调度和分派的最小单位一个进程往往可以包含多个线程,至少包含一个一、进程的的概念引用线程之前进程的概念:进程是表示资源分配的基本单位,也是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括内存空间、磁盘空间、I/O设备等。然后,把该进程放入进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。3
2021-06-15 15:58:14 484
原创 四、HashMap 的成员
四、HashMap 的成员4.1 成员变量(1)serialVersionUID序列化版本号private static final long serialVersionUID = 362498820763181265L;(2)DEFAULT_INITIAL_CAPACITY 初始化容量集合的初始化容量(必须是 2 的 n 次幂)// 默认的初始容量是16 1 << 4 相当于 1*2的4次方static final int DEFAULT_INITIAL_CAPACITY =
2021-06-15 09:51:07 204 1
原创 二、HashMap 集合底层的数据结构
二、HashMap 集合底层的数据结构2.1 存储数据的过程示例代码:HashMap<String, Integer> map = new HashMap<>();map.put("柳岩", 18);map.put("杨幂", 28);map.put("刘德华", 40);map.put("柳岩", 20);输出结果:{杨幂=28, 柳岩=20, 刘德华=40}分析:当创建 HashMap 集合对象的时候,在 jdk1.8 之前,构造方法中创建一个长度是
2021-06-15 09:49:05 93
原创 一、HashMap 底层原理
一、HashMap 底层原理HashMap 基于哈希表的 Map 接口实现,是以 key-value 存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的 key、value 都可以为 null,此外,HashMap 中的映射不是有序的。jdk1.8 之前 HashMap 由 数组 + 链表 组成,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突(两个对象调用的 hashCode 方法计算的哈希值一致导致计算的教组索引值相同)而存在的
2021-06-15 09:42:38 144
原创 三次握手与四次挥手
三次握手与四次挥手**序号(seq):**TCP是面向字节流的。在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。seq是本报文段发送的数据组的第一个字节的序号。**确认号(ack):**确认序号为上次接收的序号的最后一个字节序号加1.只有确认标志位(ACK)为1的时候,确认序号才有效。同步SYN(synchronization):在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1。因此SYN=1
2021-06-14 15:58:26 131
原创 一、开发社区首页
一、开发社区首页代码:community-1.61.1、建立数据库init.schema.sql文件1.2、DAO数据访问层1、编写实体类(Entity)User.java 用户信息DiscussPost.java Page.java 封装分页相关的信息2、编写对应Mapper文件(注释:@Mapper)public interface UserMapper {}public interface DiscussPostMapper {}3、编
2021-06-13 14:05:42 559 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人