小米路由器开启SSH,配置阿里云ddns,开启外网访问SSH和WEB管理界面
文章目录
- 前言
- 一、开启SSH
- 二、配置阿里云ddns
- 1.准备工作
- 2.创建ddns脚本
- 3.添加定时任务
- 三、开启外网访问SSH和WEB管理界面
- 1、解除WEB管理页面访问限制
- 2.手动添加防火墙端口转发规则,开启外网访问WEB管理和SSH
前言
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、开启SSH
这里使用的是github上的开源项目XMiR-Patcher
实现。
https://github.com/openwrt-xiaomi/xmir-patcher
下载项目到本地。
然后运行以下命令,需要注意的是linux或mac需要安装python3.8和openssl
- Windows
Run run.bat - Linux / Mac OS
Install python 3.8, openssl
Run run.sh
运行并输入ip和密码
先输入路由器ip-》回车-》输入2-》数据路由器密码
成功后ssh的账号密码都为root
1 -设置ip地址(当前值:192.168.31.1)
2 -连接设备(安装漏洞)
3 -读取完整的设备信息
4—创建全量备份
5 -安装EN/RU语言
6 -安装Breed引导程序
7- 安装固件(从“firmware”目录)
8 -{{{其他功能}}
9 -[[重启设备]]
0 -退出
==========================================================Xiaomi MiR Patcher1 - Set IP-address (current value: 192.168.31.1)2 - Connect to device (install exploit)3 - Read full device info4 - Create full backup5 - Install EN/RU languages6 - Install Breed bootloader7 - Install firmware (from directory "firmware")8 - {{{ Other functions }}}9 - [[ Reboot device ]]0 - ExitSelect: 192.168.31.1 #输入自己的路由器ip==========================================================Xiaomi MiR Patcher1 - Set IP-address (current value: 192.168.31.1)2 - Connect to device (install exploit)3 - Read full device info4 - Create full backup5 - Install EN/RU languages6 - Install Breed bootloader7 - Install firmware (from directory "firmware")8 - {{{ Other functions }}}9 - [[ Reboot device ]]0 - ExitSelect: 2 # 选择2 然后根据提示输入密码
运行到这一步之后会发现重启路由器后ssh会关闭。
输入8选择 Other functions
菜单内容如下。我先是输入2修改root密码。然后输入7执行永久ssh
1 - 设置默认设备 IP 地址
2 - 更改 root 密码
3 - 读取 dmesg 日志和系统日志
4 - 对指定分区进行备份
5 - 卸载英语 / 俄语语言
6 - 设置内核启动地址
7 - 安装永久 SSH
8 - 测试
9 - [[重启设备]]
0 - 返回主菜单----------------------------------------------------------Xiaomi MiR Patcher (extended functions)1 - Set default device IP-address2 - Change root password3 - Read dmesg and syslog4 - Create a backup of the specified partition5 - Uninstall EN/RU languages6 - Set kernel boot address7 - Install permanent SSH8 - __test__9 - [[ Reboot device ]]0 - Return to main menuChoice: 2Detect valid SSH server on port 22 (auth OK)
Enter new password for root user: cheryl.superlu
The root password has been changed.----------------------------------------------------------Xiaomi MiR Patcher (extended functions)1 - Set default device IP-address2 - Change root password3 - Read dmesg and syslog4 - Create a backup of the specified partition5 - Uninstall EN/RU languages6 - Set kernel boot address7 - Install permanent SSH8 - __test__9 - [[ Reboot device ]]0 - Return to main menuChoice: 7Upload file: "data/ssh_patch.sh" ....
Download file: "/tmp/ssh_patch.sh.946762.md5" ....
Upload file: "data/ssh_install.sh" ....
Download file: "/tmp/ssh_install.sh.142049.md5" ....
Upload file: "data/ssh_uninstall.sh" ....
Download file: "/tmp/ssh_uninstall.sh.937682.md5" ....
All files uploaded!
Run scripts...
Ready! The SSH patch installed.----------------------------------------------------------Xiaomi MiR Patcher (extended functions)1 - Set default device IP-address2 - Change root password3 - Read dmesg and syslog4 - Create a backup of the specified partition5 - Uninstall EN/RU languages6 - Set kernel boot address7 - Install permanent SSH8 - __test__9 - [[ Reboot device ]]0 - Return to main menuChoice:
然后使用ssh进行连接:出现are u ok 就成功了。
二、配置阿里云ddns
小米路由器本身自带了ddns,但是局限性比较高只能用以下4种。
1.准备工作
如何想使用自己的域名,需要上阿里云购买一个域名。
注册AccessKey
首先登录个人的阿里云账号,我的是RAM账户。各位的可以使用主账户进行使用AccessKey。
点击ACCESSKEY管理
创建你的AccessKey,并记录下来。
注意如果是RAM的话一定要添加AliyunDNSFullAccess
授权策略
2.创建ddns脚本
aliyun_ddns.sh
#!/bin/sh
set -e#================================================================================================================#
# 功能:用于更新阿里云域名IP,实现DDNS功能
#
# 在 http://www.gebi1.com/forum.php?mod=viewthread&tid=287344&page=1&_dsign=8f94f74c 提供的脚本文件基础上修改的。
# ghui, modified 12/2/2019
# 在 N1 debian Buster with Armbian Linux 5.3.0-aml-g12 手动执行/定时任务(crontab)执行测试通过
#================================================================================================================#
#
# 使用方法:
#
# 方法1. 外部参数
# 修改源码,将对应参数 修改为$1,$2,$3,$4,$5,$6
# aliddns.sh <aliddns_ak> <aliddns_sk> <aliddns_subdomain> <aliddns_domain> <aliddns_iptype> <aliddns_ttl>
# 示例(A 代表 IPv4,AAAA 代表 IPv6):
# 执行:aliddns.sh "xxxx" "xxx" "test" "mydomain.site" "A" 600
# 执行:aliddns.sh "xxxx" "xxx" "test" "mydomain.site" "AAAA" 600
#
# 方法2. 内部参数
# 修改源码,将$1,$2,$3,$4,$5,$6 替换为对应参数
#
# 示例:
# aliddns_ak="<aliddns_ak>"
# aliddns_sk="<aliddns_sk>"
# aliddns_subdomain="<aliddns_subdomain>"
# aliddns_domain="<aliddns_domain> "
# aliddns_iptype="<aliddns_iptype>"
# aliddns_ttl=<aliddns_ttl>
# 执行:aliddns.sh
#
#================================================================================================================##--------------------------------------------------------------
# 参数
#
# (*)阿里云 AccessKeyId
aliddns_ak="阿里云 AccessKeyId "
# (*)阿里云 AccessKeySecret
aliddns_sk="阿里云 AccessKeySecret "# (*)域名:test.mydomain.com
aliddns_subdomain="test.mydomain.com " #'test'
aliddns_domain="mydomain.com.cn" #'mydomain.com'# (*)ip地址类型:'A' 或 'AAAA',代表ipv4 和 ipv6
aliddns_iptype="A" # 'A' 或 'AAAA',代表ipv4 和 ipv6# TTL 默认10分钟 = 600秒
aliddns_ttl=600 #"600"#--------------------------------------------------------------machine_ip=""
ddns_ip=""
aliddns_record_id=""if [ "$aliddns_subdomain" = "@" ]
thenaliddns_name=$aliddns_domain
elsealiddns_name=$aliddns_subdomain.$aliddns_domain
finow=`date`
echo "**************************************************"
echo "$now"
echo "$aliddns_name"function getMachine_IPv4() { echo $(/usr/bin/wget -qO- -t1 -T2 http://ip.3322.net)
}function getMachine_IPv6() { ipv6=`ip addr | grep "inet6.*global" | grep -v "deprecated" | awk '{print $2}' | awk -F"/" '{print $1}' | sed -n '1,1p'`echo $ipv6
}function getDDNS_IP() { current_ip=`nslookup -query=$aliddns_iptype $aliddns_name | grep "Address" | grep -v "#53" | awk '{print $2}'`echo $current_ip
}function urlencode() { # urlencode <string>out=""while read -n1 cdocase $c in[a-zA-Z0-9._-]) out="$out$c" ;;*) out="$out`printf '%%%02X' "'$c"`" ;;esacdoneecho -n $out
}function enc() { echo -n "$1" | urlencode
}function send_request() { local args="AccessKeyId=$aliddns_ak&Action=$1&Format=json&$2&Version=2015-01-09"local hash=$(echo -n "GET&%2F&$(enc "$args")" | openssl dgst -sha1 -hmac "$aliddns_sk&" -binary | openssl base64)curl -s "http://alidns.aliyuncs.com/?$args&Signature=$(enc "$hash")"
}function get_recordid() { grep -Eo '"RecordId":"[0-9]+"' | cut -d':' -f2 | tr -d '"'
}function query_recordid() { send_request "DescribeSubDomainRecords" "SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&SubDomain=$aliddns_name&Timestamp=$timestamp&Type=$aliddns_iptype"
}function update_record() { send_request "UpdateDomainRecord" "RR=$aliddns_subdomain&RecordId=$1&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&TTL=$aliddns_ttl&Timestamp=$timestamp&Type=$aliddns_iptype&Value=$(enc $machine_ip)"
}function add_record() { send_request "AddDomainRecord&DomainName=$aliddns_domain" "RR=$aliddns_subdomain&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&TTL=$aliddns_ttl&Timestamp=$timestamp&Type=$aliddns_iptype&Value=$(enc $machine_ip)"
}if [ "$aliddns_iptype" = 'A' ]
thenecho "ddns is IPv4."machine_ip=`echo "$(getMachine_IPv4)"`echo "machine_ip = $machine_ip"aliddns_record_id=$aliddnsipv4_record_id
elseecho "ddns is IPv6."machine_ip=`echo "$(getMachine_IPv6)"`echo "machine_ip = $machine_ip"aliddns_record_id=$aliddnsipv6_record_id
fiddns_ip=`echo "$(getDDNS_IP)"`
echo "ddns_ip = $ddns_ip"if [ "$machine_ip" = "" ]
thenecho "machine_ip is empty!"exit 0
fiif [ "$machine_ip" = "$ddns_ip" ]
thenecho "skipping\n"exit 1
fiecho "start update..."timestamp=`date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ"`if [ "$aliddns_record_id" = "" ]
thenaliddns_record_id=`query_recordid | get_recordid`echo "----------------" $aliddns_record_id "\n"if [ "$aliddns_iptype" = 'A' ]thenaliddnsipv4_record_id=$aliddns_record_idelsealiddnsipv6_record_id=$aliddns_record_idfi
fi#add support */%2A and @/%40 record
if [ "$aliddns_record_id" = "" ]
thenecho "add record starting"aliddns_record_id=`add_record | get_recordid`if [ "$aliddns_record_id" = "" ]thenecho "aliddns_record_id is empty. \n"elseif [ "$aliddns_iptype" = 'A' ]thenaliddnsipv4_record_id=$aliddns_record_idelsealiddnsipv6_record_id=$aliddns_record_idfiecho "added record $aliddns_record_id \n"fi
elseecho "update record starting"update_record $aliddns_record_idecho "updated record $aliddns_record_id \n"
fi
该脚本来自https://cloud.tencent.com/developer/article/2093275
将脚本放到/data/scripts/下命名为aliyun_ddns.sh
可以使用命令运行脚本测试是否可行
/data/scripts/aliyun_ddns.sh
3.添加定时任务
添加定时任务,每20分钟执行一次脚本
echo "*/20 * * * * /data/scripts/aliyun_ddns.sh" >> /etc/crontabs/root
/etc/init.d/cron restart
三、开启外网访问SSH和WEB管理界面
由于小米路由为了安全考虑,对WEB与防火墙规则进行限制,WEB管理、SSH只能通过内网登 陆,外网无法访问,在路由器的WEB管理页面新建端口转发中不能添加路由本机内网IP。
开启小米路由的SSH后,我们可以通过登陆SSH在命令行中手动添加防火墙中端口转发规则
1、解除WEB管理页面访问限制
- cd /etc/nginx //切换目录
- cp miwifi-webinitrd.conf miwifi-webinitrd.conf.bak //养成备份好习惯:
- vi miwifi-webinitrd.conf //编辑miwifi-webinitrd.conf
动光标找到 set $finalvar "$canproxy $isluci";
在图中位置插入下面代码(按i键进入编辑模式)
set $isluci "1";
完成后按ESC退出编辑,Shift + ;键 :输入wq 回车保存并退出
重启nginx/httpd服务使配置生效
/usr/sbin/nginx -s reload
如果是老版本位置在/etc/sysapihttpd/
/etc/init.d/sysapihttpd restart
2.手动添加防火墙端口转发规则,开启外网访问WEB管理和SSH
vi /etc/config/firewall //编辑防火墙配置
1.添加WEB管理外网端口转发规则代码段:
config redirect 'MIWEB' option src 'wan' option src_dport '1314' option name 'WEB' option ftype '1' option dest_port '80' option proto 'tcp'
WEB管理界面外网端口为1314 可通过外网IP:1314访问 (例 http://61.181.133.5:1314),绑定DDNS的用户可通过域名:1314进行访问。
2.添加SSH外网登陆端口转发规则代码段:
config redirect 'Myssh' option src 'wan' option src_dport '2345' option dest 'lan' option dest_port '22' option proto 'tcp'
SSH登陆外网端口为2345
添加对应规则后保存退出
重启防火墙使规则生效
/etc/init.d/firewall restart
现在就可以通过外网WEB管理设置小米路由和进行SSH登陆了.
相关文章:
小米路由器开启SSH,配置阿里云ddns,开启外网访问SSH和WEB管理界面
文章目录 前言一、开启SSH二、配置阿里云ddns1.准备工作2.创建ddns脚本3.添加定时任务 三、开启外网访问SSH和WEB管理界面1、解除WEB管理页面访问限制2.手动添加防火墙端口转发规则,开启外网访问WEB管理和SSH 前言 例如:随着人工智能的不断发展…...
Flink源码解析之:如何根据JobGraph生成ExecutionGraph
Flink源码解析之:如何根据JobGraph生成ExecutionGraph 在上一篇Flink源码解析中,我们介绍了Flink如何根据StreamGraph生成JobGraph的流程,并着重分析了其算子链的合并过程和JobGraph的构造流程。 对于StreamGraph和JobGraph的生成来说&…...
活动预告 |【Part2】Microsoft 安全在线技术公开课:安全性、合规性和身份基础知识
课程介绍 通过参加“Microsoft 安全在线技术公开课:安全性、合规性和身份基础知识”活动提升你的技能。在本次免费的介绍性活动中,你将获得所需的安全技能和培训,以创造影响力并利用机会推动职业发展。你将了解安全性、合规性和身份的基础知…...
网络基础入门到深入(2):网络协议-TCP/IP协议栈
目录 一.TCP/IP协议栈的四层结构 二.每一层的作用与协议 1.作用层 作用: 常见协议: 示例: 2.传输层 作用: 核心功能: 3.网络层 作用: 核心功能: 常见协议: 示例: 4.数据链路层(物理层) 作用: 核心功能: 常见技术: 示例: 三.TCP/IP协议栈的分层…...
美畅物联丨视频上云网关获取视频流地址供第三方调用的方法
在视频监控与流媒体传输领域,视频流地址的获取与调用是极为关键的环节。视频上云网关作为一款高效且稳定的视频传输设备,为获取视频流地址提供了便捷途径,从而使外部系统或平台能够方便地进行调用。今天我们就来讨论一下如何在视频上云网关上…...
【Cesium】一、cesium简介
文章目录 前言1.什么是Cesium?2.Cesium能做什么?3.Cesium的依赖性4.Cesium学习参考 前言 本人是前端,主要是开发web,使用技术栈Vue、Js。最近因工作需要开始学习使用Cesium,找到一位博主的文章很好,一边学…...
微服务架构介绍
微服务架构是一种现代化的软件架构风格,它将应用程序构建为一组小型、自治的服务,每个服务都运行在其独立的进程中,服务与服务之间通过轻量级通信机制(通常是HTTP/RESTful API)进行通信。 1. 服务(Service&…...
SOLID-开闭原则
单一职责原则:https://blog.csdn.net/dmk877/article/details/143447010 在前面我们学习了单一职责原则,今天来一起学习一下SOLID原则中的开闭原则(Open-Closed Principle, OCP) 通过本篇博客你将学到到以下内容 ①什么是开闭原则 ②如何实现开闭原则 ③…...
Mac 安装 Flutter 提示 A network error occurred while checking
错误信息 A network error occurred while checking "https://maven.google.com/": Operation timed out原因 在中国大陆(由于访问 Google 服务器的限制导致超时),无法连接到 https://maven.google.com/ 解决方案 需要使用镜像网站 #flutter 使用国内的镜像 export …...
Rocky Linux下安装meld
背景介绍: meld是一款Linux系统下的用于 文件夹和文件的比对软件,非常常用; 故障现象: 输入安装命令后,sudo yum install meld,报错。 12-31 22:12:17 ~]$ sudo yum install meld Last metadata expirat…...
Sentinel 介绍与使用指南:构建高可用、可靠的微服务架构
在微服务架构中,服务间的依赖和调用非常复杂,这也带来了高并发、大流量等挑战。 如何确保系统在高负载情况下仍能稳定运行,如何避免某个服务的故障影响整个系统的稳定性?Sentinel,作为一个轻量级的、专为分布式系统设计…...
异步请求在TypeScript网络爬虫中的应用
异步请求的重要性 异步请求是现代网络应用中不可或缺的一部分,特别是在网络爬虫领域。它允许爬虫在等待网络响应的同时继续执行其他任务,从而提高效率和性能。在JavaScript和TypeScript中,异步请求可以通过多种方式实现,包括回调…...
智能商业分析 Quick BI
Quick BI 是阿里云提供的一款智能商业分析(BI)工具,旨在帮助企业快速获取业务洞察、优化决策过程、提升数据分析效率。通过强大的数据可视化和分析功能,Quick BI 能够帮助用户轻松连接多种数据源、创建多维度的报表和仪表盘&#…...
[算法] [leetcode-75] 颜色分类
75 颜色分类 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sort 函…...
抖音短视频矩阵系统源码开发技术解析
开发概览: 抖音短视频矩阵系统的构建基于一系列现代技术栈,主要包括VUE, Spring Boot和Django。本文档旨在为开发者提供关于短视频矩阵系统源代码的开发与部署指南。 技术框架分析: 前端技术选型: 对于前端界面的构建…...
Linux(CentOS)安装 MySQL
CentOS版本:CentOS 7 三种安装方式: 一、通过 yum 安装,最简单,一键安装,全程无忧。 二、通过 rpm 包安装,需具备基础概念及常规操作。 三、通过 gz 包安装,需具备配置相关操作。 --------…...
头歌实训数据结构与算法-二叉树及其应用(第9关:二叉树的顺序存储及基本操作)
任务描述 本关任务:以顺序结构存储二叉树,编写前序、中序、后序及层次顺序遍历二叉树的算法,并计算二叉树深度、所有结点总数。 相关知识 二叉树的定义 二叉树的递归定义: 二叉树或者是一棵空树。 或者是一棵由一个根结点和两…...
打印进度条
文章目录 1.Python语言实现(1)黑白色(2)彩色:蓝色 2.C语言实现(1)黑白颜色(2)彩色版:红绿色 1.Python语言实现 (1)黑白色 import sys import timedef progress_bar(percentage, width50):"""打印进度条:param percentage: 当前进度百分比…...
【LLM】Langflow 的简单使用
(PS:爆肝整理,请不要吝啬你的点赞和收藏。) 什么是 Langflow ?Langflow 是一种用于构建多智能体和RAG应用的可视化框架。它提供了个无需编码的 AI 生态系统,能够无缝集成各种常用工具和技术栈。Langflow 以 Python 为基础&#x…...
探索 DC-SDK:强大的 3D 地图开发框架
在现代 Web 开发中,地理信息系统(GIS)和 3D 地图可视化变得越来越重要。dc-sdk 是一个基于 Cesium 的开源 WebGL 地图开发框架,它提供了丰富的地图可视化功能和简单易用的 API,使开发者能够轻松地在 Web 应用中集成 3D…...
3.5mm耳机接口硬件连接
结构 以最复杂的结构为例 简单的结构无非就是没有MIC(麦克风)接口 上图的5就是Detect的作用 上面这两款产品都为3.5mm的音频插座,图一 为连接4节的音频座,而且有两个开关,1接地,2接MIC,3接左声…...
nvidia_gpu_exporter 显卡监控
导入 grafana/dashboard.json https://github.com/utkuozdemir/nvidia_gpu_exporter/blob/master/grafana/dashboard.json参考 nvidia_gpu_exporter...
聊聊 Mongod 以及 MongoDB 常用命令
Mongod mongod 是 MongoDB 数据库服务器的核心守护进程,它负责启动并管理 MongoDB 数据库实例。简单来说,mongod 是 MongoDB 数据库服务器程序,它负责处理数据存储、数据请求、数据复制等后台服务。运行 mongod 是启动 MongoDB 数据库的第一…...
webrtc 源码阅读 make_ref_counted模板函数用法
目录 1. 模板参数解析 1.1 typename T 1.2 typename... Args 1.3 typename std::enable_if::value, T>::type* nullptr 2. scoped_refptr 3. new RefCountedObject(std::forward(args)...); 4. 综合说明 5.在webrtc中的用法 5.1 peerConnectionFactory对象的构建过…...
僵尸进程,孤儿进程、守护进程以及wait函数,waitpid函数
僵尸进程 如果子进程退出,但是父进程没有调用 wait 或 waitpid 获取子进程的状态信息,那么子进程的进程描述符(task_struct)仍然保存在系统中,那么该子进程叫做僵尸进程 #include<iostream> #include<pthre…...
Kafka消息不丢失与重复消费问题解决方案总结
1. 生产者层面 异步发送与回调处理 异步发送方式:生产者一般使用异步方式发送消息,异步发送有消息和回调接口两个参数。在回调接口的重写方法中,可通过异常参数判断消息发送状态。若消息发送成功,异常参数为null;若发…...
Docker新手:在tencent云上实现Python服务打包到容器
1 使用docker的原因 一致性和可移植性:Docker 容器可以在任何支持 Docker 的环境中运行,无论是开发者的笔记本电脑、测试服务器还是生产环境。这确保了应用在不同环境中的行为一致,减少了“在我的机器上可以运行”的问题。 隔离性ÿ…...
什么是 Spring 的组件(Bean)
什么是 Spring 的组件(Bean)? Spring 会自动创建、初始化、装配和销毁这些对象。Spring 使用 IoC(控制反转) 和 DI(依赖注入) 的理念,将应用程序的对象交给 Spring 容器统一管理&am…...
PawSQL性能巡检平台 (3) - 慢查询采集和优化
在数据库运维管理中,慢查询一直是影响系统性能的重要因素。本文将详细介绍PawSQL数据库性能巡检平台在慢查询管理和优化方面的功能特性,帮助数据库管理员更好地应对性能挑战。 一、PawSQL巡检平台慢查询管理概述 PawSQL平台提供了全面的慢查询管理功能&…...
虚拟机Centos下安装Mysql完整过程(图文详解)
目录 一. 准备工作 1. 设置虚拟机静态IP 2. 卸载Mysql 3. 给CentOS添加rpm源 二. 安装MySQL 1. 安装mysql服务 2. 启动mysql服务 3. 开启MySQL开机自启动 4. 查看mysql服务状态 5. 查看mysql初始密码 6. 登录mysql ,修改密码 7. 允许外部访问MySQL数据库…...
微服务保护-sentinel
为什么要有微服务保护? 微服务保护是为了避免微服务雪崩而出现的,每个微服务能处理的请求是有限的,如果一个微服务出现问题导致一个请求进入微服务的时间太久,就会导致大量去请求停滞在微服务内部,这样就会过分占用系统…...
Redis Java 集成到 Spring Boot
Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:Redis 📚本系列文章为个人学习笔…...
RabbitMQ实现生产者消费者
一.启动MQ 注意管理员身份进入cmd才行,我这里是在本地安装的MQ,推荐使用虚拟机安装 二.思路 官方解释RabbitMQ结构: 自我理解RabbitMQ结构: 其实RabbitMQ的服务器就像邮局一样,我们的生产者和消费者对于这个服务器来说都是消费者,因为服务器都可以向两者发送消息 环境准备 …...
stm32f103zet6 ds18b20
main.c // main.c #include "sys.h" #include "ds18b20.h"int main(void){ uart_init(9600);delay_init();while(DS18B20_Init()) //DS18B20初始化 {printf("error");delay_ms(200);}while(1){printf("%4.2f\r\n",Get_Temp());}}ds18…...
期权懂|期权入门知识:开通50ETF期权需要什么条件?
锦鲤三三每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 开通50ETF期权需要什么条件? 一、基本资格要求 (1)年龄限制:投资者必须年满18周岁,具备完全民事行为能力。 &#…...
Linux day 1129
家人们今天继续学习Linux,ok话不多说一起去看看吧 三.Linux常用命令 3.1 Linux命令体验 3.1.1 常用命令演示 在这一部分中,我们主要介绍几个常用的命令,让大家快速感 受以下 Linux 指令的操作方式。主要包含以下几个指令: ls命…...
智能家居体验大变革 博联 AI 方案让智能不再繁琐
1. 全球AI技术发展背景及智能家居市场趋势 人工智能(AI)技术的飞速发展正在推动全球各行业的数字化转型。国际电信联盟与德勤联合发布《人工智能向善影响》报告指出,全球94%的商界领袖认为,人工智能技术对于其企业在未来5年内的发…...
git使用
git初始化 git init 指定要添加的文件 git add [文件名1] [文件名2] [文件名3] // 添加指定文件 git add . // 添加当前目录所有文件 将文件提交到本地仓库 git commit -m "备注信息" 添加远程仓库 git remote add origin [远程仓库地址] git remote -v // …...
嵌入科技的温情
嵌入式世界,是一个微小却无比精妙的宇宙。晶体管之间的脉动,仿佛是心跳的回响;代码中跳跃的逻辑,犹如人生中不可预知的转折。每一个嵌入式系统,都像是一个看不见的灵魂,将冰冷的机器唤醒,为生活…...
python利用selenium实现大麦网抢票
大麦网(damai.cn)是中国领先的现场娱乐票务平台,涵盖演唱会、音乐会、话剧、歌剧、体育赛事等多种门票销售。由于其平台上经常会有热门演出,抢票成为许多用户关注的焦点。然而,由于票务资源的有限性,以及大…...
PS等软件学习笔记
目录 一、ps基础操作快捷键 1、快速打开图片 2、屏幕画布变大变小 3、移动画布 4、CTRL回车,快速完成更改 5、还原 6、创建画布,CTRLN 7、复制图层,CTRLJ 8、一段文字行间距调整 9、反向选择,CTRLSHIFTI 10、抠图 二、…...
vue3学习笔记(9)-pinia、storeToRefs、getters
1.新的集中式状态(数据)管理库,redux vuex pinia 搭建 2.ref拆包 如果在reactive里面定义ref,则打印c时,无需.value 他自动拆包,如果直接在外面定义的ref则需要.value,他没有拆包 3.pinia存储读取数据 存…...
数据库基础知识---以MySQL为例
一、什么是MySQL 数据保存在不同的表中,而不是将所有数据放在一个大仓库内 二、特点 开源--免费下载跨平台--可以在多个操作系统进行运行性能好--可以出来大量数据简单--安装配置简单支持多种编程语言--可以与多种编程语言进行无缝集成 三、分类 DDL--数据定义…...
013-spring的注解整合第三方框架
给spring的ioc容器中添加对象 常用这3个方法...
使用ForceBindIP绑定应用到指定IP
前言 使用ForceBindIP工具,用户可以轻松地将特定应用程序绑定到指定的IP地址,从而确保应用程序的网络连接通过指定的网络适配器进行。通过在命令提示符下运行ForceBindIP并指定IP地址和应用程序的完整路径,用户能够控制应用程序的网络流量&a…...
python-LeetCode-两数之和
1. 两数之和 - 力扣(LeetCode) class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:# 创建一个哈希表用于存储值和索引num_to_index {}for i, num in enumerate(nums):# 计算目标值需要的补数complement target - num# 如…...
项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(四)
文章目录 一、管理员角色功能实现1、添加教师功能实现1.1 页面设计1.2 前端功能实现1.3 后端功能实现1.4 效果展示2、教师管理功能实现2.1 页面设计2.2 前端功能实现2.3 后端功能实现2.3.1 后端查询接口实现2.3.2 后端编辑接口实现2.3.3 后端删除接口实现2.4 效果展示二、代码下…...
大语言模型的token和向量
现在大语言模型火了,像 ChatGPT 什么的,能回答问题、写文章,。但它们为啥这么聪明呢?这就和向量、Token 有关系。那怎么通过向量、Token来理解我们的问题呢。看完这篇文章就知道了 token Token 就像是语言里的小积木,…...
Hyperledger Fabric有那些核心技术,和其他区块链对比Hyperledger Fabric有那些优势
Hyperledger Fabric是一个模块化、权限化的企业级区块链平台,与比特币、以太坊等公有链相比,Fabric主要为私有链或联盟链设计,适用于企业应用。它包含多项核心技术,使其在企业级区块链应用中具有独特优势。以下是Fabric的核心技术…...
ThinkPHP 8高效构建Web应用-第一个简单的MVC应用示例
【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 我们先实现一…...