使用docker安装zookeeper、kafka、druid进行摄取数据
文章目录
- apache druid安装
- zookeeper安装
- kafka安装
- 验证
- 安装druid
- apache druid摄取数据
- 从本地文件摄取数据
- 从Kafka摄取数据
- Java客户端操作druid
- netty开发
- 1 HTTP接口方式
- 2 TCP方式
Druid中的所有数据都被组织成段,这些段是数据文件,通常每个段最多有几百万行。在Druid中加载数据称为摄取,它包括从源系统读取数据并基于该数据创建段。在大多数摄取方法中,加载数据的工作由MiddleManager进程完成。
Druid数据存储在数据源中,与传统关系型数据库中的表类似。
Druid把数据集分为三个部分:
Timestamp column(时间戳):将时间字段单独处理,是因为Druid的所有查询都是围绕时间轴进行的。
Dimension columns(维度列): 维度列是数据的属性,是按原样存储的列,可以在查询时以特殊方式对维度进行分组、筛选或应用聚合器。
Metric columns(指标列):指标列是以聚合形式存储的列,用来做数据的聚合计算。指标列一般是可以衡量的数据,一般可以做count、sum等操作。
項目目标是使用druid主要用于存储车辆定位信息,具体流程如下图:
apache druid安装
Apache druid运行需要依赖其他一些软件环境,所以需要先安装依赖环境,最后再安装druid。
这些依赖的环境包括:
jdk
zookeeper
kafka
以下安装的ip地址均需要改成自己的ip地址,否则启动报错
zookeeper安装
#启动容器:
docker run -id --name my_zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime zookeeper:3.4.14
#查看容器运行情况:
docker logs -f my_zookeeper
kafka安装
下载安装
#拉取镜像
docker pull wurstmeister/kafka
#启动容器
docker run -id --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=68.79.63.42:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://68.79.63.42:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka
#查看容器运行情况:
docker logs -f kafka
验证
安装完成后需要测试一下安装是否成功:
#进入kafka容器
docker exec -it kafka /bin/bash
#进入bin目录
cd /opt/kafka_2.12-2.5.0/bin/
#执行命令,创建名称为test的队列,此队列有一个副本,一个分区
./kafka-topics.sh --create --zookeeper 68.79.63.42:2181 --replication-factor 1 --partitions 1 --topic test
#查看刚刚创建的队列
./kafka-topics.sh -list -zookeeper 68.79.63.42:2181
下面是消息的监听与接收:
安装druid
cd /root
wget https://archive.apache.org/dist/incubator/druid/0.15.0-incubating/apache-druid-0.15.0-incubating-bin.tar.gz
安装:
tar -zxvf apache-druid-0.15.0-incubating-bin.tar.gz
mv apache-druid-0.15.0-incubating druid
#此时druid已经安装在/root目录下,根目录为/root/druid
配置
# 因为使用了本地zk,所以需要去掉2181端口的检测
vi /root/druid/bin/verify-default-ports
my @ports = (1527, 8081, 8082, 8083, 8090, 8091, 8200, 9095);
# 注释Zookeeper配置
vi /root/druid/conf/supervise/single-server/small.conf
#!p10 zk bin/run-zk conf
# 修改公共配置
vi /root/druid/conf/druid/single-server/small/_common/common.runtime.properties
#
# Hostname
#
druid.host=127.0.0.1
#
# Zookeeper
#
druid.zk.service.host=127.0.0.1
druid.zk.paths.base=/druid
# 设置各组件时区
vi /root/druid/conf/druid/single-server/small/broker/jvm.config
-Duser.timezone=UTC+8
vi /root/druid/conf/druid/single-server/small/coordinator-overlord/jvm.config
-Duser.timezone=UTC+8
vi /root/druid/conf/druid/single-server/small/historical/jvm.config
-Duser.timezone=UTC+8
vi /root/druid/conf/druid/single-server/small/middleManager/jvm.config
-Duser.timezone=UTC+8
vi /root/druid/conf/druid/single-server/small/router/jvm.config
-Duser.timezone=UTC+8
启动
执行启动脚本
/root/druid/bin/start-single-server-small
启动完成后访问:http://{druid服务ip}:8888
apache druid摄取数据
前置条件
启动zk,端口2181
启动kafka,端口9092
启动druid
从本地文件摄取数据
案例一
第一步:访问druid控制台http://{druid服务ip}:8888/
第二步:点击Load data进入加载数据页面,并输入下面相关参数
在 Base directory 中输入 quickstart/tutorial/, 在 File filter 中输入 wikiticker-2015-09-12-sampled.json.gz。
第三步:点击Next:Parse data进入下个页面
第四步:点击Next:Parse time进入下个页面
第五步:点击Next:Transform进入下个页面
第六步:点击Next:Filter进入下个页面
第七步:点击Next:Configure schema进入下个页面
第八步:点击Next:Partition进入下个页面
第九步:点击Next:Tune进入下个页面
第十步:点击Next:Publish进入下个页面
第十一步:点击Next:Edit JSON spec进入下个页面
可以看到本页面展示的json数据其实就是数据摄取规范,根据我们前面每个页面设置的参数最终生成了当前的json数据。
数据摄取任务规范可以手动编写,也可以通过Druid控制台里内置的数据加载器编写。数据加载器可以通过采样摄入的数据并配置各种摄入参数来帮助您生成摄取任务规范。数据加载器当前仅支持本地批处理提取(将来的版本中将提供对流的支持,包括存储在Apache Kafka和AWS Kinesis中的数据)。目前只能通过手动书写摄入规范来进行流式摄入。
第十二步:点击Submit按钮进行任务提交,跳转到任务页面
第十三步:任务执行完成后,点击Datasources进入数据源页面,可以看到mydatasource数据源
第十四步:点击Query进入数据查询页面,可以查询数据
从Kafka摄取数据
准备工作:
#进入kafka容器
docker exec -it kafka /bin/bash
#进入bin目录
cd /opt/kafka_2.12-2.5.0/bin/
#执行命令,创建名称为test的队列,此队列有一个副本,一个分区
./kafka-topics.sh --create --zookeeper 68.79.63.42:2181 --replication-factor 1 --partitions 1 --topic ip_msg
#查看刚刚创建的队列
./kafka-topics.sh -list -zookeeper 68.79.63.42:2181
第一步:访问druid控制台http://{druid服务ip}:8888/
第二步:点击Tasks按钮进入任务页面
第三步:点击Submit supervisor按钮弹出窗口
第四步:在弹出窗口中输入如下内容,用于配置数据摄取策略(从kafka的ip_msg队列中摄取数据)
{"type": "kafka","dataSchema": {"dataSource": "ip_msg","parser": {"type": "string","parseSpec": {"format": "json","timestampSpec": {"column": "timestamp","format": "iso"},"dimensionsSpec": {"dimensions": ["srcIP","dstIP"]}}},"metricsSpec" : [{ "type" : "count", "name" : "count" },{ "type" : "longSum", "name" : "packets", "fieldName" : "packets" },{ "type" : "longSum", "name" : "bytes", "fieldName" : "bytes" }],"granularitySpec": {"type": "uniform","segmentGranularity": "week","queryGranularity": "minute","rollup": true}},"tuningConfig": {"type": "kafka","reportParseExceptions": false},"ioConfig": {"topic": "ip_msg","replicas": 1,"taskDuration": "PT10M","completionTimeout": "PT20M","consumerProperties": {"bootstrap.servers": "39.99.56.166:9092"}}
}
第五步:执行命令,向kafka队列发送消息
#启动生产者,向ip_msg队列发送消息
./kafka-console-producer.sh --broker-list 68.79.63.42:9092 --topic ip_msg
消息内容如下:
{"timestamp":"2018-01-01T01:01:35Z","srcIP":"1.1.1.1", "dstIP":"2.2.2.2","packets":20,"bytes":9024}
{"timestamp":"2018-01-01T01:01:51Z","srcIP":"1.1.1.1", "dstIP":"2.2.2.2","packets":255,"bytes":21133}
{"timestamp":"2018-01-01T01:01:59Z","srcIP":"1.1.1.1", "dstIP":"2.2.2.2","packets":11,"bytes":5780}
{"timestamp":"2018-01-01T01:02:14Z","srcIP":"1.1.1.1", "dstIP":"2.2.2.2","packets":38,"bytes":6289}
{"timestamp":"2018-01-01T01:02:29Z","srcIP":"1.1.1.1", "dstIP":"2.2.2.2","packets":377,"bytes":359971}
{"timestamp":"2018-01-01T01:03:29Z","srcIP":"1.1.1.1", "dstIP":"2.2.2.2","packets":49,"bytes":10204}
{"timestamp":"2018-01-02T21:33:14Z","srcIP":"7.7.7.7", "dstIP":"8.8.8.8","packets":38,"bytes":6289}
{"timestamp":"2018-01-02T21:33:45Z","srcIP":"7.7.7.7", "dstIP":"8.8.8.8","packets":123,"bytes":93999}
{"timestamp":"2018-01-02T21:35:45Z","srcIP":"7.7.7.7", "dstIP":"8.8.8.8","packets":12,"bytes":2818}
第六步:在druid控制台的Query页面查询数据
Java客户端操作druid
导入maven坐标
<dependency><groupId>org.apache.calcite.avatica</groupId><artifactId>avatica-core</artifactId><version>1.15.0</version>
</dependency>
<dependency><groupId>org.apache.calcite.avatica</groupId><artifactId>avatica</artifactId><version>1.15.0</version>
</dependency>
编码
public static void main(String[] args) throws Exception{Class.forName("org.apache.calcite.avatica.remote.Driver");Connection connection = DriverManager.getConnection("jdbc:avatica:remote:url=http://68.79.63.42:8888/druid/v2/sql/avatica/");Statement st = null;ResultSet rs = null;try {st = connection.createStatement();rs = st.executeQuery("select currentTime,name,phone,licensePlate,businessId,lat,lng from tms_order_location");ResultSetMetaData rsmd = rs.getMetaData();List<Map> resultList = new ArrayList();while (rs.next()) {Map map = new HashMap();for (int i = 0; i < rsmd.getColumnCount(); i++) {String columnName = rsmd.getColumnName(i + 1);map.put(columnName, rs.getObject(columnName));}resultList.add(map);}System.out.println(resultList);} catch (Exception e) {e.printStackTrace();} finally {try {connection.close();} catch (SQLException e) {}}
}
netty开发
netty服务的作用是接收司机端上报的车辆定位信息并将信息发送到kafka队列。netty共提供两种方式来接收司机端上报的定位信息:基于netty实现的TCP方式、HTTP接口方式。
1 HTTP接口方式
第一步:编写bootstrap.yml
server:tomcat:uri-encoding: UTF-8max-threads: 1000min-spare-threads: 30port: 8192connection-timeout: 50000ms
spring:application:name: pd-nettyprofiles:active: devmain:allow-bean-definition-overriding: true
第二步:编写bootstrap-dev.yml
spring:cloud:nacos:username: tmspassword: itheima123discovery:server-addr: 68.79.63.42:8848group: pinda-tmsnamespace: 301c574e-ae40-42c4-b717-d5379057f6a4config:server-addr: 68.79.63.42:8848file-extension: ymlgroup: pinda-tmsnamespace: 301c574e-ae40-42c4-b717-d5379057f6a4# jackson时间格式化jackson:time-zone: ${spring.jackson.time-zone}date-format: ${spring.jackson.date-format}servlet:multipart:max-file-size: ${spring.servlet.multipart.max-file-size}max-request-size: ${spring.servlet.multipart.max-request-size}enabled: ${spring.servlet.multipart.enabled}# kafkakafka:bootstrap-servers: ${spring.kafka.bootstrap-servers}listener: # 指定listener 容器中的线程数,用于提高并发量concurrency: ${spring.kafka.listener.concurrency}producer:retries: ${spring.kafka.producer.retries}batch-size: ${spring.kafka.producer.batch-size}buffer-memory: ${spring.kafka.producer.buffer-memory}key-serializer: ${spring.kafka.producer.key-serializer}value-serializer: ${spring.kafka.producer.value-serializer}consumer:group-id: ${spring.kafka.consumer.group-id}
第三步:编写LocationEntity实体
package com.itheima.pinda.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("位置信息")
public class LocationEntity {public String getId() {return businessId + "#" + type + "#" + currentTime;}
/*** 车辆Id*/@ApiModelProperty("业务id, 快递员id 或者 车辆id")private String businessId;
/*** 司机名称*/@ApiModelProperty("司机名称")private String name;
/*** 司机电话*/@ApiModelProperty("司机电话")private String phone;
/*** 车牌号*/@ApiModelProperty("licensePlate")private String licensePlate;
/*** 类型*/@ApiModelProperty("类型,车辆:truck,快递员:courier")private String type;
/*** 经度*/@ApiModelProperty("经度")private String lng;
/*** 维度*/@ApiModelProperty("维度")private String lat;
/*** 当前时间*/@ApiModelProperty("当前时间 格式:yyyyMMddHHmmss")private String currentTime;
@ApiModelProperty("所属车队")private String team;
@ApiModelProperty("运输任务id")private String transportTaskId;
}
第四步:编写启动类
package com.itheima.pinda;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class NettyApplication {
public static void main(String[] args) {SpringApplication.run(NettyApplication.class, args);}
}
第五步:编写KafkaSender,用于操作kafka
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
@Slf4j
public class KafkaSender {public final static String MSG_TOPIC = "tms_order_location";@Autowiredprivate KafkaTemplate<String, String> kafkaTemplate;private static KafkaTemplate<String, String> template;
@PostConstructpublic void init() {KafkaSender.template = this.kafkaTemplate;}
//发送消息到kafka队列public static boolean send(String topic, String message) {try {template.send(topic, message);log.info("消息发送成功:{} , {}", topic, message);} catch (Exception e) {log.error("消息发送失败:{} , {}", topic, message, e);return false;}return true;}
}
第六步:编写NettyController,通过HTTP接口方式接受司机端上报的车辆位置信息
@RestController
@Api(tags = "车辆轨迹服务")
@RequestMapping("netty")
@Slf4j
public class NettyController {@PostMapping(value = "/push")public Result push(@RequestBody LocationEntity locationEntity) {String message = JSON.toJSONString(locationEntity);log.info("HTTP 方式推送位置信息:{}", message);KafkaSender.send(KafkaSender.MSG_TOPIC, message);return Result.ok();}
}
2 TCP方式
Netty是由JBOSS提供的一个Java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。
第一步:编写NettyServer服务启动类
package com.itheima.pinda.config;
import com.itheima.pinda.service.NettyServerHandler;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelOption;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
/*** netty 服务启动类*/
@Component
@Slf4j
public class NettyServer implements CommandLineRunner {private static NettyServer nettyServer;
@PostConstructpublic void init() {nettyServer = this;}
@Value("${netty.port}")private int port;
private EventLoopGroup mainGroup;private EventLoopGroup subGroup;private ServerBootstrap server;private ChannelFuture future;
public NettyServer() {// NIO线程组,用于处理网络事件mainGroup = new NioEventLoopGroup();subGroup = new NioEventLoopGroup();// 服务初始化工具,封装初始化服务的复杂代码server = new ServerBootstrap();server.group(mainGroup, subGroup).option(ChannelOption.SO_BACKLOG, 128)// 设置缓存.childOption(ChannelOption.SO_KEEPALIVE, true).channel(NioServerSocketChannel.class)// 指定使用NioServerSocketChannel产生一个Channel用来接收连接.childHandler(new NettyServerHandler());//具体处理网络IO事件
}
public void start() {// 启动服务端,绑定端口this.future = server.bind(nettyServer.port);log.info("Netty Server 启动完毕!!!! 端口:" + nettyServer.port);}
@Overridepublic void run(String... args) {this.start();}
}
第二步:编写NettyServerHandler处理类
import com.alibaba.fastjson.JSON;
import com.itheima.pinda.entity.LocationEntity;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.util.ReferenceCountUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import java.io.UnsupportedEncodingException;
/*** netty 业务处理*/
@Slf4j
@ChannelHandler.Sharable
public class NettyServerHandler extends ChannelInboundHandlerAdapter {@Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) {log.info("ServerHandler.channelRead()");ByteBuf in = (ByteBuf) msg;try {//接收报文String body = getRequestBody(in);log.info("报文内容:{}", body);
//解析报文String message = parseMessage(body);if (StringUtils.isBlank(message)) {log.info("报文解析失败");return;}
//发送至kafka队列KafkaSender.send(KafkaSender.MSG_TOPIC, message);
} catch (Exception e) {log.error(e.getMessage());} finally {//使用完ByteBuf之后,需要主动去释放资源,否则,资源一直在内存中加载,容易造成内存泄漏ReferenceCountUtil.release(msg);}if (null != in) {//把当前的写指针 writerIndex 恢复到之前保存的 markedWriterIndex值in.resetWriterIndex();}}
/*** 解析请求内容** @param in* @return* @throws UnsupportedEncodingException*/private String getRequestBody(ByteBuf in) throws UnsupportedEncodingException {if (in.readableBytes() <= 0) {return null;}byte[] req = new byte[in.readableBytes()];in.readBytes(req);return new String(req, "UTF-8");}
/*** 解析报文* <p>* 设备不同报文也不同,本次设备为移动端,直接使用json格式传输*/private String parseMessage(String body) {if (StringUtils.isBlank(body)) {log.warn("报文为空");return null;}body = body.trim();// 其它格式的报文需要解析后放入MessageEntity实体LocationEntity message = JSON.parseObject(body, LocationEntity.class);if (message == null || StringUtils.isBlank(message.getType()) || StringUtils.isBlank(message.getBusinessId()) || StringUtils.isBlank(message.getLat()) || StringUtils.isBlank(message.getLng()) || StringUtils.isBlank(message.getId())) {log.warn("报文内容异常");return null;}
String result = JSON.toJSONString(message);return result;}
@Overridepublic void channelReadComplete(ChannelHandlerContext ctx) {// 写一个空的buf,并刷新写出区域。完成后关闭sock channel连接。ctx.writeAndFlush(Unpooled.EMPTY_BUFFER).addListener(ChannelFutureListener.CLOSE);}
@Overridepublic void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {// 关闭发生异常的连接ctx.close();}
}
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 1.mac解除端口占用
第一步:根据端口查看进程号 lsof -i:6379 第二步:杀死进程 kill -9 进程号...
2024/5/6 22:07:48 - 简单的计划任务清单SSM项目40min完成——快速一文整合SSM框架构建的小Demo——内附Github地址
📑本篇内容:SSM框架构建简单的计划任务清单项目——项目实战 📘 文章专栏:SSM入门到入坟——一站式基础以及进阶栏目 🎬最近更新:2022年1月20日 SpringMVC入门到入坟 一站式基础及进阶——囊括面试点与初学…...
2024/5/6 21:27:40 - 获取主机上运行的容器ID
marathon接口/v2/tasks http://{marathon.ip}:{port}/v2/tasks mesos接口/containers http://{mesos.leader.ip}:{port}/containers cadvisor接口/api/v1.2/docker http://{cadvisor.ip}:{port}/api/v1.2/docker marathon接口取实例运行slav主机,通过slave的cont…...
2024/5/6 22:37:45 - Flask-1创建基本Flask程序
Flask基本应用 思路: 先创建一个app对象,通过其去创建视图和路由 from flask import Flask# 全局管理对象 app Flask(__name__)# 函数视图 app.route(/) # 可以没有任何参数 def index():# 可以直接返回一个字符串return Hello Worldif __name__ __…...
2024/4/19 9:06:56 - zjs-my-diary-20220121
早晨起床时间:7:30 晚上休息时间:0:47 今日总结:今天上午主要在开会,下午在看32的资料,晚上在看6ull的资料。...
2024/5/7 1:47:04 - Prometheus+Grafana 运维监控部署
文章目录安装Prometheus安装GrafanaGrafana添加Prometheus数据源安装node_exporter安装Prometheus 官方文档请参考:Prometheus:https://prometheus.io/ 1.下载地址:https://github.com/prometheus/prometheus/releases wget https://githu…...
2024/4/19 15:58:47 - GDUT - 专题学习2 A - 导弹
A - 导弹 题目 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于…...
2024/4/7 15:38:28 - 指针数组与数组指针 — 不是twins的twins
目录 一,指针数组 1.1指针数组基本知识 1.2指针数组实用案例分析 二,数组指针 1.1数组指针基本知识 2.2数组指针应用例子 2.2.1反面例子 2.2.2正确例子 如题目所示,今天我们将认识的是一对像双胞胎但却不是双胞胎的指针内容。 一&…...
2024/5/6 23:20:35 - modern_cpp_3-C++ Basic Syntax
文章目录Spoiler Alert(补充)1. c17中的for循环和Python 3.x中的for循环对比2. Built-in types3. C-style strings are evil4. Any variables can be const5. I/O streams6. Program input parametersLecture 2的Slides: Modern C for Computer Vision Lecture 2: C…...
2024/4/14 9:36:06 - 使用 go mod 创建项目的过程
创建目录$ mkdir test $ cd test初始化 go mod, 生成 go.mod 文件// 初始化<项目目录> test $ go mod init test // 初始化指定依赖包 test $ go mod init example.com/m/v2下载依赖包(excelize)test $ go get github.com/360EntSecGroup-Skylar/e…...
2024/4/27 0:58:16 - 基于粒子群算法的二维路径规划算法设计与仿真
目录 1 粒子群算法 2 二维环境建模 3 路径规划 3.1 初始化 3.2 适应度函数 3.3 仿真结果 1 粒子群算法 对粒子群算法小结如下:粒子群算法是一种基于种群的搜索过程,其中每个个体(鸟)称为粒子,定义为在D维搜索空…...
2024/4/25 3:17:55 - Python每日笔记打卡_day4
Day4有序序列的基本方法Day 4 2022年1月18日星期二——有序序列的基本方法一. 列表元素的增加append( )方法——该方法的新增元素都添加在列表的末尾extend( )方法——该方法的新增元素都添加在列表的末尾insert( )方法——可以根据我们的指定位置进行增加二. 列表元素的删除re…...
2024/5/4 22:21:25 - java运行第一个代码Hello报错
说一下我如何报错的,我再运行javac Hello.java是没有报错的,然后运行java Hello就报错了,他报的所悟提示是【错误: 找不到或无法加载主类 Hello】 然后我开始检查我的代码,然后发现我的代码是没有错的,所以我就上百度找…...
2024/4/15 7:55:53 - linux系统添加网关命令
route -n 查看当前网关,发现无线网络没有网关 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.3.1 0.0.0.0 UG 0 0 0 eth0 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 10.10.80.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192…...
2024/4/14 9:35:51 - java08
java08 java08异常(Exception)处理方式之一:捕获异常处理方之二:声明异常(throws子句)自定义异常错误ErrorIDEA调试debug 异常(Exception) 是程序可以处理的异常 分为运行时异常&a…...
2024/5/5 3:01:55 - 反射技术学习笔记
反射技术学习笔记 文章目录反射技术学习笔记一、反射介绍1.什么是反射2.反射的作用二、创建对象过程1.创建 Java 对象的三个阶段2.创建对象时内存结构三、获取Class对象的三种方式1.通过getClass()方法获取Class对象2.通过.class静态属性获取Class对象3.通过Class.forName(&quo…...
2024/4/20 0:02:28 - 蓝桥杯_单片机_入门基础知识(九)_AT24C02
持续关注阿杰在线更新保姆式蓝桥杯笔记~~坚持日更 目录 一、AT24C02简介 二、AT24C02存储器原理-引脚 三、AT24C02存储器原理-内部结构 四、AT24C02存储器原理-写操作和读操作 写操作 读操作 五、编程思路 六、代码区 一、AT24C02简介 AT24C02是一个2K位串行CMOS E2PR…...
2024/5/4 22:38:42 - 三子棋游戏,哟西。
今天来分享我的三子棋算法,会对其中的一些地方进行讲解,帮助大家避坑,犹如代码比较粗糙,只是一遍打的,不建议新手模仿。 #include <stdio.h> #include <stdlib.h>#define ROW 3 #define COL 3void menu(v…...
2024/4/20 7:51:36 - 字符串习题1
762. 字符串匹配 https://www.acwing.com/problem/content/764/ #include <bits/stdc.h> using namespace std;int main() {float a,b;string s1,s2;cin >> a >> s1 >> s2;int l s1.size(),ans 0;for (int i 0; i < l; i ){if(s1[i] s2[i]) …...
2024/5/4 22:31:01 - vector(动态数组)
1. vector(动态数组) vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector 是C STL的一个重要成员,使用它时需要包含头文件: #include<vector>;一、vector 的初始化:可…...
2024/4/14 9:36:57
最新文章
- torch.unique_consecutive
就是将原始的torch去除重复的部分 原理 输入参数主要三个 x(必选) return_inverse 【bool形】(是否返回输出对应数字在原torch中的下标){可选} return_counts【bool形】(是否返回输出对应数字的重复次数)…...
2024/5/7 6:41:53 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/6 9:38:23 - 面试经典算法系列之双指针1 -- 合并两个有序数组
面试经典算法题1 – 合并两个有序数组 LeetCode.88 公众号:阿Q技术站 问题描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#…...
2024/5/5 8:39:32 - audio_video_img图片音视频异步可视化加载
最近在做即时消息,消息类型除了文字还有音频、视频、图片展示,如果消息很多,在切换聊天框时,会有明显卡顿,后续做了懒加载,方案是只加载用户能看到的资源,看不到的先不加载; LazyAud…...
2024/5/6 12:26:53 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/7 5:50:09 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/4 23:54:56 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/6 9:21:00 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/4 23:55:16 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/4 23:55:06 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/6 21:42:42 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57