- 博客(100)
- 收藏
- 关注
原创 Spring MVC文件上传和下载
@Controllerpublic class FileUpAndDownController { @RequestMapping("/testDown") public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throws IOException { //获取ServletContext对象 ServletContext servletContext = s
2021-10-20 10:17:19 404 1
原创 数据库范式
第一范式:1.原子性,保证每一列不可再分第二范式:2.在第一范式的基础上,确保主键与表中的所有列都有关,如果无关,就拆成多张表,也就是每张表只能完成一件事情第三范式:在第二范式的基础上,确保每一列数据和主键直接相关,不能间接相关...
2021-07-18 17:59:25 316
原创 图片服务器测试项目
背景需求在 github 或者博客中插入图片会无法显示,这令人很苦恼。一般上传的图片直接是二进制数据,比较复杂。但如果我们给定一个 url, 从而能够获得到图片内容,便可以解决此问题。整体架构核心就是一个 HTTP 服务器, 提供对图片的增删改查能力.同时搭配简单的页面辅助完成图片上传/展示.数据库设计drop database if exists drawing_bed;create database drawing_bed character set utf8mb4;use drawin
2021-07-14 16:47:15 480 1
原创 在线抽奖系统
在线抽奖系统项目目标复习Spring相关知识:IOC/DI(Bean的注册、配置与使用)、SpringMVC、AOP复习SpringBoot的配置使用学习系统设计,结合并深入复习学过的知识,如异常,HTTP数据传输流程等等复习并巩固Mybatis的基本使用,理解数据转换时对应的映射关系学习项目开发流程开发环境与技术栈Windows/Mac/LinuxMavenLombokSpring、SpringMVC、SpringBootMySQL、Mybatis、Druid项目功能主要业务:
2021-07-14 14:34:46 564
原创 java复习之反射
package fanshe;import org.junit.Test;import java.io.FileDescriptor;import java.io.Serializable;import java.lang.annotation.Annotation;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetExce
2021-06-26 17:33:12 90
原创 java复习之IO流
File类的使用:java.io.file:文件和文件目录路径的抽象表示形式,与平台无关File 能新建,删除,重命名文件和目录,但file不能访问文件内容本身1.File类申名在java.io包下
2021-06-24 16:42:01 105
原创 java复习之泛型
为什么要有泛型保证数据安全表明集合中放入元素的类型5.0新特性2.在集合中使用泛型:总结:1.集合接口在5.0时都修改为带泛型的结构.2.在实例化集合类时,可以指明具体的泛型类型3.在集合或接口中,内部结构使用到泛型的位置,都指定为实例化时的泛型类型比如:add(E e)4.泛型的类型必须是类,不能是基本数据结构.需要用到基本数据类型时,用包装类替换5.实例化时,没有指定泛型的类型,默认类型为java.lang.Object6.静态方法中不能使用类的泛型7.父类有泛型, 泛型方
2021-06-22 11:41:58 126
原创 java复习之集合
Collection常用方法add(), addAll(),size(),isEmpty(),clear(),contains(),containsAll(Collection),remove(),removeAll(Collection),retainsAll()(交集),equals(),hashCode(),toArray(),iterator()Collection接口与数组的相互转换toArray();Arrays.asList(new String [ ]{ })...
2021-06-21 11:30:24 136 1
原创 测试开发学习之旅------进阶篇
习题课因果图法自动饮料的售卖 机,可以输入1.5毛钱或者两块钱硬币,一瓶饮料的价钱1.5可乐,雪碧,红茶,按哪一种饮料,出哪一种饮料,如果输入2块钱按相应的饮料,出饮料的同时会找出5毛硬币(1)找出所有的输入和输出输入:1.5块钱,2块钱,可乐,雪碧,红茶输出:可乐,雪碧,红茶,5毛硬币(2)输入输出之间的关系:输入1.5,按可乐,输出可乐输入1.5,按雪碧,输出雪碧输入1.5,按红茶,输出红茶输入两元,按可乐,输出可乐和0.5元输入两元,按雪碧,输出雪碧和0.5元输入两元,按红
2021-06-15 15:49:56 305 2
原创 697. 数组的度 给定一个非空且只包含非负数的整数数组 nums,数组的度的定义是指数组里任一元素出现频数的最大值。 你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,
class Solution { public int findShortestSubArray(int[] nums) { HashMap <Integer,int[]> map = new HashMap<>(); int n = nums.length; for(int i = 0;i < n;i++){//数组里放三个数,一个是这个数出现的次数,一个是第一次出现的下标,另一个是最后一次出现的下标
2021-06-09 22:51:55 471
原创 测试开发学习之旅--测试用例
回顾复习:1.软件测试的流程需求分析-----测试计划-----测试设计阶段/开发--------测试执行------测试评估2.如何去描述一个bug?版本号—测试环境—测试步骤(数据)----实际结果----预期结果(需求一致),附件(错误日志)3.BUG的级别1.崩溃2.严重3.一般4.建议性4.Bug的生命周期start – new --open —是否修改----验证通过----关闭如果因为一个bug问题和开发人员产生冲突怎么办(1)先检查自身,看一下bug的描述是否有问题
2021-06-09 18:28:33 193
原创 狂肝最强javaEE框架高强度学习
SpringBean容器:bean就是java对象,容器负责java对象整个生命周期的管理,包括创建修改销毁等IOC控制反转IOC:是一种思想IOC容器:IOC思想的实现容器DI实现IOc的方法之一,依赖注入,就是再IOC运行期间,动态的将依赖关系注入到对象之中通过Ioc思想,引入Ioc容器,利用依赖关系注入实现对象之间的解耦.设计上说明ioc,作用,用来降低代码之间的耦合性,实现方式:DI,DI有两种方式实现注册Bean,在类上使用,一旦被类扫描到,就生成Bean对象注册到容器中Con
2021-06-07 10:16:37 178 3
原创 测试开发学习之旅--三
敏捷中的测试:1.软件测试v模型优点:左边开发的每一个阶段和右边的每一个阶段一一对应,是右边测试,每一个阶段的依据缺点:测试介入晚,前期的错误和风险后期才发现,失去纠正的机会.2.软件测试w模型:优点:测试和开发在两个独立的v模型里边,测试介入比较早,在项目初期就介入,前期的风险可以及时被发现;缺点:每一个阶段仍然是一个串行的过程,不能适应需求变化的项目,所以无法用到敏捷开发...
2021-05-23 20:59:39 155 7
原创 java测试开发学习之旅--2
软件测试的目的和原则目的:验证软件有或没有问题。原则:以客户为中心,遵循软件测试的规范、流程、标准和要求。1.什么是需求社交类app-发朋友圈(boss)需求 (发朋友圈) ---- 分析------开发-------测试-----产品上线 盆友圈功能的具体实现细节 权限 发表内容 点赞 评论 以文档的形式展现出来用户需求:想让软件实现的功能 boss/实际用户/公司的业务人员(针对公司的内部
2021-05-22 17:10:21 181 1
原创 java测试开发-----学习之旅1
1.什么是软件测试:验证软件是否满足用户的需求。2.软件测试和开发的区别是什么:(1) 软件测试和软件开发中调试的区别目的:软件测试的目的,测试人员根据需求去判断软件是否满足客户的需求.调试的目的:软件开发人员为了验证程序是否可以满足他想让程序实现的功能.角色:调试:开发人员; 测试:测试人员,开发人员(单元测试),用户测试阶段不同:调试,软件开发的阶段;测试:整个软件的生命周期.**测试左移:**需求前的调研阶段和需求阶段,测试人员参加.**测试右移:**产品上线后,系统监控,日志的
2021-05-22 12:13:29 143
原创 817. 链表组件 给定链表头结点 head,该链表上的每个结点都有一个 唯一的整型值 。 同时给定列表 G,该列表是上述链表中整型值的一个子集。 返回列表 G 中组件的个数,这里对组件的定义为:
class Solution { public int numComponents(ListNode head, int[] G) { HashSet<Integer> set = new HashSet<>(); for(int x : G){ set.add(x); } ListNode cur = head; int res = 0; while(cu
2021-05-18 23:31:37 443 1
原创 1669. 合并两个链表 给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。 请你将 list1 中第 a 个节点到第 b 个节点删除,并将list2 接在被删除节
class Solution { public ListNode mergeInBetween(ListNode list1, int a, int b, ListNode list2) { ListNode begin = list1; ListNode end = list1; int i = 0; while(i < a-1){ begin = begin.next; i++
2021-05-18 23:23:19 406
原创 请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。 例如,给定一个列表 temperatur
单调栈class Solution { public int[] dailyTemperatures(int[] T) { Stack<Integer> stack = new Stack<>(); int n = T.length; int[] index = new int[n]; for(int i = 0;i < n;i++){ while(!stack.isEmpty()
2021-05-18 23:15:25 521
原创 剑指 Offer 52. 两个链表的第一个公共节点 输入两个链表,找出它们的第一个公共节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 输入:intersectV
public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ListNode cur = headA; int count = 1; while(cur != null){ count++; cur = cur.next; } ListNode c
2021-05-18 23:06:59 111
原创 请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。
/*// Definition for a Node.class Node { int val; Node next; Node random; public Node(int val) { this.val = val; this.next = null; this.random = null; }}*/class Solution { public Node copyRandomList(Node
2021-05-16 23:10:18 356
原创 61. 旋转链表 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 示例 1: 输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1
class Solution { public ListNode rotateRight(ListNode head, int k) { if(head == null){ return null; } ListNode cur = head; int n = 1; while(cur.next != null){ cur = cur.next; n
2021-05-16 22:55:05 415
原创 面试题 17.04. 消失的数字 数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗? 注意:本题相对书上原题稍作改动 示例 1:
class Solution { public int missingNumber(int[] nums) { Arrays.sort(nums); int i =0; for( i = 0;i < nums.length + 1;i++){ if(i == nums.length){ return i; } if(i != nums[i]){
2021-05-16 22:53:44 775
原创 在云服务器中安装mysql详情步骤
http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm下载上方连接,然后将文件拖入云服务器安装目录,安装目录由自己选然后一次执行下方代码yum -y install mysql57-community-release-el7-10.noarch.rpmyum -y install mysql-community-serverservice mysqld start获取当前默认密码grep “password” /
2021-04-13 17:28:01 227
原创 查找算法大全
**1.线性查找**public class SeqSearch { public static void main(String[] args) { int arr[] = {1,9,11,-1,34,89}; } public static int seqSearch(int[] arr,int value){ for(int i = 0 ;i < arr.length;i++){ if(arr[i] == va
2021-04-08 16:54:34 88
原创 基本排序算法大全
1.冒泡排序给定数组:3,9,-1,10,-2public static void main(String[] args) { int[] arr = {3,9,-1,10,-2}; //循环的趟数 for(int i = 0;i < arr.length - 1;i++){ //每一趟把最大的数放在最后,要弄n-1趟 for(int j = 0;j < arr.length - 1 - i;j++){
2021-03-31 16:07:55 178 1
原创 二叉树的最小深度
此处撰写解题思路得分别判断左树为空或者右树为空的情况,然后再判断最小值代码/**Definition for a binary tree node.public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val = val; }TreeNode(int val, TreeNode left, TreeNode ri
2021-03-16 16:30:33 78
原创 快乐数
编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 true ;不是,则返回 false 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/happy-number著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明
2021-03-15 23:14:44 265
原创 数组代替哈希set
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-anagram著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。**class Solution {
2021-03-15 18:44:45 83
原创 原地移除元素,双指针,时间复杂度为O(n)
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:来源:力扣(LeetCode)链接:https
2021-03-15 16:56:06 98
原创 数组插入元素,二分法,时间复杂度为O(logn)
题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/se
2021-03-15 16:42:14 673 1
原创 关于接口选择题的易错题
1public interface IService {String NAME="default";}默认类型等价表示是哪一项:正确答案: C public String NAME="default";public static String NAME="default";public static final String NAME="default";private String NAME="default";接口中的成员包括:全局常量和抽象方法。接口中的成员都有固定的修饰符,
2021-03-14 19:29:21 649
原创 给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。 如果剩余字符少于 k 个,则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k
class Solution { public String reverseStr(String s, int k) { char[] arr = s.toCharArray(); //按0-2k-4k-6k等进行反转 for(int start = 0;start < arr.length-1;start += 2*k){ int i = start; //最后的情况 要么按全反转(arr.len
2021-03-12 23:27:52 1096
原创 给你一个字符串 s,请你返回 两个相同字符之间的最长子字符串的长度 ,计算长度时不含这两个字符。如果不存在这样的子字符串,返回 -1 。 子字符串 是字符串中的一个连续字符序列。 来源:力扣(Le
解题思路此处撰写解题思路两层循环,不断更新max的值,直到最大为止代码class Solution { public int maxLengthBetweenEqualCharacters(String s) { int max = 0; char[] arr =s.toCharArray(); //标记用来判断有没有两个相同的字符 int flag = 0; for(int i =0;i<arr.lengt
2021-03-10 23:54:04 2314 1
原创 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 来源:力扣(LeetC
class Solution { public void moveZeroes(int[] nums) { int right = 0; int left = 0; int n = nums.length; for(int i = 0;i < n;i++){ if(nums[i]!=0){ swap(nums,left,right); left
2021-03-10 16:53:15 958
原创 给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。
对于下标范围 [l,r][l,r] 的连续子序列,如果对任意 l \le i<rl≤i<r 都满足 \textit{nums}[i]<\textit{nums}[i+1]nums[i]<nums[i+1],则该连续子序列是递增序列。假设数组 \textit{nums}nums 的长度是 nn,对于 0<l \le r<n-10<l≤r<n−1,如果下标范围 [l,r][l,r] 的连续子序列是递增序列,则考虑 \textit{nums}[l-1]nums[l
2021-03-10 16:29:22 2300
原创 给你一个由一些多米诺骨牌组成的列表 dominoes。 如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。 形式上,dominoes[i]
class Solution { public int numEquivDominoPairs(int[][] dominoes) { int count = 0; int[] arr =new int[200]; for(int[] domino : dominoes){ int val = (domino[0]+domino[1])*10 + Math.abs(domino[0]-domino[1]);
2021-03-09 16:46:24 264
原创 747. 至少是其他数字两倍的最大数
在一个给定的数组nums中,总是存在一个最大元素 。查找数组中的最大元素是否至少是数组中每个其他数字的两倍。如果是,则返回最大元素的索引,否则返回-1。示例 1:输入: nums = [3, 6, 1, 0]输出: 1解释: 6是最大的整数, 对于数组中的其他整数,6大于数组中其他元素的两倍。6的索引是1, 所以我们返回1.示例 2:输入: nums = [1, 2, 3, 4]输出: -1解释: 4没有超过3的两倍大, 所以我们返回 -1.来源:力扣(LeetCode)链接:ht
2021-03-07 16:34:10 67
原创 1266. 访问所有点的最小时间
对于平面上的两个点 x = (x0, x1) 和 y = (y0, y1),设它们横坐标距离之差为 dx = |x0 - y0|,纵坐标距离之差为 dy = |x1 - y1|,对于以下三种情况,我们可以分别计算出从 x 移动到 y 的最少次数:dx < dy:沿对角线移动 dx 次,再竖直移动 dy - dx 次,总计 dx + (dy - dx) = dy 次;dx == dy:沿对角线移动 dx 次;dx > dy:沿对角线移动 dy 次,再水平移动 dx - dy 次,总计 dy
2021-03-07 16:21:04 78
原创 给你一个 m 行 n 列的二维网格 grid 和一个整数 k。你需要将 grid 迁移 k 次。 每次「迁移」操作将会引发下述活动: 位于 grid[i][j] 的元素将会移动到 grid[i][
class Solution { public List<List<Integer>> shiftGrid(int[][] grid, int k) { for( ; k > 0 ; k--){ int previous = grid[grid.length-1][grid[0].length-1]; for(int i = 0;i<grid.length;i++){
2021-03-07 16:02:21 619
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人