自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一只向往森林的菜鸟

记录学习的每个细节 哈哈

  • 博客(51)
  • 收藏
  • 关注

原创 初识Python(简介、安装、输入与输出)

Python简介(摘自廖雪峰网站) 当你用一种语言开始作真正的软件开发时,你除了编写代码外,还需要很多基本的已经写好的现成的东西,来帮助你加快开发进度。比如说,要编写一个电子邮件客户端,如果先从最底层开始编写网络协议相关的代码,那估计一年半载也开发不出来。高级编程语言通常都会提供一个比较完善的基础代码库,让你能直接调用,比如,针对电子邮件协议的SMTP库,针对桌面环境的GUI库,在这些已有的代码库的基础上开发,一个电子邮件客户端几天就能开发出来。Python就为我们提供了非常完善的基础代码库,覆盖了网

2021-11-16 22:30:06 124

原创 测试的分类

按开发阶段划分(1)从下到上三层测试,投入相同的时间,人力资源等,回报率越来越低。(2)从下到上,测试效率越来越低(3)从下到上,定位问题越来越困难,反馈周期越来越长单元测试单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试室对象是软件设计的最小单位:模块。又称为编码模块测试。测试阶段:编码后或者编码前(TDD)测试对象:最小模块测试人员:白盒测试开发工程师或者开发工程师测试依据:代码和注释+详细设计文档测试方法:白盒测试测试内容:模块接口测试、局部数据结构

2021-08-19 23:37:01 237

原创 测试用例设计

测试用例的基本要素概念:测试用例是为了实施测试而向被测试的系统提供的一组集合,这组集合包括:测试环境、操作步骤、测试数据,预期结果等设计测试用例的方法根据需求设计测试用例验证需求的正确性;分析需求,细化需求,从需求中提炼功能模块,划分子功能,根据每一个子功能去写测试用例具体的设计测试用例的方法1、等价类:把输入(特殊情况下考虑输出)划分层=成若干个等价类,从每一个等价类中选一个测试用例进行测试,如果这个测试用例能通过测试,我们就说这个测试用例代表的等价类测试通过。有效等价类:根据需求规格说明

2021-08-12 10:40:59 138

原创 初识软件测试

什么是软件测试验证软件是否满足用户的需求(不是以软件测试人员的主观去判断软件的质量的,软件测试是有标准的)软件测试与软件调试的区别人员不同:软件测试人员有黑盒测试工程师、白盒测试工程师、开发人员;软件调试有开发人员目的不同:软件测试是检查软件的质量;软件调试是程序员为了检查程序是否实现了他(开发人员)想让程序实现的功能阶段不同:软件测试贯穿了整个软件开发的整个过程;软件调试只在开发阶段一个测试人员所具备哪些素质对软件测试这个岗位感兴趣具备测试相关知识,有一定编程能力,掌握几门语言有团

2021-08-08 23:35:26 105 1

原创 在线OJ个人项目

在线OJ个人系统项目源码在线OJ个人项目源码项目描述 类似于牛客网、LeetCode这样的做题网站,能实现代码的编写、运行与提交。项目功能能够保存题目,用数据库来实现题库存储展示题目列表展示题目的详细信息(标题、难度、题目的描述和代码模板)在线编辑、提交、编译运行代码项目模块题目的存储编译运行API的实现前端界面项目技术HTTP多进程编程多线程JDBCMySQLAJAX...

2021-08-05 21:15:16 374

原创 Java集合框架

框架简介**集合框架:**用于存储数据的容器。集合框架是为表示和操作而规定的一种统一的标准的体系结构,任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合的算法**接口:**表示集合的抽象数据类型。接口允许我们操作集合时不必关注具体实现。**实现:**集合接口的具体实现,重用性很高的数据结构**算法:**在一个实现了某个集合框架的接口的对象上完成的某一种有用的计算方法,例如查找、排序等。框架特点对象封装数据,集合用于存储对象存储的对象个数确定了可以使用数组,对象个数不确定可以使用集合

2021-07-28 23:31:24 80

原创 Java虚拟机(JVM)

JVM简介JVM概念1)JVM(Java Virtual Machine。意为Java虚拟机)虚拟机:指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统常见的虚拟机:JVM、VMware、Virtual、Virtual Box。JVM是被裁减过的虚拟机,执行字节码指令集的软件Java代码——Java进程——JVM之间的关系:Java代码经过Javac编译生成class字节码Java虚拟机中:解释器+jit即时编译器 解释翻译字节码,得到可执行文件(Java进程)

2021-07-21 14:45:23 380

原创 共享锁的实现

Class CountDownLatch(信号量)使用场景:(1)在某个线程处等待一组线程全部执行完,再执行后边的代码创建初始值=0,线程结束 release(),等待的地方acquire()(2)多线程环境下,有限资源的控制,创建一个线程数(有限资源),线程结束:release(),线程开始:acquire()Class CountDownLatch使用场景:在某个线程某处等待一组线程全部执行完毕Class CycllcBarrier...

2021-07-19 17:42:53 202

原创 Lock体系与AQS

lock体系 首先知道为什么Java有了synchronized实现管程了,为什么还要再造出 lock 呢?synchronized在处理死锁问题时方法非常局限,只能避免资源上锁线性化,使用 lock 有很多方法来避免死锁。 lock是juc(Java并发包)下的类lock解决死锁的方法lock 提供了3个API来解决死锁问题//支持中断的API,能够响应中断,当给阻塞的线程发送中断信号时,能够唤醒它,释放曾经持有的锁。破坏不可抢占条件void lockInterruptibly() thro

2021-07-19 16:52:56 119

原创 常见的策略锁(锁的类型)

乐观锁乐观锁假设认为数据一般情况下不会产生冲突,所以在数据进行提交更新时,才会正式对数据是否产生并发冲突进行检测,如果发现并发冲突了,则让用户返回错误的信息,让用户决定如何去做。乐观的心态看待线程安全问题,字节修改共享变量,基于某些机制,要么直接修改成功(没有冲突),要么修改失败(通过返回值可以知道,一般是Boolean)。不管成功还是失败,自行决定下一步怎么做(Java程序层面看,是非阻塞式的方式)悲观锁总是假设最坏的情况,每次去拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到..

2021-07-17 14:05:14 172 1

原创 Java线程安全问题

线程安全 如果多线程环境下代码运行的结果是符合我们预期的,即在单线程环境应该的结果,则说这个程序是线程安全的。线程不安全线程不安全的原因从代码层面看:多个线程对同一变量的操作(读、写),有一个写操作,就有线程安全问题从原理看:(1)原子性:多行执行代码,执行时是一组不可分割的最小执行单位,多个线程同时并发执行的代码指令,可能在一个线程操作一个共享变量时,是有前后依赖关系的,指令之间有其他的线程操作,就会导致想线程不安全(2)可见性主存:线程都使用的共享区域,对其中变量/对象的操作

2021-07-14 17:51:35 129

原创 初识多线程

1.认识多线程线程线程存在于进程的内部,是比进程还小的单为。进程是系统分配资源的最小单位,线程是系统调度的最小单位。一个进程之内的线程之间是可以共享资源的,每一个进程至少存在一个线程,即主线程。多线程的作用在确保安全的情况下,尽可能提高系统效率,尽可能利用系统资源。使用场景创建线程是比较耗费时间和资源的,所以要综合考虑同时执行指令(任务量)+创建线程数+系统可利用资源(内存,CPU)一般在一个时间点要同时做多件事(执行多行代码)时就可以使用多线程。内部类匿名内部类:在一个方法中,new类型

2021-07-14 11:12:37 55

原创 初识操作系统与进程

操作系统概念任何计算机都包含一个基本的程序集合,称为操作系统。包括内核(进程管理、内存管理、文件管理、驱动管理),其他程序(shell程序、库函数等)进程管理即管理软件。内存管理,文件管理,驱动管理都是管理硬件对库函数的理解库函数是系统提供的对某个广泛使用的操作接口(如文件的读取/写入,网卡读写数据)。某些特定权限的功能,在程序中必须调用系统库函数来实现进程 对于操作系统来说,一个任务就是一个进程,担当分配系统资源(CPU时间,内存)的实体理解Java程序Java代码运行机制开发期

2021-07-13 15:02:00 68

原创 浏览器输入URL后发生的事

当我们要访问一个网页,我们就需要在浏览器输入一个网址(URL)请求,我们输入一个URL后后台会发生什么事呢?首先回顾URL组成格式:协议名://所访问的服务器域名(地址):服务器端口/带层次的文件路径?查询字符串(键值对形式)#片段标识符执行步骤(以baidu.com为例):浏览器查找域名的IP地址浏览器缓存-浏览器会缓存DNS记录一段时间。系统缓存-如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用ISP DNS缓存-检查ISP缓存DNS的服务器递归搜索-ISP的DNS服务器

2021-07-12 14:12:51 82

原创 这些重要的应用层协议

DNS DNS是一整套从域名映射到IP的系统(域名转IP)。TCP/IP中使用IP地址和端口号来确定网络上的一个程序,但是IP地址不便记忆,于是发明了一种叫主机名的东西,是一个字符串,并且使用hosts文件来描述主机名和IP地址的关系。DNS是应用层协议DNS底层使用UDP进行解析浏览器会缓存DNS结果NAT 路由器使用的技术,对私网IP和公网IP相互转换的一种协议NAT路由器将源地址局域网IP替换成全局网IPNAT路由器收到外部数据时,又会把目标地址从全局IP换为局域IP在N

2021-07-12 10:51:33 88

原创 网络原理之数据链路层

认识以太网“以太网”不是一种具体风格的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容,例如:规定了网络拓扑结构,访问控制方式,传输速率等;是以太网中的网线必须使用双绞线;传输速率有10M,100M,1000M等;以太网是当前应用最广泛的局域网技术,和以太网并列的还有令牌环网,无线LAN网等;以太网帧格式:源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,在网卡出厂时固化帧协议类型字段有三种值,分别对应IP、ARP、RARP认识Mac地址

2021-07-12 09:52:21 96

原创 网络原理之网络层

网络层,是在复杂的网络环境中确定一个合适的路径IP协议协议格式16位标识+3位标志位+13位偏移=>用于MTU数据分片16位标识:标识发送时送的消息(如快递时送的汽车)2位标志:标识是否有分片(汽车是否分片后送快递)13位偏移:标识分片后的数据(汽车的个个部件,如轮胎、方向盘等)8位生存时间:数据包到达目的地的最大报文跳数,一般是64,没经过一个路由则减1,一直减到0还没到达,就丢弃。用来防止路由死循环32位源地址和32位目标地址:表示发送端和接收端网段划分IP地址格式:4个

2021-07-09 15:43:26 225

原创 网络原理之TCP安全机制与性能提高

我们知道,传输层协议TCP与UDP相比,是可靠连接的,性能也是比较高的。那么它是如何实现可靠性(安全性)的呢?下面将介绍他相应的安全机制和性能提高机制TCP 安全机制确认应答机制TCP将每个字节的数据都进行了编码,即为序列号,每一个ACK都带有对应的确认序列号,意思是告诉发送者,我们已经收到了一些数据,下一次你从哪里开始发为什么要有确认应答机制?因为在TCP建立连接后,发送的每一条数据都有可能丢失,需要用确认应答机制来确定消息数据的完整性。可以确认收到了数据且知道收到的数据是哪一条。超时重传机制

2021-07-07 20:06:34 518 1

原创 网络原理之TCP/IP协议

网络原理之TCP/IP传输层二. UDP传输协议三级目录传输层传输层五元组:协议号+源IP+源port+目的IP+目的port协议:网络数据传输时,经过网络节点约定的规则,最终体现为数据格式IP:在网络层IP协议中包含IP地址这个字段,体现为起点和终点,绑定主机port:主机中的进程端口,识别进程注:一个进程可以绑定多个端口号;一个端口号只能绑定一个进程网络数据传输可以对应发送快递的例子:二. UDP传输协议校验和:类似文件的MD5三级目录...

2021-07-06 10:57:00 151

原创 初识网络原理

初识网络原理网络发展史组网方式协议网络分层OSI七层模型TCP/IP五层(或四层)模型网络发展史(1)独立不联网的主机:互相不能传输共享数据(2)网络互联:基于一种网络设备,把主机连起来,主机之间就可以进行传输数据(HUB集线器连接)(3)局域网LAN:基于一种网络设备,把主机连起来(4)广域网WAN:处于公网上的电脑,都是在广域网上的,国际上,所有国家的计算机都遵循的网络规范,组建的大家都能相互访问的网络组网方式交换机路由器交换机+路由器协议 协议,网络协议的简称,网络协议

2021-06-21 18:58:09 137

原创 MySQL数据库基础

MySQL数据库基础1.数据库操作1.1显示当前数据库1.2创建数据库三级目录1.数据库操作1.1显示当前数据库SHOW DATABASES;1.2创建数据库CREATE DATABASE 三级目录

2021-05-05 09:25:39 58

原创 如何定位URL路径资源

1、认识URL平时我们俗称的“网址”其实就是说的URL2、URL的组成1、协议HTTP:超文本传输协议HTTPS:基于HTTP+SSL/TSL协议,加密的超文本传输协议2、服务器地址可以是域名或IP3、端口号http默认为:80HTTPS默认为:4434、带层次的文件路径5、URL参数包括应用上下文路径、服务路径和请求数据请求数据格式:多个键值对的数据,键=值,多个键值对之间用&相隔3、定位资源过程1)浏览器向DNS服务器请求解析这个URL的域名对应的IP地址

2021-04-21 15:47:45 240

原创 servlet开发(1)

servlet开发(1)一、servlet开发开发步骤开发方式三级目录一、servlet开发其中,服务资源:(1)Tomcat部署的项目目录中,根目录下,除了WEB-INF文件夹外的,当做前端资源(静态资源)(2)servlet后端代码提供动态资源(一代码的方式,解析http请求,返回响应,可以提供动态的body字符串)开发步骤开发方式(1)xml配置,web.xml配置servlet(2)注解方式使用@WebServlet(“/服务路径”)继承HttpServlet重写doXXX方

2021-04-19 21:10:21 46

原创 SQL中的索引和事务

事务

2021-04-18 21:00:29 159

原创 实现链表的基础操作(2)

@TOC插入操作链表的尾插public static Node insertTail(Node head, int val) { Node newNode = new Node(val); if (head == null) { return head; } Node prev = head; while (prev != null && prev.next != null) {

2021-04-13 15:14:45 52

原创 链表的基础操作(1)

链表的基础操作(1)通过遍历,打印链表的每个元素通过遍历,找到链表的最后一个结点通过遍历,找到链表的倒数第二个结点通过遍历,找到链表的第 n 个结点。(链表的长度 >= n)通过遍历,计算链表中元素的个数通过遍历,找到链表中是否包含某个元素已知一条链表,不知道其长度的情况下,进行以下操作:通过遍历,打印链表的每个元素/遍历链表,打印链表的每个元素 public static void printLinkedList(Node a) { for (Node cur = a;

2021-04-11 10:38:13 64

原创 实现自己的顺序表

实现自己的顺序表二、创建一个MyArrayList类一、顺序表实现的功能(一)、顺序表的扩容(二)、顺序表的插入元素1、顺序表尾部插入2、顺序表中间位置插入(三)、顺序表的删除元素1、按照元素下标删除2、按照元素的值删除(四)、顺序表的获取元素(五)、顺序表根据下标修改元素(六)、顺序表判断元素书否存在(七)、 顺序表查找元素位置(八)、顺序表的打印二、创建一个MyArrayList类public class MyArrayList { private String[] array = nul

2021-04-10 15:38:15 65

原创 扑克纸牌游戏

扑克纸牌游戏通过代码实现扑克纸牌的简单游戏,能够实现以下简单内容。创建一副扑克牌,用buyPoker方法实现。洗牌功能,用shuffle实现发牌, 假设有三个玩家, 每个玩家, 给发 5 张牌,每个玩家手里有 5 张牌, 这 5 张牌就使用另外一个 ArrayList 表示,此时可以把这三个玩家也放到一个 List 中。展示手牌import java.util.*;//创建一个Card类,包含属性花色(suit)、大小值(rank)class Card{ public Strin

2021-04-09 12:54:49 255

原创 线性表、顺序表与链表

线性表、顺序表与链表1.认识 List 线性表1.1 概念1.2存储结构2.ArrayList:顺序表3.链表3.1概念分类4顺序表和链表的区别与联系1.认识 List 线性表1.1 概念 线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛应用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串等。1.2存储结构 线性表在逻辑上是线性结构,也就是说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式

2021-04-08 11:15:42 232

原创 二叉树基本操作

二叉树基本操作二叉树的遍历前序遍历中序遍历后序遍历层序遍历获取二叉树元素个数获取二叉树叶子节点个数获取二叉树第K层元素个数获取二叉树高度/深度查找二叉树中指定的元素判断两颗二叉树是否相同二叉树的遍历前序遍历 前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点--->根的左子树--->根的右子树。//这里的访问就是打印public static void perOrder(Node root) { if (root == null) {

2021-04-06 09:52:05 108

原创 哈希表以及用哈希桶解决哈希冲突

哈希表以及哈希冲突的解决1.哈希表1.1概念 顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应关系,因此在查找一个元素的时候,必须要经过关键码的多次比较,这样查找的效率就比较低下,搜索的效率取决于搜索过程中元素的比较次数。 理想的搜索方法:可以不经过任何比较,一次字节从表中得到要搜索的元素,如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数很快找到该元素,这种存储结构称为哈希表。1.1.

2021-04-05 16:43:39 572

原创 排序

1.概念1.1 排序排序,就是让一串记录,按照其中某个或者某些关键字的大小,递增或递减的排列起来的操作。平时上下文中,如果提到排序,通常升序排列。1.2 稳定性两个相等的数据,如果排序后,排序算法能保证其相对位置不会发生变化,则我们就称该算法是稳定的排序算法。2.基于比较的常用排序算法常用排序算法:插入排序(直接插入排序、希尔排序),选择排序(选择排序、堆排序),交换排序(冒泡排序、快速排序),归并排序3.插入排序3.1直接插入排序原理:将整个区间分为有序区间和无序区间,每次选择无序区间的

2021-04-02 12:39:02 80

原创 二叉树相关知识总结

1、树型结构**1.1概念:**树是一种非线性的数据结构,它有n个(n>=0)有限节点组成一个具有层次关系的集合.1.2特点:1、有一个特殊的节点称为根节点,根节点没有前驱。2、除根节点外,其他节点被分成M(m>0)个互不相交的集合,每个集合都是与树类似的子树。每个节点有且只有一个前驱,可以有0个或者多个后继。3、树是递归定义的1.3概念:节点的度:一个节点含有子树的个数称为节点的度树的度:一棵树中,最大的节点的度称为树的度叶子节点或终端节点:度为0的节点称为叶子节点双亲节点

2021-03-28 10:56:51 310 3

原创 javaSE 总结

一、认识环境基础概念1、JDK:Java开发工具包,开发Java代码必备2、JRE:Java运行时环境,运行Java必备3、JVM:Java虚拟机4、集成环境IDEA二、变量和类型1、什么是变量:表示一些可变的概念(运行时可以改变),创建一个变量就会分配相应内存空间2、什么是常量:有字面值常量 int类型 long类型 double类型 float类型 Boolean类型 String类型 char类型3、类型(1)内置类型(四类八种)整形:byte、short、int、l

2021-03-10 16:51:36 83

原创 认识异常(1)

一、初识异常异常是编程过程中常常会遇到的,在我们之前的学习中,我们也接触了一些异常。如:1、除以“0”(算术异常)2、数组下标越界3、访问null二、异常的分类Error:程序中出现了严重的错误,表示在应用程序运行时出现了严重错误。这一类错误一般表示代码运行时JVM出现问题。通常有虚拟机运行错误、类定义错误、JVM内存耗尽将出现OutOfMemoryError。如果发生这样的错误异常是。JVM将终止线程。当发生此类错误时,程序员一般束手无策。Exception:(普通程序员使用)程序本身可以捕

2021-02-03 13:37:43 86

原创 面向对象(2)

继承1.1背景1、目的:就是为了让代码能够很好的被重复利用2、概念:父类(基类、超类),子类(派生类)3、关键字:extends(扩展)1.2语法规则1、使用格式:class 子类 extends 父类{}1)使用extends指定父类2)Java是单继承,一个类只能继承一个父类(而C++/Phython等语言支持多继承)3)子类会继承父类的所有属性和方法,无论是public还是private,但是只有public能够被使用(访问)4)子类实例中也包含着父类的实例,可以使用sup

2021-01-27 21:53:10 113

原创 String相关知识总结(1)

字符串的常见操作1、字符串比较a) 比较相等b)比较大小c)不区分大小写的比较a) 比较相等在上一篇博客中有提到,字符串String的比较相等不能用“==”,只能用 . equals。“” 和 .equals的区别:“”比较的是身份相等,而.equals比较的是字符串内容相等。b)比较大小字符串也可以比较大小,比较大小的判定规则是以字典序为准则。即比较首个字符的大小(Unicode的值等大小),如果首个字符能分出大小关系,两个字符串的大小关系就确定了,如果第一个字符比较不出来就继续比较

2021-01-23 22:24:19 89

原创 面向对象知识总结(1)

JVM1、JVM是Java的虚拟机JVM首先从操作系统申请一块空间栈:方法和方法之间的调用关系堆:new出来的对象/实例(对象就是实例,实例就是对象方法区:JVM中的内存区域除了有堆和栈之外,还有一个非常重要的区域叫做方法区栈不是只有一个,每个线程都有自己的栈。堆和方法区,每个JVM都只有一份对于属性来说,如果属性是一个实例属性,那么不在方法区而是跟着实例走(一般在堆上),如果属性是一个类属性(被static修饰),那么也就在方法区中。对于方法来说,不管加不加static,对应的内容都是在方

2021-01-20 14:56:38 58

原创 Java数组的定义与使用

1、数组的基本用法1.1什么是数组数组的本质是让我们能“批量”创建相同类型的变量。1.2创建数组基本语法://动态初始化数据类型[] 数组名称=new 数据类型[]{初始化数据};int[] arr=new int[]{1,2,3}//静态初始化数据类型[] 数组名={初始化数据};int[] arr={1,2,3}//创建数组并赋初值数据类型[] 数组名=new 数据类型[数组长度]int[] arr=new int[100]其实数组也可以写成类似C语言类似的 int ar

2020-12-21 16:37:47 106

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

结构体相关结构体知识在之前有写过相关博客,现在再来回顾结构体声明/此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c//同时又声明了结构体变量s1//这个结构体并没有标明其标签 struct { int a; char b; double c; } s1; //同上声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c//结构体的标签被命名为SIMPLE,没有声明变量struct SIMPLE{

2020-12-16 20:56:07 806

空空如也

空空如也

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

TA关注的人

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