- 博客(19)
- 收藏
- 关注
原创 Java 多线程并发取款模拟技术笔记
同步块,将「检查余额 → 判断可取出金额 → 扣减余额 → 打印结果」这一系列操作作为一个原子单元保护起来,避免两个线程同时读到相同余额后重复扣款,保证余额不会被扣成负数。由于每次取款金额随机,运行结果的日志顺序与具体金额会随执行而变化,但整体流程固定:两个线程交替取款,直到余额归零。)演示了一个简单的多线程并发取款场景:多个用户线程共享同一个账户余额,并在一定规则下随机取款,直到余额耗尽。后,后续进入同步块的线程会命中“余额不足”分支并退出,整个取款过程自然结束。是被多个线程共享的账户,初始余额为。
2026-09-30 12:00:28
210
原创 Java中设计图像处理工具(三)
在前面的Java中设计图像处理工具(一)和(二)中,我们已经实现了八种功能:打开、原图、马赛克、旋转、灰度、镜面翻转、缩放、复古和保存,而今天我们来实现图像的卷积和图像的重绘功能。接下来我把Java代码展示出来:我们先展示PixelUi的代码jf . setTitle("图像处理1.0");"打开" , "原图" , "马赛克" , "旋转" , "灰度" , "镜面翻转" , "缩放" , "复古" , "卷积" , "保存" };i ++) {
2026-03-14 01:26:00
46
原创 Java中设计图像处理工具(二)
在Java中设计图像处理工具(一)中,我们已经实现了六个功能:原图、马赛克、旋转、灰度、打开、缩放。接下来,我们需要实现另外几个功能。jf.setTitle("图像处理1.0");String[] name={"打开","原图","马赛克","旋转","灰度","镜面翻转","缩放","复古","保存"};i++){String path="D:\\图片\\【哲风壁纸】下雪-冬季雪景(2).png";
2026-02-12 15:57:15
44
原创 Java中设计图像处理工具(一)
我们来介绍一下Java语言中的一个基础项目:图像处理工具。jf.setTitle("图像处理1.0");String[] name={"打开","原图","马赛克","旋转","灰度","镜面翻转","缩放","复古","保存"};i++){
2026-02-12 15:35:57
440
原创 Java语言中面向对象编程
类:类是对一类具有相同属性和行为的事物的抽象描述,定义了该类对象共有的属性(成员变量)和行为(成员方法),类本身不占用内存,只是一种“设计蓝图”。对象:对象是类的具体实例,是实实在在存在的实体,占用内存空间。hy.blood=0;System.out.println(name+"正在攻击"+hy.name+","+hy.name+"掉血"+attack+",剩余血量"+hy.blood);lb.blood=0;
2025-12-12 22:00:44
279
原创 C语言技术笔记(最长连号)
首先我们引入头文件用于scanf输入以及printf输出,然后我们需要定义一些变量:其中i、j作为循环计数器;m用于记录“输出序列中最长连号”长度,并且我们还需要将m初始化为1;然后我们需要使用scanf函数,通过scanf输入一个整数,存入数组arr的第i个位置。由题目可以知道我们需要输入长度为n的正整数序列,要求输出序列中最长连号的长度,因此我们可以知道这个题目我们需要定义数组、使用for循环、scanf函数以及我们需要用到if函数,首先我们第一反应就是二维数组存数据,然后再通过循环找出最长连号长度。
2025-11-05 22:44:19
344
原创 C语言题解(级数求和和数字统计)
接下来我们需要用到for循环来写这串代码,for循环中需要定义一个值i,i需要等于L,而且i值需要小于等于R值,所以这个for循环代码可以写为:for(int i=L;,在for循环中,我们还需要定义一个值n,并且n需要等于i,因为i值需要赋值给n值,代码可以写为:int n=i;,接下来我们需要用到if语句,要使n的余数等于2,如果余数等于2,那么统计次数sum加1,然后将n除以10,再将除后的值赋值给n再进行循环,代码可以写为:if(n%10==2)sum++;,最后输出return 0;
2025-10-27 17:23:27
906
原创 C语言技术笔记(指针与结构体)
然后我们需要打印结构体,它也有两种写法,第一种写法是:void printStu(struct Student *sp){printf("name=%s age=%d\n",(*sp).name,(*sp).age);指针它是一种数据类型,它的作用是内存地址,指针的变量名是*,我们可以用一些代码来具体说明指针。然后我们来说说结构体,结构体是一种数据类型(自定义类型),它的作用是对象数据封装,然后我们来说一下它的格式:第一种格式的写法是:struct 结构体名字{成员变量...};
2025-10-24 23:07:07
461
原创 数组与指针
访问方式有两种:一个是下标法:arr[0]、arr[1]......另一个是指针法:*(arr+0)、*(arr+1)......(因数组内存连续,arr+i指向第i个元素的地址)。,int *p的意思是定义一个int类型的指针变量p,p=&arr[0];数组在本质上是连续内存的“容器”,在内存分配上,编译时分配固定大小的连续空间,而在指向性中,数组名是常量指针,指向首元素且不可修改;而指针的本质是存储地址的“变量”,在内存分配上,指针仅分配存储地址的空间,在指向性中,指针是变量,可修改指向的地址。
2025-10-18 15:58:12
298
原创 C语言解题思路(蛇形矩阵)
然后,我们需要定义一个整型变量n,用于存储矩阵的维度(即矩阵是n×n的),然后使用scanf函数从标准输入读取一个整数,并将其存储在变量n的地址(&n表示取n的地址)中,这样就获取了用户指定的矩阵大小,代码可以写为:int n;,然后还需定义一个n行n列的二维整型数组arr,用于存储蛇形矩阵的元素,代码可以写为:int arr[n][n];,然后我们以“占3个字符的宽度”的格式输出arr[i][j]的值,保证输出对齐,代码可以写为:printf("%3d",arr[i][j]);
2025-10-05 13:40:54
835
原创 C语言解题思路(矩阵旋转180度)
然后我们需要再写一个内层循环,变量j控制“列”,从0开始,到2结束,每次循环j自增1,代码可以写为for(int j=0;,然后打印数组a中第i行第j列的元素,%d是“整数格式化的输出”的占位符,代码可以写为:printf("%d",a[i][j]);,然后我们需要知道一个核心赋值逻辑:将a[i][j]的值赋给b[2-i][2-j],实现数组的转置和逆序(例如a[0][0]会被存到b[2][2]),代码可以写为:b[2-i][2-j]=a[i][j];,最后使程序运行,检查错误。
2025-10-04 13:37:10
781
原创 C语言解题思路(挖树问题)
然后我们开始一个新的for循环,循环变量i从0开始,到m-1结束,用于控制砍树操作的次数,总共进行m次砍树,代码可以写为:for(int i=0;,然后开始一个for循环,循环变量i从0开始,到n结束,用于遍历数组tree的所有元素,进而统计剩余树的数量,代码可以写为:for(int i=0;由于存在的树对应的值是1,被砍掉的树的对应的值是0,所以累加的结果是剩余树的数量,代码可以写为:num+=tree[i];数组的每个元素可以用来表示对应位置上树的状态,比如tree[i]表示第i棵树的状态。
2025-10-03 13:50:12
332
原创 C语言解题思路(连续和最大的五个数)
然后我们要计算从索引i连续开始的5个元素的和,并存储在sum中,代码要写在{}中,代码为:int sum=arr[i]+arr[i+1]+arr[i+2]+arr[i+3]+arr[i+4];首先,我们写出头文件:#include<stdio.h>,然后输入主函数:int main(){},因为我们要找出连续和最大的五个数,所以我们首先需要定义一个整型数组arr并初始化其元素,代码可以写为:int arr[]={1,5,6,8,2,5,1,7,5,6,2,5};使主函数执行完毕,返回0表示程序正常结束。
2025-10-02 13:33:21
161
原创 C语言解题思路(解密问题)
然后我们输入while进行循环,我们需要\0进行结尾,否则将会导致代码无限循环,而且我们输入的字符串是由a字母到z字母的26个字母,所以我们要将让i值大于等于a字母,小于等于z字母,由于我们要求输入的字母进行解密后输出的字母是输入的字母的前一位,所以我们要对进行前移,由此我们可以写出代码:while(str[i]!,然后我们需要输入一行不确定长度的字符串·,由于我们保存了一个10000个字符的数组,所以我们可以写出代码:scanf("%10000[^\n]",str);进行结尾,使程序正常运行。
2025-09-29 23:56:14
149
原创 C语言技术笔记(2)
当需要保存吃掉的部分,则需输入代码:int eat=0;,如果需要均分成三份,则需输入代码:for (int i=0;},然后再写入代码:printf("\n%d",eat);当需要分给左右两边进行累加时,则需要输入代码:arr[(i+1)%5] +=a;当要比较挨着的两个值的大小,则代码为:if(arr[i]>arr[i+1]){最后再输入代码:for (int i=0;最后再写入代码:return 0;
2025-09-21 22:56:59
172
原创 C语言技术笔记
首先,要编写程序,最开始需要写出头文件,而头文件的作用则是导入标准库(提供基础功能),头文件的代码为:#include <stdio.h>,而<stdio.h>则是最基本输出,输出语句。在输入语的阻塞方法中,&n表示取出对应变量的内存地址,在该地址保存数据,如需写入循环操作,则代码为:for(int i=0;而在输出语句中,%d表示输出整型变量,%f表示输出浮点型变量,%c表示输出字符变量,在输出语句\n在输出后要换行。,如需写出找出数据最大值,则代码为:for(int i=0;
2025-09-20 22:26:45
228
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅