- 博客(173)
- 收藏
- 关注
原创 什么是Keycloak?怎么样使用Keycloak实现登录和权限验证?
在下面的配置文件中需要主要需要配置的是realm(你创建的realm的名称),resource(Clients 的id名称), credentials secret(你的Clients的密钥),其他都是固定的,可以照搬我下面的配置文件。根据网上博主的分享和官方的文档,上述操作是可以实现的,但是在我创建之后发现报错,只能访问公共页面,登录之后admin连user.html都不能访问,报错就是权限的问题。来访问admin页面,并验证权限,现在是user角色登录,所以登录权限不够(报403错误,权限不足)
2024-05-14 15:58:08 641
原创 如何快速生成接口文档(swagger和knife4j两种方式及其使用)
在项目开发中,web项目的前后端分离开发,APP开发,需要由前后端工程师共同定义接口,编写接口文档,之后大家都根据这个接口文档进行开发,到项目结束前都要一直维护。项目开发过程中前后端工程师有一个统一的文件进行沟通交流开发项目维护中或者项目人员更迭,方便后期人员查看、维护Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(它的主要作用是:使得前后端分离开发更加方便,有利于团队协作接口的文档在线自动生成,降低后端开发人员编写接口文档的负担。
2024-05-14 13:25:21 967
原创 kotlin语法快速入门--(完整版)
Kotlin是一个基于JVM的新的编程语言,2010年由IntelliJ IDEA所在的JetBrains公司开发,自2012年以来一直开源。 Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设备上运行。 Kotlin是面向对象和功能编程功能的JVM和Android的通用、开源、静态的实用的编程语言。 它专注于交互性、安全性及清晰度和工具的支持。
2024-05-06 08:06:35 1096 2
原创 Kotlin语法入门-密封类和密封接口(11)
在上面的例子中,Result是一个密封类,它有两个子类Success和Error。这两个子类都嵌套在Result类的内部。由于Result是一个密封类,因此它的子类是有限的,并且都是在同一个文件中定义的。使用密封类可以帮助我们更清晰地表示有限的类层次结构,提高代码的可读性和安全性。密封类在处理状态、操作等有限的情况时非常有用。中,这样就限制了密封类的继承结构。,例如表示状态的类或操作的类。的结合类似,密封接口就相当于是。
2024-04-25 17:15:49 632 3
原创 Kotlin语法入门-数据类、伴生类、枚举类(9)
伴生类()是Kotlin中的一个特殊类,它与普通类不同,可以包含类似Java中的静态成员和方法。在Kotlin中,类不能有静态成员,但是可以使用伴生类来模拟静态成员和方法的行为。伴生类可以访问其所属类的私有成员,并且可以通过类名直接访问其伴生对象的成员。伴生类的成员可以通过类名直接访问,而不需要创建类的实例。伴生类也支持接口实现,类的继承等。定义Test.NAMENAME,AGE。
2024-04-25 17:13:58 997 2
原创 kotlin语法快速入门-接口与接口实现(8)
在kotlin中语法与Java语法差不多,唯一区别就是没有使用implement关键字,用冒号,像继承一样。多个接口继承用逗号隔开。class AParent() : A, B { //接口实现interface A { //接口Ainterface B { //接口B。
2024-04-24 10:56:06 740 5
原创 Kotlin语法入门-自定义注解(7)
class A {var a = 1annotation class Fancy(val name: String) //可以对注解进行初始化@Target指定可以用该注解标注的元素的可能的类型(类、函数、属性与表达式);@Retention指定该注解是否存储在编译后的 class 文件中,以及它在运行时能否通过反射可见 (默认都是 true);允许在单个元素上多次使用相同的该注解;指定该注解是公有 API 的一部分,并且应该包含在生成的 API 文档中显示的类或方法的签名中。
2024-04-24 10:54:59 446
原创 Kotlin语法入门-类与对象(6)
在kotlin中,不能直接调用get和set方法,默认就是赋值就自动调用了set()方法,取值就自动调用get()方法。抽象是面向对象编程的特征之一,类本身,或类中的部分成员,都可以声明为abstract的。在嵌套类的基础上,在嵌套类的前面加上一个关键字inner就变成了内部类,并且可以访问外部类中的成员变量,使用。注:在Java中,这是一个内部类的一个写法,但是在koltin中,这种事属于内部类的一个写法。上述这种方式就实现了重写属性成员a和b,其中a是常量,b是变量,所以重写之后有点区别。
2024-04-23 17:37:26 1649
原创 Kotlin语法入门-访问和属性修饰符(5)
kotlin在常见的访问修饰符private,protected,public中新增了internal这个修饰符。在kotlin中,默认修饰符是public,并且还有final进行修饰。意思就是说这样设置就不能跨模块对其他类进行访问。其实,这就意味着kotlin中就。一定一定要添加open关键字。如果想要实现继承,那就使用。
2024-04-23 17:35:32 787 1
原创 Kotlin语法快速入门-函数(4)
fun 函数名(参数: 类型) :返回值类型{//函数体return 返回值a()fun a() {}像上述的代码,返回值类型可以省略,函数会自动推导,如果没有返回值,则默认返回Unit(等价于Java中的void)。或。
2024-04-22 13:16:10 547
原创 Kotlin语法快速入门-区间(3)
遍历方法有很多,如for…in 、toList 等。但是,forEach方法不能进行遍历浮点型。返回一个boolean的类型。
2024-04-22 13:14:22 445
原创 Kotlin语法快速入门--条件控制和循环语句(2)
就像上述代码,想在it == 5的时候执行跳出循环 ,但是这个时候无法直接跳出循环,因为其底层是使用lamda表达式和函数实现的,即无法使用关键字break,continue。解释:首先,break或者continue会优先执行的语句段是距离关键字(break或者continue)最近的循环关键字,所以上述代码中break的是j所在的for。像这段,就可以指定a@…,其会返回一个对象,有下标index,和值i,可以通过kotlin的一个。:获取下一个元素的值,就像有一个指针,指向下一个值,并获取。
2024-04-19 20:50:48 778 2
原创 Kotlin语法快速入门--变量声明(1)
您可以使用Nothing来表示“一个永远不存在的值”:例如,如果函数的返回类型为Nothing,则意味着它永远不会返回(总是抛出异常)。就会进行判定b是否为空,如果b为空那就不会调用plus方法,这样就避免了空指针异常。需要注意的是,const关键字所修饰的属性必须在编译时就能确定其值,不能是运行时才能确定的值。以上是常规的创建方法,也可以用自定义的方法,下面以Int为例,其实基本数据类型都是有的。kotlin中的变量是自动推导的,其中变量类型Int是可以省略的。,这是kotlin语法中特有的。
2024-04-19 20:48:41 1018
原创 什么是死锁?死锁产生的条件是什么?
死锁是指两个或两个以上的进程(或线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。解决:占用部分资源的线程,在进一步申请其他资源的时候,如果申请不到就主动释放其中占有的资源。解决:按照顺序来申请锁资源(相当于给资源一个编号,按照编号去申请)解决:在第一次申请资源的时候,一次性申请所有的共享资源。:进程已获得的资源,在末使用完之前,不能强行剥夺。
2024-04-18 21:37:21 304
原创 Java中类加载的机制
这里利用了一种懒加载的思想,所有Java虚拟机实现必须在每个类或接口被Java程序首次主动使用才初始化,但类加载不一定,静态代码块在类初始化时执行。初始化是类加载的最后一步,也是真正执行类中定义的Java程序代码(字节码),初始化阶段是执行类构造器。︰把类的符号引用转为直接引用(类或接口、字段、类方法、接口方法、方法类型、方法句柄和访问控制。:校验类的正确性(文件格式,元数据,字节码,二进制兼容性),保证类的结构符合JVM规范。加载->验证->准备->解析->初始化->使用->卸载。修饰符7类符号引用)
2024-04-18 21:35:58 530
原创 什么是RESTful API?
将一切数据视作资源。描述对资源的操作。(增/删/改/查)通过HTTP响应状态码,描述对资源的操作结果。(如:200/5xx)
2024-04-13 18:27:56 426
原创 Java中创建多线程的方法
继承Thread类,对该类进行new一个实例,对实例调用start方法,重写run方法。当然还有其他创建线程的方法,如创建线程池等。实现Runnable接口。缺点:单继承,无法继承。
2024-04-13 18:27:18 208
原创 设计原则--开发中的六大设计原则
单一职责原则:一个类或接口只承担一个职责。里氏替换原则:在继承类时,务必重写(override)父类中所有的方法,尤其需要注意父类的protected方法(它们往往是让你重写的),子类尽量不要暴露自己的public方法供外界调用。依赖倒置原则:高层模块不应该依赖于低层模块,而应该依赖于抽象。抽象不应依赖于细节,细节应依赖于抽象。接口隔离原则:不要对外暴露没有实际意义的接口。迪米特法则:尽量减少对象之间的交互,从而减小类之间的耦合。开闭原则:对软件实体的改动,最好用扩展而非修改的方式。
2024-04-11 16:17:03 345
原创 Spring中的AOP-面向切面编程
在切面的某个特定的连接点上执行的动作。许多AOP框架,包括Spring在内,都是以拦截器做通知模型的,并维护着一个以连接点为中心的拦截器链。:把切面连接到其它的应用程序类型或者对象上,并创建一个被被通知的对象的过程。既然Spring AOP是通过运行时代理实现的,那么这个对象永远是一个被代理(proxied)的对象。:匹配连接点的断言。通知和切点表达式相关联,并在满足这个切点的连接点上运行(例如,当执行某个特定名称的方法时)。:在程序执行过程中某个特定的点,例如某个方法调用的时间点或者处理异常的时间点。
2024-04-11 16:15:54 352
原创 Vue3状态管理库--Pinia
Pinia是一个基于Vue 3的状态管理库,它提供了简洁而强大的方式来管理应用程序中的状态。Pinia的设计理念是将状态管理的复杂性降到最低,同时保持灵活性和可扩展性。Pinia的核心概念是store,每个store都包含了应用程序的状态和一些用于修改状态的方法。通过在组件中使用Pinia提供的API,可以轻松地访问和更新store中的状态,从而实现状态在应用程序中的共享和管理。
2024-03-27 21:48:15 477
原创 Vue3快速入门
Vue3快速入门1、使用create-vue创建项目2、组合式API-常见函数2.1、组合式API入口-setup2.2、reactive()2.3、ref()2.4、computed计算属性函数2.5、watch侦听单个数据侦听多个数据immediatedeep精确侦听对象的某个属性3、组合式API-生命周期4、组合式API-父子通信4.1、子传父4.2、父传子5、组合式API-模版引用5.1、defineExpose()6、组合式API-provide和inject
2024-03-25 11:33:08 970
原创 分布式搜索引擎ES-RestClient查询文档快速入门
基于上述几种查询,只需要记住核心API:QueryBuilders。注:下面的内容我只会放置测试方法。
2024-03-23 14:33:31 650
原创 分布式搜索引擎-DSL查询文档
可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。精确查询:根据精确词条值查找数据,一般是查找keyword、数值、日期、boolean等类型字段。复合(compound)查询:复合查询可以将上述各种查询条件组合起来,合并查询条件。:在进行结果排序之后,默认的相关度算分就没有什么意义了,所以_score就变成了null。:这种分页方式不支持ES的集群环境,所以集群情况下就需要使用深度分页。:分页时需要排序,原理是从上一次的排序值开始,查询下一页数据。例如:match_all。
2024-03-23 10:25:33 1106
原创 ES分布式搜索引擎-RestClient操作索引库
利用JavaRestClient中的Bulk批处理,实现批量新增文档,示例代码如下。值得注意的是,由于document中的数据类型与数据库中数据的类型有所不同,比如。,所以就需要准备一个专门接受处理过的一个模型,注意新增数据是的代码编写方式。将查询到的酒店数据(Hotel)转换为文档类型数据(HotelDoc)利用JavaRestClient根据id查询酒店数据。利用JavaRestClient新增酒店数据。利用JavaRestClient删除酒店数据。利用JavaRestClient修改酒店数据。
2024-03-14 23:12:18 584
原创 ES分布式搜索-使用RestClient操作索引库
ES官方提供了各种不同语言的客户端,用来操作ES。这些客户端的本质就是组装DSL语句,通过http请求发送给ES。
2024-03-13 16:36:53 1022
原创 ES分布式搜索-索引库操作
mapping是对索引库中文档的约束,常见的mapping属性包括:type:字段数据类型,常见的简单类型有:字符串:text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)数值:long、integer、short、byte、double、float、布尔:boolean日期:date。
2024-03-08 16:13:36 800
原创 ES分布式搜索-IK分词器
es在创建倒排索引时需要对文档分词;在搜索时,需要对用户输入内容分词。但默认的分词规则对中文处理并不友好。语法说明:POST:请求方式/_analyze:请求路径,这里省略了,有kibana帮我们补充:分词器类型,这里是默认的standard分词器:要分词的内容由于kibana无法识别中文词汇,在没有使用IK分词器的情况下每一个中文会逐字进行识别保存查询,所以对效率和内存的耗损都有一些代价。处理中文分词,一般会使用IK分词器。安装IK分词器,参考资料问题来了,ik分词器是怎样进行分词的?
2024-03-08 16:12:46 1230
原创 安装elasticsearch、kibana、IK分词器(内附安装包,安装文档)
处理中文分词,一般会使用IK分词器。百度网盘链接:https://pan.baidu.com/s/_TMsnOTYzOplOQydA?关于elasticsearch和kibana的安装包如下:由于占用的内存较大,建议先下载,然后再上传到Linux中。
2024-03-08 16:11:38 665
原创 分布式搜索引擎-elasticsearch基础
elasticsearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在等领域。elasticsearch是elastic stack的核心,负责存储、搜索、分析数据。
2024-03-07 21:32:41 999
原创 SpringCloud微服务-SpringAMQP(RabbitMQ)
Spring AMQP是Spring框架对AMQP(Advanced Message Queuing Protocol)的支持库,用于简化在Java应用程序中使用消息队列的开发。通过Spring AMQP,开发人员可以更轻松地与消息代理进行交互,发送和接收消息,以实现异步通信和解耦应用程序组件。Spring AMQP提供了一组丰富的功能和API,使得在使用AMQP消息队列时更加便捷和高效。SpringAmqp的官方地址:https://spring.io/projects/spring-amqp。
2024-03-06 21:15:00 2021
原创 SpringCloud微服务-RabbitMQ快速入门
中文是消息队列,字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。消息:就是一个个待处理的事件。RabbitMQ是基于Erlang语言开发的开源消息通信中间件RabbitMQ部署指南。
2024-03-06 21:10:18 764
原创 同步通信和异步通信(RabbitMq学习前篇)
事实上,我们大多数情况都会使用同步通信,因为大多数情况下对并发的要求不是很高,要求较高的是时效性。如果服务提供者出现问题,所有调用方都会跟着出问题,如同多米诺骨牌一样,迅速导致整个微服务群故障。调用链中的每个服务在等待响应过程中,不能释放请求占用的资源,高并发场景下会极度浪费系统资源。调用者需要等待服务提供者响应,如果调用链过长则响应时间等于每次调用的时间之和。微服务间基于Feign的调用就属于同步方式,存在一些问题。而异步通通信就是上述的那些概念:并发,解耦等。每次加入新的需求,都要修改原来的代码。
2024-03-06 21:08:27 415
原创 SpringCloud微服务-DockerCompose(初识、安装、部署)
其报错的原因是我们的服务尝试启动,发现nacos启动在各种Service服务之后,所以服务无法启动,更别说访问了,可以使用depends-on可以设置容器的启动顺序,如下文件配置:# 表示orderservice在nacos启动之后启动。修改自己的cloud-demo项目,将数据库、nacos地址都命名为docker-compose中的服务名。将打包好的app.jar拷贝到cloud-demo中的每一个对应的子目录中。将Docker run中的各种参数全部转化为compose中的指令。
2024-03-05 15:25:24 413
原创 我自己写的maven module在另外一个Service服务中使用之后,但是maven打包的时候却报错
我自己写的maven module在另外一个Service服务中使用之后,但是maven打包的时候却报错如下:[WARNING] The POM for cn.itcast.demo:reign-api:jar:1.0 is missing, no dependency information available
2024-03-04 19:39:07 497
原创 CentOS7安装DockerCompose和Docker镜像仓库的配置
CentOS7安装DockerCompose和Docker镜像仓库的配置
2024-03-03 16:19:35 403
原创 SpringCloud微服务-Docker基本操作
镜像操作命令1.1、从DockerHub中拉取一个镜像并且查看1.2、镜像的导出和导入2、容器相关命令2.1、创建运行一个Nginx容器2.2、进入容器,并且修改容器中的文件3、数据卷3.1、操作数据卷命令案例实战-创建数据卷挂载数据卷-创建启动Nginx容器,将宿主机数据卷挂载到容器3.4、挂载目录-创建并运行MySQL容器,将宿主机目录挂载到容器4、Dockerfile自定义镜像镜像结构Dockerfile语法使用Dockerfile构建镜像,运行java项目
2024-03-02 11:20:49 1148
kotlin语法快速入门文档
2024-04-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人