自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c语言系统编程之多进程

堆(存储malloc和calloc出来的空间)、栈(局部变量、环境变量、命令行参数)、数据段(全局变量、静态变量、常量)、代码段(用户代码、系统初始化的代码)当父进程比子进程先死亡,子进程就会变为孤儿进程,所有孤儿进程都由init进程进行回收。创建进程的函数:fork(),fork函数会连续返回两个值,一个是子进程返回零,一个是父进程返回大于零。子进程死亡,父进程未回收子进程的资源(调用wait),子进程变为僵尸进程。所有进程都有其父进程,最开始的进程有init进程和system进程创建。

2023-10-01 19:50:48 425

原创 云服务器与http服务器

接收http服务器返回的数据需要进一步进行字符串处理操作,提取有用的数据。如何与http服务器建立连接(客户端)?

2023-09-12 20:28:03 187

原创 TCP服务器使用多路复用

解决linux系统中的io阻塞问题,让多个阻塞io接口可以一起执行。无需开启线程,节省系统资源。函数poll()实现与select()基于一样的功能,只是参数的组织形式不同。scanf、read管道、eadTcp套接字、acppet接收连接请求。linux系统中的阻塞io有哪些?1.用select实现。

2023-09-12 19:48:24 642

原创 如何使用shell脚本与Makefile脚本

shell脚本的概念?用户在访问linux操作系统时,都是通过shell命令访问,shell命令保护了操作系统,让用户更方便方便访问操作系统。常见的shell命令(linux操作命令)有哪些?什么是shell脚本?shell脚本就是把shell命令写入一个文件中。shell的输入输出:输出:echo 例如: echo "hello" ; echo -e "hello\n" ;(使用转义字符前加-e)输入:read 例如: read a;(从键盘中获取数据放入变量a中)什么

2023-09-12 15:39:02 201

原创 模板(c++)

stl(c++标准模板库)是通用类模板和算法的结合,他提供给程序员一些标准的数据结构的实现如:queues(队列)、lists(链表)、stacks(栈)遇到功能一样数据类型不一样的操作,可以设计一个模板,把数据类型通用化,实现泛型编程。当模板函数无法推导类型时,用户需多定义几个通用类型,或者指定模板类型。如果模板函数的参数比普通函数的参数更加匹配时,优先调用普通函数。如果模板函数与普通函数实现的功能一致时,优先调用普通函数。当一个函数中包含通用类型,那么该函数就是模板函数。2.把模板类的类型继续模板化。

2023-09-07 09:04:50 86

原创 运算符重载与string类

重载就是赋予一个实物新的功能,以往的运算符只支持基本的数据类型操作无法操作用户自定义的数据类型,这时我们就要用运算符重载赋予运算符新的功能。注意:重载赋值运算符,只能是类内函数不能是类外函数。返回值类型 operator运算符(参数列表);

2023-09-05 15:49:11 71

原创 输入输出-命名空间

c++的一些新特性:输入输出、命名空间、动态内存分配、函数重载、面向对象、运算符重载、友元、模板、stl库、异常处理、c++11新特性。以c语言为基础,添加了一些最新的编程方法和现代化的编程思想。cin作为输入包含的特点:不需要思考变量的类型、不需要思考变量名的含义。匿名空间的作用:限制变量只能在当前文件使用,作用与static相似。以c语言为基础,添加了一些最新的编程方法和现代化的编程思想。命名空间的作用:给变量或者函数添加空间名,防止命名冲突。匿名空间的概念:没有空间名的命名空间就是匿名空间。

2023-09-05 14:49:06 65

原创 动态内存分配与引用

引用相当于给变量取别名,对引用进行操作与对该变量进行操作一致、1.当一个函数的返回值是引用时,那么返回的数据的空间必须存在。常量引用无法修改目标的值,在函数传递参数时必须更加安全。2.当一个函数的返回值是引用时,该函数可以作为左值。引用是一种特殊的指针,它执行引用对象的内存地址。引用的应用场景:引用一般在函数传递参数时使用。对常量引用必须添加const或者右值引用。值传递、地址传递、引用传递。引用初始化后目标无法修改。

2023-09-05 14:12:36 57

原创 动态内存分配与引用

注意:new在动态分配内存空间的时候会调用构造函数,malloc不会。delete在动态释放内存空间时会调用析构函数,delete不会。new分配内存空间,自动计算类型的空间大小,且会调用构造函数。代码段:存放switch、for、while....代码。delete释放多块内存空间:delete[] 对象名。堆:存放堆空间,由malloc分配和free释放。栈:存放局部变量,由系统自动分配和是否的内存。delete释放对象空间,且会调用析构函数。可以在分配堆空间的时候进行初始化。栈、堆、数据段、代码段。

2023-09-05 10:48:08 49

原创 函数重载与多态

1.静态多态:函数在编译阶段就已经确定将要执行的状态。例如:函数重载、运算符重载、模板。函数重载:函数名相同,根据传入参数的个数、类型、顺序不同,表现出不同的功能。目的为了防止类外随便防问当前类的重要成员导致,类奔溃,提高稳定性和安全性。2.动态多态:函数在运行阶段才能确定将要执行的状态。在定义类的时候,数据成员都是放入私有区,成员函数都是放入公共区。一个对象作用于不同的事物,所表现出来的功能状态不同。一个函数由于传入参数的不同,而表现出不同的功能状态。函数默认参数的填写顺序:从右边到左。

2023-09-05 09:36:00 75

原创 类大小-析构函数-构造函数

注意:在定义构造函数时,可以用参数列表初始化的方式进行类中的数据成员初始化!当一个类的构造函数的参数是当前类的引用时,该构造函数就是拷贝构造函数。每一个类的内部函数都有一个this指针,指向当前类的首地址。1.每次分配空间是根据当前结构体最大类型进行分配的。当一个对象初始化另外一个对象时,会调用拷贝构造函数。在对象被销毁时,释放构造函数中分配的资源。在定义类的同时用来初始化类中的数据成员。3.数据的地址肯定是当前大小的整数倍。2.分配的总大小是对齐字节的整数倍。类大小的计算和结构体的计算是一样的。

2023-09-04 19:58:51 54

原创 深拷贝与类的继承

因为系统生成的拷贝构造函数是浅拷贝,不会拷贝(空间资源、文件资源、映射资源),他只会单纯的进行值拷贝。深拷贝:用户重写后的拷贝构造函数就是深拷贝,由用户自定义,包括生成对应的空间,拷贝对应的值等。继承分为:公共继承、保护继承、私有继承,根据继承方式的不同,基类在子类中的存放区域也不同。如果构造函数中分配了一些堆空间,这时候就要进行重写拷贝构造函数进行深拷贝。继承就是把基类放入派生类中,不同的继承方式就是放入不同的区域。浅拷贝:系统自动生成的拷贝构造函数,就是浅拷贝,只拷贝值。为什么要进行深拷贝?

2023-09-01 20:31:47 73

原创 多继承、多级继承、菱形继承

在继承中,基类和派生类的构造函数和析构函数都会执行,执行顺序为:基类构造->派生类构造->派生类析构->基类析构。当含有虚函数时会产生一个虚表,所有的虚函数都会放入虚表中,当虚表中有多个同名同参的虚函数时会进行覆盖。2.派生类重写同名的数据成员和成员函数,对基类的函数进行隐藏。3.通过虚继承把基类放入虚表中,进行覆盖操作。一个类中包含另一个类,这种方式就叫做类的组合。C++可以多继承也可以多级继承。1.利用域操作指定使用的接口。

2023-09-01 20:04:18 52

原创 封装、继承、多态(c++语言)(二)

面向对象的三大特征(封装、继承、多态)

2023-08-31 20:49:43 60

原创 虚构类和抽象类、友元

由于声明顺序的问题,当两个类互为友元类时,需要将类声明提前,且类中的函数需要在两个类声明完毕后在类外定义,同理类中函数作为友元访问另一个类的所有成员也需要将该函数在两个类声明完毕后在外部进行定义。在一个函数内部声明另一个被friend修饰的函数,那么被friend修饰的函数称为该函数的友元函数,友元函数具有权限访问该函数的所有数据成员和成员函数。问题:通过基类指针,释放派生类的堆空间时,并不会调用派生类的析构函数,导致派生类中构造分配的资源未被释放。友元函数:慎重使用,不利于代码的安全性,破坏类的封装性。

2023-08-31 20:01:40 97

原创 常见的服务器状态码?

100:初始请求已接收,客户应该继续发送请求的其余部分。204:服务器成功处理了请求,但未返回什么内容。404:请求失败,所请求的资源在服务器上找不到。400:请求的语法错误,服务器无法解析。500:服务器内部错误,无法完成请求。202:已接收请求,但未处理完成。403:拒绝执行此请求。302:临时性重定向。

2022-09-19 11:36:59 194 1

原创 tcp和udp的区别

1.tcp是面向连接的,先连接后传递数据,udp是无连接的2.tcp提供可靠的信息服务,传输数据无差错不丢失,udp不保证可靠交付3.tcp效率比udp高4.tcp只能支持点对点,一对一的数据传输服务,udp可以实现一对一、一对多、多对多和多对一的交互通信。...

2022-05-24 11:20:10 140

原创 tcp/Ip建立连接的三次握手,断开连接的四次挥手

三次握手:举例:(第一次)首先客户端给服务端发送一个syn包,表示请求建立连接,同时用来表示我能正常发送消息,(第二次)之后服务器端接收到syn包后,给客户端发送一个syn包和一个ack包,前者用来表示服务器端向客户端发出请求连接,表示自己能正常发送消息,后者用来应答响应,表示我接收到你的连接请求了,(第三次)当客户端收到请求后,再发出ack包,表示我收到你的请求连接了,你的请求无误。三次数据传输结束,连接建立。四次挥手:举例:(第一次)首先客户端给服务器发送一个fin包和ack包,表示我要和你

2022-05-23 18:11:15 275

原创 http和https的区别

1.http协议是超文本传输协议,数据传输不安全,为明文传输2.https协议是经过ssl协议加密过的加密传输协议3.https协议需要ca申请证书4.http用的端口为80,https用的端口为4436.http是无状态连接,https是通过ssl和http协议构建的可进行加密传输和身份认证的网络协议...

2022-05-23 11:56:54 161

原创 Linux常用操作指令

对目录的操作:pwd:查看当前工作目录clear:清理屏幕cd ~:进入当前用户目录cd -:进入上次进入的目录cd ..:进入上级目录ll:具体查看当前目录下的内容ls:粗略查看当前目录下的内容mkdir:创建目录mkdir -p :递归创建目录find -name :查找文件mv 原目录 目标目录/重命名目录:移动和重命名cp - 原目录 目标目录 :复制目录rm -rf :前置删除所有rm -f : 普通删除,会询问touch :创建文件

2022-05-20 11:52:58 114

转载 notify和notifyAll的区别

notify和notifyAll的区别首先讲这俩区别之前先来了解两个概念。锁池EntryList和等待池WaitSet。而这两个池和Object基类的notify锁池假设线程A已经拥有了某个对象(不是类)的锁,而其它线程B、C想要调用这个对象的某个synchronized方法(或者代码块), 由于B、C线程在进入对象的synchronized方法(或者块)之前必须先获得该对象锁的拥有权,而恰巧该对象的锁目前正被线程A所占用,此时B、C线程就会被阻塞,进入一个地方去等待锁的释放,这个地方便是该对象的锁

2022-05-19 22:16:05 587

原创 SpringBean的生命周期

Spring容器根据配置信息生成BeanDefinition,循环BeanDefinition进行SpringBean的实例化,然后是注入属性(优先自定义的属性),对SpringBean进行初始化,初始化后就可以获取了,最后销毁。

2022-05-19 21:18:13 183

原创 StringBuilder和StringBuffer的区别

这两个的底层都是可变字符序列,他们最主要的区别是StringBuilder效率高,但线程不安全,StringBuffer效率低,线程安全。

2022-05-19 20:52:19 106

原创 进程和线程的区别

根本区别:线程是系统运算调度的最小单元,进程是系统资源分配的最小单元所属关系:线程属于进程,进程中可以包含很多线程开销不同:进程创建、销毁、切换的开销大于线程拥有的资源的不同:每个进程有自己的内存和资源,线程共享这些内存和资源cpu的利用率不同:进程的cpu利用率较低,因为上下文切换开销大,而线程的cpu利用率较高,因为上下文切换开销小...

2022-05-19 20:41:07 100

原创 redis数据类型

redis的存储数据类型有:String、hash、list、set、zset五种类型1.String类型以key-value的形式存储String类型是二进制安全的,这代表它能存包括数字、字符、图片和序列化后的对象常用语句:set key valueget keydel key2.hash类型其值本身是键值对的形式,以key-filed-value 的形式存储hset key filed valuehget key filedhgetall key3.l

2022-05-19 20:08:15 141

原创 RestController和Controller的区别

RestController的作用相当于Controller加ResponseBody共同作用的结果,但采用RestController请求方式一般会采用Restful风格的形式。Controller的作用:声明该类是Controller层的Bean,将该类声明进入Spring容器中进行管理ResponseBody的作用:表明该类的所有方法的返回值都直接进行提交而不经过视图解析器,且返回值的数据自动封装为json的数据格式RestController的作用:包含上面两个的作用,且支持Restfu

2022-05-05 20:05:27 35296 3

原创 事务的特征

事务有四大特征:1.原子性:事务被当成一个最小的执行单位,运行事务中的某些sql语句单独执行,要么事务中的sql语句全部执行成功,要么全部失败,也就是事务失败。2.一致性:事务的执行不能破坏数据库的完整性和一致性3.持久性:事务一旦提交或者rollback,数据就无法返回,已经被持久的存储在数据库中了4.隔离性:不同事务之间有隔离性,根据隔离级别的不同,事务与事务之间执行过程中所造成的数据的影响也不同ps:补充隔离级别的不同,因数据的变化造成事务与事务之间的影响:(read

2022-05-05 19:44:37 1048

原创 MySQL常用语句

以book表为例创建表create table book(列名 类型(字节空间)约束(如:primary key auto_increment not null)增加外键约束constraint foreign key 外键列名 references 外表(主键))增加insert into book (列名)value(数值)删除delete from book where xx=xx修改update book set xx=xx where xx=

2022-05-05 17:46:20 385

原创 AOP的实现方式

AOP在代码中的实现方式有三种:1.采用spring的原生API进行实现先定义通知类:after通知类型的通知类实现AfterRuturnAdvice接口,实现内部的方法,在方法中加入你要通知的操作before通知类型的通知类实现MethodBeforeAdvice接口,实现内部的方法,在方法中加入你要通知的操作还有其他的通知类型就不一一列举了,之后便是在application配置文件中声明通知类bean、插入类bean,配置切入点、通知然后,当你运行被切入的类的切入点方法时

2022-05-05 17:13:03 3549

原创 Spring常用注解

Spring常用注解

2022-05-05 12:06:43 65

原创 解决javax.servlet.ServletException: Servlet[dispatcherServlet]的Servlet.init()引发异常的问题

解决javax.servlet.ServletException: Servlet[dispatcherServlet]的Servlet.init()引发异常的问题

2022-05-05 10:40:40 2739

原创 解决org.springframework.beans.factory.BeanInitializationException: Could not load properties问题

解决org.springframework.beans.factory.BeanInitializationException: Could not load properties问题

2022-05-05 10:28:45 2227

原创 解决Caused by: java.io.IOException: Could not find resource classpath:mapper/*xml问题

发现是我的mybatis配置文件的这一句出现了问题:发现找不到我的mapper文件 ,具体什么原因也不知道,不清楚是不是tomcat没启动还是怎么的(因为我是在练习快速搭建ssm框架的测试,是用ApplcationContext接口启动Spring容器的,还没通web.xml的配置启动)最后解决办法:把这个删掉,在application配置文件中配置mapper.xml文件的加载,如图然后重新测试,问题解决了...

2022-05-05 09:25:50 1956

原创 解决java.sql.SQLException: Access denied for user ‘‘@‘localhost‘ (using password: YES)成功

我用的是druid连接池原来的配置是发现是数据库连接名配错啦,把<property name="name" value="${jdbc.username}"/>改为<property name="username" value="${jdbc.username}"/>ok。可以运行了

2022-05-05 09:06:59 856

原创 Spring框架常用的API

解释一下api是什么:api是技术中预先定义的一些函数和接口1.ApplicationContext接口有三个实现类用来加载applicationContext.xml文件1.ClassPathXmlAppliactionContext类:从类的根目录下加载配置文件(常用)2.FileSystemApplicationContext类:从磁盘路径下加载配置文件(不常用)3.AnnotationConfigApplicationContext类:使用注解类作为spring的配置类,加载该注

2022-05-04 17:55:23 2260

原创 线程中的run()方法和start()方法区别

首先线程中的run()方法是线程的执行体方法,而start()方法线程对象的启动方法。当线程对象直接调用run()方法时,相当于在主线程中运行run()方法,也就是和其他普通类调用方法相同,无法达到在其他线程中将run()方法当做线程执行体来运行的效果,多线程未启动。但线程对象调用start()方法后,线程启动,线程将run()方法作为线程执行体来运行,可以达到多线程的效果。...

2022-05-04 17:03:15 571

原创 死锁是怎么形成的

死锁形成的四个必要条件:1.互斥条件:多个进程同时需要同一资源,而该资源又被上了锁,被一个进程所拥有,其他线程被迫等待资源的释放2.不剥夺条件:请求进程不能强行夺取正在使用该资源的进程,只能由该进程主动释放资源3.请求与保持:进程在占有至少一个资源的同时,对其他资源也发出了请求,但其他资源已经被另外的线程占有,请求进程进入阻塞,且保存对资源的不释放。4.循环等待:存在进程循环等待链,链中每一个进程所获取的资源被另一个进程所请求,但该进程的请求资源也被其他进程所获取,被迫进入阻塞状态,资源不释

2022-05-04 16:53:28 420

原创 实现线程的方法

线程的实现方法主要有三种:1.继承Thread类实现线程。2.实现Runnable接口实现线程。3.实现Callable接口实现线程。具体介绍一下这三种线程的实现方式:1.继承Tread类实现线程步骤:创建一个类继承Tread类--->重写Tread类中的run()方法---->用继承类创建一个个对象(每个对象代表一个线程)---->调用线程对象的start()方法---->多个线程启动了2.实现Runnable接口实现线程步骤:创建一个类实现Runnable接口

2022-05-04 16:27:15 717

原创 简单理解下JVM的组成部件

jvm的组成部件分为四大组成部件,分别为class loader 类加载器、running time data 运行时数据区、execution engine执行引擎、native interface 本地接口。以java代码运行关系为例,说明四大组成部件的作用:首先java代码在经过编译器下被编译为字节码文件(class文件),但字节码文件并不能直接在底层操作系统中运行,需要通过jvm进行二次翻译成底层可用的系统指令,其翻译的步骤为字节码文件被class loader 类加载器加载进入 running

2022-05-04 11:52:29 415

原创 Java面向对象的三大特征

面向对象的三大特征主要为:封装、继承、多态封装是制度类的内部信息进行隐藏,一般是指对类内部的属性进行私有化,外部无法直接访问或影响内部的属性,只能通过特定的方法对封装的内容进行访问,提高了代码的安全性继承是指子类继承父类,子类可以获得父类的全部属性和方法,且可以拥有一些父类所没有的方法和属性,提高了代码的复用性和逻辑性。多态指的是类与类的关系,多态必备三要素:继承、重写、父类引用子类对象,对于方法来说,非静态方法遵循编译看左边,运行看右边,静态方法遵循编译看左边运行看右边,对于属性来说是编译看左

2022-04-23 18:12:50 5764

空空如也

空空如也

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

TA关注的人

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