Elsaticsearch java基本操作

索引 基本操作
package com.orchids.elasticsearch.web.controller;import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONUtil;
import com.orchids.elasticsearch.web.po.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.elasticsearch.client.indices.GetIndexRequest;
import org.elasticsearch.client.indices.GetIndexResponse;
import org.elasticsearch.cluster.metadata.MappingMetadata;
import org.elasticsearch.common.xcontent.XContentType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;/*** @ Author qwh* @ Date 2024/7/12 19:18*/
@Slf4j
@Api(tags = "索引")
@RestController
@RequestMapping("/elastic/index")
@RequiredArgsConstructor
public class ElasticIndexController {private final RestHighLevelClient client;static final String MAPPING_TEMPLATE = "{\n" +"  \"mappings\": {\n" +"    \"properties\": {\n" +"      \"name\":{\n" +"        \"type\": \"text\",\n" +"        \"analyzer\": \"ik_max_word\"\n" +"      },\n" +"      \"age\":{\n" +"        \"type\": \"integer\"\n" +"      },\n" +"      \"sex\":{\n" +"        \"type\": \"text\"\n" +"      }\n" +"    }\n" +"  }\n" +"}";@ApiOperation("添加索引")@PostMapping("/add")public String CreateIndex(@RequestParam("index") String index) throws IOException {CreateIndexRequest request = new CreateIndexRequest(index);request.source(MAPPING_TEMPLATE, XContentType.JSON);CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);log.error("response{}",response);if (response!=null){return "add index success";}else {return "add index fail";}}@ApiOperation("获取索引")@GetMapping("/get")public Map<String, Object> GetIndex(@RequestParam("index") String index) throws IOException {//创建请求对象GetIndexRequest request = new GetIndexRequest(index);//发送请求GetIndexResponse response = client.indices().get(request, RequestOptions.DEFAULT);// todo 健壮性if (client.indices().exists(request,RequestOptions.DEFAULT)){MappingMetadata data = response.getMappings().get(index);return data.getSourceAsMap();}else {return null;}}/*** 查看指定索引的映射信息。* <p>* 通过该接口,可以获取Elasticsearch中指定索引的映射设置。映射(Mapping)定义了字段的类型和分析器等配置,* 对于查询和分析数据至关重要。此方法接收一个索引名称作为参数,返回该索引的映射配置。** @param index 指定的索引名称,用于获取该索引的映射信息。* @return 包含指定索引映射配置的Map对象。* @throws IOException 如果获取映射信息时发生I/O错误。*/@ApiOperation("查看映射")@GetMapping("/mapper")public Map<String, Object> Index(@RequestParam("index") String index) throws IOException {// todo 健壮性// 创建GetIndexRequest对象,指定要获取映射信息的索引。GetIndexRequest request = new GetIndexRequest(index);// 执行请求,获取索引的映射响应。GetIndexResponse response = client.indices().get(request, RequestOptions.DEFAULT);// 从响应中提取映射配置。Map<String, MappingMetadata> mappings = response.getMappings();// 获取指定索引的映射元数据。MappingMetadata metadata = mappings.get(index);// 从映射元数据中提取源映射配置。Map<String, Object> source = metadata.getSourceAsMap();// 返回源映射配置。return source;}@ApiOperation("删除索引")@DeleteMapping("/del")public String  DeleteIndex(@RequestParam("index") String index) throws IOException {//创建请求对象DeleteIndexRequest request = new DeleteIndexRequest(index);//发送请求return client.indices().delete(request, RequestOptions.DEFAULT)!=null ? index+"删除成功" : index+"删除失败";}}
文档
package com.orchids.elasticsearch.web.controller;import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.orchids.elasticsearch.web.po.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.ElasticsearchStatusException;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.springframework.web.bind.annotation.*;import java.io.IOException;
import java.util.LinkedList;
import java.util.List;/*** @ Author qwh* @ Date 2024/7/12 21:31*/
@Slf4j
@Api(tags = "文档")
@RestController
@RequestMapping("/elastic/doc")
@RequiredArgsConstructor
public class ElasticDocumentController {private final RestHighLevelClient client;@ApiOperation("添加文档")@PostMapping("/add")public String addDocument(@RequestParam("index") String index, @RequestBody User user) throws IOException {if (user==null) {throw new RuntimeException("非法参数");}String jsonUser = JSONUtil.toJsonStr(user);System.out.println(jsonUser);//准备请求对象IndexRequest request = new IndexRequest(index).id(user.getName());//准备json文档request.source(jsonUser, XContentType.JSON);//发送请求 putIndexResponse response = client.index(request, RequestOptions.DEFAULT);if (response!=null){return "success";}else {return "fail";}}@ApiOperation("获取文档")@GetMapping("/get")public User getDocument(@RequestParam("id") String id,@RequestParam("index") String index) throws IOException {//准备请求对象 参数:索引库 文档idGetRequest request = new GetRequest(index).id(id);//发送请求 得到json格式响应GetResponse response = client.get(request, RequestOptions.DEFAULT);String jsonBean = response.getSourceAsString();log.error("响应response{}",jsonBean);User bean = JSONUtil.toBean(jsonBean, User.class);System.out.println(bean);return bean;}@ApiOperation("所有文档")@GetMapping("/all")public List<User> allDocument(@RequestParam String index) throws IOException {//准备请求对象 参数索引SearchRequest request = new SearchRequest(index);//请求参数request.source().query(QueryBuilders.matchAllQuery());//发送请求 并返回响应SearchResponse response = client.search(request, RequestOptions.DEFAULT);//解析响应return handleResponse(response);}private List<User> handleResponse(SearchResponse response) {SearchHits searchHits = response.getHits();//获取总条数long total = searchHits.getTotalHits().value;log.error("一共搜索到{}条数据",total);//遍历数组SearchHit[] hits = searchHits.getHits();List<User> users = new LinkedList<>();for (SearchHit hit : hits) {//得到每一个数组的_source 原始的json文档String source = hit.getSourceAsString();log.error("原始的json格式{}",source);//反序列化User user = JSONUtil.toBean(source, User.class);log.error("放序列化后json格式{}",user);users.add(user);}return users;}@ApiOperation("删除文档")@DeleteMapping("/del")public String updateDocument(@RequestParam("index") String index,@RequestParam("id")String id) throws IOException {//requestDeleteRequest request = new DeleteRequest(index,id);//修改内容DeleteResponse delete = client.delete(request, RequestOptions.DEFAULT);if (delete!=null){return "success";}else {return "fail";}}@ApiOperation("修改文档")@PostMapping("/update")public String updateDocument(@RequestParam("index") String index,@RequestBody User user) throws IOException {if (user.getName()==null) {return "id参数非法";}//requestUpdateRequest request = new UpdateRequest(index,user.getName());//修改内容request.doc("name",user.getName(),"age",user.getAge(),"sex",user.getSex());//发送请求//当es中没有对应的id 添加该idtry {//修改client.update(request, RequestOptions.DEFAULT);} catch (ElasticsearchStatusException e) {//添加String jsonUser = JSONUtil.toJsonStr(user);System.out.println(jsonUser);//准备请求对象IndexRequest req = new IndexRequest(index).id(user.getName());//准备json文档req.source(jsonUser, XContentType.JSON);//添加client.index(req,RequestOptions.DEFAULT);}return "修改成功";}@ApiOperation("批量添加")@PutMapping("/adds")public String LoadDocument() throws IOException {return "todo";
//        int current = 1;
//        int size = 100;
//        while (true){
//            Page<User> page = new Page<>(current, size);
//            List<User> users = page.getRecords();
//            if (CollUtil.isEmpty(users)) {
//                return null;
//            }
//            log.info("加载第{}页数据共{}条", current, users.size());
//            //创建request
//            BulkRequest request = new BulkRequest("user");
//            //准备参数
//            for (User user : users) {
//
//    /*            IndexRequest indexRequest = new IndexRequest().id(user.getName());
//                indexRequest.source(JSONUtil.toJsonStr(user),XContentType.JSON);
//                request.add(indexRequest);*/
//
//                request.add(new IndexRequest().id(user.getName()).source(JSONUtil.toJsonStr(user), XContentType.JSON));
//            }
//            client.bulk(request, RequestOptions.DEFAULT);
//            current++;
//        }}
}
Java client
package com.orchids.elasticsearch.web.controller;import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONUtil;
import com.orchids.elasticsearch.web.po.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.Aggregations;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
import org.elasticsearch.search.sort.SortOrder;
import org.springframework.web.bind.annotation.*;import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;/*** @ Author qwh* @ Date 2024/7/12 21:48*/
@Slf4j
@Api(tags = "Restapi")
@RestController
@RequestMapping("/elastic/rest")
@RequiredArgsConstructor
public class ElasticRestController {private final RestHighLevelClient client;
//    @GetMapping()public void testAgg() throws IOException {// 1.创建RequestSearchRequest request = new SearchRequest("items");// 2.准备请求参数BoolQueryBuilder bool = QueryBuilders.boolQuery().filter(QueryBuilders.termQuery("category", "手机")).filter(QueryBuilders.rangeQuery("price").gte(300000));request.source().query(bool).size(0);// 3.聚合参数request.source().aggregation(AggregationBuilders.terms("brand_agg").field("brand").size(5));// 4.发送请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 5.解析聚合结果Aggregations aggregations = response.getAggregations();// 5.1.获取品牌聚合Terms brandTerms = aggregations.get("brand_agg");// 5.2.获取聚合中的桶List<? extends Terms.Bucket> buckets = brandTerms.getBuckets();// 5.3.遍历桶内数据for (Terms.Bucket bucket : buckets) {// 5.4.获取桶内keyString brand = bucket.getKeyAsString();System.out.print("brand = " + brand);long count = bucket.getDocCount();System.out.println("; count = " + count);}}@ApiOperation("高亮查询")@GetMapping("/high") //high okpublic List<User> HighlightQuery(@ApiParam(name = "index",value = "索引",required = true) @RequestParam("index")String index,@ApiParam(name = "high",value = "高亮条件",required = true)@RequestParam("high") String high ) throws IOException {// 1.创建RequestSearchRequest request = new SearchRequest(index);// 2.组织请求参数// 2.1.query条件request.source().query(QueryBuilders.matchQuery("name", high));// 2.2.高亮条件request.source().highlighter(SearchSourceBuilder.highlight().field("name").preTags("<em>").postTags("</em>"));// 3.发送请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4.解析响应return hand(response);}private List<User> hand(SearchResponse response) {SearchHits searchHits = response.getHits();// 1.获取总条数long total = searchHits.getTotalHits().value;System.out.println("共搜索到" + total + "条数据");// 2.遍历结果数组SearchHit[] hits = searchHits.getHits();List<User> result = new LinkedList<>();for (SearchHit hit : hits) {// 3.得到_source,也就是原始json文档String source = hit.getSourceAsString();// 4.反序列化User user = JSONUtil.toBean(source, User.class);// 5.获取高亮结果Map<String, HighlightField> hfs = hit.getHighlightFields();if (CollUtil.isNotEmpty(hfs)) {// 5.1.有高亮结果,获取name的高亮结果HighlightField hf = hfs.get("name");if (hf != null) {// 5.2.获取第一个高亮结果片段,就是商品名称的高亮值String hfName = hf.getFragments()[0].string();user.setName(hfName);}}result.add(user);}return result;}@ApiOperation("分页查询")@GetMapping("/page")public List <User> pageQuery(@ApiParam(value = "索引",required = true)@RequestParam("index")String index,@ApiParam(value = "字段条件",required = true)@RequestParam("field") String field,@ApiParam(value = "当前页",required = true)@RequestParam("current")String current,@ApiParam(value = "页大小",required = true)@RequestParam("size")String size) throws IOException {// 1.创建RequestSearchRequest request = new SearchRequest(index);// 2.组织请求参数// 2.1.搜索条件参数request.source().query(QueryBuilders.matchQuery("name", field));// 2.2.排序参数request.source().sort("age", SortOrder.ASC);// 2.3.分页参数request.source().from((Integer.valueOf(current) - 1) * Integer.valueOf(size)).size(Integer.valueOf(size));// 3.发送请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4.解析响应return handleResponse(response);}private List <User> handleResponse(SearchResponse response) {SearchHits searchHits = response.getHits();// 1.获取总条数long total = searchHits.getTotalHits().value;System.out.println("共搜索到" + total + "条数据");// 2.遍历结果数组SearchHit[] hits = searchHits.getHits();List<User> result = new LinkedList<>();for (SearchHit hit : hits) {// 3.得到_source,也就是原始json文档String source = hit.getSourceAsString();// 4.反序列化并打印User user = JSONUtil.toBean(source, User.class);result.add(user);}return result;}@ApiOperation("复合条件")@GetMapping("/compare")public List<User> compareQuery(@ApiParam(value = "索引",required = true)@RequestParam("index") String index,@ApiParam(value = "名称",required = true)@RequestParam ("name")String name,@ApiParam(value = "性别",required = true)@RequestParam("sex") String sex,@ApiParam(value = "年龄",required = true)@RequestParam("age") String age)throws IOException {// 1.创建RequestSearchRequest request = new SearchRequest(index);// 2.组织请求参数// 2.1.准备bool查询BoolQueryBuilder bool = QueryBuilders.boolQuery();// 2.2.关键字搜索if (name!=null){bool.must(QueryBuilders.matchQuery("name", name));}if (sex!=null){// 2.3.品牌过滤bool.filter(QueryBuilders.termQuery("sex", sex));}// 2.4.价格过滤  gt >if (age!=null){bool.filter(QueryBuilders.rangeQuery("age").gt(age));}request.source().query(bool);// 3.发送请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4.解析响应return handleResponse(response);}@ApiOperation("区间查询")@GetMapping("/term")//termpublic List<User> rangeQuery(@ApiParam(value = "索引",required = true)@RequestParam String index,@ApiParam(value = "左区间",required = true)@RequestParam("gt") String gt,@ApiParam(value = "右区间",required = true)@RequestParam("lt") String lt,@ApiParam(value = "支持排序的字段",required = true)@RequestParam("field") String field) throws IOException {//创建requestSearchRequest request = new SearchRequest(index);//请求参数//todo 健壮性request.source().query(QueryBuilders.rangeQuery(field).gte(gt).lte(lt));//解析相应SearchResponse response = client.search(request, RequestOptions.DEFAULT);return handleResponse(response);}@ApiOperation("多条件查询")@GetMapping("/multi_match")//multi_match todo 待探讨public List<User> multi_matchQuery(@ApiParam(value = "包含条件1" ,required = true)@RequestParam("name1") String args1,@ApiParam(value = "包含条件2",required = true)@RequestParam("name2") String args2) throws IOException {//创建requestSearchRequest request = new SearchRequest("user");//请求参数request.source().query(QueryBuilders.multiMatchQuery("name",args1,args2));//解析相应SearchResponse response = client.search(request, RequestOptions.DEFAULT);return handleResponse(response);}@ApiOperation("match查询")@GetMapping("/match")//match okpublic List<User> matchQuery(@ApiParam(value = "索引",name = "index",required = true) @RequestParam("index")String index,@ApiParam(value ="匹配字段",name = "field",required = true)@RequestParam("field") String field) throws IOException {//创建requestSearchRequest request = new SearchRequest(index);//请求参数request.source().query(QueryBuilders.matchQuery("name",field));//解析相应SearchResponse response = client.search(request, RequestOptions.DEFAULT);return handleResponse(response);}@ApiOperation("match-all查询")@GetMapping("/match-all")//match-all okpublic List<User> SearchMatchAll(@ApiParam(value = "索引",name = "index",required = true) @RequestParam("index")String index) throws IOException {//创建requestSearchRequest request = new SearchRequest(index);//请求参数request.source().query(QueryBuilders.matchAllQuery());//解析相应SearchResponse response = client.search(request, RequestOptions.DEFAULT);return handleResponse(response);}
}
Bean
package com.orchids.elasticsearch.web.config;import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @ Author qwh* @ Date 2024/7/12 21:16*/
@Configuration
public class RestClientConfiguration {@Beanpublic RestHighLevelClient restHighLevelClient(){return new RestHighLevelClient(RestClient.builder(HttpHost.create("http://localhost:9200")));}
}
po
package com.orchids.elasticsearch.web.po;import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;import java.io.Serializable;/*** @ Author qwh* @ Date 2024/7/12 20:20*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@ApiModel(description = "索引库实体")
public class User implements Serializable {@ApiModelProperty(value = "名字",name = "name",example = "二哈")
//    @NonNullprivate String name;
//    @NonNull@ApiModelProperty(value = "年龄",name = "age",example = "99")private Integer age;
//    @NonNull@ApiModelProperty(value = "性别",name = "sex",example = "男")private String sex;}
app
package com.orchids.elasticsearch;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class ElasticsearchApplication {public static void main(String[] args) {SpringApplication.run(ElasticsearchApplication.class, args);}}
配置类

server:port: 8080
logging:level:web: infopattern:dateformat: HH:mm:ss:SSSfile:path: "logs"
knife4j:enable: trueopenapi:title: 接口文档description: "接口文档"email: 123123i@123.cnconcat: erhaurl: https://www.orchids.loveversion: v1.0.0group:default:group-name: defaultapi-rule: packageapi-rule-resources: com.orchids.elasticsearch.web
依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.orchids</groupId><artifactId>elasticsearch</artifactId><version>0.0.1-SNAPSHOT</version><name>elasticsearch</name><description>elasticsearch</description><properties><java.version>1.8</java.version><elasticsearch.version>7.12.1</elasticsearch.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.7.12</spring-boot.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>${elasticsearch.version}</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>${elasticsearch.version}</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>${elasticsearch.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi2-spring-boot-starter</artifactId><version>4.1.0</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-json</artifactId><version>5.8.28</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.6</version></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.orchids.elasticsearch.ElasticsearchApplication</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/44844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索JT808协议在车辆远程视频监控系统中的应用

一、部标JT808协议概述 随着物联网技术的迅猛发展&#xff0c;智能交通系统&#xff08;ITS&#xff09;已成为现代交通领域的重要组成部分。其中&#xff0c;车辆远程监控与管理技术作为ITS的核心技术之一&#xff0c;对于提升交通管理效率、保障道路安全具有重要意义。 JT8…

TensorBoard ,PIL 和 OpenCV 在深度学习中的应用

重要工具介绍 TensorBoard&#xff1a; 是一个TensorFlow提供的强大工具&#xff0c;用于可视化和理解深度学习模型的训练过程和结果。下面我将介绍TensorBoard的相关知识和使用方法。 TensorBoard 简介 TensorBoard是TensorFlow提供的一个可视化工具&#xff0c;用于&#x…

尚品汇-(十七)

目录&#xff1a; &#xff08;1&#xff09;获取价格信息 &#xff08;2&#xff09;获取销售信息 前面的表&#xff1a; &#xff08;1&#xff09;获取价格信息 继续编写接口&#xff1a;ManagerService /*** 获取sku价格* param skuId* return*/ BigDecimal getSkuPrice…

『 Linux 』匿名管道应用 - 简易进程池

文章目录 池化技术进程池框架及基本思路进程的描述组织管道通信建立的潜在问题 任务的描述与组织子进程读取管道信息控制子进程进程退出及资源回收 池化技术 池化技术是一种编程技巧,一般用于优化资源的分配与复用; 当一种资源需要被使用时这意味着这个资源可能会被进行多次使…

mqtt.fx连接阿里云

本文主要是记述一下如何使用mqtt.fx连接在阿里云上创建好的MQTT服务。 1 根据MQTT填写对应端口即可 找到设备信息&#xff0c;里面有MQTT连接参数 2 使用物模型通信Topic&#xff0c;注意这里的post说设备上报&#xff0c;那也就是意味着云端订阅post&#xff1b;set则意味着设…

【轻松拿捏】Java-final关键字(面试)

目录 1. 定义和基本用法 回答要点&#xff1a; 示例回答&#xff1a; 2. final 变量 回答要点&#xff1a; 示例回答&#xff1a; 3. final 方法 回答要点&#xff1a; 示例回答&#xff1a; 4. final 类 回答要点&#xff1a; 示例回答&#xff1a; 5. final 关键…

搭建hadoop+spark完全分布式集群环境

目录 一、集群规划 二、更改主机名 三、建立主机名和ip的映射 四、关闭防火墙(master,slave1,slave2) 五、配置ssh免密码登录 六、安装JDK 七、hadoop之hdfs安装与配置 1)解压Hadoop 2)修改hadoop-env.sh 3)修改 core-site.xml 4)修改hdfs-site.xml 5) 修改s…

【进阶篇-Day9:JAVA中单列集合Collection、List、ArrayList、LinkedList的介绍】

目录 1、集合的介绍1.1 概念1.2 集合的分类 2、单列集合&#xff1a;Collection2.1 Collection的使用2.2 集合的通用遍历方式2.2.1 迭代器遍历&#xff1a;&#xff08;1&#xff09;例子&#xff1a;&#xff08;2&#xff09;迭代器遍历的原理&#xff1a;&#xff08;3&…

排序——交换排序

在上篇文章我们详细介绍了排序的概念与插入排序&#xff0c;大家可以通过下面这个链接去看&#xff1a; 排序的概念及插入排序 这篇文章就介绍一下一种排序方式&#xff1a;交换排序。 一&#xff0c;交换排序 基本思想&#xff1a;两两比较&#xff0c;如果发生逆序则交换…

jenkins系列-09.jpom构建java docker harbor

本地先启动jpom server agent: /Users/jelex/Documents/work/jpom-2.10.40/server-2.10.40-release/bin jelexjelexxudeMacBook-Pro bin % sh Server.sh start/Users/jelex/Documents/work/jpom-2.10.40/agent-2.10.40-release/bin jelexjelexxudeMacBook-Pro bin % ./Agent.…

达梦数据库的系统视图v$sessions

达梦数据库的系统视图v$sessions 达梦数据库&#xff08;DM Database&#xff09;是中国的一款国产数据库管理系统&#xff0c;它提供了类似于Oracle的系统视图来监控和管理数据库。V$SESSIONS 是达梦数据库中的一个系统视图&#xff0c;用于显示当前数据库会话的信息。 以下…

全自主巡航无人机项目思路:STM32/PX4 + ROS + AI 实现从传感融合到智能规划的端到端解决方案

1. 项目概述 本项目旨在设计并实现一款高度自主的自动巡航无人机系统。该系统能够按照预设路径自主飞行&#xff0c;完成各种巡航任务&#xff0c;如电力巡线、森林防火、边境巡逻和灾害监测等。 1.1 系统特点 基于STM32F4和PX4的高性能嵌入式飞控系统多传感器融合技术实现精…

MYSQL--第八次作业

MYSQL–第八次作业 一、备份与恢复 环境搭建&#xff1a; CREATE DATABASE booksDB; use booksDB;CREATE TABLE books ( bk_id INT NOT NULL PRIMARY KEY, bk_title VARCHAR(50) NOT NULL, copyright YEAR NOT NULL );CREATE TABLE authors ( auth_id INT NOT NULL PRI…

geoServer在windows中下载安装部署详细操作教程

这里写目录标题 1.安装环境检查2.下载安装包&#xff08;1&#xff09;进入下载地址&#xff1a;&#xff08;2&#xff09;以下载最新版为例&#xff0c;点击“Stable GeoServer”下载&#xff08;3&#xff09;安装有两种方式&#xff08;4&#xff09;我这里选择下载war包 3…

python作业三

1.使用requests模块获取这个json文件http://java-api.super-yx.com/html/hello.json 2.将获取到的json转为dict 3.将dict保存为hello.json文件 4.用io流写一个copy(src,dst)函数,复制hello.json到C:\hello.json import json import shutilimport requests #使用requests模块获…

Qt MV架构-视图类

一、基本概念 在MV架构中&#xff0c;视图包含了模型中的数据项&#xff0c;并将它们呈现给用户。数据项的表示方法&#xff0c;可能和数据项在存储时用的数据结构完全不同。 这种内容与表现分离之所以能够实现&#xff0c;是因为使用了 QAbstractItemModel提供的一个标准模…

`nmap`模块是一个用于与Nmap安全扫描器交互的库

在Python中&#xff0c;nmap模块是一个用于与Nmap安全扫描器交互的库。Nmap&#xff08;Network Mapper&#xff09;是一个开源工具&#xff0c;用于发现网络上的设备和服务。虽然Python的nmap模块可能不是官方的Nmap库&#xff08;因为Nmap本身是用C/C编写的&#xff09;&…

基于JavaSpringBoot+Vue+uniapp微信小程序校园宿舍管理系统设计与实现

基于JavaSpringBootVueuniapp微信小程序实现校园宿舍管理系统设计与实现 目录 第一章 绪论 1.1 研究背景 1.2 研究现状 1.3 研究内容 第二章 相关技术介绍 2.1 Java语言 2.2 HTML网页技术 2.3 MySQL数据库 2.4 Springboot 框架介绍 2.5 VueJS介绍 2.6 ElementUI介绍…

视频转换、提取音频、视频加水印、视频去水印、音频转换、分割合并压缩等,批量还几乎免费

「想转就转视频音频助手」免费版来袭&#xff01; 在数字化时代&#xff0c;视频和音频处理已成为我们日常生活的一部分。无论是制作个人视频博客、编辑家庭影片&#xff0c;还是处理音频文件&#xff0c;我们都在寻找一个强大而易于使用的解决方案。今天&#xff0c;我要向您…

基于大语言模型(LLM)的合成数据生成、策展和评估的综述

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 合集&#x…