当前位置: 首页 > news >正文

SpringBoot 接口加密解密,新姿势!

1. 介绍

在我们日常的Java开发中,免不了和其他系统的业务交互,或者微服务之间的接口调用

如果我们想保证数据传输的安全,对接口出参加密,入参解密。

但是不想写重复代码,我们可以提供一个通用starter,提供通用加密解密功能

2. 前置知识

2.1 hutool-crypto加密解密工具

hutool-crypto提供了很多加密解密工具,包括对称加密,非对称加密,摘要加密等等,这不做详细介绍。

2.2 request流只能读取一次的问题

2.2.1 问题:

在接口调用链中,request的请求流只能调用一次,处理之后,如果之后还需要用到请求流获取数据,就会发现数据为空。

比如使用了filter或者aop在接口处理之前,获取了request中的数据,对参数进行了校验,那么之后就不能在获取request请求流了

2.2.2 解决办法

继承HttpServletRequestWrapper,将请求中的流copy一份,复写getInputStream和getReader方法供外部使用。每次调用后的getInputStream方法都是从复制出来的二进制数组中进行获取,这个二进制数组在对象存在期间一致存在。

使用Filter过滤器,在一开始,替换request为自己定义的可以多次读取流的request。

这样就实现了流的重复获取

InputStreamHttpServletRequestWrapper
package xyz.hlh.cryptotest.utils;import org.apache.commons.io.IOUtils;import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;/*** 请求流支持多次获取*/
public class InputStreamHttpServletRequestWrapper extends HttpServletRequestWrapper {/*** 用于缓存输入流*/private ByteArrayOutputStream cachedBytes;public InputStreamHttpServletRequestWrapper(HttpServletRequest request) {super(request);}@Overridepublic ServletInputStream getInputStream() throws IOException {if (cachedBytes == null) {// 首次获取流时,将流放入 缓存输入流 中cacheInputStream();}// 从 缓存输入流 中获取流并返回return new CachedServletInputStream(cachedBytes.toByteArray());}@Overridepublic BufferedReader getReader() throws IOException {return new BufferedReader(new InputStreamReader(getInputStream()));}/*** 首次获取流时,将流放入 缓存输入流 中*/private void cacheInputStream() throws IOException {// 缓存输入流以便多次读取。为了方便, 我使用 org.apache.commons IOUtilscachedBytes = new ByteArrayOutputStream();IOUtils.copy(super.getInputStream(), cachedBytes);}/*** 读取缓存的请求正文的输入流* <p>* 用于根据 缓存输入流 创建一个可返回的*/public static class CachedServletInputStream extends ServletInputStream {private final ByteArrayInputStream input;public CachedServletInputStream(byte[] buf) {// 从缓存的请求正文创建一个新的输入流input = new ByteArrayInputStream(buf);}@Overridepublic boolean isFinished() {return false;}@Overridepublic boolean isReady() {return false;}@Overridepublic void setReadListener(ReadListener listener) {}@Overridepublic int read() throws IOException {return input.read();}}}
HttpServletRequestInputStreamFilter
package xyz.hlh.cryptotest.filter;import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import xyz.hlh.cryptotest.utils.InputStreamHttpServletRequestWrapper;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;import static org.springframework.core.Ordered.HIGHEST_PRECEDENCE;/*** @author HLH* @description:*      请求流转换为多次读取的请求流 过滤器* @email 17703595860@163.com* @date : Created in 2022/2/4 9:58*/
@Component
@Order(HIGHEST_PRECEDENCE + 1)  // 优先级最高
public class HttpServletRequestInputStreamFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {// 转换为可以多次获取流的requestHttpServletRequest httpServletRequest = (HttpServletRequest) request;InputStreamHttpServletRequestWrapper inputStreamHttpServletRequestWrapper = new InputStreamHttpServletRequestWrapper(httpServletRequest);// 放行chain.doFilter(inputStreamHttpServletRequestWrapper, response);}
}

2.3 SpringBoot的参数校验validation

为了减少接口中,业务代码之前的大量冗余的参数校验代码

SpringBoot-validation提供了优雅的参数校验,入参都是实体类,在实体类字段上加上对应注解,就可以在进入方法之前,进行参数校验,如果参数错误,会抛出错误BindException,是不会进入方法的。

这种方法,必须要求在接口参数上加注解@Validated或者是@Valid

但是很多清空下,我们希望在代码中调用某个实体类的校验功能,所以需要如下工具类

ParamException
package xyz.hlh.cryptotest.exception;import lombok.Getter;import java.util.List;/*** @author HLH* @description 自定义参数异常* @email 17703595860@163.com* @date Created in 2021/8/10 下午10:56*/
@Getter
public class ParamException extends Exception {private final List<String> fieldList;private final List<String> msgList;public ParamException(List<String> fieldList, List<String> msgList) {this.fieldList = fieldList;this.msgList = msgList;}
}
ValidationUtils
package xyz.hlh.cryptotest.utils;import xyz.hlh.cryptotest.exception.CustomizeException;
import xyz.hlh.cryptotest.exception.ParamException;import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;/*** @author HLH* @description 验证工具类* @email 17703595860@163.com* @date Created in 2021/8/10 下午10:56*/
public class ValidationUtils {private static final Validator VALIDATOR = Validation.buildDefaultValidatorFactory().getValidator();/*** 验证数据* @param object 数据*/public static void validate(Object object) throws CustomizeException {Set<ConstraintViolation<Object>> validate = VALIDATOR.validate(object);// 验证结果异常throwParamException(validate);}/*** 验证数据(分组)* @param object 数据* @param groups 所在组*/public static void validate(Object object, Class<?> ... groups) throws CustomizeException {Set<ConstraintViolation<Object>> validate = VALIDATOR.validate(object, groups);// 验证结果异常throwParamException(validate);}/*** 验证数据中的某个字段(分组)* @param object 数据* @param propertyName 字段名称*/public static void validate(Object object, String propertyName) throws CustomizeException {Set<ConstraintViolation<Object>> validate = VALIDATOR.validateProperty(object, propertyName);// 验证结果异常throwParamException(validate);}/*** 验证数据中的某个字段(分组)* @param object 数据* @param propertyName 字段名称* @param groups 所在组*/public static void validate(Object object, String propertyName, Class<?> ... groups) throws CustomizeException {Set<ConstraintViolation<Object>> validate = VALIDATOR.validateProperty(object, propertyName, groups);// 验证结果异常throwParamException(validate);}/*** 验证结果异常* @param validate 验证结果*/private static void throwParamException(Set<ConstraintViolation<Object>> validate) throws CustomizeException {if (validate.size() > 0) {List<String> fieldList = new LinkedList<>();List<String> msgList = new LinkedList<>();for (ConstraintViolation<Object> next : validate) {fieldList.add(next.getPropertyPath().toString());msgList.add(next.getMessage());}throw new ParamException(fieldList, msgList);}}}

2.4 自定义starter

自定义starter步骤

  • 创建工厂,编写功能代码

  • 声明自动配置类,把需要对外提供的对象创建好,通过配置类统一向外暴露

  • 在resource目录下准备一个名为spring/spring.factories的文件,以org.springframework.boot.autoconfigure.EnableAutoConfiguration为key,自动配置类为value列表,进行注册

2.5 RequestBodyAdvice和ResponseBodyAdvice

  • RequestBodyAdvice是对请求的json串进行处理, 一般使用环境是处理接口参数的自动解密

  • ResponseBodyAdvice是对请求相应的jsoin传进行处理,一般用于相应结果的加密

3. 功能介绍

接口相应数据的时候,返回的是加密之后的数据 接口入参的时候,接收的是解密之后的数据,但是在进入接口之前,会自动解密,取得对应的数据

4. 功能细节

加密解密使用对称加密的AES算法,使用hutool-crypto模块进行实现

所有的实体类提取一个公共父类,包含属性时间戳,用于加密数据返回之后的实效性,如果超过60分钟,那么其他接口将不进行处理。

如果接口加了加密注解EncryptionAnnotation,并且返回统一的json数据Result类,则自动对数据进行加密。如果是继承了统一父类RequestBase的数据,自动注入时间戳,确保数据的时效性

如果接口加了解密注解DecryptionAnnotation,并且参数使用RequestBody注解标注,传入json使用统一格式RequestData类,并且内容是继承了包含时间长的父类RequestBase,则自动解密,并且转为对应的数据类型

功能提供Springboot的starter,实现开箱即用

5. 代码实现

https://gitee.com/springboot-hlh/spring-boot-csdn/tree/master/09-spring-boot-interface-crypto

5.1 项目结构

图片

5.2 crypto-common

5.2.1 结构

图片

5.3 crypto-spring-boot-starter

5.3.1 接口

图片

5.3.2 重要代码

crypto.properties AES需要的参数配置

# 模式    cn.hutool.crypto.Modecrypto.mode=CTS# 补码方式 cn.hutool.crypto.Modecrypto.padding=PKCS5Padding# 秘钥crypto.key=testkey123456789# 盐crypto.iv=testiv1234567890

spring.factories 自动配置文件

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\xyz.hlh.crypto.config.AppConfig

CryptConfig AES需要的配置参数

package xyz.hlh.crypto.config;import cn.hutool.crypto.Mode;
import cn.hutool.crypto.Padding;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;import java.io.Serializable;/*** @author HLH* @description: AES需要的配置参数* @email 17703595860@163.com* @date : Created in 2022/2/4 13:16*/
@Configuration
@ConfigurationProperties(prefix = "crypto")
@PropertySource("classpath:crypto.properties")
@Data
@EqualsAndHashCode
@Getter
public class CryptConfig implements Serializable {private Mode mode;private Padding padding;private String key;private String iv;}

AppConfig 自动配置类

package xyz.hlh.crypto.config;import cn.hutool.crypto.symmetric.AES;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import javax.annotation.Resource;
import java.nio.charset.StandardCharsets;/*** @author HLH* @description: 自动配置类* @email 17703595860@163.com* @date : Created in 2022/2/4 13:12*/
@Configuration
public class AppConfig {@Resourceprivate CryptConfig cryptConfig;@Beanpublic AES aes() {return new AES(cryptConfig.getMode(), cryptConfig.getPadding(), cryptConfig.getKey().getBytes(StandardCharsets.UTF_8), cryptConfig.getIv().getBytes(StandardCharsets.UTF_8));}}

DecryptRequestBodyAdvice请求自动解密

package xyz.hlh.crypto.advice;import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.SneakyThrows;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.MethodParameter;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.mvc.method.annotation.RequestBodyAdvice;
import xyz.hlh.crypto.annotation.DecryptionAnnotation;
import xyz.hlh.crypto.common.exception.ParamException;
import xyz.hlh.crypto.constant.CryptoConstant;
import xyz.hlh.crypto.entity.RequestBase;
import xyz.hlh.crypto.entity.RequestData;
import xyz.hlh.crypto.util.AESUtil;import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.lang.reflect.Type;/*** @author HLH* @description: requestBody 自动解密* @email 17703595860@163.com* @date : Created in 2022/2/4 15:12*/
@ControllerAdvice
public class DecryptRequestBodyAdvice implements RequestBodyAdvice {@Autowiredprivate ObjectMapper objectMapper;/*** 方法上有DecryptionAnnotation注解的,进入此拦截器* @param methodParameter 方法参数对象* @param targetType 参数的类型* @param converterType 消息转换器* @return true,进入,false,跳过*/@Overridepublic boolean supports(MethodParameter methodParameter, Type targetType, Class<? extends HttpMessageConverter<?>> converterType) {return methodParameter.hasMethodAnnotation(DecryptionAnnotation.class);}@Overridepublic HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class<? extends HttpMessageConverter<?>> converterType) throws IOException {return inputMessage;}/*** 转换之后,执行此方法,解密,赋值* @param body spring解析完的参数* @param inputMessage 输入参数* @param parameter 参数对象* @param targetType 参数类型* @param converterType 消息转换类型* @return 真实的参数*/@SneakyThrows@Overridepublic Object afterBodyRead(Object body, HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class<? extends HttpMessageConverter<?>> converterType) {// 获取requestRequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) requestAttributes;if (servletRequestAttributes == null) {throw new ParamException("request错误");}HttpServletRequest request = servletRequestAttributes.getRequest();// 获取数据ServletInputStream inputStream = request.getInputStream();RequestData requestData = objectMapper.readValue(inputStream, RequestData.class);if (requestData == null || StringUtils.isBlank(requestData.getText())) {throw new ParamException("参数错误");}// 获取加密的数据String text = requestData.getText();// 放入解密之前的数据request.setAttribute(CryptoConstant.INPUT_ORIGINAL_DATA, text);// 解密String decryptText = null;try {decryptText = AESUtil.decrypt(text);} catch (Exception e) {throw new ParamException("解密失败");}if (StringUtils.isBlank(decryptText)) {throw new ParamException("解密失败");}// 放入解密之后的数据request.setAttribute(CryptoConstant.INPUT_DECRYPT_DATA, decryptText);// 获取结果Object result = objectMapper.readValue(decryptText, body.getClass());// 强制所有实体类必须继承RequestBase类,设置时间戳if (result instanceof RequestBase) {// 获取时间戳Long currentTimeMillis = ((RequestBase) result).getCurrentTimeMillis();// 有效期 60秒long effective = 60*1000;// 时间差long expire = System.currentTimeMillis() - currentTimeMillis;// 是否在有效期内if (Math.abs(expire) > effective) {throw new ParamException("时间戳不合法");}// 返回解密之后的数据return result;} else {throw new ParamException(String.format("请求参数类型:%s 未继承:%s", result.getClass().getName(), RequestBase.class.getName()));}}/*** 如果body为空,转为空对象* @param body spring解析完的参数* @param inputMessage 输入参数* @param parameter 参数对象* @param targetType 参数类型* @param converterType 消息转换类型* @return 真实的参数*/@SneakyThrows@Overridepublic Object handleEmptyBody(Object body, HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class<? extends HttpMessageConverter<?>> converterType) {String typeName = targetType.getTypeName();Class<?> bodyClass = Class.forName(typeName);return bodyClass.newInstance();}
}

EncryptResponseBodyAdvice相应自动加密

package xyz.hlh.crypto.advice;import cn.hutool.json.JSONUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.SneakyThrows;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
import sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl;
import xyz.hlh.crypto.annotation.EncryptionAnnotation;
import xyz.hlh.crypto.common.entity.Result;
import xyz.hlh.crypto.common.exception.CryptoException;
import xyz.hlh.crypto.entity.RequestBase;
import xyz.hlh.crypto.util.AESUtil;import java.lang.reflect.Type;/*** @author HLH* @description:* @email 17703595860@163.com* @date : Created in 2022/2/4 15:12*/
@ControllerAdvice
public class EncryptResponseBodyAdvice implements ResponseBodyAdvice<Result<?>> {@Autowiredprivate ObjectMapper objectMapper;@Overridepublic boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {ParameterizedTypeImpl genericParameterType = (ParameterizedTypeImpl)returnType.getGenericParameterType();// 如果直接是Result,则返回if (genericParameterType.getRawType() == Result.class && returnType.hasMethodAnnotation(EncryptionAnnotation.class)) {return true;}if (genericParameterType.getRawType() != ResponseEntity.class) {return false;}// 如果是ResponseEntity<Result>for (Type type : genericParameterType.getActualTypeArguments()) {if (((ParameterizedTypeImpl) type).getRawType() == Result.class && returnType.hasMethodAnnotation(EncryptionAnnotation.class)) {return true;}}return false;}@SneakyThrows@Overridepublic Result<?> beforeBodyWrite(Result<?> body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {// 加密Object data = body.getData();// 如果data为空,直接返回if (data == null) {return body;}// 如果是实体,并且继承了Request,则放入时间戳if (data instanceof RequestBase) {((RequestBase)data).setCurrentTimeMillis(System.currentTimeMillis());}String dataText = JSONUtil.toJsonStr(data);// 如果data为空,直接返回if (StringUtils.isBlank(dataText)) {return body;}// 如果位数小于16,报错if (dataText.length() < 16) {throw new CryptoException("加密失败,数据小于16位");}String encryptText = AESUtil.encryptHex(dataText);return Result.builder().status(body.getStatus()).data(encryptText).message(body.getMessage()).build();}
}

5.4 crypto-test

5.4.1 结构

图片

5.4.2 重要代码

application.yml 配置文件

spring:mvc:format:date-time: yyyy-MM-dd HH:mm:ssdate: yyyy-MM-dd# 日期格式化jackson:date-format: yyyy-MM-dd HH:mm:ss

Teacher 实体类

package xyz.hlh.crypto.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Range;import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;/*** @author HLH* @description: Teacher实体类,使用SpringBoot的validation校验* @email 17703595860@163.com* @date : Created in 2022/2/4 10:21*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class Teacher extends RequestBase implements Serializable {@NotBlank(message = "姓名不能为空")private String name;@NotNull(message = "年龄不能为空")@Range(min = 0, max = 150, message = "年龄不合法")private Integer age;@NotNull(message = "生日不能为空")private Date birthday;}

TestController 测试Controller

package xyz.hlh.crypto.controller;import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import xyz.hlh.crypto.annotation.DecryptionAnnotation;
import xyz.hlh.crypto.annotation.EncryptionAnnotation;
import xyz.hlh.crypto.common.entity.Result;
import xyz.hlh.crypto.common.entity.ResultBuilder;
import xyz.hlh.crypto.entity.Teacher;/*** @author HLH* @description: 测试Controller* @email 17703595860@163.com* @date : Created in 2022/2/4 9:16*/
@RestController
public class TestController implements ResultBuilder {/*** 直接返回对象,不加密* @param teacher Teacher对象* @return 不加密的对象*/@PostMapping("/get")public ResponseEntity<Result<?>> get(@Validated @RequestBody Teacher teacher) {return success(teacher);}/*** 返回加密后的数据* @param teacher Teacher对象* @return 返回加密后的数据 ResponseBody<Result>格式*/@PostMapping("/encrypt")@EncryptionAnnotationpublic ResponseEntity<Result<?>> encrypt(@Validated @RequestBody Teacher teacher) {return success(teacher);}/*** 返回加密后的数据* @param teacher Teacher对象* @return 返回加密后的数据 Result格式*/@PostMapping("/encrypt1")@EncryptionAnnotationpublic Result<?> encrypt1(@Validated @RequestBody Teacher teacher) {return success(teacher).getBody();}/*** 返回解密后的数据* @param teacher Teacher对象* @return 返回解密后的数据*/@PostMapping("/decrypt")@DecryptionAnnotationpublic ResponseEntity<Result<?>> decrypt(@Validated @RequestBody Teacher teacher) {return success(teacher);}}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

MySQL之mysql dump的使用

一、mysqldump 简介 mysqldump 是 MySQL 自带的逻辑备份工具。它的备份原理是通过协议连接到 MySQL 数据库&#xff0c;将需要备份的数据查询出来&#xff0c;将查询出的数据转换成对应的insert 语句&#xff0c;当我们需要还原这些数据时&#xff0c;只要执行这些 insert 语句…...

2021-11-29 力扣169,287,162

169. 多数元素 方法一&#xff1a;利用哈希表来找出现次数大于n/2的元素&#xff0c;没有啥难度 class Solution {public int majorityElement(int[] nums) {//根据题意一定要分析出多数元素一个数组中只能有一个数int n nums.length;int num 0;Map<Integer,Integer>…...

mysql 创建覆盖索引_Mysql覆盖索引 covering index 或者 index coverage

组合索引提到组合索引&#xff0c;大家都知道“最左前缀”原则。例如&#xff0c;创建索引 idx_name_age (name,age) ,通常情况下&#xff0c;where age50 或者 where age>50 之类的&#xff0c;是不会使用到idx_a_b的。那有没有特殊情况呢&#xff1f;假设表是&#xff1a;…...

哔哩哔哩PC客户端可以缓存视频了!

哔哩哔哩PC客户端可以缓存视频了&#xff1a; &#xff0c;顺便提一下you-get下载哔哩视频的方法&#xff1a; 首先要有python&#xff0c;这个不用多少了吧 在终端输入&#xff1a; pip install you-get然后 you-get -i [哔哩视频网址]就会有结果&#xff0c; dash-flv&am…...

Hadoop完全分布式集群——Hadoop 配置

前面已完成VMware虚拟机安装与配置&#xff08;参考前一篇Hadoop完全分布式集群——VMware虚拟机安装与配置_夏雨和阳阳的博客-CSDN博客&#xff09;&#xff0c;下面将进行Hadoop 配置。 一、slave1、slave2节点配置修改 slave1、slave2节点都需要进行以下操作&#xff1a; …...

DataLake — 批流一体化的追风者(2) -- Delta Lake核心原理解析

一、Delta Lake 1.Delta Lake基础概述 接上文&#xff0c;我们全面地讲解了Data Lake相关的概念、对比区别以及实际发展历程等。那么这篇首章开篇我们来讲历史最为悠久的Delta Lake。它的定位是流批一体的存储中间层&#xff0c;支持 update/delete/merge。由于出自Databricks&…...

文本聚类简单实现

引用: Core Concepts — gensim <<自然语言处理入门>> 一、简介 文本聚类( text clustering &#xff0c;也称文档聚类或 document clustering )指的是对文档进行的聚类分析&#xff0c;被广泛用于文本挖掘和信息检索领域。最初文本聚类仅用于文本归档&#xff0c;…...

HDMI SCDC处理过程

SCDC&#xff1a;State and Control Data Channel&#xff1b; VSDB&#xff1a;Vendor-Specific Data Block&#xff1b; EDID&#xff1a;Extended Display Identification Data Standard&#xff0c;EDID是一种VESA标准数据格式&#xff0c;其中包含有关监视器及其性能的…...

Android屏幕录制时怎样在录屏中去掉悬浮窗

Android支持多个屏幕&#xff1a;主显&#xff0c;外显&#xff0c;和虚显&#xff0c;虚显就是我们要说的VirtualDisplay。VirtualDisplay的使用场景很多&#xff0c;比如录屏&#xff0c;WFD显示等。其作用就是抓取屏幕上显示的内容。VirtualDisplay抓取屏幕内容&#xff0c;…...

python进行中文文本聚类(切词以及Kmeans聚类)

简介 查看百度搜索中文文本聚类我失望的发现&#xff0c;网上竟然没有一个完整的关于Python实现的中文文本聚类&#xff08;乃至搜索关键词python 中文文本聚类也是如此&#xff09;&#xff0c;网上大部分是关于文本聚类的Kmeans聚类的原理&#xff0c;Java实现&#xff0c;R…...

python爬取哔哩哔哩网页弹幕内容,并将爬取的内容以五角星的形式显示出来

思路&#xff1a; 向哔哩哔哩网站发送请求请求成功后,解析爬取的弹幕内容保存到一个文件中读取文件并分析弹幕内容中词组或文字出现的频率将这些词组或文字组成五角星图形组成五角星图形后,以图片的形式输出 使用到的类库,如果没有,需要下载&#xff0c;下载命令&#xff1a;…...

计算机网络中的www服务,计算机网络基础练习题01

一、选择题1、网络层的互联设备是( )A、网桥 B、交换机 C、路由器 D、网关2、IP协议是无连接的&#xff0c;其信息传输方式是( )A、点到点 B、广播 C、虚电路 D、数据报3、电子邮件协议是( )A、IP B、 TCP C、SNMP D、SMTP4、Web使用( )进行信息传递A、HTTP B、HTML C、FTP D、…...

python web Android屏幕录制

执行测试用例时&#xff0c;自动触发屏幕录制&#xff0c;单用例单录制 录制方式采用多线程&#xff0c;主线程开始&#xff0c;另开一个线程&#xff0c;跑录制脚本 web端 录制检测的是电脑页面&#xff0c;录制电脑页面展示的数据。 from datetime import datetime from PIL…...

typora:如何让显示的屏幕更宽

怎样设置Typora每次的代码段默认为Python?参考:这里 如何设置显示器的宽度? 参考:Typora 更改编辑器的宽度 Typora 安装目录&#xff0c;默认为 C:\Program Files\Typora\resources\app\style\ 下&#xff0c;找到 base-control.css 文件 &#xff0c;打开后搜索 #typora-s…...

如何使用SC7A20

近来芯片紧张,国产IC应用趋多。SC7A20是一款国产的三轴加速度传感器。该芯片使用了LGA-12-2x2x1.0mm封装,体积极小。具备以下功能: 本来想省去做轮子的过程,拿别人的例程直接来用,但是网上应用的例子较少,遂自行瞎搞。 直奔主题,如何驱动SC7A20呢? 首先是硬件配置: 这…...

android屏幕录制代码,android屏幕录制命令

adb shell screenrecord /sdcard/test.mp4 ----------------支持API19(4.4)及以上adb shell screenrecord --time-limit 10 /sdcard/test.mp4 --------限制时间adb shell screenrecord --size 1080x1920 /sdcard/test.mp4 --------设置分辨率adb shel…...

python箱线图异常值_Python数据清洗--异常值识别与处理01

前言在《Python数据清洗--类型转换和冗余数据删除》和《Python数据清洗--缺失值识别与处理》文中已经讲解了有关数据中重复观测和缺失值的识别与处理&#xff0c;在本节中将分享异常值的判断和处理方法。异常值也称为离群点&#xff0c;就是那些远离绝大多数样本点的特殊群体&a…...

Python-代码封装思想

继上文所将讲的pythonrequestsUnittest框架&#xff0c;本文将继续分享python代码的进一步封装思想&#xff0c;来提高代码的整体运行效率及整洁性&#xff0c;本文以接口测试框架为例进行讲解。 关于Unittest单元测试框架的具体使用方法链接链接&#xff08;点击跳转&#xf…...

iOS swift navigationBar 导航栏渐变透明度 上下滑动,左右滑动切换页面,HeaderView悬浮、支持下拉刷新、上拉加载更多

文章目录下面这个框架有上面一系列的功能JXSegmentedView,我的另外一篇博客下面这个框架有上面一系列的功能 JXPagingView - github JXSegmentedView,我的另外一篇博客 ios swift JXSegmentedView的使用...

浏览器可以访问,git无法拉取的问题;

开有vpn&#xff0c;浏览器可以访问&#xff0c;通过git无法拉取代码&#xff0c;返回消息&#xff1a; fatal: unable to access https://chromium.googlesource.com/chromium/tools/depot_tools.git/: Failed to connect to 10.3.3.33 port 33: Timed out 原因&#xff1a;g…...

Android 后台录制屏幕

/*** */ package order.screen; import android.annotation.TargetApi; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.graphics.drawable.ColorDrawable; import and...

树莓派设置固定ip

方法一&#xff1a;窗口操作设置静态IP 1、右键点击打开右下角的无线网络图标&#xff0c;会弹出一个小菜单项&#xff0c;单击WiFiNetworks&#xff08;dhcpcdui&#xff09;Setting。 2、在打开的NetworkPreferences窗口内&#xff0c;Configure项选择SSID&#xff0c;这时后…...

matlab svm异常值判断,异常值检测

数据处理过程中&#xff0c;通常需要对数据进行预处理&#xff0c;包括缺失值填充&#xff0c;异常值检测等。异常值处理对于后续数据分析&#xff0c;建模具有非常很重要的影响。基于描述统计1.基于常识判断针对数据进行简单的描述统计&#xff0c;查看数据的极大值和极小值。…...

Android 屏幕录制时去除悬浮窗

最近在用Android8.0开发一个屏幕录制的功能&#xff0c;要求录制的视频不能有录屏的控制悬浮窗。 录屏方案使用的是MediaRecorder、MediaProjection、VirtualDisplay。 Android支持多个屏幕&#xff1a;主显、外显、虚显&#xff0c;虚显就是VirtualDisplay。 VirtualDispla…...

android屏幕 录制检测,Android 录制屏幕的实现方法

Android 录制屏幕的实现方法&#xff0c;长久以来&#xff0c;我一直希望能够直接从Android屏幕上进行录制并将其编码为多种格式&#xff0c;以便将录制内容嵌入在任意位置&#xff0c;而不需要安装任何软件。如今&#xff0c;我们已经接近这个目标。Chrome团队正在添加一种功能…...

华三物联网解读

华三物联网解读 1、整体布局和架构 华三物联网贯穿模组到云端应用&#xff0c;称为“从芯到云”。主要依托绿洲平台的开放能力、基础服务能力、泛在连接能力和安全能力&#xff0c;为教育&#xff0c;医疗&#xff0c;工业&#xff0c;农业和智慧城市提供解决方案。其架构图如…...

oracle命令报01034,ORA-01034错误的解决办法-数据库专栏,ORACLE

ora-01034错误的解决办法&#xff0d;&#xff0d;oracle常见错误之一事先说明&#xff0c;oracle高手是不需要看本文的。这是个oracle数据库服务器比较常见的错误。有经验的用户几乎马上就能解决这个错误&#xff0c;再不济也能马上到metalink(http://metalink.oracle.com)去搜…...

js中 if 直接判断 数据类型 结果举例

if&#xff08;&#xff09;一般用来判断计算结果的布尔值&#xff0c;如 ,,>,>,<,< 等&#xff1b;或者判断 强制转化成布尔值后的函数返回值等&#xff1b; 判断时自动执行 Boolean() 方法&#xff0c;试图将结果转化成布尔值 但有时候直接判断数据类型的时候&…...

【渝粤教育】 国家开放大学2020年春季 1021劳动与社会保障法 参考试题

试卷代号&#xff1a;1026 座位号□□ 2 0 2 0年春季学期期末统一考试 西方经济学&#xff08;本&#xff09; 试题 2020年7月 一、单项选择题&#xff08;每题2分&#xff0c;共30分&#xff0c;请将你认为的正确答案的序号填入该题后的括号内&#xff09; 1&#xff0e;-般来…...

人群分析、人群计数 开源代码文献及数据库

本文转载自&#xff1a;https://blog.csdn.net/zhangjunhit/article/details/78190335 人群密度估计 利用未标记数据辅助训练网络 Leveraging Unlabeled Data for Crowd Counting by Learning to Rank CVPR2018 https://github.com/xialeiliu/CrowdCountingCVPR18 Crowd Counti…...

光滑曲线_第九章 曲线积分与曲面积分 第六节 高斯公式和斯托克斯公式

我的公众号“每日晴天”&#xff0c;可关注领取我的笔记pdf版哦~------------------------------------------------------------------------------1、高斯公式&#xff1a;设空间有界闭区域Ω是分片光滑的闭曲面Σ围城&#xff0c;函数 、 、 在Ω上具有一阶连续偏导数&#…...

[附源码]Python计算机毕业设计Django良辰之境影视评鉴系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…...

自然语言处理之文本分类

在开始学习之前推荐大家可以多在 FlyAI竞赛服务平台 多参加训练和竞赛&#xff0c;以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例&#xff0c;支持算法能力变现以及快速的迭代算法模型。 一、前言 文…...

IOS图标 HTML规范,最新iOS设计规范(八):3大图标和图像规范(Icons and Images)

释放双眼&#xff0c;带上耳机&#xff0c;听听看~&#xff01;iOS是运行于iPhone、iPad和iPod touch设备上、最常用的移动操作系统之一。作为互联网应用的开发者、产品经理、体验设计师&#xff0c;都应当理解并熟悉平台的设计规范。这有利于提高我们的工作效率&#xff0c;保…...

系统调用和库函数调用的区别

一&#xff1a;系统调用和库函数调用的区别&#xff1a; 1&#xff1a;系统调用是最底层的应用&#xff0c;是面向硬件的。而库函数的调用是面向开发的&#xff0c;相当于应用程序的API(即预先定义好的函数)接口&#xff1b; 2&#xff1a;各个操作系统的系统调用是不同的&am…...

spring-cloud-gateway-基本流程

Spring-Cloud-Gateway-基本流程 执行流程图 spring cloud gateway 官网的流程图 具体流程图 核心概念 Gateway Client 向 Spring Cloud Gateway 发送请求请求首先会被Netty的服务端HttpServerHandle处理然后被HttpWebHandlerAdapter 进行提取组装成网关上下文&#xff0c;组装…...

h3c无线认证服务器,H3C无线路由器配置样例之带认证接入

1、基础配置见不带认证接入2、开启认证开关和认证方式[Navigator]wlan service-template 1 cry[Navigator-wlan-st-1]authentication-method open-system[Navigator-wlan-st-1]service-template enable缺省情况下&#xff0c;使用open-system认证方式需要注意的是&#xff1a;只…...

华三无线控制器配置802.1X认证

数据通信 - 建设篇 - 无线 第二章 华三无线控制器配置802.1X认证数据通信 - 建设篇 - 无线系列文章回顾下章内容华三无线控制器配置802.1X认证背景介绍实施步骤无线控制器新增RADIUS方案&#xff0c;认证源指向1.1.1.1(CA证书服务器)&#xff0c;认证共享密钥跟认证源保持一致无…...

linux 的软连接创建删除

创建 ln -s 原始文件 目标文件 原始文件&#xff1a;指的是 文件真正存储的地方 目标文件&#xff1a;指的是 文件的快捷路径&#xff0c;相当于文件的快捷方式 比如 我在 /home 有文件a 但是a 太大了&#xff0c; 我需要把a 转移到 /data/a 下面。 但是还是要保持我的访…...

火山安卓屏幕录制类

火山安卓屏幕录制类教程一、布局二、创建三、演示效果一、布局 ①使用文本框、线性布局器、按钮&#xff0c;按下图布局。 ②添加"杂类设备支持1"和"多媒体功能支持" 二、创建 ①创建"屏幕录制器"&#xff0c;“通知器”&#xff0c;"…...

[SQL]SQL server 常用代码

判断数据库是否存在 USE eshop --选取数据库 GO IF(EXISTS(SELECT*FROM sysdatabases WHERE name‘eshop’)) --判断eshop是否存在 DROP DATABASE eshop --删除 GO 1 2 3 4 5 新建数据库和日志 –新建数据 CREATE DATABASE eshop ON PRIMARY ( NAMEeshop, FILENAME‘E:\SQLDemo…...

Debian/Kali possible missing /lib/firmware/i915.... 的解决办法

这就是一个缺少固件&#xff08;firmware&#xff09;的问题&#xff0c;我给把下载命令代码都整好了&#xff1a; wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/i915/tgl_guc_69.0.3.bin && wget https://git.kernel.org…...

云呐什么是基站动环监控,基站智能动环监控单元是什么

什么是基站动环&#xff1f;基站监管包括什么&#xff1f;基站动环实际上是基站中的动力。环境。基站监管主要对这三个内容子项进行检测。储存。分析。报警等一系列步骤&#xff0c;从而达到故障防控的效果&#xff0c;在塔内。电信。移动。联通等企业的基站监管是不可或缺的。…...

企业新闻软文发布,不得不掌握这些流程!

一、进行新闻营销方案策划 新闻稿发布并不是一蹴而就的&#xff0c;需要遵循一定的时间制定和地点布置&#xff0c;因此必须要制定详细的新闻营销方案策划。 1、进行全局的规划 在进行新闻稿发布的过程中&#xff0c;必须要重视整体的全局规划。规划的主要重点就是要围绕发布…...

openwrt 认证收费_openwrt h3c 802.1x 校园网认证

openwrt h3c 802.1x 校园网认证环境CHAOS CALMER (15.05.1, r48532)校园网使用iNode智能客户端认证&#xff0c;使用802.1x协议参考B同学的教程(涉及隐私不给出连接)操作安装wpad路由器可以连上互联网&#xff0c;ssh登陆后rootOpenWrt:~# opkg remove wpad-mini #卸载pwad-min…...

python 抛出_python抛出异常的方法

python抛出异常的方法发布时间&#xff1a;2020-08-14 11:10:34来源&#xff1a;亿速云阅读&#xff1a;89作者&#xff1a;小新这篇文章主要介绍python抛出异常的方法&#xff0c;文中介绍的非常详细&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们一定要看完&am…...

激光三角测量法在工业视觉检测上的应用

点击上方“计算机视觉工坊”&#xff0c;选择“星标”干货第一时间送达激光三角测量法&#xff0c;是工业视觉领域较为常用也是比较容易理解的一种3D检测算法。本文主要从应用层次来阐述&#xff0c;包括相机和激光选型、搭接方式的优劣点分析、软件开发过程中的注意事项等。1.…...

vue PC端项目页面做rem布局(大屏展示)

rem布局&#xff1a; 通常我们做移动端项目会使用rem布局&#xff0c;pc后台项目很少用到。会跟随当前屏幕大小自适应布局&#xff0c;不论在什么样的屏幕下&#xff0c;样式布局都保持一定的比例不变。 移动端通常使用淘宝的flexable.js 。pc端也可以使用 方法一&#xff1a…...

centos7 创建、删除目录软连接

创建/删除目录软连接 ① 目录只能创建软链接 ② 目录创建链接必须用绝对路径&#xff0c;相对路径创建会不成功&#xff0c;会提示&#xff1a;符号连接的层数过多这样的错误 ③ 在链接目标目录中修改文件都会在源文件目录中同步变化 1.创建软连接 创建源目录&#xff1a; …...

声波支付

支付宝的咻咻咻&#xff08;声波支付&#xff09;是怎样工作的&#xff1f; Contents1.声波是怎样传输数据的&#xff1f; 2.同一客户端每次的声波是一样的&#xff1f; 3.支付的声波就是听到的“咻咻咻”&#xff1f; 4.声波支付需要联网吗&#xff1f; 本文部分参考了以下文章…...

文本聚类算法

文本聚类算法1 聚类思想2 文本聚类一般步骤2.1 文本表示&#xff08;Text Representation&#xff09;2.2 聚类算法选择或设计&#xff08;Clustering Algorithms&#xff09;2.3 聚类评估&#xff08;Clustering Evaluation&#xff09;3 常用文本聚类算法3.1 K-means3.2 BIRC…...

屏幕录制 gif android,分享 Android 手机屏幕录制并制玉成 GIF 演示图片

分享 Android 手机屏幕录制并制作成 GIF 演示图片作者&#xff1a;qiujuer博客&#xff1a;blog.csdn.net/qiujuer网站&#xff1a;www.qiujuer.net开源库&#xff1a;Genius-Android转载请注明出处&#xff1a;http://blog.csdn.net/qiujuer/article/details/42506741——学之…...

华为在哪里更新鸿蒙系统,华为鸿蒙系统升级入口在哪里

就在昨晚华为鸿蒙系统发布了&#xff0c;相信大家也都想要第一时间升级使用。据悉华为公布了鸿蒙系统尝鲜体验版&#xff0c;用户在发布会后就可以升级。那么&#xff0c;华为鸿蒙系统升级入口在哪里&#xff1f;大家对这款纯国产的手机系统还是非常感兴趣的&#xff0c;下面来…...

java学生管理系统(百度人脸识别 + Swing + mysql + 邮件发送 )

文章目录项目感受项目历程和功能概述具体实现增删改查音乐播放背景更换邮件发送人脸识别百度AI注册人脸识别相关类的使用单个参数的提取使用opencv调用摄像头录入人脸其他问题总体流程图人脸登录效果展示百度语音识别项目感受 自学java也有一段时间了&#xff0c;这是第一次做…...

HCIP实验5

目录 BGP联邦综合实验 1.对AS2进行IP地址划分 2.对全网段进行IP地址和环回地址配置 &#xff08;1&#xff09;配置 &#xff08;2&#xff09;测试 3.在AS2网段内配置OSPF协议 &#xff08;1&#xff09;配置 &#xff08;2&#xff09;测试 4.进行BGP邻居关系的建立…...

android 实现屏幕录制功能

https://github.com/guaju/ScreenRecordLibrary 本库是基于MediaProjection封装的手机屏幕录制开源库&#xff0c;并提交到Jcenter&#xff0c;方便大家使用 使用方法&#xff1a; module中的build.gradle中的depandencies中添加依赖即可&#xff0c;如下 dependencies { x…...

Android限制录制屏幕无声音,屏幕录制没有声音如何解决?

首先&#xff0c;请确保你使用的是Windows 7&#xff0c;8或者10&#xff0c;目前傲软录屏不支持windows XP系统&#xff1b;使用傲软录屏录制音频&#xff0c;请确保在声音选项下选择系统声音、麦克风或两者都选。然后&#xff0c;进入“选项”&#xff0c;在设置下选择您的电…...

基于机器学习、人工智能和区块链技术的物联网安全

物联网安全&#xff1a;基于机器学习、人工智能和区块链技术的挑战和解决方案背景介绍物联网IoT基础设施物联网协议IoT 应用物联网面临的攻击三种技术下的物联网安全调研区块链机器学习人工智能物联网当前的挑战背景介绍 物联网(IoT)是过去十年在各种应用中使用最快的技术之一…...

windows录制android屏幕,如何使用Android Studio录制屏幕

如何使用Android Studio录制屏幕我将手机连接到Android Studio和代码。 我想记录我的手机屏幕。 我看到了这个&#xff0c;但是该按钮在我的Android Studio中被禁用。 我可以捕获屏幕&#xff0c;但无法录制。 有人可以帮我弄这个吗&#xff1f;UPDATE这就是我的Android工作室中…...

H3C认证网络工程师H3CNE

H3CNE&#xff08;H3C Certified Network Engineer&#xff0c;H3C认证网络工程师&#xff09;认证主要定位于中小型网络的规划、设计、配置与维护&#xff0c;通过H3CNE认证&#xff0c;将证明您对数据通信网络有全面深入的了解&#xff0c;掌握面向中小型企业的网络通用技术&…...

利用 labelCloud 开源工具标注自己的点云数据集为KITTI标注格式教程(支持pcd、bin格式点云)

先贴地址 github 地址&#xff1a;https://github.com/ch-sa/labelcloud 标注为KITTI格式的复现步骤与操作流程 首先吧pcd格式点云转乘bin格式克隆代码 git clone https://github.com/ch-sa/labelCloud.git环境搭配 打开终端 依次输入下列命令 pip install -r requirements.…...

SREC、Hex、Bin等烧录文件格式完全解读

注&#xff1a;本文首发于“嵌入式软件实战派”公众号&#xff0c;关注该公众号可获得更多精品干货。 ▍1. 关于烧录文件 在典型的应用程序中&#xff0c;编译器或汇编器将程序的源代码&#xff08;例如C或汇编语言&#xff09;转换为机器代码&#xff0c;并将其输出到一个文…...

烧录文件bin、Motorola、hex格式介绍及解析

微处理器一般又称单片机&#xff0c;其可以根据人们编写的代码执行相关的逻辑操作。程序员将产品的逻辑操作抽象为C代码&#xff0c;然后通过编译器的编译和链接&#xff0c;生成微处理器可执行的机器码。通常编译器封装的不带调试信息的机器码有3种格式&#xff0c;分别为bin、…...

signature=71820b070a82d48c44cc938baccfcfc9,Fully Self-organized Key Management Scheme in MANET and I

AbstractThe paper first proposes a fully self-organized key management scheme in mobile ad hoc networks which is both certificateless and free from any trusted third party such as Certificate Authority or Key Generation Center. The scheme allows a node to...

signature=e3b0ccaedfec12ad705e1dfe39f44e36,Fully Self-organized Key Management Scheme In MANET And I

【摘要】The paper first proposes a fully self-organized key management scheme in mobile ad hoc networks which is both certificateless and free from any trusted third party such as Certificate Authority or Key Generation Center. The scheme allows a node to …...

Manet 与Wireless LAN区别

Wireless LAN&#xff1a;无线局域网无线网络并不是何等神秘之物&#xff0c;它就是相对于有线网络而言的一种全新的网络组建方式&#xff0c;无线网络在一定程度上扔掉了有线网络必须依赖的网线。无线局域网拓扑结构概述&#xff1a;基于IEEE802.11标准的无线局域网允许在局域…...

wish to add two functions to IMUNES (MANET Docker images selection)

Dear IMUNES developers, I hope you to add two functions to IMUNES (MANET & Docker images selection) first, to support MANET, similar to CORE. Second, can select one docker image in a node, similar to CORE. this is the same to https://github.com/imu...

(OK)(OK) NS3 - MANET - OLSR can not work in bridge NODE

--------------------------------------------------------------------------------------------- seem-manet-template.cc --------------------------------------------------------------------------------------------- tapBridge.Install (adhocNodes.Get (0), a...

Ad Hoc Networks TOPIC SIX<TCP and MANET TCP>【Personal Notes】

Ad Hoc Networks TOPIC SIX-TCP and MANET TCPARQ and Flow Control Protocols1. Idle Request2. Continuous RequestRe-transmission strategies1. Go-back-N2. Pure Selective Re-transmission3. Selective Re-transmission VariationFull Duplex ServiceFlow controlStop /...

(OK)(OK) docker-(centos-quagga-ospf-mdr)--NS3--MANET

./seem-tools-CLI-semi-auto.sh create 25 0 centos-manet android-x86-6.0-rc1-./seem-tools-CLI-semi-auto.sh destroy 25 0 centos-manet android-x86-6.0-rc1-./seem-tools-CLI-semi-auto.sh create 0 2 centos-manet android-x86-6.0-rc1-./seem-tools-CLI-semi-auto.sh...

Which is the best software for MANET simulation?

https://www.researchgate.net/post/Could_you_suggest_any_free_Ad-Hoc_simulation_tool_MANET(NS-3, NS-2, OMNET, NCTUns, GloMoSim)We described the four network simulators that support the simulation of MANET’s (NS-2, OMNET, NCTUns, GloMoSim) features, adva...

(OK) NS3—NS-3—manet-2015.cc

/* -*- Mode: C; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ /** Copyright (c) 2005,2006,2007 INRIA** This program is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License version 2 as*...

舵机应该如果选择?讲讲模拟舵机,数字舵机和总线舵机的区别

推荐视频&#xff1a;模拟舵机&#xff0c;数字舵机和总线舵机科普 &#xff1b;舵机从入门到放弃&#xff1b; 很多时候&#xff0c;我们购买舵机就只知道考虑扭矩以及控制方式。对舵机的分类有所耳闻&#xff0c;但是不清楚其中的区别。接下来我将详细说明模拟舵机&#xff0…...

电子科技大学计算机男女比例,我国最牛的电子科技类985大学,男女比例失调,男生大多打光棍...

结束了充满热血与奋斗&#xff0c;每天都打鸡血不停学习的高中生活&#xff0c;学子们终于迎来了自由的天堂——大学。最近开学季&#xff0c;不少学子都对大学抱有了非常大的期待&#xff0c;认为可以在大学中完成很多自己想做的事情&#xff0c;以及获得一份轰轰烈烈的爱情。…...

厦门理工学院计算机网络试卷,厦门理工人工智能试卷(带解答

《厦门理工人工智能试卷(带解答》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《厦门理工人工智能试卷(带解答(7页珍藏版)》请在人人文库网上搜索。1、考 生 信 息 栏系 专业 级 班级 姓名 学号 装 订 线厦门理工学院期末考试卷20162017 学年 第一学期课程名称人工智…...

太原理工大学python考试题总结

已知x [1, 2, 3]&#xff0c;那么x*3的值为 [1, 2, 3, 1, 2, 3, 1, 2, 3]已知x [1, 2]和y [3, 4]&#xff0c;那么xy的结果是 [1, 2, 3, 4]Python 不具备运行速度快的特点 具备扩展库丰富、跨平台、支持函数式编程的特点Python是面向对象的编程语言列表、元组、字符串是Pyth…...

数字油田AI平台建设之视野、策略及切入点(深度好文)

以智能化技术为代表的新一轮油气革命拉开了序幕&#xff0c;为了提高决策质量和管理水平&#xff0c;石油公司纷纷启动智能油田项目。随着智能油田建设的逐步深入&#xff0c;人工智能技术必将发挥更重要的作用。 按照中国石化智能油田建设规划和定义&#xff0c;智能油气田在…...

中国学生的最大噩梦,都来源于这个男人

全世界只有3.14 % 的人关注了爆炸吧知识会通中西经世致用说到中国古代的“全才”&#xff0c;一般人都会脱口而出沈括、张衡、祖冲之....而在明朝&#xff0c;有这么一位少有人知的“全才”式科学家&#xff0c;他的研究领域包括天文、历法、数学、军事、农业、水利....和上述的…...

理工类小哥如何准备一场求婚

图片from 程大青“看了老穆的求婚视频&#xff08;在文末&#xff0c;不容错过&#xff09;&#xff0c;非常感慨&#xff0c;人生非常短暂&#xff0c;尤其是过了30以后就觉得时间过得飞快&#xff0c;等到老了以后&#xff0c;回想一下过去的人生&#xff0c;都是日复一日的无…...

洛阳理工JAVA期末考试_洛阳理工学院2010/2011学年第一学期基础体育理论期末考试试题答案...

洛阳理工学院2010/2011学年第一学期基础体育理论期末考试试题答案洛阳理工学院2010/2011学年第一学期基础体育理论期末考试试题答案一、填空题(每空1分 共20分)1、以 ______ 计算成绩的竞走和跑的项目叫“ _____ ”&#xff0c;以 _____ 和 _____ 计算成绩的跳跃.投掷项目叫“ …...

张一鸣:我眼里优秀年轻人的五个特点

Python实战社群Java实战社群长按识别下方二维码&#xff0c;按需求添加扫码关注添加客服进Python社群▲扫码关注添加客服进Java社群▲作者 l 张一鸣 01我大学里的三点收获2001年我考入了南开大学&#xff0c;起初大学的生活是让人有点失落的&#xff0c;但慢慢地从安静朴素的校…...

理工男的文科梦 —— LSTM深度学习写春联

北京 上海巡回站 | NVIDIA DLI深度学习培训2018年1月26/1月12日NVIDIA 深度学习学院 带你快速进入火热的DL领域阅读全文>正文共6182个字&#xff0c;7张图&#xff0c;预计阅读时间35分钟。笔者作为一名根正苗红的理工男&#xff0c;内心却常常有很多文艺青年才会有的想法&a…...

HDFS 简介 设计目标 特点 架构

Hadoop Distributed File System 易于扩展的分布式文件系统 运行在大量普通廉价机器上&#xff0c;提供容错机制 为大量用户提供性能不错的文件存取服务 HDFS设计目标 自动快速检测应对硬件错误流式访问数据移动计算比移动数据本身更划算简单一致性模型异构平台可移植 优点…...

张一鸣:优秀年轻人的五个特点

张一鸣5000字读完需要12分钟速读仅需 4 分钟作者 l 张一鸣 01我大学里的三点收获2001年我考入了南开大学&#xff0c;起初大学的生活是让人有点失落的&#xff0c;但慢慢地从安静朴素的校园和踏实努力的氛围中&#xff0c;我还是找到了自己的节奏。大学期间我主要在做三件事情…...

问题空间让理工男也敢追求自己心仪的女孩

叙说程序猿眼中的人文世界&#xff0c;分享的内容如下&#xff1a; 程序那点事&#xff1a;何为问题空间&#xff1f; 程序猿人生&#xff1a;程序猿 现在敢追漂亮女孩子了吗&#xff1f; 程序猿学佛&#xff1a;世界如问题空间 一切唯心造 有趣的HOOKs&#xff1a;那些你不…...

java交换两个浮点型变量的值_Java第二课,变量和数据类型

1 Java第二课1.1 回顾:1、 Java的发展历史&#xff0c;java的开发平台&#xff1a;JavaSE(标准版)、 JavaEE(企业版)、JavaME(微型版)2、 Java语言的特点:面向对象 跨平台(字节码文件->在不同的平台[操作系统]上有不同的虚拟机JVM) 健壮性(强类型,没有指针&#xff0c;不用强…...

乘法除法运算符规范

乘法除法运算符规范引言乘法运算符对于包含字母的情况对于包不含字母的情况纯数字的情况含有虚数单位的情况乘法运算符号的其他写法除法运算符除法运算符号的常用表达形式纯数字的情况对于包含字母的情况总结引言 可能很多小伙伴看到这个标题会瞬间对这篇文章嗤之以鼻&#xf…...

蒋方舟:到清华不再做名人 狂热崇拜理工男生

本文原文链接 http://learning.sohu.com/20080715/n258158428.shtml 主持人&#xff1a;10天之前&#xff0c;当“清华大学有意降60分调档少女作家蒋方舟”的新闻经媒体曝出后&#xff0c;引发了社会上热烈的讨论。这场关于分数与特才、公平与不公平的大讨论&#xff0c;将…...

抢跑AT拿到消费金融牌照后,度小满能否走过“J型曲线”拐点?

文|曾响铃 来源|科技向令说&#xff08;xiangling0815&#xff09; 消费金融的市场能量早已让金融玩家们“垂涎欲滴”。 现在&#xff0c;在大佬级金融科技平台中&#xff0c;谁能获得BAT首家消费金融牌照的“靴子”落地。 最近&#xff0c;度小满金融战略投资哈尔滨哈银消…...

“财界奥斯卡”CGMA年度大奖榜单发布;福朋喜来登品牌在中国开第40家酒店 | 美通企业日报...

今日看点&#xff1a;“财界奥斯卡”CGMA 全球管理会计2020年度中国大奖榜单发布。万豪国际集团旗下上海万信福朋喜来登酒店开业。默克收购德国汉堡mRNA合同开发和制造组织(CDMO)AmpTec。科越医药获得5350万美元的B轮1期融资。新思科技与三星晶圆厂合作开发、验证全新可互操作工…...

首席新媒体运营黎想教程:用户运营之用户行为分析

从流量营销到数据驱动&#xff0c;很多产品的精细化运营都是围绕用户来进行的&#xff0c;关键在于用户研究。 用户研究的常用方法有&#xff1a;情境调查、用户访谈、问卷调查、A/B测试、可用性测试与用户行为分析&#xff0c;其中用户行为分析是用户研究的最有效方法之一。 …...

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver解决方案

&#x1f31f;问题解析 首先&#xff0c;此报错会出现在两种情况&#xff0c;并且有各自的解决方法。 如果在Java程序中报错&#xff0c;那么我们就参考方法1&#xff08;单Java程序&#xff09;&#xff1a; 如果你是在Tomcat中报错&#xff0c;那么我们可以参考方法2&#…...

技术博文: 头条,知乎、CSDN 三大平台对比

”itjds“ 博客&#xff0c;将近十几年没更新过了。最近因为工作需要&#xff0c;还是复用了旧的ID, 做了实名认证&#xff0c;分别在 头条&#xff0c;知乎、CSDN这三个社交媒体上。进行了发布测试,也有意识的针对三家媒体的推荐、浏览、转载做了一个分析。 一&#xff0c; 平…...

html中word-wrap无效,使用word-wrap来防止文字溢出

DIV中明明限制了宽度 &#xff0c;但是输入aaaaaaaaaaa...等却不会自动换行&#xff0c;检查了一通没发现问题&#xff0c;原来是(连续的字母会当作一个单词处理), 外国人看认为一个单词不应该换行&#xff0c;以下给出的解决方法&#xff1a;word-break:break-all 和 word-wra…...

Word2016英文两边对齐

ps: 如果有任何问题可以评论留言&#xff0c;我看到后会及时解答&#xff0c;评论或关注&#xff0c;您的鼓励是我分享的最大动力 转载请注明出处&#xff1a;https://blog.csdn.net/qq_40938301/article/details/102629983 问题&#xff1a; Office Word 很多人用的都是默认…...

word-break 与 word-wrap

break-word会对过长的单词做词内断词处理&#xff0c;这样单词始终会在容器中&#xff0c;不会溢出容器 break-all很暴力的一种处理方法&#xff0c;过长单词先断词处理&#xff0c;占满一行&#xff0c;然后再换行处理 每次看到这两个css属性都是一种眼晕的感觉&#xff0c;今…...

word2016 页码问题

摘要&#xff1a;文本介绍在word2016中页码的一些基础问题。主要有三个&#xff0c;分别是插入页码的基础操作、如何在任意页中插入代码。 插入页码的基础操作&#xff1a; 双击页眉或页脚处即可进入页眉页脚编辑界面&#xff0c;然后按照下面操作&#xff0c;选择想要添加的…...

Java POI导出word文件及生成表格

HWPF是处理 Microsoft Word 97&#xff08;-2007&#xff09; .doc文件格式&#xff0c;它还为较旧的Word 6和Word 95文件格式提供了有限的只读支持。包含在poi-scratchpad-XXX.jar中。 XWPF是处理 Word 2007 .docx文件格式&#xff0c;包含在poi-ooxml-XXX.jar中。 虽然HWPF和…...

vscode 列块编辑_[vscode]列编辑功能

“Column selection mode”、“列块模式”、“列编辑”、“多光标功能”都是类似的叫法。笔者以前用notepad&#xff0c;下面叫“npp”&#xff08;Notepad Plus Plus&#xff09;&#xff0c;npp只有windows版本&#xff0c;后来切换到mac&#xff0c;深深地爱上了vscode&…...

python pandas 行转列_pandas行转列、列转行、以及一行生成多行

楔子笔者曾经碰到过两种格式的数据&#xff0c;当时确实把我难住了&#xff0c;最后虽然解决了&#xff0c;但是方法不够优雅&#xff0c;而且效率也不高&#xff0c;如果想高效率&#xff0c;那么就必须使用pandas提供的方法。而pandas作为很强的一个库&#xff0c;一定可以优…...

EXCEL让同一列中的中英文分离(简单情况)

如图&#xff0c;将其它文本中的中英文导入excel中&#xff0c;可能会面临混合在同一列中的难题。如果中英文之间有特殊符号分隔&#xff0c;可以利用分列功能来实现。如果没有&#xff0c;那么基本情况包括中文在前和英文在前两种。更复杂的这里不做讨论&#xff0c;毕竟我很菜…...

PostgreSQL 行转列

法一: crosstab 原表(左)及现实结果表(右)展示: 第一步: 安装扩展 create extension tablefunc; ** 否则后续会报错 错误: 函数 crosstab(unknown, unknown) 不存在 第二步: 对表进行空值处理(此处将空值填写为字符串空值) update t_user_income set income空值 where i…...

SQL列转行

CREATE TABLE T_score ( id int primary key auto_increment, name varchar(20), subject varchar(30), score float ) 字段说明&#xff1a; id 主键 name 名称 subject 课程 score 分数 新增数据&#xff1a; INSERT INTO T_score (name,subject,score) values…...

oracle列转行 多个字段_oracle多列转成一列(列转行)、行转列

1. 多列转成一列(列转行) -- 6列转成两列(列转行) 这就是最常见的列转行&#xff0c;主要原理是利用SQL里面的union with temp as (select a.iid_sn, a.product_name, a.sales_figures, a.selling_cost, a.pretax_profit, a.closing_inventory from is_import_detail a,1.多列转…...

oracle列转行 多个字段_oracle 多列转成一列(列转行)、 行转列

1. 多列转成一列(列转行) -- 6列转成两列(列转行) 这就是最常见的列转行&#xff0c;主要原理是利用SQL里面的union with temp as (select a.iid_sn, a.product_name, a.sales_figures, a.selling_cost, a.pretax_profit, a.closing_inventory from is_import_detail a,1.多列转…...

数据库中的行转列 与 列转行

1.创建数据库表,为表字段添加数据 #创建数据库表结构 create table tb_student_grade(id int(10) not null auto_increment primary key,s_name varchar(20) default null,course varchar(20) default null,score float default 0 );#初始化数据 insert into tb_student_grade…...

多行多列mysql_mysql如何将多行变成多列

mysql将多行变成多列的方法&#xff1a;首先在原表中查询数据&#xff1b;然后将多行数据合并到同一列或不同列即可&#xff0c;如【select name ,group_concat(sore Separator ;) as score from stu group by name】。MySQL中的行列变换(视频教程推荐&#xff1a;mysql视频教程…...

bootstrap-table 列属性_bootstrap table 动态列数

据说bootstrap table非常好用&#xff0c;从入门教程中了解到它的以下主要功能&#xff1a;由于固定表头意味着固定的列&#xff0c;然而我需要做动态列数的表格啊。大致思路&#xff1a;bootstrap table在加载表格时&#xff0c;表格的内容按columns参数中的数组来填充。因此&…...

mysql列查询结果_MySQL查询结果行转列、列转行

一、行转列有如图所示的表&#xff0c;现在希望查询的结果将行转成列建表语句如下&#xff1a;CREATE TABLE TEST_TB_GRADE (ID int(10) NOT NULL AUTO_INCREMENT,USER_NAME varchar(20) DEFAULT NULL,COURSE varchar(20) DEFAULT NULL,SCORE float DEFAULT ‘0‘,PRIMARY KEY …...

Excel 列索引 转 列英文序号

&#xfeff;&#xfeff;/// <summary> /// 列从1开始,转换得到excel列中的英文序号 /// 调用示例&#xff1a;string s TransferExcelColumnIndex(5);//得到E /// </summary> /// <param name"iColIndex&quo…...

oracle列转换成行,oracle列转换为行

首先介绍行转换为列&#xff0c;oracle行转换为列是比较常见&#xff0c;网上常见的例子如下&#xff1a;grades表&#xff1a;student subject gradestudent1 语文 80student1 数学 70student1 英语 60student2 语文 90student2 数学 80student2 …...

VBA 列号转换成列英文字母

Replace(Cells(1, 1).address(False, False), "1", "") Step1. 获取Cell所在的列&#xff08;英文字母&#xff09;和行Cells(1, 1).address(False, False) -> A1Cells(1, 1).Address(True, True) -> $A$1Cells(1, 1).Address(True, False) -> A$…...

java poi列号转字母_通过Excel列号取得其对应的列字母

在编程中&#xff0c;我们常常利用POI或者其他接口操作Excel文件。当通过列号写公式时&#xff0c;很麻烦。因为Excel公式中&#xff0c;使用列字母形式表示单元格。比如&#xff1a;SUM(B1:B5)&#xff0c;下面的方法可以通过Excel列号取得其对应的列字母。这样通过循环列号&a…...

计算机中列英语,计算机中常用的英文缩写有哪些?

PC&#xff1a;个人计算机Personal ComputerCPU&#xff1a;中央处理器Central Processing UnitCPU Fan&#xff1a;中央处理器的“散热器”(Fan)MB&#xff1a;主机板MotherBoardRAM&#xff1a;内存Random Access Memory&#xff0c;以PC-代号划分规格&#xff0c;如PC-133&a…...

【go】剑指offer:用26个英文字母组合表示列数

不忘初心&#xff0c;砥砺前行 作者 | 陌无崖转载请联系授权 题目要求在EXCEL中常常用英文字母表示列&#xff0c;如A为1&#xff0c;B为2.....Z为26&#xff0c;依次进行一个循环&#xff0c;AA为27&#xff0c;AB为28&#xff0c;按照这样的规律&#xff0c;要求输入一个字符…...

C++ Eigen向量乘法错误报错类型

记录一下报错信息&#xff0c;以便以后排查&#xff1a; Eigen中向量或矩阵的乘法发生错误会报如下错误&#xff0c;其特征为&#xff1a; /usr/include/eigen3/Eigen/src/Core/Assign.h:492:3: error: ‘YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES’ is not a member of ‘Eige…...

矩阵乘法和向量乘法

1. 矩阵乘法 2.向量乘法 https://zhuanlan.zhihu.com/p/79760117...

GLSL里的矩阵对向量的乘法与OpenGL里用数组生成矩阵进行向量乘法的非直觉不一致

在GLSL里写成如下的mat*vector&#xff0c; 在实际操作过程中并不和直觉的乘法相同&#xff0c;直觉上做的是&#xff1a; 然而做的是 例如在.c文件里设置mat为 vector 以为做的是mat*vector 实际上做的是 * vector...

Numpy中的矩阵向量乘法

Numpy中的矩阵向量乘法 链接: Numpy中的矩阵向量乘法....

【MPI编程】矩阵向量乘法--解法三(子矩阵块分解)【高性能计算】

简述 子矩阵分解&#xff0c;就是说&#xff0c;将原来的矩阵给分解为更小的矩阵块。 让所有的线程都共享有向量&#xff08;但不共享矩阵&#xff09; 为了试验简单&#xff0c;这里做了几个简单的假设 矩阵为方阵(n*n)comm_sz&#xff08;线程数量&#xff09;和n满足下面…...

js如何实现继承

1&#xff0c;原型链继承 让构造函数的原型&#xff08;prototype&#xff09;是另一个类型的实例&#xff0c;那么该构造函数new出来的实例就具有该实例的属性&#xff1b;缺点&#xff0c;每一个对象实例共享所有的继承和方法&#xff0c;无法向父类传参 function father&a…...

【动态规划】01背包问题(手画图解)

经典dp动规问题&#xff0c;01背包问题关键在于遍历顺序与初始化这两步的推导。 目录 文章目录 一、01背包问题 二、确定dp数组及其下标含义 三、确定递推公式 四、确定初始化 五、确定遍历顺序 六、举例推导dp数组 总结 一、01背包问题 有n件物品&#xff0c;每件的价值…...

JS 闭包

JS 闭包 一、如何产生闭包&#xff1f; 当一个嵌套的内部&#xff08;子&#xff09;函数引用了嵌套的外部&#xff08;父&#xff09;函数的变量&#xff08;函数&#xff09;时&#xff0c;就产生了闭包&#xff1b; 二、闭包到底是什么&#xff1f; 理解一&#xff1a;闭…...

13薪|架构师[北京市 - 朝阳区]-20k-35k

"众推职聘”以交付结果为宗旨的全流程化招聘服务平台&#xff01;今日招聘信息↓【工作内容】1、负责公司千万级数据、用户的产品平台整体技术规划、系统架构设计及优化&#xff1b;2、对设计系统的最终性能和稳定性、扩展性负责&#xff1b;3、参与各种技术方案评审&…...

Windows磁盘克隆软件推荐

把原有硬盘克隆到另一个更大的硬盘&#xff0c;你只需要一个好用的硬盘克隆软件。如果你不知道硬盘克隆软件怎么选&#xff0c;你可以尝试下傲梅轻松备份&#xff0c;这个磁盘克隆软件适用于Windows 11、Windows 8、Windows 7、Windows XP、Windows Vista。以下是它的一些优点&…...

一文搞清商旅酒店数据治理——酒店数据问题分析及治理方案

问题背景 对于商旅用户而言&#xff0c;通过商旅系统进行酒店预订时&#xff0c;都希望酒店预订体验良好。并且商旅用户通过预订页面进行酒店预订时希望所见即所得&#xff08;也就是说&#xff0c;所看见的酒店相关信息就是用户最终预订的结果&#xff09;&#xff0c;包括能…...

TOOM品牌公关与舆情管理怎么做,品牌舆情监控工作制度是什么?

品牌舆情是指关于某一品牌的公共讨论、评价和看法。品牌舆情可以通过社交媒体、新闻媒体、博客、论坛等多种途径表现出来。监测品牌舆情是品牌公关和舆情管理的重要组成部分&#xff0c;可以帮助公司了解公众对品牌的看法&#xff0c;以及在遇到舆情危机时采取有效的应对措施。…...

SVG 语法入门教程(绘制矩形、圆形、椭圆、多边形等)

文章目录一、SVG 简介1.1 什么是 SVG &#xff1f;1.2 SVG 的历史和优势1.3 查看 SVG 文件1.4 创建SVG文件1.5 学习之前应具备的基础知识二、SVG 实例三、在 HTML 中嵌入 SVG3.1 使用 \<embed> 标签3.2 使用 \<object> 标签3.3 使用 \<iframe> 标签3.4 直接在…...

从0开始学python -23

Python3 条件控制 Python 条件语句是通过一条或多条语句的执行结果&#xff08;True 或者 False&#xff09;来决定执行的代码块。 可以通过下图来简单了解条件语句的执行过程: 代码执行过程&#xff1a; if 语句 Python中if语句的一般形式如下所示&#xff1a; if conditi…...

访问学者申请信标准模版

今天知识人网访问学者小编为大家分享一封标准的申请信模版&#xff0c;希望大家注意格式的书写&#xff1a;意向导师名称(如Dr. XXX)意向单位名称意向单位地址(如XXX号XX路XX市XX省)年月日开头(Dear XXX)&#xff0c;第一部分结合自己的研究兴趣向该单位的访学职位表示浓厚的兴…...

数字时代,VR云招聘“零见面”火了

招聘信息刷了又刷&#xff0c;上班谈、下班聊&#xff0c;终于到了可以预约时间来公司面试时&#xff0c;一句“我考虑下”或干脆没回音了&#xff0c;直接把HR打回原地。新年伊始&#xff0c;随着疫情的放开&#xff0c;金三银四的求职、招聘旺季仿佛也提前到来&#xff0c;但…...

Hudi(20):Hudi集成Flink之可以离线进行的操作

目录 0. 相关文章链接 1. 离线 Compaction 1.1. 设置参数 1.2. 原理 1.3. 使用方式 1.3.1. 执行命令 1.3.2. 参数配置 1.3.3. 案例演示 2. 离线 Clustering 2.1. 设置参数 2.2. 原理 2.3. 使用方式 2.3.1. 执行命令 2.3.2. 参数配置 2.3.3. 案例演示 0. 相关文章…...

【Spring-Security】详细使用用指南

Spring-Security使用详细指南简介简单入门认证登录校验流程原理解读认证流程登录校验&#xff1a;授权授权基本流程授权实现限制访问资源所需的权限简介 Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架。 在安全框架中&#xff0c;我们最常提到的两个概…...

sd卡图片损坏怎么修复?

在旅途中&#xff0c;正常情况下用相机拍的照片都是存在相机的SD卡里的。等到我们需要时&#xff0c;在进行导出。但如果是出现意外导致sd卡图片遭到损坏&#xff0c;遇到这种情况&#xff0c;sd卡图片损坏怎么修复呢?这里小编将为大家分享一些图片修复技巧。操作很简单。相信…...

博物馆ar景点创意化交互体验的优点

一直以来&#xff0c;博物馆注重展览深度的拓展和藏品价值的挖掘&#xff0c;而缺少传播与推广。“博物馆的研究成果和藏品价值应该让公众有更多机会和渠道了解。 在博物馆中&#xff0c;为了保护古代文物不受到破坏而收藏到展柜中&#xff0c;参观者因受到展柜的距离限制无法近…...

一道经典面试题透彻理解面向对象编程思想和简单工厂模式

一道经典的面试题如下&#xff1a; 用一种面向对象编程语言实现一个计算器来满足整数的加减乘除运算。 大部分人的代码如下&#xff1a; 1.0版本 #include<iostream> using namespace std; #include<string> //1.0版本 int main() {int num1 0;int num2 0;st…...

Java软件开发需要掌握的技术分阶-2023版

简单的东西考虑全面&#xff0c;复杂的东西分成简单&#xff0c;枪在手&#xff0c;路在前&#xff0c;独闯难关&#xff0c;大破无往 第一阶段 计算机理论基础&#xff1a;操作系统、网络安全、数据结构与算法、硬件与软件基本常识 Java&#xff1a;各环境部署与程序运行原理…...

使用 React hooks 怎么实现类里面的所有生命周期?

在 React 16.8 之前&#xff0c;函数组件也称为无状态组件&#xff0c;因为函数组件也不能访问 react 生命周期&#xff0c;也没有自己的状态。react 自 16.8 开始&#xff0c;引入了 Hooks 概念&#xff0c;使得函数组件中也可以拥有自己的状态&#xff0c;并且可以模拟对应的…...

shell脚本简介+编写

1、常用Linux命令 2、Linux下脚本编写 3、windows下CMD常用命令 文章目录一、变量1、系统预定义变量2、自定义变量3、特殊变量&#xff1a;n、n、n、#、∗、*、∗、、$?二、运算符三、条件判断1、两个整数之间比较2、文件权限判断3、文件类型判断4、多条件判断四、流程控制1、…...

新项目如何提交代码到已有仓库,并创建新分支

1、步骤 2、创建远程仓库或者打开已有仓库页面 3、打开工程&#xff0c;创建本地git仓库 4、本地仓库与远程仓库关联 1、新建项目&#xff0c;此时的项目工程如下图所示 2、创建远程仓库或者打开已有仓库页面 此时在新建仓库或者已有仓库页面复制好仓库地址&#xff08;仓库…...

分享36个JS滚动,29个JS进度条,12个JS日历代码,总有一款适合您

分享36个JS滚动&#xff0c;29个JS进度条&#xff0c;12个JS日历代码&#xff0c;总有一款适合您 36个JS滚动29个JS进度条12个JS日历代码下载链接&#xff1a;https://pan.baidu.com/s/1zvSK9EAPd4dnMRl7V4Cc1g?pwdsu9i 提取码&#xff1a;su9i Python采集代码下载链接&a…...

ElasticSearch-学习笔记03【ElasticSearch集群】

Java后端-学习路线-笔记汇总表【黑马程序员】ElasticSearch-学习笔记01【ElasticSearch基本介绍】【day01】ElasticSearch-学习笔记02【ElasticSearch索引库维护】ElasticSearch-学习笔记03【ElasticSearch集群】ElasticSearch-学习笔记04【Java客户端操作索引库】【day02】Ela…...

MySQL面试题:保证MySQL隔离性的MVCC

文章目录一、MVCC是什么二、为什么需要MVCC三、InnoDB中的MVCC学习视频&#xff1a;后端面试问题系列参考文章&#xff1a;MVCC 机制的原理及实现一、MVCC是什么 MVCC机制&#xff1a;生成一个数据快照&#xff0c;并用这个快照来提供一定级别的一致性的读取&#xff0c;也称为…...

基于RNN文本生成 为男朋友写诗歌 附代码 详细教程

一、亮出效果 世界上美好的事物很多,当我们想要表达时,总是感觉文化底蕴不够。 看到大海时,心情舒畅,顿时感觉激情澎湃,想了很久,说了句:真大啊!看到鸟巢时,心情舒畅,顿时感觉激情澎湃,想了很久,说了句:真大啊!看到美女时,心情舒畅,顿时感觉激情澎湃,想了很久…...

2.5 Java基础 day06 数组 九层妖塔数组实现 字符串的拼接、比较等方法

数组 一维数组&#xff1a; String[] nums new String[3]; // //nums[0] 1; // for (Object num : nums) { // System.out.println(num); // } // String[] names {"zhangsan", "lisi", "wangwu"}; …...

中创教育带你了解培训机构投诉退费纠纷增多原因

教育培训机构纠纷近年来案件越来越多&#xff0c;主要聚焦于退费问题。交费容易&#xff0c;退费难上加难&#xff0c;为此&#xff0c; 提醒各位学员在选择学历提升、学科类或职业技能、职业资格类教育培训机构时要注意查看对方是否已经取得教育行政部门或人力社保部门颁发的…...

【CSDN竞赛26】题解

文章目录等差数列题目描述解题思路AC代码阿波罗的魔力宝石题目描述解题思路AC代码任务分配问题题目描述解题思路AC代码单词逆序题目描述解题思路AC代码CSDN编程竞赛报名地址&#xff1a;https://edu.csdn.net/contest/detail/40 等差数列 题目描述 一个等差数列是一个能表示成…...

Visual Transformer算法汇总总结

深度学习知识点总结 专栏链接: https://blog.csdn.net/qq_39707285/article/details/124005405 此专栏主要总结深度学习中的知识点&#xff0c;从各大数据集比赛开始&#xff0c;介绍历年冠军算法&#xff1b;同时总结深度学习中重要的知识点&#xff0c;包括损失函数、优化器…...

【2】深度学习之Pytorch——数据类型、索引张量、Numpy的互通性的概念、序列化张量

目录数据类型创建时指定数据类型转换数据类型索引张量numpy与pytorch的互通性序列化张量保存加载将张量转移到GPU上运行张量常见的API总结每文一语本期文章我们继续介绍张量的数据类型和一些基本的操作 数据类型 张量构造函数&#xff08;即tensor、ones、zeros之类的函数&am…...

Pandas读取excel合并单元格的正确姿势(openpyxl合并单元格拆分并填充内容)

问题介绍&#xff08;ffill填充存在的问题&#xff09; 在pandas读取excel经常会遇到合并单元格的问题。例如&#xff1a; 此时使用pandas读取到的内容为&#xff1a; 如果去百度&#xff0c;几乎所有人会说应该用如下代码&#xff1a; df[班级] df[班级].ffill()这样看起来…...

jsp员工管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp 员工管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开 发&#xff0c;数据库为Mysql&#xff0c;使用ja…...

Shebang Line解释行

Shebang Line Shebang Line也被叫做 Hashbang Line&#xff0c;主要是一个由井号#和叹号!开头&#xff0c;并构成的字符序列&#xff0c;如#! xx/xx/x就叫做 Shebang Line。在开头字符之后&#xff0c;可以有一个或数个空白字符。这个字符串&#xff0c;通常只出现在 Script 文…...

片内和片间时间同步,时间戳

时间同步的概念给出几个应用场景&#xff1a;GPS授时车载系统 传感器与处理器之间的时间同步汽车上的各个ECU基本都是实时性非常强的控制器&#xff0c;在关联ECU之间或ECU内部各个软件模块之间通常需要在大致同步的时间节拍上运行&#xff0c;特别是在某些高速场景&#xff0c…...

通过 Microsoft Visual Studio 构建NotepadFree

通过 Microsoft Visual Studio 构建NotepadFree 前置要求: Microsoft Visual Studio 2019 (C/C Compiler, v142 toolset for win32, x64, arm64) 由一个 Visual Studio 解决方案构建的三个组件&#xff1a; notepad.exe: (包含 libSciLexer.lib) libScintilla.lib : 基于 Sc…...

给大家推荐一些非常实用的JavaScript、TypeScript一行代码,建议收藏

给大家推荐一些非常实用的JavaScript、TypeScript一行代码&#xff0c;建议收藏一、数组相关1、数值类型转数组2、校验数组是否为空3、将对象数组转为单个对象4、两个数组比较5、将字符串数组转为数字6、统计一个值在数组出现的次数二、日期处理1、两个日期相差月份2、两个日期…...

One-Hot 的使用

Sklearn 中 OneHotEncoder 的使用&#xff1a; import numpy as np from sklearn.preprocessing import OneHotEncoder samples np.array([ [1, 3, 2], [7, 5, 4], [1, 8, 6], [7, 3, 9] ]) # 独热编码 sparse 是否采用稀疏矩阵 ohe OneHotEncoder(sparseFalse, dtype&quo…...

Springboot整合AOP和注解,实现丰富的切面功能

简介 我们在文章《Spring AOP与AspectJ的对比及应用》介绍了AOP的使用&#xff0c;这篇文章讲解一下AOP与注解的整合&#xff0c;通过注解来使用AOP&#xff0c;会非常方便。为了简便&#xff0c;我们还是来实现一个计时的功能。 整合过程 首先创建一个注解&#xff1a; Re…...

【Flutter入门到进阶】跨平台相关

1 跨平台 1.1 跨平台概念 1.1.1 概念 跨平台概念是软件开发中一个重要的概念&#xff0c;即不依赖于操作系统&#xff0c;也不依赖硬件环境。一个操作系统下开发的应用&#xff0c;放到另一个操作系统下依然可以运行。相对而言如果某种计算机语言不用修改代码即可做到高度跨…...

阿里前端一面必会react面试题总结

React中怎么检验props&#xff1f;验证props的目的是什么&#xff1f; React为我们提供了PropTypes以供验证使用。当我们向Props传入的数据无效&#xff08;向Props传入的数据类型和验证的数据类型不符&#xff09;就会在控制台发出警告信息。它可以避免随着应用越来越复杂从而…...

各国政府成为量子投资“狂热”主力军!

&#xff08;图片来源&#xff1a;网络&#xff09;即使在资本寒冬&#xff0c;量子计算也吸引着投资者的极大兴趣。今年&#xff0c;尤其是美国以外的初创公司吸引了投资者的目光&#xff0c;获得了巨额投融资。2023年1月&#xff0c;总部位于澳大利亚悉尼的量子计算初创公司Q…...

Makefile 整理

1 简介 一个工程中的源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefile定义了一系列的规则来指定&#xff0c;哪些文件需要先编译&#xff0c;哪些文件需要后编译&#xff0c;哪些文件需要重新编译&#xff0c;甚至于进行更复杂的功能…...

全局事务服务 GTS

目录 1.什么是全局事务服务GTS 2.为什么需要全局事务服务 3.产品架构 4.应用场景 SOA 和分布式事务 消息事务 通用分布式事务管理 共享出行 5.产品功能 跨数据库分布式事务 跨服务的分布式事务 消息队列分布式事务 混合的分布式事务 多种事务模式 6.产品优势 超强…...

【C#项目】图书管理系统-WinForm+MySQL

文章目录前言一、业务梳理与需求分析1.功能描述2.实现步骤3.功能逻辑图二、数据库设计1.实体-关系&#xff08;E-R图&#xff09;概念模型设计2.数据表设计三、WinForm界面交互设计四、通用类设计五、系统代码实现与分析总结前言 图书馆管理系统主要功能有普通用户&#xff08…...

STK + C# + Cesium联合编程(一):技术路线验证

概述本文演示了一个基于STK C# Cesium联合编程的应用实例。关于STK和Cesium编程网上在线资料丰富&#xff0c;本文主要解决了如果配置IIS服务以使得远程客户端能访问、初始化、以及执行服务器端STK的接口服务。请参考本作者之前关于STK、Cesium&#xff08;CZML&#xff09;、…...

2023-02-07 mysql创建user并配置权限

查询数据库版本 select version 查询所有ip和用户 select * from mysql.user; mysql> select * from mysql.user; mysql> select host,user from mysql.user; ---------------------------------------- | host | user …...

STM32CubeMX学习笔记(51)——读写内部Flash

一、简介 在STM32芯片内部有一个 FLASH 存储器&#xff0c;它主要用于存储代码&#xff0c;我们在电脑上编写好应用程序后&#xff0c;使用下载器把编译后的代码文件烧录到该内部 FLASH 中&#xff0c;由于 FLASH 存储器的内容在掉电后不会丢失&#xff0c;芯片重新上电复位后…...

互斥锁、读写锁、自旋锁

目录 为什么需要加锁&#xff1f; Demo1 分析原因 解决方法一&#xff1a;互斥锁(mutexlock) 解决方法二&#xff1a;自旋锁(spinlock) 自旋锁与互斥锁效率对比 Linux自旋锁与互斥锁的区别 Linux自旋锁与互斥锁的选用原则 C/CLinux服务器开发/后台架构师【零声教育】-学…...

Linux 项目使用命令整理

一. 从一个服务器到另一个服务器拷贝命令 拷贝单个文件命令&#xff1a; scp file usernameip:filepath 说明&#xff1a; username: 远程登录的用户名&#xff0c; 拷贝文件夹命令如下(多加上一个-r 参数即可)&#xff1a; scp -r file usernameip:filepath 二. 常用命令积…...

@Aspect注解背后的奥秘--下

Aspect注解背后的奥秘--下前言手动化进行到自动化靠的是什么自动代理创建器如何搜寻并对增强器集合进行过滤1.寻找所有可用的候选advisor1.1 isEligibleBean两种分支情况2.过滤候选增强器3.扩展增强器4.对增强器进行排序搜寻所有切面类并完成解析转换过程创建代理对象拦截器链执…...

Dlib+Opencv进行人脸识别检测

本案例主要用于对图片中的人脸进行检测&#xff0c;并用矩形进行框出import dlibimport cv2# 需要被识别的图片img_path "D:\\xxx.jpg"imgcv2.imread(img_path)#转换为灰阶图片graycv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 正向人脸检测器detector dlib.get_frontal…...

汽车行业进入「换帅+换将」周期,2023年关键词:变

「换帅换将」&#xff0c;成为汽车制造商进入下一个行业十年发展周期的新常态&#xff0c;同时也是解决企业现阶段难题&#xff08;包括新能源转型、智能化技术升级、市场销量疲软等等&#xff09;的不二之选。 1月30日&#xff0c;小鹏汽车宣布&#xff0c;原长城汽车总经理王…...

Android---PhotoView

目录 准备工作 1、双击放大和缩小 2、惯性滑动 3、双指放大和缩小 4、完整DEMO 准备工作 自定义PhotoView 自定义 PhotoView 继承(extends)自 View。并在最中间显示后面操作的图片。绘制图片可以重写 onDraw()方法&#xff0c;并在里面通过Canvas.drawBitmap()来要绘制图片…...

GardenPlanner 下载,园林绿化设计

garden planner拥有花园式和景观设计的工具&#xff0c;软件使用简单放&#xff0c;是一个简单而有效的软件解决方案&#xff0c;可以帮助你设计你梦想中的花园,以及安排植物,树木,建筑物和对象。1、garden planner支持更简单的园林规划方案2、软件采用二维的方式建立规划图3、…...

关于Python3异步非阻塞Web框架Tornado:真实的异步和虚假的异步

我们知道Tornado 优秀的大并发处理能力得益于它的 web server 从底层开始就自己实现了一整套基于 epoll 的单线程异步架构&#xff0c;其他 web 框架比如Django或者Flask的自带 server 基本是基于 wsgi 写的简单服务器&#xff0c;并没有自己实现底层结构。而tornado.ioloop 就…...

传统文件同步方式有哪些问题?该如何寻找替代同步方案?

企业每天都在产生大量数据&#xff0c;不断累加&#xff0c;大部分数据都会存储在服务器、数据中心等位置&#xff0c;所以在数据中心、服务器节点、异地分支机构、外部合作伙伴之间等&#xff0c;存在多种文件交换场景。 很多企业一开始会选择一些传统的传输调度方式&#xff…...

8-还在用Replication Controller吗、不妨考虑Deployment

8-还在用Replication Controller吗、不妨考虑Deployment 前言 在前一天我们介绍到Replication Controller。如果读者看过 Replication Controller官方文件 &#xff0c;可以看到官方在文件一开头就表示&#xff1a; NOTE: A Deployment that configures a ReplicaSet is now …...

Mysql5.7解压版安装教程(安装第二个服务)

一、 安装步骤 &#xff08;1&#xff09;解压Mysql5…7版本&#xff0c;在根目录下创建文件“my.ini”&#xff0c;并编辑相关内容如下&#xff1a; 注意&#xff1a; port、basedir、datadir、server-id不要和第一个&#xff08;已安装的&#xff09;MySQL相同。 [mysql] #…...

深圳医药净化厂房设计装修要点SICOLAB深圳医药净化厂房设计装修公司

1 GMP的作用药厂的新建、改建和扩建均要按照GMP 进行GMP 是药品生产和质量管理规范的简称。为了保证药品的生产质量&#xff0c;保证人民安全用药&#xff0c;中国国家药品监督管理局1998 年颁布的《GMP》是借鉴国外和国内以往的《GMP》&#xff0c;经过逐步完善&#xff0c;结…...

02-PS工具栏介绍

1.移动工具 用来移动图片位置的, 用鼠标左键点击图片不松手, 移动鼠标就可以进行拖动 2.画板工具 ps中选择画板工具之后&#xff0c;可以根据需要添加多个画板。以下为详细的操作步骤&#xff1a; 1.ps软件中&#xff0c;新建画布之后&#xff0c;在左侧工具栏选择画板工具 …...

小区系 统 信 号 及 电 源 传 输

&#xff08; 1&#xff09; 系 统 的 信 号 电 缆本 次 设 计 主 要 道 路 的 数 字 监 控 &#xff0c; 采 用 超 五 类 室 外 防 水 网 线 传 输 视 频 信 号 &#xff0c; 传输 距 离 小 于 75米 &#xff0c;当 距 离 大 于 75米 时 &#xff0c;全 部 采 用 交 换 机 千 …...