摘要: 策略模式 鸭子问题: 有各种各样的鸭子(野鸭,玩具鸭,北京鸭) 显示鸭子的信息 传统方式的解决方式 将鸭子作为一个抽象类(Duck),将鸭子的特性抽取出来; 然后各种鸭子继承Duck 传统方式的代码实现: //抽象出来的鸭子 public abstract class Duck { public D 阅读全文
posted @ 2022-11-13 22:36 鸽宗 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 1、安装之后查看git的版本号 在windows下的安装 默认装到C盘比较小 TortoisetGit git的一个客户端(可选选装--提供一个可以操作的界面) TortoisetGit-LanguagePack(客户端中文插件) git --version(双杠) 2、配置用户签名(必做) git 阅读全文
posted @ 2022-11-13 00:48 鸽宗 阅读(36) 评论(0) 推荐(0) 编辑
摘要: Stream 概括的的将Stream可以分为三种类型 创建Stream流:主要负责新建一个Stream流,或者基于现有的数组、List、Set、Map等集合类型对象创建出新的Stream流。 | API | 功能说明 | | | | | stream() | 创建出一个新的stream串行流对象 | 阅读全文
posted @ 2022-11-10 01:25 鸽宗 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 关于常量池的分析 第一种情况 public class Dome { public static void main(String[] args) { String s1 = "ab"; String s2 = "ab"; System.out.println(s1 == s2); } } //tu 阅读全文
posted @ 2022-11-08 20:22 鸽宗 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 双亲委派机制 类的生命周期 类的生命周期可以划分为7个阶段 加载-->验证-->准备--> 解析-->初始化-->使用-->卸载 加载: 在类加载的第一个阶段,JVM 的主要目的是将字节码从磁盘转化为二进制的字节流加载到内存中,接着会在JVM 的方法区创建一个对应的class对象这个class对象就 阅读全文
posted @ 2022-11-05 16:01 鸽宗 阅读(431) 评论(0) 推荐(0) 编辑
摘要: 链表是数据结构的一种,多个节点指向形成一个连接 在向链表中添加数据时存在两种插入方法: 头插法: 每插入一个节点,都会代替原来的头部的节点,然后新的头部节点的指针指向原来的头部节点 //java代码简单模拟 public class Node { private Object data; priva 阅读全文
posted @ 2022-11-02 23:43 鸽宗 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 什么是指令重排 计算机在执行程序时,为了提高性能,编译器和处理器一般会进行指令重排; 1.单线程环境下指令重排后可以保证与顺序执行指令的结果一致(就是不进行指令重排的情况) //原来的执行顺序 a=1; b=0; //进行指令重排后执行 b=0; a=1; 2.多线程环境下,多个线程交替执行,由于编 阅读全文
posted @ 2022-11-01 23:06 鸽宗 阅读(141) 评论(0) 推荐(0) 编辑
摘要: RabbitMq消息的百分百投递 ​ 在RabbitMq作为消息中间件的时候,存在消息丢失的情况;在大部分业务中是不允许的; 尤其是在使用中间件来保证数据的最终一致性时,消息丢失则无法保证消息的最终一致性; 下图展示了消息丢失的三种情况 所以消息的百分百投递就必须在这三个位置消息不发生丢失 第一处位 阅读全文
posted @ 2022-10-31 20:51 鸽宗 阅读(55) 评论(0) 推荐(0) 编辑
摘要: RabbitMq 什么是MQ: 是一种存放消息的队列;还是一种跨进程的通讯机制,用于两个微服务之间的消息通讯; 消息中间件 作用于分布式系统之间的通讯 且必须是异步处理的场景 提升系统的吞吐量:单位时间处理请求的个数 底层就是一个队列,但是队列是不支持持久化的;且不支持跨进程的; mq的作用 流量削 阅读全文
posted @ 2022-10-31 19:22 鸽宗 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 布隆过滤器(Bloom Filter) ​ 布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。 布隆 阅读全文
posted @ 2022-10-31 16:08 鸽宗 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 事务 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行。 事务的特性(ACID)了解么? 原子性(Atomicity): 一个事务(transaction)中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开 阅读全文
posted @ 2022-10-29 02:33 鸽宗 阅读(69) 评论(0) 推荐(0) 编辑
摘要: Redis缓存满了怎么办? ​ 当使用redis作为数据库的缓存,是为了避免业务应用直接从后端数据库读取数据;采用redis储存数据可以提升系统的响应速度. ​ 但是如果将大量数据全部存入缓存中会不会更好? MySQL 中有 1TB 的数据,如果我们使用 Redis 把这 1TB 的数据都缓存起来, 阅读全文
posted @ 2022-10-28 00:14 鸽宗 阅读(347) 评论(0) 推荐(0) 编辑
摘要: Redis持久化 RDB 原理 当采用RDB这种方式来持久化Redis中的数据时,是向RDB文件中写入redis的快照; 什么是内存快照: ​ 所谓内存快照,就是指内存中的数据在某⼀个时刻的状态记录。这就类似于照⽚,当你给朋友拍照时,⼀张照⽚就能把朋友⼀瞬间的形象完全 记下来。 ​ 对Redis来说 阅读全文
posted @ 2022-10-27 21:03 鸽宗 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 单点登录 单点登录的概念 ​ 单点登录(Single Sign On),简称为 SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子 阅读全文
posted @ 2022-10-27 20:05 鸽宗 阅读(156) 评论(0) 推荐(0) 编辑
摘要: Redis持久化的研究 Redis的持久化的方式 AOF 在redis中存在一个日志文件(aof日志),此日志文件中保存着在redis中执行的有效的命令; 当需要进行数据恢复时就会加载该文件,在redis重新执行一边来达到恢复数据的目的; 此处需要注意 AOF日志文件采用的是写后日志 写前日志:在实 阅读全文
posted @ 2022-10-27 01:18 鸽宗 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 在使用redis作为缓存时出现的问题 使用redis作为关系型数据库的缓存时不可避免的问题 缓存穿透: 缓存穿透是指客户端请求的数据在缓存和数据库中都不存在 >会造成缓存失效 >给数据库带来很大的压力; 解决方案: 方案一: 缓存空对象 优点: 实现简单,维护方便 缺点: 额外的内存消耗 可能造成短 阅读全文
posted @ 2022-10-25 08:18 鸽宗 阅读(54) 评论(0) 推荐(0) 编辑
摘要: redis的复习 第一章:关于redis的基本知识 1.1 关于NOSQL型数据库 非关系型数据库:不依赖逻辑关系存储,只是简单的靠key--value存储,大大的提高了数据库的可拓展性 获得了远超sql的性能 1.2 非关系型数据库的应用场景 应用于:高并发读写的环境;海量数据的读写 不能使用的场 阅读全文
posted @ 2022-10-24 21:05 鸽宗 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 定时任务--Quartz Quartz基本介绍 官网:http://www.quartz-scheduler.org/ 在SpringBoot中是直接内置Quartz框架的 Quartz是OpenSymphony开源的一个项目,是一个由Java编写的开源作业调度框架。 简单的任务使用: 运行类:需要 阅读全文
posted @ 2022-10-23 16:44 鸽宗 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 在jdk1.7版本其底层结构是:数组+链表 在jdk1.8版本之后底层结构修改成为:数组+链表+红黑树 在扩容机制上: jdk1.7:当满足扩容条件后-->其初始默认的容量为16,每次扩容都×2;(只有在添加第一个元素时,才会初始化一个数组:长度为16) 其原因是:HashMap在扩容时选择了位运算 阅读全文
posted @ 2022-10-22 08:54 鸽宗 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 查看虚拟机端口号: hostname -I ifconfig查看当前活着的网络接口信息 [root@localhost ~]#ifconfig ens33 down #关闭网卡 [root@localhost ~]#ifconfig ens33 up #开启网卡 [root@localhost ~] 阅读全文
posted @ 2022-10-22 01:17 鸽宗 阅读(16) 评论(0) 推荐(0) 编辑
摘要: ValueOperations:简单K-V操作 SetOperations:set类型数据操作 ZSetOperations:zset类型数据操作 HashOperations:针对map类型的数据操作 ListOperations:针对list类型的数据操作 通过bound封装指定的key red 阅读全文
posted @ 2022-10-22 01:14 鸽宗 阅读(22) 评论(0) 推荐(0) 编辑
摘要: String s = String.format("%s和我", "你"); System.out.println("s = " + s); 结果是:s = 你和我 可以使用%S作为占位符,来拼接成为需要的字符串,拼接需求的参数; 阅读全文
posted @ 2022-10-20 20:54 鸽宗 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 1. JUC概述及回顾 1.1. JUC是什么? 在 Java 5.0 提供了 java.util.concurrent(简称JUC)包,在此包中增加了在并发编程中很常用的工具类。此包包括了几个小的、已标准化的可扩展框架,并提供一些功能实用的类,没有这些类,一些功能会很难实现或实现起来冗长乏味。 1 阅读全文
posted @ 2022-10-19 23:21 鸽宗 阅读(75) 评论(0) 推荐(0) 编辑
摘要: Mysql 逻辑架构 连接层 连接客户端:java的程序,以及一些可视化工具 在这一层进行授权以及连接 服务层 查询缓存 sql解析器 预编译器 优化器 引擎层 存储层(系统磁盘) 工作流程 1.建立连接,账号授权(连接层) >{2.查询缓存-->解析器-->预编译-->优化器}-->查询引擎--> 阅读全文
posted @ 2022-10-19 23:11 鸽宗 阅读(54) 评论(0) 推荐(0) 编辑