- 博客(51)
- 收藏
- 关注
原创 Doris-窗口函数-LEAD()
记录第二天的收盘价与当天价格的走势,即第二天收盘价比当天高还是低,并按照时间升序排列。1. expr:与后续行进行比较,一般为表中字段,也可以定义无效值,代表整行数据。lead()方法用于描述当前行与向后数一行或多行的关系。3. default:当前行为最后一行时的默认值。2. offset:从当前行向后多少行。lead()方法共有三个参数。
2024-03-15 09:55:07
765
原创 Doris-join实现
Doris 支持两种 join的物理算子,分别是Hash join 和Nest Loop joinHash Join:Hash Join是一种基于哈希表的Join算法。在执行Hash Join时,Doris会在右表上根据等值Join列建立哈希表。随后,左表的数据会流式地利用这个哈希表进行Join计算。这种方式的优点是处理速度快,尤其适用于等值Join的场景。Hash Join的限制在于它只能用于等值Join,对于不等值Join或复杂Join条件可能不适用。
2024-03-12 11:24:55
631
原创 Doris-前缀索引
Doris索引:用于快速过滤或查找数据Doris支持的两类索引:内建的智能索引,包括前缀索引和ZoneMap索引用户创建的二级索引,包括Bloom Filter索引和Bitmap倒排索引前缀索引:在排序的基础上,实现一种根据给定前缀列,快速查询数据的索引方式,Doris会将一行数据的前36个字节作为这行数据的前缀索引,那么在判断索引时,会从该行数据的第一个字段开始向后累加字段所占的字节数,直到36,但是遇到varchar类型前缀索引会直接截断。
2024-03-11 14:26:14
819
原创 Doris-数据分区
支持BOOLEAN,TINYINT,SMALLINT,INT,BIGINT,LARGEINT.,CHAR...多种数据类型,当分区值为枚举值,只有当数据为目标分区枚举值其中之一时,才可以命中分区。Attention:分区的上界,前闭后开,当分区创建完成后,某个分区再被删除时,其他分区的范围并不受影响(分区空洞),但分区空洞可以通过创建新的分区进行补充。PARTITION “分区名” VALUES IN ((“枚举值”,”枚举值”),(”枚举值”,”枚举值”))
2024-03-08 14:40:12
1820
原创 数据仓库分层
注意:数仓分层的方式并不是固定的,可以根据业务场景灵活设计。例如可以在DWD层后插入DWM(数据中间层,可以作为DWD和DWS之间的过渡层,对数据进行进一步的加工和整合)并去除DWT。如果不使用分层架构,那么系统操作的数据都是原始数据,基于这样数据源编写的SQL语句会复杂庞大,且在发生错误的时候不易定位源头。数据集市是一种微型的数据仓库,存储的数据、主题、历史数据都更少一些,常在部门级进行使用。通过数据分层,可以对中间层数据进行规范,能够减少大量的重复计算,增加结果的复用性。解耦真实数据和计算数据。
2024-03-07 10:49:41
328
原创 Java垃圾收集机制
Java中的垃圾收集器(Garbage Collector)负责管理堆内存中的对象,回收不再使用的对象以释放内存空间。标记-整理算法适用于老年代,而在年轻代通常采用其他垃圾回收算法,如标记-复制算法或其他更适合的算法。标记-整理算法通常与年轻代的标记-复制算法或其他算法配合使用,以实现整个堆的高效垃圾回收。
2023-09-13 16:28:14
1181
原创 基于分布式系统结构下Nacos配置中心的应用
在上一篇nacos初始中,已经描述过Nacos的基本知识,在这篇博客里记录的是Nacos配置中心的使用。
2023-09-12 23:14:52
341
原创 初识Nacos
Nacos是一个用于微服务架构下的服务发现和配置管理以及服务管理的综合解决方案(官网介绍),这里的服务发现其实就是注册中心,配置管理就是配置中心,而服务管理是二者的综合;关于Nacos的基础配置知识就聊到这里啦,后续还会发怎么应用到分布式系统中,加油(ง •_•)ง。
2023-09-10 22:15:09
488
1
原创 基于Sentinel的微服务保护
Sentinel是Alibaba开源的一款微服务流控组件,用于解决分布式应用场景下服务的稳定性问题。Sentinel具有丰富的应用场景,它基于流量提供一系列的服务保护措施,例如多线程秒杀情况下的系统承载,并发访问下的流量控制,实时熔断等。在分布式应用架构中,服务间的关系错综复杂,一个服务往往依赖多个其他服务,如果其中一个服务发生了故障,那么依赖于当前服务的服务也会被阻塞,以此类推下去,就算其他服务没有直接的依赖于故障服务,也会受到影响,最终导致雪崩,因此雪崩问题是指。
2023-09-10 16:33:19
732
原创 基于Dubbo实现服务的远程调用
Dubbo是基于Java的RPC分布式服务框架,主要用于提高性能和实现透明化的RPC远程服务调用以及SOA服务治理方案。简单来说,Dubbo就是一个用于分布式场景下实现远程调用的服务框架,当然Dubbo不只这个一个功能,这只是其中之一,它的核心模块还包括集群容错和自动发现等。
2023-09-08 19:29:43
1059
原创 Redis的数据持久化方案
Redis是一个内存型数据库,也就是说如果不将内存中的数据保存到磁盘,那么服务器进程一旦退出,服务器中的数据也会随之消失,因此redis提供了两种方式供我们进行数据持久化操作。RDB方式:该方式关注数据本身,它将当前数据进行保存,类似于快照,用于存储数据结果,存储格式简单AOF方式:该方式关注数据的操作过程,它将数据的操作过程以日志的形式进行保存,实现数据持久化在指定的时间间隔内,将内存中的数据集快照写入磁盘,恢复时将快照文件直接读到内存中RDB快照有两种方式,即手动和自动,下文依次介绍。
2023-09-08 10:33:11
498
原创 Redis初识
由于关系型数据库本身存在性能瓶颈和扩展困难的问题,导致系统在面对高并发访问时越来越力不从心。这个时候,出现了一种全新的数据库设计理念,也就是使用非关系型数据库,仅存储数据,不存储关系。下文将详细介绍一种非关系型数据库:RedisRedis(REmote DIctionary Server)是一款用C语言开发的一个开源高性能键值对(key-value)数据库。该数据库内部采用单线程机制进行工作且在该中线程机制下依然能保持良好的性能,官方提供测试数据表示50个并发下,执行100000 个请求,读的速度是1100
2023-09-07 19:30:40
618
原创 Error:Java:无效的源发行版:14
问题描述:项目拉下来,跑的时候发现版本有问题。这个问题可好解决了,只需要看下面几个方面,然后让他们保持一致就OK了。如果这里的版本和step1中不一致,就把不一样的改成一样的,从项目的pom.xml文件里改,然后重新下载依赖就好了。step1:查看本地的jdk版本。step3:查看项目中模块的版本。就可以查看到本地的jdk版本。打开cmd窗口,输入命令。step2:查看项目版本。
2023-09-01 19:01:15
2623
2
原创 Spring如何解决循环依赖
循环依赖也叫循环引用,是指bean之间形成相互依赖的关系,由此,bean对象在属性注入时便会产生循环。这种循环依赖会导致编译器无法编译代码,从而无法运行程序。为了避免循环依赖,我们在开发过程中需要避免类之间的过度耦合,使用接口和抽象类来降低类之间的依赖性,同时避免在类的构造函数中创建依赖的对象。循环依赖如下图所示:我们把这个流程放到Bean的生命周期中去看一下当然这种依赖不仅仅在两个bean对象中产生,也可能会发生在一个或多个bean对象中。
2023-08-28 21:56:02
344
2
原创 Shiro认证框架
shiro是apache下一个开源框架,它将软件系统的安全认证功能抽离出来,组成一个通用的安全认证框架,其功能主要有身份认证,授权鉴权,会话管理等功能。
2023-08-28 00:37:47
470
原创 用户、权限和Vim编辑器
使用命令进入vim编辑器时,处于一般模式,按A,a,I,i,O,o进入编辑模式,编辑结束,使用Esc键回到一般模式。命令:chown 用户名 :组名 文件名(但上述命令用于目录时,目录中文件并不会发生改变,因此这样修改之后,内部文件无法使用。对于上面名为ming.txt的文件,它的权限是所属人可读可写,所属组仅可读,其他人仅可读。命令:chown -R 用户名 :组名 文件名(递归执行,目录中所有文件全部改变)超级管理员:可以登录,拥有所有权限,用户Id为0。命令格式:chmod 权限 文件名。
2023-08-24 10:53:17
199
1
原创 Linux基础命令2
(8)删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即danginglnk,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。(15)删除或添加一个硬链接文件并不影响其他有相同inode号的文件,只是减少或增加链接计数,当链接计数为0,系统将彻底删除该文件。例如:ln -s haha.txt lshaha.txt(创建一个haha.txt文件的链接文件,该文件名为lshaha.txt)(2)软链接有着自己的inode号(文件编号);
2023-08-23 23:33:26
426
原创 Linux基础命令
若需要从etc目录回到家目录 使用cd ../root,其中..表示从当前目录回到上一级目录,即etc的上一级,为根目录,再进入/root目录。例如:tar -cf 文件夹1 aa.txt bb.txt dir1(将文件aa.txt,bb.txt以及目录dir1打包到文件夹1中)注意 mkdir aa/bb/cc/dd(如果不加命令选项 默认在aa下的bb下的cc中创建目录dd,前面路径找不到,会报错)mv aa.txt bb.txt(将文件名为aa.txt 的文件名修改为bb)
2023-08-22 16:44:25
117
原创 git拉取项目及提交本地代码到远程仓库
需要注意,在这个案例中,只有我一个人使用该项目进行提价,因此在提交前并没有进行更新的操作,所谓更新就是在提交本地仓库的代码到远程仓库前再一次获取服务器中代码的操作。实际的生产环境中,一定有多人同时开发项目,因此你并不能确定你提交代码前是否有别人已经提交过,如果别人提交过,那么你本地的代码与服务器中代码的差异,就不仅仅是你新操作的部分,还有别人操作的部分。在提交至远程仓库前,需要将本地仓库中的内容进行更新,此时再获取远程仓库中的代码使用的并不是Clone命令,而是Pull命令。然后,提交至本地仓库,
2023-08-20 14:49:59
1956
原创 级联/嵌套查询
在真实业务背景中的系统中,对于用户的认证、授权以及鉴权的问题,通常不只依靠一张用户表来完成。一般还涉及用户角色表,用户-角色关系表,权限表,以及角色-权限关系表。此时查询数据库,除了使用关联查询还有一种方式,级联查询,也是这篇博客的主题。级联查询也叫嵌套查询,在sql中,一个SELECT-FROM-WHERE语句成为一个查询语句块,那么将一个语句块嵌套在另一个语句块的WHERE字句的条件中的查询称为嵌套查询,下文将通过上述讲述的五表案例来具体描述。
2023-08-19 22:44:07
823
原创 一些异常情况
可以先看一下是不是有其他模块在测试,没有关掉。如果有关掉再试一下,应该就好了。如果没有,考虑用命令提示符用命令把占用端口的进程关掉,之后再重启服务。因为没有给id给值,真的是写修改写多了,构造方法老不加id,够够的。idea右上角可以查看最近跑的模块,挨个检查一下,再重启服务。如果到这里还是有问题,我试了重启电脑,然后好了。空指针太常见了,分一下1,2,3,以后肯定还能遇到。或者在这里加@MapperScan。在这里加@Mapper。
2023-08-19 21:39:07
215
原创 Synchronize底层实现原理
Synchronized是Java用于保存线程安全的一个关键字,对于它的使用在之前已经描述过,这里不再赘述。这里主要描述它底层的工作原理以及实现流程。一段被Synchronized关键字修饰的代码进行反编译后,会发现两个指令,分别是monitorenter和monitorexit。这两个指令包裹的临界区代码表示同步。
2023-08-19 21:19:14
105
原创 LeetCode题目
1.获取数组中的主要元素2.移动0元素至数组末尾3.求两个整数数组的交集4.计算X的算数平方根5.找出只出现1次的数字6.查找数组中的多数元素7.计算Excel表列序号8.种花问题9.找出字符串中的最大值10.移除元素
2023-08-13 22:04:10
292
原创 线程池分类
线程池的分类其实是介绍如何创建不同特点线程池,利用某一特点来应对不同的生产环境,因此下文主要介绍的也是每个方法的参数、特点,以及适用场景。对于创建具体使用到的方法都被Java标准库封装到Executors工具类中。
2023-07-21 16:28:07
291
1
原创 AES算法加密的工作模式(ECB和CBC)
填充模式是指对于明文字节内容的填充,由于AES算法是一个分组加密算法,对于明文内容会按照指定的大小进行分组,但是,明文的长度并不一定刚好是指定大小的整数倍,那么对于最后一个分组,就需要进行数据填充,将分组填充至指定大小。(3) CBC模式的加密流程前两步是一样,但前文提到过,CBC模式需要一个动态参数来提高安全性,因此在第3步需要生成一个16字节的动态随机数IV。解密流程与加密流程大致相同,依然需要创建Cipher对象,密钥对象,不同的是在初始化密钥匙,需要将模式设置为解密模式。(5)解密并返回结果。
2023-07-20 18:43:19
1806
原创 CopyOnWriteArrayList核心源码阅读
对于CopyOnWriteArrayList,该集合的特点十分明确,它能够保证线程在高并发读取下的写安全,且不需要对数组进行扩容,这是因为其对数组的操作基于复制数组。但这样的复制机制也使得其对数组的操作变得繁琐。其次由于集合不对读操作上锁,故不能保证读取操作的实时一致性。
2023-07-19 20:35:46
452
2
原创 ReentrantLock和Synchronized的区别
ReentrantLock和Synchronized都是保证线程安全的方式,文章记录了二者在使用方式,类型,获取方式等方面的区别。在多线程的执行过程中,会出现多个线程同时访问一个资源的情况。假如有线程A,线程B和资源1,当线程A访问资源1做自增1的操作,线程B访问资源1做自减1的操作。按照串行执行的顺序,应当线程A++后,由线程B--。但线程并发执行时,如果线程A在访问资源1的同线程B也访问了资源B,二者读取到的都是原始的资源,在操作结束后,结果可能会出现偏差。
2023-07-17 21:55:00
122
原创 线程的实现方式
此时,创建出来的仅是一个线程对象,如果需要该线程执行线程任务,就需要执行start()方法启动线程,此时start()方法会在新的线程中调用run()执行操作,但不能直接使用run()方法来代替start()方法。另外,线程任务在执行结束后,该线程释放,回到线程池中,后续可以继续使用,线程池不会自动关闭,在程序执行结束后可以通过shutdown()方法手动关闭。Callable接口是一个独立的接口,因此在创建线程对象时,需要先将该接口引用转换为FutureTask对象,该类间接实现了Runnable接口。
2023-07-17 19:53:47
326
2
原创 线程池工作流程
线程池是一种Java创建线程和管理线程的机制,在线程池内部维护了若干线程,当没有线程任务执行时,线程池处于空闲等待状态,当出现新的线程任务,线程池分配线程执行该任务,当任务执行结束该线程重新回到空闲状态。核心线程数是一个线程池维护的最小线程数,未超过核心线程数创建的线程是核心线程,对于一个核心线程,在执行完线程任务后,并不会被线程池销毁,而是处于空闲状态,等待后续分配线程任务。对于一个新创建的线程池,在没有分配线程任务时,线程池中的线程数为0,一旦有新任务,线程池就会创建一个新的线程执行任务,
2023-07-17 19:13:11
537
原创 Java的反射机制
java的反射机制就是一个程序在运行期,能够知晓并获取到本类自身的信息,这些信息包括类中的方法,属性,该类的父类,实现的接口等等。
2023-07-13 21:15:36
54
原创 Hmac算法
在Hmac算法中,使用key代替盐的位置,在使用时,除了原始口令,还需要提供key,但这个key并不由用户提供,而是通过Java库的KeyGenerator生成。在验证时,也需要用到SecretKey,但此时的SecretKey不能由KeyGenerator生成,而需要从密钥字节数组中恢复。在Hash算法中,为了抵御彩虹表攻击,需要对口令加盐存储,而Hmac算法相当于加盐的Hhash算法。(1)Hmac算法总是搭配Hash算法使用。(2)输出与原Hash算法长度一致。
2023-07-10 19:07:43
725
1
原创 Hash算法
该算法是一个第三方类库,不是Java标准库中提供的算法,在使用前需要将jar包添加到类路径下,其次要使用BouncyCastle的RipeMD-160算法,还需要注册BouncyCastle通知对象。彩虹表攻击是指一个预先计算好常用口令hash结果的表,彩虹攻击是说用该表于hash后的结果表对照,就可以获得原始口令。由于hash算法输出的字节长度是固定的,而输入的长度确实无限的,用无限的输入映射有限的输出,就会产生碰撞。再这里需要提到hash碰撞,即两个不同的输入,经过计算后得到了相同的结果。
2023-07-10 18:23:13
3866
1
原创 HashMap的数据结构
HashMap是Map接口的一个实现类,hashMap中,将键和值封装成一个entry对象,其中键唯一,而值可以重复,二者都允许为null,此时存储在该数组下表为0 的位置。
2023-05-20 21:53:28
142
原创 检查字符串中的括号是否匹配
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断该字符串是否有效。有效字符串需满足:a左括号必须用相同类型的右括号闭合。b左括号必须以正确的顺序闭合。比如: "()"、"()[]{}"、"{[]}" 都是有效字符串,而 "(]" 、"([)]" 则不是。
2023-05-05 19:31:56
978
原创 LinkedList源代码阅读
LinkedList类是List接口的一个实现类,底层是通过链表来实现,因此它的随机访问速度是比较差的,但是它的删除,插入操作会很快。它除了可以当做链表来操作外,它还可以当做栈、队列和双端队列来使用。
2023-04-25 23:03:46
65
原创 ArrayList扩容方式
在ArrayLis的内部基于数组实现,它会将集合对象的数据通过数组保存,但由于数组的空间有限,在存储到一定程度的时候,就会出现空间不足的问题,因此需要通过扩容的方式来解决,以便能够持续的使用。
2023-04-25 19:13:33
683
空空如也
mysql sum函数优化
2024-10-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人