HTTPS API接口安全

HTTPS安全机制与性能优化全解析 HTTPS作为HTTP的安全升级版本,通过SSL/TLS协议为网络通信提供加密保护。其核心原理是采用混合加密体系,结合对称加密的高效性和非对称加密的安全密钥交换机制,实现数据传输的机密性、完整性和身份认证。在工程实践中,HTTPS的性能优化尤为关键,包括会话恢复技术、证书优化和硬件加速等方案。随着网络安全威胁日益严峻,HTTPS已成为现代Web开发的必备技术,特别是在金融、电商等敏感领域,采用OV/EV级别证书更能确保业务安全。通过合理配置和优化,HTTPS的性能损耗可控制在5%以内,同时满足AES-NI硬 阅读详情

ailx10说:这篇是在2025年3月之前写的,后来又改过。小工具做了一键升级,升级包放在云端,我又开始琢磨:不只是让客户端认服务器,服务器能不能也只接我自己的工具?于是自己签服务端和客户端证书,用 FastAPI、Uvicorn 和 requests 做双向证书验证。这篇从一个很具体的发布需求起步,把零信任里那个“不因为连上就先相信”的想法缩成最小实验。两边证书配好、请求真的能过之后,升级接口的访问控制也多了一条能看得见、能继续测试的条件。


客户端连接时使用的主机名或 IP 地址,应与服务端证书 SAN 中的相应身份匹配。以下是历史实验配置,路径需按环境调整;仅在隔离环境测试,保护私钥并按实际版本核验证书用途、有效期、吊销与授权策略。代码创建的 ssl_context 未传给 Uvicorn;服务实际使用传入 uvicorn.run 的 ssl_* 参数。HTTP Host 头不改变 TLS 证书的主机名校验。

(1)首先创建证书配置文件

cat > /Users/ailx10/mySecurity1/openssl.cnf << EOF
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no

[req_distinguished_name]
C = CN
ST = Beijing
L = Beijing
O = HackBiji
OU = IT Department
CN = hackbiji.com

[v3_req]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = hackbiji.com
DNS.2 = *.hackbiji.com
IP.1 = 127.0.0.1

[v3_ca]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
basicConstraints = CA:true
EOF

(2)生成自签名证书

#!/bin/bash

# 生成 CA 私钥和证书
openssl genrsa -out ca.key 4096
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -config openssl.cnf -extensions v3_ca \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=HackBiji CA/OU=IT Department/CN=HackBiji Root CA"

# 生成服务器私钥和证书签名请求
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr -config openssl.cnf

# 使用 CA 证书签名服务器证书
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 \
    -out server.crt -extfile openssl.cnf -extensions v3_req -CAcreateserial

# 生成客户端私钥和证书签名请求
openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.csr \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=HackBiji Client/OU=IT Department/CN=client.hackbiji.com"

# 使用 CA 证书签名客户端证书
openssl x509 -req -days 3650 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 02 \
    -out client.crt -extfile openssl.cnf -extensions v3_req

# 验证证书
echo "验证服务器证书:"
openssl x509 -in server.crt -text -noout | grep "Subject Alternative Name" -A 1
echo "验证客户端证书:"
openssl x509 -in client.crt -text -noout

(2)服务端代码

from fastapi import FastAPI
import uvicorn
import ssl

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello from secure server!", "domain": "hackbiji.com"}

if __name__ == "__main__":
    ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
    ssl_context.verify_mode = ssl.CERT_REQUIRED
    ssl_context.load_cert_chain(certfile="server.crt", keyfile="server.key")
    ssl_context.load_verify_locations(cafile="ca.crt")
    
    uvicorn.run(
        app,
        host="0.0.0.0",
        port=8443,
        ssl_certfile="server.crt",
        ssl_keyfile="server.key",
        ssl_ca_certs="ca.crt",
        ssl_cert_reqs=ssl.CERT_REQUIRED
    )

在当次实验中,未配置受信任客户端证书的浏览器连接被重置;浏览器也可以配置有效的客户端证书。

(3)客户端代码

import requests

def make_request():
    cert = ('client.crt', 'client.key')
    verify = 'ca.crt'
    
    response = requests.get(
        'https://127.0.0.1:8443',
        cert=cert,
        verify=verify,
        headers={'Host': 'hackbiji.com'}
    )
    
    print(f"Status Code: {response.status_code}")
    print(f"Response: {response.json()}")

if __name__ == "__main__":
    make_request()

当次实验中,配置了客户端证书的请求成功建立连接。任何持有受信任证书及私钥的兼容客户端都可能通过验证。

直到后来,我才知道,原来金融行业一直都这么玩,我们苦苦追寻的究极炫酷技术,其实只是别人的起点。这种服务器验证客户端证书的做法叫做 双向 SSL/TLS 认证 (Mutual SSL/TLS Authentication)或 双向认证 (Mutual Authentication),有时也称为 双向 SSL 或 客户端证书认证 。双向 TLS 可让服务端验证客户端证书是否符合信任配置;还需要将证书身份映射到业务权限,并管理私钥、签发和吊销。

证书证明的是持有相应私钥,不自动证明只会由某个官方工具使用。业务权限、密钥分发和复制风险还在后面,网络连接这关做好,才方便继续往上加控制。

HTTP与HTTPS协议深度拆解:从握手原理到实战排查指南 HTTP作为应用层协议,采用请求-响应模型实现客户端与服务端通信,其无状态特性催生了Cookie、Session等状态管理机制。HTTPS在HTTP与TCP之间引入TLS层,通过非对称加密协商对称密钥,结合数字证书链验证服务端身份,实现机密性、完整性与身份认证。理解TLS握手流程、证书链验证及加密套件协商机制,是排查接口超时、证书报错、代理拦截等问题的关键。在爬虫、接口联调、移动端开发及企业网络代理场景中,掌握HTTP/HTTPS底层原理能显著提升问题定位效率。本文系统拆解HTTP报文结构、版本演进及HTT 阅读详情

相关推荐

HTTP与HTTPS安全差异及加密原理详解

HTTP和HTTPS是互联网数据传输的基础协议,它们在安全性上存在本质区别。HTTP采用明文传输,数据易被窃听和篡改,而HTTPS通过SSL/TLS加密层确保通信安全。加密技术主要依赖非对称加密(如RSA)和对称加密(如AES)的组合,有效防止中间人攻击(MITM)和数据泄露。HTTPS广泛应用于登录页面、支付交易等敏感场景,同时需要避免混合内容、弱加密套件等配置问题。随着HTTP/3的普及,加密已成为强制要求,TLS 1.3等新技术进一步提升了安全性和性能。

weixin_30899023的博客 565

你的网站安全吗?一文彻底搞懂 HTTPS!

HTTPS 就像给你的网络生活穿上了一件坚固的盔甲 🛡️,保护你免受各种网络攻击 👾。虽然不能保证 100% 安全,但能大大降低风险 📉。

qq_56158663的博客 33万+

如何写出安全的API接口(参数加密+超时处理+私钥验证+Https)

1.完全开放的接口有没有这样的接口,谁都可以调用,谁都可以访问,不受时间空间限制,只要能连上互联网就能调用,毫无安全可言。实话说,这样的接口我们天天都在接触,你查快递,你查天气预报,你查飞机,火车班次等,这些都是有公共的接口。我把这称之为裸奔时代。代码如下:/// &lt;summary&gt; /// 接口对外公开 /// &lt;/summary&gt; ...

差不多先生 1278

HTTPS

HTTPS 的全称是Hypertext Transfer Protocol Secure(超文本传输安全协议),本质是在传统 HTTP 协议的基础上,增加了SSL(Secure Sockets Layer,安全套接层)或其升级版TLS(Transport Layer Security,传输层安全协议)的加密机制。HTTPS 不是一个全新的协议,而是 “HTTP + SSL/TLS” 的安全组合,其 URL 格式以https://开头,默认使用 443 端口。核心价值是“加密数据、验证身份、防篡改”

m0_73991989的博客 3万+

API接口安全实战:从HTTPS到应用层加密的完整方案

在微服务与开放平台架构中,API接口安全是保障数据传输与业务连续性的基石。其核心原理在于通过加密技术确保数据的保密性、完整性与身份认证。从技术价值看,这不仅防范了窃听、篡改与重放攻击,更是构建可信数据交换通道的关键。常见的应用场景包括内部微服务通信、客户端API调用以及第三方开放平台集成,这些场景均需根据不同的信任边界与风险等级,组合使用传输层与应用层加密方案。本文聚焦于**API接口安全**与**数据加密**的工程实践,深入探讨如何在实际项目中,基于HTTPS/TLS、AES、RSA及签名验证等技术,构建

dgoh41514的博客 366

SAP WM模块事务码(TCODE)大全

OL07 Data transfer stor.bins LDK34->RLPLA 仓储位LDK34 ->RLPLA

matinal 當冬夜漸暖 。公众号:matinal 5846

api接口安全以及https

一:加密方法: 1,对称加密 AES,3DES,DES等,适合做大量数据或数据文件的加解密。 2,非对称加密 如RSA,Rabin。公钥加密,私钥解密。对大数据量进行加解密时性能较低。 二:https 下面是拷来的,写的很好,原文链接:http://baijiahao.baidu.com/s?id=1570143475599137&wfr=spider&fo...

weixin_34255793的博客 400

Pseudobulk与FindMarkers单细胞差异基因分析实战对比

本文深入对比了单细胞差异基因分析中Pseudobulk与FindMarkers两种主流方法。通过实战演示,详细解析了二者在底层逻辑、数据准备、分析流程及结果解读上的核心差异,并提供了基于不同生物学问题与数据特点的选择策略,帮助研究者做出更精准的分析决策。

weixin_29218963的博客 332

HTTPS加密传输配置:保护OCR API接口数据安全

HTTPS(HyperText Transfer Protocol Secure)并非一种独立协议,而是的组合体。加密(Encryption):所有通信内容使用对称密钥加密,防止窃听认证(Authentication):通过数字证书验证服务器身份,防止冒充完整性(Integrity):使用MAC校验确保数据未被篡改💡 技术类比如果把HTTP比作明信片(任何人都能读取内容),那么HTTPS就像一封加锁的信封——只有持有钥匙的人才能打开阅读。必须启用HTTPS。

weixin_42360846的博客 1051

手把手教你用WF100DPZ数字压力传感器搞定I2C/SPI通信(附完整寄存器解析)

本文详细解析了WF100DPZ数字压力传感器的I2C与SPI通信驱动方法,涵盖硬件连接、寄存器配置、数据读取流程及常见问题排查。该传感器内置24位ADC和出厂校准,通过实战代码演示了如何稳定获取高精度压力与温度数据,帮助开发者快速集成到嵌入式项目中。

weixin_28285943的博客 377

脑机接口(BCI)从原理到开发实战 07|运动想象BCI实战:基于BCI Competition IV 2a数据集

本文基于BCI Competition IV 2a数据集,详细介绍运动想象脑机接口系统的全流程实现。首先概述了该数据集的实验范式、参数特点和优势,然后指导环境准备与数据下载。通过代码示例展示了数据加载、事件标记提取和信号可视化方法。重点构建了完整的预处理流水线,包括通道选择、重参考、带通滤波(8-30Hz)和ICA去伪迹等关键步骤。文章旨在帮助读者将零散的BCI知识整合为完整的实战项目,掌握从原始脑电数据到运动意图解码的核心技术。

小明的博客 850

java api接口加密_如何写出安全的API接口(参数加密+超时处理+私钥验证+Https)...

原文:http://www.cnblogs.com/codeon/p/6123863.html#35803511.完全开放的接口有没有这样的接口,谁都可以调用,谁都可以访问,不受时间空间限制,只要能连上互联网就能调用,毫无安全可言。实话说,这样的接口我们天天都在接触,你查快递,你查天气预报,你查飞机,火车班次等,这些都是有公共的接口。我把这称之为裸奔时代。代码如下:/// /// 接口对外公开//...

weixin_28873283的博客 1011

PLC模糊控制模糊PID(梯形图实现+算法分析)

博途PLC的模糊PID控制详细内容请查看下面的博客文章:Matlab仿真+博途PLC模糊PID控制完整SCL源代码参考(带模糊和普通PID切换功能)_博途怎么实现模糊pid_RXXW_Dor的博客-优快云博客模糊PID的其它相关数学基础,理论知识大家可以参看专栏的其它文章,这里不再赘述,本文就双容水箱的模糊PID问题做详细讲解(包括所有源代码和模糊规则设置参数)。

RXXW_Dor的博客 5884

如何写出安全的API接口(参数加密+超时处理+私钥验证+Https)- 续(附demo)

原文地址:http://www.cnblogs.com/codeon/p/6123863.html如何写出安全的API接口(参数加密+超时处理+私钥验证+Https)- 续(附demo)上篇文章说到接口安全的设计思路,如果没有看到上篇博客,建议看完再来看这个。通过园友们的讨论,以及我自己查了些资料,然后对接口安全做一个相对完善的总结,承诺给大家写个demo,今天一并放出。对于安全也是相对的,下面我...

jiamingku的专栏 1849

Vue3 - 详细实现调用浏览器摄像头拍照并生成图片预览,支持将抓拍的图像保存到用户本地或上传到服务器、调取前置摄像头和后置摄像头,开启摄像头并进行拍照,vue实现调用摄像头,电脑或手机调用摄像头拍照

vue3,nuxt3,摄像头,vue3网站打开摄像头拍照,vue3项目调用摄像头实现拍照功能,拍照后怎么保存,照相后上传到后端服务器,开启摄像头黑屏,如何默认后置摄像头,网页开启电脑摄像头并照相,前置拍照,vue3如何调用手机摄像头进行拍摄,拒绝权限后不再弹出了,微信公众号网页,摄像头报错,拍照左右镜像反了,浏览器不兼容怎么办,vue3调用电脑端摄像头实时拍照,解决调用摄像头权限无法弹出,打不开摄像头,Vue3如何调用手机的摄像头,调用本地摄像头实现拍照,浏览器不弹摄像头权限了,如何不使用https运行测试

🏆 前端领域优质创作者 8654

最适合入门的100个深度学习项目

本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。

优快云 精品推荐 12万+

https和接口签名、api接口安全

为什么有了https 还需要做签名验证? 签名的作用 如果只用签名 不用https 密钥泄露怎么办 本文链接: https://blog.kfzsy.com/https-sign.html

weixin_38991146的博客 321

深度解析:LPDDR5 采样 Mask 背后的秘密 —— 从 Jitter 到 BER 全面剖析

在 LPDDR5 中,CK/DQS 信号相当于“指挥棒”,而数据(DQ)要在时钟节拍里被准确采样。Crosspoint Mask 区域横轴:时间 (Time)纵轴:电压 (Vref)👉 只要采样点落在这个区域内,数据就是正确的。否则就会出错。BERPBERPMask 就像高速公路的收费站口,如果车(采样点🚗)在车道内,顺利通过;一旦跑偏,就撞护栏。LPDDR5 的速率极高,UI 非常短,Mask 区域成为核心指标各种 Jitter、Noise 会不断压缩 Mask。

weixin_43199439的博客 354

DeepSeek-OCR-2安全部署:HTTPS加密API接口配置

本文介绍了如何在星图GPU平台上自动化部署DeepSeek-OCR-2智能文档解析工具,并配置HTTPS加密API接口以保障数据传输安全。该工具可高效处理企业文档、合同及财务报告等敏感信息,确保OCR识别过程既高效又安全,适用于企业级文档自动化处理场景。

weixin_42611177的博客 394

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Qwen Pixel Art部署教程:配置Let‘s Encrypt HTTPS证书保护API接口安全

本文介绍了如何在星图GPU平台上自动化部署Qwen-Image-2512 + Pixel Art LoRA镜像,并配置Let's Encrypt HTTPS证书以保护API接口安全。该镜像专为像素艺术生成设计,用户可通过安全HTTPS接口快速生成游戏素材、数字艺术等像素风格图像,提升创意工作效率。

weixin_31776191的博客 162

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

接口安全设计:基于 JWT+HTTPS,保障 API 调用安全的 4 个关键步骤

通过以上 4 个关键步骤——HTTPS 加密传输、JWT 认证集成、JWT 验证授权、以及安全实践强化——您可以构建一个健壮的 API 安全体系。JWT+HTTPS 组合不仅简化了认证流程,还提供了高安全性,适用于微服务、移动应用等场景。实际部署时,建议结合具体框架(如 Spring Security 或 Express.js)实现,并定期进行安全测试(如渗透测试),以确保全面防护。

2501_93893220的博客 360

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: http 异步请求
下一篇: 傲软数据恢复:扫描与预览记录
ailx10
博客等级 码龄12年 732粉丝 921原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ailx10

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值