- 博客(98)
- 资源 (1)
- 收藏
- 关注
原创 Redis学习--------分片集群、散列插槽、集群伸缩、故障转移
1. 分片集群搭建 ip port role192.168.127.101 8001 master192.168.127.101 8002 master192.168.127.101 8003 master192.168.127.101 9001 slave192.168.127.101 9002 slave192.168.127.101 9003 slave配置文件Redis.confport 6379# 开启集群功
2022-05-22 17:29:42
771
原创 Redis学习--------哨兵集群搭建,RedisTemplate连接
1.哨兵集群搭建 IP Port Role192.168.127.101 27001 Sentinel192.168.127.101 27002 Sentinel192.168.127.101 27003 Sentinel192.168.127.101 7001 Master192.168.127.101 7002 slave192.168.127.101 7003 slave修改配置文
2022-05-21 21:46:57
1039
原创 全局唯一ID实现方案
1. 数据库主键自增1.1 实现方案通过创建表时,设置数据库主键自增alter table sec_user modify id integer auto_increment ;1.2 优缺点优点:依赖于数据库自身不需要其他资源;ID号单调自增,可以实现一些对ID有特殊要求的业务缺点:强依赖DB,当DB异常时整个系统不可用;一致性难以保证:主从复制可增加可用性,但数据一致性在特殊情况下难保证:主从切换时的不一致可能会导致重复发号ID发号性能瓶颈限制在单台MySQL的读写性能id单调递
2022-04-23 15:47:14
1169
原创 Redis学习--------缓存更新策略、缓存穿透、缓存击穿、缓存雪崩
1.缓存更新策略1.1 内存淘汰通过设置Redis的你内存回收策略,回收key,下次访问就会更新key的内容(原理待补充)。1.2 过期剔除通过 EXPIRE key seconds [ NX | XX | GT | LT] 命令为key设置过期时间,当key过期之后,再次访问时,会进行缓存重建。1.3 被动更新(常用)当缓存的key数据有所更新时,同步改动Redis中的缓存数据。涉及的问题:1. 当缓存数据有变化时,是删除缓存还是更新缓存?使用删除缓存。分析:如果使用更新缓存的方可能
2022-04-10 17:43:24
1731
1
原创 算法学习-----------异或运算
1.异或运算特性:相同为0,相异为1。0 ^ a = a,a ^ a = 0 010 100 ------ 110异或运算遵从交换律:a ^ b ^ c = a ^ (b ^ c)2.异或运算算法题目题目一:不通过使用中间变量交换a与b的值题解:比如: a = 8 , b = 10,转换为二进制位:a = 0000 1000 , b = 0000 1010a ^ ba 0000 1000b 0000 1010= 0000 0010 =
2021-09-20 15:12:51
538
转载 Integer缓存机制
一、Integer类的缓存机制我们查看Integer的源码,就会发现里面有个静态内部类。public static Integer valueOf(int i) { assert IntegerCache.high >= 127; //当前值在缓存数组区间段,则直接返回该缓存值 if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cach
2021-07-05 18:27:03
230
原创 SpringCloud学习--Eureka注册中心的搭建
Eureka 介绍整体介绍背景:在传统应用中,组件之间的调用,通过有规范的约束的接口来实现,从而实现不同模块间良好的协作。但是被拆分成微服务后,每个微服务实例的网络地址都可能动态变化,数量也会变化,使得原来硬编码的地址失去了作用。需要一个中心化的组件来进行服务的登记和管理。概念:实现服务治理,即管理所有的服务信息和状态。注册中心相当于买票乘车,只看有没有票(有没有服务),有就去买票(获取注册列表),然后乘车(调用)。不必关心有多少火车在运行。注册中心好处:不用关心有多少提供方。注册
2021-06-07 17:55:36
188
原创 Oracle学习-------PL/SQL数据块,游标,存储过程,分析函数
1. PL/SQL数据块语法格式:----基础语法格式DECLARE ---变量声明部分 BEGIN /*程序 执行 部分*/ EXCEPTION /*异常处理部分*/ END;1.1 数据类型1.2 变量的声明与赋值 DECLARE ---定义语法: 变量名 变量类型 [:= 赋初值] v_name VARCHAR2(10); ---定义不赋值 v_age NUMBER := 1; --
2021-06-04 11:41:28
266
原创 Oracle学习-------DDL,DML,TCL,DCL
1.DDL数据定义语句 (Data Definition Language) :DDL语句包括:create、alter、drop 、truncate 1.1 CREATEOracle常用数据类型:1.1 表级操作---创建学生表CREATE TABLE STUDENT( STU_ID NUMBER PRIMARY KEY, ---主键约束 STU_NAME VARCHAR(10) NOT NULL, ---非空约束 STU_SEX CH
2021-06-03 09:57:31
149
原创 swagger学习------swagger的介绍和使用
1.说明现在SWAGGER官网主要提供了几种开源工具,提供相应的功能。可以通过配置甚至是修改源码以达到你想要的效果。Swagger Codegen: 通过Codegen 可以将描述文件生成html格式和cwiki形式的接口文档,同时也能生成多钟语言的服务端和客户端的代码。支持通过jar包,docker,node等方式在本地化执行生成。也可以在后面的Swagger Editor中在线生成。Swagger UI:提供了一个可视化的UI页面展示描述文件。接口的调用方、测试、项目经理等都可以在该页面中对相关
2021-05-29 11:22:58
1786
原创 微信开发本地测试环境搭建以及测试号申请和配置
1.注册微信公众号微信公众平台进行相关信息填写:2. 微信开发测试号申请使用刚刚注册的微信号登录微信开发平台,找到最下面的开发配置使用微信扫码登录,首次进入需要填写URL和Token,瞎填肯定不会配置成功的,那怎么填呢???别急,继续往下看。由于微信开发消息的大致流程:所以我们需要有自己的服务器,但是为了测试方便,我们需要把本机作为服务器进行本地环境测试。因此我们就需要进行反向代理(内网穿透)内网穿透的软件有很多,比如ngrok,nat..
2021-05-22 17:17:55
3550
1
原创 Dubbo学习--------Dubbo+zookeeper微服务环境搭建
1.zookeeper环境搭建1.1 zookeeper单节点搭建去官网下载zookeeper安装包 ----------》zookeeper官网下载地址 把安装包导入到虚拟机或者服务器中解压zookeeper安装包(如果没有安装tar解压指令,需要先yum安装tar)tar -zxvf zookeeper-3.4.6.tar.gz -C 解压到的路径找到解压的zookeeper文件夹,找到zookeeper中conf文件夹进入conf文件夹,把zoo-sample.cfg 改
2021-05-22 16:13:13
357
1
原创 shiro学习--------shiro权限控制
1.简介Apache Shiro™是一个功能强大且易于使用的Java安全框架,它执行身份验证、授权、加密和会话管理。通过Shiro易于理解的API,您可以快速轻松地保护任何应用程序——从最小的移动应用程序到最大的web和企业应用程序。shiro官网2.SE环境下测试 public static void main(String[] args) { //获取SecurityManager对象 DefaultSecurityManager defaultS
2021-05-15 15:38:39
509
3
原创 Zookeeper学习----zookeeperAPI简单实现分布式锁
代码实现:ZkUtil工具类public class ZkUtil { private static ZooKeeper zk; private static String path = "192.168.45.27:2181,192.168.45.30:2181,192.168.45.29:2181/testLock"; private static CountDownLatch countDownLatch = new CountDownLatch(1);....
2021-05-05 11:32:49
180
原创 Zookeeper学习----zookeeperAPI介绍及分布式注册发现简单实现
1. 导入依赖注意导入的zookeeper包的版本必须和虚拟机安装的zookeeper版本一致。 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.6</version> </dependency&g
2021-05-03 22:20:20
203
原创 Redis学习--------SpringBoot整合redis使用
1.导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.b
2021-05-01 22:05:37
406
原创 Redis学习--------主从复制
1. redis集群的搭建1.1 方式一首先启动所有redis节点。 挑选一台节点为主节点。 在所有从节点中执行replicaof 主节点的ip 主节点的端口,在redis旧版本使用slaveof 主节点ip 主节点端口 通过replicaof no one,取消作为从节点。1.2 方式二在所有节点中挑选一个作为主节点,然后启动 在启动所有从节点时,redis-server 配置文件路径 --replicaof 主节点ip 主节点端口1.3 方式三在从节点配置文件中...
2021-04-30 18:11:20
335
3
原创 Redis学习--------RDB与AOF
1. RDB持久化方式1.1 RDB使用RDB:RedisDB每隔一定的时间生成一个redis数据库时点快照。调用生成快照的方式:手动调用save或者bgsave生成数据库的时点快照。save方式是通过阻塞redis服务进程,停止对外服务,然后进行数据库快照的生成。bgsave的方式是fork一个子线程进行数据库时点快照,不影响父进程的对外服务。通过全局配置文件进行配置调用时机。这是save的方式就是创建子进程生成快照的方式。# Save the DB to disk.## save &
2021-04-30 11:49:34
390
原创 Redis学习--------发布订阅,布隆过滤器,过期时间,缓存,事务,
1.发布订阅 PSUBSCRIBE pattern [pattern ...] summary: Listen for messages published to channels matching the given patterns since: 2.0.0 订阅符合正则表达式的一类频道 eg:PSUBSCRIBE p* b* //订阅以p开头和b开头的所有频道 PUBLISH channel message summary: Post a mes
2021-04-29 17:35:30
3570
原创 MySQL数据库-------事务与锁
1. 什么是事务。事务就是一类操作的集合。这些操作要么都成功,有一个失败就会都失败,是一个不可分割的工作单位。(一荣俱荣,一损俱损)。2. 事务的特性2.1 原子性(Atomicity)事务为一组不可分割的工作单位,要么都成功,有一个失败,都失败。2.2 一致性(Consistency)事务执行操作的结果,会从一个一致性状态变为另一个一致性状态。实现一致性主要通过原子性,隔离性,持久性。2.3 隔离性(Isolation)一个事务的执行不能被其他事务干扰。即一个事务的内部操作
2021-04-25 11:16:51
77
原创 JVM学习----------StringTable字符串常量池
1.常量池和字符串常量池常量池存在于字节码中,当加载字节码时,会把字节码中的常量池放入运行时常量池中,当运行到某个语句时,存在字符串常量,就会把字符串常量放入StringTable中,StringTable底层实现是hashTable,如果根据hash值判断表中是否存在这个字符串,如果存在就不会添加,否则就会加入到表中。2.字符串拼接问题...
2021-04-14 15:10:21
186
原创 Java8新特性
1. lamda表达式()->{ 代码段;}(参数1)->{ 代码段;}(参数1,参数2)->{ 代码段;}2. 函数式接口2.1 函数式接口Function@FunctionalInterfacepublic interface Function<T, R> { /** * Applies this function to the given argument. * *
2021-04-08 17:36:41
128
原创 CAS原子类型
1. AtomicInteger public static void main(String[] args) { AtomicInteger ai = new AtomicInteger(); //默认值为0 AtomicInteger ai1 = new AtomicInteger(2); //默认值为2 int i = ai.get();//获取最新值 ai.incrementAndGet(); //i++ a
2021-04-05 20:45:01
178
原创 多线程常用类
1. Callable使用方法:public class CallableDemo { public static void main(String[] args) { CallableTest callableTest = new CallableTest(); FutureTask<Integer> futureTask = new FutureTask(callableTest); new Thread(futureT
2021-04-03 17:48:04
507
原创 并发编程-----------集合
1. 多线程下的List方式一:使用线程安全的Vector类。 方式二:通过Collections.synchronizedList(List<T> list) 把List结合转换为线程安全的类。 方式三:使用CopyOnWriteArrayList区别:前两种方式都是通过synchronized的同步方式,这种方式是粗粒度的锁,读写时都需要获取锁,效率很低。方式三通过cow写时复制的策略。在读取的时候不会进行加锁。在写入时,首先获取lock锁,然后创建了原容器的副本,写入通过对副本
2021-04-03 17:04:09
115
原创 ArrayList源码解析
1.ArrayList继承关系2. ArrayList类成员变量public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{ private static final long serialVersionUID = 8683452581122892189L;
2021-04-02 18:20:53
89
原创 HashMap底层源码分析
1. Map实现类结构2. HashMap底层数据结构2.1HashMap数据结构JDK1.8之前Map.Entry[]数组+链表结构,链表插入使用头插法。JDK1.8之后Node[]数组+链表+红黑树,链表插入采用尾插法。2.2 HashMap存储过程put方法执行流程:调用put方法,put方法调用putVal方法。 如果为第一次调用put方法,就会首先创建一个长度为16的Node数组。 获取key的hash值,根据hash值和数组长度进行某种算法求出应该存储在数
2021-04-02 17:24:47
939
原创 Mybatis-Plus使用
1.使用步骤1.1导入maven依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>Latest Version</version> </dependency>1.2 配置文件sprin
2021-03-30 17:27:22
602
原创 Echarts学习------饼图
1.基础饼图<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> </head> <body> <div id="bar" style="width: 1000px;height: 500px;"> </div> <script src="../js
2020-12-29 16:03:59
249
原创 Echarts学习------折线图
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> </head> <body> <div id="bar" style="width: 1000px;height: 500px;"> </div> <script src="../js/echa...
2020-12-29 14:50:39
158
原创 Echarts学习------柱形图
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> </head> <body> <div id="bar" style="width: 1000px;height: 500px;"> </div> <script src="../js/echarts...
2020-12-29 14:19:45
204
原创 spring boot学习---------自动配置原理
1、自动配置原理:1)、SpringBoot启动的时候加载主配置类,开启了自动配置功能 @EnableAutoConfiguration2)、@EnableAutoConfiguration 作用:利用EnableAutoConfigurationImportSelector给容器中导入一些组件?可以查看selectImports()方法的内容;List configurations = getCandidateConfigurations(annotationMetadata, .
2020-11-25 10:25:12
222
1
原创 spring boot学习------spring boot中的配置文件
1.spring boot项目目录结构2.配置文件为对象赋值2.1 properties文件赋值@Component//通过配置文件为对象赋值,prefix为配置文件内此对象的前缀@ConfigurationProperties(prefix = "student") public class Student { private Integer id; private String name; private Boolean grouper; /.
2020-11-25 09:39:32
110
原创 Java学习---------ssm整合
1.maven依赖 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency>
2020-11-22 12:53:51
93
原创 Mybatis学习------mybatis的搭建和详细使用
1.mybatis的搭建1.1导入maven依赖<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </de
2020-11-22 12:40:21
172
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人