数据结构与算法
未读704. 二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
示例 1:
123输入:nums = [-1,0,3,5,9,12],target = 9输出: 4解释: 9 出现在nums 中并且下标为 4
示例 2:
123输入:nums = [-1,0,3,5,9,12],target = 2输出: -1解释: 2 不存在nums 中因此返回 -1
提示:
你可以假设 nums 中的所有元素是不重复的。
n 将在 [1, 10000]之间。
nums 的每个元素都将在 [-9999, 9999]之间。
💡 思路:有序数组 数组中无重复元素 ⇒ 二分查找当数组中有重复元素,使用二分查找法返回的元素下标可能不是唯一的
写二分法,区间的定义一般为两种,左闭右闭即[left, right],或者左闭右开即[left, right)。
写法一(左闭右闭):
12345678910111213141516impl Solution { ...
问题记录
未读
自动部署报错
解决:
未添加notion文章封面,添加封面即可。
JAVA学习笔记
未读由于每个微服务都有不同的地址或端口,入口不同,相信大家在与前端联调的时候发现了一些问题:
请求不同数据时要访问不同的入口,需要维护多个入口地址,麻烦
前端无法调用nacos,无法实时更新服务列表
单体架构时我们只需要完成一次用户登录、身份校验,就可以在所有业务中获取到用户信息。而微服务拆分后,每个微服务都独立部署,这就存在一些问题:
每个微服务都需要编写登录校验、用户信息获取的功能吗?
当微服务之间调用时,该如何传递用户信息?
我们可以通过网关技术解决上述问题
第一章:网关路由,解决前端请求入口的问题。
第二章:网关鉴权,解决统一登录校验和用户信息获取的问题。
第三章:统一配置管理,解决微服务的配置文件重复和配置热更新问题。
1.网关路由1.1.认识网关什么是网关?
顾明思议,网关就是网络的关口。数据在网络间传输,从一个网络传输到另一网络时就需要经过网关来做数据的路由和转发以及数据安全的校验。
更通俗的来讲,网关就像是以前园区传达室的大爷。
外面的人要想进入园区,必须经过大爷的认可,如果你是不怀好意的人,肯定被直接拦截。
外面的人要传话或送信,要找大爷。大爷帮你带给目标人 ...
JAVA学习笔记
未读在使用Nacos(注册中心)实现服务治理和利用RestTempalte实现服务远程调用时,发现远程调用的代码过于复杂:
具体参考发现并调用服务部分
该调用方式不仅复杂,并且和本地方法调用的形式差异太大。
为了统一编程体验,需要改变远程调用的开发方式,让远程调用像本地方法调用一样简单。
OpenFeign其实远程调用的关键点就在于四个:
请求方式
请求路径
请求参数
返回值类型
OpenFeign可以利用SpringMVC的相关注解来声明上述4个参数,然后基于动态代理帮我们生成远程调用的代码,而无需我们手动再编写。
快速入门引入依赖在消费者服务的pom.xml中引入OpenFeign的依赖和loadBalancer依赖:
12345678910<!--openFeign--><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId>&l ...
JAVA学习笔记
未读以RestTemplate形式发送http请求进行微服务的远程调用存在一些问题。
在微服务中,服务通常不是单实例部署,当提供者服务拥有多个实例时,手动远程调用就会有一些问题:
多实例情况下,消费者服务如何知道每一个提供者服务实例的地址?
http请求要写url地址,消费者服务到底该调用哪个实例?
如果在运行过程中,某一个提供者实例宕机,消费者服务依然在调用该怎么办?
如果并发太高,提供者服务临时多部署了N台实例,消费者服务如何知道新实例的地址?
为了解决以上问题,就必须引入注册中心的概念了。
注册中心原理在微服务远程调用的过程中,包括两个角色:
服务提供者:提供接口供其它微服务访问
服务消费者:调用其它微服务提供的接口
在大型微服务项目中,服务提供者的数量会非常多,为了管理这些服务就引入了注册中心的概念。注册中心、服务提供者、服务消费者三者间关系如下:
流程如下:
服务启动时就会注册自己的服务信息(服务名、IP、端口)到注册中心
消费者可以从注册中心订阅想要的服务,获取服务对应的实例列表(1个服务可能多实例部署)
消费者自己对实例列表负载均衡,挑选一个实例
消费者向该实例发 ...
JAVA学习笔记
未读在单体项目中,service之间存在相互调用的情况。在使用微服务架构时,服务与服务也会出现相互调用的情况。
我们需要将单体项目的本地调用改为微服务的远程调用(RPC,即Remote Produce Call)。
RestTemplateRestTemplate是spring官方提供的API,可以方便的实现Http请求的发送。
org.springframework.web.client public class RestTemplateextends InterceptingHttpAccessorimplements RestOperations
同步客户端执行HTTP请求,在底层HTTP客户端库(如JDK HttpURLConnection、Apache HttpComponents等)上公开一个简单的模板方法API。RestTemplate通过HTTP方法为常见场景提供了模板,此外还提供了支持不太常见情况的通用交换和执行方法。 RestTemplate通常用作共享组件。然而,它的配置不支持并发修改,因此它的配置通常是在启动时准备的。如果需要,您可以在启动时创建多个不同配置的 ...
JAVA学习笔记
未读引入依赖MybatisPlus提供了starter,实现了自动Mybatis以及MybatisPlus的自动装配功能,坐标如下:
12345<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.7</version></dependency>
配置在 application.yml 配置文件中添加数据库的相关配置,如:
12345678910# DataSource Configspring: datasource: driver-class-name: org.h2.Driver username: root password: test sql: init: schema-locations: classpath:db/schema-h2.sql data- ...
博客折腾手册
未读网站使用的是 安知鱼主题 ,可点击达官方文档查看具体教程。
搭建Hexo博客如果你还没有 Hexo 博客,请按照 Hexo 官方文档 进行安装、建站。
主题安装在 官方文档 中有三种安装的方式,这里使用的是npm安装。使用命令:
1npm i hexo-theme-anzhiyu
注意:此方法只支持 Hexo 5.0.0 以上版本 通过 npm 安装并不会在 themes 里生成主题文件夹,而是在 node_modules 里生成。
应用主题在安装完主题后,打开 Hexo 根目录下的 _config.yml 文件,找到以下配置项,把主题改为anzhiyu,效果如下:
1234# Extensions## Plugins: https://hexo.io/plugins/## Themes: https://hexo.io/themes/theme: anzhiyu
接下来执行以下命令安装 pug 和 stylus 渲染插件。
1npm install hexo-renderer-pug hexo-renderer-stylus --save
到这就完成了大部分了。
由于我 ...







