自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 Hive sql

那么cluster by就是多了一个分组的功能,但是分组和排序的字段只能是1个,而且只能是升序排序。关于相关子查询,其实是这样的,会先执行select A from t1这个操作,也就是先执行父查询这个操作,然后会逐个的到子查询的集合中去检查是否存在这个父查询的数据,如果子查询的集合中存在我这个父查询的条件,那么我就返回这行数据。NTILE函数的作用就体现在这里。但是其实这也是他的局限性,如果我分组和排序的字段不是同一个字段,那么cluster by就无法处理了,而且局限性还有一个,那就是只能是升序排序。

2024-03-20 20:55:39 749 5

原创 Hadoop

namenode是知道所有文件的块列表以及块列表的位置的,比如这个文件有3个块 1,2,3,分别在datanode1 datanode2 datanode3的位置上。当datanode启动的时候,会告诉namenode,说:“大哥,我启动了”,然后将自己负责的文件的块列表,也就是自己管理了哪些文件的哪些块汇报给namenode节点。当datanode关闭的时候,对全局不会有影响的,namenode会将关闭的datanode所管理的文件的块部分都进行副本复制,交给其他的datanode去管理。

2024-02-19 14:17:25 1796 1

原创 Spring面经

还是要创建一个目标类,然后实现公共接口的所有方法,通过Proxy.newProxyInstance(目标类的类加载器,目标类的共同接口,实现调用处理器InvocationHandler这个接口的类)这个方法去动态生成代理类。2.CGLIB动态代理:CGLIB动态代理底层有一个又小又快的字节码处理框架ASM,可以更高效率的生成代理类,以继承的方式去实现代理类,也就是代理类继承目标类,通过对于方法的重写实现增强效果。也就是说我如果想改变值的话,我得去改变代码,那么硬编码的方式相对来说就没有那么的灵活。

2023-09-23 09:58:48 160 1

原创 仿B站项目

我自己花钱买的项目,如果涉及到侵权的话,联系我即可,微信号DankedemimiRESTful接口:RESTful 接口:Representational State Transfer,中文为表述性状态转移,REST指的是一组架构约束条件和原则。RESTful表述的是资源的状态性转移,在Web中资源就是URI(Uniform Resource Identifier)。HTTP方法的语义:GET 获取指定的资源DELETE

2023-08-18 07:42:45 347 1

原创 Redis面经

逻辑过期与互斥锁的区别就是,在存入热点key的时候会规定一个时限,但不是TTL那种自动清除的时限,当一个线程发现缓存里面的数据已经过期了,他就会对数据上锁,然后单独开一个线程去数据库里面读取数据然后写入缓存中,在这个过程中如果有线程尝试读取redis中的数据并且发现已经过期的时候,他也会尝试去数据库读取数据,但是在获取锁的时候会获取失败,就会自动明白,已经有线程正在为我进行数据更新,这个时候这个线程会选择先将旧的数据从redis中读取走,就不用像互斥锁一样,一直让大量的线程处于休眠等待状态。

2023-08-08 09:07:45 213

原创 Java Virtual Machine

在这个过程中,JVM会检查Eden区和Survivor From区中的对象,清理掉不再被引用的对象(也就是说没有在栈中被用过的对象),对于仍然存活的对象(也就是说被栈中引用过的对象)会根据年龄来决定他们的去向,如果年龄(经历Minor GC的次数)已经超过了15这个默认的阈值,那么就直接移动到老年代中,如果年龄没超过阈值,那么就复制到Survivor To中,并且给对象的年龄加1。Tomcat中的情况:一个web应用有自己独立的类加载器,可以加载各自web应用中的类,包括那些已经被系统类加载器加载过的类。

2023-06-21 17:47:40 401 1

原创 JUC详解

什么是JUC?JUC其实就是JDK中的三个包:java.util.concurrent 并发相关的java.util.concurrent.atomic 原子性java.util.concurrent.locks lock锁Runnable 没有返回值,效率相比Callable相对较低。进程:一个程序,QQ,Music.exe 程序的集合 ;一个进程可以包含多个线程,至少包含一个。Java默认有几个线程? 2个 main线程和GC线程(做垃圾回收)Java可以开启

2023-06-12 02:26:55 9453

原创 SpringBoot中的Web服务

建一个新的包叫 handler,里面的各种handler可以随意起名字,然后注意在开头要加上@ControllerAdvice注解(这个注解里面,没有@ResponseBody,所以他返回视图,要是加@RestControllerAdvice注解,那么里面其实就是有@ReponseBody的了,所以返回的是JSON格式的数据)。最重要的是后端的代码,后端的数据可以封装到一个类中(比如User,Student或别的什么的),然后打包将这个对象转换为JSON格式,里面的各个属性的赋值也就变成了一个个的数据。

2023-06-01 02:05:20 617

原创 MySQL面试题汇总

所以自然会选择走索引。高版本的MySQL,基本上非叶子节点都是在MySQL初始化的时候,已经存入到内存中了,真正在查找某个索引元素的时候,就是在内存中直接定位到一个叶子节点在磁盘中的位置(该叶子节点的磁盘文件地址),查找到了之后,直接将叶子节点加载到内存中,找到我们要查找的那个索引就可以了,然后对照着索引,从磁盘文件中获得该索引的data,也就是整个过程中,我们只做了一次磁盘的IO操作,这个效率可以说是非常高了。分裂的原因是,每个节点能够存储的索引数量是固定的,是有上限的,如果超过了上限那么节点就会分裂。

2023-04-28 05:17:29 225

原创 SpringBoot基本使用操作+访问数据库(以JdbcTemplate形式和MyBatis形式)

如果既有properties和yml,那么我想取得一个属性值,如果properties里面没有,那我就会从yml里面找,所以有可能我取得的一些数据有一部分是来自properties,有一部分是来自yml的。使用ImportResource导入外部的文件到我们当前的SpringBoot中,当我们的一个类放置到XML文件中,但是想在SpringBoot项目中用,就可以利用这种方式。软件工程中的脚手架指的是用来快速搭建一个小的可用的应用程序的骨架,将开发过程中要用到的工具,环境都配置好,同时生成必要的模板代码。

2023-04-21 01:31:11 2460

原创 SpringBoot3新特性

是一个数字载体,一个比较快捷的方式。由于Record没有get或者set方法,也就代表着在初始化阶段的时候,该类的各个属性就已经被确定下来了,并且是不会发生改变的。同样也是可以在Record类中写实例方法和静态方法的。Record中也可以添加构造方法:分别有:紧凑型,规范型和定制构造方法。紧凑型构造方法没有任何参数,甚至没有括号。规范型构造方法以所有成员为参数。定制构造方法自定义参数个数。主要用的多的还是全参的构造方法,规范型构造方法。

2023-04-12 04:54:13 440 3

原创 计算机网络通信协议与模型的解析与汇总

首先,MTU指的是一个网络包的最大长度,如果一个IP层有一个超过MTU大小的数据,那么这个数据就要被分成若干片小于MTU的片,然后再发送,这些若干片到了目标主机的IP层之后再进行重新组装,但是如果这其中有一个小分片在网络传输的过程中丢失了,目标主机发现传输过来的数据是不完全的就不会发送ACK给我们,这个时候由于IP层没有超时重传机制,而TCP层有超时重传机制,这时候TCP发现超时了,那么就会把所有的TCP头部+数据全部发送一遍,而这样效率是很低的。直到有一方想要中断连接的时候才会中断。

2023-04-08 04:38:16 383 3

原创 操作系统基础知识概括

而且最重要的是,一级页表完成了对于所有虚拟地址的覆盖,而至于一级页表中没有用到的页表项,也就不需要产生对应的二级页表,如果有需要的时候再创建对应的二级页表完成映射即可。当CPU在收到一个Load M指令后,会去找对应的页表中的位置,如果发现页表中的位置是无效的时候,就会发送给操作系统发出一个缺页中断请求,让操作系统执行缺页中断异常,向磁盘中查找有没有对应的页面位置,如果有,就将页面换入到空闲的物理内存当中,前提是也要查找一个物理内存中是否有空闲页,有的情况下找到空闲页,然后在换入到物理内存中。

2023-03-26 23:48:53 171 4

原创 Java多线程并发

Java多线程并发的原理和使用

2023-03-25 05:03:40 307 3

原创 Java中的集合继承结构以及List的常用方法

tains方法,这个方法的底层调用了equals方法,由于这时候的User没有重写equals方法,没有重写equals方法的时候,默认继承的Object类中的equals方法,所以比较的是地址。Properties:继承了HashTable,所以也是线程安全的,但是里面存元素的要求是,键值对中的key和value都必须是String类型的,不支持其他类型。Vector:底层是使用的数组这种数据结构,和ArrayList不同的地方是,Vector是线程安全的,但是这同时也代表着效率较低,所以使用的不多。

2023-03-12 07:57:12 374 1

原创 哈希表——Java集合中的HashSet,TreeSet,HashMap等使用方法及特点

Java集合中常用到的有关于哈希表的知识,设计HashSet,HashMap,TreeSet等使用方法以及他们之间的相同点和不同点,还有关于他们的底层逻辑。

2023-03-08 08:08:34 493 1

原创 Java中IO流的概述以及应用

java中IO流的内容和各种流的使用方法。

2023-02-24 21:56:49 206

原创 关于Java中多线程并发的可见性和Lock

每一个线程的栈内存都是独立的,而我们设置的flag是存储在堆内存当中的,当线程要操作堆内存当中的资源时,需要将其复制到栈内存中进行操作,然后将执行的结果再赋给堆内存中的资源。但是这样的通信是不及时的,也可能永远都不会更新,可能会出现多个线程操作同一个堆内存当中的资源时,其中一个线程对资源进行修改之后,其他线程不知道的情况。此时的代码出现了一个问题,就是在第一个拿到锁使用权的线程抛出错误后,中断了程序,从而导致锁一直被锁着,没有进行解锁的操作,导致其他的线程都没有任何办法进行对资源的操作。

2022-08-20 20:52:29 225

原创 使用线程的场景—线程并发安全的产生原因以及解决办法

关于多线程开发的线程安全问题

2022-07-28 19:32:19 181 2

原创 对象的构造方法以及单例模式

以一个User类来进行举例,说明对象的不同创造方法。格式:以类名作为方法的名字。每一个类都具有一个隐藏的空参数构造方法,在显式的写了构造方法之后会被覆盖掉。构造方法是:创建对象时调用的(对于每个对象,构造方法只能执行一次)构造方法也可以自己添加参数,在创建对象的时候直接将参数进行初始化。可以通过set,get,is等方法进行初始化。如:public class User { private String name; private int age; priv

2022-05-31 14:24:46 202 2

空空如也

空空如也

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

TA关注的人

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