- 博客(40)
- 收藏
- 关注
原创 synchronized关键字(锁升级)
synchronized是Java的一个关键字,用来保证多线程下临界区资源的共享安全性synchronized可以加在方法上(静态方法和普通方法)、代码块上使用语法:为什么需要加synchronized?由于在多线程环境下,对于共享资源(比如共享变量)的修改,可能会导致结果与预期不一致:以下有两个线程,分别对static变量进行多次+1和-1操作,最终结果预期为0,但由于单条java指令被编译成字节码后可能,因此会造成数据出错假如第一个线程取完指令并进行+1操作后,还没来得及存指令;
2024-03-13 01:06:42 641
原创 Java线程状态
因为Java代码层面可以将线程设置为就绪态,但是并不能将线程从就绪态转变为运行态,分配线程CPU时间本身是操作系统的任务调度器决定的,Java程序本身并不知道操作系统什么时候会唤起该线程,因此不存在Running状态。但是在学Java线程的时候,发现Java中的线程有6中状态,分别为:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED。学习操作系统的时候,知道线程有5种状态,分别为:新建、就绪、运行、阻塞、终止。TERMINATED -- 终止。
2024-03-05 18:33:56 153
原创 Springboot展示本地图片
图片文件路径在static/image目录下,但设置uri时只需要设置成/image即可,static目录是spring用来识别静态资源的,不需要出现在uri上。在resources下创建目录static/image。在application.yml中新增。重写preHandle方法。
2024-02-21 14:34:09 593
原创 Postgresql的查询执行过程
在Postgresql中,由于DML语句的执行过程相似,因此使用同一的数据结构加以表示,这个结构就是执行计划树(Plan Tree)接下来,DML语句经过查询编译器处理后,会生成一个或多个执行计划树,每个执行计划树所代表的动作被称为一个原子操作,Postgresql会将执行计划树作为输入交给Executor执行。
2024-02-21 14:20:46 321
原创 程序设计与算法 -- 排序
目录一.插入排序直接插入排序其他插入排序希尔排序二.快速排序三.选择排序堆排序四.归并排序五.基数排序一.插入排序直接插入排序思路:每次从未排序的序列中取出一个元素,将其插入到已排好序的序列中。void insertSort(int n, int* a) { for(int i = 1; i < n; i++) { for(int j = i; j > 0; j--) ......
2021-12-22 11:49:57 45
原创 Dijkstra算法
所需参数:int dis[] :每个节点到出发点的距离bool visit[] :记录节点是否已确定为最短路径步骤:选定出发点,将dis设为0,visit设为true while循环,选定一个路径最短并且还未确定的节点,将visit设为true。(若当前选定的最短路径为无穷大,说明剩余节点不联通,跳出循环) 用当前节点更新其他未知的节点路径。...
2021-12-21 19:45:47 491
原创 PAT甲级1031
#include<bits/stdc++.h>using namespace std;int main(){ string str; cin >> str; double len = str.length(); double s = ceil((len - 4) / 3); double n = (len - s + 1) / 2; n = (len - s) / 2 - 1; int left = 0, right = .
2021-10-14 12:25:51 82
原创 PAT乙级 1026 程序运行时间
一.题目描述要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间。这个时间单位是 clock tick,即“时钟打点”。同时还有一个常数 CLK_TCK,给出了机器时钟每秒所走的时钟打点数。于是为了获得一个函数f的运行时间,我们只要在调用f之前先调用 clock(),获得一个时钟打点数 C1;在f执行完成后再调用 clock(),获得另一个时钟打点数 C2;两次获得的时钟打点...
2021-07-30 09:24:54 74
原创 PAT乙级 1024 科学计数法
一.题目描述科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。输入格式:每个输入包含 1 个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不超过 9999 字节,且其指数的绝对值不超过 9999。...
2021-07-28 21:03:51 69
原创 PAT乙级 1023 组个最小数
一.题目描述给定数字 0-9 各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意 0 不能做首位)。例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就是 10015558。现给定数字,请编写程序输出能够组成的最小的数。输入格式:输入在一行中给出 10 个非负整数,顺序表示我们拥有数字 0、数字 1、……数字 9 的个数。整数间用一个空格分隔。10 个数字的总个数不超过 50,且至少拥有 1 个非 0 的数字。输出格式:在一
2021-07-28 15:37:59 58
原创 PAT乙级 1022 D进制的A+B
一.题目描述输入两个非负 10 进制整数A和B(≤230−1),输出A+B的D(1<D≤10)进制数。输入格式:输入在一行中依次给出 3 个整数A、B和D。输出格式:输出A+B的D进制数。二.代码#include <bits/stdc++.h>using namespace std;int main(){ int a,b,n,i=0; cin>>a>>b>>n; ...
2021-07-27 16:52:52 40
原创 PAT乙级 1021 个位数统计
一.题目描述给定一个k位整数N=dk−110k−1+⋯+d1101+d0(0≤di≤9,i=0,⋯,k−1,dk−1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定N=100311,则有 2 个 0,3 个 1,和 1 个 3。输入格式:每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数N。输出格式:对N中每一种不同的个位数字,以D:M的格式在一行中输出该位数字D及其在N中出现的次...
2021-07-27 13:31:22 50
原创 PAT乙级 1020 月饼
一.题目描述月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 3 种月饼,其库存量分别为 18、15、10 万吨,总售价分别为 75、72、45 亿元。如果市场的最大需求量只有 20 万吨,那么我们最大收益策略应该是卖出全部 15 万吨第 2 种月饼、以及 5 万吨第 3 种月饼,获得 72 + 45/2 = 94.
2021-07-27 13:26:19 49
原创 PAT乙级 1019 数字黑洞
一.题目描述给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫 Kaprekar 常数。例如,我们从6767开始,将得到7766 - 6677 = 10899810 - 0189 = 96219621 - 1269 = 83528532 - 2358 = 61747641 - 1467 = 6174.
2021-07-25 12:07:04 57
原创 PAT乙级 1018 锤子剪刀布
一.题目描述大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。输入格式:输入第 1 行给出正整数N(≤105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第 1 个字母代表甲方,第 2 个代表乙方,中间有 1 个空格。输出格式:输出第 1、2 行分别给出甲、乙的胜、平、...
2021-07-25 10:16:34 95
原创 PAT乙级 1017 A除以B
一.题目描述本题要求计算A/B,其中A是不超过 1000 位的正整数,B是 1 位正整数。你需要输出商数Q和余数R,使得A=B×Q+R成立。输入格式:输入在一行中依次给出A和B,中间以 1 空格分隔。输出格式:在一行中依次输出Q和R,中间以 1 空格分隔。二.代码#include<bits/stdc++.h>using namespace std;int main(){ string a; int b,remain...
2021-07-24 20:53:21 69
原创 PAT乙级 1016 部分A+B
一.题目描述正整数A的“DA(为 1 位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A=3862767,DA=6,则A的“6 部分”PA是 66,因为A中有 2 个 6。现给定A、DA、B、DB,请编写程序计算PA+PB。输入格式:输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0<A,B<109。输出格式:在一行中输出PA+PB...
2021-07-24 20:25:00 48
原创 PAT乙级 1015 德才论
一.题目描述宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”现给出一批考生的德才分数,请根据司马光的理论给出录取排名。输入格式:输入第一行给出 3 个正整数,分别为:N(≤105),即考生总数;L(≥60),为录取最低分数线,即德分和才分均不低于L的考生才有资格被考虑录取;H(<100),为优先录取线——德分和才分均不低于此线的被定义..
2021-07-24 19:59:03 50
原创 PAT乙级 1012 数字分类
一.题目描述给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:A1= 能被 5 整除的数字中所有偶数的和; A2= 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算n1−n2+n3−n4⋯; A3= 被 5 除后余 2 的数字的个数; A4= 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位; A5= 被 5 除后余 4 的数字中最大数字。输入格式:每个输入包含 1 个测试用例。每个测...
2021-07-24 09:51:39 52
原创 PAT乙级 1011 A+B 和 C
一.题目描述给定区间 [−231,231] 内的 3 个整数A、B和C,请判断A+B是否大于C。输入格式:输入第 1 行给出正整数T(≤10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。输出格式:对每组测试用例,在一行中输出Case #X: true如果A+B>C,否则输出Case #X: false,其中X是测试用例的编号(从 1 开始)。二.代码#include<b...
2021-07-23 11:37:24 97 1
原创 PAT乙级 1010 一元多项式求导
一.题目描述设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为nxn−1。)输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为0 0。二.代码#include<bits/stdc++.h>using namespace std;in.
2021-07-23 11:28:31 65
原创 PAT乙级 1009 说反话
一.题目描述给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的输出占一行,输出倒序后的句子。二.代码#include<bits/stdc++.h>using namespace std;int main(){
2021-07-23 09:31:10 53
原创 PAT乙级 1008 数组元素循环右移问题
一.题目描述一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1A0A1⋯AN−M−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。输出格式:在一行中输
2021-07-21 21:26:47 56
原创 PAT乙级 1007 素数对猜想
一.题目描述让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。输入格式:输入在一行给出正整数N。输出格式:在一行中输出不超过N的满足猜想的素数对的个数。二.代码#include<bits/stdc++.h>using nam
2021-07-21 20:53:01 46
原创 PAT乙级 1006 换个格式输出整数
一.题目描述让我们用字母B来表示“百”、字母S表示“十”,用12...n来表示不为零的个位数字n(<10),换个格式来输出任一个不超过 3 位的正整数。例如234应该被输出为BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。输入格式:每个测试输入包含 1 个测试用例,给出正整数n(<1000)。输出格式:每个测试用例的输出占一行,用规定的格式输出n。二.代码#include<bits/stdc++.h>u...
2021-07-21 20:50:39 46
原创 PAT乙级 1004 成绩排名
一.题目描述读入n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。输入格式:每个测试输入包含 1 个测试用例,格式为第 1 行:正整数 n第 2 行:第 1 个学生的姓名 学号 成绩第 3 行:第 2 个学生的姓名 学号 成绩 ... ... ...第 n+1 行:第 n 个学生的姓名 学号 成绩其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。.
2021-07-21 20:49:01 45
原创 PAT乙级 1002 写出这个数
一.题目描述读入一个正整数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含 1 个测试用例,即给出自然数n的值。这里保证n小于10100。输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。二.代码#include<bits/stdc++.h>using namespace std;int main(){ string n; strin...
2021-07-21 20:47:41 51
原创 PAT乙级 1001 害死人不偿命的(3n+1)猜想
一.题目描述卡拉兹(Callatz)猜想:对任何一个正整数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000...
2021-07-21 20:46:22 41
原创 判断素数c++
一.按照定义#include<bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; bool flag=1; for(int i=2;i<n-1;++i) if(n%i==0) { flag=0; break; } if(flag==0) cout<<"不是
2021-07-21 17:08:38 144
原创 PAT乙级 1029 旧键盘
一.题目描述旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。输入格式:输入在 2 行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过 80 个字符的串,由字母 A-Z(包括大、小写)、数字 0-9、以及下划线_(代表空格)组成。题目保证 2 个字符串均非空。二.题解对原字符串循环遍历,每当发现有缺少的字符时,就先判断是否已经判断过,若没有,就将该字符存入新的字符串中,最后输出存.
2021-07-20 22:42:48 90
原创 PAT乙级 1028 人口普查
一.题目描述某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的老人,而今天是 2014 年 9 月 6 日,所以超过 200 岁的生日和未出生的生日都是不合理的,应该被过滤掉。输入格式:输入在第一行给出正整数N,取值在(0,105];随后N行,每行给出 1 个人的姓名(由不超过 5 个英文字母组成的字符串)、以及按yyyy/mm/dd(即年/月/日)格式给...
2021-07-20 19:28:45 51
原创 PAT乙级 1027 打印沙漏
一.题目描述本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印***** *** * ********所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。输入格式:输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。输出格式:首先打印出由
2021-07-20 15:58:00 80
原创 数据结构 -- 数组
定义:数组(array)是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来确定数组中唯一的元素。区别数组指针和指针数组:数组指针 本质上是指针,指向一维数组。指针数组 本质上是数组,存放的元素是指针。为什么要定义数组指针二维数组在内存中的存放形式与一维数组相同,都是内存中一段连续的空间,而系统并不会在定义二维数组时自动记录二维数组的行和列的大小。因此,如果想要实现指针的移动能以行为单位移动,就需要另一种指...
2021-07-19 21:13:10 215
转载 PAT乙级 1014 福尔摩斯的约会
一.题目描述大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间星期四 14:04,因为前面两字符串中第 1 对相同的大写英文字母(大小写有区分)是第 4 个字母D,代表星期四;第 2 对相同的字符是E,那是第 5 个英文字母,代表一天里的第 14 个钟头(于是一天的 0 点到 23 点由数字 0 到 9、以及大写字母A...
2021-07-10 21:31:05 62
原创 PAT乙级 1013数素数
一.题目描述令Pi表示第i个素数。现任给两个正整数M≤N≤104,请输出PM到PN的所有素数。输入格式:输入在一行中给出M和N,其间以空格分隔。输出格式:输出从PM到 PN 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。二.题解易错点:题目要求输出PM到PN间的所有素数,Pi为第i个素数,而不是从M到N之间的素数。思路:用变量num来表示第num个素数,从而判断是否输出以及什么时候...
2021-07-10 19:36:31 69
原创 PAT乙级 1005 继续3n+1猜想
一.题目描述卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算 3、5、8、4、2、1,则当我们对n=5、8、4、2 进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这 4 个数已经在验证3的时候遇到过了,我们称 5、8、4、2 是被 3“覆盖”的数。我们称一个数列中的某个数n为“关键数”,如果n不能被数列...
2021-07-09 23:16:42 125
原创 PAT乙级 1003 我要通过
一.题目描述“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。得到“答案正确”的条件是:字符串中必须仅有P、A、T这三种字符,不可以包含其它字符; 任意形如xPATx的字符串都可以获得“答案正确”,其中x或者是空字符串,或者是仅由字母A组成的字符串; 如果aPbTc是正确的,那么aPbATca也是正确的,其中a、b、c均或者是空字符串,或...
2021-07-09 11:02:11 89
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人