自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 红黑树概述

。。。。。。

2021-10-15 13:49:44 170

原创 JVM内存管理

1.JVM的位置2.JVM的体系结构3.类加载器虚拟机自带的加载器启动类(根)加载器扩展类加载器应用程序加载器4.双亲委派机制什么是双亲委派机制 : 当某个类加载器需要加载某个.class文件时,它首先把这个任务委托给他的上级类加载器,递归这个操作,如果上级的类加载器没有加载,自己才会去加载这个类。双亲委派机制的作用1、防止重复加载同一个.class。通过委托去向上面问一问,加载过了,就不用再加载一遍。保证数据安全。2、保证核心.class不能被篡改。通过委托方式,不会去篡改

2021-10-14 15:36:21 185

原创 Java---八大排序

数组概念数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。数组既可以存储基本数据类型,也可以存储引用数据类型。什么是数组的初始化什么是数组的初始化数组初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。初始化的分类:a:动态初始化: 只指定长度,由系统给出初始化值b:静态初始化: 给出初始化值,由系统决定长度//动态初始化:int[] arr = new int[5];int arr[] = new int[5];//静态初始化:int[]

2021-10-08 17:35:10 191

原创 Java--序列化和反序列化

1.什么是序列化和反序列化?需要将本地已经实例化的某个对象,通过网络传递到其他机器当中。为了满足这种需求,就有了所谓的序列化和反序列化。所谓序列化,就是指将内存中的某个对象压缩成字节流的形式,而反序列化,则是将字节流转化成内存中的对象。2.“额外的操作”对于Java而言,反序列化不安全最核心的点在于它执行了“额外的操作”反序列化本身是为了还原对象本身,本质上如果能无害的还原对象,比如我们直接将对象从内存A拷贝到内存B,是不会造成安全问题的。之所以会造成安全问题,是因为很多时候不可控的在还原对

2021-09-30 08:57:21 145

原创 MySQL数据库05---JDBC及SQL注入

一、JDBC1、数据库驱动驱动 : 声卡,显卡、数据库我们的程序会通过数据库驱动,和数据库打交道!2、JDBC3、创建JDBC程序步骤总结:1、加载驱动2、连接数据库DriverManager3、获得执行sql的对象Statement4、获得返回的结果集5、释放连接DriverManager// DriverManager.registerDriver(new com.mysq1.jdbc.Driver();Class.forName("com.mysq1.jdbc.Dri

2021-09-29 11:22:38 94

原创 MySQL数据库04--事务、索引、备份及三大范式

一、事务1、什么是事务事务原则: ACID原则1.原子性(Atomicity) : 要么都成功,要么都失败、2.一致性(Consistency) : 事务前后的数据完整性要保证一致,10003.持久性(Durability) ------ 事务提交事务一旦提交则不可逆,被持久化到数据库中!4.隔离性(lsolation)事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,事务之间要相互隔离。隔离所导致的一些问题1.脏读 : 指一个事务

2021-09-28 12:28:10 84

原创 MySQL数据库03--查询数据及MySQL函数

一、DQL查询数据Data Query LANGUAGE∶数据查询语言所有的查询操作都用它 Select简单、复杂的查询它都能做~数据库中最核心的语言,最重要的语句使用频率最高的语句1.指定查询字段-- 查询全部的学生 SELECT 字段 FROM 表SELECT * FROM student-- 查询指定字段SELECT `studentNo`,`StudentName` FROM student-- 别名,给结果起一个名字 AS 可以给字段起别名,也可以给表起别

2021-09-23 20:35:10 440

原创 MySQL数据库02--操作数据表及数据操作语言

一、DML语言数据库意义 :数据存储,数据管理DML语言: 数据操作语言lnsert 插入update 更新delete 删除1、添加

2021-09-22 13:56:30 127

原创 MySQL数据库01--基本操作及创建数据库表

数据库是所有软件体系中最核心的存在数据库(DB,DataBase)概念: 数据仓库,软件,安装在操作系统( window ,linux, mac、…)之上! 可以存储大量的数据,管理数据。一、数据库分类1、关系型数据库:(SQL)MySQL,Oracle,sql Server,DB2,SQLlite通过表和表之间,行和列之间的关系进行数据的存储,学员信息表,考勤表,……2、非关系型数据库: (NoSQL) Not OnlyRedis,MongDB非关系型数据库,对象存储,通过对

2021-09-18 13:25:01 1552

原创 JavaScript

一.JavaScriptJavaScript一门弱类型脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行。浏览器必备调试须知 :二.数据类型数值,文本,图形,音频,视频…变量var 王者 = "青铜”; //可以使用中文numberJavaScript不区分小数和整数,Number123.1 //浮点数 1.123e3 //科学计数法NaN //not a numberInfinity //表示无限大

2021-09-14 15:12:01 85

原创 多线程03

一.线程同步1.线程同步由于同一进程的多个线程共享同一块存储空间,在带来方便的同时,也带来了访问冲突问题,为了保证数据在方法中被访问时的正确性,在访问时加入锁机synchronized,当一个线程获得对象的排它锁,独占资源,其他线程必须等待,使用后释放锁即可,存在以下问题:1.一个线程持有锁会导致其他所有需要此锁的线程挂起;2.在多线程竞争下,加锁,释放锁会导致比较多的上下文切换和调度延时,引起性能问题;3.如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能问题。2.

2021-09-08 21:31:36 85

原创 多线程02

一.Lamda表达式避免匿名内部类定义过多,让代码看起来更加简洁,只留下核心的逻辑实质属于函数式编程的概念Lamda表达式的特点Lamda表达式只能有一行代码的情况下才能简化成一行,如果有多行,那么就用代码块包裹。前提是接口为函数式接口。多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号。二.线程停止推荐线程自己停下来建议使用一个标志位进行终止变量。当flag=false,则终止线程运行步骤:1.线程中定义线程体使用的标识2.线程体使用该标识3.对外提供方法改变标识

2021-09-06 22:15:30 70

原创 多线程01

一.Process(进程)Thread(线程)程序是指令和数据的有序集合,其本身没有任何运行的意义,是一个静态的概念。进程是执行程序的一次执行过程,它是一个动态的概念,是系统资源分配的单位。通常在一个进程中可以包含若干个线程,一个进程中至少有一个线程。线程是cpu调度和执行的单位。注意 :很多 多线程是模拟出来的,真正的多线程是指有多个cpu,即多核,如服务器,如果是模拟出来的多线程,其在一个cpu的情况下,在同一个时间点,cpu只能执行一个代码,因为切换的很快,所以就有同时执行的错觉。普通方

2021-09-04 22:02:00 72

原创 软件测试02

4.软件测试的自动化程度⼿⼯测试:由测试⼈员⼀个⼀个的执⾏测试⽤例,通过输⼊⼀些参数,产看返回结果是否符合预期效果。⾃动化测试: 是以把⼈为驱动的测试⾏为转化为机器执⾏的⼀种过程。通常由测试⼈员根据测试⽤例 中描述的规则流程⼀步步执⾏测试,把得到的结果与预期结果进⾏⽐较。单元测试就是⾃动化测试的⼀ 种,单元测试很多⼈称之为“毫秒级的⾃动化测试”,可分为功能⾃动化测试,性能⾃动化测试 :I.功能⾃动化测试:是通过测试⼯具(或框架)录制/编写测试脚本,对软件的功能进⾏测试,并验证测 试的结果是否正确,从

2021-09-02 21:49:14 95

原创 软件测试01

一.软件测试概要1.定义在规定的条件下对程序进⾏操作,以发现程序错误,衡量软件质量,并对其 是否能满⾜设计要求进⾏评估的过程。2.目的尽可能多的发现软件缺陷,检查系统是否满⾜ 要求,站在⽤户⻆度思考产品或项⽬功能实现的正确性。通过分析错误产⽣的原因和错误的分布特征,帮助项⽬管理者发现当前所采⽤的软件过程的缺陷,以便改进。同时,通过分析也能帮助我们设计出针对的检测⽅法,改善测试 的有效性。3.软件测试V模型需求分析:主要明确客户需要的是什么,需要软件做成什么样⼦,还有哪些功能。概要分析

2021-09-01 20:17:27 108

原创 Java常见集合类

一,集合类概述java.util包中提供了一些集合类。集合可以看做是一个容器。Java中提供了不同的集合类,这些类具有不同的存储对象的方式,同时提供了相应的方法,以便用户对集合进行遍历,添加,删除和查找指定的对象。集合长度是可变的用来存放对象的引用常用的集合有List集合、Set集合和Map集合,其中List与Set继承了Collection接口,各接口还提供了不同的实现类。常用集合类的继承关系二.Collection接口Collection接口是层次结构中的根接口。构成Collecti

2021-09-01 14:55:59 195

原创 类和对象复习重点

1.面向对象的三(四)大特征1.(抽象)抽象类:(1)用abstract关键字修饰,但abstract和final不能同时使用(因为final声明的类不允许有子类,而abstract抽象类必须有子类)(2)抽象类实例化对象,必须通过子类向上转型来实例化对象(抽象类无法直接实例化对象)(3)实例类继承抽象类,所有抽象类必须含有子类抽象方法:(1)抽象类可以包含抽象方法(2)含有抽象方法的类一定是抽象类,但是含有抽象类不一定含有抽象方法2.封装概述:是指隐藏对象的属性和实现细节,仅对外

2021-07-22 19:43:15 67

原创 Java常用类03

1.Integer缓冲区Java预先创建了256个常用的整数包装类型对象在实际应用当中,对已创建的对象进行复用2.String类常用方法

2021-06-24 13:31:17 91

原创 Java的常用类02

一.Object类超类、基类,所有类的直接或间接父类,位于继承树的最顶层任何类,如没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承Object类中所定义的方法,是所有对象都具备的方法Object类型可以存储任何对象作为参数,可接受任何对象。作为返回值,可返回任何对象。getClass()方法public final Class<?> getClass() {}返回引用中存储的实际对象类型应用:通常用于判断两个引用中实际存储对象类型是否

2021-06-22 23:01:00 70

原创 Java的常用类01

一.内部类的分类什么是内部类概念 : 在一个内的内部再定义一个完整的类特点 :编译之后可生成独立的字节码文件内部类可直接访问外部类的私有成员,而不破坏封装可为外部类提供必要的内部功能组件成员内部类在类的内部定义,与实例变量、实例方法同级别的类外部类的一个实例部分,创建内部类对象时,必须依赖外部类对象Outer out = new Outer();Inner in = out.new Inner();当外部类、内部类存在重名属性时,会优先访问内部类属性成员内部类不能定义静态成员

2021-06-22 17:55:21 75

原创 Java---异常机制

1.什么是异常异常(Exception)指程序运行中出现的不期而至的各种状况,如: 文件找不到,网络连接失败,非法参数等。异常发生在程序运行期间,它影响了正常的程序执行流程。异常代码示例:package Exception;public class Demo01 { public static void main(String[] args) { System.out.println(11/0); //分母不能为0,会出现异常 }}测试结果:2.

2021-06-09 17:12:44 75

原创 Java---面向对象02

1.方法的重写需要有继承关系,子类重写父类的方法方法名必须相同参数列表必须相同修饰符 : 范围可以扩大但不能缩小(大)public–>Protected–>Default–>private(小)抛出的异常 : 范围,可以被缩小,但不能扩大;ClassNotFoundException–>Exception(大)重写,子类的方法和父类必须要一致;方法体不同为什么要重写:1.父类的功能,子类不一定需要,或者不一定满足Alt + Insert ; overrid

2021-06-07 19:59:55 75

原创 Java---面向对象01

1.面向对象思想分类的思维模式面向对象适合处理复杂的问题对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,任然需要面向过程的思路去处理。2.什么是面向对象面向对象编程(OOP)面向对象编程的本质: 以类的方式组织代码,以对象组织(封装)数据。抽象三大特性;*封装*继承*多态对象是具体的事物,类是抽象的,是对对象的抽象从代码运行角度考虑是先有类后有对象。类是对象的模板代码示例:运行结果:stati

2021-06-06 13:35:52 88

原创 Java---数组

1.数组的定义相同类型数据的有序集合描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成、每一个数据称作一个数据元素,可以通过一个下标来访问它们2.数组声明创建必须先声明数组变量Java语言使用new操作符来创建数组数组元素通过索引访问,从0开始获取数组长度: arrays.lengthpackage Array;public class Demo01 { //变量的类型 变量的名字 = 变量的值 //数组类型 public stati

2021-06-01 16:59:48 87

原创 Java---方法

1.方法的定义是语句的集合,它们在一起执行一个功能是解决一类问题的步骤的有序组合包含于类或对象中在程序中被创建,在其他地方被引用设计原则功能块儿,设计的时候最好保持方法的原子性,一个方法只完成一个功能。Java方法类似于其他语言的函数,包含以下语法:一个方法头和一个方法体修饰符(可选)返回值类型方法名(方法的实际名称)参数类型*形式参数:在方法被调用时用于接受外界输入的数据*实参 : 调用方法时实际传给方法的数据方法体![在这里插入图片描述](https://img-bl

2021-05-31 14:20:10 73

原创 Java---流程控制

1.Scanner对象Scanner是一个工具类,可以获取用户的输入基本语法Scanner s = new Scanner(System.in);通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前一般需要用hasNext()与hasNextLine()判断是否还有输入的数据。next()方法读到有效字符后才可以结束输入,并且不能得到带有空格的字符串,空格会作为分隔符或结束符将后面的字符减去。如以下示例:package scanner;import j

2021-05-30 21:44:25 76

原创 初识Java---基础

1.注释注释并不会被执行,是给写代码的人看的单行注释 //只能注释单行文字多行注释 /* 符号之中都为注释 */文档注释 /** 注释可以加功能,能被识别 */2.标识符关键字Java所有组成部分都需要名字。类名,变量名,方法名都被称为标识符所有标识符都应该以大小写字母,美元符($),下划线开始,首字符之后可以是任意字符组合。 (标识符是大小写敏感的)不能使用关键字作为变量名或方法名3.数据类型...

2021-05-27 15:15:41 119

原创 简单选择排序 && 堆排序

1.简单选择排序每次从待排序队列中找到最小值,和待排序队列的第一位交换即可//代码实现#include<stdio.h>#include<assert.h>//简单选择排序( 时间复杂度O(n^2),空间复杂度O(1),不稳定的 )void SelectSort(int arr[], int len){ for (int i = 0; i < len - 1; i++) { int minindex = i; //先认为待排序第一个值为最小值

2021-05-26 22:15:30 49

原创 链式队列

链式队列链式队列主要应用的是单链表,先设计一个单链表:typedef struct Node{ int data;//数据域,没存放节点的值 struct Node* next;//指针域,存放下一个节点的地址}Node,*PNode;单链表的特点优点: 插入和删除不用移动元素,头删的时间复杂度O(1) 尾删的时间复杂度O(n)为什么头删的时间复杂度O(1) 尾删的时间复杂度O(n)呢第一个节点和最后一个节点最直接差别在于: 第一个节点的地址我们一直用头结点来保存着

2021-05-13 18:45:39 278

原创 顺序栈

栈:一种先进后出,后进先出的数据结构栈分为顺序栈和链栈,本文实现的是不定长的顺序栈顺序栈的插入和删除都在尾部,因为入栈和出栈的时间复杂度为O(1)顺序栈怎么设计:typedef struct Stack{ int* base; //用来申请动态内存 int stack_Size; //栈总体个数 int top; //栈顶指针,当前栈存放的有效元素个数指向下一个存放数据的位置 //这里和书上不一致,因为实现的是不定长顺序栈,所以用}Stack,*PStac

2021-05-07 23:29:09 141

原创 文件操作

1.C语言中的文件是什么一般指存储在外部介质上的数据集合(如:txt\bmp\jpg\exe\rmvb)这些文件各有用途,我们通常把它们存放在磁盘或者可移动盘等介质中。文件是一段数据的集合,这些数据可以有序或无序。操作系统就是以文件为单位对数据进行管理的。也就是说,要访问外部介质上的数据,必须先按照文件名进行查找,然后从该文件中读取数据。要想写数据到外部介质,必须建立一个文件,然后再写入。1.1文件一般包括三要素:文件路径 、文件名 、后缀数据的输入和输出几乎伴随着每个C语言程序,所为输入就是从

2021-04-27 19:41:19 349

原创 快速排序

快速排序介绍快速排序是通过一趟排序将要排序的数据分割成独立的两部分,把数组中的第一个数作为中间值,使左边一部分的所有数据都比这个中间值小,右边一部分的所有数据都比这个中间值大,然后再按这种方法对这两部分数据分别进行快速排序,从而使整个数据变成有序序列。代码解析1.将数组分为两部分,左边部分小于中间值,右边部分大于中间值int Partition(int* br, int left, int right)//将数组分为两部分的函数{ assert(br != nullptr);//对数组判空 i

2021-04-26 21:15:05 91

原创 柔性数组

1.柔性数组数组的大小为0,或者不给出大小,称之为柔性数组。(全局数组和局部数组不能这样定义)柔性数组是一种数组大小待定的数组。在C语言中,可以使用结构体产生柔性数组,结构体的最后一个元素可以是大小未知的数组。用途:长度为0的数组的主要用途是为了满足长度可变的结构体。用法:在一个结构体的最后,声明一个长度为0的数组,就可以使得这个结构体是可变长的。对编译器而言,此时长度为0的数组并不占用空间,因为数组名本身不占空间,它只是一个偏移量,数组名这个符号本身代表了一个不可修改的地址常量。但对于这个数组

2021-04-20 19:26:46 120

原创 动态内存管理

1.栈区栈区在函数被调时分配,用于存放函数的参数值,局部变量等值。2.堆区程序运行时可以在堆区动态地请求一定大小的内存,并在用完之后归还给给堆区。一般情况下我们需要大块内存或程序在运行的过程中才知道所需内存大小,我们就从堆区分配空间。3.动态内存分配函数C语言中动态内存管理的有四个函数:malloc,calloc,realloc,free,都需要引用stdlib.h或malloc.h文件。malloc向堆区申请一块指定大小的连续内存空间。void* malloc(size_t size);

2021-04-19 09:37:31 48

原创 结构体

结构体1.结构体类型的设计C语言提供了基本数据类型,如char,short,int,float…等类型,称之为内置类型。程序开发人员可以使用结构体来封装一些属性,设计出新的类型,在C语言中称为结构体类型。在C语言中,结构体是一种数据类型。也可以使用结构体来存放一组不同类型的数据。结构体的定义形式为:struct 结构体名{成员列表(可以是基本数据类型,指针,数组或其他类型结构)};*结构体是一种数据类型,是创建变量的模板,不占用内存空间;结构体变量才包含了实实在在的数据,需要存储空间。2

2021-04-15 15:32:09 109

原创 分治策略与递归

1.分治策略(1)是将规模比较大的问题可分割成规模较小的相同问题。问题不变,规模变小。分治与递归相似,经常同时应用在算法设计之中,并由此产生许多高效算法。(2)分治方法能解决的问题具有的特征:问题的规模缩小到一定的程度可以容易的解决;该问题可以分解成若干个规模较小的相同问题;使用小规模的解,可以合并成该问题原规模的解;该问题所分解出的各个子规模是相互独立的;(3)在分治策略中递归的求解一个问题,每层递归中应有三个步骤:分解;解决;合并;2.递归(1)若一个函数直接或间接的调用自己,则

2021-04-12 20:26:06 286

原创 递归函数

递归函数1.进程使用的内存按照功能大致分为四个部分:(1)代码区 (2)数据区(3)堆区 (4)栈区2.函数调用机制(1)建立栈帧空间;(2)保护现场;(3)为被调函数传递数据,同时形参获得存储空间,接着给局部变量分配空间;(4)执行被调函数函数体;(5)当被调函数执行完成,释放被调中局部变量占用的栈空间;(6)恢复现场;(7)继续主调函数后续语句3.作用域与生存区(1)作用域:作用域指标识符能够被使用

2021-04-11 00:06:47 148

原创 完数

在这里插入代码片```#include<stdio.h>#include<math.h>#define N 1000 //规定范围是>1000的数int main(){ int i,j,sum=0; for (i = 1; i <= N; i++) { sum = 0; for (j = 1; j <= i / 2; j++) { if (i % j == 0) sum = sum + j; //累加求和 .

2021-04-08 02:28:10 50

原创 杨辉三角

在这里插入代码片```//杨辉三角#include<stdio.h>int main(){ int i, j; int ar[10][10]; //定义一个二维数组 ar[0][0] = 1; //第一行第一个数为一 for (i = 0; i < 10; i++) { ar[i][0] = 1; //让第一列都为1 for (j = 0; j <= i; j++) { if (j == 0) { ar[.

2021-04-08 01:54:28 54

原创 Linux基础知识笔记

第一周cd可以(切换路径)改变当前位置,只能进入或者退出目录 …表示返回上一级 .表示当前位置 ~表示家目录绝对路径可以跳级找到文件,相对路径只能找到下一级文件touch创建普通文件 mkdir创建目录 rm删除ls显示当前目录有哪些文件 ls -l显示细致信息chmod修改文件权限:r读权限4 w写权限2 x执行权限文件的类型:普通文件- 目录文(文件夹)件d 链接文件l 管道文件p c,b设备文件:磁盘文件 s套接字文件第二周系统的目录结构:

2021-03-28 20:16:05 84 1

空空如也

空空如也

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

TA关注的人

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