自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Pytorch】RuntimeError:CUDA OOM问题

【Pytorch】RuntimeError:CUDA OOM问题

2023-05-04 15:38:34 337

原创 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示

Tomcat未找到资源,记录Bug

2022-06-17 20:02:23 522

原创 软件编程实践

实验一:一元二次方程的求解新建Win32应用程序(非Win32控制台程序)新建xxx.cpp文件用来放置代码,具体代码如下:#include <windows.h>#include <stdio.h>#include <Math.h>LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lparam); //窗口过程函数声明GetRoot(float a, flo

2021-06-10 22:20:31 2759

原创 11.B树

一、B树性质1、B树简介B树是一种平衡的多路搜索树,多用于文件系统与数据库方面B树特性:一个节点可以存储超过2个元素,可以拥有超过2个子节点每个节点的平衡因子都为1B树命名:如上图的5阶B树,因为最多有5个子节点所以命名5阶B树2、m阶B树的性质(m >= 2)假设一个节点存储的元素个数为x根节点储存元素个数:1 <= x <= (m - 1) 例如:3阶B树根节点个数为1 ~ 2非根节储存元素个数:⌈(m / 2)⌉ - 1 <= x &l

2021-03-15 19:02:11 1922

原创 10.AVL树

一、平衡二叉搜索树(Balance Binary Search Tree)1、退化成链表的二叉搜索树删除节点时,可能会导致二叉搜索树退化成链表如果删除2,9,8,11四个节点,就会导致退化如何防止二叉搜素树退化成链表?让添加,删除,搜索的复杂度维持在O(logn)2、平衡(Balance)当节点数量固定时,左右子树的高度越接近,这颗二叉树就越平衡(高度越低)最理想的平衡,就是像完全二叉树和满二叉树那样,高度是最小的3、如何改进二叉搜索树?节点的添加,

2021-03-14 08:28:29 189

原创 9. 二叉搜索树

一、二叉搜索树任意一个节点的值都大于其左子树所有节点的值任意一个节点的值都小于其右子树所有节点的值它的左右子树也是一颗二叉搜索树二叉搜索树存储的元素必须具备可比较性比如:Integer、Double等如果是自定义类型,需要指定比较方式节点值不能为null-二、二叉搜索树的接口设计int size(); //节点的数量boolean isEmpty(); //是否为空void c

2021-03-14 08:22:09 116

原创 8.二叉树

树的基本概念节点节点: 一个圈圈就代表一个节点根节点: 1父节点: 1是2、3、4、5、6的父节点,2是21、22的父节点等子节点: 与父节点相反,2、3、4、5、6是1的子节点,21、22是2的子节点等兄弟节点: 同一个父节点下的子节点是兄弟节点,21、22是兄弟节点,但22、31不是兄弟节点空树: 一颗树没有任何节点,称为空树子树子树: 一棵树可以有很多节点,而其中的部分子节点也可以单独看成一棵树,例如5、51、52就是一颗子树左子树: 左侧的子节点称为左子树,21就

2021-03-14 08:21:46 356

原创 7. 队列

队列队列是一种特殊的线性表,只能在头尾两端操作队尾(rear):只能从队尾添加元素,一般叫做入队(enQueue)队头(front):只能从队头移除元素,一般叫做出队(deQueue)队列内部实现可以使用动态数组或双向链表实现优先使用双向链表,因为队列主要往头尾操作元素先进先出原则:First In First Out(FIFO)队列的接口设计public lit size(); //元素数量public boolean isEmpty();

2021-03-14 08:16:12 145

原创 6.栈

栈栈是一种特殊的线性表,只能在一端进行操作往栈中添加元素的操作,叫做入栈,push往栈中删除元素的操作,叫做出栈,pop(只能删除栈顶元素)栈的内部实现可以使用动态数组或链表实现栈的主要操作是在尾部进行添加或删除元素后进先出原则:Last In First Out(LIFO)栈的接口设计public lit size(); //元素数量public boolean isEmpty(); //是否为空public void push(E element);

2021-03-14 08:15:45 264

原创 5.循环链表

单向循环链表只需要尾节点的next指向头节点即可单向循环列表接口设计相较于单向列表,单向循环列表只需重写插入节点、删除节点两个方法单向循环列表的实现/** * 三、添加元素 * 需要注意插入元素为链表的第一个元素和插入链表第0个位置的元素 */public void add(int index, E element) { //检查索引是否越界 rangeCheckForAdd(index); if (index == 0) { //插入的是第一

2021-03-14 08:14:49 102

原创 4.双向链表

双向链表单向链表只能通过Node中的next属性(指针)从头遍历链表,完成搜素双向链表中的Node增加perv属性,指向该节点的上一个节点双向链表查找元素可以从first或last两个方向开始查找双向链表的接口设计相较于单向链表的构造器:需要在构造器中将prev属性放入,同时在初始类时,需要指明一个私有的last节点相较于单向链表的方法:需要重写add,remove,node(查找节点),clear四个方法双向链表的实现public class LinkedList<E&gt

2021-03-14 08:14:27 174

原创 3.单向链表

单向链表链表是一种链式存储的线性表,所有元素的内存地址不一定是连续的单向链表的接口设计创建LinkedList类,用来管理链表数据,其中size属性用来记录存储数据的数量,first属性用来引用链表的第0个元素创建私有类Node,其中element属性用来存储元素,next属性用来指向链表中的下一个节点按照Java接口的设计思想,定义一些方法(即对数组的增删改查操作)单向链表的实现private int size; //用来记录链表长度private Node<E

2021-03-14 08:10:12 174

原创 2.动态数组

数组数组是一种顺序存储的线性表,所有元素的内存地址都是连续的int[] array = new int[]{11, 12, 13}在很多情况下我们定义了数组的长度后,便不能更改数组的长度,但我们确希望的数组的长度是能够动态变换的动态数组的接口设计创建ArrayList类,定义size属性来管理数组中元素的个数,定义elements(一个数组变量)属性来管理存取的数据按照Java接口的设计思想,定义一些方法(即对数组的增删改查操作)动态数组的实现private int size;

2021-03-14 08:09:48 151

原创 1.复杂度

数据结构与算法的引入斐波那契数列的实现算法1: public static int fib1(int n) { //复杂度:O(2^n) if (n <= 1) { return n; }else { return fib1(n - 2) + fib1(n - 1); } }算法2:public static int fib2(int n) { //复杂

2021-03-14 08:09:11 131

原创 4.物理层

计算机网络之物理层物理层基本概念物理层目的:物理层是解决如何在连接计算机的传输媒体上传输数据比特流物理层任务:确定与传输媒体接口(定义标准),如:插头的样式、电压的范围等物理层的标准可以总结为以下四种特性:机械特性:定义物理连接的特性,规定物理连接时所采用的规格、接口形状、引线数目、引脚数量和排列情况电气特性:规定传输二进制位时,线路上信号的电压范围、阻抗匹配、传输速率和距离限制功能特性:指明某条线上出现某一电平表示何种意义,接口部件的信号线用途规程特性:定义各条物理线路的工作规程和时序关

2021-03-13 10:33:40 707

原创 3.网络模型

OSI七层参考模型OSI参考模型国际标准化组织(ISO)于1984年提出开放系统互连OSI参考模型,目的是:支持异构网络系统的互联互通-应用层应用层可以定义为是所有能和用户交互产生网络流量的程序的集合,是OSI参考模型的顶层典型应用层服务:1. 文件传输(FTP)2. 电子邮件(SMTP)3. 万维网(HTTP)**表示层**表示层主要用于处理在两个通信系统中交换信息的表示方法(语法和语义)表示层功能:1. 数据格式交换(翻译)2. 功能二:数据加密解密3. 功能三:数据压缩

2021-03-13 10:31:34 222

原创 2.分层结构

计算机网络之分层结构、协议、接口、服务为什么要分层我们在发送文件前要做的工作:1. 发起通信的计算机必须讲数据通信的通路进行激活2. 要告诉网络如何识别目的主机3. 发起通信的计算机要查明目的主机是否开机,并且与网络连接正常。4. 发起通信的计算机要弄清楚,对方计算机中文件管理程序是否已经做好准备工作5. 确保差错和意外可以解决(意外指网络传输中 字节流没传到或者传错等情况6. ......按照计算机学科的习惯,一般很多事情要做的时候,都会加一个层来解决问题,因为通过加层的这种模式,我们

2021-03-13 10:30:46 366

原创 1.性能指标

计算机网络性能指标速率定义:速率即数据率或称数据传输率或比特率,是表示连接在计算机网络上的主机在数字信道上传输数据位数的速率(就是一秒能够传输多少比特(0或1))带宽定义:计算机网络中,带宽用来表示通信线路传送数据的能力,通常是指单位时间内从网络的某一点到另一点所能通过的"最高数据率"单位是:比特每秒即b/s、kb/s、Mb/s、Gb/s-由图可知,带宽只会影响单位时间内进入链路数据的多少,不会影响传播速率吞吐量定义:表示在单位时间内通过单个网络(或信道、接口)的数据量单位是:比特每秒

2021-03-13 10:30:08 178

原创 6.Java虚拟机栈:栈帧

Ⅰ. 栈帧内部结构每个栈帧存储着:1.局部变量表(Local Variables)、2.操作数栈(Operand Stack)、3.动态链接(Dynamic Linking)、4.方法返回地址(Return Address)、5.一些附加信息Ⅱ. 局部变量表一、局部变量表基本理解1.局部变量表也被称为局部变量数组或本地方法表2.定义为一个数字数组,主要用于存储方法参数和定义在方法体内的局部变量这些数据类型包括各类基本数据类型、对象引用(reference),以及returnAddress3.由

2021-03-13 10:28:01 251 1

原创 5.JVM运行时数据区:Java虚拟机栈

一、虚拟机栈的背景基于Java的语言的跨平台性设计,由因为CPU的架构不同,所以JVM不能设计为基于寄存器结构根据栈设计​ 优点:1. 跨平台 2.指令集小,编译器容易实现​ 缺点 :1.性能下降,效率低 2.实现同样功能需要更多的指令JVM的堆与栈栈是运行时的单位,堆是储存单位:栈管运行,堆管储存栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题,即数据怎么放、放在哪儿一般来讲,对象主要都是放在堆空间的,是运行时数据区占用内存较大的一部分栈存

2021-03-13 10:26:31 121

原创 4.JVM运行时数据区:程序计数器

一、程序计数器(PC)概念JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟下图是一张经典的JVM工作流程图在正在运行线程中,只有位于栈顶的栈帧才是有效的,称为当前栈帧,与这个栈帧相关联的方法称为当前方法我们可以看到PC寄存器(程序计数器)与执行引擎指向同一地址,下面我们来探究PC寄存器的作用二、程序计数

2021-03-13 10:24:06 99

原创 3.JVM运行时数据区

一、内存工作原理内存是计算机中重要的部件之一,它是外存(如硬盘)与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器和主存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,操作系统就会把需要运算的数据从内存调到CPU中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行由上图可知:内存可以加快软件的运行速度二、运行时数据区经典内存布局J

2021-03-13 10:23:29 94

原创 2.类加载器子系统

类加载器子系统一、JVM架构图二、 类加载子系统运行流程加载1.通过一个类的全限定类名获取定义此类的二进制字节流2.将这个字节流所代表的静态存储结构转换为方法区运行时数据结构3.在内存中生成一个代表这个类的java.lang.Class对象,作为方法区中这个类的各种数据的访问入口链接:验证、准备和解析验证:1. 确保Class字节的字节流中包含的信息符合JVM的要求,保证被加载类的正确性,不会危害虚拟机自身安全2. 验证四种格式:文件格式验证、源数据验证、字节码验证和符号引用

2021-03-13 10:22:33 103

原创 1.JVM体系结构

一、JVM概述Java虚拟机有自己完善的硬件架构,如处理器、堆栈等,还具有相应的指令系统Java虚拟机本质上就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令。Java语言的可移植性正是建立在Java虚拟机的基础上。任何平台只要装有针对于该平台的Java虚拟机,字节码文件(.class)就可以在该平台上运行。这就是“一次编译,多次运行”Java虚拟机不仅是一种跨平台的软件,而且是一种新的网络计算平台。该平台包括许多相关的技术,如符合开放接口标准的各种API、优化技术等。Jav

2021-03-13 10:21:26 95

原创 MybatisPlus从入门到放弃

本文主要内容:MybatisPlus的使用MybatisPlus快速入门一、MybatisPlus简介MybatisPlus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生二、快速开始1、创建数据库 mybatis_plus2、创建User表CREATE TABLE user( id BIGINT(20) NOT NULL COMMENT '主键ID', name VARCHAR(30) NULL DEFAULT NULL COMM

2020-06-16 10:28:36 508

原创 手把手快速搭建个人博客

本文主要内容:使用Typecho模板系统快速搭建博客使用Typecho模板系统快速搭建博客搭建前准备工作1.购买服务器(阿里云、腾讯云等)阿里云学生机(每年114元):阿里云学生机阿里云普通机(3年367元):阿里云普通机购买后安装CentOS7.X版本以上的系统(7.X以上方便自己学习Liunx相关知识)2.修改服务器密码并配置安全组规则3.购买域名4.域名备案(只要是中国境内的服务器均需要备案,需要10天左右)5.下载Typecho博客系统和下载远程连接服务器需要的工具(我已

2020-06-08 10:07:32 555

原创 Docker(四):Docker部署SpringBoot项目

本文主要内容:使用Docker部署SpringBoot项目1.使用Maven构建获得jar包2.编写DockerfileFROM java:8COPY *.jar /app.jarCMD ["--server.port=8080"]EXPOSE 8080ENTRYPOINT ["java", "jar", "app.jar"]3.上传Docker与jar包到Linux服务器4.使用命令获得镜像docker build -t ideatest .5.使用命令查看构建到的镜像

2020-06-04 15:37:43 193

原创 Docker(三):理解Docker镜像、Docker容器数据卷和DockerFile

本文主要内容:深入理解Docker镜像、Docker容器数据卷和DockerFileDocker镜像理解Docker镜像是什么镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时库、环境变量和配置文件Docker镜像加载原理UnionFs:联合文件系统UnionFs(联合文件系统):Union文件系统(UnionFs)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,

2020-06-04 15:36:01 1262

原创 Docker(二):Docker常用命令和安装Nginx与Tomcat

本文主要内容:Docker常用容器、镜像命令和安装Nginx与TomcatDocker帮助命令1. docker version # 显示Docker的版本信息2. docker info # 显示Docker的系统信息(包含镜像与容器的数量)3. docker 命令 --help # 查看帮助(就是显示这个命令有什么可选项)Docker镜像命令docker images:显示本机上所有安装镜像[root@MT ~]# docker imagesREPOSI

2020-06-04 15:32:26 222

原创 Docker(一):Docker安装与底层原理

本文主要内容:Docker安装与底层原理Docker的组成镜像(image):Docker镜像就相当于是一个文件系统,通俗来说就是为容器用来创建容器的容器(Container):Docker 利用容器 (Container) 独立运行的一个或一组应用,容器是用镜像创建的运行实例,它可以被启动、开始、停止、删除,每个容器都是相互隔离的、保证安全的平台,可以把容器看做是一个简易版的Linux系统容器就相当于Java中的对象,镜像相当于Java中的类仓库(Repository)仓库是集中存放镜

2020-06-04 15:31:15 292

原创 Java多线程(三):读写锁、阻塞队列和自定义线程池

本文主要内容:读写锁、阻塞队列和自定义线程池五、读写锁ReentrantReadWriteLock:读写锁出现就是为了更加方便的操作多条线程对资源的读写readWriteLock.readLock():读锁 == 共享锁readWriteLock.writeLock():写锁 == 独占锁public class ReadWriteLockTest { public static void main(String[] args) { MyThreads myThread

2020-06-04 15:28:53 460

原创 Java多线程(二):集合类不安全和常用的辅助类

本文主要内容:解决多线程操作集合类不安全问题、常用的辅助类一、集合类不安全ArrayList当我们使用多线程操作同一个ArrayList时会产生以下问题:java.util.ConcurrentModificationException(并发修改异常)public class SafeArrayList { public static void main(String[] args) { List<String> list = new ArrayList

2020-06-04 15:27:08 256

原创 Java多线程(一):Synchronized与Lock的使用

本文主要内容:Lock锁解决卖票问题、Lock版的生产者与消费者和Synchronized与Lock区别Lock锁解决卖票问题1.Synchronized版public class SaleTicket_Synchronized { public static void main(String[] args) { Ticket_Synchronized ticket_synchronized = new Ticket_Synchronized(); new

2020-06-04 15:26:12 228

原创 SpringBoot之整合Shiro

本文主要内容:SpringBoot整合Shiro###Shiro基本介绍1.基本概念:Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理2.Shiro的三大核心组件:Subject, SecurityManager和Realms1. Subject:是一个安全术语,其基本意思是“当前的操作用户”,称之为“用户”并不准确,因为“用户”一词通常跟人相关,但是Subject也可以是第三方进程、后台帐户(Daemon Account)、定时作业(Corn Job)或其他类似事

2020-06-04 15:25:38 223

原创 SpringBoot之集成Swagger

本文主要内容:使用SpringBoot集成Swagger、Swagger中的注解SpringBoot集成Swagger首先需要引入相关依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dep

2020-06-04 15:23:14 146

原创 SpringMVC基础学习(二):响应数据、实现文件上传、实现异常处理、实现拦截器

本文主要内容:响应数据、SpringMVC实现文件上传、SpringMVC实现异常处理、SpringMVC实现拦截器响应数据返回值类型为String方法返回字符串可以指定逻辑视图的名称,根据视图解析器为物理视图的地址返回值是void1.如果控制器的方法返回值编写成void,执行程序报404的异常,默认查找JSP页面(此方法的@RequestMapping()注解提供的页面)没有找到2.可以使用请求转发或者重定向跳转到指定的页面返回值是ModelAndView对象1.ModelAndV

2020-06-04 15:21:29 203

原创 SpringMVC基础学习(一):请求参数、请求注解

本文主要内容:SpringMVC执行流程、请求参数的绑定、SpringMVC常用请求注解SpringMVC的执行流程请求参数的绑定请求参数的绑定说明1.绑定机制1.表单提交的数据都是k=v格式的 username=zhangsan&password=1232.SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的3.要求:提交表单的name和参数的名称是相同的2.支持的数据类型1.基本数据类型和字符串类型2.实体类型(JavaBean)

2020-06-04 15:20:47 594

原创 Spring基础学习(三):基于XML和注解的AOP

本文主要内容:基于XML和注解的AOP使用AOP概念AOP:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率个人理解:就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对我们的已有方法进行增

2020-06-04 15:19:10 299

原创 Spring基础学习(二):基于注解的IOC配置

本文内容:基于注解的IOC配置一、 基于注解的配置中,我们需要查看是否存在aop的jar包二、 常用注解介绍1. @Component:作用:把资源交给Spring管理,相当于xml中的一个bean属性:①. value:相当于bean的id,如果不指定value属性,默认为当前类名的首字母小写2. @Controller @Service @Repository作用:这三个注解都是@Componet注解的衍生注解,它们的作用和属性与@Componet是一样的,只是提供了更加明确的使用位置

2020-06-04 15:17:23 241

原创 Spring基础学习(一):基于XML的IOC配置

本文主要内容:Spring基于XML的IOC环境搭建、依赖注入Spring基于XML的IOC环境搭建IOC:控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度个人理解:通过反射的方式来创建对象(这里我们通过Spring框架来帮我们实现通过反射获取对象)来实现降低耦合关于通过反射获取对象的XML文件的编写(就是编写要获取的具体bean对象)使用默认构造函数创建,在Spring的配置文件中(XML)使用bean标

2020-06-04 15:15:19 193

空空如也

空空如也

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

TA关注的人

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