- 博客(47)
- 收藏
- 关注
原创 SVN总结
文章目录1. SVN简介2. SVN安装3. VisualSVN-Server基本使用3.1 创建用户3.2 创建组3.3 创建仓库3.4 分配权限3.5 版本库的备份和还原4. TortoiseSVN基本使用-4.1 检出代码4.2 提交代码4.3 更新代码4.4 解决冲突4.5 更新到某个版本5. 在IDEA中使用SVN*5.1 配置SVN5.2 浏览仓库5.3 上传本地项目到SVN5.4 提交代码5.5 检出代码5.6 更新代码5.7 解决冲突1. SVN简介SVN(Subversion):集中式
2021-07-15 12:47:31
405
原创 Git总结
文章目录1. Git简介1.1 Git安装(Linux)1.2 TortoiseGit安装2. Git基本使用*2.1 Git常用命令2.2 Git标签2.3 解决冲突3. GitHub基本使用*4. 码云(gitee)基本使用*5. IDEA集成Git1. Git简介Git下载:https://git-scm.com/downloadshttps://npm.taobao.org/mirrors/git-for-windows/Git是一个分布式版本控制系统,其工作方式为:1.1 Git
2021-07-15 12:44:50
753
原创 Maven总结
文章目录1. Maven简介2. Maven安装2.1 Windows版本安装2.2 Linux版本安装3. IDEA集成Maven*3. 使用IDEA创建Maven项目3.1 使用Maven骨架创建JavaSE模块3.2 不使用Maven骨架创建JavaSE模块3.3 使用Maven骨架创建JavaWeb模块3.4 不使用Maven骨架创建JavaWeb模块4. Maven常用命令5. 引入依赖6. 工程分层*7. Maven插件-8. Maven私服-8.1 安装Nexus8.2 nexus的仓库类型
2021-07-15 12:42:39
357
原创 行为型模式
文章目录1. 模板方法模式*2. 命令模式3. 访问者模式4. 迭代器模式5. 观察者模式*6. 中介者模式7. 备忘录模式8. 解释器模式9. 状态模式10. 策略模式11. 责任链模式*1. 模板方法模式*模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤abstract class MySort { // 模板方法: // 提供了排序算法,但按什么顺序排没有实现 public final v
2021-07-14 10:30:10
192
原创 结构型模式
文章目录1. 适配器模式*1.1 类适配器模式1.2 对象适配器模式1.3 缺省适配器模式2. 桥接模式3. 装饰模式*4. 组合模式5. 外观模式6. 享元模式7. 代理模式*7.1 静态代理7.2 JDK动态代理7.3 CGLib动态代理1. 适配器模式*适配器模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作SpringMVC中的HandlerAdapter就使用了适配器模式1.1 类适配器模式// 客户希望使用的接口:destina
2021-07-14 10:25:38
134
原创 创建型模式
文章目录1. 单例模式*1.1 饿汉式(静态常量)1.2 饿汉式(静态代码块)1.3 懒汉式(线程安全,同步方法)-1.4 双重检查1.5 静态内部类1.6 枚举2. 工厂方法模式*2.1 简单工厂模式2.2 工厂方法模式3. 抽象工厂模式4. 原型模式5. 建造者模式*1. 单例模式*单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点单例模式使用的场景:需要频繁创建和销毁或创建时耗费资源过多,但又经常用到的对象1.1 饿汉式(静态常量)java.lang.Runtime就采用了饿汉式
2021-07-14 10:19:46
225
原创 设计模式七大原则
文章目录1. 设计模式简介2. 设计模式七大原则2.1 单一职责原则2.2 接口隔离原则2.3 依赖倒转原则2.4 里氏代换原则2.5 开闭原则2.6 迪米特法则(最小知识原则)2.7 合成复用原则1. 设计模式简介使用设计模式是为了让程序具有更好的代码重用性、可读性、可扩展性、可靠性,使程序呈现高内聚、低耦合的特性设计模式分类:创建型模式:单例模式(Singleton)工厂方法模式(Factory Method)抽象工厂模式(Abstract Factory)原型模式(Prototyp
2021-07-14 10:14:42
207
原创 数据结构-图
文章目录图1. 邻接矩阵表示图2. 最小生成树3. 最短路径图图的表示方式:邻接矩阵、邻接链表1. 邻接矩阵表示图import java.util.ArrayList;import java.util.Arrays;import java.util.LinkedList;import java.util.List;// 图的邻接矩阵存储结构public class Graph { int maxVertexNum; // 最大顶点数 List<String>
2021-07-14 10:10:17
117
原创 数据结构-树
文章目录树1. 顺序存储结构二叉树2. 链式存储结构二叉树3. 线索二叉树4. 哈夫曼树5. 二叉搜索树6. AVL树树1. 顺序存储结构二叉树顺序存储结构的二叉树:用一组连续的存储单元来存放二叉树中的结点public class ArrayBinaryTree { int[] container; public ArrayTree(int[] container) { this.container = container; } // i的父节点
2021-07-14 10:05:32
156
原创 数据结构-队列
文章目录顺序循环队列顺序循环队列队列是一个先进先出的有序列表,可以用数组或链表来实现使用数组实现循环队列:front指向队头元素,初始值为0rear指向队尾的后一个位置,初始值为0队满:front == (rear + 1) % maxSize队空:rear == front有效数据量:(rear + maxSize - front) % maxSize由于在rear后空出了一个空间来便于判断队满,因此最多存储maxSize个元素循环队列代码实现:public class Circ
2021-07-14 10:02:13
99
原创 数据结构-栈
文章目录栈1. 顺序栈2. 中缀表达式3. 中缀转后缀栈后进先出1. 顺序栈定义栈顶top,初始值为-1入栈:stack[++top] = data出栈:return stack[top–]栈空:top == -1栈满:top == capacity - 1public class MyStack<E> { // 栈的最大容量 private int capacity; // 采用数组实现栈 private E[] stack; //
2021-07-14 10:01:21
282
原创 数据结构-链表
文章目录链表1. 单向链表2. 双向链表3. 循环单链表解决Josephus问题链表链表以结点的方式来存储元素每个结点包含data域和next域(指向下一个结点)链表在内存中不一定连续存储链表分为有头节点和没有头结点的,根据实际需求来确定1. 单向链表import java.util.Stack;public class SingleLinkedList<E> { // 先初始化一个头结点,头结点不存放具体数据 Node<E> head = new
2021-07-14 10:00:18
70
原创 数据结构-数组
文章目录稀疏矩阵稀疏矩阵稀疏矩阵:数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律二维数组转稀疏数组:获取原始数组的有效数据数量根据有效数据数量创建稀疏数组设置稀疏数组第0行:原始矩阵行数,原始矩阵列数,有效数据量将原始数组的有效数据存入稀疏数组:有效数据所在行,有效数据所在列,有效数据值稀疏数组转二维数组:根据稀疏数组第0行数据,创建二维数组读取稀疏数组其他几行数据,并赋值给二维数组代码实现:import java.util.Arrays;public
2021-07-14 09:59:11
89
原创 算法-字符串匹配
KMPKMP算法使主串指针不回溯,只有模式串指针回溯,因此比朴素匹配效率高。// 懂得KMP匹配原理和next数组,可以手工KMP匹配,但对代码还不太理解public class KnuthMorrisPratt { public static int[] getNext(String pattern) { int k = -1; int j = 0; int[] next = new int[pattern.length()];
2021-07-13 12:45:20
63
原创 算法-数论算法
文章目录1. 最大公约数2. 最小公倍数3. 模取幂1. 最大公约数欧几里得算法(辗转相除法)求最大公约数(Greatest Common Divisor,GCD)的递归定理:对任意非负整数a和任意正整数bgcd(a,b)=gcd(b,a mod b)gcd(a,b)=gcd(b,a \ mod \ b)gcd(a,b)=gcd(b,a mod b)欧几里得算法递归实现:// 欧几里得算法递归实现public static int gcd(int a,
2021-07-13 12:44:32
123
原创 算法-查找
文章目录查找1. 二分查找2. 插值查找3. 斐波那契查找查找1. 二分查找二分查找(折半查找)必须采用顺序存储结构,并且必须按关键字大小有序排列。二分查找求mid公式:mid=low+high2=low+high−low+low2=low+12⋅(high−low)mid=\frac{low+high}{2}=\frac{low+high-low+low}{2}=low+\frac{1}{2}\cdot(high-low)mid=2low+high=2low+high−low+low=l
2021-07-13 12:43:24
96
原创 算法-排序
文章目录排序简介1. 冒泡排序2. 插入排序3. 选择排序4. 希尔排序5. 堆排序6. 快速排序7. 归并排序8. 基数排序排序简介排序算法的稳定性:排序前两个相等数的前后位置顺序和排序后它们两个的前后位置顺序相同。内部排序:将需要处理的数据都加载到内存中进行排序。快、希、选、堆不稳定(“快些选一堆”)插入、选择、交换、归并、基数…外部排序:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。排序方法平均时间最坏时间空间稳定性冒泡排序O(n2)O(n^
2021-07-13 12:40:07
68
原创 算法-贪心
文章目录贪心活动安排问题贪心能采用贪心算法求最优解的问题,一般具有的重要性质为:最优子结构性质与贪心选择性质。贪心选择性质是指问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来得到,这是贪心法和动态规划法的主要区别。贪心法的求解过程:把求解的问题分成若干个子问题对每个子问题求解,得到子问题的局部最优解把子问题的解局部最优解合成原来解问题的一个解虽然贪心法每一步都能获得局部最优解,但由此产生的全局解有时不一定是最优的。活动安排问题设有n个活动的集合E={1,2,..,n}E=\
2021-07-13 12:37:59
414
原创 算法-动态规划
文章目录动态规划背包问题动态规划动态规划法的求解过程:划分子问题:将原问题分解为若干个子问题,每个子问题对应一个决策阶段,并且子问题之间具有重叠关系。确定动态规划函数:根据子问题之间的重叠关系找到子问题满足的递推关系式(即动态规划函数),这是动态规划法的关键。填写表格:设计表格,以自底向上的方式计算各个子问题的解并填表,实现动态规划过程。动态规划算法的基本要素为最优子结构性质与子问题重叠性质。当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质,也称此问题满足最优性原理。
2021-07-13 12:36:37
117
原创 算法-分治
文章目录分治汉诺塔问题分治分治法的基本思想:分治法将一个难以直接解决的大问题分解成一些规模较小的子问题,分别解决各个子问题,再合并子问题的解得到原问题的解。汉诺塔问题相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B
2021-07-13 11:52:27
103
原创 算法-回溯
文章目录回溯1. 迷宫回溯问题2. 八皇后问题3. 马踏棋盘问题回溯回溯法的基本思想:回溯法在包含问题的所有可能解的解空间树中,从根结点出发,按照深度优先的策略进行搜索,对于解空间树的某个结点,如果该结点满足问题的约束条件,则进入该子树继续进行搜索,否则将以该结点为根结点的子树进行剪枝。回溯法的算法框架按照问题的解空间一般分为子集树算法框架与排列树算法框架。当给定的问题是从n个元素的集合S中找出满足某种性质的子集时,相应的解空间树称为子集树。当给定的问题是确定 n 个元素满足某种性质的排列
2021-07-13 11:51:33
357
原创 Python-网络编程
文章目录TCP通信UDP通信TCP粘包问题socketserver模块TCP通信TCPClient:import socket# 1. 创建套接字# AF_INET:底层网络使用IPv4# SOCK_STREAM:表明是一个TCP套接字clientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 2. 创建TCP连接serverIP = "localhost"serverPort = 12000clientSock
2021-07-13 11:47:36
138
原创 Python-文件操作
文章目录基本文件操作os模块的文件操作shutil模块的文件操作基本文件操作文件打开模式:默认rtb:二进制模式;类似Java的字节流t:文本模式;类似Java的字符流r:只读,文件不存在则抛异常w:只写,文件不存在则创建a:只追加写,文件不存在则创建x:创建一个新文件以进行写入+:读取和写入(如:r+、w+、a+、x+)with管理上下文:会自动关闭文件,释放资源"""with语法格式:with EXPRESSION as TARGET: SUITE"""# 打开多
2021-07-12 11:48:37
108
原创 Python-模块和包
文章目录模块包常用模块1. time和datetime-时间2. random-随机3. json和pickle-序列化4. hashlib-哈希函数5. logging-日志6. configparser-配置文件ini7. subprocess-执行系统命令8. sys-解释器9. re-正则表达式10. struct-值与字节互转数据库访问模块pymysql模块一个Python文件就是一个模块,当执行或导入该模块时,全局语句将依次执行,全局语句只在模块第一次被导入时执行。导入自定义模块时,需要和
2021-07-12 11:47:23
324
原创 Python-面向对象
文章目录类元类类定义类示例:# Python3定义类时会默认继承object类;Python2中不会默认继承object# 未继承object的类是经典类;继承了object的类是新式类class Animal(): # 动物类 """ 文档注释 """ height = 0.0 # 公有静态属性 __weight = 0.0 # 私有静态属性 # __new__在__init__之前被调用,__new__的返回值会传递给__init__的第
2021-07-12 11:45:53
62
原创 Python-基础语法
文章目录Python简介安装Pythonpip下载扩展库文件头注释输入输出运算符变量数据类型1. 字符串字符编码字符串格式化2. 列表3. 元组4. 字典5. 集合推导式1. 列表推导式2. 生成器推导式3. 字典推导式4. 集合推导式流程控制1. if2. while3. for函数1. 参数类型2. 装饰器-装饰模式3. 生成器4. lambda-匿名函数5. 常用内置函数命名空间和作用域异常深浅拷贝Python简介Python语言特点:简单、开源、解释性、面向对象、可移植性、可扩展性、可嵌入性、丰
2021-07-12 11:43:48
448
原创 Filter和Listener总结
文章目录1. Filter1.1 Filter使用1.2 Filter生命周期1.3 过滤方式1.4 过滤器链2. Listener2.1 Listener使用2.2 常用监听器1. FilterFilter功能:在HttpServletRequest到达Servlet之前,拦截客户的HttpServletRequest。根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据在HttpServletResponse到达客户端之前,拦截HttpSe
2021-07-12 11:39:32
119
原创 JSP总结
文章目录1. JSP简介2. JSP基本语法2.1 JSP脚本2.2 JSP注释3. EL表达式3.1 EL获取数据3.2 EL执行运算4. JSTLJSTL核心库常用标签1. JSP简介JSP(全称JavaServer Pages)以Java语言作为脚本语言,可以根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者JSP本质就是Servlet,其执行流程为:第一次访问的.jsp文件时,JspServlet会去查找对应的jsp文件找到之后,服务器会将这个js
2021-07-12 11:38:02
56
原创 Servlet总结
文章目录1. Servlet简介2. Servlet基本使用*2.1 添加依赖2.2 创建javax.servlet.Servlet实现类2.3 配置Servlet实现类的映射路径3. Servlet对象生命周期*4. ServletContext*5. HttpServlet6. ServletRequest6.1 获取请求行6.2 获取请求头*6.3 获取请求体(获取请求参数)*6.4 作为域对象共享数据*6.5 请求转发*7. ServletResponse7.1 设置状态行7.2 设置响应头7.3
2021-07-12 11:36:55
75
原创 Tomcat总结
文章目录1. Tomcat安装*2. Tomcat目录结构3. Tomcat部署项目4. Tomcat集成到IDEA*5. IDEA项目目录6. webapps目录1. Tomcat安装*官网下载8.5.x版本:https://tomcat.apache.org/download-80.cgi点击Binary Distributions–>Core下的(Win:zip或64-bit Windows zip)或(Linux:tar.gz)可下载二进制发行版点击Source Code Dist
2021-07-12 11:33:28
122
原创 JDBC总结
文章目录1. JDBC简介2. JDBC基本使用2.1 DriverManager2.2 Connection2.3 Statement2.4 ResultSet2.5 自定义JDBC工具类3. 数据库连接池3.1 c3p03.2 druid4. DbUtils4.1 QueryRunner类4.2 ResultSetHandler接口4.2.1 JavaBean4.2.2 结果集的转换4.3 DbUtils工具类1. JDBC简介JDBC(Java Database Connectivity):Ja
2021-07-12 11:31:31
88
原创 JavaSE-NIO总结
文章目录1. 同步和异步2. 阻塞和非阻塞3. IO类型4. NIO主要组成4.1 Buffer(缓冲区)4.2 Channel(通道)4.3 Selector(选择器)5. NIO2/AIO1. 同步和异步同步和异步站在任务调度者角度:描述消息通信的机制同步(Synchronous):调用一个方法后,必须要等待一个返回值才能执行后续操作异步(Asynchronous):调用一个方法后,不需要等待返回值就可以执行后续操作,当被调用的方法执行完成后,一般会通过状态、通知和回调来通知调用者2.
2021-07-12 11:21:22
186
原创 XML总结
1. XML简介XML(Extensible Markup Language):可扩展标记语言XML与HTML的区别:XML标签都是自定义的,HTML标签是预定义XML的语法严格,HTML语法松散XML是存储数据,HTML是展示数据XML基本语法:XML文档的后缀名为.xmlXML第一行必须定义为文档声明XML文档中有且仅有一个根标签属性值必须使用引号(单双都可)引起来标签必须正确关闭XML标签名称区分大小写2. XML组成文档声明格式:<?xml .
2020-11-06 23:05:55
86
原创 CentOS 7安装MySQL5.7
1. 安装CentOS 7系统VMware安装CentOS 7可以看我在B站的视频:安装CentOS 7:https://www.bilibili.com/video/BV1Qe411s7Qi安装Ubuntu 20:https://www.bilibili.com/video/BV1i54y1Q72G录视频的时候没注意,用的西安方言(_????2. DBMS简介DBMS:数据库管理系统DBMS排名网站:https://db-engines.com/en/ranking常用DBMS:
2020-11-06 22:56:30
211
原创 JavaSE-基础练习题
前言部分练习题摘录自:Sun-Java程序员认证考试题库部分练习题加入了自己的解析还未整理完,待更若有错误或补充,欢迎私信一、Java入门下列哪项不是JDK所包含的内容?(选一项)CA. Java编程语言B. 工具及工具的APIC. Java EE扩展APID. Java平台虚拟机下列关于JDK、JRE和JVM的描述。哪项正确?DA. JDK中包含了JRE,JVM中包含了JREB. JRE中包含了JDK,JDK中包含了JVMC. JRE中包含了JDK,JVM中包含了
2020-11-03 23:28:08
3336
原创 JUnit基本使用
1. 测试分类黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值白盒测试:需要写代码,关注程序具体的执行流程2. JUnit基本概念JUnit是Java的一个单元测试框架,属于白盒测试JUnit简单理解:可以取代main方法JUnit属于第三方工具,需要导入jar包(如:hamcrest-core-1.3.jar、junit-4.12.jar或IDE自动添加)3. JUnit基本使用JUnit使用步骤:定义一个测试类(测试用例)定义测试方法:可以独立运行;建议:返.
2020-11-03 17:45:06
1514
原创 JavaSE-注解总结
1. 注解基本概念注解本质上就是一个接口,该接口默认继承Annotation接口注解和注释的区别:注解:JDK1.5之后的新特性,是说明程序的,给计算机看的注释:用文字描述程序的,给程序员看的注解作用:编写文档:通过代码里标识的注解生成文档代码分析:通过代码里标识的注解对代码进行分析编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查常见注解:@author:标识创建者@date:标识创建日期@Override:检测被该注解标注的方法是否是继承自父.
2020-11-03 12:50:37
516
原创 JavaSE-反射总结
1. 反射基本概念Reflect:运行时将类的各个组成部分封装为其他对象反射是框架设计的灵魂反射的好处:可以在程序运行过程中,操作这些对象可以解耦,提高程序的可扩展性程序不用在编译期就完成确定,在运行期仍然可以扩展反射的缺点:反射性能较低,需要解析字节码,将内存中的对象进行解析反射相对不安全,破坏了封装性(因为通过反射可以获得私有方法和属性)Java程序在计算机中经历的三个阶段:Source源码阶段(javac将程序编译成.class)Class类对象阶段(类加载器.
2020-11-03 12:47:45
117
原创 JavaSE-类加载总结
1. 类的加载时机创建类的实例初始化某个类的子类调用类的静态方法访问某个类或接口的静态变量,或者对该静态变量赋值使用反射方式来强制创建某个类或接口对应的java.lang.Class对象直接使用java.exe命令来运行某个主类2. 类加载的过程加载:通过类加载器将.class文件加载到内存中,并为之生成对应的java.lang.Class对象连接:验证阶段:确保Class文件的字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身的安全文件格式的验证元数据的验证.
2020-11-03 12:44:19
126
原创 JavaSE-网络编程总结
1. InetAddress类InetAddress类表示Internet协议地址,其常用方法有:// 获取:主机名/主机IP;主机名称可以是机器名称,也可以是IP地址static InetAddress getByName(String host)// 获取:主机名String getHostName()// 获取:主机IPString getHostAddress()127.0.0.1是回送地址,即localhost,指本地机,一般用来测试使用。InetAddress使.
2020-11-02 08:49:16
84
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人