自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 线上实时通讯交流项目测试

项目博客:线上实时通讯项目 - 项目实战(已开源)_DEGv587的博客-CSDN博客本次测试流程:

2022-02-25 16:14:53 280

原创 TCP/IP 五层(或四层)模型

TCP/IP 是一组协议的代名词,它还包括许多协议,组成了 TCP/IP 协议簇。TCP/IP 通讯协议采用了5层的层级结构,每一层都呼叫它的下一层来完成自己的需求。应用层负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telent)等。我们的网络编程主要是针对应用层。传输层负责两台主机的数据传输。如传输控制协议(TCP),能够保证数据可靠的从源主机发送到目标主机。网络层负责地址管理和路由器选择。例如在 IP 协议中,通过 ..

2022-02-22 21:46:35 1987

原创 线上图片服务器项目测试

测试项目简介:该项目为线上图片服务器测试,图片服务器主要实现的功能为图片的上传、删除、放大和进行列表展示。一、待测项目功能展示(根据与开发人员共同完成项目的需求分析实现)1.主页(图片列表页)2.从本机上传图片3.点击图片列表的任一图片,放大4.点击右侧按钮或左侧按钮,切换图片5. 删除图片,跳出弹框提示6.删除成功后自动刷新列表二、根据需求编写测试用例(这里我使用了 Xmind 使用版进行测试用例的编写,较为直观,也方便后期汇...

2022-02-21 21:38:07 646

原创 Leetcode剑指Offer刷题 - 第二十八天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 37. 序列化二叉树解法:bfs 层序遍历序列化 Serialize :借助队列,对二叉树做层序遍历,并将越过叶节点的null也打印出来。1.特例处理: 若 root 为空,则直接返回空列表 "[]" ;2.初始化: 队列 queue (包含根节点 root );序列化列表 ret ;3.层序遍历: 当 queue 为空时跳出;...

2022-02-20 22:41:17 274

原创 Leetcode剑指Offer刷题 - 第二十七天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 59 - I. 滑动窗口的最大值解法一:暴力模拟class Solution { public int[] maxSlidingWindow(int[] nums, int k) { if (nums.length == 0) return new int[0]; int len = nums.lengt..

2022-02-19 23:36:05 237

原创 进程和线程 - 概念与进程调度

程序、进程和线程的概念程序(program):指令 + 数据组成,一般以文件的形式存在进程(process):进程是对程序一次执行过程的抽象的结果,每个程序支持同时有多个进程存在(可以看作是菜谱和做菜的过程) (进程和线程的根本区别)进程是操作系统资源(硬件资源)分配的基本单位线程(thread):每个进程都是由一个或多个线程组成 (进程和线程的根本区别)线程是处理器(CPU)任务调度和执行的基本单位关于核心硬件的协调管理CPU :以时间为单位进行分配 —— 进程调度(进程

2022-02-19 18:58:04 655 1

原创 Leetcode剑指Offer刷题 - 第二十六天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 20. 表示数值的字符串解法:模拟class Solution { public boolean isNumber(String s) { if (s == null || s.length() == 0) return false; //去掉首位空格 s = s.trim(); ..

2022-02-18 21:41:21 299

原创 Leetcode剑指Offer刷题 - 第二十五天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 29. 顺时针打印矩阵解法:模拟class Solution { public int[] spiralOrder(int[][] matrix) { if (matrix.length == 0) return new int[0]; int n = matrix.length, m = matrix[..

2022-02-17 23:47:41 274

原创 Leetcode剑指Offer刷题 - 第二十四天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 14- I. 剪绳子解法:数学法: 尽可能将绳子以长度 33 等分为多段时,乘积最大class Solution { public int cuttingRope(int n) { if (n <= 3) return n - 1; int a = n / 3, b = n % 3; ..

2022-02-16 22:19:43 250

原创 Leetcode剑指Offer刷题 - 第二十三天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 39. 数组中出现次数超过一半的数字解法一:排序库函数 + 取中位数class Solution { public int majorityElement(int[] nums) { if (nums.length == 0) return -1; Arrays.sort(nums); r..

2022-02-15 12:48:04 285

原创 Leetcode剑指Offer刷题 - 第二十二天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 56 - I. 数组中数字出现的次数解法:分组异或class Solution { public int[] singleNumbers(int[] nums) { //遍历 nums 执行异或 int n = 0, m = 1, x = 0, y = 0; for (int num : ..

2022-02-14 23:23:03 312

原创 Leetcode剑指Offer刷题 - 第二十一天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 15. 二进制中1的个数解法:位运算public class Solution { public int hammingWeight(int n) { int ret = 0; while (n != 0) { ret += n & 1; n &gt..

2022-02-13 18:23:18 162

原创 Leetcode剑指Offer刷题 - 第二十天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 07. 重建二叉树题目信息:前序遍历和中序遍历的结果中都不含重复的数字解法:分治思想class Solution { int[] preorder;//保留的先序遍历 HashMap<Integer, Integer> map = new HashMap<>();//标记中序遍历 publi..

2022-02-12 22:30:22 391

原创 Leetcode剑指Offer刷题 - 第十九天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 64. 求1+2+…+n解法一:等差数列求和公式class Solution { public int sumNums(int n) { //Sn = n(n + 1) / 2 return (int)(Math.pow(n, 2) + n) >> 1; }}解法二:通过递归替代..

2022-02-11 23:22:23 460

原创 Leetcode剑指Offer刷题 - 第十八天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 55 - I. 二叉树的深度解法一:递归DFSclass Solution { public int maxDepth(TreeNode root) { if (root == null) return 0; int left = maxDepth(root.left); int righ..

2022-02-11 00:03:18 328

原创 Leetcode剑指Offer刷题 - 第十七天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 40. 最小的k个数解法一:排序class Solution { public int[] getLeastNumbers(int[] arr, int k) { if (arr.length == 0 || k == 0) return new int[0]; Arrays.sort(arr); ..

2022-02-10 22:28:23 398

原创 Leetcode剑指Offer刷题 - 第十六天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 45. 把数组排成最小的数解法一:快排设数组 nums 中任意两数字的字符串为 x 和 y若拼接字符串 x + y > y + x ,则 x “大于” y ;反之,若 x + y < y + x ,则 x “小于” yclass Solution { public String minNumber(int[]...

2022-02-07 23:58:29 130

原创 Leetcode剑指Offer刷题 - 第十五天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 34. 二叉树中和为某一值的路径解法:DFS(先序遍历 + 路径记录)LinkedList/* 初始化:构建 ret ,路径列表path pathSum(root, target) 函数: 1.dfs; 2.返回ret; dfs(node, target) 函数: 1.递推..

2022-02-07 23:08:13 691

原创 Leetcode剑指Offer刷题 - 第十四天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 12. 矩阵中的路径解法:DFS(深度优先遍历) + 剪枝class Solution { public boolean exist(char[][] board, String word) { char[] words = word.toCharArray(); for (int i = 0; i &lt.

2022-02-06 22:12:52 350

原创 Leetcode剑指Offer刷题 - 第十三天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 21. 调整数组顺序使奇数位于偶数前面解法:双指针交换(易理解版)class Solution { public int[] exchange(int[] nums) { int start = 0, end = nums.length - 1; while (start < end - 1) { .

2022-02-05 15:54:38 313

原创 Leetcode剑指Offer刷题 - 第十二天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 25. 合并两个排序的链表解法一:迭代/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */cl..

2022-02-04 21:51:28 685

原创 Leetcode剑指Offer刷题 - 第十一天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 18. 删除链表的节点解法一:双指针/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */clas.

2022-02-03 21:37:23 405

原创 Leetcode剑指Offer刷题 - 第十天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 46. 把数字翻译成字符串解法:动归初始化:(nums[0] == 2 && nums[1] <= 5) || nums[0] == 1 --> dp[1] = 2 else --> dp[1] = dp[0]递推关系:(nums[i - 1] == 2 &&am...

2022-02-02 18:19:01 313

原创 Leetcode剑指Offer刷题 - 第九天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 42. 连续子数组的最大和解法:动归class Solution { public int maxSubArray(int[] nums) { int[] dp = new int[nums.length]; dp[0] = nums[0]; int max = nums[0]; ..

2022-02-01 19:29:26 349

原创 Leetcode剑指Offer刷题 - 第八天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 10- I. 斐波那契数列解法:动态规划,如果用递归会超时)注意:题内有要求--> 答案需要取模 1e9+7(1000000007)class Solution { public int fib(int n) { if (n <= 0) return n; int first = 0;...

2022-01-31 18:50:50 207

原创 Leetcode剑指Offer刷题 - 第七天

Leetcode剑指Offer刷题指南:Leetcode剑指Offer刷题-学习计划目录_DEGv587的博客-CSDN博客剑指 Offer 26. 树的子结构解法:递归/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val...

2022-01-30 22:15:43 608

原创 Leetcode剑指Offer刷题 - 第六天

面试题32 - I. 从上到下打印二叉树解法:层序遍历二叉树 BFS/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public int[] levelOrd

2022-01-30 20:37:49 519

原创 Leetcode剑指Offer刷题-学习计划目录

Leetcode剑指Offer刷题 - 第一天_DEGv587的博客-CSDN博客Leetcode剑指Offer刷题 - 第二天_DEGv587的博客-CSDN博客Leetcode剑指Offer刷题 - 第三天_DEGv587的博客-CSDN博客Leetcode剑指Offer刷题 - 第四天_DEGv587的博客-CSDN博客​​​​​​Leetcode剑指Offer刷题 - 第五天_DEGv587的博客-CSDN博客...

2022-01-28 22:32:18 375

原创 Leetcode剑指Offer刷题 - 第五天

剑指 Offer 04. 二维数组中的查找解法一:暴力循环class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { if (matrix.length == 0) { return false; } int n = matrix.length, m = matrix[0].length; for (

2022-01-28 22:25:34 107

原创 HashMap.put()实现原理

HashMap插入操作:HashMap<String, Integer> map = new HashMap<>();map.put("hello", 1);map 是一个集合,集合中保存了 Key-Value 关联的一组元素1.put做了什么?如果map中原来有 "hello" 这个 Key 对应的元素YES - 把元素中的 value 替换为1,并返回原来的value No - 新建一个 "hello"-1 的 key-vlaue 键值对,放入集合中,并

2022-01-28 10:55:04 630

原创 遍历、二分、哈希表、搜索树的使用

四种算法的时间复杂度对比各自的优缺点以及适用场景遍历查找、二分查找 实现较为简单,但由于插入/删除时间复杂度较差,被分类为“静态的查找”,一般适用于静态不动的数据。 哈希表、搜索树(平衡)比较适合“动态的查找”, 适合集合中元素经常变更的情况下。哈希表 VS 平衡搜索树哈希表实现简单、速度快、更容易实现线程安全; 平衡搜索树维护的 Key 是有序的, 不会出现极端情况(哈希表极度冲突的情况)。 ...

2022-01-28 10:53:28 212

原创 Leetcode剑指Offer刷题 - 第四天

剑指 Offer 03. 数组中重复的数字解法一:HashSetclass Solution { public int findRepeatNumber(int[] nums) { Set<Integer> set = new HashSet<>(); for (int num : nums) { if (!set.add(num)) { return num;

2022-01-27 23:16:55 418

原创 Leetcode剑指Offer刷题 - 第三天

剑指 Offer 05. 替换空格解法:StringBuilder + 循环更换class Solution { public String replaceSpace(String s) { StringBuilder sb = new StringBuilder(); for (char c : s.toCharArray()) { if (c == ' ') { sb.append("%20");

2022-01-26 18:52:46 296

原创 Leetcode剑指Offer刷题 - 第二天

剑指 Offer 06. 从尾到头打印链表解法一:辅助栈class Solution { public int[] reversePrint(ListNode head) { //辅助栈 Deque<Integer> stack = new ArrayDeque<>(); int count = 0; while (head != null) { stack.push(head.

2022-01-25 23:45:39 252

原创 Leetcode剑指Offer刷题 - 第一天

剑指 Offer 09. 用两个栈实现队列方法:双栈:固定一个栈做插入,另一个栈做删除便于理解版(未优化):public class CQueue { //定义两个栈 private Stack<Integer> stack1; private Stack<Integer> stack2; public CQueue() { this.stack1 = new Stack<>(); this.

2022-01-25 20:59:37 357

原创 TCP/IP协议 - 三次握手四次挥手(入门易懂版)

握手通俗理解为两个人见面Say Hai,客户端和服务端建立连接挥手就可以理解为两个人结束会面,要Say Goodbai,客户端和服务端断开连接要了解什么是三握四挥,必须要了解一个重要的知识点:什么是TCP报文格式,也就是三握四挥中传送的内容是什么,遇到什么格式才能触发服务端和客户端的交流。TCP报文格式TCP报文是TCP层传输的数据单元,也叫报文段从上向下依次来看:1.端口号:用来标识同一台计算机的不同的应用进程,比如熟悉的80端口,3306...

2022-01-25 20:48:31 4390

原创 线上实时通讯项目 - 项目实战(已开源)

项目目的:实现一个线上聊天室有具体项目流程+效果展示需求分析-设计-编写代码-测试(后期加上)-部署并发布项目使所有人都能访问到

2022-01-24 10:15:33 3099

原创 简单博客系统 - 项目实战

(以模板Listener方式实现)前端页面展示:注册页面:用户登录:主页:博客正文:书写博客:一、简单分析使用场景简单分析一下:哪些场景需要认证后才能使用 每个场景下各自有哪些资源 分析各个资源时 动态 / 静态 初步订下各资源路径 各个资源要支持哪个方法1.首页/博客列表页 (需要认证,只展示当前登录用户列表)1)入口页 …… 判断认证;从数据库中读取数据;=》只能动态POST ...

2022-01-09 13:37:22 594

原创 Thtmeleaf模板引擎简介

Thymeleaf 是一个 Java 库。它是一个 XML/XHTML/HTML5 模板引擎,能够将一组转换应用于模板文件,以显示应用程序生成的数据和/或文本。概述:Thymeleaf 的主要目标是提供一种优雅且格式良好的模板创建方式。为了实现这一点,它基于定义在DOM(文档对象模型)上执行预定义逻辑的 XML 标记和属性,而不是将该逻辑显式编写为模板内的代码。Thymeleaf 的架构允许快速处理模板,依赖于解析文件的智能缓存,以便在执行期间...

2021-12-31 20:13:06 452

原创 什么是HTTP协议?

超文本传输​​协议(HTTP)是一个用于传输超媒体文档(例如 HTML)的应用层协议。它是为 Web 浏览器与 Web 服务器之间的通信而设计的,但也可以用于其他目的。HTTP 遵循经典的客户端-服务端模型,客户端打开一个连接以发出请求,然后等待直到收到服务器端响应。HTTP 是无状态协议,这意味着服务器不会在两个请求之间保留任何数据(状态)。尽管通常基于 TCP/IP 层,但它可以在任何可靠的传输层上使用,也就是说,该协议不会像 UDP 那样静默的丢失消息。HTTP概述HTTP...

2021-12-29 23:13:14 3380

空空如也

空空如也

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

TA关注的人

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