自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

m0_37635053的博客

一念执着,万般皆苦。一念放下,便是重生

  • 博客(187)
  • 收藏
  • 关注

原创 RSA加签验签与国密加密SM2/SM4

SM2加签、验签,加密、解密

2025-02-15 21:04:45 576

原创 大数据笔记之flink-cdc实时同步数据

是一个基于流的数据集成工具,旨在为用户提供一套功能更加全面的编程接口(API)。Flink CDC 在任务提交过程中进行了优化,并且增加了一些高级特性,如表结构变更自动同步(Schema Evolution)、数据转换(Data Transformation)、整库同步(Full Database Synchronization)以及 精确一次(Exactly-once)语义。在 /opt/module/flink/flink-cdc-3.0.0 创建job目录,在job目录下创建一个文件(名字任取)

2024-12-12 22:35:06 1290

原创 大数据笔记之flink集群的安装部署

hadoop192、hadoop193的配置,仅taskmanager.host各自填自己的主机名,不修改rest.address,flink集群是以hadoop集群为基础的,所以先要搭建hadoop集群(参看前文:hadoop集群搭建)我的3台机器,的hadoop账号设置了免密访问(参考hadoop集群搭建的1.4)分发到另外两台机器,3台机器的masters与workers是一致的。在 /home/hadoop/bin目录下执行。写入:hadoop191:8081。其他与master保持一致即可。

2024-12-05 11:25:15 1179

原创 大数据笔记之HDFS

HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务 器有各自的角色。HDFS的使用场景:适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭 之后就不需要改变。

2024-12-03 15:48:15 1083

原创 大数据笔记之hadoop集群搭建

例如,我想使用hadoop账号免密访问,那么我在162机器的/home/hadoop目录执行,在162的/opt/module/hadoop-3.1.3/etc/hadoop目录下分别修改。在162机器上执行: 仅在162的目录 /opt/module/hadoop-3.1.3。启动mapred,在162的/opt/module/hadoop-3.1.3目录执行。仅在162的 /opt/module/hadoop-3.1.3 目录执行。记住:使用root账号创建的公钥私钥位于/root/.ssh下里。

2024-11-30 17:56:54 646

原创 大数据笔记之doris的安装部署

Apache Doris 是一个现代化的 MPP(Massively Parallel Processing,即大规模并行处理)分析型数据库产品。仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析。Apache Doris 的分布式架构非常简洁,易于运维,并且可以支持 10PB 以上的超大数据集。

2024-11-23 17:18:29 1238

原创 CompletableFuture、CountDownLatch、Fork/Join实现多任务并行执行

CompletableFuture.supplyAsync() 是 Java 中用于异步执行任务的一种方法。它返回一个CompletableFuture 对象,该对象表示一个异步计算的结果。supplyAsync() 方法接受一个 Supplier 函数式接口作为参数,该接口表示一个无参数、有返回值的函数。②线程池的定义要注意,核心线程太小的话,会在核心线程用完时,进入队列等待。第一个方法使用默认的 ForkJoinPool.commonPool() 作为执行器。6个任务总用时:25029毫秒。

2024-11-08 12:30:26 390

原创 有关系表之间的数据同步

在统计完,视图与新表之间的数据的增加、删除、修改的数据,组装成sql,存入另一张表(类似于mysql的binlog日志),定时执行这些变更日志,即可完成数据同步。视图与D表之间的数据变化是包括了,增加的、删除的、更改的,于是问题变成,寻找视图与新表之间的数据哪些是新增了,哪些删除了,哪些修改了。ABC关联创建D表的同时也可同步创建一张视图,那么ABC数据变化时,视图数据会随之化,那么问题转移为视图与D表之间的数据变化对比。要实现原表(A,B,C)的数据变化同步让D表业随之变化,显然直接是不可能实现。

2024-10-30 12:27:21 340

原创 函数式接口与回调函数实践

函数式接口与回调函数

2024-10-29 17:40:36 483

原创 设计模式之责任链模式

设计模式之责任链模式

2024-10-18 21:53:29 511

原创 SaaS化多租户实现的两种方法

mybatis-flex 多数据源动态切换

2024-09-13 23:05:53 1005

原创 单点登录:cas单点登录实现原理浅析

CAS Server 和 CAS Client。CAS-Server 需要独立部署,主要负责对用户的认证工作;CAS-Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS ServerSSO单点登录访问流程步骤:访问服务:SSO客户端发送请求访问应用系统提供的服务资源。定向认证:SSO客户端会重定向用户请求到SSO服务器。用户认证:用户身份认证。发放票据:SSO服务器会产生一个随机的Service Ticket。

2024-09-07 19:20:42 887

原创 Spring Event如何优雅实现系统业务解耦

Spring事件(Spring Event)是Spring框架的一项功能,它允许不同组件之间通过发布-订阅机制进行解耦的通信。在Spring中,事件是表示应用程序中特定事件的对象,例如用户注册、订单创建、数据更新等。当这些事件发生时,可以通知其他组件来执行相应的操作。事件是一个普通的POJO类,用于封装与应用程序状态变化相关的信息。通常情况下,事件类继承自ApplicationEvent抽象类,Spring中提供了一些内置的事件,也可以自定义事件。事件发布者是一个接口,用于发布事件。

2024-06-09 00:15:12 983 1

原创 docker学习笔记

docker之西行取经

2024-05-19 22:31:07 472

原创 fastdfs安装

一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。拷贝 /usr/local/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf 到 /etc/fdfs/目录下。将/usr/local/fastdfs/FastDFS/client里面的libfdfsclient.so拷贝到/usr/lib cd。注意这里的配置的是跟踪器的ip端口,我安装在同一台上,就配置自己的ip。

2024-05-03 17:07:23 1034 5

原创 递归的层序遍历&&dfs深度遍历

递归的层序遍历

2024-04-26 22:41:43 317 2

原创 ArrayBlockingQueue与LinkedBlockingQueue底层原理

ArrayBlockingQueue是一个阻塞的队列,继承了AbstractBlockingQueue,间接的实现了Queue接口和Collection接口。底层以数组的形式保存数据,所以它是基于数组的阻塞队列。ArrayBlockingQueue是有边界值的,在创建ArrayBlockingQueue时就要确定好该队列的大小,一旦创建,该队列大小不可更改。内部的全局锁是使用的。方法做法put如果队列满了,就阻塞,当队列不满的时候,会再执行入队操作offer如果队列满了,返回false。

2024-03-15 22:29:28 742

原创 ThreadLocal基本原理

ThreadLocal是java中所提供的线程本地存储机制,可以利用改机制将数据缓存在线程内部,该线程可以在任意时刻、任意方法中获取数据。

2024-03-14 22:43:11 569

原创 sentinel整合nacos在gateway中实现限流

OverrideR error = R.error(500, "限流啦 别在试啦");});

2024-02-24 16:10:01 1726

原创 spring整合mybatis的底层原理

spring整合mybatis的底层原理

2024-01-27 22:23:10 1433

原创 依赖注入实现原理

依赖注入

2024-01-03 15:18:47 1095

原创 并发控制工具类CountDownLatch、CyclicBarrier、Semaphore

让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒,CountDownLatch主要有2个方法,当一个或多个线程调用await方法时,调用线程会被阻塞,其他线程调用countDown方法时计数器减一(调用countDown方法不会阻塞线程),当计数器的值变为0时,因为调用方法被阻塞的线程会被唤醒,继续执行。N个线程相互等待,任何一个线程没有到达或完成时,所有的线程都必须互相等待。(信号量)可以用来限制能同时访问共享资源的线程上限,它内部维护了一个许可的变量,也就是线程许可的数量。1 收集到:1颗龙珠。

2023-12-22 23:13:37 561

原创 java常见的锁的类型

每个线程在获取锁时会先查看此锁维护的等待队列,如果为空或当前线程是等待队列的第一个,就占有锁,否则就加入到等待队列中,以后会FIFO的规则来从队列获取锁ReentrantLock的创建可以指定构造函数的boolean类型来指定得到公平锁或非公平锁,如果不写默认是false-非公平锁。读写锁的内部包含两把锁:一把是读(操作)锁,是一种共享锁;指的是同一线程外层函数获得锁之后,内层递归函数仍然能获取该锁的代码,在同一个线程在外层方法获取锁的时候,在内层方法会自动获取锁。非公平锁吞吐量比较大。

2023-12-22 22:51:17 732

原创 常见数据结构浅析

往一个容器添加元素时,不直接往Object[]添加,而是先将当前容器Object[]进行copy 复制出一个新得容器,Object[] newElements,然后往新的容器newElements里添加元素,添加完元素后再将原容器的引用指向新得容器setArray(newElements)。这样做的好处是可以对CopyOnWrite容器进行并发读,而不需要加锁,因为当前容器不添加任何元素。把原数组的第index+1后面的数据复制到原数组的index位置复制长度为size - index - 1。

2023-12-22 16:21:29 522

原创 CAS原理浅析

CAS 比较并交换 compareAndSwap。CAS是一种乐观锁机制,也被称为无锁机制。全称:它是并发编程中的一种原子操作,通常用于多线程环境下实现同步和线程安全。CAS操作通过比较内存中的值与期望值是否相等来确定是否执行交换操作。如果相等,则执行交换操作,否则不执行。由于CAS是一种无锁机制,因此它避免了使用传统锁所带来的性能开销和死锁问题,提高了程序的并发性能。

2023-12-22 14:41:23 452

原创 4种常见的限流算法

当有请求到来时,会尝试从桶中移除一个令牌,如果桶中有足够的令牌,则请求可以被处理或数据包可以被发送;由于漏桶算法以固定的速率处理请求,可以有效地平滑和整形流量,避免流量的突发和波动(类似于消息队列的削峰填谷的作用)。桶中的令牌数不能超过桶的容量,如果新生成的令牌超过了桶的容量,那么新的令牌会被丢弃。例如:限流是每秒3个,在第一毫秒发送了3个请求,达到限流,窗口剩余时间的请求都将会被拒绝,体验不好。在一个固定长度的时间窗口内限制请求数量,每来一个请求,请求次数加一,如果请求数量超过最大限制,就拒绝该请求。

2023-12-07 20:20:04 847

原创 mybatis的一级缓存和二级缓存

是在原来的Executor上做了一个装饰,引入一个装饰器叫CachingExecutor,所以进入以及缓存查询前会先去查二级缓存(如果开了二级缓存),开启二级缓存会被多个SqlSession 共享,他是一个全局得缓存。一级缓存:每个SqlSession都会有一个Executor,每个Executor都会持有一个LocalCache得对象,当发起查询的时候会先去LocalCache中去查询,如果命中就直接返回,没命中就去数据库查。跨SqlSession的缓存,以及缓存是无法做到的,所以引入了二级缓存。

2023-12-03 18:49:05 515

原创 网络通信与TCP.IP协议

在TCP协议中,通信双方将通过三次TCP报文实现对以上信息的了解,并在此基础上建立一个TCP连接,而通信双方的三次TCP报文段的交换过程,也就是通常所说的TCP连接建立实现的三次握手(Three-WayHandshake)过程。2次的话客户端收到了服务端的SYN号(同步序列编号(Synchronize Sequence Numbers)),服务端无法确认客户端是否收到自己的同步序列编号。HTTP 协议是基于应用层的协议,并且在传输层使用的 TCP的可靠性通信协议。表示资源的地点(互联网上所处的位置)。

2023-11-29 21:51:29 693

原创 spring循环依赖

●earlySingletonObjects比singletonObjects多了一个early,表示缓存的是早期的bean对象。● singletonFactories中缓存的是ObjectFactory,表示对象工厂,表示用来创建早期bean对象的工厂。● singletonObjects中缓存的是已经经历了完整生命周期的bean对象。Bean的生命周期指的就是:在Spring中,Bean是如何生成的?这里不会对Bean的生命周期进行详细的描述,只描述一下大概的过程。三级缓存是通用的叫法。

2023-11-26 11:15:14 545

原创 Bean的创建过程源码

依赖注入后,Spring会判断该对象是否实现了BeanNameAware接口、BeanClassLoaderAware接口、BeanFactoryAware接口,如果实现了,就表示当前对象必须实现该接口中所定义的setBeanName()、setBeanClassLoader()、setBeanFactory()方法,那Spring就会调用这些方法并传入相应的参数(Aware回调)利用该类的构造方法来实例化得到一个对象(但是如何一个类中有多个构造方法,Spring则会进行选择,这个叫做推断构造方法)

2023-11-26 10:54:21 771

原创 RocketMQ学习笔记

rocketMQ的学习笔记

2023-10-11 23:05:08 1503

原创 POI下载excel通用方法

最近遇到一个业务是需要下载excel,使用POI,这里记录一下实现过程。

2023-07-09 18:43:28 2371

原创 redis与分布式锁浅谈

背景:最近遇到一个生产问题,分布式部署了十几条服务器,有个业务过期的定时任务会每天发邮件提醒用户,然而用户最近反馈,每天收到好几封提醒邮件,于是排查多发的原因。指查询一个一定不存在的数据,由于缓存是不命中,将去查询数据库,但是数据库也无此记录,我们没有将这次查询的null写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。加锁大量并发只让一个去查,其他人等待,查到以后释放锁,其他人获取到锁,先查缓存,就会有数据,不用去db。设置锁的自动过期,即使没有删除,会自动删除。

2023-06-08 22:46:21 1883

原创 zookeeper的安装使用

①修改一、dataDir=/usr/local/zookeeper/apache-zookeeper-3.8.0-bin/zkData。启动:在/usr/local/zookeeper/apache-zookeeper-3.8.0-bin/bin目录下执行。查看:在/usr/local/zookeeper/apache-zookeeper-3.8.0-bin/bin目录下执行。在/usr/local/zookeeper/apache-zookeeper-3.8.0-bin/zkData创建。

2023-05-22 22:57:49 2687

原创 cassandra学习笔记

cassandra学习笔记

2023-05-15 21:23:00 1468

原创 openLdap2.4.44的安装部署

openldap的安装卸载集群权限等百科全书

2023-04-18 22:57:57 1235

原创 elasticsearch 7.9.3知识归纳整理(六)之 kibana图形化操作es指南

kibana图形化操作es指南

2023-01-05 21:25:31 2410

原创 elasticsearch 7.9.3知识归纳整理(五)之 es的索引生命周期管理

es的索引生命周期管理

2023-01-05 21:11:40 7349 3

原创 elasticsearch 7.9.3知识归纳整理(四)之 java实现深分页scroll

java实现深分页scroll

2023-01-04 22:55:51 1510

原创 elasticsearch 7.9.3知识归纳整理(三)之 java实战操作es(rest-high-level)

java实战操作es

2023-01-03 22:38:41 3922

空空如也

空空如也

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

TA关注的人

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