fuzz测试文件上传靶场的黑名单

fuzz(模糊测试) 黑白名单区别: 白名单过滤:只允许某些格式文件上传。其余不允许。(过滤大部分) 例如:.jpg .png .gif 黑名单过滤:不允许某些文件上传,其余都允许。(过滤小部分) 例如: 环境准备 pikachu 靶场 测试开始 靶场页面打开bp,和浏览器狐狸头代理 上传一个lyy.php文件 bp抓包 开始破解 发送到 Intruder 模块,标记上传的文件后缀名 进行爆破 破解成功 这次白名单过滤:只允许jpg,png, jpg 格式文件上传。其余不允许

基于go标准分层架构项目设计实现

基于go标准分层架构项目设计实现 缘起 个人博客网址 最近主要看了两方面知识,一方面是技术相关的,如何设计一个比较好的后端架构项目代码;一方面是非技术相关的,如何写一篇好的技术文章,能够让他人读懂并有收获。因此这篇文章我会借助于chatgpt尝试通过问题发起,然后思考、调研、设计、实战的方式输出一篇文章出来。 一、问题:如何设计一个高性能的web服务框架? 依据笔者这么多年的开发经验,(没吃过猪肉肯定也见过猪走,笑),期望中的高性能web server应该是这样子的:前端通过golang gin实现,将get/post请求到网关,在网关的基本非业务功能处理后,转发到后端的server,server之间通过rpc请求进行转发处理,整个项目遵循golang 标准项目的模块架构,能够使得项目可扩展,便于开发。最好是采用类似DDD的依赖注入和插件化的思想。我把这些设计要点给chat gpt,然后让他帮助我进行设计,我在他的基础上进行综合整理下: 实现网关的基本功能:网关是一个重要的组件,它可以处理所有进入你的系统的请求,提供路由,负载均衡,认证,限流等功能。 IDL校验:使用Gin的绑定和验证功能来进行输入数据的校验。Gin支持将请求体绑定到一个结构体,并使用标签来进行数据验证。你也可以使用一些第三方的验证库,如go-playground/validator,来进行更复杂的验证。 中间件:使用Gin的中间件来来处理一些通用的逻辑,如日志,错误处理,认证,限流等功能。你可以使用Gin提供的一些内置中间件,也可以编写自己的中间件。 使用Golang和Gin框架:Golang是一种高性能的编程语言,适合构建高性能的web server。Gin是一个高性能的web框架,提供了很多有用的特性,如路由,中间件,参数绑定等,可以帮助你快速开发web server。 前后端分离:将前端和后端的逻辑分离,使得系统更易于扩展和维护。你可以使用Golang的http包或者更高级的http客户端库,如resty,来发送请求到后端的server。 使用RPC框架:这取决于你的具体需求。如果你的后端服务是在内网中,且需要高性能的请求,那么使用RPC,如gRPC,是一个很好的选择。如果你的后端服务是在公网中,或者需要更好的跨语言兼容性,那么使用HTTP/REST可能是更好的选择。 数据库:选择使用MySQL作为数据库。你可以使用Golang的database/sql包来操作数据库,也可以使用一些ORM库,如gorm,来简化数据库操作。你需要考虑数据库连接池的管理,以及如何处理数据库事务。 测试:你需要为你的代码编写测试,包括单元测试,集成测试,和端到端测试。你可以使用Golang的testing包来编写测试,也可以使用一些第三方的测试库,如testify,来提供更多的测试功能。 部署:你需要考虑如何部署你的应用。你可以使用Docker来容器化你的应用,然后使用Kubernetes或者Docker Swarm来进行部署。你也需要考虑如何进行日志收集,性能监控,和错误报告。 项目布局:遵循golang-standards/project-layout的设计是一个很好的实践。这个布局将项目分为多个模块,如cmd,pkg,api,web,scripts等,每个模块都有其特定的职责,这样可以使得项目结构清晰,易于理解和维护。 采用类似DDD的依赖注入:这是一个很好的设计,可以使得你的代码更易于测试和重构。你可以使用一些依赖注入库,如google/wire,来帮助你实现这个设计。 很好,能够描述清楚我想要的后端框架的样子,之后我让chatgpt给我找一些采用上述类似设计思想的框架供我参考学习,它给我如下的一些学习资源。(当然我又问了其他的一些问题,将得到的书籍、博客社区也补充进来) Q: 那有没有类似设计思想的文章或者github工程呢,我需要通过这个项目学习整个的组织架构,同时提高自己的架构能力。 A: 可以帮助你提高你的架构能力。 GitHub项目: Go项目布局模板:这个项目提供了一个标准的Go项目布局模板,你可以参考它来组织你的代码。Go Clean Architecture:这个项目是一个实现了Clean Architecture的Go项目,它使用了依赖注入和接口,可以帮助你理解如何设计和组织代码。Go-Boilerplate:这个项目是一个Go的项目模板,它使用了Clean Architecture和DDD的设计思想,可以帮助你理解如何在实际项目中应用这些设计思想。 文章: 使用Go和DDD构建微服务:这是一个系列的文章,作者详细介绍了如何使用Go和DDD来构建微服务,包括如何设计领域模型,如何实现服务,如何进行测试等。Go中的Clean Architecture:这篇文章介绍了如何在Go中实现Clean Architecture,包括如何设计接口,如何使用依赖注入等 书籍: 《架构整洁之道》:这本书由著名的软件工程师Robert C. Martin(又名Uncle Bob)撰写,详细介绍了如何设计和实现整洁的架构。《领域驱动设计:软件核心复杂性应对之道》:这本书由Eric Evans撰写,是领域驱动设计(DDD)的经典之作。 博客和社区: Go官方博客:这里有很多关于Go的深度文章,包括一些关于架构和设计的文章。Golang Weekly:这是一个每周更新的Go新闻和文章的邮件列表,你可以通过它来跟踪Go的最新动态。Go论坛:这是一个Go的社区论坛,你可以在这里提问和讨论Go相关的问题。 二、常用的框架分层设计及选型 这里笔者按照时间维度搜集整理了几种常见的分层架构设计模型,整理记录下来。 2.1 MVC模型 MVC是由Model(模型)、View(视图)、Controller(控制器)三层组成,是一种将业务逻辑、数据、界面显示分离开来的软件设计模式。其中后端分层架构:Controller(服务调用)、Service(逻辑)、Dao(数据访问): Model:功能的实现,数据库的管理,主要负责数据存取;View:用户能够看到的界面,主要负责数据展示;Controller:对请求进行处理,连接模型层和视图层。 这种是比较经典的设计模型,耦合性、重用性、维护性还是可以的。笔者在php开发和c++开发业务代码时经常看到这种设计: 前端请求-> cgi服务模块 -> controller业务逻辑模块-> dao模块 2.1 DDD微服务模块 DDD (Domain-Driven Design) 是一种软件架构设计方法,它旨在将业务逻辑和数据模型与技术实现分离开来,以便更好地满足复杂业务需求,避免“大泥球”式的代码(一图胜千言,怎奈我的博客还不支持图片,先纯文字描述吧)。 用户接口层:负责处理用户请求、渲染视图和返回响应。应用层:主要面向用例和流程相关的操作,无具体业务规则,负责将用户请求转换成领域行为,并将领域行为传递给领域层进行处理。应用层还负责协调领域层多个领域对象协作完成业务流程。应用层应该是很薄的一层,避免将业务规则实现到应用层中,否则庞大的应用层会使得领域模型失焦,最终演化成传统的三层架构。领域层:是DDD架构中最重要的层,负责表示业务逻辑和数据模型,用来表达业务概念、业务状态和业务规则。领域层通常包含各种领域对象、值对象、聚合根和实体等。领域层通常使用面向对象的设计和编程技术来实现。基础设施层:负责提供技术实现,例如数据库访问、网络通信、日志记录和缓存等。基础设施层并不属于被依赖的最底层,而是采用依赖倒置的方式封装基础资源服务,实现应用层、领域层与基础层的解耦,降低外部资源变化对应用的影响。 总体来说,这种设计是比较适应未来的趋势的,笔者将过去和未来两种模式放到这里,方便读者站在时间的窗口,来看后面的发展。不过本文实战部分并不会使用这两种模式,而是参考golang-standards/project-layout的设计,设计一个比较简单的系统处理,方便读者理解其中的思路。 三、基于golang-standards/project-layout设计进行实战 首先去github上找下类似设计思想的工程代码,然后研究学习下,再回头找下这个项目:

SpringBoot部署一 Windows服务器部署

一、概要 1.1、项目打包成jar包 二、部署运行 2.1、方法一 java -jar 命令 2.2、方法二 Service 服务部署 三、总结 #Spring Boot官方的部署说明 Deploying Spring Boot Applications 一、概要 SpringBoot 内置了Tomcat服务器,目的是为了简化部署的难度,直接用 java -jar 命令即可 1.1、项目打包成jar包 使用IDEA或直接 mvn clean package '-Dmaven.test.skip=true' ( -Dmaven.test.skip=true 排除测试后进行打包,参数加不加其实都可以) 打包后会出现一个target文件夹,下面有一个我们的jar包,示例如下图 二、部署运行 2.1、方法一 java -jar 命令 找到打包后的jar包,拷贝到需要部署的服务器,直接 java -jar 包名字 java -jar BackupItems-0.0.1-SNAPSHOT.jar 打开浏览器测试运行成功 # 但现在有一个问题,我们这样验证和测试没问题,但如果生产环境部署,我们还需要把他注册为一个服务,让系统监听这个服务的运行情况,从而保障服务的可用性 带着以上的问题 我们进入下一步 Service 服务部署 2.2、方法二 Service 服务部署 SpringBoot部署指导里有描述,使用winsw,官方下载地址:WinSW_64.exe官方下载 winsw的官方使用说明 GitHub - winsw/winsw: A wrapper executable that can run any executable as a Windows service, in a permissive license.

flutter web 开发

(1)局域网调试: flutter run -d web-server --web-hostname 192.168.2.70 --web-port 64578 # 修改ip和端口 (2)FlutterWeb 与 原生app中webview交互,包括flutter app ①FlutterWeb调用原生 //创建一个 native_channel.dart ,定义一个外部函数通过 @JS("调用的channel和函数名") 注解指定调用的原生函数(JavascriptChannel固定名称为postMessage) import 'package:js/js.dart'; // JS调用原生函数 @JS("toast_channel.postMessage") external String showToast(String msg); //需要使用的地方直接调用 showToast("Increment"); ②原生调用FlutterWeb import 'dart:js' as js; void _callJs(a){ print(a) } void initState() { js.context['callJs'] = _callJs; } ③如果调用失败(主要是加载先后顺序导致,app无法调用flutter方法) 解决办法,可以写一个html中间页面,再利用中间页面跳转flutter页面 (3)打包流程 打包: yaml注释没用的:cupertino_icons flutter build web --release --web-renderer html flutter build web --release --no-tree-shake-icons --web-renderer html 提示空安全: flutter build web --no-sound-null-safety --release --web-renderer html 关闭pwa打包 flutter build web --pwa-strategy none --release --no-tree-shake-icons --web-renderer html 生成gzip: find .

JetBrains 运行Go出现could not launch process:decoding dwarf section info at offset 0x0: too short解决方案

总结/朱季谦 这是一篇写给刚开始学习Go语言而在搭建环境可能遇到问题的小萌新的文,大神请自行绕路哈(0-0) 有天,我把Go运用环境升到最新版1.16后,用以前一直在用的JetBrains GoLand 2017.3.3 x64版本运行了搭建的gin框架项目时,使用debug模式后,启动就出现了这样一条异常信息:could not launch process: decoding dwarf section info at offset 0x0: too short—— 奇怪的是,run模式运行就正常,当时我第一感觉是,可能是debug插件有问题。 后来百度一番后,发现这确实是Go版本过新而JetBrains GoLand的debug插件版本过老的原因,原本想试试换新一版JetBrains GoLand,但想了一下,这一个小问题,是否可以更快捷地解决呢?若能快捷解决的话,也比再去找一款破解版的新款JetBrains GoLand安装方便。 网上很多方案,但也不知道哪种有用,在试错了多次后,发现其中一种是真的有用。 故而想把我的操作过程详细记录下来,希望可以帮助其他在使用JetBrains GoLand学习Go出现debug异常的小伙伴。 这一个debug错误,应属于Delve调试插件已经过老原因,无法适配新版的Go运用环境。 那么,Delve工具是什么呢? 开源软件库是这样介绍的:Delve 是一个 Go 语言的调试器,目标是给 Go 提供一个简单和特性齐全的调试工具,并且是容易调用和使用的。 简而言之,当JetBrains GoLand使用debug时,其实就是使用到了Delve的debug命令。 你可以在JetBrains GoLand使用dlv --help,就会出现其具备的命令功能,其中的debug命令就是我们要用到的—— 既然如此,若是dlv(Delve 简写)版本过低的原因,那好办,不妨先升级一下div。 一、下载div新版本 执行go get -u github.com/derekparker/delve/cmd/dlv 这时候,可能会出现 RPC failed; curl 28 OpenSSL SSL_read: Connection was reset, errno 10054,这是远程从GitHub上拉去的dlv文件超过本地设置下载文件大小限制的原因,故而把本地git下载限制调大即可,例如:git config --global http.postBuffer 624288000。 再执行上面的go get -u github.com/derekparker/delve/cmd/dlv,就可以正常更新了,执行成功后,进入到你的GOPATH目录下,就可以看到多了一个bin目录,且目录底下有一个dlv.exe文件,即证明新版本Delve 下载完成。 至于GOPATH目录在哪里,其实在下载Go的运行环境时,它会自动在电脑系统环境变量里帮你设置,例如,我的是在—— 二、替换JetBrains GoLand编译器的本地div工具路径 设置文件所在路径:Help->Edit Custom Properties

FastDeploy和PaddleOCR 项目地址

FastDeploy 项目地址: https://github.com/PaddlePaddle/FastDeploy PaddleOCR 项目地址: GitHub: https://github.com/PaddlePaddle/PaddleOCR Gitee: https://gitee.com/paddlepaddle/PaddleOCR

基于Java+Servlet+Mysql的人才招聘网站的设计与实现(附源码 调试 文档)

基于Servlet人才招聘网站的设计与实现 一、引言二、国内外研究现状三、系统需求分析四、系统设计五、系统实现六、系统测试与评估七、结论与展望八、界面展示九、源码获取 摘要 本文介绍了一种基于Servlet人才招聘网站的设计与实现。该系统分为管理员、注册用户和企业用户三种角色,分别具有不同的功能。管理员主要负责用户管理、企业管理、新闻管理、职位管理和简历投递管理等;注册用户和企业在系统中的功能各不相同,注册用户可以查看新闻、筛选职位、搜索职位、查看企业信息、投递简历以及查看自己的简历和投递记录等,而企业用户则可以发布招聘职位、管理简历投递等。系统采用Java语言、Servlet和mysql数据库进行开发,具有较高的性能和可靠性。本文对系统的性能、安全性、稳定性和可靠性等方面进行了评估测试,结果显示本系统具有良好的性能指标和应用前景。 一、引言 随着互联网的普及和电子商务的发展,越来越多的企业和个人选择在网上进行招聘和求职。传统的招聘方式存在着信息不透明、流程不规范等问题,无法满足企业和求职者的需求。因此,开发一款基于Servlet的人才招聘网站,能够有效地提高招聘和求职的效率和管理水平,同时为招聘者和求职者提供更优质的服务。本文将介绍该系统的设计、实现和评估测试,旨在为人才招聘行业提供一种创新的解决方案。 二、国内外研究现状 在国内外,许多学者和企业已经开展了关于人才招聘网站的研究。这些研究主要集中在招聘流程的优化、招聘信息的发布和搜索、求职者简历的处理和筛选等方面。一些研究通过引入智能化的招聘流程管理,实现了对招聘流程的自动化和规范化,提高了招聘的效率和质量;另一些研究则通过引入大数据和人工智能技术,实现了对招聘信息的精准匹配和搜索,提高了求职者找到合适工作的概率。这些研究为人才招聘行业提供了有益的参考和借鉴。 三、系统需求分析 本系统分为管理员、注册用户和企业用户三种角色,分别具有不同的功能。 管理员功能: 用户管理:管理员可以添加、删除和修改注册用户和企业用户信息,包括用户名、密码、联系方式等。企业管理:管理员可以添加、删除和修改企业信息,包括企业名称、企业简介等。新闻管理:管理员可以添加、删除和修改新闻信息,包括新闻标题、新闻内容等。职位管理:管理员可以添加、删除和修改招聘职位信息,包括职位名称、职位描述等。简历投递管理:管理员可以查看和管理简历投递信息,包括投递状态、投递时间等。系统管理:管理员可以设置系统的名称、域名和版权信息等。 注册用户功能: 查看新闻:注册用户可以查看最新的新闻信息。筛选职位:注册用户可以通过系统提供的筛选条件搜索符合自己需求的职位。搜索职位:注册用户可以通过关键词搜索职位,系统会根据关键词返回相关的职位结果。查看企业信息:注册用户可以查看各个企业的详细信息,包括企业名称、企业简介等。投递简历:注册用户可以选择适合自己的职位并添加简历信息进行投递。查看我的简历:注册用户可以查看自己投递的简历信息,包括简历状态、投递时间等。查看投递记录:注册用户可以查看自己的简历投递记录,包括投递状态、投递时间等。 企业用户功能: 发布招聘职位:企业用户可以选择招聘的职位并发布招聘信息。管理简历投递:企业用户可以查看收到的简历信息并进行筛选和管理。… 四、系统设计 架构设计:本系统采用B/S架构,分为前端和后端两部分。前端使用HTML5和CSS3进行页面布局和样式设计,后端使用Servlet进行业务逻辑处理和数据访问。数据库设计:本系统采用mysql数据库进行数据存储,包括用户信息、企业信息、新闻信息、职位信息和简历投递信息等。模块设计:本系统分为管理员模块、注册用户模块和企业用户模块三个部分,每个部分又细分为多个子模块,如用户管理模块、企业管理模块、新闻管理模块、职位管理模块和简历投递管理模块等。安全性设计:本系统采用多种方式保障安全性,包括数据加密、验证码机制和权限管理等。管理员、注册用户和企业用户的操作都需要经过身份验证,确保只有合法用户能够访问系统。可扩展性设计:本系统采用模块化设计方法,方便进行功能扩展和升级。未来可以根据需求添加新的功能模块,提高系统的可扩展性。 五、系统实现 开发环境:本系统采用Java语言和Servlet进行开发,开发环境为Eclipse IDE和Tomcat服务器。数据库连接:本系统使用JDBC连接mysql数据库,实现了数据库的连接和操作。业务逻辑实现:本系统的业务逻辑主要通过Servlet实现,包括模型层、视图层和控制层三个部分。模型层负责数据处理和数据库操作,视图层负责页面布局和样式设计,控制层负责业务逻辑的处理和用户交互。安全性实现:本系统采用多种方式保障安全性,包括数据加密、验证码机制和权限管理等。管理员、注册用户和企业用户的操作都需要经过身份验证,确保只有合法用户能够访问系统。界面实现:本系统的界面设计简洁明了,易于操作和使用。前端使用HTML5和CSS3进行页面布局和样式设计,后端使用Servlet进行业务逻辑处理和数据访问。 六、系统测试与评估 功能测试:本系统的功能测试主要针对各个模块进行测试,测试内容包括各个模块的功能是否正常、是否满足用户需求等。测试结果表明本系统的各个模块功能正常,满足用户的需求。性能测试:本系统的性能测试主要针对系统的响应速度、负载能力和稳定性等方面进行测试。测试结果表明本系统在响应速度、负载能力和稳定性等方面均表现出色,能够满足用户的需求。安全性测试:本系统的安全性测试主要针对系统的安全性措施进行测试,测试内容包括数据加密、验证码机制和权限管理等。测试结果表明本系统的安全性措施均表现出色,能够保障系统的安全性。兼容性测试:本系统的兼容性测试主要针对不同浏览器、操作系统和设备进行测试,测试内容包括系统在不同平台上的运行情况是否正常、页面布局和样式是否正确等。测试结果表明本系统在不同平台上均表现出色,能够满足不同用户的需求。 七、结论与展望 本文介绍了一种基于Servlet人才招聘网站的设计与实现过程。该系统分为管理员、注册用户和企业用户三种角色,分别具有不同的功能。管理员主要负责用户管理、企业管理、新闻管理、职位管理和简历投递管理等;注册用户可以查看新闻、筛选职位、搜索职位、查看企业信息、投递简历以及查看自己的简历和投递记录等,而企业用户则可以发布招聘职位、管理简历投递等。系统采用Java语言、Servlet和mysql数据库进行开发,具有较高的性能和可靠性。本文对系统的性能、安全性、稳定性和可靠性等方面进行了评估测试,结果显示本系统具有良好的性能指标和应用前景。未来可以进一步优化系统的性能和安全性,提高系统的稳定性和可靠性以满足更多用户的需求并推动电子商务的快速发展。同时可以考虑引入更加先进的技术,如人工智能、大数据等,以提高系统的智能化水平和用户体验。另外还可以进一步完善系统的功能和模块化设计,以满足不同用户的需求和提高系统的可扩展性。 八、界面展示 九、源码获取 欢迎大家点赞、收藏、关注、评论、批评啦 、查看👇🏻👇🏻获取联系方式👇🏻👇🏻A5689H

什么叫L1范数,什么叫L2范数

L1范数和L2范数是向量的范数(norm)的两种不同计算方式。 L1范数(曼哈顿范数): 在二维空间中,L1范数等于向量元素的绝对值之和,也可以表示为从原点到向量所在点的曼哈顿距离。 L2范数(欧几里得范数): 在二维空间中,L2范数等于向量元素平方和的平方根,也可以表示为从原点到向量所在点的欧几里得距离。 在正则化中,L1范数和L2范数经常被用作正则化项的一部分,以控制模型的复杂度。L1正则化倾向于使权重稀疏(即某些权重为零),因此可以用于特征选择。L2正则化通过惩罚大的权重,有助于防止过拟合。

docker笔记14--docker-nerdctl-crictl-ctr使用对比

docker笔记14--docker-nerdctl-crictl-ctr使用对比 介绍工具对比dockernerdctlcrictlctr 注意事项说明 介绍 随着容器云技术的成熟,越来越多的从业者开始接触、熟悉 docker和containerd 了,很多时候需要同时在 docker 和 containerd之间切换,因此有必要熟悉主流容器产品常见的交互工具。 此处根据笔者使用经验整理出 docker nerdctl crictl ctl 四个工具的常见用法和注意事项,写在此处分享给有需要的小伙伴学习,也方便自己后续查阅. 工具对比 此处列举一些 docker 和 containerd 命令行工具中常见的一些命令, nerdctr | ctr 默认为default命名空间, crictl 默认为 k8s.io 命名空间。 dockernerdctlcrictlctr备注docker runnerdctl runcrictl runctr run-docker exec -it NAME|ID shnerdctl exec -it NAME|ID bashcrictl exec -it container-id shctr t exec -t --exec-id CONTAINER sh进入容器docker psnerdctl pscrictl psctr c ls-docker start NAME|IDnerdctl startcrictl startctr t start-docker stop NAME|IDnerdctl stopcrictl stop--docker stats NAME|IDnerdctl statscrictl stats-容器资源使用情况docker inspect NAME|IDnerdctl inspectcrictl inspect container-idctr c info容器对象信息docker rm NAME|IDnerdctl rmcrictl rmctr c rm-docker cpnerdctl cp---docker savenerdctl save---docker loadnerdctl load---docker commitnerdctl commit---docker imagesnerdctl imagescrictl imagesctr i ls-docker logsnerdctl logscrictl logs--docker buildnerdctl build---docker rminerdctl rmicrictl rmictr i rm-docker pullnerdctl pullcrictl pullctr i pull-docker tagnerdctl tag-ctr i tag-docker pushnerdctl push-ctr i push-docker loginnerdctl login---docker logoutnerdctl logout----nerdctl namespace ls-ctr ns ls查看containerd命名空间 docker Docker 命令行工具docker,它可以用于和DockerCE 、DockerEE产品交互,包含所有的docker命令。网上已经有很多使用文档了,此处就不列举了,有需要请参考官方文档 https://docs.

使用Python调用API接口获取京东关键词详情数据

在电商领域,获取关键词的详情数据对于产品分析、市场研究等方面具有重要意义。京东作为中国最大的电商平台之一,提供了丰富的API接口供开发者使用。本文将详细介绍如何使用Python调用京东的API接口获取关键词详情数据,并给出相应的代码实现。 一、准备工作 在开始之前,我们需要先准备好以下环境: 1.Python环境:安装Python并配置好环境变量。 2.Requests库:用于发送HTTP请求的Python库,可以通过pip安装。 3.京东开发者账号:注册京东开发者账号,并获取App Key和App Secret。 二、调用京东API接口 1.获取访问令牌 与上文提到的方法类似,我们需要先获取访问令牌(Access Token)来进行身份验证。具体步骤这里不再赘述,可以参考上文获取访问令牌的方法。 2.构造API请求URL 京东提供了关键词查询的API接口,我们可以通过拼接URL的方式来构造请求。URL的格式如下: url = "https://api.jd.com/openplatform/search/keyword.json?app_key={}&app_secret={}&keyword={}&page={}&size={}".format(app_key, app_secret, keyword, page, size) 其中,​​app_key​​和​​app_secret​​是我们在京东开发者平台上获得的App Key和App Secret;​​keyword​​是要查询的关键词;​​page​​和​​size​​用于分页查询,分别表示页码和每页返回的数据条数。 3.发送请求并获取响应 使用Requests库发送GET请求,并获取响应结果。示例代码如下: import requests url = "https://api.jd.com/openplatform/search/keyword.json?app_key={}&app_secret={}&keyword={}&page={}&size={}".format(app_key, app_secret, keyword, page, size) response = requests.get(url) 4.解析响应数据 得到响应结果后,我们需要将其解析为JSON格式,并提取所需的数据。示例代码如下: if response.status_code == 200: data = response.json() # 解析JSON数据 # 提取所需数据并进行处理 # ... else: print("请求失败,错误码:", response.status_code) 三、数据处理与分析 在成功获取关键词详情数据后,我们可以对其进行进一步的处理和分析。例如,可以统计关键词的搜索量、竞争程度等指标,并进行可视化展示。这里以绘制关键词搜索量的柱状图为例,使用Matplotlib库进行可视化。示例代码如下: import matplotlib.pyplot as plt # 假设data是包含关键词搜索量的列表 search_volumes = [item['search_volume'] for item in data['result']] plt.

【Simulink】Three-Phase V-I Measurement 使用方法

大家在复现电力类的论文的时候是不是经常会看到这个东西? 又黑又细,还不知道名字。 其实这是三相电压电流测量模块 Three-Phase V-I Measurement 位置: Simscape / Electrical / Specialized Power Systems / Fundamental Blocks / Measurements 文章目录 1.模块外形2.模块使用2.1 外接示波器测量波形2.2 使用标签引出2.3 使用goto引出 3. 模块内部 1.模块外形 最开始它长这样: 双击模块,可以看到: 上图所示的设置模式为测量对地相电压和线电流的。(不使用标签) 如果不需要测量电压电流,可以改成 no: 模块就会变成: 这时候再改变模块背景颜色和宽度: 右键单击模块 Format > Background Color > Black 再把它缩小,最终变成: 是不是和文章开头的差不多了 2.模块使用 刚才提到了模块可以测量电压电流,接下来讲讲如何测量的问题。 2.1 外接示波器测量波形 最简单直接的方法就是外接一个示波器: 前提是在测量的情况下: 2.2 使用标签引出 如下图,没有直接用示波器测量电压电流,而是使用标签引出,分别命名为"Vabc_B2"和"Iabc_B2",用 From 模块连接作为 Controller 子系统的输入。 图片来源: [1] 冒波波. 微电网运行与控制的建模与仿真[D]. 西南交通大学, 2012. 再如: B2内部设置: 注意标签名字对应。 From模块设置: 2.3 使用goto引出 除了使用标签标记,还可以用goto引出。在From模块右边拖动引出goto模块。

Arch Linux上简单地创建wifi热点(只用一块无线网卡)

硬件条件 需要有一个双通道的无线网卡(单通道的没有试过) 本教程适用于基于无线网 或有线网创建wifi热点 但是只有使用一张无线网卡 同时连接点并创建热点 才需要双通道 检查网卡通道数 sudo iw list 找到如下位置 看channels <= 后的数值,大于1就行 软件安装 需要安装图形化工具linux-wifi-hotspot,在github上可以找到 为了方便,直接用aur的包就行aur的安装方法就不写了,不同的包管理器不一样,本文用paru管理,其它的同理 paru -S wifi-hotspot dnsmasq * dnsmasq在包依赖里没写,但是测试下来是需要的,所以装一下 然后就可以找到这个软件了(不是命令行工具) 强烈建议 不要用sudo运行 !虽然可能要输很多次root密码 (用sudo运行会有错误) 创建热点 配置 这是软件的界面 设置SSID和密码 设置接口,Internet interface是来自哪个接口(这里是来自wifi连接,所以是wlp0s20f3,其它的也可以),创建热点的接口选无线网卡的接口(这里还是wlp0s20f3,用一块网卡同时连接入点和创建热点) 然后Create hotspot就行了,高级设置按需要改 成功创建 有什么用 有人可能会问题为什么有一个wifi还要创建wifi热点? 当然不是用来共享校园网扩大wifi覆盖面积给移动设备做代理(手机、VR设备、单片机设备上做代理不方便)

ubuntu小技巧30--23.10桌面版安装钉钉启动报错undefined symbol: FT_Get_Color_Glyph_Layer

ubuntu小技巧30--23.10桌面版安装钉钉启动报错undefined symbol: FT_Get_Color_Glyph_Layer 介绍解決方法cairo & freetype说明 介绍 近期在电脑上安装了 ubuntu 23.10桌面版本, 安装最新版钉钉 7.1.0-Release.31017 后无法正常打开软件,报错 undefined symbol: FT_Get_Color_Glyph_Layer ,具体如下 xg@xghome:~/Desktop$ bash /opt/apps/com.alibabainc.dingtalk/files/Elevator.sh ubuntu ubuntu branch preload_libs= ./com.alibabainc.dingtalk: symbol lookup error: /lib/x86_64-linux-gnu/libcairo.so.2: undefined symbol: FT_Get_Color_Glyph_Layer 解決方法 启动异常后,从钉钉的桌面快捷键中找到它启动脚本 /opt/apps/com.alibabainc.dingtalk/files/Elevator.sh 粗略看了下脚本,发现它会根据不同的系统和 libc等文件选择性预加载一些特定的库,因此猜测 ubuntu 23.10 新版本的库和老版本的库功能不一致导致。 进一步查看 22.04和23.10的 /lib/x86_64-linux-gnu/libcairo.so.2 , 发现 ubuntu22.04 版本对应 libcairo.so.2.11600.0 , 而ubuntu23.10对应libcairo.so.2.11800.0 ,因此考虑将22.04 的库文件放在钉钉预加载目录,让其使用22.04的库libcairo.so.2.11600.0 ,测试后发现可以正常跑起来。 步骤如下: 提前预装22.04桌面版系统,从 22.04 版本的机器上拷贝库文件到 7.1.0-Release.31017 目录,并新建好对应的软链接 sudo mv libcairo.so.2.11600.0 /opt/apps/com.alibabainc.dingtalk/files/7.1.0-Release.31017/ sudo ln -s libcairo.so.2.11600.0 libcairo.so.2 chmod 777 libcairo.

〔005〕Java 基础之面向对象

✨ 目录 ▷ 面向对象▷ 注意事项▷ this关键字▷ 构造器▷ 重载构造方法▷ 实体类▷ 案例:英雄搜索 ▷ 面向对象 对象: 是一种特殊的数据结构对象: 使用类 new 出来的,有了类就可以创建对象,例 Random r = new Random(),其中 r 就是一个对象格式: public class 类名 { 变量和一些类方法 }面向对象编程,更加符合人类的思维习惯,编程也会更直观其实万物皆对象,如果想操作学生数据,就去找学生对象;如果想操作随机数,就去找随机数对象,例 r.nextInt()每种对象可以实现不同功能,这样就显得代码会更加的清晰和直观比如在游戏中,生成 npc 需要用 npc 对象去处理;生成武器,就去用武器的对象去处理 // 新建类,Npc.java package tiny.geeker; public class Npc { String name; // 生成npc的名字 double blood; // 给npc加血量 public void printName() { System.out.println("创建的NPC是:" + name); } public void printBlood() { System.out.println("创建的NPC是:" + name + ",它的血量为:" + blood); } } // 调用类 package tiny.

npm ERR Error: EPERM:operation not permitted, rename

npm ERR! Error: EPERM: operation not permitted, rename 问题背景:最近由于项目的打包出问题了,以为是node版本问题导致的,所以一顿折腾,切换了好几个版本,这就导致了npm出问题了 在npm install的时候报下面的这个(图片是引用的别人的,侵删)错误,报这个错的原因有很多,具体原因由于node版本以及windows的版本等多中因素交错,导致无法确切找出(希望有大佬能找出来) 另外,这个出现这个问题的时期也不同,有的是在install的时候,有的是在run dev的时候,有的是在打包的时候 遇到问题之后,首先就是各种搜索解决方案,常用的解决方案,大概常用的方案有以下几种: 以管理员的身份运行cmd 因为他系统提示说权限不够,我现在是普通用户权限,那我以管理员的身份运行,思路可行 参看:https://blog.csdn.net/Running_FE/article/details/81629330这篇 删除用户目录下的.npmrc文件 这个方案在一定程度上是可以解决一些问题的 清缓存+重新装:npm clear cache --force, npm install 参看:https://www.cnblogs.com/maycpou/p/12080814.html 删除报错信息里提到的那个文件 这中方案有人说可以解决问题,但是我没找到那个文件 参看:https://blog.csdn.net/LJJONESEED/article/details/119926728 关闭所有引用当前项目的编辑器 由于他的错误提示里有一句说是“当前文件可能在其他编辑器中打开了”,所以关闭编辑器,然后清缓存,然后重新装 最后附上stackoverflow里的一个帖子,这个帖子下面讨论挺激烈的,有很多方案,大家有兴趣可以 look look 参看:https://stackoverflow.com/questions/39293636/npm-err-error-eperm-operation-not-permitted-rename# 请注意 希望有大佬能给出这个问题的真正原因,抱拳了

力扣题目 --- 零钱兑换

题目描述: 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 示例 1: 输入:coins = [1, 2, 5], amount = 11 输出:3 解释:11 = 5 + 5 + 1 示例 2: 输入:coins = [2], amount = 3 输出:-1 示例 3: 输入:coins = [1], amount = 0 输出:0 思路描述: 考虑到数值为amount的硬币数可以由前面两项之和为amount的硬币数之和来求得。因此,我们可以考虑使用动态规划来解决这个问题。 设置dp数组,其中dp[i]的含义是当amount为i时的最小硬币数。 dp数组的长度是amount+1,初始值为amount,即每一项的最大硬币数。 对于状态转移方程的设计,dp[i]应该由前面dp[indexDp]+1,而需要满足i-indexDp在数组中存在。indexDp=1,...,i,dp[i]取所有可能中的最小值。 dp[0]=0; if(coins[j]<=dp[i]){ dp[i]=min(dp[i],dp[i-coins[j]]+1); } 最后返回结果dp[amount]。 如果dp[amount]的值大于amount,说明当前硬币的线性组合无法满足其值等于amount,即不存在。 return dp[amount]>amount?-1:dp[amount]; 代码: class Solution { public int coinChange(int[] coins, int amount) { int max=amount+1; int[] dp=new int[amount+1]; Arrays.

VIIRS-NPP夜间灯光遥感数据下载和预处理

VIIRS-NPP夜间灯光遥感数据下载和预处理 月和年合成产品下载网站 日数据下载网站 一、下载shp掩膜文件 下载好月合成产品后,在这个网站上下载矢量地图, 点击复制按钮,来到这个网站,ctrl + v粘贴 点击右上角Export,选择shp格式,也可以导出json格式 最后点export导出就行 二、NPP月度合成数据处理 视频参考这位up主 按照掩膜提取 右侧搜索框搜索“按掩膜提取”,提取出夜光影像中国区域 将其转换为Albers积投影和重采样到400m 可参考这篇文章 处理异常值 将小于0.3的值置为0 “栅格计算器”工具

使用Grafana与MySQL监控网络延迟

文章目录 前言python程序使用Grafana步骤1:安装和配置 Grafana步骤2:配置 Grafana 数据源步骤3:创建 Grafana 仪表盘步骤4:将 Grafana 仪表盘嵌入到博客中 前言 在网络应用中,网络延迟是一个重要的指标,它影响着用户体验和系统性能。本文将介绍如何使用Python编写一个程序来监控网络延迟(Ping)并将结果存储到MySQL数据库中。然后,我们将使用Grafana来创建仪表盘,实时展示网络延迟的数据。 当监控网络连接并将数据存储到数据库后,我们可以使用 Grafana 这样的工具来可视化数据并创建仪表盘,以便更直观地查看和分析监控结果。以下是将 Grafana 与上述代码结合使用的步骤: python程序 当我们需要监控网络连接并记录 Ping 响应时间、丢包率和抖动等指标时,可以使用 Python 编程语言和一些相关库来实现。下面是一个示例代码,用于监控 Ping 并将数据存储到数据库中。 首先,确保已安装以下库: ping3:用于执行 Ping 操作并获取响应时间。pymysql:用于与 MySQL 数据库建立连接和执行 SQL 操作。pytz:用于处理时区转换。 然后,创建一个配置文件 ping_config.ini,其中包含以下内容: [ping] target_address = 目标地址 将 target_address 替换为要 Ping 的目标地址。 接下来,将以下代码保存为 Python 脚本文件(例如,ping_monitor.py): import ping3 import time import statistics from configparser import ConfigParser import pymysql from datetime import datetime import pytz # 计算平均绝对偏差(Mean Absolute Deviation) def calculate_mad(data): mean = sum(data) / len(data) deviations = [abs(x - mean) for x in data] mad = sum(deviations) / len(deviations) return mad # 监控 Ping 并将数据存储到数据库 def monitor_ping(config_file): # 读取配置文件 config = ConfigParser() config.