自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JAVA练习263-数组中重复的数据

题目概述给你一个长度为 n 的整数数组 nums ,其中 nums 的所有整数都在范围 [1, n] 内,且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数,并以数组形式返回。你必须设计并实现一个时间复杂度为 O(n) 且仅使用常量额外空间的算法解决此问题。示例 1:输入:nums = [4,3,2,7,8,2,3,1]输出:[2,3]示例 2:输入:nums = [1,1,2]输出:[1]示例 3:输入:nums = [1]输出:[]提示:n == n

2022-05-08 15:32:23 888

原创 Kafka学习-基础

一.Kafka 简介Apache Kafka是一个分布式的,基于发布/订阅的消息系统。最初由LinkedIn开发,是用Scala和Java语言编写的。随后于2011年初开源,并捐赠给了Apache Software Foundation.目前,Kafka被广泛使用于各类大型企业系统、银行系统和互联网系统中,用于分布式消息处理和流式数据处理。二.Kafka 基础概念生产者和消费者:消息的发送者叫 Producer,消息的使用者和接受者是 Consumer。生产者将数据发送到 Kafka 集

2022-05-06 19:00:07 490

原创 Kafka学习-消息队列(MQ)

一.消息队列(MQ)概述消息队列(Message Queue)是一种进程间通信或同一进程的不同线程间的通信方式,主要解决应用耦合、异步消息、流量削峰等问题。是大型分布式系统不可缺少的中间件。二.MQ使用场景一:依赖解耦场景:当系统A中在订单创建后,需要通知 B 系统和 C 系统,然后 B 系统和 C 系统再做出相应的处理。三.MQ使用场景二:异步处理场景:从第三方平台中接收数据,数据中包含了很多的图片,将保存图片到耗时比较久,后续还有计分数等耗时比较久的操作。四.MQ使用

2022-05-06 18:51:44 1029

原创 Redis学习-基础

一.Redis 简介Redis(Remote Dictionary Server)是一个使用 ANSI C 语言编写的开源 key-value 存储系统。它具备以下特点:高性能:阿里云 Redis 1C 1GB 主从版能够提供 80000 QPS 的吞吐量。 数据类型丰富:string、list、set、zset(sorted set)、hash。 原子:Redis 的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过 MULTI

2022-05-06 18:42:40 404

原创 RPC学习-RPC远程调用(Thrift)

一.Thrift RPC 调用过程对于客户端而言,Thrift RPC 框架提供接口代理类,调用 RPC 接口,同调用本地方法一样,不需要感知如何通过网络 IO 调用其他服务器上实现的方法并拿到结果。 对于服务端而言,实现 RPC 接口同实现本地定义的 interface 一样,只需要编写具体业务实现逻辑,不需要关注这个方法如何能够被其他服务器所使用。二.Thrift RPC 框架介绍Thrift 是 Facebook 于 2007 年开发的跨语言的 RPC 框架,支持 Java、Node.

2022-05-06 17:25:57 1542

原创 RPC学习-浅谈

一.序言一个企业级系统的运行链路是怎样的 - 以电商下单流程为例以分层视角来看企业系统架构二.什么是 RPC1.RPC(Remote Procedure Call)远程过程调用,客户端通过网络访问其他服务器上服务端提供的函数2.RPC 的用途对于客户端而言,像调用本地函数一样,便携地通过网络调用其他服务器上程序提供的服务 对于服务端而言,像提供本地函数一样,便携提供服务给网络上其他服务器上的客户端调用三.为什么使用 RPC一个完整的业务流程由多个服务节点协作..

2022-05-06 16:40:38 177

原创 Spring学习-Spring项目规范

一.分层规范概述一个常见的基于 Spring 搭建起来的后端服务大体如下:在当前工程中,现在除了启动类和配置文件,目前还没有什么功能。从工程的角度上来看,需要构建好一个分层体系,来承载我们的业务二.分层规范视图三. API 层1.API 层开发视图2.API 层主要承接前端请求,对外提供的协议主要包括 Http 和 Thrift 两大类协议,这里先以 Http 接口为例,介绍 API 层的设计四.Biz 层1.Biz 层开发视图2. Biz

2022-05-06 16:18:44 1136

原创 Spring学习-MyBatis及项目实战

一.MySQL准备这里先做一些准备,让 Java 后台能够连接到 MySQL 数据库上。1.创建数据库方法1:通过 MySQL 官方自带的 MySQLWorkbench 来创建新 MySQL Schema方法2:通过 DDL SQL的方式创建新 MySQL SchemaCREATE SCHEMA `test_db` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;2.创建数据表方法1:通过 MySQL 官方自带的 MySQ

2022-05-06 15:57:01 655

原创 Spring学习-Spring Tx

一.概述Spring Tx 全称为 Spring Transaction Management(Spring 事务管理),是 Spring 为 DB 事务管理提供过的一种便捷的接入方式。二.导入依赖Step1:在 pom.xml 中导入 spring-tx 依赖Step:刷新 Maven 依赖,可以看到 spring-tx 联动依赖 spring-core 和 spring-beans 库三.Spring 目前常用的事务两种机制注解式:通过 @Transactional

2022-05-06 11:25:57 4924

原创 Spring学习-WebMVC

Spring WebMVC 通过Controller类和框架注解,将方法封装为 Web 接口,为前端或其他系统提供信息交互通道。Http协议相关的注解 功能 场景 实践 @Controller 支持带页面的返回形式 存在后端页面渲染的系统 实际中使用不多,不推荐 @RestController 纯数据返回的形式(JSON or XML) 前后端分离的系统,只返回数据 广泛使用 @RequestMapping 将输入的URL映射到对应

2022-05-06 11:02:40 124

原创 JAVA练习262-最近的请求次数

题目概述写一个RecentCounter类来计算特定时间范围内最近的请求。请你实现 RecentCounter 类:RecentCounter() 初始化计数器,请求数为 0 。 int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回过去 3000 毫秒内发生的所有请求数(包括新请求)。确切地说,返回在 [t-3000, t] 内发生的请求数。保证 每次对 ping 的调用都使用比之前更大的 t 值。示例 1:输入:["Rece..

2022-05-06 09:28:08 177

原创 JAVA练习261-乘积小于 K 的子数组

题目概述给你一个整数数组 nums 和一个整数 k ,请你返回子数组内所有元素的乘积严格小于 k 的连续子数组的数目。示例 1:输入:nums = [10,5,2,6], k = 100输出:8解释:8 个乘积小于 100 的子数组分别为:[10]、[5]、[2],、[6]、[10,5]、[5,2]、[2,6]、[5,2,6]。需要注意的是 [10,5,2] 并不是乘积小于 100 的子数组。示例 2:输入:nums = [1,2,3], k = 0输出:0提示:1 <=

2022-05-05 11:30:40 228

原创 Spring学习-Spring Boot快速集成组件

一.官方组件看一个技术最好的方式就是去看它的官网https://spring.io,了解它最核心的目标和用途是是什么打开 Spring 的官网项目介绍:https://spring.io/projects,可以康到如图不同的组件模块,其中部分模型(套件)还包括很多具体的子模块,例如:在 Spring Data 下还包括几十个不同的组件,每一个组件都会有相应的介绍和学习资源,保持知识更新的最好方式就是去官网学习。二.Spring Boot 相对于传统的 Spring 带来的好处1...

2022-05-02 17:20:54 665

原创 Spring学习-AOP

一.什么是AOP在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。(来自百度)二.Spring动态代理之CGLIB示例public class

2022-05-01 19:38:18 314

原创 Spring学习-Spring IoC容器

一.Spring IoC 介绍IoC(Inversion of Control):控制反转Java 实例的生命周期,原先由程序员自行手动管理,转交给Spring容器进行自动化的管理DI(Dependency Injection):依赖注入当一个类A的实例中需要依赖类B的实例,而B的实例中又需要依赖类C的实例,如此往复,从而实现将不同类之间的相互依赖进行构建的过程,叫做依赖注入。DI 是 IoC 的具体实现方式:手动设置对象关联:通过IoC容器管理对象关联:

2022-05-01 18:56:49 530

原创 JAVA练习260-两棵二叉搜索树中的所有元素

题目概述给你 root1 和 root2 这两棵二叉搜索树。请你返回一个列表,其中包含 两棵树 中的所有整数并按 升序 排序。示例 1:输入:root1 = [2,1,4], root2 = [1,0,3]输出:[0,1,1,2,3,4]示例 2:输入:root1 = [1,null,8], root2 = [8,1]输出:[1,1,8,8]提示:每棵树的节点数在[0, 5000] 范围内 -10^5<= Node.val <= 10^5题目来源:..

2022-05-01 18:05:29 1101

原创 JAVA练习259-最小差值 I

题目概述给你一个整数数组 nums,和一个整数 k 。在一个操作中,您可以选择 0 <= i < nums.length 的任何索引 i 。将 nums[i] 改为 nums[i] + x ,其中 x 是一个范围为 [-k, k] 的整数。对于每个索引 i ,最多 只能 应用 一次 此操作。nums 的 分数 是 nums 中最大和最小元素的差值。在对 nums 中的每个索引最多应用一次上述操作后,返回 nums 的最低 分数 。示例 1:输入:nums = [1], k

2022-04-30 22:59:46 469

原创 JAVA练习258-按奇偶排序数组

题目概述给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。返回满足此条件的 任一数组 作为答案。示例 1:输入:nums = [3,1,2,4]输出:[2,4,3,1]解释:[4,2,3,1]、[2,4,1,3] 和 [4,2,1,3] 也会被视作正确答案。示例 2:输入:nums = [0]输出:[0]提示:1 <= nums.length <= 5000 0 <= nums[i] <= 5000

2022-04-28 08:54:02 816

原创 JAVA练习257-三维形体投影面积

题目概述在 n x n 的网格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 1 x 1 x 1 立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上。现在,我们查看这些立方体在 xy 、yz 和 zx 平面上的投影。投影 就像影子,将 三维 形体映射到一个 二维 平面上。从顶部、前面和侧面看立方体时,我们会看到“影子”。返回 所有三个投影的总面积 。示例 1:输入:[[1,2],[3,4]]输出:17解释:这里有该形体在三

2022-04-26 09:21:32 636

原创 JAVA练习256-随机数索引

题目解析给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。注意:数组大小可能非常大。 使用太多额外空间的解决方案将不会通过测试。示例:int[] nums = new int[] {1,2,3,3,3};Solution solution = new Solution(nums);// pick(3) 应该返回索引 2,3 或者 4。每个索引的返回概率应该相等。solution.pick(3);// pick(1) 应该

2022-04-25 09:38:40 433

原创 JAVA练习255-二进制间距

题目概述给定一个正整数 n,找到并返回 n 的二进制表示中两个 相邻 1 之间的 最长距离 。如果不存在两个相邻的 1,返回 0 。如果只有 0 将两个 1 分隔开(可能不存在 0 ),则认为这两个 1 彼此 相邻 。两个 1 之间的距离是它们的二进制表示中位置的绝对差。例如,"1001" 中的两个 1 的距离为 3 。示例 1:输入:n = 22输出:2解释:22 的二进制是 "10110" 。在 22 的二进制表示中,有三个 1,组成两对相邻的 1 。第一对相邻的 1 中,两个 1

2022-04-24 09:08:03 166

原创 JAVA练习254-旋转函数

题目概述给定一个长度为 n 的整数数组nums。假设arrk是数组nums顺时针旋转 k 个位置后的数组,我们定义nums的 旋转函数F为:F(k) = 0 * arrk[0] + 1 * arrk[1] + ... + (n - 1) * arrk[n - 1]返回F(0), F(1), ..., F(n-1)中的最大值。生成的测试用例让答案符合32 位 整数。示例 1:输入: nums = [4,3,2,6]输出: 26解释:F(0) = (0 *...

2022-04-22 21:19:03 836

原创 JAVA练习253-山羊拉丁文

题目概述给你一个由若干单词组成的句子sentence ,单词间由空格分隔。每个单词仅由大写和小写英文字母组成。请你将句子转换为 “山羊拉丁文(Goat Latin)”(一种类似于 猪拉丁文- Pig Latin 的虚构语言)。山羊拉丁文的规则如下:如果单词以元音开头('a', 'e', 'i', 'o', 'u'),在单词后添加"ma"。例如,单词 "apple" 变为 "applema" 。 如果单词以辅音字母开头(即,非元音字母),移除第一个字符并将它放到末尾,之后再添加"ma"。例如..

2022-04-21 11:50:10 125

原创 Spring学习-入门

一. Spring 简介Spring 是一个企业级应用开源框架,为现代Java企业级应用提供了一个全面的编程方式和配置模型。其特点是为我们的应用程序提供基础设施,使我们的开发人员专注业务逻辑,减少对应用部署的环境依赖。Spring 还是一个大规模的企业级应用开发的 工具箱,提供了Wob MVC、JDBC Template、TX事务管理以及 ORM 集成等组件,还能很方便的 整合 众多著名的第三方框架和类库,减少在同一领域中不同的技术之间的偏差和壁垒。二. Spring 能做什么快速轻松地构建

2022-04-19 10:10:39 616

原创 JAVA练习252-字符的最短距离

题目概述给你一个字符串 s 和一个字符 c ,且 c 是 s 中出现过的字符。返回一个整数数组 answer ,其中 answer.length == s.length 且 answer[i] 是 s 中从下标 i 到离它 最近 的字符 c 的 距离 。两个下标 i 和 j 之间的 距离 为 abs(i - j) ,其中 abs 是绝对值函数。示例 1:输入:s = "loveleetcode", c = "e"输出:[3,2,1,0,1,0,0,1,2,2,1,0]解释:字符 'e

2022-04-19 09:11:41 142

原创 JAVA练习251-字典序排数

题目概述给你一个整数 n ,按字典序返回范围 [1, n] 内所有整数。你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。示例 1:输入:n = 13输出:[1,10,11,12,13,2,3,4,5,6,7,8,9]示例 2:输入:n = 2输出:[1,2]提示:1 <= n <= 5 * 10^4题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lexicographical-n

2022-04-18 08:37:05 510

原创 JAVA练习250-最常见的单词

题目概述给定一个段落 (paragraph) 和一个禁用单词列表 (banned)。返回出现次数最多,同时不在禁用列表中的单词。题目保证至少有一个词不在禁用列表中,而且答案唯一。禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。示例:输入:paragraph = "Bob hit a ball, the hit BALL flew far after it was hit."banned = ["hit"]输出: "ball"解释:"hi..

2022-04-17 09:56:56 108

原创 JAVA练习249-最大回文数乘积

题目概述给定一个整数 n ,返回 可表示为两个 n 位整数乘积的 最大回文整数 。因为答案可能非常大,所以返回它对 1337 取余 。示例 1:输入:n = 2输出:987解释:99 x 91 = 9009, 9009 % 1337 = 987示例 2:输入: n = 1输出: 9提示:1 <= n <= 8题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/largest-palindrome-prod

2022-04-16 15:16:07 406

原创 JAVA练习248-迷你语法分析器

题目概述给定一个字符串 s 表示一个整数嵌套列表,实现一个解析它的语法分析器并返回解析的结果 NestedInteger 。列表中的每个元素只可能是整数或整数嵌套列表示例 1:输入:s = "324",输出:324解释:你应该返回一个 NestedInteger 对象,其中只包含整数值 324。示例 2:输入:s = "[123,[456,[789]]]",输出:[123,[456,[789]]]解释:返回一个 NestedInteger 对象包含一个有两个元素的嵌套列表:

2022-04-15 10:11:48 848

原创 JAVA练习247-最富有客户的资产总量

题目概述给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i​​​​​ 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。示例 1:输入:accounts = [[1,2,3],[3,2,1]]输出:6解释:第 1 位客户的资产总量 = 1 + 2 + 3 = 6第 2 位客户的资产总量 = 3 + 2 + 1 = 6两

2022-04-14 08:58:40 264

原创 MySQL学习-索引的使用

一.常见索引类型1.主键索引主键索引是一种特殊的唯一索引,不允许有空值,在创建主键时会自动创建。ALTER TABLE `table_name` ADD PRIMARY KEY(`column`);主键索引采用有以下原则:采用一个没有业务用途的自增属性列作为主键。 主键字段值总是不更新,只有新增或者删除两种操作。 不选择会动态更新的类型。2.普通索引最基本的索引,没有任何限制。ALTER TABLE `table_name` ADD INDEX index_name..

2022-04-13 09:52:25 1128

原创 JAVA练习246-O(1) 时间插入、删除和获取随机元素

题目概述实现RandomizedSet 类:RandomizedSet() 初始化 RandomizedSet 对象 bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true ;否则,返回 false 。 bool remove(int val) 当元素 val 存在时,从集合中移除该项,并返回 true ;否则,返回 false 。 int getRandom() 随机返回现有集合中的一项(测试用例保证调用此方法时集合中至少存在一个元素)。每个元

2022-04-13 09:06:30 817

原创 JAVA练习245-写字符串需要的行数

题目概述我们要把给定的字符串 S从左到右写到每一行上,每一行的最大宽度为100个单位,如果我们在写某个字母的时候会使这行超过了100 个单位,那么我们应该把这个字母写到下一行。我们给定了一个数组widths,这个数组widths[0] 代表 'a' 需要的单位,widths[1] 代表 'b' 需要的单位,...,widths[25] 代表 'z' 需要的单位。现在回答两个问题:至少多少行能放下S,以及最后一行使用的宽度是多少个单位?将你的答案作为长度为2的整数列表返回。示例 1:...

2022-04-12 09:16:17 97

原创 JAVA练习244-统计各位数字都不同的数字个数

题目概述给你一个整数 n ,统计并返回各位数字都不同的数字 x 的个数,其中 0 <= x < 10^n 。示例 1:输入:n = 2输出:91解释:答案应为除去 11、22、33、44、55、66、77、88、99 外,在 0 ≤ x < 100 范围内的所有数字。示例 2:输入:n = 0输出:1提示:0 <= n <= 8题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cou.

2022-04-11 18:37:23 1054

原创 JAVA练习243-唯一摩尔斯密码词

题目概述国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串,比如:'a' 对应 ".-" , 'b' 对应 "-..." , 'c' 对应 "-.-." ,以此类推。为了方便,所有 26 个英文字母的摩尔斯密码表如下:[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-".

2022-04-10 11:06:35 328

原创 JAVA练习242-到达终点

题目概述给定四个整数 sx , sy ,tx 和 ty,如果通过一系列的转换可以从起点 (sx, sy) 到达终点 (tx, ty),则返回 true,否则返回 false。从点 (x, y) 可以转换到 (x, x+y) 或者 (x+y, y)。示例 1:输入: sx = 1, sy = 1, tx = 3, ty = 5输出: true解释:可以通过以下一系列转换从起点转换到终点:(1, 1) -> (1, 2)(1, 2) -> (3, 2)(3, 2) -&g

2022-04-09 16:58:33 769

原创 JAVA练习241-N 叉树的层序遍历

题目概述给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。示例 1:输入:root = [1,null,3,2,4,null,5,6]输出:[[1],[3,2,4],[5,6]]示例 2:输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14

2022-04-08 09:31:52 447

原创 JAVA练习240-旋转字符串

题目概述给定两个字符串, s 和 goal。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true 。s 的 旋转操作 就是将 s 最左边的字符移动到最右边。例如, 若 s = 'abcde',在旋转一次之后结果就是'bcdea' 。示例 1:输入: s = "abcde", goal = "cdeab"输出: true示例 2:输入: s = "abcde", goal = "abced"输出: false提示:1 <= s.length, go

2022-04-07 08:35:56 438

原创 JAVA练习239-最小高度树

树是一个无向图,其中任何两个顶点只通过一条路径连接。 换句话说,一个任何没有简单环路的连通图都是一棵树。给你一棵包含 n 个节点的树,标记为 0 到 n - 1 。给定数字 n 和一个有 n - 1 条无向边的 edges 列表(每一个边都是一对标签),其中 edges[i] = [ai, bi] 表示树中节点 ai 和 bi 之间存在一条无向边。可选择树中任何一个节点作为根。当选择节点 x 作为根节点时,设结果树的高度为 h 。在所有可能的树中,具有最小高度的树(即,min(h))被称为 最小..

2022-04-07 00:00:10 247

原创 JAVA练习238-二进制表示中质数个计算置位

题目概述给你两个整数 left 和 right ,在闭区间 [left, right] 范围内,统计并返回 计算置位位数为质数 的整数个数。计算置位位数 就是二进制表示中 1 的个数。例如, 21的二进制表示10101有 3 个计算置位。示例 1:输入:left = 6, right = 10输出:4解释:6 -> 110 (2 个计算置位,2 是质数)7 -> 111 (3 个计算置位,3 是质数)9 -> 1001 (2 个计算置位,2 是质数)10...

2022-04-05 10:00:26 384 1

空空如也

空空如也

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

TA关注的人

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