自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多态实现的必要条件,实现多态的三个方法,输入一个URL的过程,死锁产生的原理和条件,进程和线程的定义及区别,进程通信的几种方式

进程:是程序运行的实例,拥有独立的资源空间,是系统资源分配和调度的基本单位。线程:是进程内的实体,共享进程资源,是CPU调度的基本单位,负责进程中的具体执行流。进程是包含线程的,每个进程里最少有一个线程进程和进程之间不共享内存空间,同一个进程里的线程共享同一个内存空间进程是系统分配资源的最小单位,进程是系统调度的最小单位。

2024-08-07 23:36:21 954

原创 Spring MVC介绍,注解介绍,Cookie和Session介绍

是Spring框架的一部分,它提供了一个基于MVC(模型-视图-控制器)设计模式的Web应用程序开发框架。通过将应用程序划分为模型、视图和控制器三个核心组件,Spring MVC简化了Web开发过程,提高了代码的可读性、可维护性和可扩展性。它支持灵活的配置和强大的注解功能,能够无缝地与Spring框架的其他部分集成,从而构建高性能、易于测试和维护的Web应用程序。

2024-08-05 09:00:00 878

原创 Spring IoC / DI

BeanFactory和ApplicationContext区别@Autowired和@Resource的区别@Autowired三种注入方式的优缺点。

2024-08-05 09:00:00 651

原创 熟悉简单测试面经

HTTP(超文本传输协议):HTTP是一种应用层协议,用于在万维网上传输超媒体文档(如HTML)。它基于客户端-服务器模型,是互联网上应用最广泛的一种网络协议,用于从WWW服务器传输超文本到本地浏览器的传送协议。HTTPS(超文本传输安全协议):HTTPS是HTTP的安全版本,通过在HTTP下加入SSL/TLS层来提供加密传输、身份认证和数据完整性保护。它广泛用于互联网上安全敏感的通信,如在线购物和网银事务。()UDP(用户数据报协议)

2024-08-04 14:58:58 745

原创 TCP/IP协议(全的一b)应用层,数据链层,传输层,网络层,以及面试题

协议是什么,有什么作用?协议,⽹络协议的简称,⽹络协议是⽹络通信(即⽹络数据传输)经过的所有⽹络设备都必须共同遵从的⼀组约定、规则。如怎么样建⽴连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能 相互通信交流。协议(protocol)最终体现为在⽹络上传输的数据包的格式。网络协议对于实现网络通信的互操作性、标准化、数据封装、路由和寻址、错误检测和恢复、流量控制以及安全性等方面都起着至关重要的作用网络协议为什么要分层。

2024-07-22 08:45:00 1105 7

原创 总结介绍ReentrantLock,对比ReentrantLock和Synchronized的区别

ReentrantLock是Java中的一个可重入锁,它实现了Lock接口,并提供了一种比传统synchronized关键字更强大、更灵活的锁机制。ReentrantLock的实现原理主要基于AQS(AbstractQueuedSynchronizer)和volatileCAS(Compare and Swap)机制。AQS提供了一个FIFO的队列,用于构建锁的基础框架,内部通过原子变量state来表示锁的状态。volatile和CAS则用于保证多线程环境下对共享数据的原子性读写。

2024-07-21 15:30:34 244

原创 多线程总结(持续更新)

全称Compare and Swap,是一种天然原子操作,用于实现多线程环境下的无锁数据结构。CAS操作通过一条CPU指令来同时完成“读取内存、比较是否相等、修改内存”这三个步骤,从而确保这三个步骤不会被其他线程打断或干扰,实现了对共享数据的原子性读写。

2024-07-21 14:53:37 868

原创 TCP协议的相关特性

相比发送一条数据, 收到ACK后发送下一条, 滑动窗口可以一次性发送 N 条数据报,收到 M 条 ACK 的应答后, 窗口向右移动M个位置,并继续发送窗口中没有发送的数据。意思就是这里的包是应用层的数据包,站在传输层的角度上,TCP是一个一个报文发过来,按照序号拍好放到缓冲区,在应用层角度上看到的只是一串连续字符串,因为TCP也没有像UDP一样的"报文长度"的字段,多个应用层数据混淆不清了,所以应用程序读取字节数据,就会读多,或者读少的问题,也就是我们所谓的粘包问题。

2024-07-20 15:34:06 1057

原创 线程池简单介绍

再例如下面的代码线程池中四个线程,然后一共创建100个任务,四个线程随机拿任务。线程池(Thread Pool)是一种多线程处理形式,

2024-07-16 14:04:50 309

原创 单例模式->饿汉模式->懒汉模式->阻塞队列->模拟实现阻塞队列->生产者消费者模型

在包饺子的场景中,如果不用阻塞队列,擀饺子皮的一直擀,但是包饺子的包的很慢,会出现饺子皮摆不下桌子的情况,如果用到阻塞队列,擀的人快,在桌子摆不下的情况就会阻塞等待,直到桌子能摆的下再擀,而包饺子快的情况下,就会等有饺子皮再包。如果在消费后面加上延时而生产后面不加延时,就会出现生产了1000多个才开始消费第一个的情况。如果在生产后加上延时,消费后不加延时,就会出现生产一个消费一个的情况。标准库中阻塞队列BlockingQueue。只需要更改主函数内容。为什么要用阻塞队列?

2024-07-15 09:00:00 945

原创 volatile关键字的作用java

1.内存可见性当一个变量被声明volatile时,它会保证被修改的值被立刻更新到主内存中,不会优化到寄存器或缓存中2.禁止指令重排序针对被volatile修饰的变量的读写相关指令,是不能被重新排序的。

2024-07-13 22:50:35 380

原创 线程安全的原因及解决方法

线程安全问题指的是在多线程编程环境中,由于多个线程共享数据或资源,并且这些线程对共享数据或资源的访问和操作没有正确地同步,导致数据的不一致、脏读、不可重复读、幻读等问题。线程安全问题的出现,通常是因为线程之间的并发执行导致了数据竞争(Race Condition)或者时序问题(Timing Issues)。以上是网上找到的回答,

2024-07-07 17:33:41 848

原创 Java 线程的几种状态

Thread对象创建了,但是还没有调用start,内核中的线程还没创建,因此线程还没有开始执行任务。

2024-06-27 20:31:24 203

原创 请说明Thread类中run和start的区别,从方法的区别,及运行结果的区别分别说明

start() 方法:run() 方法:使用 start() 方法:直接调用 run() 方法:

2024-06-25 20:37:08 444 8

原创 java经典面试题--进程和线程的关系/区别

简单来说进程是独立运行的程序实例,而线程是进程中的执行流,用于实现并发执行

2024-06-20 17:23:11 556 8

原创 Java面试题之MySQL事务详解

事务是什么MySQL事务的四大特性并发事务可能会带来的问题怎么解决并发事务带来的问题

2024-06-17 15:12:56 947 2

原创 MySQL查询练习题1.平均工资2.查询各部门的总薪水3.查询总薪水排名第二的部门4.查询姓名重复的员工信息5.查询各部门薪水大于900的男性员工的平均薪水

子句的主要作用是根据一个或多个列对结果集进行分组,以便对每个分组执行聚合函数(如。这个查询会计算每个部门的平均工资,但只返回那些平均工资超过 50000 的部门。最常见的用法是结合聚合函数对某一列或多列进行分组,并计算每组的聚合值。这个查询会按照员工入职年份对员工进行分组,并计算每年的入职员工数量。列的值进行分组,最后计算每个部门中每个职位的数量。列的值对员工进行分组,并计算每个部门的员工数量。列的值进行分组,然后在每个部门内部再按照。你可以按照多个列的组合进行分组。子句对分组后的结果进行排序。

2024-06-16 12:51:33 415 5

原创 MySQL索引

索引index在 c / java 中也常用于下标的表示,这里谈到的索引更类似于目录在数据库中索引的作用就是为了加快查询速度。

2024-06-16 10:26:22 990

原创 MySQL的基本操作 新建数据库的基本操作、新建表格基本操作、插入数据insert的使用

MySQL的基本操作 新建数据库的基本操作、新建表格基本操作、插入数据insert的使用

2024-05-19 18:48:26 595 12

原创 七大排序之堆排、快排及优化、归并排序

七大排序之堆排、快排及优化、归并排序

2024-05-19 15:11:15 377 5

原创 堆的插入与删除维护大根堆,为什么需要俩个不同的方法(java)

方法的目的是在插入和删除操作后重新调整堆,以确保它仍然满足堆的性质(即父节点的值总是大于或等于其子节点的值,对于大根堆来说)。这两个方法分别处理从底部添加新元素和从顶部删除元素的情况,因此它们的实现方式有所不同。在堆(无论是大根堆还是小根堆)的插入和删除操作中,需要两个不同的方法来维护堆的性质。这是因为插入和删除操作对堆的影响不同,因此维护堆性质的方式也不同。

2024-05-10 21:14:57 182

原创 105. 从前序与中序遍历序列构造二叉树(java)

【代码】105. 从前序与中序遍历序列构造二叉树(java)

2024-05-10 19:58:28 186

原创 232. 用栈实现队列、225. 用队列实现栈

栈(Stack)是一种线性数据结构,其特点是数据的添加、删除是“后进先出”的原则,也就是说,想要弹出一个元素,那么这个元素肯定是最后添加进来的,而第一个添加进去的元素 ,就最后等其他元素被移出才能出栈。想要解决这两个问题,首先先简单复习一下栈和队列。以下就是队列实现栈的所有代码。下面是用链表实现队列的功能。225. 用队列实现栈。232. 用栈实现队列。队列(Queue)相对于栈的最大区别就是,队列是先进先出的数据结构,类似于排队打饭,先到的先得

2024-05-03 13:17:32 434 10

原创 泛型类,泛型方法,泛型接口,泛型的上界

在Java中,泛型(Generics)是一种机制,它允许程序员在定义类、接口和方法时使用类型参数。这些类型参数在实例化时会被实际的类型(如IntegerString等)所替换。泛型提供了编译时的类型检查,增加了代码的可读性和可维护性,并且减少了类型转换时的错误。主要目的是指定当前容器,要持有什么类型的对象,让编译器去检查。

2024-05-01 17:31:30 191 3

原创 java实现简单图书管理系统(附带源码)

java实现简单图书管理系统(附带源码)

2024-04-15 16:12:02 1901 14

原创 继承 多态 向上转型 向下转型

多态是同一个行为具有多个不同表现形式或形态的能力。

2024-04-06 21:20:12 413 10

原创 java类的定义方式和实例化、this引用、对象的构造及其初始化、封装特性、static修饰成员变量、static修饰成员方法

java类的定义方式和实例化、this引用、对象的构造及其初始化、封装特性、static修饰成员变量、static修饰成员方法

2024-03-26 22:43:58 836 11

原创 简单认识Java,数据类型与变量,运算符,程序逻辑控制

JDK是整个Java的核心。包括了Java运行环境JRE(Java Runtime Environment)、Java工具(如javac/java/jdb等)和Java基础的类库(即Java API,包括rt.jar)。JRE是Java程序运行的标准环境。包含了一个JVM(Java虚拟机)和Java核心类库与其所支持的文件。JVM是Java虚拟机。是Java运行时环境。

2024-03-17 22:04:32 845 9

原创 基于动态内存设计的通讯录

【代码】基于动态内存设计的通讯录。

2024-03-10 20:31:47 207 2

原创 动态内存管理、柔性数组

动态内存管理,malloc,free,calloc,realloc,柔性数组

2024-02-06 23:43:05 1293 2

原创 陪你一起复习C语言内存函数

陪你一起复习C语言内存函数,memcpy,memmove,memset,memcmp

2024-02-04 11:32:59 550 1

原创 一起复习字符函数和字符串函数吧

想要学会一个函数怎么使用,最主要的是要会使用查询函数的工具,小编在之前写过一篇,有需要的老铁可以去看看。

2024-02-03 23:59:49 915 1

原创 带你重新学习结构体、联合体、枚举

带你重新学习结构体、联合体、枚举,互三奥

2024-02-01 22:29:26 919 1

原创 带你重新学习指针3

通过前面对指针进行由浅到深的学习后今天再带领各位学习const修饰指针变量和指针笔试题。

2024-01-30 11:41:16 764 2

原创 c语言递归程序题(斐波那契数列递归/非递归,n的k次方递归/非递归,输入一个非负整数,返回组成它的数字之和递归,递归和非递归分别实现求n的阶乘,递归方式实现打印一个整数的每一位)

/规律——除了第一个第二个,其他的数都是通过前面两个数相加得到的结果。需要区分三种情况>0,=0,<0。

2024-01-28 11:15:28 382 2

原创 带你重新学习指针2

这里在调用函数指针的那一块初学者可能会有点不大好理解,(*pf3)(2,3)理解为pf3指向add函数的地址,再解引用得到add函数,然后在传参,最后得到返回值为5,pf3(3,5)直接使用指针。第一个if是两个数组名判断相等,因为数组名单独出现是表示首元素地址,所以结果是不同,第二个判断是两个字符指针名判断相等,由刚刚提到的。由结果可知函数是有地址的,也就是说可以通过地址找到一个函数,而且函数名和&函数名都可以得到函数地址。存放的是函数的地址,是能够通过地址找到函数的指针变量。通过名字可知主体是指针,

2024-01-26 23:22:50 455 1

原创 带你重新了解指针

这里程序的最终结果就是把数组中所有的数据都打印出来,得出结论就是p指向了数组首元素的地址,而指针是int类型所以每次指针加1就会向后走4个字节,也就是数组的下个元素的地址,再解引用就是相当于arr[i]的作用。而在x64环境下,指针变量的大小通常为8个字节,这是因为x64架构的内存寻址是基于64位的,即64位地址空间。我们&a得到的地址是一个数值,比如0X006FFD70,这种变量一般存放在指针变量中,也就是*p,这种变量就是用来存放地址的,存放在指针变量中的值都会被理解为地址。

2024-01-23 23:59:02 1020

原创 C语言扫雷代码(可以展开一片)

展开函数需要用到两个数组,因为在计算雷个数的函数中需要用到mine数组,在展开时候需要在show数组中展示出来。

2023-12-10 20:05:16 861 5

原创 如何正确使用库函数工具

库函数软件,库函数工具,库函数下载

2023-12-03 19:26:13 526 7

原创 为什么我突然要自学c语言

为什么要学习c语言

2023-11-25 13:52:17 50 1

空空如也

空空如也

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

TA关注的人

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