自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL数据同步到ES的4种解决方案

大家应该都在各种电商网站检索过商品,检索商品一般都是通过什么实现呢?搜索引擎 Elasticsearch。那么问题来了,商品上架,数据一般写入到 MySQL 的数据库中,那么用于检索的数据又是怎么同步到 Elasticsearch 的呢?

2023-09-18 20:21:32 991

原创 ElasticSearch进阶:一文全览各种ES查询在Java中的实现

本文基于elasticsearch 7.13.2版本,es从7.0以后,发生了很大的更新。7.3以后,已经不推荐使用。这个client,取而代之的是。

2023-09-17 20:59:49 254 1

原创 EsMapper映射

映射(Mapping)是定义文档及其包含的字段如何存储和索引的过程。每个文档都是字段的集合,每个字段都有自己的数据类型。为数据创建一个映射定义,包含与文档相关的字段列表。

2023-09-15 19:40:47 163 1

原创 Elasticsearch (Es)倒排索引

把文档内容进行分词,得到一个词条表【词条:文档ID列表】,给词条创建索引。把要搜索的内容进行分词,根据分词后的结果去词条表中根据词条进行匹配,得到文档ID列表,再通过文档ID返回具体的文档信息。从文件的内容查找,得到包含这些内容的文件列表,再得到文件对应的信息,如文件名、作者、文件大小、创建时间等。2、将词条列表当作key,包含该词条的文档id列表作为值,形成一张表。4、通过词条查询,得到文档ID,再通过文档ID查询到具体的文档。1、将文档的内容通过算法进行分词,得到一个词条列表。

2023-09-15 19:39:35 89 1

原创 Mybits plus详解

MyBatis Mapper 所对应的 XML 文件位置,如果您在 Mapper 中有自定义方法(XML 中有自定义实现),需要进行该配置,告诉 Mapper 所对应的 XML 文件位置。在MP中有大量的配置,其中有一部分是Mybatis原生的配置,另一部分是MP的配置,详情:mybatis.plus onfifig/('1', 'zhangsan', '123456', '张三', '18', 'test1@itcast.cn');

2023-09-05 20:53:24 91 1

原创 Linux命令大全

Linux命令是在命令行上运行的程序或实用程序。命令行是一个界面,它接受文本行并将其处理为计算机的指令。任何图形用户界面(GUI)都只是命令行程序的抽象。例如,当您通过单击“X”关闭窗口时,该操作后面会运行一个命令。标志(flag)是我们可以向您运行的命令传递选项的一种方式。大多数Linux命令都有一个帮助页面,我们可以使用-h标记调用该页面。大多数情况下,标志是可选的。argument或parameter是我们给命令的输入,以便它可以正常运行。

2023-09-03 19:40:25 22

原创 Easy Excle数据导出

于是就上网搜,发现阿里的EasyExcel很简单,就决定尝试下,找了好久,发现网上都没有很好的封装EasyExcel的工具类,自己写1个呗,看下api介绍和demo,发现都是要excel绑定一个java类,我这边列是2023-02-01动态日期,大致是。headList.add(new ExcelHead<String>("name", "名称"));headList.add(new ExcelHead("age", "年龄", -1));//需要对null的处理,比如age的null,要转为-1。

2023-09-02 22:41:18 132 1

原创 ArrayList底层微析

所以为了解决这个问题,初始化ArrayList的时候都会首先将其指向常量池中的一个长度为0的数组,这样的话,无论你new多少个没用的ArrayList,他们的引用都会指向着一个常量池中的数组。此时我们的 minCapacity = 10,oldCapacity = 0,newCapacity = 0,所以有 newCapacity - minCapacity < 0 ,因此, newCapacity = minCapacity=10。进行初始化的时候,我们来分析具体是一个怎么样的过程。

2023-08-29 21:20:16 32 1

原创 帅气的流编程:Stream

在实际的开发过程中,还有一个使用最频繁的操作就是,将集合元素中某个主键字段作为key,元素作为value,来实现集合转map的需求,这种需求在数据组装方面使用的非常多,尤其是在禁止连表 sql 查询操作的公司,视图数据的拼装只能在代码层面来实现。我们都知道,从 Java8 开始,jdk 新增加了一个 Stream 类,用来补充集合类,它的强大,相信用过它的朋友,能明显的感受到,不用使用for循环就能对集合作出很好的操作。所谓并行,指的是多个任务在同一时间点发生,并由不同的cpu进行处理,不互相抢占资源;

2023-08-28 22:41:36 43 1

原创 JWT底层与实现

1.Header(头) 作用:记录令牌类型、签名算法等 例如:{“alg":"HS256","type","JWT} 2.Payload(有效载荷)作用:携带一些用户信息 例如{"userId":"1","username":"mayikt"} 3.Signature(签名)作用:防止Token被篡改、确保安全性 例如 计算出来的签名,一个字符串。支持跨域访问:cookie是无法跨域的,而token由于没有用到cookie(前提是将token放到请求头中),所以跨域后不会存在信息丢失问题。

2023-08-28 06:57:05 36

原创 Spring boot中整合微信支付

2.引入微信支付SDK,可以使用官方提供的Java版SDK,也可以使用第三方SDK,如WxJava等。3.在项目中编写支付相关的业务逻辑代码,包括生成订单、调用微信支付接口、处理支付结果等。4.在项目中配置微信支付相关的参数,如API密钥、商户号等。1.注册微信支付账号并获取相关的API密钥、商户号等信息。5.进行支付测试,确保支付流程正常。具体可以在微信支付开发平台中参考。

2023-08-26 21:53:02 291

原创 Spring 为什么使用三级缓存而不是二级缓存?

二级缓存:存储提前暴露的bean,真正的解决循环依赖是靠二级缓存的。三级缓存:存储bean和其要加强的aop处理,如果需要aop增强的bean遇到了循环依赖,则使用该缓存中的aop处理代理增强bean(Cache of singleton factories: bean name to ObjectFactory.)实际上不用三级缓存也可以解决循环依赖,但是如果有需要aop增强的bean时,就要在初始化bean的时候对bean做增强了,这违背了Spring在结合AOP跟Bean的生命周期的设计!

2023-08-25 21:53:07 179 1

原创 SPring

Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hessian、Quartz)等的直接支持。Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。

2023-08-24 20:53:09 26 1

原创 Redis

1)单机Mysql的美好时代数据库总大小一台机器硬盘内存放不下;数据的索引(B + tree)一个机器的运行内存放不下;访问量(读写混合)一个实例不能承受;2)Memcached(缓存)+ MySql + 垂直拆分通过缓存来缓解数据库的压力,优化数据库的结构和索引。垂直拆分指的是:分成多个数据库存储数据(如:卖家库与买家库)。3)MySql主从复制读写分离主从复制:主库来一条数据,从库立刻插入一条;读写分离:读取(从库Master),写(主库Slave);

2023-08-24 06:51:51 70 1

原创 String 类简述笔记

前言string是C++、java、VB等编程语言中的字符串,用双引号引起来的几个字符,如"Abc",“一天”.字符串是一个特殊的对象,属于引用类型。在java、C#中,String类对象创建后,字符串一旦初始化就不能更改,因为string类中所有字符串都是常量,数据是无法更改,由于string对象的不可变,所以可以共享。对String类的任何改变,都是返回一个新的String类对象。

2023-08-21 19:46:14 31 1

原创 idea中push代码失败问题解决

补充:如果你之前的项目使用http方式clone下来的,那么在.git中修改config中的url为ssh项目地址:git@github.com:用户名/xxxxx.git。原因:http方式交互github时可能存在一些SSL校验方面的问题,他们的443端口你去尝试telnet,应该也是不同的。步骤:1.执行ssh-keygen -t rsa 一路回车去生成公钥私钥,默认保存在用户目录下的.ssh目录下;github是个国外网站,网络经常可能不通畅,最近在push代码的时候,出现一些问题,如下。

2023-08-19 21:08:12 789

原创 java.lang.ThreadLocal<T>深度解析

另外,在最后还需要判断一下当前的存储的对象个数是否已经超出了阈值(threshold的值)大小,如果超出了,需要重新扩充并将所有的对象重新计算位置(rehash函数来实现)。如果超出了,再扩容。为啥要搞成这么复杂?所以最怕的情况就是,threadLocal对象设null了,开始发生“内存泄露”,然后使用线程池,这个线程结束,线程放回线程池中不销毁,这个线程一直不被使用,或者分配使用了又不再调用get,set方法,那么这个期间就会发生真正的内存泄露。比如使用线程池的时候,线程结束是不会销毁的,会再次使用的。

2023-08-18 20:24:38 60 1

原创 那就写一个BUG

通过f12也看到路径什么的都是对的,一遍一遍的检查后来发现在返回值类型这加了@RequestBody注解,导致和接口文档的参数不符合导致,大意了~BUG 如上图一样。这个是写了一个模糊匹配分页查询,不知道怎么的就报了400的错。当时控制台任何有用的信息都捕捉不到,只有如下的警告信息。

2023-08-16 21:12:45 83

原创 多线程的实现方式

java自学笔记

2023-08-15 20:45:35 30 1

原创 Mysql基础增删改查

insert into tb_emp values (null,'忘了爱1','111','杨宁2',1,'/img',1,'2002-12-21',now(),now()),(null,'忘了爱2','111','杨宁3',1,'/img',1,'2002-12-21',now(),now());insert into tb_emp values (null,'忘了爱','111','杨宁',1,'/img',1,'2002-12-21',now(),now());(子查询结果为一个值 标量子查询)

2023-08-14 21:28:40 41

空空如也

空空如也

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

TA关注的人

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