自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis的基础知识

文章目录Redis的基础知识一些基本命令Redis的执行效率为什么那么快?以及为什么Redis是单线程的?Redis的基础知识一些基本命令redis默认有16个数据库,在redis.conf配置文件中可以看到,如下图:默认使用的是第0个,可以使用select切换数据库!如下图:set命令可以存储键格式set key value,get命令可以取出指定的键对应的值格式get key,如下图:dbsize命令可以查看当前数据库的大小,也即是当前数据库里面存放了多少条数据,如下图:keys

2021-02-17 12:21:01 2658 10

原创 MyBatisPlus中向数据库表中插入数据,MyBatisPlus中使用@TableId注解来实现自增序列id自动插入的功能

MyBatisPlus的@TableId注解的使用这个注释主要用于对应数据库表的实体类中的主键属性。写法:@TableId(value=“数据库主键字段”,type = IdType.六种类型之一)例如:@TableId(value=“user_id”,type = IdType.AUTO )1、注解中type的值的含义 //IdType.ID_WORKER_STR 默认的;底层使用了雪花算法;类型为Integer //IdType.AUTO 数据库自增;数据库上也要勾上自增

2021-01-12 14:36:40 28439 5

原创 SpringSecurity用户认证设置用户名和密码的三种方式

文章目录SpringSecurity用户认证设置用户名和密码的三种方式首先明白几个单词的意思:SpringSecurity默认的用户认证1.通过配置文件进行用户认证2.通过配置类进行用户认证There is no PasswordEcoder mapped for the id "null"异常异常出现原因解决办法在内存中存取密码方式PasswordEncoder接口3.通过自定义编写用户细节实现类(需要查询数据库)进行用户认证SpringSecurity用户认证设置用户名和密码的三种方式首先明白几个单

2020-12-20 16:52:55 6207 2

原创 SpringCloud的Config配置中心,为什么要分Server服务端和Client客户端?

它的思想是所有微服务的配置文件都放到git远程服务器上,让Server服务端对接git访问配置文件,让Client客户端对接Server服务端访问配置文件,为什么要中间加一层server呢?直接让client客户端访问git远程服务器中的配置文件不可以吗?但是如果是使用server对接git远程仓库,那么远程仓库的配置发生改变之后,server服务端会立马的检测到;而client客户端又是对接的server服务器端,因此也就相当于是当远程服务器里面的配置发生改变之后客户端微服务会立马检测到。

2024-05-22 12:11:18 224

原创 SpringCloud微服务调用的超时机制和CompletableFuture异步调用的超时机制原理一样吗?

如果主任务没有在规定的时间内完成,定时任务就会触发并执行一个操作,这个操作会中断正在执行的异步任务,并且将异常 TimeoutException 传递给后续的操作。使用SpringCloud的OpenFeign进行微服务调用的时候,如果A微服务去调用B服务的方法,1s内没有返回结果,就相当于超时了,A微服务会抛出异常。而当我们使用CompletableFuture异步执行方法的时候,也可以设置最大的等待时间,比如说设置2s,那么当前方法在2s内如果没有接收到异步方法的返回结果的话,就会抛出异常。

2024-05-22 10:23:52 234

原创 SpringCloud微服务之间可以相互调用的底层原理

综上所述,Spring Cloud微服务调用底层主要是通过HTTP或HTTPS协议进行的,这是因为HTTP协议具有通用性、灵活性和成熟度高等优点。尽管相对于TCP协议来说,HTTP的效率可能稍低,但在大多数应用场景下,这种效率差异是可以忽略不计的,特别是在没有极高并发要求的情况下。一种是通过OpenFeign调用。SpringCLoud中的一个微服务调用另外一个微服务时,底层其实是在当前微服务当中发送了一个http网络请求,这个请求可以访问到另外一个微服务的某个方法。

2024-05-22 10:11:23 205

原创 Ribbon负载均衡(自己总结的)

其实不是的,我们的多个请求来了还是给一个Eureka-Server服务器,但是我们会把这些请求分发给一个spring.application.name微服务大类里面的多个instance-id微服务实例,以减轻多个请求如果都给同一个instance-id微服务实例造成的负担。因为我们idea里面的每个微服务模块在注册到Eureka注册中心的时候,spring.application.name微服务的名字,也就是serviceid是可以一样的,但是每个微服务的instace-id实例id是不可以一样的。

2024-05-21 17:27:49 636

原创 Eureka服务注册与发现中心

我们在一个项目中通常会有各种各样的模块服务,比如说在一个电商项目中可能会有订单模块服务、付款模块服务、发货模块服务,实际项目中的每个模块服务在Eureka服务注册与发现中心都是对应client客户端;而对于Eureka服务注册与发现中心的server服务端,可以理解成是一个独立于项目之外的一个管理中心,这个管理中心不属于我们的项目模块,但它可以用来管理我们实际的项目中的各个模块之间的微服务。

2024-05-21 12:34:12 805

原创 @RequestBody注解

http请求中,在http报文的请求体中,通常会包含多个传输的参数信息(GET请求除外),可能这些参数信息会有很多,但是对应到我们Controller控制器中接收http请求的方法,我们并不想要在方法里面写多个参数怎么办呢?而对于GET请求来说,它不是用来传输数据的,它主要是用来获取数据的,虽然没有命令禁止参数信息写在请求体里面,但是我们一般不会在请求体里面写东西,对于GET请求来说一般把它的参数信息写在请求行的uri里面。

2024-05-20 17:13:10 245

原创 @RequestMapping、@ResponseBody、@Controller注解的结合使用

客户端发送过来的请求,服务端必须要有个接收的方法,那使用哪些方法接收呢?就是使用加有@RequestMapping注解的方法接收。比如我们想让一个方法接收url为/getStudent,方法类型为get方法的请求,那么我们定义注解的时候就要写成 @RequestMapping(method = RequestMethod.GET, path = “/getStudent”)。或者我们也可以直接写成@GetMapping(path = “/getStudent”)

2024-05-20 12:07:01 210

原创 以及Spring中为什么会出现IOC容器?@Autowired和@Resource注解?

首先说一下在Spring之前,我们的程序里面是没有IOC容器的,这个时候我们如果想要得到一个事先已经定义的对象该怎么得到呢?比如我们在想要得到一个事先定义的Person对象。首先我们需要先在person.xml文件里面提前配置生成我们的Person对象,如下:

2024-05-20 11:22:41 677

原创 Netty中的流式传输

比如现在有一个场景,客户端想要往服务端冲刷10个字节的数据,然后客户端会先把10个字节的数据冲刷到网络中,接着网络会把数据冲刷到服务端应用程序中,第一个接收网络中的数据的处理器就是解码处理器,但是因为Netty的设计考虑到了TCP网络中的流式数据传输,所以Netty也要能够支持流式数据传输,因此Netty就不会一次把网络中的数据全部接收,Netty可以选择一次只接收网络中的一部分数据。但是网络冲刷数据到应用程序的解码处理器的时候,会把网络中的所有数据都一次性的冲刷到解码处理器的ByteBuf中吗?

2024-05-19 00:32:08 590

原创 Netty中为什么要优雅关闭线程池?以及异步关闭通道的时候什么时候会得到异步结果关闭通道?

先看喜爱具体的代码 如下图:可以看到我们最终会给两个线程池执行一个优雅关闭方法shutdownGracefully,那么为什么要优雅的关闭呢?优雅的关闭的时候是怎么个优雅法,它内部是怎么执行?都进行了哪些相关操作?所谓的优雅的关闭线程池就是说,如果线程池中的任何一个线程的任务队列中还有任务,那么这个时候我就不会关闭线程池,只有当线程池中的所有线程的任务队列的任务都执行完毕了,那么我才会关闭线程池。

2024-05-18 23:27:40 683

原创 Netty入站和出站的时候一定要对message消息进行解码和编码操作

Netty入站和出站的时候一定要对message消息进行解码和编码操作,要确保消息从应用程序流入网络的时候被编码成了二进制,以及消息从网络流入应用程序的时候要确保二进制被解码成了正确的类型。因为我们的数据在网络中一定是通过二进制的形式传输的,因此我们如果仅仅冲刷数据,比如说冲刷一个字符串,那么这个数据是不能被冲刷到网络中的,会冲刷失败,后续我们服务器端是读取不到的。

2024-05-18 21:39:34 861

原创 Netty中对于ChannelPipeline责任链的个人理解总结,以及对于客户端和服务端的Channel的理解

在Netty中,Channel表示是对端的连接。比如说如果是在服务器端,那么每一个客户端来连接自己,服务器就会为这个客户端创建一个Channel,所以对于服务器来说一个Channel就表示一个客户端;如果是在客户端,那么客户端可能需要连接多台服务器,客户端每连接一个服务器,就会为这个服务器创建一个对应的Channel,所以对于客户端来说也可以把一个Channel理解成一个服务器。

2024-05-18 13:07:51 980

原创 为什么会出现线程?为什么会出现多线程?之前没有现成的时候是有什么弊端?

线程是cpu调度的最小单位,我是这样理解的,cpu先去调度一个进程,然后给进程一个执行命令,这个时候进程再去调度里面的某个线程,用过这个线程去执行计算机里面的某个任务。一个进程里面的多个线程共用进程里面的内存资源,所以多线程可能会出现共享资源问题。一个进程其实就是一个程序,一个进程里面或者说一个程序里面存在多个线程。

2024-05-17 18:36:26 823

原创 异步的方式以及它使用的几个场景

再通过future.get方法获取到副线程中异步执行的结果就好了。

2024-05-17 18:30:12 803

原创 Netty个人总结

当我们的客户端请求并发数非常多的时候,这个时候WorkerGroup线程池中的所有NioEventLoop线程都处于忙碌状态,都有一个对应的客户端请求处理,那么新建立连接的客户端请求对应的套接字任务就会有很多,这个时候我们的等待队列的大小就需要设置的大一些。但是也不能太大,因为如果太大的话,我们维护等待队列里面的任务也是需要耗费系统性能的。所以需要设置一个合理的值,那么这个合理的值怎么判断呢?

2024-05-17 12:59:44 891

原创 TCP与HTTP的关系?

它们在TCP/IP七层通信架构的位置不同:它们对应的功能不同:HTTP协议是依赖TCP协议的:

2024-05-12 10:37:42 268 1

原创 从ElasticSearch7开始一个索引里面只允许有一个映射

就是我们的ES中的每个索引都会有一个倒排索引,会记录这个索引中关键字出现的文档id。但是如果同一个索引 的两个不同映射里面,有一个属性名字一样 但是类型不一样,Es就不知道该去找倒排索引的哪一行了,因为这两个的属性名字都一样 比如都是叫做手机名字,但是类型却不一样,所以对于ES搜索引擎来说不好处理。因为ES最初设计的时候是类比于像mysql这样的关系型数据库,比如说ES的索引就相当于是关系型数据库中的数据库;因此在最初的时候 也就意味着 一个索引里面可以有多个映射,因为一个关系型数据库里面可以有多张表嘛!

2024-04-26 11:32:41 265 3

原创 ElasticSearch搜索引擎中,在Kibana客户端使用命令的时候,千万不要加分号结尾

但是不应该啊,我前面明明已经创建了user_index索引,并且控制台也提示命令执行成功了啊?结果发现控制台确实也是有user_index索引的,证明我们的ES中确实已经有了这个索引了,那么现在问题来了,既然有这个索引,那为什么上面我们创建映射的时候却提示我们索引不存在呢?我又继续看了很久 发现了一个很细节的问题,就是上面的控制台输出的索引并不是"user_index"而是"user_index;ES中此时只有带分号的user_index 并没有不带分号的user_index 所以就会提示找不到索引了。

2024-04-26 11:02:04 293 2

原创 Windows安装ElasticSearch

ElasticSearch服务的段括号是9200,可以直接通过localhost:9200在浏览器里面访问 如下图:而Kibana,也就是ElasticSearch的客户端的端口号是5601,我们可以直接通过localhost:5601访问 如下图:7.16.2的版本需要jdk11,但我本地是jdk8,如下图:但是高版本的不用我们环境变量中的jdk,内部直接内置了,就不会有jdk冲突问题了,因此我们可以下载个高版本的ElasticSearch。因此我就换成了一个最高版本的当前8.13.2版本的 看

2024-04-25 17:30:39 966 3

原创 创建SpringBoot和RabbitMQ的整合项目

后面是消息的一些属性 类似如我们的http协议中的request请求头的信息,包括消息的内容类型了,消息的内容编码了,消息的长度了等信息。这两个端口号特别容易搞错,千万要注意,如果配置文件里的端口号写15672,那么我们的idea里面的java程序就连接不上我们本地已经启动的rabbitmq服务器了。但是我觉得RabbitMQ应该是会有线程安全问题的,比如说因为目前看来同一个队列 两个不同的线程都是可以访问的,那这样的话有共享资源问题 就肯定会出现线程安全问题。不用写交换机和路由的具体信息。

2024-04-25 13:07:47 1865 7

原创 Druid高性能数据库连接池?SpringBoot整合MyBatis整合SpringMVC整合Druid

Druid是阿里巴巴的一个开源项目,号称为监控而生的数据库连接池,在功能、性能、扩展性方面都超过其他例如DBCP数据库连接池、C3P0数据库连接池。而且Druid已经在阿里巴巴部署了超过600个应用,通过了极为严格的考验,这才收获了大家的青睐!数据库连接池是一个存储数据库连接的缓冲区,用于重复使用这些连接,以避免在每次请求时都创建新的数据库连接。因为每次连接数据库和断开数据库都是非常耗费性能的。

2024-04-23 18:16:11 1100

原创 mysql-connector-java和spring-boot-starter-jdbc和mybatis-spring-boot-start

JDBC是使用java语言操作mysql数据库的规范,java语言必须按照这个规范写才可以操作mysql数据库。

2024-04-23 10:32:10 1078

原创 创建一个空的maven项目,整合SpringBoot和Redis

在最新版的idea中创建maven项目的时候会让选择模板 如下图:我们选择quickstart快速开始模板,quickstart快速开始模板创建的maven项目里面什么都不带,只有一个简单的App类,啥都没有,是默认的maven项目模板,里面是最简单的架构。

2024-04-22 17:02:59 436

原创 @Autowired注解和@Resource注解的区别

首先来说一下IOC容器的作用,在SpringBoot中会把扫描到的每一个类都加入到IOC容器里面,比如现在SpringBoot项目里面有一个类RedisService,那么这个类就会被加到项目对应的IOC容器里面,格式为name = “redisService” type = “RedisService”。name的值固定为类型的第一个字母小写 比如RedisService类型,那么它在IOC中对应的对象的名字name就是redisService。

2024-04-22 16:14:59 772

原创 SpringBoot项目启动的时候直接退出了?

可以看出我们这里只引入了springboot和redis的整合依赖,以及springmvc依赖,并没有springboot的相关依赖,因此接下来我们只需要引入springboot的相关依赖就可以了。仅仅引入spring-boot-starter-web依赖就行了 因为springboot自带的tomcat服务器是在springboot-starter-web依赖中的。在启动SpringBoot项目的时候仅仅用了1.209s,然后直接退出了,也没有出现启动的项目对应的服务器端口号?

2024-04-22 15:36:18 466 1

原创 mvn依赖下载地址

https://mvnrepository.com/如下图:

2024-04-22 14:19:20 334

原创 创建Maven项目的时候让选择maven模板

工欲利其事 必先利其器。如果你想要干成一件事 那么必须先要精通对应的工具使用。之前我不太注重工具 我觉得只要代码写的好就可以了 但是当我们了解了产品经理的一些思想之后,我才明白一个好的产品是可以给用户提供多大的方便。同样idea里面的每个功能也都不是空穴来风,肯定是有原因的,每个功能产品经理在设计的时候都是为了解决用户的痛点问题,开发工程师肯定是遇到了麻烦,所以我们产品经理才会设计这个功能的。

2024-04-22 14:13:34 506

原创 产品原型图概念

高度还原产品运行效果,包括【设计+交互】的保真度。通过【线段+色块+文字】描述产品页面。缺点:传递信息容易遗漏。应用:客户/大领导沟通,产品设计思路的完整展示,求职能力体现。应用:早期方案讨论,需要快速输出的场景,团队配合度高。除了页面外,描述更多业务逻辑与辅助说明,指导产品研发。

2024-04-21 18:33:20 188

原创 Axure琐碎细节

页面中的每个元件都是有层级的,有的元件层级在上面,有的元件层级在下面,层级在上面的元件会覆盖层级在下面的元件。比如说当鼠标移入到确定按钮上时,隐藏确定按钮左边的取消按钮;当鼠标从确定按钮上移开时,显示确定按钮左边的取消按钮。直接全部选中了元件中对应的文字,然后我们就可以开启编辑模式了。当鼠标停到确定按钮上之后 左边的取消按钮就消失了。然后标尺线怎么删除呢?选中然后按delete就可以删除了。

2024-04-21 18:18:22 464

原创 Axure中的样式

如下图:这里的边距指的其实是元件里面的字体相对于元件的偏移量,和我们的html中的绝对位置偏移量是一样的。其中L表示的就是left指的是向左偏移量也就是这个值越大越靠右,T表示的是top指的是向上偏移量也就是这个值越大越靠下;R表示的是right指的是向右偏移量;B表示的是bottom指的是向下偏移量;

2024-04-21 12:17:28 676

原创 leetcode上面的注释的类也可以正常使用

虽然注释了,但是我们仍然可以使用这个类。

2023-12-11 17:56:15 195

原创 远程调试Linux服务器上的代码

首先我们的环境有本地环境还有研发环境,本地环境就是我们本地电脑上面的代码,而研发环境就是我们开发好一个功能,发到一个linux服务器上面的代码;我们可以使用idea的远程debug调试,这样我们就能在本地调试研发服环境的代码了。就比如说你现在登录研发服的游戏,然后你启动了本地服代码,在穿装代码的地方打了个断点,那么等到你再研发服的游戏里面穿装之后,就会进入到你本地idea穿装代码断点的地方。上面的脚本是我们的项目在研发服对应的启动脚本,它是一个shell编程脚本,这里对外的远程调试端口号是36111。

2023-12-08 14:16:01 214

原创 HTTP2

某些Web页面只想让特定的人浏览,或者干脆仅本人可见。为达到这个目标,必不可少的就是认证功能。

2023-11-28 21:06:29 176

原创 Fiddle抓包工具的安装

首先进入官网:https://www.telerik.com/download/fiddler/fiddler-everywhere-windows。

2023-11-21 15:37:15 82

原创 如何快速下载mysql的不同版本并启动mysql服务?

首先使用管理员的方式打开我们的命令行面板,如下图:右键以管理员身份运行。

2023-11-17 18:32:43 445

原创 TableUtilCache:针对CSV表格进行的缓存

首先来看下CSV文件的结构,如下图:第一行是字段类型,第二行是字段名字;再往下是数据。每个元素之间都是使用逗号分隔。

2023-11-17 14:40:15 804

原创 HTTP——

如下图:第一行:HTTP请求的方法,具体是POST方法还是GET方法,或是其它方法;URI就是你的HTTP请求的路径;后面是HTTP协议的版本;第二行往下连续多行:这些是请求头部分,也就是请求的首部设置的一些信息,相当于对HTTP请求的一些设置;空格行:在请求头与HTTP传递的内容实体之间,需要有一行空格;空格行下方:空格行下方的内容是HTTP的内容实体,比如说客户端发送HTTP请求的时候所发送的参数;

2023-11-13 11:32:40 864

空空如也

空空如也

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

TA关注的人

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