自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Go 语言详解

Golang(又称 Go)是一种开源的编程语言,由 Google 公司开发。Golang 语言的设计目标是提高程序员的开发效率和系统性能,融合了 C 和 Java 等语言的优点,包括静态类型、高效编译、垃圾回收、安全性等特点,同时也支持并发编程。目前,Google, Facebook,Docker,Netflix ,字节跳动等公司使用 golang 进行开发。

2023-05-12 16:06:52 606

原创 面试八股文攻略(六)——线程与进程

进程是资源调度的基本单位线程是系统调度的基本单位。

2023-05-09 16:47:09 461

原创 面试八股文攻略(五)—— 操作系统

进程管理:进程是计算机中最基本的资源,操作系统负责进程的创建、销毁、调度和同步。内存管理:操作系统负责分配和管理内存资源,保证程序能够正常运行。文件系统管理:操作系统负责文件的创建、管理和访问,提供文件的读写接口。设备管理:操作系统负责管理设备的资源,包括设备驱动程序的加载、设备资源的分配和管理。安全管理:操作系统对系统中的资源进行安全控制,包括用户身份认证、访问权限控制、进程隔离等。网络管理:操作系统负责计算机的网络连接、数据传输和路由管理。

2023-05-08 20:04:24 618

原创 【Leetcode 161】【GO】相隔为 1 的编辑距离

给定两个字符串 s 和 t ,如果它们的编辑距离为 1 ,则返回 true ,否则返回 false。字符串 s 和字符串 t 之间满足编辑距离等于 1 有三种可能的情形:往 s 中插入 恰好一个 字符得到 t从 s 中删除 恰好一个 字符得到 t在 s 中用 一个不同的字符 替换 恰好一个 字符得到 t。

2023-05-06 14:54:10 481

原创 【Leetcode 994】【GO】腐烂的橘子

在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。返回 直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。

2023-05-06 14:43:22 80

原创 面试八股文攻略(四)—— IO 模型

计算机对数据的读写处理。

2023-05-04 21:08:05 387

原创 计算机网络面试八股文攻略(三)—— HTTP协议

Http 是一种基于明文的超文本传输协议。而HTTPS协议是在HTTP协议上传输数据时加入了加密机制。下面,将根据 HTTP 协议的联通到结束的流程进行讲解。

2023-05-01 21:09:03 621

原创 计算机网络面试八股文攻略(二)—— TCP 与 UDP

LISTEN:等待从任何远端TCP 和端口的连接请求。SYN_SENT:发送完一个连接请求后等待一个匹配的连接请求。SYN_RECEIVED:发送连接请求并且接收到匹配的连接请求以后等待连接请求确认。ESTABLISHED:表示一个打开的连接,接收到的数据可以被投递给用户。连接的数据传输阶段的正常状态。FIN_WAIT_1:等待远端 TCP 的连接终止请求,或者等待之前发送的连接终止请求的确认。FIN_WAIT_2:等待远端 TCP 的连接终止请求。

2023-04-09 23:47:50 851

原创 计算机网络面试八股文攻略(一) —— OSI 七层模型

本系列将对面试中与计算机网络相关的知识进行讲解与分析。本篇为 OSI 七层网络模型的相关知识。

2023-03-29 21:26:05 704 1

原创 【Leetcode 695】【Leetcode733】【GO】深度优先遍历 DFS

本文主要分享算法——深度优先遍历。

2023-03-25 10:59:15 270

原创 【Leetcode 3】【Leetcode 567】【GO】滑动窗口

本期主要分享滑动窗口的一种实现方法即将滑动窗口内的字符以数组形式记录每个字符数。当触发左边界右移的条件时,将左指针右移到数组数据符合预期位置。这个条件的判断主要通过数组的数据多少来实现。具体实现在下面的例题中分析。

2023-03-25 10:36:14 292

原创 【Leetcode 876】【Leetcode 19】【GO】链表专题

【Leetcode 876, 19】链表题型解析

2023-03-12 13:50:34 100

原创 【Leetcode 189】轮转数组

Leetcode 189 轮转数组解题思路

2023-03-12 13:16:29 106

原创 【LeetCode 704】【Go】二分查找

Leetcode 二分算法(一)

2023-02-25 13:01:38 466

原创 【Java】Leetcode1371 每个元音包含偶数次的字符串

题目:给你一个字符串 s ,请你返回满足以下条件的最长子字符串的长度:每个元音字母,即 ‘a’,‘e’,‘i’,‘o’,‘u’ ,在子字符串中都恰好出现了偶数次。示例 1:输入:s = “eleetminicoworoep”输出:13解释:最长子字符串是 “leetminicowor” ,它包含 e,i,o 各 2 个,以及 0 个 a,u 。思路:精髓在于,用动态数组维护一个前缀的元音数目,下面的思路是将每个元音字符的奇偶情况以二进制的状态存储通过异或操作进行动态变化你可以简化为五个动

2021-01-26 10:04:55 175

原创 【Java】Leetcode208 实现Trie前缀树

题目:实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。示例:Trie trie = new Trie();trie.insert(“apple”);trie.search(“apple”); // 返回 truetrie.search(“app”); // 返回 falsetrie.startsWith(“app”); // 返回 truetrie.insert(“app”);trie.search(“app”);

2021-01-26 09:48:46 91

原创 【Java】Leetcode395 至少有K个重复字符的最长子串

题目:找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不少于 k 。输出 T 的长度。示例 1:输入:s = “aaabb”, k = 3输出:3最长子串为 “aaa” ,其中 ‘a’ 重复了 3 次。思路:递归分解数组,根据是否存在某个字符的字符数量小于 K存在则基于该字符分解最终返回最大值class Solution { public int longestSubstring(String s, int k) { if

2021-01-18 09:41:46 153

原创 【Java】Leetcode410 分割数组的最大值

题目:给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。注意:数组长度 n 满足以下条件:1 ≤ n ≤ 10001 ≤ m ≤ min(50, n)示例:输入:nums = [7,2,5,10,8]m = 2输出:18解释:一共有四种方法将nums分割为2个子数组。其中最好的方式是将其分为[7,2,5] 和 [10,8],因为此时这两个子数组各自的和的最大值为18,在所有情况中最小。思路:

2021-01-04 10:31:19 148

原创 【Java】Leetcode316 去除重复字母

题目:给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。注意:该题与 1081 https://leetcode-cn.com/problems/smallest-subsequence-of-distinct-characters 相同示例 1:输入:s = “bcabc”输出:“abc”思路:需要保证每个字符串中出现的字母留一个下来字母相对顺序不变因为要相对顺序不变,就考虑栈,因为最后结果要从头输入

2021-01-02 11:09:42 115

原创 【Java】Leetcode413 等差数列划分

题目:如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,以下数列为等差数列:1, 3, 5, 7, 97, 7, 7, 73, -1, -5, -9以下数列不是等差数列。1, 1, 2, 5, 7思路:数列是要连续的,子序列不需要逐渐递归缩短数列计算和class Solution { int sum = 0; public int numberOfArithmeticSlices(int[] A) { helper(A

2020-12-25 13:42:03 83

原创 【Java】Leetcode516 最长回文子序列

题目:给定一个字符串 s ,找到其中最长的回文子序列,并返回该序列的长度。可以假设 s 的最大长度为 1000 。示例 1:输入:“bbbab”输出:4思路:二维数组动态规划状态:该两节点间的最大回文字符串值,两节点是否相同动态转移方程:节点相同与不同时进行不同的处理初始:一个字符时数据为 1;public int longestPalindromeSubseq(String s) { int len = s.length(); int[][] dp

2020-12-25 13:39:28 203

原创 【Java】Leetcode450 删除二叉搜索树中的节点

题目:给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。说明: 要求算法时间复杂度为 O(h),h 为树的高度。示例:root = [5,3,6,2,4,null,7]key = 35/ 3 6/ \ 2 4 7给定需要删除的节点值是 3,所以我们首先找到 3 这个节

2020-12-22 14:02:36 56

原创 【Java】Leetcode131 分割回文串

题目:给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。示例:输入: “aab”输出:[[“aa”,“b”],[“a”,“a”,“b”]]思路:判断出字符串的每种回文分割回溯加入注意,判断时,将长度从小到大一次判断,注意边界要到达class Solution { public List<List<String>> partition(String s) { List<List&lt

2020-12-21 14:26:14 62

原创 【Java】Leetcode491 递增子序列

题目:给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。示例:输入: [4, 6, 7, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]思路:dfs 到底,回溯算法别用 list.indexOf() 方法在递归中巨慢class Solution { List<List<Integer>> res = new

2020-12-21 14:02:34 101

原创 【Java】Leetcode95 不同的二叉搜索树2

题目:给定一个整数 n,生成所有由 1 … n 为节点所组成的 二叉搜索树 。示例:输入:3输出:[[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树:1 3 3 2 1\ / / / \ 3 2 1 1 3 2

2020-12-19 18:13:07 105 1

原创 【Java】Leetcode96 不同的二叉搜索树

题目:给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树:1 3 3 2 1\ / / / \ 3 2 1 1 3 2/ / \ 2 1 2 3思路:

2020-12-19 18:09:09 97 1

原创 【Java】Leetcode1367 二叉树中的列表

题目:给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表。如果在二叉树中,存在一条一直向下的路径,且每个点的数值恰好一一对应以 head 为首的链表中每个节点的值,那么请你返回 True ,否则返回 False 。一直向下的路径的意思是:从树中某个节点开始,一直连续向下的路径。思路:递归判断该二叉树点为起点是否符合与二叉树的两个子节点为起点是否符合递归结束条件为链表递归完成。class Solution { public boolean isSubPath(List

2020-12-18 14:13:58 128

原创 【微服务】社区项目微服务改造错误记录—— 多模块测试

概述:多模块测试时,引入其他的 client 会导致无法找到bean生成 fail to load Application 错误解决方案:放大包的扫描范围@EnableFeignClients(basePackages = {"com.community"})public class UserTest{....解决方案详细链接...

2020-12-07 08:41:09 67

原创 【微服务】社区项目微服务改造错误记录——API与SVC路由

问题概述路由方面,首先是从 Api 中的 client 创建出问题再到了 404 又到了 500,最后又是 404 ,记录一下过程问题。一. Client 创建问题这个问题的错误在于,定义了 @FeignClient 参数后,对于方法参数的要求变细了Post 和 Get 方法都需要指定的参数注解Post 方法参数必须只有一个 @RequestBody即,你的多个参数必须封装到一个实体中我说别人的项目怎么一堆 Dto个人偷了个懒,将数个 Dto 给合并了,因为是练手项目嘛下面展示一个 De

2020-12-03 09:46:18 251

原创 【Java】Leetcode1039 多边形三角剖分

题目:给定 N,想象一个凸 N 边多边形,其顶点按顺时针顺序依次标记为 A[0], A[i], …, A[N-1]。假设您将多边形剖分为 N-2 个三角形。对于每个三角形,该三角形的值是顶点标记的乘积,三角剖分的分数是进行三角剖分后所有 N-2 个三角形的值之和。返回多边形进行三角剖分后可以得到的最低分。示例 1:输入:[1,2,3]输出:6解释:多边形已经三角化,唯一三角形的分数为 6。思路:类似戳气球题目但与其相反,选择最小值解题思路类似,将范围从小到大计算,即 i j 之间的间距

2020-12-02 09:23:06 270

原创 【微服务】Spring 多模块下的整体路由构建

综述今天在对之前的 community 项目进行微服务化改造。记录一下创建整个微服务项目需要注意的点创建微服务项目时一个大的父 Spring 项目包含许多小的 子 Spring 项目创建时使用正常的 Spring initializr 即可但需要注意对 artifactId ,groupId,version 三个参数的设置,这关系到后续的模块路由另,api 模块和 svc 模块的包名需配置相同,方便引用。创建完父项目后,需要对父项目的 pom 文件进行修改主要是配置子项目的参数与子项目

2020-11-30 16:27:15 176

原创 【Java】Leetcode1230

题目:有一些不规则的硬币。在这些硬币中,prob[i] 表示第 i 枚硬币正面朝上的概率。请对每一枚硬币抛掷 一次,然后返回正面朝上的硬币数等于 target 的概率。示例 1:输入:prob = [0.4], target = 1输出:0.40000思路:动态规划题类似梯子题,通过梯子可以到达任意的高的楼,题号忘了一个状态是硬币数量,另一个是当前正面朝上的数量初始化好正面朝上为 0 情况下的数据再从硬币数量 1 开始计算概率和,得到最终结果class Solution {

2020-11-30 15:34:15 190

原创 【Java】Leetcode1664 生成平衡数组的方案数

题目:给你一个整数数组 nums 。你需要选择 恰好 一个下标(下标从 0 开始)并删除对应的元素。请注意剩下元素的下标可能会因为删除操作而发生改变。比方说,如果 nums = [6,1,7,4,1] ,那么:选择删除下标 1 ,剩下的数组为 nums = [6,7,4,1] 。选择删除下标 2 ,剩下的数组为 nums = [6,1,4,1] 。选择删除下标 4 ,剩下的数组为 nums = [6,1,7,4] 。如果一个数组满足奇数下标元素的和与偶数下标元素的和相等,该数组就是一个 平衡数组

2020-11-29 16:54:28 193

原创 【Java】Leetcode935 骑士拨号器

题目:骑士按中国象棋的日字型移动这一次,我们将 “骑士” 放在电话拨号盘的任意数字键(如上图所示)上,接下来,骑士将会跳 N-1 步。每一步必须是从一个数字键跳到另一个数字键。每当它落在一个键上(包括骑士的初始位置),都会拨出键所对应的数字,总共按下 N 位数字。你能用这种方式拨出多少个不同的号码?因为答案可能很大,所以输出答案模 10^9 + 7。思路:每个位置跳到下一个位置的方位是固定的,所以只需要统计每个位置的数量即可然后加起来tips:创建销毁数组时间耗费较大,故直接创建二维数组

2020-11-28 15:48:39 70

原创 【微服务】Staffjoy 项目源码解析(十)—— Faraday 模块

一. 架构分析Faraday 模块 属于网关,其代码结构与普通的 MVC 设计不同下面为大致功能分配图请将上面两张表互相参照着理解路由解析:ReverseProxyFilter路由映射表:MappingsProviderHttp映射表:HttpClientProvider请求截获器:PreForwardRequestInterceptor响应截获器:PostForwardResponseInterceptor请求转发:RequestForwarder负载均衡:LoadBalancer

2020-11-23 18:03:09 555

原创 【微服务】Staffjoy 项目源码分析(九)—— Web 模块()

一. 架构设计今天试一试竖版构图,从右到左嗷。右侧是页面的构造类,每个类对应一个具体类的构造方法,Page 则为一个标准类模板PageFactory 中存储了诸多类的调用方法,调用后反应对应数据对象其余差不多,具体看下面的分析二. 代码解析具体页面类构造方法展示一个,其余大同小异 @Builder(builderMethodName = "childBuilder") public ActivatePage(String title,

2020-11-22 10:53:54 260

原创 【Java】Leetcode1277 统计全为1的正方形子矩阵

一. 题目给你一个 m * n 的矩阵,矩阵中的元素不是 0 就是 1,请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数。示例 1:输入:matrix =[[0,1,1,1],[1,1,1,1],[0,1,1,1]]输出:15解释:边长为 1 的正方形有 10 个。边长为 2 的正方形有 4 个。边长为 3 的正方形有 1 个。正方形的总数 = 10 + 4 + 1 = 15.二. 思路因为是正方形,所以和全为1的矩形不同只需判断三个边角中的最小值即可。得到新的

2020-11-21 16:00:09 269

原创 【微服务】Staffjoy 项目源码解析(八)—— WhoAmI 模块

一. 架构设计简单明了,没啥好说的二. 代码分析方法也不多,就一个判断权限的方法需要分析。即 findWhoIAm 方法代码如下 public IAmDto findWhoIAm(String userId) { IAmDto iAmDto = IAmDto.builder() .userId(userId) .build(); GetWorkerOfResponse workerOfRes

2020-11-21 10:05:58 120

原创 【微服务】Staffjoy 项目源码解析(七)—— Company 模块(2)

一. 模型分析因为 Company 模块较复杂,数据模型有七个,故进行详细分析,以促进理解。七个模型包括额外的 (Account)账户 模型的关系如上图所示,下面进行具体分析Company:公司 数据模型,是整个数据结构的基础。Admin:管理员 数据模型,与公司是多对一的关系,与账户是一对一的关系属于账户和公司的连接桥梁查找时是通过 公司 id 和 账户 id 找到对应的 员工目录(Directory)数据作为 Admin 调用Directory:员工目录 数据模型是连接账户与公司

2020-11-21 09:18:54 111

原创 【微服务】Staffjoy 项目源码解析(六)—— Company 模块

一. 架构设计这个 Company 模块的架构复杂度相较之前的情况又上了一筹。上图估计很难看清楚,还是我去掉了 AppConfig 之类的不关键模块的基础上。但还是有层次可分。除了设定好的 Model 类外,类间可大致分为四层。最底层,数据库接口层,提供七种数据对象与数据库的交互。然后是 ServiceHelper 和 ShiftHelper 这俩辅助服务类。特别是 ServiceHelper,可以说是其他 Service 的基础。而 PermissionService 则是在每个 Con

2020-11-19 19:10:20 157

空空如也

空空如也

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

TA关注的人

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