自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式.

【代码】设计模式.

2023-04-09 17:44:22 125

原创 XML复习

XML 全称(extensible Markup Lanage) 可扩展标记语言它是一种数据的表示形式, 可以存储复杂的数据格式以及我们自己定义的格式.XML经常别用来存储和传输数据存储XML数据格式的文件叫做XML文件.

2023-04-09 16:43:13 391

原创 Maven工具复习

Maven是一个工具提供了一套标准的项目结构提供了一套标准的构建流程(编译, 测试, 打包, 发布)Maven 提供了一套简单的命令来操作这些工做, 也就是项目的构建提供了一套依赖管理机制使用第三方软件包的时候, jar包, 我们可以直接从Maven中央仓库种导入。之前是 下载jar包, 复制jar包到我们自己创建的目录种, 再把Jar包加入到工作环境中(比较麻烦, 如果Jar包很多的话, 要下载, 并且要加入到工作环境中, 手动导入jar包很繁琐)

2023-04-09 12:31:49 516

原创 动态代理技术复习

这个代理就相当于是劳工, 帮我们去做我们能做到, 但是不想做的事情, 比如搬砖…动态代理是面向切面编程的核心思想他是对我们的方法进行代理。

2023-04-09 12:30:46 477

原创 反射技术复习

对于有参的构造器对象, 构造器中的参数也是类对象类型的, 具体看下面的源码.

2023-04-08 17:45:22 318

原创 IO流复习

创建字符缓冲流对象用输出缓冲流读取文件中的数据, 并放到自定义的List容器中对List中的数据进行排序通过Collections 工具类来实现排序, 但是需要通过自定义比较器对象 Comparator 来实现排序。将List中排好序的数据通过循环的方式用字符输出缓冲流来输出到指定的文件中代码:6.

2023-04-08 13:15:45 263

原创 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 474 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 201 1

原创 数据结构和算法(2)断更一段时间,寒假开始更新

查找最大值利用二分查找通过递归来找最大值首先将数组通过中间元素arr[mid]将数组分为两个部分,两个部分分别递归,直到找到最大值本质是一个多叉树,在计算树的所有的节点的时候,利用栈玩了一个后序遍历,每一个节点都通过自己的子节点给自己汇总信息之后才能够继续向上返回,栈空间就是整棵树的高度只需要在一个高度上进行压栈,这就是一个递归的过程代码public class Code6_getMax { public static int getMax(int[] arr).

2021-10-11 18:29:43 149

原创 数据结构和算法(1)写的有些乱这个系列只是给自己看的

时间复杂度是估计常数操作的指标常数操作跟数据量无关的,是一个固定时间的东西,和数据量有关的就不是常数操作比如数组的寻址,和数据量没有关系,只想找到i位置的数加减乘除,位运算都是常数操作对于链表来说这不是一个常数操作,对于单链表只能从左到右的一个一个去找选择排序:遍历一下找到最小值,并记录下来,并与(0)位置处的值交换第一次:对数组中的n个元素分别看一眼,看到的每个数都要与之前找到的最小值进行比较,直到看完找到最小的,放在索引为0的位置处,需要看n眼,比较n-...

2021-10-05 21:18:24 195

原创 java容器(9)Map接口

目录一:Map接口介绍二:Map中常用的方法三:HashMap_添加元素代码四:HashMap_获取元素第一种方法代码第二种方法代码第三种方法代码五:Map容器并集操作代码六:HashMap_删除元素代码七:HashMap_判断key或value是否存在代码一:Map接口介绍Map接口定义了双列集合的存储特征,他不是Collection的子接口,双列集合是以Key与Value的特征进行存储的(类似于数学中的结合)...

2021-10-01 15:08:19 99

原创 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 205 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 118

原创 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 85 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 122 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 50

原创 java容器(2)通配符

目录一:通配符二:通配符的上限限定三:通配符的下限限定四:泛型总结一:通配符“?”表示类型通配符,用于代替具体的类型,只能在<>中使用,可以解决当前类型不确定的问题代码public class ShowMsg { public void showFlag(Generics<?> generics){//将Generics这个类作为参数传进来 System.out.println(generics.getFlag(...

2021-09-22 08:15:25 68

原创 java容器(1)泛型

一:泛型简介1.1:泛型的基本概念泛型的本质:数据类型的占位符,泛型就是将数据类型参数化,可以像参数一样进行传入简记:●把类型当作参数一样进行传递●<数据类型>只能是引用类型1.2:泛型的好处使用泛型的时候所有的类型转换都是由编译器完成的●代码可读性更好(不用强制类型转换)●程序更加安全(只要编译器没有警告,那么运行时就不会出现异常)1.3 类型擦除●编码时用泛型写的类型参数,编译器会在编译时期去掉,这就叫做“类型擦除”●泛型主要用于编译阶..

2021-09-21 21:25:30 144 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 62 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 460

原创 单链表(c实现)以后实力够了再补充

一:链表的创建c中通过结构体来创建链表我们以单链表来举例,看下面代码,这是创建了一个结点的结构体类型typedef struct node {//结构体的创建 int date;//数据域 struct Node* next;//指针域}Node,*Link;//别名,一个是结构体类型,一个是结构体类型的指针我们通过malloc来创建一个结点要引用#include<malloc.h>这个头文件malloc函数的返回值是void*万能指针类型,这个指针类型不能够运算,可

2021-09-15 19:46:50 144

原创 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 499 1

原创 java常用类之字符串相关类 String,StringBuilder,StringBuffer

目录一:字符串相关类二:常用的方法列表三:不可变序列和可变序列使用陷阱——大量修改时的效率测试一:字符串相关类String类是不可变字符序列,每次赋值的时候都要重新创建对象StringBuilder是可变字符序列,每次赋值返回的都是当前对象,它是最常用的,它的效率高,但是线程不安全StringBuffer也是可变字符序列 ,它不太常用,它线程安全,但是效率低看下面代码package com.changYongLei;public class TestSt..

2021-09-14 11:03:46 104

原创 Java常用类之基本数据类型的包装类

目录一:基本数据类型的包装类二:包装类的作用三:自动装箱和拆箱四:包装类的缓存问题一:基本数据类型的包装类二:包装类的作用●把基本数据类型转化为对象(这是最根本的作用),或者把包装类的对象转化为基本数据类型包装类可以使包装类对象,基本数据类型,字符串这三者之间进行转化三:自动装箱和拆箱自动装箱和拆箱使编译器帮你干的错误示范:就是引用所指向的对象的空间是空的,不能使用该引用调用空的对象的方法四:...

2021-09-14 00:07:20 169 1

原创 字符串左旋问题,与字符串左旋结果判断问题

第一题:实现一个函数可以左旋字符串中k个字符思路1:移位我们可以将第一个字符存起来,其余字符依次向前移动一位,最后将第一个字符放到最后一位,依次循环图解伪代码由于每次循环指针加一都会循环到\0处停止,所以我们需要一个另外一个指针来指向该指针,这样该指针就永远指向的是第一个元素,这样就可以无限交换●通过while循环来控制交换的次数●用一个新指针代替旧指针,并将首元素存在另外一个空间里●从“第一个”元素依次向前移动一位*pp=*(pp+1)●判断*(pp+1...

2021-09-12 23:30:44 134

原创 数组中有序序列判断,有序序列合并,序列中删除指定数字(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 176

原创 leetcode刷题day2(链表实现)

目录1:题目2:图示3:思路4:代码5:迭代与递归的解法后续会更新1:题目2:图示3:思路首先我们需要实现一个链表的结点,这个可以通过创建一个类来解决然后就是通过对链表里面的元素进行相加,存进一个新的链表里面,这是新的问题就出现了,会产生进制位,例如,9+9+1(1上进制过来的数)=19,也就是说进制为最大为1。这时需要一些算法来解决进制为的问题,看下面的伪代码●初始化一个新的结点newNode,这个结点不存储任何元素,也就是头结点,并用指...

2021-09-12 11:49:52 208 4

转载 leetcode刷题day1(两数总和)

目录解法1:直接两层for循环,遍历查看所有数组元素相加和的情况,若与目标值相等则返回解法二:需要哈希表的知识,暂时先不写解法三:需要哈希表的知识,暂时先不写给定一个数组和一个目标值,从数组中找到两个数字相加等于目标值,并且输出两个数字的下标思路:通过输出两个数字的下标我们需要返回两个值,但是return 只能返回一个值,所以我们需要返回一个数组(java中可以返回数组,在c/c++中,只能通过返回指针来解决或者传址来解决)解法1:直接两层for循环,遍历查看所有数组元...

2021-09-10 09:13:08 90

原创 Java数组,数组声明,数组初始化,内存图分析,arraycopy(),java.util.Arrays类,二维数组的声明和初始化

1:数组的声明tpye[] arr_nametype 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 224 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 168 1

原创 Java面向对象(8)抽象类,接口的定义和实现,接口中的默认方法,静态方法,接口的多继承

目录1:抽象方法和抽象类2:接口的定义和接口的实现3:JDK 新特性,接口——默认方法4:JDK 新特性,接口——静态方法(类方法)我们可以在接口中定义静态方法的实现,它从属于接口,用接口名来调用5:接口的多继承1:抽象方法和抽象类抽象方法没有方法体,它是一种规范,规范了子类必须去实现它抽象类和抽象方法的一些要点1:有抽象方法的类只能被定义成抽象类2:抽象类不能被实例化(抽象类不能够创建对象)3:抽象方法必须由子类事项4抽象类只能被用来继承5:抽.

2021-08-29 10:09:21 736

原创 Java对象详解(7)多态和对象类型转换

1:多态的概念和实现对于同一个方法来说,面对不同的对象会有不同的行为,这时多态就出现了多态是方法的多态,不是属性的多态(多态与属性无关)实现多态的3个关键:继承,方法的重写,父类引用指向子类对象父类引用指向子类对象后,调用子类重写的方法,这是多态就出现了...

2021-08-28 20:42:22 192

原创 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 81

原创 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.Object2.2.toString方法2.3重写toString方法1:继承1.1继承的两个作用1.代码复用,便于类的扩展2.便于建模1.2 继承的实现和继承的特...

2021-08-23 22:29:40 341

原创 Java面向对象详解(4)垃圾回收机制,变量的分类,this static package import,

1:垃圾回收机制垃圾回收的原理和算法1.内存管理,Java内存管理很大程度上是指的就是堆中对象的管理,期中包括对象空间的分配和释放对象空间的分配:通过new关键字创建对象即可对象空间的释放:将对象赋值为null即可。垃圾回收器负责回收所有”不可达“(没有变量引用)的对象的内存空间2:垃圾回收过程发现无用的对象回收无用对象所占的内存空间垃圾回收机制保证可以将“无用的对象”进行回收。无用的对象指的就是没有任何变量 引 用该对象。Java 的垃圾回收器通过相关算法发现无用对象,并进

2021-08-23 14:35:13 224

原创 Java面向对象详解(3)堆,栈,方法区和内存变化图

目录1:栈,堆,方法区2:内存变化图1:栈,堆,方法区虚拟机栈简称栈(Stack)特点如下:1.栈描述的是一个方法被执行的内存模型,每调用一个方法,就会创建一个栈(存放局部变量,操作数,方法出口(返回值))2.JVM对栈帧只有两种操作,压栈和出栈3.栈的存储方式是 先进后出,后进先出,每个方法被执行完后会立刻出栈4.栈是一个连续的存储空间,由系统自动分配,速度快堆(Heap):几乎所有Java创建的对象都被分配在堆上,它被所有线程共享,在堆上的区域会被垃圾回收..

2021-08-21 11:53:40 1998

原创 Java面向对象详解(2)类的定义,内存图分析,构造器(构造方法)

目录1:类的定义2:简单内存分析_uml类图3:构造方法的基本使用4: 构造器 4 个要点5:构造器的重载(创建不同的对象)1:类的定义一个源文件只能由一个public class,但是可以有许多个classpublic class Car { //一个源文件只能有一个public类}class Type{ //可以有多个类}class Glass{ //但是只是空类,没有意义}class Carbody{}对于一个..

2021-08-20 23:03:55 252

原创 JAVA面向对象详解(1)表结构与类结构之间的关系,数据是什么,面向对象与面向过程的关系

1:表结构和类结构类对应的就是表的结构对象就是表的内容,一行数据对应一个对象一个完整的对象是由属性(静态特征)和方法(动作行为)组成的在现实生活中所有的数据都可以用表格来表示2:表格中的动作和类的方法表格中的动作对应着类中的方法如下面圈主的就是表格中的动作和类中的方法3:数据其实就是一个个的表格组成的数据就是一个个表格组成的关于类和对象,可以理解为表结构对应着类,而一行数据对应着对象。所谓表结构就是字段,根据这些字段,我们可以不断地添加新的记录。当然..

2021-08-20 15:33:50 617

原创 常用的编程技巧 const ,assert

目录1:使用assert2:尽量使用const3:养成良好的编程风格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 114

原创 VS调试技巧

1:什么是BugBug就是程序中的错误2:什么是调试调试英文名Debugging/Debug,调试就是发现和减少程序中的错误3:Debug和Release的介绍Debug通常称为调试版本,包调试信息,不做任何优化,便于程序员调试Release称为发布版本 ,他往往进行了各种的优化,使得程序在代码的运行速度和大小都是最优的,以便用户更好的使用...

2021-08-16 20:06:45 89

空空如也

空空如也

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

TA关注的人

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