本次实验使用的MariaDB数据库,不使用MySQL,两者的使用方式是一样的,如果你电脑没有安装MariaDB,你应该先去安装。
添加数据库
数据库sql文件在项目的根目录下,自行添加到数据库。
项目下载地址:https://rookie1679.lanzoum.com/id5Rn0kn6z5a
添加依赖
123456789101112131415161718192021222324252627282930313233343536<!-- mariadb数据库--> <dependency> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId> <version>3.1.0</version> </dependency><!-- 数据库连接池管理器--> <dependency> ...
第一个纯注解开发项目
创建类
创建一个数据层、业务层的类
数据层:
123456789101112package dao.impl;import dao.BookDao;import org.springframework.stereotype.Repository;@Repository("bookDao")public class BookDaoImpl implements BookDao { @Override public void save() { System.out.println("BookDaoImpl..."); }}
业务层:
123456789101112package service.impl;import org.springframework.stereotype.Service;import service.BookService;@Service("bookService")public class BookServ ...
题目
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。
请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。
**注意:**最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。
提示:
nums1.length == m + n
nums2.length == n
0 <= m, n <= 200
1 <= m + n <= 200
109 <= nums1[i], nums2[j] <= 109
示例
示例1:
1234输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]解释:需要合并 [1,2,3] 和 [2,5,6] 。合并结果是 [1,2,2,3,5,6] ...
前言
frp 采用 Golang 编写,支持跨平台,仅需下载对应平台的二进制文件即可执行,没有额外依赖。frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。
内网服务由于没有公网 IP,不能被非局域网内的其他用户访问。用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
实验环境
服务器:Ubuntu 20.04
服务器内核版本:5.4.0-126-generic
frp服务端版本frp_0.46.0_linux_amd64.tar.gz ...
加载properties文件
我们链接数据库时,我们一般都使用一个properties文件来存储我们的连接数据信息,接下来我们使用bean来管理我们的properties文件资源。
添加依赖
在加载properties文件时,需要一个数据库连接池来管理我们的数据库,我们选择阿里巴巴的Druid连接池。
数据库我们选择MariaDB数据库。打开pom.xml文件,添加依赖
12345678910<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.2</version></dependency> <dependency> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId& ...
Spring介绍
Spring Framework是Spring生态圈中最基础的项目,是其他项目的根基。
从spring的版本更迭中可以看出,spring的架构在不断的模块化,解耦程度越来越高,尽量实现低耦合高内聚。
目前版本为止spring的架构图如下:
Data Access:数据访问
Data Integration:数据集成
Web:Web开发
AOP:面向切面编程
Aspects:AOP思想实现
Core Container:核心容器
Test:单元测试与集成测试
Spring解决了什么问题?
任何一门技术的出现,肯定不是空穴来风,肯定有他需要解决的业务。
在传统的Java编程中,代码的书写耦合度偏高,我们一般在使用某个类的方法时,我们一般需要先new一个对象,将它实例化,在不那么复杂的业务中,这显得不那么重要,随着业务的迭代和开发的深入,复杂多变的需求开始慢慢侵蚀原本"完美"的架构,我们使用的new方式实例化的对象可能不是那么完美好用了,因为这样的耦合度偏高。
spring的出现,恰好可以解决这个问题,在spring中,我们不要主动去new ...
题目
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
提示:
2 <= nums.length <= 104
109 <= nums[i] <= 109
109 <= target <= 109
只会存在一个有效答案
示例
示例1:
123输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例2:
12输入:nums = [3,2,4], target = 6输出:[1,2]
示例3:
12输入:nums = [3,3], target = 6输出:[0,1]
实现
方法一:暴力枚举
**思路:**最容易想到的方法是枚举数组中的每一个数 x,寻找数组中是否存在 target - x。
当我们使用遍历整 ...
题目
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。
示例
提示:
1 <= nums.length <= 105
-104 <= nums[i] <= 104
示例
示例1:
123输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
示例2:
12输入:nums = [1]输出:1
示例3:
12输入:nums = [5,4,-1,7,8]输出:23
实现
方法一:贪心算法
思路:
若当前指针所指元素之前的和小于0,则丢弃当前元素之前的数列。
也就是说,指针指向当前数时,前面的数列如果和小于0,前面的数列就不要了,因为小于0 ,即使加下去也会变得更小,就重新从当前指针开始算最大的数列。
12345678910111213public static int maxSubArray(int[] nums) { int sum=0; int max ...
题目
给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。
示例
提示
1 <= nums.length <= 105
-109 <= nums[i] <= 109
示例
示例1:
12输入:nums = [1,2,3,1]输出:true
示例2:
12输入:nums = [1,2,3,4]输出:false
示例3:
12输入:nums = [1,1,1,3,3,4,3,2,4,2]输出:true
实现
方法一:排序
思路:
在对数字从小到大排序之后,数组的重复元素一定出现在相邻位置中。因此,我们可以扫描已排序的数组,每次判断相邻的两个元素是否相等,如果相等则说明存在重复的元素
123456789public static boolean containsDuplicate(int[] nums) { Arrays.sort(nums); int n = nums.length; for (int i = 0; i < n - 1; i ...
前言
2022年准备画上句号了,而我也大三了,下学期开始就是大三第二学期了,时间过得可真快啊,回想之前我感觉我还是个大一大二的学生,还记得那时候时不时去东门玩一玩轮滑,和师兄们一起刷校园跑,没有什么学业上的压力,每天就做做作业,做完作业就玩一下放松一下,那时候过得可真是自在啊。
还记得有一次早上有一节的形势与政策的课,那一次睡的比较晚,刚好迟到1-2分钟,我前脚刚进入,后面就看到林*泰师兄,那时候我还是大二,他是大三,那时候我还想着,好好奇师兄的课是什么样的,至今印象一直很深刻(主要是因为我走错了教室,有点尴尬),那时的我,过的很自在。
转眼间就到大三了,还有一个学期就大四了,我就变成那个要出闲置物的大四师兄了,以前一直是我在收一些师兄师姐的闲置物,现在反而快轮到我出闲置物了,想想就真的好快啊,我还没做好准备呢,这个学生的身份快要摘掉了,好不习惯,马上要接受社会的毒打了。
过去一年做了什么?
做了什么?学了什么?
我感觉倒也没做什么,就正常的按照学校的步子走,什么证书也没有考到,高考考了日语,日语的证书也没有考到,计算机相关的证书也没有考到,浑浑噩噩过了一年。
如果说学到了什么的话 ...