谷粒商城微服务分布式高级篇ElasticSearch四——Java使用ElasticSearch

2023-11-02

ElasticSearch-Rest-Client

Java使用ElasticSearch

1)、9300,TCP
spring-data-elasticsearch:transport-apl.jar;
spfingboot版本不同,transport-api.jar不同,不能适配es版本
7.x已经不建议使用,8以后就要废弃

2)、9200.HTTP
JestClient:非官方,更新慢
Resttemplate: 模拟发HTTP请求,ES很多操作需要自己封装,麻烦
Httpclent:同上
ElasticSearch-Rest-Client:官方RestClient,封装了ES操作,API层次分明,上手简单

最终选择 ElasticSearch-Rest-Clent(elasticSearch-rest-high-level-client)
官方文档

开始整合
1)、创建SpringBoot ES 搜索服务 导入依赖

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.4.2</version>
</dependency>

   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5

ElasticSearch-Rest-Client Java High Level REST Client的版本必须小于等于你的elasticsearch版本,建议版本一致

springboot有管理es版本,所以得手动改成当前es版本
在这里插入图片描述

<properties>
    <java.version>1.8</java.version>
    <elasticsearch.version>7.4.2</elasticsearch.version>
</properties>

   
   
   
   
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
2)、注册到nacos

可见 nacos得注册与发现

3)、编写配置,将客户端注入spring容器

/**
 * @program: MyMall
 * @description: ES配置类
 * @author: DAIHAO
 * @created: 2020/05/09 22:53
 */
@Configuration
public class EsConfig {
<span class="token annotation punctuation">@Bean</span>
<span class="token keyword">public</span> RestHighLevelClient <span class="token function">esRestClient</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    RestClientBuilder builder <span class="token operator">=</span> null<span class="token punctuation">;</span>
    HttpHost host <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">HttpHost</span><span class="token punctuation">(</span><span class="token string">"192.168.175.130"</span><span class="token punctuation">,</span><span class="token number">9200</span><span class="token punctuation">,</span><span class="token string">"http"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    builder <span class="token operator">=</span> RestClient<span class="token punctuation">.</span><span class="token function">builder</span><span class="token punctuation">(</span>host<span class="token punctuation">)</span><span class="token punctuation">;</span>
    RestHighLevelClient client <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">RestHighLevelClient</span><span class="token punctuation">(</span>builder<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">return</span> client<span class="token punctuation">;</span>
<span class="token punctuation">}</span>

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

4)、测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class MallSearchApplicationTests {
<span class="token annotation punctuation">@Autowired</span>
RestHighLevelClient client<span class="token punctuation">;</span>

<span class="token annotation punctuation">@Test</span>
<span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">contextLoads</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>client<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token comment">//org.elasticsearch.client.RestHighLevelClient@f438904 </span>
<span class="token punctuation">}</span>

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

5)、使用单实例RestHighLevelClient
RestHighLevelClient中的所有API都接受一个RequestOptions,您可以使用它们以不会改变Elasticsearch执行请求的方式自定义请求。例如,在这里您可以指定NodeSelector来控制哪个节点接收请求

    public static final RequestOptions COMMON_OPTIONS;
<span class="token keyword">static</span> <span class="token punctuation">{</span>
    RequestOptions<span class="token punctuation">.</span>Builder builder <span class="token operator">=</span> RequestOptions<span class="token punctuation">.</span><span class="token constant">DEFAULT</span><span class="token punctuation">.</span><span class="token function">toBuilder</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

//暂时不使用
// builder.addHeader(“Authorization”, "Bearer " + TOKEN);
// builder.setHttpAsyncResponseConsumerFactory(
// new HttpAsyncResponseConsumerFactory
// .HeapBufferedResponseConsumerFactory(30 * 1024 * 1024 * 1024));
COMMON_OPTIONS = builder.build();
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

存储数据到ES

    /**
     * 测试存储数据到es
     */
    @Test
    public void index() throws IOException {
        //指定索引
        IndexRequest indexRequest = new IndexRequest("users");
        //指定ID 如果不设置自动生成
        indexRequest.id("1");
        //1、使用kv结构
        //index.source("userName","daihao","age","18");
    <span class="token comment">//2、使用json</span>
    User user <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">User</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    user<span class="token punctuation">.</span><span class="token function">setName</span><span class="token punctuation">(</span><span class="token string">"DAIHAO"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    user<span class="token punctuation">.</span><span class="token function">setAge</span><span class="token punctuation">(</span><span class="token number">18</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    user<span class="token punctuation">.</span><span class="token function">setGender</span><span class="token punctuation">(</span><span class="token string">"男"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    String json <span class="token operator">=</span> JSON<span class="token punctuation">.</span><span class="token function">toJSONString</span><span class="token punctuation">(</span>user<span class="token punctuation">)</span><span class="token punctuation">;</span>
    indexRequest<span class="token punctuation">.</span><span class="token function">source</span><span class="token punctuation">(</span>json<span class="token punctuation">,</span> XContentType<span class="token punctuation">.</span>JSON<span class="token punctuation">)</span><span class="token punctuation">;</span>

    <span class="token comment">//执行同步存储 RequestOptions.DEFAULT:请求设置项</span>
    IndexResponse index <span class="token operator">=</span> client<span class="token punctuation">.</span><span class="token function">index</span><span class="token punctuation">(</span>indexRequest<span class="token punctuation">,</span> RequestOptions<span class="token punctuation">.</span>DEFAULT<span class="token punctuation">)</span><span class="token punctuation">;</span>

    <span class="token comment">//提取有用得响应数据</span>
    System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>index<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token comment">//IndexResponse[index=users,type=_doc,id=1,version=1,result=created,seqNo=0,primaryTerm=1,shards={"total":2,"successful":1,"failed":0}]</span>


    <span class="token comment">//java.lang.IllegalArgumentException: The number of object passed must be even but was [1]</span>
    <span class="token comment">//错误 没有设置传递的内容格式 XContentType.JSON</span>

<span class="token punctuation">}</span>
<span class="token annotation punctuation">@Data</span>
<span class="token keyword">class</span> <span class="token class-name">User</span> <span class="token punctuation">{</span>
    <span class="token keyword">private</span> String name<span class="token punctuation">;</span>
    <span class="token keyword">private</span> String gender<span class="token punctuation">;</span>
    <span class="token keyword">private</span> Integer age<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

从ES检索数据

    /**
     * 复杂查询
     */
    @Test
    public void searchData()  throws IOException {
    <span class="token comment">//创建检索请求</span>
    SearchRequest searchRequest <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">SearchRequest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token comment">//指定索引</span>
    searchRequest<span class="token punctuation">.</span><span class="token function">indices</span><span class="token punctuation">(</span><span class="token string">"bank"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token comment">//指定DSL,检索条件</span>
    SearchSourceBuilder sourceBuilder <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">SearchSourceBuilder</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    sourceBuilder<span class="token punctuation">.</span><span class="token function">query</span><span class="token punctuation">(</span>QueryBuilders<span class="token punctuation">.</span><span class="token function">matchQuery</span><span class="token punctuation">(</span><span class="token string">"address"</span><span class="token punctuation">,</span> <span class="token string">"mill"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

    <span class="token comment">//按照年龄的值分布聚合</span>
    TermsAggregationBuilder ageAgg <span class="token operator">=</span> AggregationBuilders<span class="token punctuation">.</span><span class="token function">terms</span><span class="token punctuation">(</span><span class="token string">"ageAgg"</span><span class="token punctuation">)</span>
            <span class="token punctuation">.</span><span class="token function">field</span><span class="token punctuation">(</span><span class="token string">"age"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">size</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    sourceBuilder<span class="token punctuation">.</span><span class="token function">aggregation</span><span class="token punctuation">(</span>ageAgg<span class="token punctuation">)</span><span class="token punctuation">;</span>

    <span class="token comment">//计算平均薪资</span>
    AvgAggregationBuilder balanceVag <span class="token operator">=</span> AggregationBuilders<span class="token punctuation">.</span><span class="token function">avg</span><span class="token punctuation">(</span><span class="token string">"balanceVag"</span><span class="token punctuation">)</span>
            <span class="token punctuation">.</span><span class="token function">field</span><span class="token punctuation">(</span><span class="token string">"balance"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    sourceBuilder<span class="token punctuation">.</span><span class="token function">aggregation</span><span class="token punctuation">(</span>balanceVag<span class="token punctuation">)</span><span class="token punctuation">;</span>

    <span class="token comment">//System.out.println(sourceBuilder.toString());</span>
    searchRequest<span class="token punctuation">.</span><span class="token function">source</span><span class="token punctuation">(</span>sourceBuilder<span class="token punctuation">)</span><span class="token punctuation">;</span>

    <span class="token comment">//执行</span>
    SearchResponse searchResponse <span class="token operator">=</span> client<span class="token punctuation">.</span><span class="token function">search</span><span class="token punctuation">(</span>searchRequest<span class="token punctuation">,</span> EsConfig<span class="token punctuation">.</span>COMMON_OPTIONS<span class="token punctuation">)</span><span class="token punctuation">;</span>

    <span class="token comment">//获取命中数据</span>
    SearchHits searchHits <span class="token operator">=</span> searchResponse<span class="token punctuation">.</span><span class="token function">getHits</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    SearchHit<span class="token punctuation">[</span><span class="token punctuation">]</span> hits <span class="token operator">=</span> searchHits<span class="token punctuation">.</span><span class="token function">getHits</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">for</span> <span class="token punctuation">(</span>SearchHit hit <span class="token operator">:</span> hits<span class="token punctuation">)</span> <span class="token punctuation">{</span>
        String str <span class="token operator">=</span> hit<span class="token punctuation">.</span><span class="token function">getSourceAsString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        Account account <span class="token operator">=</span> JSON<span class="token punctuation">.</span><span class="token function">parseObject</span><span class="token punctuation">(</span>str<span class="token punctuation">,</span> Account<span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"account:"</span> <span class="token operator">+</span> account<span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token comment">//account_number=970, balance=19648, firstname=Forbes, lastname=Wallace, age=28, gender=M,</span>
        <span class="token comment">//address=990 Mill Road, employer=Pheast, email=forbeswallace@pheast.com, city=Lopezo, state=AK)</span>
    <span class="token punctuation">}</span>

    <span class="token comment">//获取这次检索的到的分析信息</span>
    Aggregations aggregations <span class="token operator">=</span> searchResponse<span class="token punctuation">.</span><span class="token function">getAggregations</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">for</span> <span class="token punctuation">(</span>Aggregation aggregation <span class="token operator">:</span> aggregations<span class="token punctuation">.</span><span class="token function">asList</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
        System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"当前聚合:"</span> <span class="token operator">+</span> aggregation<span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token comment">//当前聚合:ageAgg</span>
        <span class="token comment">//当前聚合:balanceVag</span>
    <span class="token punctuation">}</span>

    Terms ageAgg1 <span class="token operator">=</span> aggregations<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">"ageAgg"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">for</span> <span class="token punctuation">(</span>Terms<span class="token punctuation">.</span>Bucket bucket <span class="token operator">:</span> ageAgg1<span class="token punctuation">.</span><span class="token function">getBuckets</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
        String str <span class="token operator">=</span> bucket<span class="token punctuation">.</span><span class="token function">getKeyAsString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"年龄:"</span> <span class="token operator">+</span> str <span class="token operator">+</span> <span class="token string">"===&gt;"</span> <span class="token operator">+</span> bucket<span class="token punctuation">.</span><span class="token function">getDocCount</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

// 年龄:38===>2
// 年龄:28===>1
// 年龄:32===>1
}

    Avg balanceVag1 <span class="token operator">=</span> aggregations<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">"balanceVag"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"平均薪资:"</span> <span class="token operator">+</span> balanceVag1<span class="token punctuation">.</span><span class="token function">getValueAsString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token comment">//平均薪资:25208.0</span>

<span class="token punctuation">}</span>

<span class="token annotation punctuation">@ToString</span>
<span class="token annotation punctuation">@Data</span>
<span class="token keyword">static</span> <span class="token keyword">class</span> <span class="token class-name">Account</span> <span class="token punctuation">{</span>
    <span class="token keyword">private</span> <span class="token keyword">int</span> account_number<span class="token punctuation">;</span>
    <span class="token keyword">private</span> <span class="token keyword">int</span> balance<span class="token punctuation">;</span>
    <span class="token keyword">private</span> String firstname<span class="token punctuation">;</span>
    <span class="token keyword">private</span> String lastname<span class="token punctuation">;</span>
    <span class="token keyword">private</span> <span class="token keyword">int</span> age<span class="token punctuation">;</span>
    <span class="token keyword">private</span> String gender<span class="token punctuation">;</span>
    <span class="token keyword">private</span> String address<span class="token punctuation">;</span>
    <span class="token keyword">private</span> String employer<span class="token punctuation">;</span>
    <span class="token keyword">private</span> String email<span class="token punctuation">;</span>
    <span class="token keyword">private</span> String city<span class="token punctuation">;</span>
    <span class="token keyword">private</span> String state<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79

项目使用ES

1、 提供按关键字查询的全文搜索功能。
2、 著名的ELK框架(ElasticSearch,Logstash,Kibana),实现企业海量日志的处理分析的解决方案。大数据领域的重要一份子
在这里插入图片描述

                                </div>
            <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-60ecaf1f42.css" rel="stylesheet">
                            </div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

谷粒商城微服务分布式高级篇ElasticSearch四——Java使用ElasticSearch 的相关文章

  • 基于改进 YOLOv5 的小目标检测论文代码复现

    使用yolov5 6 0源码 yolov5x yaml yolov5x pt 1 在主干网络中 加入CBAM 注意力模块增强网络特征提取能力 参考 加入CBAM YOLOv5 v6 0 backbone backbone from numb
  • 病毒相关网址

    病毒命名概述 https www symantec com security center a z https global ahnlab com site securitycenter viruscenter virusList do E
  • 华为snmpv3配置

    华为snmpv3配置 snmp agent 开启SNMP协议 snmp agent community read huawei acl 2001 只读属性为huawei 匹配acl 2001 snmp agent community wri
  • 一:单链表——⑤带环单链表的详细讲解

    今天看了一篇关于带环单链表精讲的文章 在这里给大家做一个总结 之前看过很多有关单链表带环的文章 但是有些文章讲的太文章化 不容易理解 理论性太强 接下来我会用最简单通俗易懂的语言解析这个问题 当你拿到一个单链表的数据信息时 我相信大部分的人
  • crontab执行脚本出错

    最近经常碰到关于crontab不能执行的 初步总结了有以下几个原因 第一 脚本的原因 大多数情况下 是我们的脚本的问题 这种问题导致crontab不能执行的概率占到70 以上 因为程序执行到某一步导致crontab终止执行 如 数据库访问出
  • 冒泡排序的理解

    冒泡排序将数组内的元素进行一定序列的算法 如 1 5 4 6 就变成 1 4 5 6 还可以 6 5 4 1 如何实现 例如 7 23 12 4 13 21 2 17 13 9 1 7与23比较 比较出最值 如果比较最大值 7 lt 23
  • 记录运行tensorflow报错及解决方法

    1 Could not load dynamic library libcudart so 11 0 dlerror libcudart so 11 0 cannot open shared 解决方法 安装cuda 1 下载cuda安装包
  • C#WinForm窗体内Panel容器中嵌入子窗体、程序主窗体设计例子

    C WinForm父级窗体内Panel容器中嵌入子窗体 程序主窗体设计例子 在项目开发中经常遇到父级窗体嵌入子窗体所以写了一个例子程序 顺便大概划分了下界面模块和配色 不足之处还望指点 主窗体窗体采用前面一篇博客设计扁平化窗体 C 自定义W
  • 用Python抢茅台脚本,转手纯赚一千!这不比什么兼职都管用?

    12 月我在朋友圈看到非常多的人开始在某东上抢茅台 抢到的话一瓶只要 1499 元 转手一卖就能净赚 1000 块钱 这简直就是白送钱的事嘛 就算不卖 自己囤着过个几年价格肯定又要上涨 像这种好事 我当然第一时间去体验了 抢了几天后 却抢了
  • 牛客网-OJ在线编程常见输入输出练习场(C++)

    牛客网 OJ在线编程常见输入输出练习场 C 主要分成数字和字符串输入输出两个部分 只选取几个有代表性的 详细可以去 牛客网 https ac nowcoder com acm contest 5647 from hr test questi
  • Arson In Berland Forest【Codeforces 1262 E】【二维差分 + 二分答案】

    Codeforces Round 602 Div 2 based on Technocup 2020 Elimination Round 3 E 这道E题当真是HACK了不少人 先讲一下题意吧 有一个N M的矩形 里面放了 X 和 两种类型
  • C++虚函数表解析

    本文内容参考自陈皓C 虚函数表解析 前沿 C 的虚函数主要是实现了多态的机制 关于多态 简而言之 就是父类型别的指针指向其子类的实例 然后通过父类的指针调用实际子类的成员函数 这种技术可以让父类指针有 多种形态 这是一种泛型技术 所谓泛型技
  • Android中的BGABadgeView未读消息提示小红点

    当用户收到未读消息的时候需要一个徽章来提示 也就是控件上面的一个小红点 下面就来描述一下小红点的实现方法 首先贴出BGABadgeView的Github地址 https github com bingoogolapple BGARefres
  • 【git】github 如何同步别人的仓库

    git github 如何同步别人的仓库 前言 假设你有两个 Git 仓库 并希望同步它们 以便它们含有相同的内容 你必须要在 Git 中配置一个远程服务器指向上游的仓库地址 这样你在 fork 中的更改才能同步到原始的仓库里 这样也能把原
  • Linux学习笔记day01

    Linux文件与目录结构 Linux一切皆文件 目录结构 目录名 释义 bin usr bin usr local bin 是Binary的缩写 这个目录存放着最经常使用的命令 home 存放普通用户的主目录 在Linux中每个用户都有一个
  • MDM命令操作介绍

    MDM涉及到的命令的操作介绍 一 Control Commands 控制类命令 1 Device Lock 设备锁屏 RequestType为RequestType 原文 Immediately locks the device If a
  • 单片机中OTA升级流程及bootload软件框架

    OTA升级流程及bootload软件框架 为什么要进行OTA升级 OTA升级的流程 bootload软件框架 bootload软件源码 针对接收HEX文件 为什么要进行OTA升级 OTA 英文全称是Over the Air Technolo

随机推荐

  • 推荐系统(2)——评测指标

    根据评测体系来评价一个推荐系统的好坏 由于推荐系统是和实际收益挂钩 所以需要考虑三方 用户 物品提供者和平台 的利益 实现最大化的三方共赢 接下来从 实 验 方 法 评
  • 若依系统取消验证码,超时登陆

    在登陆系统时 登陆界面会显示输入验证码 每次登陆比较麻烦 这里讲解下如何去除验证码 1 改变令牌时间延长登陆的超时时间 2 注掉前后台验证码中部分代码 登陆一段时间后 有时会被自动退出 这是系统现在了登陆超时时间 1 延长令牌超时时间 2
  • shell脚本部分

    第五次作业 题目 1 判断web服务是否运行 1 查看进程的方式判断该程序是否运行 2 通过查看端口的方式判断该程序是否运行 如果没有运行 则启动该服务并配置防火墙规则 2 使用curl命令访问第二题的web服务 看能否正常访问 如果能正常
  • 一文看完Vue3的渲染过程

    Vue3官网中有下面这样一张图 基本展现出了Vue3的渲染原理 本文会从源码角度来草率的看一下Vue3的运行全流程 旨在加深对上图的理解 从下面这个很简单的使用示例开始 import createApp ref from vue creat
  • springboot2.x使用redis作为缓存(使用fastjson序列化的方式,并调试反序列化异常)

    1 redis是内存数据库 可以单独作为数据库 有持久化方案 也可以作为缓存 一般为MySQL搭配 1 1 可以通过jedis 代码的方式手动将其传入redis作为缓存 1 2 也可以通过注解的方式 和spring boot整合 通过 ca
  • React井字棋后续功能完善

    React的入门教程 完成后有6个小功能点的补充 实现后的代码 import React from react import ReactDOM from react dom import index css function Square
  • 《视觉SLAM十四讲》笔记(1-3)

    目录 文章目录 目录 第1讲 引言 第2讲 初识SLAM 第3讲 三维空间刚体运动 旋转矩阵 点 向量和坐标系 坐标系间的欧式变换 变换矩阵与齐次坐标 齐次坐标 Homogeneous Coordinate 的优势 旋转向量和欧拉角 旋转向
  • STL系列之六 set与hash_set

    https blog csdn net MoreWindows article details 7029587
  • FFmpeg学习笔记--Ubuntu20.04编译安装FFmpeg、FFplay和FFprobe

    目录 1 下载FFmpeg 2 编译FFmpeg 3 设置环境变量 4 测试 1 下载FFmpeg 下载 5 1 版本的 ffmpeg wget http www ffmpeg org releases ffmpeg 5 1 tar gz
  • 运维工程师面试题 ----- 系统网络类

    1 如何检测某个端口所占用的进程 2 对于linux主机的cpu负载使用 什么情况下user的比例升高 什么情况下system的比例升高 请联系实际举例 3 在不umount的情况下 如何重新设置mount的参数 4 如果不小心在系统下执行
  • 01Linux下C语言锁的学习之Linux下的互斥锁

    01Linux下C语言锁的学习之Linux下的互斥锁 概述 为什么需要锁 因为当我们多个线程访问全局变量时 同时操作的话可能存在问题 例如小明和小红同时去拿家里的银行账号里的钱 小明看到时为100块 小红也是 但是小明先拿到 若不加锁 那么
  • GLUE 数据下载与提交

    1 下载 GLUE 任务分为主要的任务 CoLA MNLI MRPC QNLI QQP RTE SST 2 STS B WNLI 以及附加的任务 Diagnostic 下面简称为 AX 其中只有 STS B 是回归任务 其余的全为分类任务
  • webpack 学习(一)前端常用的模块化设计模式之AMD

    AMD 异步模块定义 是为浏览器环境设计的 因为 CommonJS 模块系统是同步加载的 当前浏览器环境还没有准备好同步加载模块的条件 AMD 定义了一套 JavaScript 模块依赖异步加载标准 来解决同步加载的问题 模块通过 defi
  • 【第十一届泰迪杯数据挖掘挑战赛】A 题:新冠疫情防控数据的分析 思路+代码(持续更新)

    第十一届泰迪杯数据挖掘挑战赛 A 题 新冠疫情防控数据的分析 思路 代码 持续更新 问题背景 解决问题 代码下载 数据分析 Task1 Task2 Task3 Task4 问题背景 自 2019 年底至今 全国各地陆续出现不同程度的新冠病毒
  • 控制反转及Bean装配的几种方式

    控制反转及Bean装配的几种方式 Spring两大基础核心 一是控制反转 二是依赖注入 控制反转和依赖注入 控制反转 通俗来讲 就是将bean的创建和销毁交由另一个东西全权管理 这个东西叫做Spring容器 一般来说 在Spring应用中
  • 华为服务器提示错误信息,服务器错误日志

    服务器错误日志 内容精选 换一换 为加强对数据的容灾管理 云堡垒机支持手动备份和配置日志远程备份 提高审计数据安全性和系统可扩展性 通过手动导出 下载各功能模块数据文件保存在本地 可手动备份日志请参见表1 系统内导出的csv文件 用Exce
  • element el-date-picker选择时间范围限制

    element el date picker选择时间范围限制
  • 生物识别技术在场景应用中发挥重大作用

    相较于条码支付 刷脸支付的硬件成本还是比较高 而且占空间 因此 其应用场景没有条码支付丰富 微信扫脸支付 在商超 餐饮以及便利店等场景中 收银空间是有限的 布放哪怕像PAD大小的刷脸支付设备都会觉得局促 如果同时布放两个哪怕像PAD大小的设
  • Odoo 进销存报表现已开源

    根据会计区间或自定义查询时间段 对仓库的产品出入库情况进行查看 模块地址参见内部群公告
  • 谷粒商城微服务分布式高级篇ElasticSearch四——Java使用ElasticSearch

    文章目录 ElasticSearch Rest Client Java使用ElasticSearch 存储数据到ES 从ES检索数据 项目使用ES ElasticSearch Rest Client Java使用ElasticSearch