- 博客(47)
- 资源 (2)
- 收藏
- 关注
原创 持续集成环境搭建之Tomcat搭建
持续集成环境搭建之Tomcat安装添加用户和权限安装官网下载压缩包1、新建 /opt/tomcat 目录 mkdir -p /opt/tomcat2、解压下载的压缩包 tar -xzf apache-tomcat-10.0.8.tar.gz3、移动文件 mv apache-tomcat-10.0.8/* /opt/tomcat4、启动tomcat /opt/tomcat/bin/startup.sh如果要修改端口,就编辑 /conf/server.xm
2021-10-07 20:50:26
230
原创 持续集成环境搭建之Maven搭建
持续集成环境搭建之Maven安装 maven 3.6.3在 Jenkins 关联 JDK 和 Maven安装 maven 3.6.3在Jenkins集成服务器上,需要安装Maven来编译和打包项目1、创建目录 /opt/maven mkdir -p /opt/maven2、下载最新版本 maven 到 wget https://www-us.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar
2021-10-07 18:44:14
193
原创 HTML基础
HTML-Day01HTML 语法规范基本结构标签常用标签特殊字符文章Notion链接HTML 语法规范基本结构标签常用标签锚点示例:```html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body><h2&
2021-08-30 22:32:07
231
原创 持续集成环境搭建之Jenkins搭建
持续集成环境搭建之JenkinsUbuntu上安装Jenkins修改Jenkins插件下载地址用户权限管理凭证管理和演示演示 Jenkins 的如何管理 Gitlab 的凭证(以使用Git工具到Gitlab拉取项目源码为例)使用用户密码使用 SSH 密钥Ubuntu上安装Jenkins1、安装 jdk apt-get update apt-get install openjdk-8-jdk java -version2、启用 Jenkins APT 软件源,并导入源 GPGk
2021-08-26 10:38:11
207
原创 持续集成环境搭建之GitLab搭建
持续集成环境搭建之GitLab为什么选择GitlabUbuntu上安装Gitlab添加组、创建用户、创建项目创建组添加用户五种权限说明上传源码到Gitlab为什么选择GitlabGitLab和GitHub一样属于第三方基于Git开发的作品,免费且开源(基于MIT协议),与Github类似, 可以注册用户,任意提交你的代码,添加SSHKey等等。不同的是,GitLab是可以部署到自己的服务器 上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,你总不可能把团队内部的智慧总放 在别人的服务器上吧?
2021-08-26 10:18:38
147
原创 Java之NIO
Java之NIO简介Java NIO 与 IO 的主要区别通道和缓冲区缓冲区缓冲区的类型缓冲区的基本属性和重要概念直接缓冲区和非直接缓冲区创建直接缓冲区通道了解 Java 程序对磁盘数据进行读写的方法演进通道的主要实现类获取通道代码实现使用非直接缓冲区(完成文件复制)使用直接缓冲区(完成文件复制)通道间的数据传输分散与聚集字符集NIO 的非阻塞式网络通信传统 IONIO使用 NIO 完成网络通信简介Java NIO(New IO)是从 Java 1.4 版本开始引入的一个新的 IO API,可以替代标准
2021-08-26 09:59:51
236
原创 SpringMVC之:常用注解
SpringMVC之:常用注解@Controller@RequestMapping基本使用属性@PathVariable后面遇到其他注解再进行补充@Controller在 SpringMVC 中,控制器 Controller 负责处理由 DispatcherServlet 分发的请求,SpringMVC 中提供了一个非常简便的定义 Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用 @Controller 标记一个类是 Controller ,这样的 Controller 就能被
2021-06-07 17:09:17
203
1
原创 SpringMVC之:Controller返回Json字符串
SpringMVC之:Controller返回Json字符串使用jackson使用fastjson使用jacksonpom.xml 中导入 jackson 依赖<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --><dependency> <groupId>com.fasterxml.jackson.core</groupId>
2021-06-06 21:57:02
786
3
原创 SpringMVC之:注解版 HelloWorld / 通用配置
SpringMVC之:注解版 HelloWorld / 通用配置创建 Maven 项目在 pom.xml 中导入依赖建立子 module,设置为 web 项目在 web.xml 中配置 DispatcherServlet在 /src/main/resources 下创建相应的 springmvc-servlet.xml 文件在 /src/main/java 下新建一个包 com.xxx.controller ,并创建一个 HelloController 类在 web/WEB-INF 下新建 jsp 文件夹,
2021-06-05 23:37:59
214
1
原创 SVN之:Ubuntu安装SVN教程
Ubuntu安装SVN网址安装验证网址下载网址:http://subversion.apache.org/packages.html命令:$ apt-get install subversion (一般仅执行第一个命令就行) $ apt-get install libapache2-svn(这个是整合apache服务器用的)安装在安装前可以给虚拟机拍一个快照,方便安装
2021-04-13 14:33:50
337
原创 插入排序
插入排序插入排序文章notion链接插入排序插入排序的思想:从第二个元素(待插入元素)开始,和前面的每一个元素比较,找到合适的位置插入。假设我们现在要对数组:arr= { 3,9,-1,10,-2,5,21 } 进行排序,结合上面的动图,从第二个元素9开始,先和3比较,3比9小那么数组应该不变。第一趟排序public int[] OneStepInsertSort(int[] arr){ // 定义待插入元素 int insertVal = arr[1];
2021-04-05 23:22:26
105
原创 选择排序
选择排序选择排序文章notion链接选择排序的思想:第一趟循环在未排序序列中找到最小元素,存放到排序序列的起始位置。后面每趟循环再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾,直到所有元素均排序完毕。选择排序假设我们现在要对数组:arr= { 3,9,-1,10,-2,5,21 } 进行排序,结合上面的动图,总共排序需要进行(数组长度 - 1)趟,而每一趟又会有一个循环,通过循环找到这一趟中最小的元素和下标,最后进行交换。那么在经过第一趟排序后,最小的元素-2会被放到第一位。第一
2021-04-05 21:56:45
150
2
原创 冒泡排序
冒泡排序冒泡排序改进冒泡排序文章notion链接冒泡排序冒泡排序的思想很简单:遍历数组,比较相邻的两个元素,顺序错误就把它们交换,直到整个数组排序完成。因为每经过一趟排序,越小的元素会经交换而慢慢“浮”到数列的顶端,因此叫做冒泡排序。假设我们现在要对数组:arr= {3,9,-1,10,-2,5,21} 进行排序,结合上面的动图,经过第一趟排序后最大的元素会被排到最后。第一趟排序public int[] OneStepBubbleSort(int arr[]){ int temp =
2021-04-05 20:07:03
822
原创 计算机网络之运输层
运输层运输层协议概述进程间通信运输层的端口运输层的两个重要协议用户数据报协议UDP概述UDP的首部格式传输控制协议TCPTCP的主要特点TCP连接可靠传输的工作原理停止等待协议信道的利用率连续ARQ协议TCP报文段的首部格式TCP可靠传输的实现以字节为单位的滑动窗口接收窗口和缓存超时重传时间的选择TCP的流量控制TCP的传输效率TCP的拥塞控制原理TCP的拥塞控制方法TCP的运输连接管理TCP的连接建立TCP的连接释放文章notion链接运输层协议概述进程间通信从通信和信息处理的角度看,运输层向它上面
2021-04-05 00:24:18
440
原创 计算机网络之物理层
物理层基本概念数据通信的基本知识数据通信的基本模型信号信道数字信号常用的编码方式基本的带通调制方法信道的容量物理层下面的传输媒体导引型传输媒体非导引型传输媒体信道复用技术频分复用时分复用统计时分复用波分复用码分复用宽带接入技术ADSL技术光纤同轴混合网FTTx技术文章notion连接基本概念物理层考虑的是如何能在连接各种计算机的传输媒体上传输数据比特率,而不是具体的传输媒体。在现有的计算机网络中,硬件设备和传输媒体的种类繁多,通讯手段也有很多不同方式,物理层的作用正是要尽可能屏蔽掉这些差异,让上面的数据
2021-04-03 23:37:34
243
原创 JavaWeb之Servlet
Servlet什么是Servlet实现一个Servlet程序Servlet的生命周期Get和Post获取请求方式通过HttpServlet接口来实现Servlet程序Servlet的继承体系ServletConfig类ServletContext类域对象ServletContext 类的四个作用HttpServletRequest类部分演示获取请求的参数值演示请求转发演示HttpServletResponse类请求重定向notion文章链接:什么是ServletServlet是JavaEE的规范之一,它
2021-03-30 15:09:58
132
2
原创 一篇文章搞定Git
Git为什么需要Git版本控制Git的优势Git安装Git结构Git 和代码托管中心本地库和远程库的交互团队内部协作团队间协作Git的命令行操作初始化本地库设置签名添加提交和查看状态版本的前进和后退reset命令的三个参数对比把删除记录提交到本地库:找回把删除提交到暂存区的文件文件的比较分支Git的文件管理机制Git的分支管理机制本地库和远程仓库交互在GitHub中创建远程仓库克隆操作拉取(Pull)操作跨团队操作文章notion链接为什么需要Git????协同修改多个人可以并行不悖的修改服务器端的
2021-03-28 00:45:28
153
原创 一篇文章搞定Maven
Maven配置二级目录三级目录配置下载安装包并解压:https://maven.apache.org/download.cgi在环境变量中配置MAVEN_HOME,路径是MAVEN的根目录:然后把MAVEN_HOME变量配置到PATH中:最后在cmd中属性mvn -v 测试:二级目录三级目录...
2021-03-26 22:11:06
145
原创 Java之Mybatis:缓存
缓存介绍一级缓存(本地缓存)一级缓存失效的四种情况SqlSession不同SqlSession相同,查询条件不同SqlSession和查询条件相同,但是两次查询期间进行了增删改操作SqlSession和查询条件相同,但在两次查询期间手动清理一级缓存二级缓存(全局缓存)二级缓存的开启缓存的其他设置和属性查询时的顺序介绍 Mybatis包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。缓存可以极大的提升查询效率。 &
2021-03-24 19:36:41
178
原创 Java之Mybatis:动态SQL
动态SQL介绍if元素trim标签choose标签二级目录三级目录介绍官方文档中这样写到: 动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。需要学习的元素:if元素当我们查询员工时,完整得sql语句是这样的:select * from
2021-03-24 13:33:06
350
翻译 Java之Spring5:AOP
AOP面向切面编程介绍底层原理有接口情况,使用JDK动态代理JDK动态代理具体实现没有接口情况,使用CGLIB动态代理AOP的几个术语基于AspectJ实现注解方式的AOP操作准备实现抽取相同的切入点增强类优先级设置基于AspectJ实现XML方式的AOP操作步骤实现完全注解开发介绍 AOP:也叫做面向切面编程,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。通俗的描述就是:不通过
2021-03-18 21:34:45
185
原创 Java之Mybatis:全局配置文件中的标签
全局配置文件中的标签properties标签Settings标签typeAliases标签typeHandlers标签plugins标签environments标签databaseIdProvider标签mappers标签Mybatis的全局配置文件的标签有:properties标签 Mybatis可以使用properties来引入外部的propertis配置文件内容,该标签有两个属性: 其中,resou
2021-03-18 21:24:40
935
原创 Java之Mybatis:入门
Mybatis入门介绍为什么要使用MyBatis环境搭建下载Mybatis写一个Hello三级目录介绍MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。它避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。我们可以使用简单的XML或注解来配置MyBatis原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。为什么要使用MyBatis对比JDBC和HibernateJDBC:SQL夹在Jav
2021-03-18 21:18:53
189
原创 Java之Spring5:框架新功能
Spring5框架新功能新功能整合Log4j2日志工具@Nullable注解函数式风格GenericApplicationContext整合JUnit5整合JUnit4整合JUnit5SpringWebflux新功能Spring5框架的代码基于Java8,运行时兼容JDK9,许多不建议使用的类和方法在代码库中删除。Spring5框架自带了通用的日志封装。Spring5框架核心容器支持@Nullable注解。Spring5核心容器支持函数式风格GenericApplicationContext。
2021-03-15 19:30:31
205
原创 Java之Spring5:事务
事务事务回顾什么是事务事务的ACID搭建操作事务的环境创建数据库表创建service,搭建dao,配置xml,完成对象创建和注入关系在dao中创建加钱和扣钱的方法,在service中创建转账的方法使用事务解决转账异常问题事务的步骤Spring进行事务管理的两种操作声明式事务管理Spring 进行声明式事务管理的原理Spring事务管理的相关API使用注解实现声明式事务管理改进案例声明式事务注解的相关参数配置使用xml实现声明式事务管理完全注解方式实现声明式事务管理事务回顾什么是事务 &nbs
2021-03-14 21:34:25
151
原创 Java之Spring5:JDBCTemplate
JDBCTemplate什么是JDBCTemplate准备工作三级目录什么是JDBCTemplateJDBCTemplate是Spring框架对JDBC进行封装,使用它方便实现对数据库操作。准备工作引入jar包在Spring的配置文件中配置数据库连接池:配置JDBCTemplate对象,注入DataSource:创建Service类、Dao类,在Dao类中注入JDBCTemplate对象:package com.jackma.spring5.Dao;public interfa
2021-03-14 16:11:48
160
原创 Java之Spring5:IOC容器
IOC容器什么是IOC容器IOC容器中的Bean小试牛刀搭建Spring5环境写一个HelloWorldIOC底层原理IOC的Bean管理基于 xml 方式创建对象什么是IOC容器 IOC全称Inversion of Control,直译为控制反转,它是具有依赖注入功能的容器,负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。应用程序无需直接在代码中new相关的对象,应用程序由IOC容器进行组装。在Spring中BeanFactory是IOC容器
2021-03-12 22:37:48
166
原创 Java之设计模式:建造者模式
建造者模式案例传统的方法建造者模式基本介绍建造者模式中的四个角色案例改进案例 先看一个具体的案例:此时我们需要建一栋房子,建房子的过程有打桩、砌墙、封顶;房子的样式有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的。要求编写代码完成盖房的项目:传统的方法 传统方法是构造一个房子的抽象类,然后把建房子的打桩、砌墙、封顶过程作为方法写在类中,然后形容各种房子的类(高楼类、普通楼类、别
2021-03-08 21:13:44
85
原创 Java之设计模式:原型模式
原型模式案例传统方法原型模式基本介绍案例改进浅拷贝和深拷贝案例引入浅拷贝的基本介绍深拷贝的基本介绍实例案例 克隆羊问题:现在有一只羊,姓名为tom, 年龄为1,颜色为白色,请编写程序创建和tom属性完全相同的10只羊。传统方法 思路:建立一个Sheep类,然后new10次: Sheep类:package prototype;public class Sh
2021-03-08 16:53:05
155
原创 Java之设计模式:工厂模式
工厂模式案例二级目录三级目录案例先看一个具体的案例:有一间披萨商店,要求完成披萨店订购功能要求考虑:披萨的种类很多(比如 GreekPizz、CheesePizz等)。披萨的制作有 prepare、bake、 cut,、box 等步骤。要便于披萨种类的扩展,要便于维护。 先不考虑工厂模式,要是往常我们会怎么做?可以把Pizz当成一个抽象类,里边有共用披萨的制作方法,然后让GreekPizz、CheesePizz等披萨来继承,各自实现自己需要的方法
2021-03-08 11:18:25
132
1
原创 Java之设计模式:单例模式
单例模式介绍八种单例设计模式饿汉式(静态常量)应用实例饿汉式(静态代码块)应用实例懒汉式(线程不安全)懒汉式(线程安全,同步方法)懒汉式(线程安全,同步代码块)双重检查静态内部类枚举单例模式的注意事项介绍 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。八种单例设计模式单例设计模式的实现方式总共又八种:饿汉式(静态常量)饿汉式(静态代码块)懒汉式(线
2021-03-07 21:08:51
143
1
原创 Java之设计模式:七大设计原则和UML类图
设计模式的目的 编写软件过程中,程序员面临着来自耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式是为了让程序(软件),具有更好的:代码重用性 (即:相同功能的代码,不用多次编写)可读性 (即:编程规范性, 便于其他程序员的阅读和理解)可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护)可靠性 (即:当我们增加新的功能后,对原来的功能没有影响)使程序呈现高内聚,低耦合的特性7大设计模式单一职责原则接口隔
2021-03-07 15:07:31
369
原创 Java之数据结构与算法:栈
栈介绍代码实现栈满栈空入栈(push)出栈(pop)遍历栈获取栈中数据的数量获取栈顶元素测试介绍 栈(Stack)是一个先入后出(FILO-First In Last Out)的有序列表。元素的插入和删除只能在线性表的同一端进行操作。允许插入和删除的一端称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。 根据上图可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的
2021-03-06 18:49:24
89
原创 Java之数据结构与算法:链表
链表单链表介绍单链表的特点单链表的应用实例思路和代码实现添加方法1测试添加方法2测试删除测试修改测试查找测试单链表面试题求单链表中有效节点的个数测试查找单链表中的倒数第k个结点(新浪面试题)测试单链表的反转(腾讯面试题)测试单链表完整代码双向链表介绍双向链表的应用实例思路和代码实现添加删除查找和修改测试双向链表完整代码单链表介绍 在百度百科中是这样介绍链表的:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的
2021-03-06 18:14:48
139
原创 Java之数据结构与算法:队列
队列介绍数组顺序模拟队列队列的基本操作思路和代码实现构造一个空队列判断队列是否已满判断队列是否为空添加数据到队列尾从队列头取出数据显示队列头数据显示队列的数据结果测试完整代码存在问题环形队列介绍队列的基本操作思路和代码实现构造一个空队列判断队列是否已满判断队列是否为空添加数据到队列从队列取出数据显示队列头数据显示队列数据结果测试完整代码介绍 队列(Queue)是一个有序列表,可以使用数组或链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出,后存入
2021-03-06 13:53:50
179
原创 Java之数据结构与算法:分治算法
分治算法介绍分治算法的基本步骤分治算法的设计模式分治算法实践汉诺塔思路分析代码实现结果介绍 分治法是一种很重要的算法。从字面意思可以理解为:“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如快速排序和归并排序等。 分治算法可以求解的一些经典问题,如:二分搜索、大整数乘
2021-03-04 21:21:43
158
1
原创 Java之数据结构与算法:图
图的创建介绍为什么要有图?举例图的常用概念无向图有向图带权图图的表示方式邻接矩阵邻接表图的入门案例代码实现结果图的遍历深度优先遍历(Depth First Search)具体步骤广度优先遍历介绍为什么要有图? 前面我们学了线性表和树,它们都有一些局限性,线性表局限于一个直接前驱和一个直接后继的关系,树也只能有一个直接前驱也就是父节点,当我们需要表示多对多的关系时, 这里我们就要用到图。举例 图是一种数据结构
2021-03-04 17:20:03
251
1
原创 Tensorflow——线性回归问题实战
线性回归问题实战实现步骤Step1:Compute LossStep2:Compute Gradient and updateStep3:Set w = w′ and loop数据集完整代码运行结果Linear Equation(线性方程):y = w * x + b实现步骤1:根据随机初始化的 w x b 和 y 来计算 loss2:根据当前的 w x b 和 y 的值来计算梯度3:更新梯度,循环将新的 w′ 和 b′ 复赋给 w 和 b ,最终得到一个最优的 w′ 和 b′ 作为方程最终的参数
2021-03-04 11:06:30
221
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人