- 博客(29)
- 收藏
- 关注
原创 线程安全的原因及解决方法
线程安全问题指的是在多线程编程环境中,由于多个线程共享数据或资源,并且这些线程对共享数据或资源的访问和操作没有正确地同步,导致数据的不一致、脏读、不可重复读、幻读等问题。线程安全问题的出现,通常是因为线程之间的并发执行导致了数据竞争(Race Condition)或者时序问题(Timing Issues)。以上是网上找到的回答,
2024-07-07 17:33:41
298
原创 请说明Thread类中run和start的区别,从方法的区别,及运行结果的区别分别说明
start() 方法:run() 方法:使用 start() 方法:直接调用 run() 方法:
2024-06-25 20:37:08
410
8
原创 MySQL查询练习题1.平均工资2.查询各部门的总薪水3.查询总薪水排名第二的部门4.查询姓名重复的员工信息5.查询各部门薪水大于900的男性员工的平均薪水
子句的主要作用是根据一个或多个列对结果集进行分组,以便对每个分组执行聚合函数(如。这个查询会计算每个部门的平均工资,但只返回那些平均工资超过 50000 的部门。最常见的用法是结合聚合函数对某一列或多列进行分组,并计算每组的聚合值。这个查询会按照员工入职年份对员工进行分组,并计算每年的入职员工数量。列的值进行分组,最后计算每个部门中每个职位的数量。列的值对员工进行分组,并计算每个部门的员工数量。列的值进行分组,然后在每个部门内部再按照。你可以按照多个列的组合进行分组。子句对分组后的结果进行排序。
2024-06-16 12:51:33
374
5
原创 MySQL的基本操作 新建数据库的基本操作、新建表格基本操作、插入数据insert的使用
MySQL的基本操作 新建数据库的基本操作、新建表格基本操作、插入数据insert的使用
2024-05-19 18:48:26
573
12
原创 堆的插入与删除维护大根堆,为什么需要俩个不同的方法(java)
方法的目的是在插入和删除操作后重新调整堆,以确保它仍然满足堆的性质(即父节点的值总是大于或等于其子节点的值,对于大根堆来说)。这两个方法分别处理从底部添加新元素和从顶部删除元素的情况,因此它们的实现方式有所不同。在堆(无论是大根堆还是小根堆)的插入和删除操作中,需要两个不同的方法来维护堆的性质。这是因为插入和删除操作对堆的影响不同,因此维护堆性质的方式也不同。
2024-05-10 21:14:57
159
原创 232. 用栈实现队列、225. 用队列实现栈
栈(Stack)是一种线性数据结构,其特点是数据的添加、删除是“后进先出”的原则,也就是说,想要弹出一个元素,那么这个元素肯定是最后添加进来的,而第一个添加进去的元素 ,就最后等其他元素被移出才能出栈。想要解决这两个问题,首先先简单复习一下栈和队列。以下就是队列实现栈的所有代码。下面是用链表实现队列的功能。225. 用队列实现栈。232. 用栈实现队列。队列(Queue)相对于栈的最大区别就是,队列是先进先出的数据结构,类似于排队打饭,先到的先得
2024-05-03 13:17:32
420
10
原创 泛型类,泛型方法,泛型接口,泛型的上界
在Java中,泛型(Generics)是一种机制,它允许程序员在定义类、接口和方法时使用类型参数。这些类型参数在实例化时会被实际的类型(如IntegerString等)所替换。泛型提供了编译时的类型检查,增加了代码的可读性和可维护性,并且减少了类型转换时的错误。主要目的是指定当前容器,要持有什么类型的对象,让编译器去检查。
2024-05-01 17:31:30
176
3
原创 java类的定义方式和实例化、this引用、对象的构造及其初始化、封装特性、static修饰成员变量、static修饰成员方法
java类的定义方式和实例化、this引用、对象的构造及其初始化、封装特性、static修饰成员变量、static修饰成员方法
2024-03-26 22:43:58
806
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
832
9
原创 c语言递归程序题(斐波那契数列递归/非递归,n的k次方递归/非递归,输入一个非负整数,返回组成它的数字之和递归,递归和非递归分别实现求n的阶乘,递归方式实现打印一个整数的每一位)
/规律——除了第一个第二个,其他的数都是通过前面两个数相加得到的结果。需要区分三种情况>0,=0,<0。
2024-01-28 11:15:28
364
2
原创 带你重新学习指针2
这里在调用函数指针的那一块初学者可能会有点不大好理解,(*pf3)(2,3)理解为pf3指向add函数的地址,再解引用得到add函数,然后在传参,最后得到返回值为5,pf3(3,5)直接使用指针。第一个if是两个数组名判断相等,因为数组名单独出现是表示首元素地址,所以结果是不同,第二个判断是两个字符指针名判断相等,由刚刚提到的。由结果可知函数是有地址的,也就是说可以通过地址找到一个函数,而且函数名和&函数名都可以得到函数地址。存放的是函数的地址,是能够通过地址找到函数的指针变量。通过名字可知主体是指针,
2024-01-26 23:22:50
448
1
原创 带你重新了解指针
这里程序的最终结果就是把数组中所有的数据都打印出来,得出结论就是p指向了数组首元素的地址,而指针是int类型所以每次指针加1就会向后走4个字节,也就是数组的下个元素的地址,再解引用就是相当于arr[i]的作用。而在x64环境下,指针变量的大小通常为8个字节,这是因为x64架构的内存寻址是基于64位的,即64位地址空间。我们&a得到的地址是一个数值,比如0X006FFD70,这种变量一般存放在指针变量中,也就是*p,这种变量就是用来存放地址的,存放在指针变量中的值都会被理解为地址。
2024-01-23 23:59:02
1003
原创 C语言扫雷代码(可以展开一片)
展开函数需要用到两个数组,因为在计算雷个数的函数中需要用到mine数组,在展开时候需要在show数组中展示出来。
2023-12-10 20:05:16
834
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人