![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
开发经验
文章平均质量分 64
水的精神
一件事,要么不做,要么做到极致。
展开
-
为什么要用向量检索
之前写过一篇文章,是我个人到目前阶段的认知,所做的判断。我个人是做万亿级数据的搜索优化工作的。一直在关注任何和搜索相关的内容。这篇文章再来讲讲为什么要使用向量搜索。在阅读这篇文章之前呢,最好已经知道向量检索是怎么回事。如果还不知道,可以学习这篇文章。原创 2023-12-10 13:11:54 · 1094 阅读 · 0 评论 -
ES java client 搜索报错 entity content is too long[xxx1] for the configured buffer limit [xxx2]
应用同事反馈,在使用es的滚动导出的时候,一共有5567条数据,但是实际上只拿到4567条数据,并且打断点,最后一次是获取到了456条数据。所以可以判断,中间少了1000条数据。因为滚动导出是每次1000条。初步判断,是少了一次数据解析,有可能第一次构建请求的时候,没有解析数据。实际上并不是,看报错如下图,是 entity content is too long[xxx1] for the configured buffer limit [xxx2]原创 2023-12-09 13:47:23 · 657 阅读 · 0 评论 -
模型能力赋能搜索——零样本分类(Zero-Shot Classification)在搜索意图识别上的探索
从测试用例来看,Zero-Shot Classification分类效果还是很不错的。可以使用该模型,进行问题意图识别的。因为搜索框,对话框,被传进来的内容类型是未知的。但是不同类型的问题,去到不同的分支上,Zero-Sh效果一定是最好的。就像上边的测试案例。通过模型,可以推测出来,输入框的内容到底是什么意图,是总结任务?还是摘要任务?还是问答任务?在模型中,我们只需要去定义已知的和能够处理的分支即可。轻松利用模型的能力,来做意图识别。当然这是一个初步的探索。想要获得更好的效果,还会要进行模型调优的。原创 2023-12-09 12:33:16 · 1062 阅读 · 0 评论 -
ES 如何将国际标准时间格式进行格式化与调整时区
需求,日志收集的时候,时间格式是国际标准时间格式。形如yyyy-MM-dd'T'HH:mm:ss.SSS。 (2023-12-05T02:45:50.282Z)这个时区也不对,那如何将此类型的时间,进行格式化呢?本篇文章体统一个案例,可以格式化各种类型的时间,已经调整到各个时区。原创 2023-12-09 12:08:30 · 1175 阅读 · 0 评论 -
将json数据导入到ES集群——解决方案对比&填坑日记
将json数据导入到ES集群——解决方案对比&填坑日记原创 2023-11-06 20:38:53 · 1193 阅读 · 0 评论 -
java.io.IOException: entity content is too long [xxx] for the configured buffer limit [1048576]
java 使用 es hight-level-client 连接集群 ,滚动导出数据报错。但是我不想批量太小,影响处理速度。解决方案2:自定义一个 requestOptions。:response内容太大。buffer装不下了。,我的是滚动导出数据,可以调小批量的大小。原创 2023-06-05 17:24:23 · 1200 阅读 · 0 评论 -
白话ES搜索相关性问题
之前使用es,更多的是使用term查询,和agg聚合分析。对相关性关注较少。实际上es擅长的是做模糊搜索,相关性搜索。ES是一个开源的通用的检索工具,能满足百分之八十的需求。相关性这个问题,是一个非常有意思的问题,值得深思。搞清楚相关性打分规则,有利于提高召回内容的相关性。深入了解以后,能帮我们解决剩下的百分之二十的需求。原创 2023-06-05 01:53:47 · 385294 阅读 · 1 评论 -
如何处理亿级图片排重(精准排重,相似排重)
图片相似度对比1、需求假如有一个图片池,存有1亿图片。给一张目标图片,在图片池中做匹配。判断一张图片是否在图片池中出现过。(完全一样)判断有没有相似的出现过。比如两张图相似度90,两张图片是在描述一件事情。2、需求实现方案对于以上需求,实现思路是:将图片转成向量,存放在ES中,去做以图搜图。但是在ES中的实现以图搜图,是用KNN实现的。KNN总会返回topN结果,在图片池中,哪怕真的不存在与目标一致的图片,但是仍然会返回与之最相似的图片。想要使用ES实现需求1很容易。原创 2023-06-02 13:30:39 · 349625 阅读 · 0 评论 -
使用openCV比对任意两张图片的相似度(亲测较准确)
比对两张图片的相似度。使用openCV实现。提供完整的代码案例。原创 2023-06-02 13:18:57 · 354426 阅读 · 5 评论 -
Exception in thread “main“ java.lang.UnsatisfiedLinkError: no opencv_java455 in java.library.path:
java 中使用 openCV,报错Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java455 in java.library.path:原创 2023-06-02 13:08:28 · 1870 阅读 · 0 评论 -
springBoot JPA代码生成器
通过IDEA+配置文件,根据数据库表结构快速生产Service、ServiceImpl、repository、repositoryImpl、自动生成常用的jpa增删改查等方法。大佬的帖子: Spring Boot JPA idea代码自动生成 其二。配置文件内容替换我的: Generate POJOs.groovy。7.所生产出来的java文件。我都上传,大家可以去看看。先前参考简书上的帖子,后经自己改良的配置生成。此时会让你选择要生成的保存目录。使用idea 生成代码步骤。原创 2023-02-16 13:08:40 · 882 阅读 · 1 评论 -
ES堆占用高问题分析与解决方案
千亿级检索,ES JVM参数调优,解决OOM问题。原创 2022-09-25 11:38:55 · 7350 阅读 · 0 评论 -
open JDK 国内快速下载地址
国内下载 openJDK原创 2022-07-21 18:12:05 · 776 阅读 · 0 评论 -
The ‘Access-Control-Allow-Origin’ header contains multiple values “*, *”, but only one is allowed.
The ‘Access-Control-Allow-Origin’ header contains multiple values “*, *”, but only one is allowed.通常我们的跨域可以在三个地方解决通过配置类在后台代码解决。还可以通过注解在接口上解决。 可以在业务网管层面解决。 可以在nginx层面解决。以上的三种方式,假如用了两种。则会出现双重跨域的异常错误。解决方案如果知道在哪里用了两次跨域的话,选择剔除一个地方也是可以的。假如在业务网关层统..原创 2022-04-12 09:21:18 · 1202 阅读 · 0 评论 -
使用硬盘从linux服务器上复制文件
将移动硬盘插入到服务器上在服务器上使用fdisk 命令查看一下你插入的移动硬盘。sudo fdisk -l如果没猜错的话,应该是:/dev/sdb1挂载硬盘插入的盘是需要挂在的,不能直接使用使用命令:先创建一个文件夹我在/目录下创建的cd /mkdir exportData挂在插入的硬盘到这个目录sudo mount /dev/sdb1 /exportData/接着再去看我们新建的文件夹下,就可以看到硬盘上的数据了,此时我们向这个文件..原创 2022-03-18 10:56:10 · 3509 阅读 · 0 评论 -
elasticsearch中的Translog详解 及其参数与调优
ES为什么需要有translog?es是近实时的存储引擎(和搜索引擎)。所谓近实时,是指新增一条数据,或者修改一条数据,并不能保证被立刻看到。数据被看到的时候数据已经作为一个提交点,被写入到了文件系统中(这个过程称为refresh)。因为一次写入的成本相对比较大,所以用攒一波批量提交的方式,写入性能会更好。不管这些数据都是在堆内存中还是在文件系统中(Filesystem Cache),如果发生断电,或者JVM的崩溃,则这部分数据一定会丢失。为了防止数据丢失,这部分数据会被写入到traslog中一份。当然原创 2022-03-18 01:31:41 · 10447 阅读 · 1 评论 -
linux下java进程被杀掉原因排查
问题描述:我的java进程被异常终止。没有任何的异常信息。也没看到系统异常。我们可以从linux层面来排查一下问题。如果确定程序没有问题的话,有可能是linux层面的问题,也有可能是硬件方面的问题。查看linux系统日志:内容情况命令dmesg看到的问题:通过使用上边的命令,我们看到了进程确实是被系统给kill掉了。而发生这个操作的原因是:内存错误。0x4e7a1c8: Killing java:4295 due to hardware memory corr.原创 2022-03-16 10:35:37 · 6418 阅读 · 0 评论 -
linux向一个文件写超过 7000W行会有明显的降速
单行数据{\"routing\":\"ac235f5e3163a02826203f66aba16ea5\",\"resCategory\":\"port_info\",\"ip\":\"144.35.64.66\",\"portInfo\":{\"bannerList\":[{\"reqName\":\"http_index\",\"banner\":\"\",\"encoding\":\"\",\"decodeBanner\":\"\"}],\"port\":83,\"status\":false原创 2022-03-14 20:08:53 · 612 阅读 · 0 评论 -
linux下查看磁盘IO使用情况(利用率)
安装相关命令可以检查一下有没有安装。 使用命令 iostat如果不能使用安装命令(ubuntu下)sudo apt-get updatesudo apt-get install sysstat查看IO使用情况使用iostat -x 5 查看IO情况:-x:更详细的io设备统计信息-h: 给我们换算成M或者G选项 说明rrqm/s 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并wrqm/s 每秒对该设...原创 2022-03-07 15:05:13 · 7596 阅读 · 0 评论 -
Chrome 浏览器如何截取整个页面
打开 Chrome 浏览器,进入需要截图的网站页面 等待页面加载完毕后,通过下面方法打开开发者工具 在页面任何地方点击鼠标右键,在弹出菜单中选择“检查(Inspect)”选项,或者使用快捷键组合:Alt+Command+I(Mac) ||Ctrl+Shift+I(Windows) || 按 F12 使用快捷键组合来打开命令行(command palette):Command+Shift+P(Mac) |Ctrl+Shift+P(Windows) 在命令...原创 2022-02-18 19:40:11 · 14348 阅读 · 0 评论 -
elasticsearch搜索引擎-关于段合并思考
段合并对于es来说是一件至关重要的事情。因为段是es发生检索的最小执行单元。一个索引的数据是由分片组成的,分片是一个lucene实例,而分片又是由段组成的。因此,一个检索任务,最终是在每一个段中执行完检索,最后合并结果的。 因此了解段就显得至关重要。段的优劣,直接决定了检索的性能。常用es的,大家可能会遇到一个情况,就是es用着用着越来越慢了。段合并问题是一个重要的影响因素。原创 2022-02-02 21:29:27 · 2789 阅读 · 0 评论 -
elasticsearch 单索引 6T 20亿 数据搜索实战与优化深度思考
我负责公司的检索平台的开发兼运维工作。 我们的场景是对互联网上的设备数据进行检索。数据量大概有20亿,对应的存储量大概有6T(不带副本的情况下)。单条数据会有上百个字段,用来刻画网络设备画像。 我们有比较特殊的需求:我们有频繁更新的需求,每天几千万,甚至上亿。 我们并不能做根据时间的滚动索引。因为后进的数据需要把前边的数据做覆盖。所以就没有办法做索引的生命周期管理。 我们有频繁的聚类搜索的需求。 我们想要基于这些数据,做到普通检索1秒以内,聚类检索3秒以内。写这篇文章的...原创 2022-01-20 01:07:51 · 5287 阅读 · 0 评论 -
linux测试系统磁盘读取速度
查看磁盘读取速度命令sudo hdparm -Tt /dev/sda运行结果: 我在服务器上测试的,服务器上是固态硬盘。每秒2221MB,也就是将近两个G/dev/sda: Timing buffered disk reads: 6666 MB in 3.00 seconds = 2221.36 MB/sec普通的磁盘速度/dev/sda: Timing buffered disk reads: 3870 MB in 3.02 seconds = 1279.52..原创 2021-12-19 01:35:18 · 2225 阅读 · 0 评论 -
nginx 实现文件下载
需求:把一个文件,对外提供url路径,来完成文件下载。修改nginx配置文件 先看配置文件server { listen 80; server_name localhost; location ^~ /download/ { alias /home/webhtml/; if ($request_filename ~* ^.*?\.(html|doc|pdf|zip|docx|txt)$) { ...原创 2021-11-04 18:27:44 · 17225 阅读 · 4 评论 -
java 代码实现计算两个任意ip之间的全部ip
直接看代码吧。实现原理的话,利用到了一点ip的原理。ip本身是一个32位的数字。public static void main(String[] args) { String ipBegin = "10.10.9.0"; String ipEnd = "10.10.10.255"; List<String> iPs = findIPsForIpv4(ipBegin, ipEnd); } /** * 查找两..原创 2021-10-21 19:40:30 · 1286 阅读 · 0 评论 -
将url路径图片保存为base64 和 把base64图片保存在本地
需求:1. 将url路径图片保存为base642. 把base64图片保存在本地案例:图片url路径:https://img-blog.csdnimg.cn/20181029235258454.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BvcnJ5Q24=,size_16,color_FFFFFF,t_70想要把图...原创 2021-10-18 18:31:42 · 1267 阅读 · 0 评论 -
使用docker安装elasticsearch和kibana
快速搭建一个es的环境。 前提条件: 安装环境:linux,包含docker环境,并且docker环境可以正常使用(配置过镜像源,可以顺利拉镜像)。docker安装es使用docker拉取镜像这里我是拉取的7.5.1版本的es,可以换成自己想要拉取的,替换下边的 7.5.1即可。sudo docker pull elasticsearch:7.5.1查看一下镜像如果拉取镜像有问题,需要自己解决docker的问题。sudo docker...原创 2021-09-28 14:09:33 · 2176 阅读 · 2 评论 -
elasticsearch 7.5.1 版本,java客户端一直打印 org.elasticsearch.client.sniff.ElasticsearchNodesSniffer
问题描述 es集群之前是 7.3.1,java客户端没有任何问题。 es集群升级到了7.5.1,同样的java客户端,就一直打印es抛出啊来的警告日志。这个在网上查了,说是es的bug。真的解决很麻烦。所以找了一个其他的方案,通过修改控制打印的日志,来解决一直打印es日志的问题。解决方案在resource配置文件目录下添加一个日志的配置文件。该文件和applation.yml同级。logback的配置文件内容,如下<?xml version="1.0"...原创 2021-09-28 11:04:23 · 908 阅读 · 0 评论 -
中国全部城市的中心点坐标 json格式
全部城市的中心点坐标,json格式。后台可以直接使用。{ "city": { "上海": [121.487899486, 31.24916171], "临沧": [100.092612914, 23.8878061038], "丽江": [100.229628399, 26.8753510895], "保山": [99.1779956133, 25.1204891962], "大理白族自治州": [100.223674789, 25.596899639..原创 2021-09-07 11:19:15 · 3919 阅读 · 1 评论 -
海量图片存储方案
关于图片存储问题,主要关系到了前端的展示问题。 怎么存更好? 《===》前端怎么展示更方便? 随着数据量的级别上升,都有哪些方案?哪些方案更好? 我在思考这个问题的时候:主考虑到的是并发量的问题;图片数量过多的问题;以及访问速度的问题。 带着这些问题,我有搜索了网上的图片存储的方案。以及去看了电商系统淘宝的方案,还看了csdn的图片是如何存的。通过借鉴他们的存储方式,可以作为我们的解决问题的方案。图片如何存储 在看了一些博客以后,总结了一下,网上前几页的博...原创 2021-08-17 20:39:06 · 4877 阅读 · 0 评论 -
前端取不到后台返回response里边header内容问题
我是在前后端调试下载文件的时候遇到的问题。我下载文件的方式是返回二进制流。这种方式的话实际上是不能有return的,也就是时候不能把一些内容带给前端。比方说文件名,我们就需要放header里边。但是默认情况下,前端拿不到你定义的header字段。 那么解决方式实际上是比较简单的,我的解决方案如下: response.reset(); response.setHeader("Access-Control-Allow-Origin", "*"); ...原创 2021-07-29 11:17:26 · 6485 阅读 · 2 评论 -
如何把inputStream的内容转为字符串
首先要知道,inoutSteam是字节流,也就是二进制数字。想要转为字符,首先要做的是把字节流转为原创 2021-06-14 09:58:50 · 4675 阅读 · 0 评论 -
压力环境下半个月的成长
接近半个月没有更新文章了。我这半个月是不是去摸鱼了?这篇文章聊聊我这半个月的经历和收获的成长。 最近半个月都是七点半出发,十一点半回家的,参与一个原创 2021-06-13 14:40:32 · 260 阅读 · 0 评论 -
JMM中的happen-before原则你知道么?
JMM又是什么? JMM 就是一组规则,这组规则意在解决在并发编程可能出现的线程安全问题,JMM (Java Memory Model)是 Java 内存模型,JMM 定义了程序中各个共享变量的访问规则,即在虚拟机中将变量存储到内存和从内存读取变量这样的底层细节.并提供了内置解决方案(happen-before 原则)及其外部可使用的同步手段(synchronized/volatile 等),确保了程序执行在多线程环境中的应有的 原子性,可视性及其有序性。 JMM 规定了所有的变量都存储在主内...原创 2021-05-22 09:43:06 · 361 阅读 · 3 评论 -
说说你们的服务架构——再说说每个环节的机器配置
有没有真正的生产经验,一问便知。即使是大公司的跑龙套的,不知道系统上下的整体架构,也说不过去。可能一些专业的测试,包括机器的压测,全链路的问题演练,即使没做过,最后的测试报告多少还是要知道的。如果是小公司的负责架构的,这些问题肯定一清二楚。有没有生产经验,以及经验是否真实,通过服务架构,以及各个环节的资源配置,是可以体现出来的。是在没有做过压测,也没关系,至少去官网上看一下官方做的压力测试。 多数情况下,一问到这个问题,很多人就开始瞎扯了..springCloud微...原创 2021-05-21 08:21:58 · 521 阅读 · 1 评论 -
服务的那点事-我们离写出开源框架差了多少
作为一个步入职场一年半的“老鸟”。分享一下自己的心得。大道至简-化繁为简看了那么多书,用过那么多框架,也做过技术选型,技术架构。学过那么多的新知识。其实也就这么几件事:通信。服务与服务之间的调用叫做通信。用户调用服务也叫做通信。高可用集群,集群与集群之间数据同步,也需要通信。想要走得更远,进行更多的优化。最好熟悉网络原理,以及通信协议。另外前辈给我们封装好了一些东西,例如通信框架netty,最好学习一下。 微服务。也就是服务拆分。 以及服务拆分带来的单点故障问题如何解决。也就...原创 2021-05-16 10:31:07 · 200 阅读 · 2 评论 -
elasticsearch 段合并 带来的惊心动魄的生产事故 用生产集群数据的截图 带你重新认识段合并
看过不少的elasticsearch优化的文章,都说到段合并会带来不错的效果。 前几天阿里技术专家,欧阳楚才给我们做了一次技术分享。在分享会上,他也有提到段合并带来的优化效果可能会有两三倍。 这让我蠢蠢欲动,回来又补了一些段合并的知识。我每次看一个问题,都会把谷歌搜出来的前三页都看一遍。这些文章都在说段合并有多好,已经仅仅提到段合并会占用IO,可是没有提问题。我用一次生产环境才的数据,给大家还原一下段合并的过程,以及没有注意到的点,造成生产事故。从截图证据中,我们一起看一下段合并需要...原创 2021-05-09 10:57:43 · 616 阅读 · 1 评论 -
G1 垃圾回收器实现细节
一直惦记着G1垃圾回收器,如果不出意外的话,G1今后一定会被大量用于生产。之前零零散散的看了一些关于G1的知识点,但是很难形成一个知识体系,都只是皮毛。趁着这个假期的尾巴,恶狠狠的啃了一遍谷歌出来的G1详解相关的文章,特地整理出来分享给大家。看了前几页的文章,每篇文章都有其精髓的地方,但是内容不是很连贯,我会加上我的理解我会把前辈写的好的地方融合到这篇文章。这篇文章会偏向与实现细节,适合进行有深度的关于G1的学习。1. 一个G1的引子:为什么会有G1 所有的垃圾回收...原创 2021-05-06 00:31:10 · 503 阅读 · 3 评论 -
线上问题排查方法论
线上问题是初级开发人员接触不到的,但是又必须去看的问题。刚毕业的这一年,真的是什么都有幸接触到了。去机房修过服务器、抢救过服务、线上问题诊断、复盘、JVM调优、再到架构、最终回到底层。可谓是千锤万凿出深山,烈火焚烧莫等闲!真的经历这么一遭,反而明白了一个道理,世界的终点是起点。为什么这么说呢?经历过线上事故,进行深度复盘以后,才明白,原来扎实的基础知识,例如多线程,JVM,操作系统原理这些,是这么的重要。经历过大风大浪还有幸存活的渔夫,一定会把它的渔船修的异常坚固,一定会准备必要的逃生方案。哎.原创 2021-05-01 11:00:04 · 1435 阅读 · 1 评论 -
服务从http 升级到https 都需要做哪些改变
项目要上线,需要把http变成https,作为安全防护的一个手段。如果不走https,只用http有什么问题?其一,通过抓包,可以看到你全部的数据。 其二,通过抓包,在你的页面数据上放一些广告。 还有更多,就不列举了。如果走https,都需要哪些条件?如果是demo项目的话,可以使用JDK自己签发SSL证书,这个如果只是后台访问接口,https没问题,如果是页面在googel浏览器展示,然后去调用https的接口就有问题了,谷歌浏览器说这个证书我不认可。所以就有了第一个...原创 2021-04-15 16:01:36 · 4133 阅读 · 0 评论