自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 AOP设计思想与实用

百度百科:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。AOP它是一种思想,是对某一类事情的集中处理。换句话说,如果我们在做某件事之前,必须先进行另一件事,而另一件事很多地方都会用到,此时我们就可以把另一件事单独放在一处集中处理。例如。

2023-05-18 14:38:04 1018

原创 Spring Boot实用技巧之单元测试

断言(assertion)是一种在程序中的一阶逻辑(如:一个结果为真或假的逻辑判断式),目的为了表示与验证软件开发者预期的结果——当程序执行到断言的位置时,对应的断言应该为真。若断言不为真时,程序会中止执行,并给出错误信息。很多时候,我们只是想进行测试,但是不愿意数据库中的数据也被修改,才是我们就要设置单元测试的回滚操作。:单元测试(unit testing)是指对软件中的最⼩可测试单元进⾏检查和验证的过程。,最后我们根据测试结果来找错排错。

2023-05-11 09:15:00 2193

原创 MyBatis介绍、创建与使用

1. #{}:预编译处理预编译处理是指 MyBatis 在处理 #{} 时,会将 SQL 中的 #{} 替换为?号,调用 PreparedStatement 的 set 方法来赋值2. ${}:字符直接替换字符直接替换是指 MyBatis 在处理 ${} 时,就把 ${} 替换成变量的值。

2023-05-08 20:27:00 1011

原创 Spring MVC程序开发

Spring MVC 是一个 Web 框架Spring MVC 是基于 Servlet API 构建的MVC 是 Model View Controller 的缩写,它是软件工程中的一种软件架构模式,他把软件系统分为模型、视图和控制器三部分Model(模型):是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据View(视图):是应用程序中处理数据显示的部分。通常视图是是依据模型数据创建的Controller(控制器):是应⽤程序中处理⽤户交互的部分。

2023-05-05 11:14:53 885

原创 Spring Boot相关概念、创建与运行

经过上述操作,我们就得到了 Spring Boot 的项目目录,如下图:src/main/java 为 Java 源代码src/main/resources 为静态资源或配置文件/static:静态资源文件夹(包括html/js/css/img等等)/templates:模板资源文件夹(通用资源,比如通用的css文件/js文件等等)/application.properties:配置文件src/test/java 为 Java 单元测试文件。

2023-05-01 10:38:49 1221 1

原创 Spring核心与设计思想、创建与使用

限定程序中变量的可⽤范围叫做作⽤域,或者说在源代码中定义变量的某个区域就叫做作⽤域。⽽Bean 的作⽤域是指 Bean 在 Spring 整个框架中的某种⾏为模式,⽐如 singleton 单例作⽤域,就表示 Bean 在整个 Spring 中只有⼀份,它是全局共享的,那么当其他⼈修改了这个值之后,那么另⼀个⼈读取到的就是被修改的值。

2023-04-26 12:00:34 498

原创 selenium-基于UI的自动化测试框架

自动化测试是指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果,将人为驱动的测试行为转化为机器执行的过程自动化测试包括UI自动化、接口自动化、单元测试自动化。按照这个金字塔模型来进行自动化测试规划,可以产生最佳的自动化测试产出投入比,可以用较少的投入获得很好的收益。

2023-04-06 19:19:48 1546

原创 软件测试详解

软件测试就是找bug,发现缺陷。就是验证软件产品特性是否满足用户的需求特点:软件测试只是一个样本试验,具有不可穷尽性在多数软件公司里,会有两部分需求,一部分是用户需求,一部分是软件需求用户需求:甲方的需求,往往比较简略软件需求:具体描述开发人员必须要实现的功能。要将用户需求转变为软件需求需要进行技术可行性研究和市场可行性分析等等当程序没有实现其最终用户合理预期的功能要求时,就是软件错误。

2023-03-11 18:36:24 1271

原创 Java网络编程

随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连。网络互连:将多台计算机连接在一起,完成数据共享数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信。根据网络互连的规模不同,可以划分为局域网和广域网。

2023-01-30 10:00:00 398

原创 文件IO操作

广义的文件文件不仅仅是普通意义上的文件,网卡/显示器/键盘,都被抽象成了文件,因此文件操作在网络编程方面,应用非常广泛文件的分类文件可以分为二进制文件和文本文件,文本文件用字符保存(底层还是二进制),二进制文件用字节保存相对路径和绝对路径绝对路径:以盘符开头相对路径:以.或者…开头的,.表示当前路径(比如./java.exe),…表示当前路径的父目录(上级路径)(比如…/src.txt)相对路径的基准路径如何确认如果是通过命令行的方式,那么执行命令所在的目录,就是基准目录。

2023-01-28 08:00:00 516

原创 JavaWeb好用的工具、快捷键以及简单语法

通过开发者工具,就可以观察到页面的基本结构。:右键 -> 检查;

2023-01-26 14:35:13 1986

原创 Tomcat-HTTP服务器介绍、安装与使用

Tomcat,是一个 HTTP 服务器,就是在 TCP 服务器的基础上,加上了一些额外的功能。使用 HTTP 服务器的 API。就可以来提取HTTP请求的内容,也可以构造HTTP响应bin目录里面包含了启停脚本,其中.bat后缀的文件,是windows的批处理文件,.sh后缀的文件,是linux的shell脚本的文件,即在windows操作系统下,使用打开Tomcat,在Linux操作系统下,使用startup.sh打开Tomatconf目录里面包含了Tomcat的配置文件,是通过xml。

2023-01-26 14:31:48 1052

原创 网络原理之HTTP/HTTPS、TCP、IP四层协议栈

如果没有 Cookie,直接将要存储的数据保存在客户端浏览器所在的主机的硬盘上,那么就会出现很大的安全风险,比如当你不小心打开某个不安全的网站,该网站就可以在你的硬盘上写一个病毒程序,那么你的电脑就挂了!,第一次握手,服务器收到了客户端的SYN报文,服务器就知道了客户端的网络满足可靠传输,第二次握手,客户端收到了SYN、ACK报文,说明客户端就知道了自己和服务器的网络都满足可靠传输,第三次握手,是客户端告诉服务器,他自己的网络满足可靠传输,至此,双方都知道自己和对方的网络正常,那么就正式建立连接了。

2023-01-26 14:30:10 6515 2

原创 多线程之内功精修

CAS的操作中,第一步是比较,第二步是交换,如果有一个地址,在获取到这个地址的数值之前,数值是1,在比较前数值被其他线程修改,变成0,又变成了1,此时进行比较,1还是1,但已经不是原来的那个1,但是CAS还把他当作原来的那个1来对待,就可能引发一些问题。但是如果锁比较粗,一般不会进行这种锁优化。对于操作系统来说,在相同优先级的情况下,本身就是随机调度的,因此基于操作系统实现的 mutex 互斥锁,就属于非公平锁,而如果想实现公平锁,反而代价会大一点,比如说起码要有个队列来排先来后到。

2023-01-13 17:22:09 776

原创 DNS协议——域名解析

我们可能就会因为当地的域名解析镜像服务器挂了,导致我们访问不了网页,我们可以这样做......我们的主机查询了一次DNS后,主机就会把这个查询结果缓存一定的时间(浏览器进行缓存)

2023-01-06 20:29:48 778

原创 leetcode练习之商品折扣后的最终价格(单调栈算法)

给你一个数组 prices ,其中 prices[i] 是商店里第 i 件商品的价格。商店里正在进行促销活动,如果你要买第 i 件商品,那么你可以得到与 prices[j] 相等的折扣,其中 j 是满足 j > i 且 prices[j]

2023-01-04 21:32:06 542

原创 计算机工作原理简单介绍

因此,现代操作系统采用了”虚拟地址“的方法,不让进程访问到实际的物理地址,每个进程只能使用系统分配给自己的那块内存,多个进程之间相当于隔离开(比如A和B的虚拟地址都是0x1000—0x2000,但实际上它们的内存地址并不是一块)3.文件描述符表(程序运行过程中,经常要和文件打交道[文件是在硬盘上]),进程每次打开一个文件,就会在文件描述符表上多增加一项,(这个文件描述符表可以视为是一个数组,里面的每个元素又是一个结构体,对应一个文件的相关信息);以及给谁分的多,给谁分的少的一种依据。

2022-12-24 15:12:34 1151

原创 多线程基础入门

并发是计算机发展到今天的必然要求,如今随便一台计算机都是四核,八核CPU,该如何把这些CPU的资源充分利用,是我们需要思考的问题以上就是多线程最基本的内容,也是以后可能在开发中最常用的一些操作,之后会再介绍一些虽然工作中不太常用,但是需要我们了解的多线程相关的底层知识,会用工具是工作中的基本要求,但是明白原理才能让我们变得更加强大,工具使用起来也会更加得心应手!!!

2022-12-24 13:23:38 846

原创 Java数据结构之Map与Set

Map是一个独立的接口类,该类没有继承Collection和Iterable接口,因此我们在前面数据结构常用的方法不一定有,也无法使用迭代器和for-each语句,但是提供了toString()方法,因此如何实现自主遍历是我们后面要介绍的重点之一该类中存储的是结构的键值对,并且K一定是唯一的,不能重复。

2022-11-29 18:10:18 729

原创 二叉搜索树

在之后我们需要介绍两个非常重要的结构,分别是Set和Map,而在介绍之前,我们需要先介绍一下二叉搜索树,为之后的学习做一个铺垫。

2022-11-21 09:48:06 265

原创 八大排序算法实现与总结(七大比较排序)

由于我们内存是有限的,如果排序的数据量比较小,那么我们完全可以在内存中完成。但是,如果需要排序的数据需要的空间比内存大,那么我们就需要使用外部排序。2.我们知道,快排的结果就是构成一棵二叉树,而二叉树越往下走,分支节点越多,需要递归的次数也越多,但此时数据量并不大。:由于希尔排序最优解的问题暂时没解决,因此在这里只是说明除二增量法的时间复杂度大致为O(N ^ 1.3 ~ 1.5),比较范围内中头,中,尾三个数的大小,然后将中间值放到数组的开头(在数组有序或几乎有序的情况下极其有效)空间复杂度:O(范围)

2022-11-19 23:12:40 357

原创 Java数据结构之优先级队列(堆)

Java集合框架中提供了和两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,本文主要介绍PriorityQueue使用时必须导入Priority所在的包,即:PriorityQueue中放置的元素必须能够比较大小,不能插入无法比较大小的对象,否则会抛出ClassCastException异常不能插入null对象,否则会抛出ClassCastException异常没有容量限制,可以插入任意多个元素,其内部可以自动扩容。

2022-11-05 11:00:00 1362

原创 Java数据结构之二叉树

二叉树的创建很简单,但是难就难在操作上,我们为了简便,先自己手动创建一个简陋的二叉树的结构,着重介绍二叉树的操作,先创建一棵二叉树。我们有前面的概念可以看出,二叉树定义是递归式的,因此后序基本操作中基本都是按照递归实现的。完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是从满二叉树中引出来的,对于。的数据结构,它是由n(n >= 0)个有限节点组成的一个具有层次关系的集合,遍历是二叉树上最重要的操作之一,是二叉树进行其他运算的基础。称之为完全二叉树,由此可知,满二叉树是一种特殊的完全二叉树。

2022-10-25 21:32:39 2165 4

原创 Java数据结构之栈和队列

我们可以从集合那一节的图中看出,Stack继承了Vector,Vector和ArrayList类似,都是动态的顺序表,不同的是Vector是线程安全的。我们可以采用头插法来入栈,每次出栈时删除的也是头节点,时间复杂度也是O(1),但仍没有顺序栈方便,毕竟顺序栈不用修改指向。:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有。,队不为空时,rear都是front之后,随着入队出队的操作,最终。:栈的插入操作,叫做进栈/压栈/入栈,入数据在栈顶。

2022-10-24 10:00:00 1005

原创 Java数据结构之LinkedList与链表

链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链表次序实现的注意链式结构在逻辑上是连续的,但是在物理上不一定连续现实中的节点一般都是从堆上申请出来的从堆上申请的空间,是按照一定的策略分配的,两次申请的空间可能连续,也可能不连续单向或者双向带头结点或者不带头节点循环或者非循环我们主要学习无头单向非循环链表和无头双向链表LinkedList。

2022-10-21 21:58:00 198

原创 Java数据结构之顺序表与ArrayList

例如:线性表是数据结构的第一部分,也是用的比较多的一部分知识,话不多说,开始卷ArrayList集合框架【说明】ArrayList 实现了 RandomAccess 接口,表明 ArrayList 支持随机访问ArrayList 实现了 Cloneable 接口,表明 ArrayList 是可以 clone 的ArrayList 实现了 Serializable 接口,表明 ArrayList 是支持序列化的。

2022-10-02 21:07:15 280

原创 Java数据结构之集合,复杂度,与泛型

或许大家看过这句话,数据结构 + 算法 == 程序。同语法一样,数据结构同样是优秀程序员必备的基础,写代码时选择了适合地数据结构,可以帮助我们对数据进行更好地处理。因此这门课程对于我们来说是十分重要的,话不多说,干就完了!Java 集合框架 Java Collection Framework,又被称为容器container,是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes。

2022-09-28 15:48:07 326

原创 JavaSE基础语法之异常

当我们写下代码运行程序出错时,或者当项目较大需要找出 bug 时,或者当我们需要实现一些对自己代码的问题提示时,都避不开异常,所以我们有必要对异常进行专门的学习。作者建议,在看完第二部分的(一)之后,先看第二部分的(三)的第一点,再看异常的抛出和之后的内容Java 中虽然已经内置了丰富的异常类, 但是并不能完全表示实际开发中所遇到的一些异常,此时就需要维护符合我们实际情况的异常结构例如,我们实现一个用户登录功能if (!System.out.println("用户名错误!");return;

2022-09-22 08:45:14 183

原创 JavaSE基础语法之 String 类

String 类在 Java 中是极为特殊但又经常使用的一个类,所以我们需要重点学习由于 String 的不可更改特性,为了方便字符串的修改,Java 中又提供了 StringBuilder 和 StringBuffer 两大类。这两大类大部分功能是相同的。StringBuilder 和 StringBuffer 以及 String 是三个不同的类,三者不能混为一谈,但是前两个直接重写了 toString 方法,可以通过调用 toString 方法进行转换。

2022-09-18 11:47:44 715

原创 JavaSE基础语法之抽象类和接口

抽象类和接口这一章非常重要,这一章才真正体现出了Java面向对象的继承和多态以上就是今天要讲的内容,本文仅仅简单介绍了抽象类和接口的使用,大家可以看到语法很简单,但是要真正利用这些实现多态,抽象类和接口的选择是至关重要的,而怎么选,需要我们在项目里多实战。

2022-09-13 17:01:29 172

原创 JavaSE基础语法之类和对象

Java 作为一门纯面向对象的编程语言,那么我们学习面向对象的思想就是极为重要的,而学习面向对象思想的第一个内容,就是类和对象一、Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情类是用来对一个实体(对象)来进行描述的//创建类field;//字段(属性) 或者 成员变量method;//行为 或者 成员方法}class。

2022-09-04 20:30:00 478

原创 JavaSE基础语法之数组

JavaSE 的数组与 C 的数组之间的差别非常明显,因此数组这部分内容将不与 C 对比着说明数组可以看作相同类型元素的集合,在内存中是一段连续的空间提醒:数组的编号仍然是从0开始以上就是今天要讲的内容,本文仅仅简单介绍了 JavaSE 中数组的使用,我们在平常使用数组时也要特别注意文中提到的问题。

2022-09-03 22:00:00 513

原创 C语言程序的编译和预处理

我们都知道,C语言广泛应用于底层开发,可以对地址甚至硬件直接进行操作,非常方便,但如果操作不当,也可能造成很大的问题,因此我们除了学好语法之外,还要了解他的编译和执行的情况语法:提示:定义变量时支持一行定义多个,但有特殊的例子,定义整型指针时,如果没有把int *括起来作为一个整体,那么以下代码*给了a,b只定义成了int型int * a,b;//绝对不能在后面加分号"#define reg register //为 register这个关键字,创建一个简短的名字;

2022-08-21 15:46:48 170

原创 C语言实现动态通讯录版本二

接上次的动态通讯录,实现通讯录信息的长期存储//通讯录成员信息结构体}Peo_inma;//通讯录结构体静态版本//}Contact;//通讯录结构体动态版本int count;int MAX;}Contact;//打印菜单//加载文件信息到通讯录//通讯录的初始化//通讯录增容//增加联系人//删除联系人//查找当前联系人//修改联系人//显示当前通讯录信息//对当前通讯录信息进行升序排序//存储通讯录。...

2022-08-13 22:05:54 1558

原创 C语言文件操作

文件的出现使得数据不只是在内存中,更能保存在外存,永久保存,虽然现在出现了数据库,但文件仍是一种存储数据的方法,所以我们来简单学习一下C对文件的操作从文件功能角度可以分为以下几类以上就是今天要讲的内容,本文仅仅简单介绍了文件的使用,如果有错误希望大家可以给作者留言提意见,作者一定虚心求教哦。......

2022-08-12 12:00:00 154

原创 C语言实现动态通讯录版本一

在我们的生活中,与人交流必不可少,而在今天这个信息时代,人与人之间联系更加方便,我们有了电话,邮箱等等,所以通讯录这个玩意儿也就应运而生//通讯录成员信息结构体}Peo_inma;//通讯录结构体静态版本//}Contact;//通讯录结构体动态版本int count;int MAX;}Contact;//打印菜单//通讯录的初始化//增加联系人//删除联系人//查找当前联系人//修改联系人//显示当前通讯录信息//对当前通讯录信息进行升序排序。.........

2022-08-11 17:47:21 245

原创 C语言动态内存管理

C99 中,结构中的最后一个元素允许是未知大小的数组,这就叫做[柔性数组]成员//第一种写法,有些编译器会报错无法编译int num;//柔性数组成员}data1;//第二种写法,更普遍int num;//柔性数组成员}data2;...

2022-08-05 16:14:15 459 1

原创 纯数组实现三子棋版本三

版本三在版本二的基础上将电脑的算法做了优化,保证玩家最多只有1/3的胜率,还是看天命(作者游戏菜鸡,只能想到一种获胜的方法)

2022-08-05 14:40:17 48

原创 返回多数元素

题目给定一个大小为n的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于⌊n/2⌋的元素。你可以假设数组是非空的,。作者是使用Java语言写的,但语法基本与C一致,读者可以直接查看方法(C称为函数)内部的代码,三种方法返回值都是int,形参都是整型数组。...

2022-08-02 15:26:36 169

原创 C语言自定义类型详解(结构体 枚举 联合)

/方式1intnum1;intnum2;//方式2intnum1;intnum2;);intnum2;);return0;}初始化时使用“{}”包含成员变量,可不完全初始化位段的成员必须是整型家族位段的成员名后面有一个冒号和一个数字(数字不能超过类型的大小)structA//A就是一个位段类型{inta2;//只给a分配两个bitintb5;//b分配五个bitintc10;//10个bitintd30;//30个bit};......

2022-07-31 18:52:46 331

空空如也

空空如也

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

TA关注的人

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