自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (1)
  • 收藏
  • 关注

原创 TCP/IP协议常见面试题

1、简述TCP的三次握手和四次挥手SYN:请求建立连接,FIN:请求断开连接,ACK:确认是否有效, seq:序列号, ack:确认号1)三次握手1.客户端向服务端发送⼀个SYN=1(请求建立连接),并生成一个序列号seq=j。2.服务端接收到SYN=1后,给客户端发送⼀个SYN=1与ACK=1;并将ack置为j+1;同时生成一个序列号seq=k。3.客户端接收到会检查ack是否为j+1与ACK是否为1,如果是,则会给服务端发送一个ACK=1与ack=k+1,以及自己的序列号seq=j=

2022-04-18 15:09:08 19446 1

原创 SQL中相关子查询与非相关子查询的概念与区别

一、概念非相关子查询:子查询中所用到的表与父查询无联系。相关子查询:子查询中所用到的表与父查询有联系。二、例子1、(非相关子查询)查询员工中工资大于部门department_id=101的平均工资的员工的last_name,salary和其department_idSELECT last_name, salary, department_idFROM employees eWHERE salary > ( SELECT AVG(salary) FROM e

2022-04-14 23:42:23 1558

原创 SQL中WHERE与HAVING的区别

主要区别where:1、不可以使用聚合函数2、在结果返回之前起作用having:1、可以使用聚合函数2、在结果返回之后起作用这里“聚合函数”的定义就不再赘述了,无非就是SUM、AVG、MAX等这些。这里唯一有点理解难度的可能就是对于“结果返回”的理解,为了帮助理解,请看下面两个例子:1、where与having都可以用select goods_price,goods_name from sw_goods where goods_price > 100

2022-04-14 21:14:51 2770

转载 为什么接口的成员变量默认都是public static final

原博客:为什么接口的成员变量默认都是public static final的_u014138443的博客-CSDN博客public:使接口的实现类可以用这个变量。static:static修饰就表示它属于类的,随的类的加载而存在的,如果是非static的话,就表示属于对象的,只有建立对象时才有它,而接口是不能建立对象的,所以接口的常量必须定义为static.final:final修饰就是保证接口定义的常量不能被实现类去修改,如果没有final的话,由子类随意去修改的话,接口建立这个常量就没有意义了.

2022-02-21 14:34:38 1149

原创 网站实现GNSS数据批量下载

作为一名双非高校研究生,硕士期间主要的研究方向为GNSS这个大类,目前毕业面临最大的问题就是就业。目前正在考虑转码,为了给自己硕士研究方向画个句号同时为转码打下基础,最近开发了一个网站:www.gnssget.cn。这个网站主要功能是提供GNSS测站数据、卫星广播星历与卫星产品批量下载服务,希望这个网站能够帮助GNSS初学者快速入门。一、首页二、批量下载表单页面网站使用过程中出现任何问题或者建议可以随时联系我。...

2021-12-11 17:03:09 637 8

原创 如何解决Chrome无法访问ftp的问题

在最新一次Chrome更新中彻底抛弃ftp协议了,之前可以在搜索栏搜索chrome://flags/ 并将Enable support for ftp Urls设置为Enabled才能访问ftp。但是在Chrome96中直接将修改选项剔除了,这代表在最新版本的chrome中无法通过任何手段访问ftp。 既然新版本无法访问,如果我们仍然想通过chrome访问ftp就需要下载旧版本的chrome,这里推荐一个网址,里面包含Chrome4版本资源:https://www.chro...

2021-11-25 23:05:19 19694 10

原创 SpringMVC实现文件上传

1、spring-mvc配置文件首先在springmvc的配置文件中配置署名为multipartResolver的StandardServletMultipartResolver<bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver"/>2、web.xml配置文件在前端控制器配置文件上传的限制

2021-11-17 12:23:41 318

原创 setContentType与setCharacterEncoding区别(简单易懂)

1、responserequest.setCharacterEncoding("UTF-8");使用UTF-8对response回写数据进行编码。response.setContentType("text/html;charset=UTF-8")使用UTF-8对response回写数据进行编码,同时通知浏览器对response回写的数据使用UTF-8进行解码。2、requestrequest.setCharacterEncoding("UTF-8");通知浏览器对reque

2021-11-10 15:25:56 993

原创 SpringMVC无法加载Jquery的原因

一、路径错误可以按照如下文件路径创建:并在相应的.jsp文件中引入该资源二、未开放静态资源访问权限可以在spring的xml配置文件中添加:<mvc:default-servlet-handler></mvc:default-servlet-handler>三、jquery文件版本问题尝试使用不同的原始版本与min版本,多试几次。(ps:本人IDEA2019版使用jquery-3.3.1.js会报错,但使用jquery-3.1.1.min..

2021-11-03 23:48:04 678

原创 获取当前URL的参数

对于一个URL:http://localhost:8080/proj?name=lisi 如何获得参数name后面的值呢?直接上代码function getParameter(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)","i"); var r = location.search.substr(1).match(reg); if (r!=null) return (r[2.

2021-11-03 10:43:29 157

原创 XML名称空间

命名空间是XML中Schema约束中的一个概念,简而言之就是将一个前缀名关联到某个名称空间的URI上。<?xml version="1.0" encoding="UTF-8"?><student:学生 xmlns:student="http://www.xml.org/class1/schema"> <student:姓名>小明</student:姓名> <student:年龄>10</student:...

2021-10-22 22:20:12 154

原创 (JAVA)String字符串不可变性

何为字符串不可变性,就是字符串一旦确定就不可以更改,注意此处不能更改的是字符串本身而不是字符串的引用数据,String s1="abc";不能更改的是“abc”而不是s1。通过String的定义我们也可以得知其中定义的char[]为final。下面我们将通过几个小代码说明这个问题:一、直接创建我们都知道,JAVA存储单元主要涉及到三个单元栈、堆与方法区。当我们直接定义字符串时,栈中存储对应字符串的地址,方法区存储具体字符串。 Strin...

2021-09-13 17:02:09 401 2

原创 JAVA中权限修饰符的访问权限

JAVA中的权限修饰符共有四种,由大到小依次为:public、protected、default(一般不写)、private。权限修饰符主要用来修饰类与类成员、类方法、构造器。1、修饰类修饰类的只有两个权限修饰符:public与default。 同包 全局 public √ √ default √ × 2、修饰类中成员、方法、构造器 类内部 同包 不同包子类 全局 private √ ×...

2021-09-06 10:33:54 180

原创 C++拷贝构造函数为啥不能传值

拷贝构造函数就是用一个已创建好的对象去初始化另一个对象,我们用一个案例去说明:#include <iostream>using namespace std;class example{public: example(int a)//构造函数 { this->num=a; } example(example &exp) { this->num=exp.num; } int num;};int main(){ example exp

2021-08-28 20:18:43 731

原创 C++中如何让函数有多个返回值

我们知道C++函数中只允许有一个返回值,那我们如何让函数有多个返回值呢?请看这样的一个例子:对于函数输入一个数组,获得该数组中最大值与最小值。1、将函数输入参数与返回值一起作为实参void max_min(int arr[],int length,int &min,int &max){ min=arr[0]; //初始化 max=arr[0]; for (int i = 0; i < length; i++) { min=min<arr[...

2021-08-27 21:46:50 3945

原创 (C++)静态局部,静态全局,局部、全局变量间的区别

局部变量:作用域为函数内,在进入函数中自动创建,离开函数时自动消失。简而言之就是函数中定义的变量,无法在函数外访问,且在每次函数调用时自动创建,离开函数时自动消除。void func(){ string str="abc"; //局部变量}int main(){ int a; //局部变量 double pi=3.14;//局部变量}全局变量:在函数外定义的变量,且作用域为整个项目中所有文件,意思就是main函数与子函数可以访问,除了定义全局变量的文件可以访问,项

2021-08-27 21:04:42 409

原创 数字字符串与int,double类型数据的转换

sstream定义了三个类:istringstream、ostringstream和stringstream分别用来进行流的输入、输出和输入输出操作。sstream经常用来进行不同类型数据间转换,使用的时候需要在头部增加#include <sstream>。#include <iostream>#include <sstream>using namespace std;int main(){ //char转double stringstr...

2021-08-27 16:42:23 419

原创 (C++)指针数组、数组指针、函数指针与指针函数区别

C++初学者很容易被这几个概念弄混,简而言之:指针数组:是一个数组,数组内元素为指针数组指针:是一个指针,指向一个数组指针函数:是一个函数,函数返回值为一个指针函数指针:是一个指针,指向一个函数下面我们再看看具体定义与内容:1、指针数组int arr_value[3];int *arr_p;int *arr[3];我们知道第一行第二行代码分别是定义数组与指针,那第三行是是定义啥?这就涉及到C++中运算符优先级的问题了,arr先与[]结合那它就是数组,...

2021-08-27 12:44:54 1222

原创 常见的几种排序(C++)

排序经常需要用到交换函数,其代码为://交换函数void swap(int* a,int* b){ int temp=*a; *a=*b; *b=temp;}1、冒泡排序//冒泡排序void bubble_sort(int arr[],int length){ for (int i = 0; i < length-1; i++) { for (int j = 0; j < length-i-1; j++) { if (arr[j]>arr[

2021-08-24 11:05:03 853 2

原创 C++实现二叉树的非递归遍历

在前面C++实现二叉树的递归遍历(详细步骤与代码实现)我们实现二叉树通过递归遍历实现了先序、中序与后续遍历,那么如何通过非递归遍历实现先序、中序与后续遍历呢?我们先看看非递归遍历规则。还是同样的二叉树1、首先将二叉树根节点A放入栈中,并将节点是否打印标签设为false。2、再将节点A从栈中弹出,将其左右子树节点BF入栈,打印标签设为false,将A再次入栈,此时是否打印的标签设为true(注意这里三个节点入栈顺序与先序、中序与后续遍历方式有关,入栈顺序与遍历顺序正好相反,...

2021-08-23 12:05:24 1749 2

原创 C++中int与char指针数组、数组指针差别

我们首先弄清楚指针数组与数组指针的概念。指针数组:指针数组是一个数组,只不过数组里面元素全是指针 int* p[3]; int num[3]={1,2,3}; for (int i = 0; i < 3; i++) { p[i]=&num[i]; cout<<p[i]<<endl; }这里的p[3]就是指针数组,里面存储三个指向int型的指针。数组指针:数组指针是一个指针,指针指向某个数组的首地址 int num[3]={.

2021-08-22 21:04:21 2674

原创 C++栈的应用——后缀表达式求解

在前面“C++栈的应用——中缀转后缀”我们将我们所熟知的中缀表达式转为后缀表达式,那么如何通过后缀表达式获得原表达式的值呢?将后缀表达式:“2963/+5-*4+”从左往右逐个字符进行遍历获得操作符,同时建立一个空栈stack。一、当操作符为数字时,直接入栈。二、当操作符为运算符时,取栈顶数字做右计算数值并弹出,再取一个栈顶数字做左计算数值并弹出。其与运算符做四则运算,结果入栈。三、当遍历完成后,从栈中弹出唯一数字,该数字就是这个后缀表达式运算结果。下面提...

2021-08-22 19:32:10 1365

原创 求二叉树叶子数与高度(C++)

我们首先来看一看二叉树中叶子数与高度的定义:叶子数:对于一个二叉树的节点,若其既没有左子树又没有右子树,那它就是叶子节点。整个二叉树的叶子数为所有叶子节点个数。高度:二叉树高度又称深度,其为根节点到叶子节点路径的最大值。下面提供实现代码:#include <iostream>using namespace std;//定义二叉树节点class binarynode{public: char data; //节点数据域 binarynode* lchild

2021-08-22 10:17:08 3024 1

原创 C++中指针、地址、内存与字节的关系

想必大家在刚开始学习C++时,经常会听到指针、地址、内存与字节的概念,但对于初学者,一个指针就理解的磕磕盼盼,很难分清上面几个概念的区别。下面给各位C++小萌新分享一下我对这几个概念的理解,可能不够专业,但一定能够帮助你对这几个概念的理解。1、字节大家在学刚学习C++时,一定见过这样的图表数据类型 占用空间 short(短整型) 2字节 int(整型) 4字节 long(长整型) 4字节 long long (长长整型) 8字节...

2021-08-21 18:50:51 5607 11

原创 C++实现二叉树的递归遍历(详细步骤与代码实现)

我们知道数据的存储结构分为线性与非线性。线性就是1对1的结构,像栈与队列都属于线性结构。那什么是非线性的结构呢?非线性即1对n的结构这更符合常规情况,线性结构本质上属于非线性结构中的一种特殊形式,像树就属于非线性结构。但是树并不适合编码操作,需要将其转为二叉树,既然二叉树是一种数据存储的结构,那就涉及到数据遍历的问题。有关二叉树的遍历有三种方式,即先序遍历、中序遍历与后续遍历。下面就根据上面的二叉树简单谈一下何为先序遍历、中序遍历与后序遍历:1、先序遍历(DLR) ...

2021-08-20 19:12:55 4530 1

原创 C++栈的应用——中缀转后缀

中缀表达式就是我们平时运算表达式,其特点是运算符总是处于两个运算对象之间。但是该表达式计算机处理起来较为麻烦,会将其转写成后缀表达式,后缀表达式也叫逆波兰表达式,后缀表达式的特点是每个运算符都置于两个运算对象之后。那么中缀表达式如何转为后缀表达式呢?将中缀表达式:“2*(9+6/3-5)+4”从左往右逐个字符进行遍历获得操作符,同时建立一个空栈stack。一、当操作符为数字时,直接打印输出二、当操作符为左括号时,将其存储到栈stack中成为元素符三、当操作...

2021-08-20 15:37:01 1109

原创 C++实现队列的顺序存储与链式存储

队列是一种特殊的数据存储结构,与栈不同的是(C++实现栈的顺序存储与链式存储),其数据存储与访问顺序为先进先出,形式如下:下面附上队列顺序存储与链式存储的实现代码:1、顺序存储#include <iostream>using namespace std;const int max_size=1024;//定义队列class seqqueue{public: void* data[max_size]; int size;};//初始化队列se...

2021-08-19 17:10:47 1206

原创 C++实现栈的顺序存储与链式存储

栈是一种特殊的数据结构,栈中数据先进后出,且栈中数据只能从头部出栈,能直接访问的数据也仅为栈的头部数据,要想访问下面的数据则需要将前面的数据逐个出栈后才可访问。下面通过一个word撤销的案例来解释:我们用word写paper时,首先需要创建一个空白文档(即一个空栈),然后对这个空白文档进行一系列操作每个操作都是一个新的version,即数据存储压栈的操作。但是paper写完后(version4),我们发现写的paper有问题需要修改,想要回到version1,这就...

2021-08-19 11:13:28 1321

原创 C++实现企业链表

企业链表是企业中经常使用的一种链表,因此被称为企业链表。我们首先来看看他的结构与传统结构有啥不同:对于一个类或结构体 ,其中包含我们需要存储的数据data与一个指针变量p_next,我们将p_next串起来便形成了企业链表,那它和普通链表有何区别呢?普通链表中p_next指向的是下一个p_next与data组成的类或结构体整体的地址,而企业链表p_next仅仅指向下一个p_next的地址。因此链表中并涉及任何data数据,企业链表实际存储的数据结构为:理论说...

2021-08-18 10:55:33 1154 2

原创 C++指针偏移在类中的应用

我们知道通过指针访问数据时,并不是依据变量名,而是依据变量内存地址与指针的偏移量大小,具体介绍见https://blog.csdn.net/qq_41696018/article/details/119764140。现在我们看一个例子,有两个类people与animal:class people{public: int age_p; double weight_p; double height_p;};class a...

2021-08-17 20:56:29 609

原创 C++指针偏移原理

在C++中我们可以通过指针方便的访问各种类型数据,但我们都知道指针只是一个头地址,而我们需要遍历的数据通常占有大量的空间,那么指针是如何遍历其中的数据呢?这就涉及到指针偏移的一个问题,下面我们看个例子:这里使用了十进制显示地址函数ip2decimal()。详情见https://blog.csdn.net/qq_41696018/article/details/119749826?spm=1001.2014.3001.5501 int a[4]={1,2,3,4}; int* p=...

2021-08-17 20:23:35 3221

原创 C++中类与结构体所占内存分析

我们知道C++中不同类型数据占不同字节的,具体见下表:数据类型 32位 64位 char 1 1 int 4 4 float 4 8 double 8 8 那么对于一个结构体或类占多少字节呢?我们首先定义一个类:class people{public: int age_p; double weight_p; char name[5];};机灵的小伙伴可能一口说出这个类所占的字节...

2021-08-17 12:56:33 1041 1

原创 C++显示十进制内存地址(无需理解,拷贝即用)

我们在C++中显示变量地址均为十六进制的,不具有直观性,尤其在分析连续存储的变量内存地址时。下面分享一个可将十六进制地址转为十进制地址显示的代码,需要注意的是,需要在文件头包含sstream与string。#include <iostream>#include <sstream>#include <string>using namespace std;int ip2decimal(void* ip){ stringstream str...

2021-08-17 10:20:46 2874 3

原创 单向循环链表解决约瑟夫问题(C++)

在大厂面试时,经常会被提出实现约瑟夫问题。那么什么事约瑟夫问题呢?约瑟夫问题:n个人围成一个圆圈,分别编号1~n,从第一个人开始顺时针报数为1,报到第m的时候。令其出列,然后再从下一个人重新开始报数,当从1报到m时,报m的人继续出列,以此重复下去,直到所有人都出列为止,求出列的序号。当m=8,n=3时,删除序列如下所示:最终删除的序列为:3、6、1、5、2、8、4、7。C++中有一种数据存储结构与这种首尾相连的环形结构极为相似——单向...

2021-08-16 16:11:54 6554 3

原创 C++单向循环链表实现

单向循环链表与单向链表十分相似,具有关单向链表详细理论与实现过程可见上一篇文章https://blog.csdn.net/qq_41696018/article/details/119705003。实际上单向循环链表与单向链表仅仅有尾部node指针域指向不同的差别,对于单向链表尾部node由于没有后续node,其指针域需指向NULL。而单向循环链表将尾部node的指针域指向头部node,首位相连构成单向循环链表,具体形式为:具体实现代码为:1、链表定义//定义节点class...

2021-08-15 20:03:02 2789 1

原创 最详细的C++单向链表实现

链表是数据结构中常见的一种数据存储形式,其在物理存储单元上是非连续的存储结构,即其数据存储的空间并非连续的内存空间。这种存储方式的优点是可以动态分配内存空间,不会造成内存的浪费和溢出,同时链表对于执行插入、删除等操作十分简便,不需要移动大量元素,但是其相对于连续空间存储的数据相比,遍历速度较慢。1、那么链表到底长啥样呢?链表由多个node(节点)组成,每个节点中由两部分结构组成,data中存储需要存储的数据,next为一个指针,其指向下一个node的地址。当...

2021-08-15 10:27:05 14617 21

原创 创建动态二维数组(C++)

方法1:使用vector 容器#include <iostream>#include <vector>using namespace std;int main(){ //创建arr[4][3]并赋初值0 vector<int> a(3,0); vector<vector<int>> arr; for (int i = 0; i < 4; i++) { arr.push_back(a); }

2021-08-13 20:09:33 1007 2

原创 年月日、年积日、简化儒略日、GPS周之间相互转换(C++)

在学习GNSS过程中,不管是数据下载又或是不同文件名中时间的匹配,经常会遇到需要在不同时间之间转换,笔者在此归纳了几种经常会遇到的时间转换:1、年月日转年积日 3、年积日转简化儒略日 5、简化儒略日转GPS周2、年积日转年月日 4、简化儒略日转年积日 6、GPS周转简化儒略日笔者在此同时分享一个小软件,用于帮助大家检验通过代码转换的结果:链接:h...

2021-08-12 16:25:26 8048 2

原创 矩阵基本运算(C++)

闲着没事,将以前利用C++实现的矩阵各种运算整理了一下,分享一下,矩阵运算包括:1、二维矩阵创建6、两矩阵上下叠加2、两矩阵相加 7、矩阵左右叠加3、两矩阵相减 8、矩阵转置4、两矩阵相乘 ...

2021-08-11 17:18:42 28445 8

原创 GNSS精密轨道产品sp3与精密钟差产品clk批量下载(Linux Shell)

一、精密轨道sp3下载 目前有众多研究机构提供相关卫星产品,笔者主要选取武汉大学的wum产品与德国GFZ的gbm产品,读者可根据自身需要进行添加其他研究机构。具体脚本代码如下:#!/bin/bash if [ $# != 4 ]; then #判断输入格式是否正确 echo "Usage: wget_sp3 YYYY DAY ac_name outDir" echo "Usage: wget_sp3 2...

2021-08-11 16:29:30 2000

GPSCalendarTrans.exe

需要用到年月日、年积日、简化儒略日、GPS周转换的小伙伴

2021-08-15

空空如也

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

TA关注的人

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