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

备案掉了网站会怎样/深圳华强北最新消息

备案掉了网站会怎样,深圳华强北最新消息,企业网站建设营销,做设计一般在那个网站找图基于 bouncycastle 实现 国密 SM2 <!-- 引入 bouncycastle --> <dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.70</version> </dependency>import lombok.Sneak…

基于 bouncycastle 实现 国密 SM2

<!-- 引入 bouncycastle -->
<dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.70</version>
</dependency>
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.gm.GMNamedCurves;
import org.bouncycastle.asn1.gm.GMObjectIdentifiers;
import org.bouncycastle.asn1.x9.X9ECParameters;
import org.bouncycastle.crypto.engines.SM2Engine;
import org.bouncycastle.crypto.params.ECNamedDomainParameters;
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
import org.bouncycastle.crypto.params.ParametersWithRandom;
import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey;
import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey;
import org.bouncycastle.jcajce.provider.asymmetric.ec.KeyPairGeneratorSpi;
import org.bouncycastle.jcajce.provider.asymmetric.x509.CertificateFactory;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.jce.spec.ECParameterSpec;
import org.bouncycastle.jce.spec.ECPrivateKeySpec;
import org.bouncycastle.jce.spec.ECPublicKeySpec;
import org.bouncycastle.math.ec.ECPoint;
import org.bouncycastle.util.encoders.Hex;import java.io.ByteArrayInputStream;
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.security.*;
import java.security.cert.X509Certificate;
import java.util.Base64;import static java.util.Objects.isNull;@Slf4j
public class SM2Utils {private static final String EC = "EC";private static final Base64.Encoder BASE64_ENCODER = Base64.getEncoder();private static final Base64.Decoder BASE64_DECODER = Base64.getDecoder();private static final BouncyCastleProvider PROVIDER = new BouncyCastleProvider();static {if (isNull(Security.getProvider(BouncyCastleProvider.PROVIDER_NAME))) {Security.addProvider(PROVIDER);}}// region generateKeyPair/*** 获取sm2密钥对* BC库使用的公钥=64个字节+1个字节(04标志位),BC库使用的私钥=32个字节* SM2秘钥的组成部分有 私钥D 、公钥X 、 公钥Y , 他们都可以用长度为64的16进制的HEX串表示,* <br/>SM2公钥并不是直接由X+Y表示 , 而是额外添加了一个头** @return*/public static SM2KeyPair<byte[], BigInteger> genKeyPair() {return genKeyPair(false);}/*** 获取sm2密钥对* BC库使用的公钥=64个字节+1个字节(04标志位),BC库使用的私钥=32个字节* SM2秘钥的组成部分有 私钥D 、公钥X 、 公钥Y , 他们都可以用长度为64的16进制的HEX串表示,* <br/>SM2公钥并不是直接由X+Y表示 , 而是额外添加了一个头,当启用压缩时:公钥=有头+公钥X ,即省略了公钥Y的部分** @param compressed 是否压缩公钥(加密解密都使用BC库才能使用压缩)* @return*/@SneakyThrowspublic static SM2KeyPair<byte[], BigInteger> genKeyPair(boolean compressed) {//1.创建密钥生成器KeyPairGeneratorSpi.EC spi = new KeyPairGeneratorSpi.EC();//获取一条SM2曲线参数X9ECParameters parameters = GMNamedCurves.getByOID(GMObjectIdentifiers.sm2p256v1);//构造spec参数ECParameterSpec parameterSpec = new ECParameterSpec(parameters.getCurve(), parameters.getG(), parameters.getN());// SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG", "SUN");SecureRandom secureRandom = new SecureRandom();//2.初始化生成器,带上随机数spi.initialize(parameterSpec, secureRandom);//3.生成密钥对KeyPair asymmetricCipherKeyPair = spi.generateKeyPair();// 把公钥放入map中,默认压缩公钥// 公钥前面的02或者03表示是压缩公钥,04表示未压缩公钥,04的时候,可以去掉前面的04BCECPublicKey publicKeyParameters = (BCECPublicKey) asymmetricCipherKeyPair.getPublic();ECPoint ecPoint = publicKeyParameters.getQ();byte[] publicKey = ecPoint.getEncoded(compressed);// 把私钥放入map中BCECPrivateKey privateKeyParameters = (BCECPrivateKey) asymmetricCipherKeyPair.getPrivate();BigInteger intPrivateKey = privateKeyParameters.getD();return new SM2KeyPair<>(publicKey, intPrivateKey);}public static SM2KeyPair<String, String> genKeyPairAsHex() {return genKeyPairAsHex(false);}public static SM2KeyPair<String, String> genKeyPairAsHex(boolean compressed) {final SM2KeyPair<byte[], BigInteger> pair = genKeyPair(compressed);return new SM2KeyPair<>(Hex.toHexString(pair.getPublic()),pair.getPrivate().toString(16));}public static SM2KeyPair<String, String> genKeyPairAsBase64() {return genKeyPairAsBase64(false);}public static SM2KeyPair<String, String> genKeyPairAsBase64(boolean compressed) {final SM2KeyPair<byte[], BigInteger> pair = genKeyPair(compressed);return new SM2KeyPair<>(BASE64_ENCODER.encodeToString(pair.getPublic()),BASE64_ENCODER.encodeToString(pair.getPrivate().toByteArray()));}// endregion generateKeyPair// region encrypt/*** SM2加密算法** @param publicKey 公钥* @param data      待加密的数据* @return 密文,BC库产生的密文带由04标识符,与非BC库对接时需要去掉开头的04*/public static byte[] encrypt(byte[] publicKey, byte[] data) {// 按国密排序标准加密return encrypt(publicKey, data, SM2Engine.Mode.C1C3C2);}/*** SM2加密算法** @param publicKey 公钥* @param data      待加密的数据* @param mode      密文排列方式* @return 密文,BC库产生的密文带由04标识符,与非BC库对接时需要去掉开头的04*/@SneakyThrowspublic static byte[] encrypt(byte[] publicKey, byte[] data, SM2Engine.Mode mode) {final ASN1ObjectIdentifier sm2p256v1 = GMObjectIdentifiers.sm2p256v1;// 获取一条SM2曲线参数X9ECParameters parameters = GMNamedCurves.getByOID(sm2p256v1);// 构造ECC算法参数,曲线方程、椭圆曲线G点、大整数NECNamedDomainParameters namedDomainParameters = new ECNamedDomainParameters(sm2p256v1, parameters.getCurve(), parameters.getG(), parameters.getN());//提取公钥点ECPoint pukPoint = parameters.getCurve().decodePoint(publicKey);// 公钥前面的02或者03表示是压缩公钥,04表示未压缩公钥, 04的时候,可以去掉前面的04ECPublicKeyParameters publicKeyParameters = new ECPublicKeyParameters(pukPoint, namedDomainParameters);SM2Engine sm2Engine = new SM2Engine(mode);SecureRandom secureRandom = new SecureRandom();// 设置sm2为加密模式sm2Engine.init(true, new ParametersWithRandom(publicKeyParameters, secureRandom));final byte[] encrypt = sm2Engine.processBlock(data, 0, data.length);
//        if (encrypt[0] == 0x04) {
//            return Arrays.copyOfRange(encrypt, 1, encrypt.length);
//        }return encrypt;}public static String encryptHex(String publicKey, String data) {return encryptHex(publicKey, data, SM2Engine.Mode.C1C3C2);}public static String encryptHex(String publicKey, String data, SM2Engine.Mode mode) {final byte[] key = Hex.decode(publicKey);byte[] bytes = data.getBytes(StandardCharsets.UTF_8);final byte[] encrypt = encrypt(key, bytes, mode);return Hex.toHexString(encrypt);}public static String encryptBase64(String publicKey, String data) {return encryptBase64(publicKey, data, SM2Engine.Mode.C1C3C2);}public static String encryptBase64(String publicKey, String data, SM2Engine.Mode mode) {final byte[] key = BASE64_DECODER.decode(publicKey);byte[] bytes = data.getBytes(StandardCharsets.UTF_8);final byte[] encrypt = encrypt(key, bytes, mode);return BASE64_ENCODER.encodeToString(encrypt);}// endregion encrypt// region decrypt/*** SM2解密算法** @param privateKey 私钥* @param cipherData 密文数据* @return*/public static byte[] decrypt(BigInteger privateKey, byte[] cipherData) {// 按国密排序标准解密return decrypt(privateKey, cipherData, SM2Engine.Mode.C1C3C2);}/*** SM2解密算法** @param privateKey 私钥* @param cipherData 密文数据* @param mode       密文排列方式* @return*/@SneakyThrowspublic static byte[] decrypt(BigInteger privateKey, byte[] cipherData, SM2Engine.Mode mode) {final ASN1ObjectIdentifier sm2p256v1 = GMObjectIdentifiers.sm2p256v1;//获取一条SM2曲线参数X9ECParameters parameters = GMNamedCurves.getByOID(sm2p256v1);// 构造ECC算法参数,曲线方程、椭圆曲线G点、大整数NECNamedDomainParameters namedDomainParameters = new ECNamedDomainParameters(sm2p256v1, parameters.getCurve(), parameters.getG(), parameters.getN());ECPrivateKeyParameters privateKeyParameters = new ECPrivateKeyParameters(privateKey, namedDomainParameters);SM2Engine sm2Engine = new SM2Engine(mode);// 设置sm2为解密模式sm2Engine.init(false, privateKeyParameters);// 使用BC库加解密时密文以04开头,传入的密文前面没有04则补上if (cipherData[0] == 0x04) {return sm2Engine.processBlock(cipherData, 0, cipherData.length);} else {byte[] bytes = new byte[cipherData.length + 1];bytes[0] = 0x04;System.arraycopy(cipherData, 0, bytes, 1, cipherData.length);return sm2Engine.processBlock(bytes, 0, bytes.length);}}public static String decryptHex(String privateKey, String cipherData) {return decryptHex(privateKey, cipherData, SM2Engine.Mode.C1C3C2);}public static String decryptHex(String privateKey, String cipherData, SM2Engine.Mode mode) {final BigInteger key = new BigInteger(privateKey, 16);final byte[] decrypt = decrypt(key, Hex.decode(cipherData), mode);return new String(decrypt, StandardCharsets.UTF_8);}public static String decryptBase64(String privateKey, String cipherData) {return decryptBase64(privateKey, cipherData, SM2Engine.Mode.C1C3C2);}public static String decryptBase64(String privateKey, String cipherData, SM2Engine.Mode mode) {final BigInteger key = new BigInteger(BASE64_DECODER.decode(privateKey));final byte[] decrypt = decrypt(key, BASE64_DECODER.decode(cipherData), mode);return new String(decrypt, StandardCharsets.UTF_8);}// endregion decrypt// region sign & cert/*** 签名** @param plainText  待签名文本* @param privateKey 私钥* @return* @throws GeneralSecurityException*/public static String sign(String plainText, BigInteger privateKey) throws GeneralSecurityException {X9ECParameters parameters = GMNamedCurves.getByOID(GMObjectIdentifiers.sm2p256v1);ECParameterSpec parameterSpec = new ECParameterSpec(parameters.getCurve(), parameters.getG(), parameters.getN());ECPrivateKeySpec privateKeySpec = new ECPrivateKeySpec(privateKey, parameterSpec);PrivateKey bcecPrivateKey = new BCECPrivateKey(EC, privateKeySpec, BouncyCastleProvider.CONFIGURATION);// 创建签名对象Signature signature = Signature.getInstance(GMObjectIdentifiers.sm2sign_with_sm3.toString(), PROVIDER);// 初始化为签名状态signature.initSign(bcecPrivateKey);// 传入签名字节signature.update(plainText.getBytes(StandardCharsets.UTF_8));// 签名return BASE64_ENCODER.encodeToString(signature.sign());}/*** 验签** @param plainText 待签名文本* @param signText* @param publicKey 公钥* @return* @throws GeneralSecurityException*/public static boolean verify(String plainText, String signText, byte[] publicKey) throws GeneralSecurityException {X9ECParameters parameters = GMNamedCurves.getByOID(GMObjectIdentifiers.sm2p256v1);ECParameterSpec parameterSpec = new ECParameterSpec(parameters.getCurve(), parameters.getG(), parameters.getN());ECPoint ecPoint = parameters.getCurve().decodePoint(publicKey);ECPublicKeySpec publicKeySpec = new ECPublicKeySpec(ecPoint, parameterSpec);PublicKey bcecPublicKey = new BCECPublicKey(EC, publicKeySpec, BouncyCastleProvider.CONFIGURATION);// 创建签名对象Signature signature = Signature.getInstance(GMObjectIdentifiers.sm2sign_with_sm3.toString(), PROVIDER);// 初始化为验签状态signature.initVerify(bcecPublicKey);signature.update(plainText.getBytes(StandardCharsets.UTF_8));return signature.verify(BASE64_DECODER.decode(signText));}/*** 证书验签** @param certText  证书串* @param plainText 签名原文* @param signText  签名产生签名值 此处的签名值实际上就是 R和S的sequence* @return* @throws GeneralSecurityException*/public static boolean certVerify(String certText, String plainText, String signText) throws GeneralSecurityException {// 解析证书CertificateFactory factory = new CertificateFactory();X509Certificate certificate = (X509Certificate) factory.engineGenerateCertificate(new ByteArrayInputStream(BASE64_DECODER.decode(certText)));// 验证签名Signature signature = Signature.getInstance(certificate.getSigAlgName(), PROVIDER);signature.initVerify(certificate);signature.update(plainText.getBytes(StandardCharsets.UTF_8));return signature.verify(BASE64_DECODER.decode(signText));}// endregion sign & certpublic static void main(String[] args) {
//        final String plainText = "123456";//        final SM2KeyPair<String, String> keys = genKeyPairAsBase64();
//        log.debug("\n公钥 : {}\n私钥 : {}", keys.getPublic(), keys.getPrivate());//        String pubKey = "04a445fa8aa9318a2e4f2d0fd718fafc6443f408c805e51979679840907c6ae56e4e3378382f627165bbbb2566dd301d6695b0c7d6192177b5ef8b7561547d7cc5";
//        String priKey = "f2ad7ce861f362caf026725b3e9558c5477e7e0f55a476b1a2200d43425a0e1b";//        String pubKey = "BPaIW/Bdy1brZeCvaXU95SYRbvT8O/A3cC67Nm8v2ukSikG6ToBJ8yX3rDzg48+R0qimVnN3QVgiAhS2aPprHNA=";
//        String priKey = "T768XF7KJXwKdeHRetcmBwiDczSgxIDBj3ioP9ozWG4=";//        String pubKey = "BDIVcRKDxr0eTLHs1kjRw5UXcGtVZAQJPJ7H+dwiQt/Rfywi+GKkl7YtJgZvjOpQd9WuoIqfclgfnMxJV2R6Wlk=";
//        String priKey = "eb5wex++fwJ252auYDmDyCtGDHf+CaSXVXvX1uid4AY=";//        String encrypt = encryptBase64(pubKey, plainText);
//        String decrypt = decryptBase64(priKey, encrypt);
//        log.debug("\n加密 : {}\n解密 : {}", encrypt, decrypt);//        try {
//            String sign = sign(plainText, new BigInteger(BASE64_DECODER.decode(priKey)));
//            boolean verify = verify(plainText, sign, BASE64_DECODER.decode(pubKey));
//            log.debug("\n签名 : {}\n验签 : {}", sign, verify);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }}
public class SM2KeyPair<U, V> {protected V privateKey;protected U publicKey;public SM2KeyPair(U publicKey, V privateKey) {this.publicKey = publicKey;this.privateKey = privateKey;}public U getPublic() {return publicKey;}public V getPrivate() {return privateKey;}
}

相关文章:

【Java】SM2Utils(国密 SM2 工具类)

基于 bouncycastle 实现 国密 SM2 <!-- 引入 bouncycastle --> <dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.70</version> </dependency>import lombok.Sneak…...

『C语言入门』初识C语言

文章目录 前言C语言简介一、Hello World&#xff01;1.1 编写代码1.2 代码解释1.3 编译和运行1.4 结果 二、数据类型2.1 基本数据类型2.2 复合数据类型2.3 指针类型2.4 枚举类型 三、C语言基础3.1 变量和常量3.2 运算符3.3 控制流语句3.4 注释单行注释多行注释注释的作用 四、 …...

jira创建条目rest实用脚本

最近在搞crash崩溃分析&#xff0c;直接把解析到的信息录入jira系统进行跟踪&#xff1b; 经历了多次碰壁后终于调通&#xff0c;现记录一下 实用json请求脚本如下&#xff1a; {"fields":{"project":{"id":"10945"},"issuety…...

红外/可见光图像配准融合

红外/可见光图像配准融合 根据文献【1】&#xff0c;对于平行光轴的红外可见光双目配置进行图像配准&#xff0c;主要的限制是图像配准只是对特定的目标距离&#xff08;Dtarget&#xff09;有效。并排配置的配准误差 δx&#xff08;以像素表示&#xff09;的数学表达式为&…...

更高效稳定 | 基于ACM32 MCU的编程直流电源应用方案

随着电子设备的多样化发展&#xff0c;面对不同的应用场景&#xff0c;需要采用特定的供电电源。因此&#xff0c;在电子产品的开发测试过程中&#xff0c;必不可少使用编程直流电源来提供测试电压&#xff0c;协助完成初步的开发测试过程。 编程直流电源概述 编程直流电源结构…...

postgresql创建一个只读账户指定数据库

要在 PostgreSQL 中创建一个只读账户&#xff0c;您可以按照以下步骤进行操作&#xff1a; 1. **登录到 PostgreSQL&#xff1a;** 使用具有足够权限的管理员账户&#xff08;通常是 "postgres" 用户&#xff09;连接到 PostgreSQL 数据库。 2. **创建只读账户&…...

CSDN编程题-每日一练(2023-08-25)

CSDN编程题-每日一练&#xff08;2023-08-25&#xff09; 一、题目名称&#xff1a;影分身二、题目名称&#xff1a;小鱼的航程(改进版)三、题目名称&#xff1a;排查网络故障 一、题目名称&#xff1a;影分身 时间限制&#xff1a;1000ms内存限制&#xff1a;256M 题目描述&am…...

前端面试:【前端工程化】构建工具Webpack、Parcel和Rollup

嗨&#xff0c;亲爱的前端开发者&#xff01;在现代Web开发中&#xff0c;前端工程化变得愈发重要。构建工具如Webpack、Parcel和Rollup帮助我们自动化任务、管理依赖、优化性能等。本文将深入探讨这三个前端构建工具&#xff0c;帮助你了解它们的优点和用途。 1. Webpack&…...

大型企业是否有必要进行数字化转型?

在数字化、信息化、智能化蓬勃发展的今天&#xff0c;初创公司可以很轻易的布局规划数字化发展的路径。而对于大型企业而言&#xff0c;其已经形成了较为成熟稳固的业务及组织架构&#xff0c;是否还有必要根据自身行业发展特点寻求数字化转型&#xff1f;&#xff08;比如制造…...

05有监督学习——神经网络

线性模型 给定n维输入&#xff1a; x [ x 1 , x 1 , … , x n ] T x {[{x_1},{x_1}, \ldots ,{x_n}]^T} x[x1​,x1​,…,xn​]T 线性模型有一个n维权重和一个标量偏差: w [ w 1 , w 1 , … , w n ] T , b w {[{w_1},{w_1}, \ldots ,{w_n}]^T},b w[w1​,w1​,…,wn​]T,b 输…...

JavaWeb_LeadNews_Day7-ElasticSearch, Mongodb

JavaWeb_LeadNews_Day7-ElasticSearch, Mongodb elasticsearch安装配置 app文章搜索创建索引库app文章搜索思路分析具体实现 新增文章创建索引思路分析具体实现 MongoDB安装配置SpringBoot集成MongoDB app文章搜索记录保存搜索记录思路分析具体实现 查询搜索历史删除搜索历史 搜…...

redux中间件理解,常见的中间件,实现原理。

文章目录 一、Redux中间件介绍1、什么是Redux中间件2、使用redux中间件 一、Redux中间件介绍 1、什么是Redux中间件 redux 提供了类似后端 Express 的中间件概念&#xff0c;本质的目的是提供第三方插件的模式&#xff0c;自定义拦截 action -> reducer 的过程。变为 actio…...

麒麟系统上安装 MySQL 8.0.24

我介绍一下在麒麟系统上安装 MySQL 8.0.24 的详细步骤&#xff0c;前提是您已经下载了 mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz 安装包。其实安装很简单&#xff0c;但是有坑&#xff0c;而且问题非常严重&#xff01;由于麒麟系统相关文章博客较少&#xff0c;导致遇到了…...

vue 展开和收起

效果图 代码块 <div><span v-for"(item,index) in showHandleList" :key"item.index"><span>{{item.emailFrom}}</span></span><span v-if"this.list.length > 4" click"showAll !showAll">{…...

限制立方样条(RCS)中的P for overall和P for nonlinear的计算

最近不少人私信我&#xff0c;说有些SCI文章报了两个P值一个是P for overall,一个是P for nonlinear,就像下图这样&#xff0c;问我P for overall怎么计算。 P for overall我也不清楚是什么&#xff0c;有些博主说这个是总效应的P值&#xff0c;但是我没有找到相关出处。但是怎…...

vue3+ts引入echarts并实现自动缩放

第一种写法&#xff08;不支持随页面大小变化而缩放&#xff09; 统一的HTML页面 <div class"content_box" ref"barChart" id"content_box"></div>TS语法 <script setup lang"ts">import * as echarts from echar…...

Compressor For Mac强大视频编辑工具 v4.6.5中文版

Compressor for Mac是苹果公司推出的一款视频压缩工具&#xff0c;可以将高清视频、4K视频、甚至是8K视频压缩成适合网络传输或存储的小文件。Compressor支持多种视频格式&#xff0c;包括H.264、HEVC、ProRes和AVC-Intra等&#xff0c;用户可以根据需要选择不同的压缩格式。 …...

maven工程的目录结构

https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html maven工程的目录结构&#xff1a; 在maven工程的根目录下面&#xff0c;是pom.xml文件。此外&#xff0c;还有README.txt、LICENSE.txt等文本文件&#xff0c;便于用户能够…...

5.1 webrtc线程模型

那从今天开始呢&#xff1f;我们来了解一下y8 tc线程相关的内容&#xff0c;那在开始之前呢&#xff1f;我们先来看一下&#xff0c;我们本章都要讲解哪些知识&#xff1f; 那第一个呢&#xff1f;是线程的基础知识&#xff0c;这块内容呢&#xff1f;主要是为大家做一下回顾&a…...

【Linux网络】Cookie和session的关系

目录 一、Cookie 和 session 共同之处 二、Cookie 和 session 区别 2.1、cookie 2.2、session 三、cookie的工作原理 四、session的工作原理 一、Cookie 和 session 共同之处 Cookie 和 Session 都是用来跟踪浏览器用户身份的会话方式。 二、Cookie 和 session 区别 2.…...

android 硬编码保存mp4

目录 java imagereader编码保存 java NV21toYUV420SemiPlanar 编码保存视频用&#xff1a; imageReader获取nv21 代码来自博客&#xff1a; 【Android Camera2】彻底弄清图像数据YUV420_888转NV21问题/良心教学/避坑必读!_yuv420888转nv21_奔跑的鲁班七号的博客-CSDN博客 …...

gitlab合并分支

我的分支为 cheng 第一步&#xff1a; 增加新的代码 第二步&#xff1a;提交并推送 第三步&#xff1a;打开gitlab&#xff0c;找到对应项目 这样就成功把cheng分支合并到dev-test分支了...

手撕 `np.transpose` : 三维数组的循环转置

手撕 np.transpose : 三维数组的循环转置 手撕 np.transpose 2D 何为transpose ? 如上图: 二维的例子, 直观地理解就是沿着对角线拉平(对角关系左上右下依旧), 其他位置依次填充. 2. 2D数组中0,1 为原始参, 1,0 为转置参 - 原始参即数组的原始形态: 比如&#x1f446;&#x…...

计算机竞赛 基于Django与深度学习的股票预测系统

文章目录 0 前言1 课题背景2 实现效果3 Django框架4 数据整理5 模型准备和训练6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于Django与深度学习的股票预测系统 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff…...

CSS 小技能(一):HTML 两个图片竖着平铺、设置图片点击、设置滚动条颜色

下面的代码没有考虑响应式的效果&#xff0c;如果考虑的话还需要一些代码进行处理。 【注】当时写的时候仅考虑了 webkit 内核的浏览器&#xff0c;如果是 IE 或者其他浏览器&#xff0c;请增加额外的 CSS 样式进行控制。 <!DOCTYPE html> <html> <head>&l…...

【论文阅读】CONAN:一种实用的、高精度、高效的APT实时检测系统(TDSC-2020)

CONAN&#xff1a;A Practical Real-Time APT Detection System With High Accuracy and Efficiency TDSC-2020 浙江大学 Xiong C, Zhu T, Dong W, et al. CONAN: A practical real-time APT detection system with high accuracy and efficiency[J]. IEEE Transactions on Dep…...

P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布

题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样&#xff0c;则不分胜负。在《生活大爆炸》第二季第 8 集中出现了一种石头剪刀布的升级版游戏。 升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势: 斯波克:《星际迷航》主…...

基于Android水果蔬菜果蔬到家商城系统 微信小程序uniAPP的开发与实现

果蔬到家是商家针对用户必不可少的一个部分。在商铺发展的整个过程中&#xff0c;果蔬到家担负着最重要的角色。为满足如今日益复杂的管理需求&#xff0c;各类果蔬到家程序也在不断改进。本课题所设计的springboot基于HBuilder X的果蔬到家APP&#xff0c;使用SpringBoot框架&…...

【Python】从入门到上头—Python基础(2)

文章目录 一.基础语法1.编码2.标识符3.保留字4.注释5.行与缩进6.多行语句7.数字(Number)类型8.字符串(String)9.空行10.等待用户输入11.同一行显示多条语句12.多个语句构成代码组13.print 输出14.import 与 from...import 二.基本数据类型1.变量和赋值2.多个变量赋值3.标准数据…...

leetcode刷题之283:移动零

问题 实现思路 首先, 将dest指向-1 位置, cur指向下标为0 的位置, 在cur遍历的过程中: 1) 遇到非零元素则与下标dest1 位置的元素交换, 2) 若遇到零元素则只继续cur遍历. 下标为1 的位置上是 非零元素 执行1) 交换得到右图结果 随后cur 得到下图结果 下标为2 的位置上是零…...