草庐IT

ES使用Ngram分词器实现wildcard高性能替代方案

1、wildcard检索wildcard检索可定义为:支持通配符的模糊检索,类似Mysql中的like模糊匹配模式,如下使用非分词器(ik)方式实现模糊匹配。创建常规支持wildcard索引PUTidx_recommend_words{"settings":{"index":{"number_of_shards":"5","number_of_replicas":"3","refresh_interval":"5s"}},"mappings":{"rec_words":{"_all":{"enabled":false},"dynamic_templates":[{"attribute_valu

TP 5.0.24反序列化漏洞分析

前言很久没发过文章了,最近在研究审计链条相关的东西,codeql,ast,以及一些java的东西很多东西还是没学明白就先不写出来丢人了,写这篇tp的原因呢虽然这个漏洞的分析文章蛮多了,但是还是跟着看了下,一方面是因为以前对pop链挖掘一直学的懵懵懂懂的ctf的一些pop链能出,但是到了框架里面自己就是挖不出来,所以就想着自己挖下tp反序列化的链子来看看,另一方面是想思考学习下php挖掘利用ast手法去该怎么入手(虽然后面这个问题还没解决),所以就有了这篇文章。如果有什么问题欢迎师傅们批评指教,提建议。正文:下载地址:http://www.thinkphp.cn/donate/download/

压测工具之Locust

前言  说起压测,我就用过Jmeter,而且仅是简单使用,好用性能强大,最近接触了一个python提供的压测框架Locust,翻译为蝗虫,蝗虫过之,寸草不生,哈哈哈,我感觉很贴切。首先,我们分析一下市面上几种工具的特性。\LoadRunnerJmeterLocust授权方式商业收费开源免费开源免费开发语言C/JavaJavaPython测试脚本形式C/JavaGUIPython并发机制进程/线程线程协程单机并发能力低低高分布式压力支持支持支持资源监控支持不支持不支持报告与分析完善简单图表简单图表支持二次开发不支持支持支持并发方式线程线程协程  我认为最适合程序员的当然是Locust,脚本语言快

git commit规范

如何规范gitcommit提交github是我们用于协同开发的平台,方便开发人员协同开发,极大提高了开发效率,但是经过团队第一次协同开发后,我们发现了一个很大的问题,我们的gitcommit非常不规范,至于在开发后期项目出现bug之后,很难找到问题所在,为了规范以后的开发,学习使用commitizen,husky以及standard-version来规返回gitcommit提交,并且自动化生成CHANGLOGcommitizencommitizen是用来制定gitcommit规范的工具首先让我们了解一下commitizen制定的gitcommit规范格式要想规范gitcommit提交,我们要先

强化学习——Q-Learning算法原理

一、Q-Learning:异策略时序差分控制从决策方式来看,强化学习可以分为基于策略的方法(policy-based)和基于价值的方法(value-based)。基于策略的方法直接对策略进行优化,使制定的的策略能够获得最大的奖励。基于价值的强化学习方法中,智能体不需要制定显式的策略,它维护一个价值表格或价值函数,通过这个价值表格或价值函数来选取价值最大的动作。Q-Learning算法就是一种value-based的强化学习算法。二、算法思想:Q(s,a)是状态价值函数,表示在某一具体初始状态s和动作a的情况下,对未来收益的期望值。Q-Learning算法维护一个Q-table,Q-table记

【Python基础篇】Python中的七种数据类型

文章目录前导一、数字类型(Number)二、布尔类型(Boolean)三、字符串类型(String)3.1字符串索引3.2字符串截取、拼接和复用四、列表类型(List)4.1in和notin4.2len()4.3添加/删除/查询元素4.4排序(sort)和反转(reverse)4.5list()五、集合(Set)六、字典类型(Dictionary)七、其他7.1深拷贝与浅拷贝7.2类型比较前导Python中的数据类型主要有:Number(数字)、Boolean(布尔)、String(字符串)、List(列表)、Tuple(元组)、Dictionary(字典)、Set(集合)。其中又分为可变数据

C++中vector<vector<int> >的用法

注意vector>后面的尖括号前面要加上空格,否则在有些编译器出现问题vector>A;//错误的定义方式vector>A;//正确的定义方式一、为什么是vector?对于数组,大家常用索引和指针来操作数组,给程序设计带来了很大的灵活性。但是数组的越界可能会引起程序的崩溃,而且动态性不好,包括动态改变大小,动态申请。有什么办法可以解决这些问题吗?关于vector我不想多说,我假设大家都了解temlplate和STL比如map、list、vector等)。学习C++的时候学到过STL(标准模板库)知道vector提供了operator[]函数。可以像数组一样的操作,而且还有边界检查,动态改变大小

Android: 彻底搞懂Lifecycle——使用篇

系列文章目录第一章Android:彻底搞懂Lifecycle——使用篇第二章Android:彻底搞懂Lifcycle——原理篇文章目录系列文章目录前言一、Lifecycle是什么?1.应用场景2.示例二、Lifecycle使用1.泳(用)裤(库)第一步是什么?——先引入2.Lifecycle类3.LifecycleOwner接口3.1.自定义类实现LifecycleOwner接口总结前言你真的了解lifecycle吗?本文的目标就是要“打破砂锅问到底”,带你真真切切了解它。一、Lifecycle是什么?lifecycle是属于AndroidJetpack(官方开发工具包)——Architect

input详解之文件上传

input全部类型常用的并且能为大多数浏览器所识别的类型大概有:text、password、number、button、reset、submit、hidden、radio、checkbox、file、image、color、range、date、month、week、time、datetime-local。1、一般类型2、file类型文件2.1、属性accept属性accept=“image/png”或accept=“.png”——只接受png图片.accept=“image/png,image/jpeg”或accept=“.png,.jpg,.jpeg”——PNG/JPEG文件.accept

在vue3+vite项目下按需引入vant报错Failed to resolve import解决方案

在vue3+vite项目下按需引入vant报错Failedtoresolveimport解决方案问题描述原因分析解决方案问题描述近日尝试使用vite+vue3+vant开发项目过程中,参考vant官网开发指南->快速上手->引入组件按照上述配置好后,运行vite环境报错:Failedtoresolveimport原因分析根据报错信息,发现是vant的样式引入路径不对。程序解析为:项目路径/node_modules/vant/lib/vant/es/组件/style实际应该是:项目路径/node_modules/vant/lib/vant/es/组件/style多了一个vant/lib路径。解决