- 博客(63)
- 收藏
- 关注
原创 XML复习
XML 全称(extensible Markup Lanage) 可扩展标记语言它是一种数据的表示形式, 可以存储复杂的数据格式以及我们自己定义的格式.XML经常别用来存储和传输数据存储XML数据格式的文件叫做XML文件.
2023-04-09 16:43:13
447
原创 Maven工具复习
Maven是一个工具提供了一套标准的项目结构提供了一套标准的构建流程(编译, 测试, 打包, 发布)Maven 提供了一套简单的命令来操作这些工做, 也就是项目的构建提供了一套依赖管理机制使用第三方软件包的时候, jar包, 我们可以直接从Maven中央仓库种导入。之前是 下载jar包, 复制jar包到我们自己创建的目录种, 再把Jar包加入到工作环境中(比较麻烦, 如果Jar包很多的话, 要下载, 并且要加入到工作环境中, 手动导入jar包很繁琐)
2023-04-09 12:31:49
569
原创 动态代理技术复习
这个代理就相当于是劳工, 帮我们去做我们能做到, 但是不想做的事情, 比如搬砖…动态代理是面向切面编程的核心思想他是对我们的方法进行代理。
2023-04-09 12:30:46
528
原创 IO流复习
创建字符缓冲流对象用输出缓冲流读取文件中的数据, 并放到自定义的List容器中对List中的数据进行排序通过Collections 工具类来实现排序, 但是需要通过自定义比较器对象 Comparator 来实现排序。将List中排好序的数据通过循环的方式用字符输出缓冲流来输出到指定的文件中代码:6.
2023-04-08 13:15:45
307
原创 2022第一篇博客
代码拿去直接用吧,很简单 目录 一:头文件 二.c文件 三:测试文件 一:头文件 promise.h #define _CRT_SECURE_NO_WARNINGS 1 #pragma once #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct SList { char question[100]; char answer[100]; struct
2022-01-10 13:36:44
532
4
原创 删除数组中的重复项
第一种方法:暴力求解 遍历数组,从第i个元素开始看 从第i+1个元素开始与第i个元素进行比较,若相等则从第i+2个元素开始依次前移,并且数组长度减一,不相等则跳出比较 代码: int removeDuplicates(int* nums, int numsSize){ if(numsSize==0||nums==NULL){//排除捣乱的数组 return 0; } for(int i=0;i<numsSize;i++){//对i到numsS
2021-10-18 20:41:34
252
1
原创 数据结构和算法(2)断更一段时间,寒假开始更新
查找最大值 利用二分查找通过递归来找最大值 首先将数组通过中间元素arr[mid]将数组分为两个部分,两个部分分别递归,直到找到最大值 本质是一个多叉树,在计算树的所有的节点的时候,利用栈玩了一个后序遍历,每一个节点都通过自己的子节点给自己汇总信息之后才能够继续向上返回,栈空间就是整棵树的高度只需要在一个高度上进行压栈,这就是一个递归的过程 代码 public class Code6_getMax { public static int getMax(int[] arr).
2021-10-11 18:29:43
184
原创 数据结构和算法(1)写的有些乱这个系列只是给自己看的
时间复杂度是估计常数操作的指标 常数操作 跟数据量无关的,是一个固定时间的东西,和数据量有关的就不是常数操作 比如数组的寻址,和数据量没有关系,只想找到i位置的数 加减乘除,位运算都是常数操作 对于链表来说这不是一个常数操作,对于单链表只能从左到右的一个一个去找 选择排序: 遍历一下找到最小值,并记录下来,并与(0)位置处的值交换 第一次:对数组中的n个元素分别看一眼,看到的每个数都要与之前找到的最小值进行比较,直到看完找到最小的,放在索引为0的位置处,需要看n眼,比较n-...
2021-10-05 21:18:24
231
原创 java容器(9)Map接口
目录 一:Map接口介绍 二:Map中常用的方法 三:HashMap_添加元素 代码 四:HashMap_获取元素 第一种方法 代码 第二种方法 代码 第三种方法 代码 五:Map容器并集操作 代码 六:HashMap_删除元素 代码 七:HashMap_判断key或value是否存在 代码 一:Map接口介绍 Map接口定义了双列集合的存储特征,他不是Collection的子接口,双列集合是以Key与Value的特征进行存储的(类似于数学中的结合) ...
2021-10-01 15:08:19
149
原创 java容器(8)TreeSet容器类
一:TreeSet介绍 TreeSet是一个可以对元素进行排序的容器,底层是用TreeMap实现的,内部维持了一个简化的TreeMap,通过Key来存储Set的元素,TreeSet需要对内部元素进行排序,因此需要排序规则 排序规则的实现方式 ●通过元素自身实现比较规则(在类的内部定义比较方法) ●通过比较器指定比较规则 二:TreeSet的使用 代码 这里的String类内部就有排序的方法 import java.util.Set; import java.util.TreeSet; p
2021-09-29 14:03:34
252
2
原创 java容器(7)Set接口
目录 一:Set接口介绍 二:Set接口的特点 三:HashSet容器类 3.1哈希算法原理(简单介绍) 代码 四:HashSet的存储分析 无序 不重复 图解 五:HashSet存储自定义对象 一:Set接口介绍 Set接口继承Collection接口,并没有添加新的方法 二:Set接口的特点 类似于数学中集合的概念 ●无序,没有索引,只能通过遍历来查找元素 ●没有重复的元素 Set接口常用的实现类有HashSet和TreeSet,常用的是HashSet 三:Ha.
2021-09-28 12:05:53
182
原创 java容器(5)
Vector容器的使用 Vector和ArrayList的使用是一样的,区别是Vector在多线程下安全,可以将并序改为串序 下面来测试下Vector容器里面的方法 代码 package com.gnlxy2.container; import java.util.List; import java.util.Vector; public class VectorTest { public static void main(String[] args) { //实例化V
2021-09-26 13:14:11
116
1
原创 java容器(4)ArrayList
一:ArrayList_添加元素 ArrayList是List接口的实现类,是List存储特征的具体实现 void add(int index,Object em) index的值不能大于容器里面元素的个数 代码 package com.gnlxy2.container; import java.util.List; public class ArrayList { public static void main(String[] args) { //实例化Array
2021-09-26 09:51:09
164
1
原创 java容器(3)
目录 一:容器的结构 1.1;左边的是单例集合 1.2:右边的是双列集合 二:Collection接口中的抽象方法 四:List接口介绍 4.1:List接口的特点 4.2:List的常用方法 java中的很多容器基于数组帮助我们去完成数据的存储 容器(Collection)也称之为集合 一:容器的结构 1.1;左边的是单例集合 (将数据一个一个的进行存储),Collection是根接口,他有两个子接口List 和Set 接口 List接口的存储特征是存储有序.
2021-09-23 23:20:56
90
原创 java容器(2)通配符
目录 一:通配符 二:通配符的上限限定 三:通配符的下限限定 四:泛型总结 一:通配符 “?”表示类型通配符,用于代替具体的类型,只能在<>中使用,可以解决当前类型不确定的问题 代码 public class ShowMsg { public void showFlag(Generics<?> generics){//将Generics这个类作为参数传进来 System.out.println(generics.getFlag(...
2021-09-22 08:15:25
100
原创 java容器(1)泛型
一:泛型简介 1.1:泛型的基本概念 泛型的本质:数据类型的占位符,泛型就是将数据类型参数化,可以像参数一样进行传入 简记: ●把类型当作参数一样进行传递 ●<数据类型>只能是引用类型 1.2:泛型的好处 使用泛型的时候所有的类型转换都是由编译器完成的 ●代码可读性更好(不用强制类型转换) ●程序更加安全(只要编译器没有警告,那么运行时就不会出现异常) 1.3 类型擦除 ●编码时用泛型写的类型参数,编译器会在编译时期去掉,这就叫做“类型擦除” ●泛型主要用于编译阶..
2021-09-21 21:25:30
199
1
原创 结构体内存对齐
目录 一:代码 二:结构体内存对齐 三:图解 一:代码 #include<stdio.h> struct S1 { char c1; char c2; int a; }; struct S2 { char c1; int a; char c2; }; struct S3 { char c1; struct S1 s1; int a; }; int main() { printf("%d\n", sizeof(struct S1)); printf("%d\
2021-09-20 15:07:41
91
1
原创 字符串函数和内存函数的复现 strcat,strcmp,strcpy,strlen,strncpy,strncat,strstr,memcpy
目录 一:strcat 思路 代码 二:strcmp 图解 代码 三:strcpy 思路 代码 四:strlen 思路 代码 五:strncpy 思路 代码 六:strncat 思路 代码 一:strcat 思路 ●找到目标空间的\0 ●追加源字符串至\0 ●目标空间一定要够大 代码 //strcat函数的返回值是起始空间的地址 char* my_strcat(char* dest, const char* scr) {//const...
2021-09-16 10:31:10
543
原创 单链表(c实现)以后实力够了再补充
一:链表的创建 c中通过结构体来创建链表 我们以单链表来举例,看下面代码,这是创建了一个结点的结构体类型 typedef struct node {//结构体的创建 int date;//数据域 struct Node* next;//指针域 }Node,*Link;//别名,一个是结构体类型,一个是结构体类型的指针 我们通过malloc来创建一个结点要引用#include<malloc.h>这个头文件 malloc函数的返回值是void*万能指针类型,这个指针类型不能够运算,可
2021-09-15 19:46:50
170
原创 java常用类之Date类
目录 一:简单的测试 二:java.util.Date 三:DateFormat时间格式化类 格式化字符的含义(不需要记) parse和format函数 一:简单的测试 System.currentTimeMillis()返回当前时刻的毫秒数 package com.changYongLei; public class TestDate { public static void main(String[] args) { //包装类转为基本...
2021-09-14 14:31:45
609
1
原创 java常用类之字符串相关类 String,StringBuilder,StringBuffer
目录 一:字符串相关类 二:常用的方法列表 三:不可变序列和可变序列使用陷阱——大量修改时的效率测试 一:字符串相关类 String类是不可变字符序列,每次赋值的时候都要重新创建对象 StringBuilder是可变字符序列,每次赋值返回的都是当前对象,它是最常用的,它的效率高,但是线程不安全 StringBuffer也是可变字符序列 ,它不太常用,它线程安全,但是效率低 看下面代码 package com.changYongLei; public class TestSt..
2021-09-14 11:03:46
143
原创 Java常用类之基本数据类型的包装类
目录 一:基本数据类型的包装类 二:包装类的作用 三:自动装箱和拆箱 四:包装类的缓存问题 一:基本数据类型的包装类 二:包装类的作用 ●把基本数据类型转化为对象(这是最根本的作用),或者把包装类的对象转化为基本数据类型 包装类可以使包装类对象,基本数据类型,字符串这三者之间进行转化 三:自动装箱和拆箱 自动装箱和拆箱使编译器帮你干的 错误示范: 就是引用所指向的对象的空间是空的,不能使用该引用调用空的对象的方法 四:...
2021-09-14 00:07:20
227
1
原创 字符串左旋问题,与字符串左旋结果判断问题
第一题:实现一个函数可以左旋字符串中k个字符 思路1:移位 我们可以将第一个字符存起来,其余字符依次向前移动一位,最后将第一个字符放到最后一位,依次循环 图解 伪代码 由于每次循环指针加一都会循环到\0处停止,所以我们需要一个另外一个指针来指向该指针,这样该指针就永远指向的是第一个元素,这样就可以无限交换 ●通过while循环来控制交换的次数 ●用一个新指针代替旧指针,并将首元素存在另外一个空间里 ●从“第一个”元素依次向前移动一位*pp=*(pp+1) ●判断*(pp+1...
2021-09-12 23:30:44
179
原创 数组中有序序列判断,有序序列合并,序列中删除指定数字(c实现)
目录 第一题:有序序列判断 思路 伪代码 代码 第二题:有序序列合并 思路 伪代码 代码 第三题:序列中删除指定数字 思路 代码 第一题:有序序列判断 所谓的有序就是指升序或者降序 升序:1 2 3 4 5 6 7 8 9....... 降序:9 8 7 6 5 4 3 2 1...... 下面来看题 思路 当该序列既有升序又有降序的时候那么这个序列就是无序的 伪代码 ●初始化两个标记,一个标记代表降序,一个代表升序 ●判断数组相邻两个元素的...
2021-09-12 18:48:50
229
原创 leetcode刷题day2(链表实现)
目录 1:题目 2:图示 3:思路 4:代码 5:迭代与递归的解法后续会更新 1:题目 2:图示 3:思路 首先我们需要实现一个链表的结点,这个可以通过创建一个类来解决 然后就是通过对链表里面的元素进行相加,存进一个新的链表里面,这是新的问题就出现了,会产生进制位,例如,9+9+1(1上进制过来的数)=19,也就是说进制为最大为1。这时需要一些算法来解决进制为的问题,看下面的伪代码 ●初始化一个新的结点newNode,这个结点不存储任何元素,也就是头结点,并用指...
2021-09-12 11:49:52
236
4
转载 leetcode刷题day1(两数总和)
目录 解法1:直接两层for循环,遍历查看所有数组元素相加和的情况,若与目标值相等则返回 解法二:需要哈希表的知识,暂时先不写 解法三:需要哈希表的知识,暂时先不写 给定一个数组和一个目标值,从数组中找到两个数字相加等于目标值,并且输出两个数字的下标 思路:通过输出两个数字的下标我们需要返回两个值,但是return 只能返回一个值,所以我们需要返回一个数组(java中可以返回数组,在c/c++中,只能通过返回指针来解决或者传址来解决) 解法1:直接两层for循环,遍历查看所有数组元...
2021-09-10 09:13:08
122
原创 Java数组,数组声明,数组初始化,内存图分析,arraycopy(),java.util.Arrays类,二维数组的声明和初始化
1:数组的声明 tpye[] arr_name type arr_name[] 数组是对象,数组中的元素是对象的属性 对象的属性没有初始化,系统会默认初始化 2:数组的初始化 int[] s=null;//声明数组 s=new int[10];//给数组分配空间 for(int i=0;i<10;i++) { s[i]=i*2+1;//给数组元素赋值 System.out.println(s[i]); } class Man { priva...
2021-08-31 14:33:03
293
1
原创 Java面向对象详解(9)Sting类常用方法总结
目录 1:String类常用方法总结 2:内部类 1:String类常用方法总结 String类代表的是字符串,是不可变的字符序列 public class TestString { public static void main(String[] args) { //Sting类代表字符串,是不可变字符序列 String str1=new String("abcdefg"); String str2="abcdefg"; .
2021-08-30 11:17:29
225
1
原创 Java面向对象(8)抽象类,接口的定义和实现,接口中的默认方法,静态方法,接口的多继承
目录 1:抽象方法和抽象类 2:接口的定义和接口的实现 3:JDK 新特性,接口——默认方法 4:JDK 新特性,接口——静态方法(类方法) 我们可以在接口中定义静态方法的实现,它从属于接口,用接口名来调用 5:接口的多继承 1:抽象方法和抽象类 抽象方法没有方法体,它是一种规范,规范了子类必须去实现它 抽象类和抽象方法的一些要点 1:有抽象方法的类只能被定义成抽象类 2:抽象类不能被实例化(抽象类不能够创建对象) 3:抽象方法必须由子类事项 4抽象类只能被用来继承 5:抽.
2021-08-29 10:09:21
820
原创 Java对象详解(7)多态和对象类型转换
1:多态的概念和实现 对于同一个方法来说,面对不同的对象会有不同的行为,这时多态就出现了 多态是方法的多态,不是属性的多态(多态与属性无关) 实现多态的3个关键:继承,方法的重写,父类引用指向子类对象 父类引用指向子类对象后,调用子类重写的方法,这是多态就出现了 ...
2021-08-28 20:42:22
240
原创 Java面向对象详解(6)封装
目录 1:封装详解,4个访问权限控制符,protect的两个小细节 1.1:先看代码 1.2:编程中封装的具体优点: 1.3:4个访问权限控制符 1.4:protect的两个小细节 2:封装的使用细节 1:封装详解,4个访问权限控制符,protect的两个小细节 1.1:先看代码 a包中的people类 package a; public class People { private int testPrivate=100; int testDefault..
2021-08-24 15:50:41
112
原创 Java面向对象详解(5)继承的作用和特点,instanceof操作符,方法的重写,final关键字,组合,Object类和toString的重写,equals ,super关键字
目录 1:继承 1.1继承的两个作用 1.2 继承的实现和继承的特点 1.3:instanceof操作符 1.3方法的重写 1.4:final关键字 1.5:组合 2:Object类和重写toString方法 2.1.当其他的类没有调用extends是那么该类的父类就是java.lang.Object 2.2.toString方法 2.3重写toString方法 1:继承 1.1继承的两个作用 1.代码复用,便于类的扩展 2.便于建模 1.2 继承的实现和继承的特...
2021-08-23 22:29:40
411
原创 Java面向对象详解(4)垃圾回收机制,变量的分类,this static package import,
1:垃圾回收机制 垃圾回收的原理和算法 1.内存管理,Java内存管理很大程度上是指的就是堆中对象的管理,期中包括对象空间的分配和释放 对象空间的分配:通过new关键字创建对象即可 对象空间的释放:将对象赋值为null即可。垃圾回收器负责回收所有”不可达“(没有变量引用)的对象的内存空间 2:垃圾回收过程 发现无用的对象 回收无用对象所占的内存空间 垃圾回收机制保证可以将“无用的对象”进行回收。无用的对象指的就是没有任何变量 引 用该对象。Java 的垃圾回收器通过相关算法发现无用对象,并进
2021-08-23 14:35:13
270
原创 Java面向对象详解(3)堆,栈,方法区和内存变化图
目录 1:栈,堆,方法区 2:内存变化图 1:栈,堆,方法区 虚拟机栈简称栈(Stack)特点如下: 1.栈描述的是一个方法被执行的内存模型,每调用一个方法,就会创建一个栈(存放局部变量,操作数,方法出口(返回值)) 2.JVM对栈帧只有两种操作,压栈和出栈 3.栈的存储方式是 先进后出,后进先出,每个方法被执行完后会立刻出栈 4.栈是一个连续的存储空间,由系统自动分配,速度快 堆(Heap):几乎所有Java创建的对象都被分配在堆上,它被所有线程共享,在堆上的区域会被垃圾回收..
2021-08-21 11:53:40
2131
原创 Java面向对象详解(2)类的定义,内存图分析,构造器(构造方法)
目录 1:类的定义 2:简单内存分析_uml类图 3:构造方法的基本使用 4: 构造器 4 个要点 5:构造器的重载(创建不同的对象) 1:类的定义 一个源文件只能由一个public class,但是可以有许多个class public class Car { //一个源文件只能有一个public类 } class Type{ //可以有多个类 } class Glass{ //但是只是空类,没有意义 } class Carbody{ } 对于一个..
2021-08-20 23:03:55
299
原创 JAVA面向对象详解(1)表结构与类结构之间的关系,数据是什么,面向对象与面向过程的关系
1:表结构和类结构 类对应的就是表的结构 对象就是表的内容,一行数据对应一个对象 一个完整的对象是由属性(静态特征)和方法(动作行为)组成的 在现实生活中所有的数据都可以用表格来表示 2:表格中的动作和类的方法 表格中的动作对应着类中的方法 如下面圈主的就是表格中的动作和类中的方法 3:数据其实就是一个个的表格组成的 数据就是一个个表格组成的 关于类和对象,可以理解为表结构对应着类,而一行数据对应着对象。所谓表结构就是字段,根据这些字段,我们可以不断地添加新的记录。当然..
2021-08-20 15:33:50
707
原创 常用的编程技巧 const ,assert
目录 1:使用assert 2:尽量使用const 3:养成良好的编程风格 4:添加必要的注释 5:避免编程陷阱 1:使用assert 当需要判断的时候就可以用assert 为假的时候会返回一个错误 看下面的代码 #include<stdio.h> #include<assert.h> int my_strlen(const char* p) { int count = 0; assert(p != NULL); while (*p++ != '\0
2021-08-17 00:19:01
144
原创 VS调试技巧
1:什么是Bug Bug就是程序中的错误 2:什么是调试 调试英文名Debugging/Debug,调试就是发现和减少程序中的错误 3:Debug和Release的介绍 Debug通常称为调试版本,包调试信息,不做任何优化,便于程序员调试 Release称为发布版本 ,他往往进行了各种的优化,使得程序在代码的运行速度和大小都是最优的,以便用户更好的使用 ...
2021-08-16 20:06:45
113
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人