自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java I/O模型

1.I/O(Input/Output)的即为输入输出。运算器控制器存储器输入设备输出设备。IO描述了外部设备和内部设备的通信。从应用程序的角度来看,一个进程为了保证稳定性和安全性,将地址空间划分为用户空间和内核空间我们平常运行的应用程序都是在用户空间上,内核空间处理系统态级别的资源操作,入文件操作、进程通信、内存管理等等。所以说想要进行IO需要依赖内核空间的能力。3.我们平常进行开发的过程中,最常接触的就是磁盘I/O和网络I/O。在应用程序的视角看,

2023-08-01 23:31:46 319

原创 HTTP协议

认识HTTP协议1.HTTP协议(全称为“超文本传输协议”),是一种应用非常广泛的应用层协议。2.HTTP往往是基于传输层的TCP协议实现的(HTTP1.0,HTTP1.1,HTTP2.0都是基于TCP实现的,HTTP3.0基于UDP实现),在使用中HTTP1.1最为热门。3.模拟一个HTTP请求和HTTP响应的例子:4.HTTP协议是一个文本格式的协议,可以通过抓包工具(Fildder)来分析协议细节。下面介绍Fildder的具体使用。用Fiddler来分析HTTP协议的细节.

2022-05-29 21:19:05 354

原创 网络编程的基本知识

目录两种不同的网络互联规模三种方式组网方式网络通信的基础IP地址端口号认识协议及其作用协议的分层协议分层的意义OSI七层网络模型TCP/IP五层(四层)模型物理层数据链路层网络层传输层应用层网络设备所在的分层网络分层当中的一组重要概念(封装和分用)应用层到传输层传输层到网络层网络层到数据链路层数据链路层到物理层物理层到数据链路层数据链路层到网络层网络层到传输层传输层到应用层总结两种不同的网..

2022-04-09 14:46:51 601

原创 文件操作和IO

目录认识文件文件的分类如何区分文本文件和二进制文件?文件的目录结构文件路径绝对路径相对路径Java当中的文件操作1.文件系统的相关操作通过绝对路径找到文件通过相对路径来找到文件2.文件内容的相关操作FileInputStream无参数版本读一个文件两个参数版本读取文件FileOutputStream一个参数写入文件一次写一个字节一个参数写入文件一次写多个字节注意,写文件操作每次打开文件都会将文件内容全部清空,再从起始位...

2022-04-08 08:44:29 961

原创 每日两题9

目录另类加法题目介绍题目分析代码走方格的方案数字题目介绍题目分析代码另类加法题目介绍题目分析1.想要解决这道题首先要了解到三种位运算:^ , & , <<2.将1和2的二进制编码按位异或(^)运算,可以到3的二进制编码,此时1和2的二进制编码按位与(&)运算再左移一位结果为0.3.可以得出结论若两个数字的二进制编码进行按位与和左移一位操作过后结果为0,则此时两个数字按位异或后的结果为两个数字相加的结果。如.

2022-04-04 14:17:01 412 1

原创 每日两题2

目录倒置字符串题目介绍题目分析代码:排序子序列题目介绍题目分析代码:倒置字符串题目介绍题目分析分成两步解题:1.将字符串化为字符数组后全部逆置。2.将逆置后的字符数组中每个单词逆置,再将字符数组化为字符串后打印。代码:import java.util.*;public class Main { //定义一个逆置数组的方法 public static void reverse(char[] ch,int st

2022-03-31 16:09:20 62

原创 进程和线程

进程认识进程1.进程就“跑起来”的程序。2.那些.exe格式的文件都称为“可执行文件”,在双击这些文件之前,这些文件都会“静静”的待在硬盘上,不会对系统有任何影响;双击这些文件之后,操作系统会将这些文件加载到内存当中,并让CPU开始执行exe内部的一些指令(exe里面就存了很多这个程序对应的二进制指令),这时exe文件就给执行起来了,开始进行一些具体的工作,把这些运行起来的可执行文件称为进程操作系统是如何管理进程的1.先描述进程(明确一个进程上的相关属性)。此处描述就是用就是.

2022-03-28 21:03:12 513

原创 每日两题4

目录计算糖果题目介绍题目分析代码进制转换题目介绍题目分析代码计算糖果题目介绍题目分析设A-B,B-C,A+B,B+C三个值分别为a,b,c,d,可以列出表达式为(a + c) / 2 = A,(c - a) / 2 = B1,(b + d) / 2 = B2,(d - b) / 2 = C;通过限制条件可以知道当B1 = B2时,才能求出A,B,C的值。代码 public static void main(String..

2022-03-25 15:02:21 483

原创 每日两题1

组队竞赛题目介绍题目分析1.将数组输入,且数组的容量始终为所分组数的三倍。2.将数组排序,后分组, 要怎样分组使得水平值总和最大?由推导可以知道,每次要到找到数组元素下标为array.length - 2 * ( i + 1),其中i循环至所分组数。代码 public static void main(String[] args) { Scanner scanner = new Scanner(System.in); ...

2022-03-24 18:31:13 275

原创 Top-K问题

问题介绍:创建一个优先级队列(堆)(实际上为一棵二叉树,每个结点始终比左右结点大或者小的二叉树)。例如,求一个数组array当中的最小的k个元素,可以遍历数组,用前k个元素组成一个大堆(此时堆顶元素为最大元素);继续遍历数组中array.length - k个元素,当遍历到的元素小于堆顶元素,将堆顶元素出堆,此元素如堆,再重新调整为大堆,继续遍历直至数组遍历完。此时堆中的k个元素为最小的k个元素。注意:如果需要求最大的k个元素,则情况相反。利用Java自带的PriorityQueue类解决求

2022-03-19 13:55:02 663

原创 从前序与中序遍历序列构造二叉树——从后序与中序序列构造二叉树

一.从前序与中序遍历序列构造二叉树二.从后序与中序遍历序列构造二叉树

2022-03-04 19:37:40 764

原创 判断是否为对称二叉树——二叉树的最大深度——判断一棵二叉树是否是平衡二叉树

判断是否为对称二叉树题目:分析:定义分别判断左右子树的方法,设置两种递归结束条件:1.对应二叉树结构不相同。2.对应二叉树结点val不想等。代码:public boolean isSymmetricChild(TreeNode leftTree,TreeNode rightTree) { if (leftTree == null && rightTree == null) return true; //设置两种递

2022-03-04 15:15:29 320

原创 读入一串先序遍历字符串创建二叉树后中序遍历

目录题目:分析:代码:题目:分析:这道题为ACM模式,不提供任何类和方法。1.创建二叉树结点类。包含val,left,right域和构造方法。2.定义方法遍历先序遍历序列构建二叉树,注意:1.创建根结点root,利用先序遍历序列,使用递归回溯创建root的左右子树且应将i设为静态变量。2.利用str.charAt(i)遇到'#'跳过,否则创建结点存值,最后返回根结点root。3.定义中序遍历方法。4.可能有多组测试数据,设置循环实现多组输入。.

2022-03-01 16:12:18 622

原创 二叉树的最近公共祖先(两种思路)

目录题目:思路一:思路二:题目:思路一:分析:直接通过递归在左右子树寻找目标结点。1.通过分析二叉树搜索树可以得知:p,q两个结点在二叉树上存在的情况如下有分别存在与不同子树,存在与同一棵子树。2.设置递归终止条件:当前root为空时结束当前进行的方法。遇到p == root 或者q == root 则直接返回当前root。3.通过子问题思路,分别递归搜索左右子树。代码:public TreeNode lowestCommonAnces.

2022-02-28 21:46:43 248

原创 判断二叉树是否为完全二叉树——二叉树的层序遍历

一.判断二叉树是否为完全二叉树题目:分析:二叉树满足构成完全二叉树的条件如上图所示1.可以创建一个队列,先将不为空的根结点放入队列中。2.在队列不为空的情况下,将队头元素弹出并用cur接受,在cur不为空的情况下将cur的左右子树放入队列当中;cur为空则结束所有循环。3.此时判断队列当中剩余的元素是否全为空,为空则次二叉树为完全二叉树,否则不为完全二叉树。代码:import java.util.*;public boolean isCompleteTree (.

2022-02-28 16:46:31 801

原创 Java-面试链表-反转链表

题目介绍:题目分析与另外一个反转链表相似,不同点是:本题只进行部分反转,所以可以分成三步解题:1.切割--》2.反转--》3.拼接。1、切割切割的目的是后续反转更易进行。需要找到left为前一节点,以便存储left,还需要找到right。为了方便按照left和right移动一个指针prev,建立一个新的链表头,接到head前。 ListNode newHead = new ListNode(-1); newHead.next = head;

2021-12-09 14:17:09 320

原创 Java(抽象类,接口)

目录抽象类认识抽象类例子注意事项接口认识接口例子注意事项实现多个接口三个特殊接口(Comparable,Comparator,Cloneable)Comparable接口Comparator接口Cloneable接口所以这种方法是深拷贝还是浅拷贝?抽象类认识抽象类抽象类是指含有抽象方法的那种类,抽象类通常没有具体的实现;因为多个类中都需要重写同名方法,因此将这种方法定义为abstract修饰的抽象方法,存放在abstract修饰的抽象类当中

2021-12-08 15:06:22 485

原创 Java-面试链表- 1、判断是否构成回文结构 2、删除链表倒数第k个节点

判断链表是否构成回文结构题目介绍:给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。如图,两组链表的val值便构成回文。题目分析:分析:判断链表是否回文,应将链表倒数第一个节点值和第一个节点的值,依次比较。思路:1、将链表后半段反转。①定义快慢引用都指向链表头,快引用一次向后走两个节点,慢引用一次走一个节点,直到快引用为空或者next域为空,两个引用都停下。找到链表中间节点。②改变节...

2021-12-02 15:25:52 252

原创 Java数据结构(顺序表、链表)

顺序表顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。为什么要写一个顺序表,直接写一个数组不就可以了吗?不一样将数组和其方法写到类里,把其称为顺序表。后续就可直接用顺序表面向对象,而不用重复定义。定义一个顺序表public class MyArrayList { public int[] elem; public int usedSize;//有效的数据个数}1.顺序表插入和删除元素必

2021-11-20 14:26:58 596

原创 数据结构(时间复杂度和空间复杂度)

目录时间复杂度大O渐进表示法简单求时间复杂度复杂时间复杂度空间复杂度时间复杂度一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数(一般找循环的语句),为算法的时间复杂度。一般只找执行语句次数最多的那一个。大O渐进表示法1、计算简单的时间复杂度此时计算F(N) = N^2 + 2*N + 10N = 10 F(N)=130N = 100 F(N)=10210N = 1000 F(N)=1002010...

2021-11-04 14:47:47 138

原创 初始Java(类和对象)

了解面向对象和面向过程面向过程面向对象类和类的实例化类的组成class <class_name>{ //成员属性 //成员方法}实例化一个的对象class Person{ //字段 属性 成员变量(普通成员变量,静态成员变量) public String name; public int age; //方法->行为 (普通成员方法,静态成员方法) public voi...

2021-11-01 21:19:33 61

原创 初识Java(数组)

认识数组数组是存储一组相同数据类型的数据的集合。数组的定义第一种定义方法且初始化第二种定义方法但不初始化第三种定义数组的且初始化的方式数组的基本用法1.访问数组内容数组的长度无需通过计算求得,可以通过arr.length直接求得。当数组下标为负数或者超出数组大小范围,会发生数组越界,编译器会报错,如:2.在数组上写入数据3.数组的遍历①for循环遍历数组 for (int i = 0;i < arr....

2021-11-01 21:18:24 264

原创 初识Java(顺序循环,分支结构,循环结构)

顺序结构特点:程序的执行与代码的执行有关 System.out.println("1") System.out.println("2"); System.out.println("3"); System.out.println("4");以上代码打印的结构为1,2,3,4。若以上代码语句的顺序改变,使得代码的执行改变,程序的执行也会跟着改变。分支结构if语句1. if(布尔表达式){ 语句块;//条件满足时执行

2021-10-25 18:27:47 5023

原创 初识Java(类型,类型转换,算术运算符,逻辑运算符,位运算符,移动位运算符,关系运算符)

代码分析Java数据类型和数据类型提供的包装类1.在Java中有8种基本数据类型,分别是byte,short,int,long,float,double,boolean,char.2.Java为这8种基本数据类型提供了8种包装类,分别是Byte,Short,Integer,Long,Float,Double,Boolean,Character,int,char;除了int和char的包装类写法稍有不同,其余的只需首字母大写。...

2021-10-16 11:17:55 318 2

原创 数据在内存中的存储

算术转换介绍在进行算术运算或者比较时,符号左边的数值类型会被转换为与符号右边相同例子//算术转换int i;int main(){ i--;//-1 //sizeof - 返回的是无符号整数(size_t) //i本来是-1,与size_t比较会发生算术转换(int-->size_t) //-1在内存中为全1,变为无符号数后结果很大 if (i > sizeof(i))//算术转化后的-1结果大于4 { printf(">\n"); } else

2021-10-10 15:57:13 137 3

原创 结构体和位段(笔试)

结构体结构体介绍结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。结构体声明1.比如描述一个学生//描述一个学生的结构体struct Stu{ char name[20];//名字 int age;// 年龄 char sex[5];//性别 char id[20];//学号};//特殊结构体声明//匿名结构体声明struct{ int a; char b; float c;}x;struct{ int a; cha

2021-09-25 16:31:37 86 2

原创 动态内存分配

目录介绍动态内存分配malloc()1.函数介绍:2.总结:free()1.函数介绍:calloc()1.函数介绍2.总结realloc()1.函数介绍2.总结:常见动态内存的问题1.对NULL指针的解引用操作2.对动态开辟的空间越界访问3.非动态开辟内存使用free释放4.使用free释放一块动态开辟内存的一部分5.对一块动态内存多次释放6.动态开辟的内存忘记释放介绍动态内存分配1.动态内存是指在编写程序时...

2021-09-23 20:41:47 152 4

原创 两种判断当前机器是大端储存还是小端存储(面试)

大端存储和小段存储介绍大端存储:大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放。 2).小端存储:小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。举个例子:定义一个整型变量a,赋值为1,用16进制表示为0x 00 00 00 01,

2021-09-20 16:41:18 526 1

原创 模拟字符串函数实现

strcat()1.函数功能:在目标字符串后追加一个源字符串char * strcat ( char * destination, const char * source );函数返回目标字符串的起始地址。2.实现原理:找到目标字符串末尾的'\0',将其覆盖追加源字符串 3.代码:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include&...

2021-09-20 12:46:50 88

原创 在规律矩阵中寻找某个数字

分析要求代码时间复杂度小于O(n),若矩阵为n行n列,采用逐个寻找时间复杂度为O(n^2),故不可逐个判断。思路把矩阵数据存放在二维数组中,从右上端开始寻找数字,逐渐排除。例假如寻找数字为7,先从右上开始寻找,发现其中数字小于7,排除第一行;向下寻找发现数字也小于7,排除第二行;再向下寻找发现其中数字大于7,向右逐一寻找排除。代码...

2021-09-15 19:57:18 214

原创 用函数指针改进简易计算器

了解函数指针1.顾名思义函数指针是用于存放函数地址的指针。2.可以通过函数指针调用函数常规方法写计算器代码:1.实现基本运算的函数:2.打印菜单3.主函数实现过程用储存函数指针的数组写利用函数指针将四种运算封装成函数...

2021-09-11 21:28:37 158

原创 构建函数实现实现判断一个字符串是否为另外字符串的旋转后的字符串

方法1(每次左旋比较法):运用到左旋字符串函数,在上一篇博客有介绍原理:利用左旋字符串函数在长度范围内每次左旋一个字符,每次左旋完的字符串利用strcmp()函数与比较字符串进行比较,若左旋完的字符串与比较字符串相同,返回1。代码:方法2(利用库函数的穷举法):通过多次尝试,可以知道一个规律:char arr1[]="AABBCCDD"所有左旋结果都包含与"AABBCCDDAABBCCDD"中,所以只需在arr1后追加一个arr1再利用是strstr()函数鉴别。strstr(.

2021-09-10 19:38:22 58

原创 实现一个函数可以左旋字符串中的k个字符

方法1(暴力解法):原理:第一步:先将字符串首元素存放在一个临时空间中。第二步:字符串中首元素后所有元素往前移动一个位置。第三步:储存在临时空间中的元素放到字符串末尾的空白处。左旋多个字符需要循环以上步骤。代码:方法2(多次倒序):原理:经过多次尝试发现要想左旋字符串中k个字符可以通过三次逆序。例如:"abcdef"通个三次逆序可以实现左旋2个字符代码:...

2021-09-10 16:40:28 123

原创 sizeof()和strlen()对指针和二维数组的计算(笔试)

储存指针的指针指针①②二维数组

2021-09-09 16:49:03 210

原创 sizeof()和strlen()对数组的计算(笔试)

整型数组库函数strlen介绍库函数strlen用于求字符串长度,求长度的过程中从指定位置的地址出发,遇到'\0'停止字符数组①②

2021-09-09 15:30:41 47

原创 初识C语言

变量变量的定义有很多种类型,存在这么多的表达方式是为了表达各种值,例如:

2021-09-09 15:22:22 54

原创 vs编译器对函数不安全报错的解决办法(C4996)

大家在使用vs编译器开始编译时可能会遇到一个关于函数的不安全报错,今天和大家分享几种实用的解决方法~问题介绍会出现的错误提示信息:严重性 代码 说明 项目 文件 行 禁止显示状态错误 C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WA...

2021-06-06 01:17:33 930 5

原创 第一篇博客,记录开始

为什么想写博客作为一名编程技术的初学者,学习编程的时间不长,目前初步掌握C++编程语言,正在学习Python语言。在学习g'chong

2021-06-04 13:39:05 63

空空如也

空空如也

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

TA关注的人

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