自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 对于IDEA中default encoding for properties file和transparent native-to-ascii conversion的理解

对于properties文件有两个设置,一个是左边下拉框选encoding字符集,默认的是iso8859-1编码和解码,先不勾选右边的transparent native-to-ascii-conversion。如果这时选了别的encoding编码集,那么读取的时候解码仍然是按照iso8859-1(只变编码不管解码,很坑!),就肯定会出现乱码。那么直接用默认的iso8859-1编码可以吗?依然是不行的,iso8859-1是单字节编码,自身不支持编码中文,编码表如下可以看出没有中文。

2023-03-10 23:16:26 940

原创 快排简单易懂写法

利用双指针i,j都从left开始,i遍历数组找到小于pivot的元素才移动j并把nums[i]交换到j的位置,否则j不动,最后把pivot和nums[j]交换让pivot位于他应有的位置,这个方法不用考虑太多边界情况,简单无bug。void quickSort(int[] nums, int l, int r) { if (l >= r) return; int pivot = nums[l]; int j = l; for (int

2022-03-25 10:20:56 198

原创 一劳永逸解决二分查找问题

妈妈再也不用担心我的二分了,寻找第一个满足或者最后一个满足某一条件的值,左右区间设置为闭区间,循环条件也是l<=r,重点是用pos记录最后一次满足条件时更新的值,pos初始为-1用于不存在满足条件的元素时返回,在满足条件的语句块中更新pos并且根据要求移动左右边界,如果找最后一个,就收缩左边界,如果找第一个就收缩右边界,最后返回的pos就是满足条件的位置了。public int[] searchRange(int[] nums, int target) { int[] res = n

2022-03-24 13:20:07 160

原创 AOP底层原理

静态代理有以下四个角色抽象功能:通常是接口实现代理对象(proxy):和被代理对象实现同一个接口,在原有的被代理对象的方法前后有附加的操作;代理类中通过组合的方式注入被代理类对象,也就是声明一个被代理类对象成员属性,一般通过setter方法给这个对象赋值被代理对象调用代理服务的程序好处:可以使被代理对象的操作更加纯粹,不用关注公共的业务公共业务交给代理角色,实现业务的分工公共业务发生扩展的时候,方便集中管理:被代理对象有多个方法,在不更改源代码的情况下统一增强缺点:一个被代理对象

2022-03-10 22:54:57 482

原创 Bilibili数仓实习一面面经

1 实习多久2. 本科学校,专业3. Http, https 介绍4. 介绍 进程,线程5. Java面向对象 : 继承与多态, 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用继承,可以快速地创建新的类,可以提高代码的重用,程序的可维护性,节省大量创建新类的时间 ,提高我们的开发效率;多态,顾名思义,表示一个对象具有多种的状态,具体表现为父类的引用指向子类的实例。对象类型和引用类型之间具有继承(类)/实

2022-03-07 21:48:29 571

原创 数据库三大范式

设计数据库表的时候需要考虑的问题正确性,当插入、删除、更新的时候进行约束检查降低数据冗余度,保证数据表不会因为用户量增长而迅速扩张范式数据库的范式设计越高阶,冗余度就越低,范式是层层递进,高阶包含低阶第一范式每个字段的值具有原子性,不可再分第二范式在第一范式的基础上,每一条数据记录都是可唯一标识的,所有非主键字段,都必须完全依赖主键,不能部分依赖主键,如不满足,则有冗余性的问题,需要拆分表具体会有如下问题:数据冗余(主键中一部分变一部分不变,依赖于不变那部分主键的属性值也会重复记录

2022-02-24 20:04:27 388

原创 字符集的几个疑惑

Java中一个char是两个字节,但是有的汉字需要两个或三个字节存储,这样的话一个char存不下一个汉字?因为Java使用Unicode字符集,Unicode用两个字节表示世界上所有的文字集合,Unicode 字符集涵盖了目前人类使用的所有字符,并为每个字符进行统一编号,分配唯一的字符码(Code Point),为两个字节。为解决 Unicode 如何在网络上传输的问题,于是面向传输的众多 UTF(UCS Transfer Format or Unicode Transformation Format,简

2021-08-19 12:20:47 135

原创 异常处理的意义

处理异常主要有两个:一是为了给用户友好的提示,不至于遇到特殊情况程序终止或者出现一堆报错信息,处理之后就可以自定义一些指导建议提供给用户;二是能够使程序可以正常地运行下去,异常处理之后不会影响后面的代码执行。子类重写的方法抛出(throws)的异常类型不大于父类被重写的方法抛出的异常类型。这主要是出于多态方面的考虑,通过父类引用指向子类对象时,对于异常的处理也能够覆盖掉子类的异常。因此如果父类中被重写的方法没有用throws方式处理异常,则子类重写的方法也不能使用throws。这意味着子类

2021-08-05 21:26:42 1187

原创 代码实现——基于预测的自动驾驶全球导航卫星系统欺骗攻击检测

我们使用了来自 Comma.ai 的真实数据集,名为 Comma2k19,其中包含各种自动驾驶车辆传感器数据。该数据集的下载和处理过程请参考我的另一篇文章comma2k19数据集使用。1.获取所需数据Comma.ai 使用的视听设备有一个前置摄像头、温度计和9 轴惯性测量单元。除了这些传感器数据,Comma2k19 数据集还包含来自全球导航卫星系统(GNSS)和控制区域网络(CAN)的测量值(见表 1 和表 2)。数据收集使用了可跟踪全球导航卫星系统的 u-blox M8 全球导航卫星系统模块,水平位置

2021-03-07 17:02:32 1951

原创 comma2k19数据集使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言1.下载数据集2.配置项目3.代码示例2.读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入前言c

2021-02-28 14:28:31 2752 5

原创 Pytorch安装避坑指南

安装这个pytorch真是心态快崩了,要不就是下载贼慢,要不就是国内源无可用库,好在最后解决了,方法如下:1.在cmd中输入这个命令添加pytorch库的源conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/之前就是因为没加这个源一直找不到库2.去官网获取下载命令3.其中后面的-c pytorch删除,因为这个设置使得只能从国外官网下,速度很慢。删除之后再将命令回车就行了

2020-08-03 10:42:42 632

原创 PAT B1050 螺旋矩阵 (25point(s))

#include<cstdio>#include<math.h>#include<algorithm>using namespace std;bool cmp(int a,int b){ return a>b;}int main(){ int N; scanf("%d",&N); int num[N]={0}; for(int i=0;i<N;i++){ scanf("%d",num+

2020-05-10 23:44:04 131

原创 2019级程设模拟机考 B. 邮件地址排序

#include<cstdio>#include<string>#include<algorithm>#include<iostream>using namespace std;struct email{ string username,domain;}ary[1000000];bool cmp(email a,email b){ if(a.domain!=b.domain) return a.domain<b.domain

2020-05-10 17:31:42 185

原创 PAT B1043 输出PATest (20point(s))

#include<cstdio>#include<string>#include<iostream>using namespace std;int hashtable[6]={0},cnt=0;char mp[6]={'P','A','T','e','s','t'};char maxletter;int main(){ string a; getline(cin,a); for(int i=0;i<a.length();i++)

2020-05-09 21:27:32 94

原创 PAT B1042 字符统计 (20point(s))

#include<cstdio>#include<string>#include<iostream>using namespace std;int hashtable[256]={0},maxcnt=0;char maxletter;int main(){ string a; getline(cin,a); for(int i=0;i<a.length();i++){ if((a[i]>='A'&&a

2020-05-09 21:08:11 129

原创 PAT B1033 旧键盘打字 (20point(s))

#include<cstdio>#include<string>#include<iostream>using namespace std;int hashtable[256]={0};int main(){ int flag=0; string a,b; getline(cin,a); getline(cin,b); for(int i=0;i<a.length();i++){ hashtable[

2020-05-09 20:28:35 120

原创 PAT A1098 Insertion or Heap Sort (25point(s))

#include<cstdio>#include<algorithm>using namespace std;int n,origin[110],tempori[110],processed[110];bool issame(int *a,int *b){ for(int i=1;i<=n;i++){ if(a[i]!=b[i]) return false; } return true;}void showarray(int

2020-05-09 19:55:55 131

原创 PAT A1107 Social Clusters (30point(s))

#include<cstdio>#include<algorithm>using namespace std;int n,father[1001],cnt[1001],res[1001],rescnt=0;int findroot(int x){ if(father[x]!=x) return findroot(father[x]); else return x;}void Union(int x,int y){ int faX=findroot(x)

2020-05-09 11:40:49 105

原创 华东师范大学2018年研究生复试-梵高先生

#include<cstdio>#include<algorithm>using namespace std;int main(){ int n; scanf("%d",&n); int tem[n]={0},cpy[n]={0}; tem[0]=1;cpy[0]=1; for(int i=1;i<=n;i++){ for(int j=0;j<i;j++){ if(j==0||j==i-

2020-05-08 20:01:01 151

原创 华东师范大学2018年研究生复试-和你在一起

#include<cstdio>#include<string>#include<algorithm>#include<iostream>using namespace std;int main(){ int n; scanf("%d",&n); string s[n]; for(int i=0;i<n;i++){ cin>>s[i]; } sort(s,s+n)

2020-05-08 17:31:44 262

原创 华东师范大学2018研究生复试-西班牙馅饼

#include<cstdio>using namespace std;int main(){ int n,m,res=0; scanf("%d%d",&n,&m); for(int i=0;i<n;i++){ int max=0,tem; for(int j=0;j<m;j++){ ...

2020-05-08 17:09:48 140

原创 华东师范大学2018研究生复试-定西

深度遍历算法,枚举所有可能走法#include<cstdio>#include<set>using namespace std;int n,k,cnt=0; set<int> s;void dfs(int x){ if(s.find(x)!=s.end()||x>n) return; if(x==n){ cnt+...

2020-05-08 17:08:43 151

原创 华东师范大学2018研究生复试-热河西

只需计算所有1的位置,将其插入到set中,查询时到set中查找即可#include<cstdio>#include<set>using namespace std;int main(){ int n,step=1,tem; set<int> res; scanf("%d",&n); for(int i=1;i&lt...

2020-05-08 17:07:14 128

原创 华东师范大学2018研究生复试-庙会

#include<cstdio>using namespace std;int main(){ int n,m,k; scanf("%d%d%d",&n,&m,&k); int a=0,b=0; for(int i=0;i<k;i++){ printf("%d %d\n",(a++%n)+1,(b++%m...

2020-05-08 17:05:42 107

原创 PAT A1066 Root of AVL Tree (25point(s))

AC Code:#include<cstdio>#include<algorithm>using namespace std;struct node{ int data,height;//data为结点数据域,height为高度 node *left,*right;//分别为左右孩子结点指针};node* creatnode(int x){//创...

2020-04-30 11:54:09 144

原创 PAT A1064 Complete Binary Search Tree (30point(s))

题目链接思路:完全二叉树可以用数组存储,根节点的下标从1开始,根节点下标为i,左孩子和右孩子结点的下标分别为2i和(2i+1)。将输入的序列从小到大排列得到序列数组num,从根节点(下标为1)开始建树,对应的序列区间左端下标L=0,右端下标R=n-1:计算每个结点的左子树序列的长度i,就可以得到根节点在排序数组的下标[L+0],将num[L+0]存放在结果数组的对应位上,再递归处理左子树区间和右...

2020-04-27 23:13:17 107

原创 PAT A1043 Is It a Binary Search Tree (25point(s))

思路:第一步判断该先序遍历序列是否能构建查找二叉树或镜像查找二叉树。第二步,根据第一步得到的结果构建查找二叉树或镜像查找二叉树。第三步,对构建的树进行后序遍历。注意点:1.判断是否能构成查找二叉树的方法主要是将题给的先序遍历序列分成三个部分,首元素(根节点),一个是比首元素小的区间(左子树),一个是比首元素大的区间(右子树),从首元素+1的位置开始查找,找到第一个大于等于首元素的数(说明左子树...

2020-04-27 17:54:52 120

原创 PAT A1090 Highest Price in Supply Chain (25point(s))

题目链接思路:本题的本质就是求树的最大深度及最大深度叶子结点的个数,可以用一个递归算法求每一个深度点的,孩子结点深度是双亲结点深度加1,本题右给出了每个结点双亲结点的下标,故可以利用这个关系进行递归,每一个结点都可以向上追溯到根节点,因此遇到根节点即是递归出口,且根节点的深度为1。为避免重复计算,可以用一个level[100010]数组去保存每一个结点的深度,这样不是每一个结点都需要递归到根节点...

2020-04-26 00:54:48 144

原创 PAT A1079 Total Sales of Supply Chain (25point(s))

题目链接思路:本题就是计算树根节点权值与深度幂的乘积之和,可以用DFS遍历树也可以用BFS遍历树,区别在于DFS的深度是通过函数参数传递,而BFS的深度保存在在结点结构体的元素中。下面是DFS的代码:#include<cstdio>#include<vector>#include<cmath>using namespace std;double p,...

2020-04-25 22:48:32 119

原创 PAT A1053 Path of Equal Weight (30point(s))

题目链接思路:用深度遍历算法遍历树,其实就是树的先根遍历,用一个数组模拟栈来记录遍历时从根到结点的路径,一旦当前结点是叶子结点且当前的路径权重等于题目所给权重就输出路径,否则就对孩子结点递归,有两个递归出口,一个是当前路径权重大于题给的权重,一个是孩子结点均遍历完。注意点:1.要用数组去模拟路径结点栈,而不能用STL的stack或者queue,他们都不能用迭代器访问,必须边取端部元素边出队或...

2020-04-25 21:00:07 95

原创 PAT A1086 Tree Traversals Again (25point(s))

由题意可知,每次访问一个新结点就将其入栈,这个过程和先序遍历类似,因此不难退出入栈顺序就是先序遍历该树的顺序;对每一个结点入栈之后,如果这个结点有左孩子则入栈,没有左子树或左子树已出栈时才出栈,再去入栈右孩子,这使得左孩子一定在本结点之后入栈,之前出栈,这和中序遍历的左中右的顺序是一致的,因此出栈顺序即是该树的中序遍历序列。题目转换为给出先序和中序遍历序列,建树再进行后序遍历了。建树的算法可以参考...

2020-04-23 20:13:05 86

原创 PAT A1020 Tree Traversals (25point(s))

建树的思想就是递归,根据后序遍历序列找到根节点(左后一个元素),再在中序遍历序列中找到根节点,并将中序遍历序列划分为左右两个部分,分别代表左子树和右子树的中序遍历序列,计算出左子树的结点数numleft(用根节点的下标减去中序遍历序列第一个元素的下标即得)。用得到的numleft得到后序遍历序列的左右子树遍历序列的边界,再重复递归就完成了建树。层次遍历访问要用到BFS,用队列即可实现。AC C...

2020-04-23 16:48:19 112

原创 PAT A1091 Acute Stroke (30point(s))

题目链接该题本质就是遍历连通分支的问题,只不过是将二维矩阵拓展到三维矩阵,做法类似,算法思想可以看我的另一篇文章。求矩阵的连通分支数问题#include<cstdio>#include<queue>using namespace std;int m,n,l,T,ans=0;//m为行,n为列,l为层,ans为最后的输出数int matrix[60][1286]...

2020-04-22 21:54:44 112

原创 求矩阵的连通分支数问题

有这样一个题目给出一个mxn的矩阵,矩阵中的元素为0或1,。称位置(x,y)与其上下左右四个位置(x,y+1)、(x,y-1)、(x+1,y)、(x-1,y)是相邻的。如果矩阵中有若干个1是相邻的(不必两两相邻),那么称这些1构成了一个“块”(可以理解为连通分量)。求给定的矩阵中“块”的个数。          0 1 1 1 0 0 1          0 0 1 0 0 0 0  ...

2020-04-22 17:11:31 2156

原创 PAT A1103 Integer Factorization (30point(s))

题目链接思路:使用深度遍历算法进行递归,枚举所有可能的情况,直到找到最优解。注意点:1.计算一个数的p次幂时必须自己写一个函数,直接调用math.h的pow()会有精度损失的问题,因为pow()的返回值是double,向int强制转换时会损失精度,想知道为什么可以了解int 和double 在计算机中的存储方式。2.由于n,p是固定的,不妨开一个数组vector fac去记录满足i^p&l...

2020-04-21 11:56:43 156

原创 PAT A1052 Linked List Sorting (25point(s))

题目链接思路:用sort将节点按数值递增排序,再依次修改节点的next。注意点:1.在输入节点时,节点数组的下标即是它的地址,但排序之后就不一定了,因此结构体中要有元素address保存它的地址。2.题目给出的节点可能存在无效节点,即不被链表链接的节点,需要用flag来标记出有效节点,排序时把有效节点放在前面。3.链表有效节点数为0时要特判,输出"0 -1",否则最后一个样例无法通过。...

2020-04-20 17:51:16 91

原创 PAT A1032 Sharing (25point(s))

题目链接思路:先计算两个单词的长度,如果不一样长则计算它们的差值,利用这个差值使较长的单词的指针指向离尾节点的距离等于较短单词长度的位置,相当于站在同一起跑线上了,如果他们有公共部分,较长单词和较短单词的指针同时向后移动,总会相遇,相遇点就是第一个公共节点。注意点:1.输入节点信息时要注意字符的输入,前面的空格要用getchar()吸收,否则会将空格当作字符输入。2.题中可能会出现无效节点...

2020-04-20 16:30:01 95

原创 PAT B1025/A1074 反转链表 (25point(s))

题目链接注意点:1.要对节点按照题目给的k分块处理,块数为节点数/k。2.本题可能有无效节点,即不是连在链表中的节点,统计节点数算块数是不能计入这些无效节点。3.本题只需要处理节点的next部分,块中原来的第一个节点反转之后的next部分要分类讨论,如果不是最后一块,那么该节点的next就是下一块的最后一个节点;否则就是反转之前该块最后一个节点的next(即使是-1也如此)。4.输出从首...

2020-04-20 14:08:11 91

原创 PAT A1056 Mice and Rice (25point(s))

题目链接注意点:1.题中的比赛顺序其实是老鼠编号的顺序,即6号老鼠排第一个,0号老鼠排第二个…以此类推。2.要用一个队列来处理参赛的老鼠,处理完一个老鼠就出队列,晋级的老鼠要反复入队列,直到队列中只有一个老鼠即决出冠军。3.算法由三个循环构成,最外层循环是处理比赛轮数,里面一层是处理组,最里面是处理每组的每只老鼠。4.参赛的老鼠数每轮比赛都不同,初始为np,以后为划分的组数,如果np/n...

2020-04-19 20:39:10 98

原创 PAT A1051 Pop Sequence (25point(s))

题目链接注意点:1.本题建议STL的stack来模拟出栈入栈过程,先读入出栈序列,将1~n依次入栈,如果当前栈顶元素等于出栈序列指正所指向的应出栈的元素,则出栈,且出栈序列指针后移。2.入栈后要检查栈的大小是否超过题目规定的m,用一个flag标记是否超出最大容量。如果最后栈空且未溢出,则是正确的出栈序列,否则是错误的出栈序列。3.如果出现段错误,很有可能是在出栈时或者取栈顶元素时没有判断栈...

2020-04-19 17:02:49 141

空空如也

空空如也

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

TA关注的人

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