自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 前端小案例

获取用户信息,如果用户信息存在,则从中提取用户ID,并将其存储在页面数据中,以便后续使用。案例二:页面加载后会启动一个10秒的倒计时,当倒计时结束时,会自动返回上一页。

2024-05-06 23:50:56 285

原创 catchtap 和 bindtap区别

整个界面的触发函数是toDetailsTap,点我私聊按钮的触发函数是handleChat,如何保证点击按钮,并且renturn时,不会触发toDetailsTap。因此,当你需要在子组件上绑定点击事件,并且不希望事件冒泡到父组件时,可以使用。时,事件将被绑定到当前组件上,并且事件不会冒泡到父组件。换句话说,当你在一个子组件上使用。时,事件将被绑定到当前组件上,并且事件会冒泡到父组件。时,点击事件只会在该子组件上触发,不会向父组件传递。而如果你希望事件能够冒泡到父组件,可以使用。会阻止事件向上冒泡,而。

2024-05-06 18:55:09 452

原创 SpringSecurity面试题

答案: Spring Security是一个基于Spring框架的安全性框架,用于处理身份验证(Authentication)和授权(Authorization)。答案: Spring Security通过配置SecurityConfigurer来保护Web应用程序的URL。答案: Spring Security OAuth2是Spring Security的扩展,用于实现OAuth2协议的身份验证和授权。当用户提交表单时,Spring Security会验证令牌的有效性,只有有效令牌的请求才会被处理。

2024-04-30 23:34:16 561

原创 ES集群分布式查询原理

当新增文档时,应该保存到不同分片,保证数据均衡,那么coordinating node如何确定数据该存储到哪个分片呢?2)对id做hash运算,假如得到的是2,则应该存储到shard-2。3)shard-2的主分片在node3节点,将数据路由到node3。5)同步给shard-2的副本replica-2,在node2节点。6)返回结果给coordinating-node节点。1)新增一个id=1的文档。

2024-04-30 23:32:15 796 3

原创 Elasticsearch实现hotel索引库自动补全、拼音搜索功能

需要注意的是,我们把这个name字段,它的分词器定义成了text_analyzer ,搜索的时候我们 不能用text_analyzer,应该用这个传统的分词器,所以我们用了ik_smart,与此类似的,还有我们的这个all字段,它也是在创建索引时用text_analyzer ,然后在搜索时用ik_smart。Keyword不分词:它的词条直接作为一个整体,然后再去用拼音,因为我将来参与自动补全的,肯定就是固定的一个一个的词条。最后我们就可以重新去导入数据,测试这个拼音分词的,还有自动补全的功能了。

2024-04-28 23:13:57 606 3

原创 ElasticSearch自动补全

1、 如果只是单独使用拼音分词器,是没办法满足具体业务使用场景的,这时候就需要自定义分词器:2、通过自定义分词器,将ik分词器与拼音分词器整合起来,来保证我们的搜索既满足汉字也满足拼音"text":"我爱螺蛳粉",这个错误表明 Elasticsearch 在使用全局分析器pinyin时遇到了问题,因为它无法找到这个全局分析器。可能是由于缺少配置或插件问题导致的。你需要确保已正确配置了pinyin分析器,并且相关的插件已经正确安装和配置:./是指当前目录的简写。在Linux和类Unix系统中,

2024-04-28 19:05:46 1092 2

原创 ElasticSearch集群

海量数据存储问题:单机的ES,数据存储能力是有上限的单点故障问题:如果单机上的Elasticsearch节点发生故障,整个系统会停止服务,导致数据不可访问甚至丢失,造成损失单机的elasticsearch做数据存储,必然面临两个问题:海量数据存储问题、单点故障问题。

2024-04-26 23:55:03 803

原创 阿里云服务器开放端口的最最最正确的方法

【代码】阿里云服务器端口无法访问ElasticSearch。

2024-04-26 19:47:53 722

原创 ElasticSearch搜索结果处理

比如说这里指定一个,将来你还可以继续去指定: 如果有多个要排序的情况下,先按照第一个字段排,第一个字段相等,再按第二个字段排,这一点跟mysql里面也是一样的。那第一个案例是对酒店数据按照用户评价降序排序,如果评价相同,我们再按照价格升序排序,那也就是说这里排序的字段其实是两个, 你在搜索的时候,我先按照用户评价给你排,评价越高,排名越靠前。具体排序的语法怎么来写,大家可以看到这里先指定一个字段名,你要根据哪个字段排,是价格还是日期呀,然后指定排序的方式是asc升序还是dsc降序,这是简单类型;

2024-04-25 23:55:46 371 2

原创 ElasticSearch复合查寻

如果子查询比较多,每一个都参与算分,是不是查询性能就会受到影响,而如果你在使用的时候,你用的是filter查询和must not查询,它们是不参与算分的。虽然BooleanQuery复合查询里面有这么四种组合关系,但是除了跟算分相关的,一般就是关键字:用户输入的个关键字,除了用户输入的个关键字以外,剩下的过滤条件都应该放在must_not 或者filter里边,尽可能的减少算分,提高查询的效率。·filter,从字面来看,它也是必须匹配,Must也是必须匹配,确实它俩都是必须匹配,都是”与”的意思。

2024-04-25 23:41:35 789 1

原创 ElasticSearch批处理

也就是说批量的把数据库的数据写入索引库。那这里的需求是,首先利用mybatisplus去批量查询酒店数据,然后将查询到的酒店数据,也就是hotel把它转换成我们的hotelDoc文档类型。在刚才的新增当中,我们是一次新增一条数据。那么如果你将来的数据库里有数千上万的数据,你一次新增一个,那得多麻烦。,然后一次性完成提交,这种就叫批处理,确实没有什么新东西, 就是把以前的那种新增的代码给它合到一起去提交了。把多个 IndexRequest的请求合并到BulkRequest 对象里。

2024-04-24 23:53:52 481 2

原创 ElasticSearch总结2

长连接和短连接是两种常见的网络连接方式,主要用于HTTP、WebSocket等协议。长连接(Long-Connection):在长连接模式下,客户端和服务器之间的连接是持久的,并且在一段时间内保持打开状态。这意味着在一段时间内,客户端和服务器可以共享同一个连接,从而减少了建立新连接的开销。长连接适用于需要频繁通信的场景,例如实时聊天应用、实时游戏等。在长连接中,客户端和服务器通常会保持连接直到一方主动关闭。

2024-04-24 23:05:52 1012

原创 ElasticSearch总结1

正向索引:比方说我这里有一张数据库表,那我们知道对于数据库它一般情况下都会基于i d去创建一个索引,然后形成一个b+树。那么你根据i d进行检索的速度,就会非常的快,那么这种方式的所以就是一个正向索引。但是如果我现在搜索的字段不是i d,而是一个普通的标题字段,标题字段一般它内容比较长,你不会给他加索引,对吧?即便你给他加索引,那现在我想的不是确的标题值。我想其中的一部分:搜索'手机"select *from tb_goods where title like'%手机%'

2024-04-23 23:24:43 1431

原创 ElasticSearch笔记一

随着这个业务的发展,我们的数据量越来越庞大。那么传统的这种mysql的数据库就渐渐的难以满足我们复杂的业务需求了。所以在微服务架构下一般都会用到一种分布式搜索的技术。那么今天呢我们就会带着大家去学习分布搜索当中最流行的一种ElasticSearch,ElasticSearch是一个非常强大的开源搜索引擎。它可以帮助我们从海量数据中快速的找到所需要的内容。。ES是对ElasticSearch的一个缩写什么是ElasticSearch?

2024-04-23 23:06:45 469

原创 MYSQL45道练习题---持续更新中

②、student学生表: SId:学生id Sname:学生名称 Sage:年龄 Ssex:性别。④、sc学生-课程表: SId:学生Id CId:课程id score:成绩。①、course表: CId:课程id Cname:课程名称 TId:老师id。③、teacher教师表: TId:教师id Tname:教师名称。

2024-04-22 00:31:39 392

原创 JVM知识点总结四

在Java虚拟机中,对象是在Java堆中分配内存的,这是一个普遍的常识。但是,有一种特殊情况,那就是如果经过逃逸分析(Escape Analysis)后发现,一个对象并没有逃逸出方法的话,那么就可能被优化成栈上分配。这样就无需在堆上分配内存,也无须进行垃圾回收了。这也是最常见的堆外存储技术。如何快速的判断是否发生了逃逸分析,就看“new的对象实体”是否有可能在方法外被调用。如果当前的obj引用声明为static的?

2024-04-21 15:50:44 227

原创 JVM常见的垃圾回收器

每次进行Minor GC时,JVM会计算Survivor区移至老年区的对象的平均大小,如果这个值大于老年区的剩余值大小则进行一次Full GC,如果小于检查HandlePromotionFailure设置,如果true则只进行Monitor GC,如果false则进行Full GC。虚拟机为每个对象定义了一个年龄计数器,如果对象经过了1次Minor GC那么对象会进入Survivor区,之后每经过一次Minor GC那么对象的年龄加1,知道达到阀值对象进入老年区。3)解析,把类中的符号引用转换为直接引用。

2024-04-21 14:58:57 1009

原创 JVM知识点总结二

类加载子系统:根据给定的全限定名类名(如:java.lang.Object)来装载class文件到运行时数据区中的方法区中。,而虚拟机栈、本地方法栈、程序计数器则是线程私有的,就是说每个线程都有自己的这个区域。根据程序计数器中存储的字节码指令解释/编译为对应平台上的本地机器指令。类加载子系统、运行时数据区、执行引擎。

2024-04-20 02:49:41 628

原创 JVM知识点总结

给每一个对象设置一个引用计数器,当有一个地方引用该对象的时候,引用计数器就+1,引用失效/被释放时,引用计数器就-1;当引用计数器为0的时候,就说明这个对象没有被引用,也就是垃圾对象,等待回收;在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old ),,新生代默认占总空间的1/3,老年代默认占2/3。缺点:增加了空间的消耗,并且无法解决循环引用的问题:当A引用B,B也引用A的时候,此时AB对象的引用都不为0,此时也就无法垃圾回收,所以一般主流虚拟机都不采用这个方法;

2024-04-20 01:54:13 507

原创 JUC知识点三

run()方法的作用是启动一个新的线程,在新的线程里运行线程对象中的run方法;当你的这个新的线程启动以后,就会调用这个线程的run方法:如果有Runable对象,就运行Runable对象的run()方法,如果这个run()方法被子类重写了,那就运行子类中run()的方法;因此,当一个线程结束了,死掉了,对应的Thread的对象仍能调用,除了start( )方法外的所有方法(死亡的线程不能再次启动),如run( )、getName( )、getPriority()等等。真正的底层线程用户是看不到的了。

2024-04-18 08:15:00 1347

原创 Synchronized相关问题

1)当持有锁的线程释放锁时,该线程会执行以下两个重要操作:先将monitor锁对象的持有者 owner 属性赋值为 null唤醒EntryList等待链表中的一个线程(假定继承者)。在1和2之间,如果有其他线程刚好在尝试获取锁(例如自旋),则可以马上获取到锁。2)当线程尝试获取锁失败,进入阻塞时,放入链表的顺序,和最终被唤醒的顺序是不一致的,也就是说你先进入链表,不代表你就会先被唤醒。

2024-04-18 01:52:24 816

原创 SQL255 给出employees表中排名为奇数行的first_name

【代码】SQL255 给出employees表中排名为奇数行的first_name。

2024-04-17 09:15:00 481

原创 SQL261 牛客每个人最近的登录日期(二)

最近一天登陆也就是日期最大的时候,可以使用GROUP BY 再对用户进行分组求解。但问题的关键是使用了GROUP BY对SELECT语句是有限制的:以下是最常见的错误的原因是,无法找到对应的 客户端名(c.name也不能group by user_id, client_id解决的办法是,这个就可以了。和。

2024-04-17 08:00:00 142

原创 SQL215 查找在职员工自入职以来的薪水涨幅情况

【代码】SQL215 查找在职员工自入职以来的薪水涨幅情况。

2024-04-16 03:14:44 151

原创 SQL12 获取每个部门中当前员工薪水最高的相关信息

【代码】SQL12 获取每个部门中当前员工薪水最高的相关信息。

2024-04-16 02:27:08 380

原创 MySQL练习题

有三个表,表S(学生表),C(课程表),SC(学生选课表)

2024-04-14 21:48:35 379 1

原创 ERROR 1052 (23000): Column ‘deptno‘ in field list is ambiguous

这个错误通常是在多表查询中,因为你的SQL查询中包含了多个表,并且这些表中都有一个名为deptno的列。这会导致数据库无法确定你要引用哪个表中的 deptno列,从而产生歧义。

2024-04-14 20:38:18 184

原创 后台权限控制及动态路由

如果用户id为1代表管理员,roles 中只需要有admin,permissions中需要有所有菜单类型为C或者F的,状态为正常的,未被删除的权限。如果用户id为1代表管理员,menus中需要有所有菜单类型为C或者M的,状态为正常的,未被删除的权限。建表SQL及初始化数据见:SGBlog\资源\SQL\sg_menu.sql。前端为了实现动态路由的效果,需要后端有接口能返回用户所能访问的菜单数据。后台系统需要能实现不同的用户权限可以看到不同的功能。//此次省略1000字。"msg":"操作成功"

2024-04-12 23:44:33 395

原创 Swagger2

Swagger 是一套基于 OpenAPI 规范构建的开源工具,可以帮助我们设计、构建、记录以及使用 Rest API。

2024-04-12 23:12:03 665

原创 定时任务、 cron 表达式语法

使用@Scheduled注解标识需要定时执行的代码。注解的cron属性相当于是任务的执行时间。目前可以使用 0/5 * * * *?进行测试,代表从0秒开始,每隔5秒执行一次。这里就先用SpringBoot为我们提供的定时任务的API来实现一个简单的定时任务,让大家先对定时任务里面的一些核心概念有个大致的了解。定时任务的实现方式有很多,比如XXL-Job等。但是其实核心功能和概念都是类似的,很多情况下只是调用的API不同而已。② 确定定时任务执行代码,并配置任务执行时间。

2024-04-11 21:27:16 266

原创 CommandLineRunner实现项目启动时预处理

我们只需要实现CommandLineRunner接口,并且把对应的bean注入容器。把相关初始化的代码重新到需要重新的方法中。如果希望在SpringBoot应用启动时进行一些初始化操作可以选择使用CommandLineRunner来进行处理。这样就会在应用启动的时候执行对应的代码。

2024-04-11 21:25:37 791

原创 Spring Validation解决后端表单校验

NotNull:从前台传递过来的参数不能为null,如果为空,会在控制台日志中把message打印出来。@Patten,标注的字段值必须符合定义的正则表达式(按照业务规则,进行灵活的正则表达式的校验)@Range:范围,最大多少,最小多少。

2024-04-09 23:22:09 417

原创 SpringBoot怎么使用Validation校验参数

Validation 是用于检查程序代码中参数的有效性的框架,作为 Spring 框架中的一个参数校验工具,集成在 spring-context 包中。

2024-04-09 23:12:54 363

原创 Maven的scope详解

maven 项目不同的阶段引入到classpath中的依赖是不同的,例如,编译时,maven 会将与编译相关的依赖引入classpath中,测试时,maven会将测试相关的的依赖引入到classpath中,运行时,maven会将与运行相关的依赖引入classpath中。依赖范围更为通俗的理解,其实就是给依赖包打标记,例如将 A 依赖包标记为“compile”,Maven 就知道 A 依赖包在项目编译的时候要被引入到 classpath 中。比方说,你修改了标签。

2024-04-08 22:48:58 473

原创 @Accessors进行链式编程

@Accessors进行链式编程

2024-04-06 23:32:59 76

原创 @Accessors注解详解

③ prefix:该属性是一个字符串数组,当该数组有值时,表示忽略字段中对应的前缀,生成对应的getter和setter方法。比如:现在有xxName字段和yyAge字段,xx和yy分别是name和age字段的前缀。但是,当把前缀添加到@Accessors属性中时,则可以像没有前缀那样,去调用字段的getter和setter方法。@Accessors既可以作用在类上,又可以作用在具体的字段上。当值为true时,对应字段的getter方法前面就没有get,setter方法前面就没有set。

2024-04-06 23:13:02 161

原创 JSON的定义、基本使用二

这里需要注意的是,传入的值有两个,第一个是传入的字符串,第二个是即将转换成的对象的。,最后返回的是你所定义的Java对象。,注意,这可是一个字符串。2.1 将对象转换为。

2024-04-04 22:57:06 251

原创 JSON的定义和基本使用

JSON是一种轻量级的数据交换格式,是由字符串化的键值对构成。基于网络的前后端通信,数据在服务端和客户端之间进行传输,采用的就是JSON的格式来进行交互。

2024-04-04 22:50:28 298

原创 Stream流中Map的举例

【代码】Stream流中Map的举例。

2024-04-03 23:21:03 99

原创 Linux进程状态

进程状态是指进程在其执行过程中的不同状态。这些状态随着进程的执行和外界条件的变化而转换。在三态模型中进程状态分为三种基本状态,即运行态,就绪态,阻塞态。在五态模型中,进程分为新建态、终止态,运行态,就绪态,阻塞态。

2024-04-03 23:03:49 121

空空如也

空空如也

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

TA关注的人

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