windows系统kafka小白入门篇——下载安装,环境配置,入门代码书写

目录 1. kafka 下载 2. 修改配置文件 2.1 文件夹内容 2.2 创建一个 data 空文件夹 2.3 修改 zookeeper.properties 配置文件 2.4 修改 server.properties 配置文件 2.5 创建 "zk.cmd" windows脚本文件 2.6 创建 "kfk.cmd" windows脚本文件 3. 启动 kafka 4. 创建主题+生产者消费者演示 4.1 创建 topic 主题 4.2 命令行创建生产者 4.3 命令行创建消费者 4.4 生产者发送消息供消费者消费 5. demo 书写 5.1 创建项目 5.2 引入依赖 5.3 生产者测试类代码书写 5.4 消费者测试类代码书写 1. kafka 下载 本片是小白入门篇,所以我们不以Linux操作系统为例,选择大多数小白都用的windows。 ksfka下载链接如下,点击链接进入官网即可下载 温馨提示:JDK版本至少需要1.8,高版本也可兼容; Apache Kafkahttps://kafka.apache.org/downloads本篇中以kafka_2.1.3-3.6.1版本为例,直接点击对应的版本下载即可,tgz包就类似于我们常见的zip,下载完成之后解压即可。 下载完毕,我们就可以解压得到 kafka 了 解压之后就可以得到 kafka 文件了 2. 修改配置文件 2.

three.js实现3d地图,包含散点,地图背景图片(vue)

效果图 图片资源: 1、下载three.js及d3依赖,我这里使用的是three r153版本 npm i three npm i d3 2、使用d3将地理坐标转换成坐标轴xy值,在地图区域及边界线加载到场景后,通过包围盒计算完整地图的max和min坐标,再根据max和min的值重新计算每个地图区域的uv坐标,如果不重新计算uv坐标会导致贴图显示异常 this.projection = d3 .geoMercator() .center(this.centerCoordinate) .translate([0, 0]); // 加载地图背景 const backgroundTexture = new THREE.TextureLoader().load( require("@/assets/images/map.png") ); // 加载地图 let fileLoader = new THREE.FileLoader(); fileLoader.load("/anhui.json", (data) => { // 添加地图及边界线 this.addMapGeometry(data); // 重新计算地图uv坐标 let arr = []; let box = new THREE.Box3(); for (let v of this.map.children) { for (let v2 of v.children) { // 判断是否为ExtrudeGeometry if (v2.geometry instanceof THREE.

如何在springboot3.x使用knife4j,以及knife4j无法访问(404)解决办法,微服务项目debug经验分享

目录 如何在springboot3.x的版本使用knife4j? 解决knife4j无法访问 以下是一些关于怎么找到这个解决办法(微服务项目debug)的经验(吐槽)分享 如何在springboot3.x的版本使用knife4j? 参考springboot版本:3.2.4 相比于springboot2.x版本,在3.x版本使用knife4j将有较大的不同 关于使用的官方文档:快速开始 | Knife4j (xiaominfo.com) 1. 首先,对于需要使用knife4j的模块,在其pom.xml中添加依赖: <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId> <version>4.4.0</version> </dependency> 2. 然后在模块下的src/main/resources/application.yml文件中配置属性 需要且仅需要更改packages-to-scan:的值,改为你模块下controller包的路径 # springdoc-openapi项目配置 springdoc: swagger-ui: path: /swagger-ui.html tags-sorter: alpha operations-sorter: alpha api-docs: path: /v3/api-docs group-configs: - group: 'default' paths-to-match: '/**' packages-to-scan: com.xiaominfo.knife4j.demo.web #这里换成你模块下controller包的路径 # knife4j的增强配置,不需要增强可以不配(建议配置一下) knife4j: enable: true setting: language: zh_cn 3. 在需要的地方添加上注解 拿最重要的两个注解来说: @Tag(name = "xxx") 加在controller类前,用于将不同controller类分开,xxx换成你想定义为什么名字 @Operation(summary = "xxx") 加在controller中各个方法前,用于定义这个方法的名字 实际效果举例: 解决knife4j无法访问 输入{ip}:{port}/doc.html 但无法访问,显示如下: 或者: idea中有输出,如下: 解决办法:

【Java】java学生管理系统(增删查改)

一、业务分析 学生信息管理系统是一个实现信息管理的多功能平台,本文主要介绍一个简易功能的java 程序。 二、需求分析 1、添加学生信息。 2、删除学生信息。 3、查看学生信息。 4、修改学生信息。 三、代码设计 1、创建一个标准的学生类 public class Student { //定义一个学生类 private String sid;//学生学号 private String name;//学生姓名 private String age;//学生年龄 private String address;//学生居住地 public Student() {//无参构造 } public Student(String sid, String name, String age, String address) {//带参构造 this.sid = sid; this.name = name; this.age = age; this.address = address; } public String getSid() {//根据每个成员变量给出get/set方法 return sid; } public void setSid(String sid) { this.sid = sid; } public String getName() { return name; } public void setName(String name) { this.

2024最新开源社群社交论坛圈子系统开源版小程序源码详细安装教程丨 前端 uniapp 微信社区小程序源码 + H5+APP+thinkphp 后台源码 + 附带搭建完整教程

前端采用 Uniapp-vue2,可打包 H5 + 小程序 + 双端 APP 后端采用 ThinkPHP6+Mysql 数据库 系统安装环境需要:Nginx 或者 Apache 请选择 PHP7.3 数据库 mysql 5. 适用领域 一、行业圈子:您可以使用在你的行业领域,让本行业的有交流和联系的圈子。 二、地方圈子:您可以使用在本地区,运营地方性的综合圈子或论坛,本地社交搭配圈子做信息发布类。 三、纯社交圈子:搭配交友频道,和语聊房间频道可运营娱乐社交类, 四、游戏开黑圈子:作为游戏开黑组队和代练模式交易。 五、兴趣圈子:种草社区。 后端安装 安装使用常见问答 1、关于敏感词过滤问题? 答:请到七牛云注册账号,在我的里会有 AccessKey 和 AccessKeySecret,填写到我们后台的 上传配置七牛云那里,点击保存。 如果是想使用七牛云的图片储存请继续填写后面的空间名和域名等信息,如果不想使用七牛云储存,只需要填写 key 和 secret。然后在选择储存方式为本地。 意思是七牛云这个必填。否则无法过滤。 如果不想过滤请到 app/controller/user.php 这个接口文件里搜索 checkCloseSpeck 并把这一行注释掉。 2、关于 APP 版 发布活动选择地址和查看地址失效问题? 答:请在 Hbiuder 里 打开 manifest.json, 点击 APP 模块配置,选中 maps,选择你要使用那个地图,一般推荐高德和腾讯。请到高德或腾讯开放平台 注册账号,并添加应用。获取到 key 填写到这里。 因为 APP 采用的是 sdk 地图。小程序不需要考虑,是直接用微信的地图。 3、关于短信登录问题? 答:后台关闭短信验证,是为了测试使用的,或者是短信通道临时故障之类使用。就是用户不需要接收短信,直接可以登录。当正式版本发布后,建议你开启短信验证,并去阿里云购买短信,填写在后台即可使用。 4、我们的演示 APP 或者小程序为啥不能发帖子? 答:演示已经关闭发布功能,因为测试的人太多,天天乱发,影响测试的美观。 请自己搭建后 自己发布到你的数据库去。

在cmd中运行python文件,python在cmd中怎么运行

大家好,给大家分享一下在cmd中运行python文件,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 大家好,给大家分享一下在cmd里运行python文件,很多人还不知道这一点。下面详细解释一下怎么用python画五瓣花朵。现在让我们来看看! 1、Python无法在cmd中运行,如何解决 path就是的一个路径,如果安装的时候没勾选这项,在cmd输入python能够调用的话就可以不用管它,如果报错,自己手动添加一下就可以了,具体步骤如下: 1、鼠标右击我的电脑---属性---高级系统设置---“环境变量” 2、选择‘Path’,点击‘编辑’ 3、如果Path里面没有上面的两个路径,无法在cmd调用Python。 4、点击新建,再点击浏览,找到python安装路径添加就可以了 注意:AppData这个文件是隐藏的,按方法找到即可 5、添加好后,依次点击确定 6、打开cmd命令输入python测试, 2、python怎么在cmd中有标号运行 方法一:找到Python脚本所在的文件,使用快捷键shift+右击的方式运行 当我们在网页中下载好Python之后,默认安装的时候会安装一个Python脚本文件,使用这个方法之前就是要先找到Python脚本所在我文件夹中,找到之后,选择文件点击shift并且右击鼠标,在弹出的选项中,选择“在此处打开命令窗口”,如何再使用快捷键tab键切换文件,选择我们要使用的目标python脚本,然后就可以直接运行了,或者直接对当前的脚本文件双击运行python在cmd中运行。 方法二:命令行窗口运行 首先是要在命令行窗口中操作的,所以我们要先进入到命令行窗口中去,相信大家应该对进入命令行窗口的方式都掌握了,第一步要做的事情就是去打开一个运行窗口,可以使用快捷键的方式winr+r回车之后,此时会弹出运行窗口,我们在窗口中可以直接输入cmd按下回车之后,就可以直接进入到命令行窗口中,使用刚才什么的第一种方式,去文件夹中找到脚本文件所在的目录之后,直接将脚本文件选择拖入到命令行中,按下回车,即可运行Python程序。 3、怎么用cmd 运行python 1、确实python安装目录,把此目录添加到path中,使用如下命令:path%path%;"python安装目录"通常是在C盘根目录python版本号目录下2、定位到python脚本目录下,例如D盘的python目录中的文件,则使用:d:cdd:\python3、执行脚本,命令如下:或者不切换目录直接执行pythond:\python\4、对于只安装一个版本python的系统,因为python有关联,所以直接运行脚本即可,如下:d:\python\ 4、如何在cmd中运行python 将python的安装路径下的bin目录,完整的路径加入到系统路径下,然后重启,就可以在cmd下运行python了 5、如何在windows cmd下运行python 假设python安装目录为C盘根目录,版本为python2.6 先确保是否在windows环境变量中设置了python路径(即path里是否添加了C:\Python26) 一、如果设置了,则打开cmd, 1. 直接输入python C:\myPython\,就可以执行py文件了; 2. 键入python,进入python环境(此时会出现>>>符号),就可以输入python代码了 二、如果没设置,可以添加上,其他同上; 也可以在cmd中临时指定,如下: 1. 先在cmd中输入set PATH=%PATH%;C:\Python26(这是一整行,然后回车) 2. 之后可以直接执行py文件,如python C:\myPython\ 3. 或者键入python,回车,就会进入python环境,执行python代码 注意: 一旦进入了python环境,即出现了>>>符号时,就不能直接输入python C:\myPython\来执行文件了,需要通过下列方式来调用 #比如执行,方法如下: >>> import sys #引入sys库体 >>> .append("C://myPython") #往系统路径中加入自己存放py文件的目录,注意不包含文件本身 ,只是目录 >>> from test import * #从文件中加载所有的内容并执行 6、如何运行python程序 运行python程序的两种方式是什么?python有两种运行方式:交互式和脚本式。交互式可以通过cmd命令行窗口或者IDEL实现,而脚本式通过写一个脚本(.py结尾的文档)实现。其中交互式主要用于简单的python运行或者测试调试python时用到,而脚本式是运行python程序的主要方法。 第一,交互式,通过Windows命令行工具进行交互式运行python。同时按下Windows键和R键,启动“运行”,在“运行”中输入cmd然后回车,即弹出命令行工具,然后输入python回车,即出现如下界面。 第二,然后输入print('Helloworld!'),既可以敲一行代码,与python交互一次,python执行一次。 第三,通过IDEL交互式运行python。从“开始”中找到Python->IDEL,如下图。 第四,启动IDEL后,同样输入print('Helloworld!'),既可以敲一行代码,与python交互一次,python执行一次。只不过IEDL中python代码可以高亮显示。 第五,脚本式运行python,在IDEL中点击file->newfile,就会弹出一个未命名(Untitled)的脚本窗口,然后输入如下代码,并按Ctrl+S保存。 #20181216摄氏温度和华氏温度之间转换 t=input('请输入带有单位符号的温度(例如37C或者100F):') ift[-1]in('f','F'):

【JavaSE】解密 继承和多态(上)

前言 本篇将会通过典型代码案例来揭开 Java中继承和多态 的神秘面纱~ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 前言 继承 继承代码举例 子类访问父类的成员变量和方法 子类访问父类的成员变量 super this和super比较 相同点 区别 ​编辑 子类访问父类的成员方法 规则同理 子类与父类的构造方法 执行顺序 代码块的执行顺序 测试代码如下 继承 面向对象思想中提出了继承的概念,专门用来进行共性抽取,实现代码复用。 继承代码举例 Dog和Cat称为子类或派生类,Animal称为父类、基类或超类。Dog和Animal的关系可以简单理解为is-a的关系(即狗是一个动物) 子类会将父类的成员变量和方法继承子类中(子类不用自己再定义了)子类必须要有自己特有的成员(体现与父类不同) class Animal{ public String name; public int age ; public String color; public void eat(){ System.out.println(this.name+"正在吃饭!"); } } //Dog子类 继承了 Animal父类 class Dog extends Animal{ public void bark(){ System.out.println(this.name+"正在汪汪汪~"); } } //Cat子类 继承了 Animal父类 class Cat extends Animal{ public void miao(){ System.

java: Compilation failed: internal java compiler error

java: Compilation failed: internal java compiler error 启动项目后报错:java: Compilation failed: internal java compiler error原因:idea设置的JDK版本和项目配置不同解决方法:先查看项目中配置的JDK版本,再去idea的配置中去同步版本设置1.查看项目配置的JDK版本:pom.xml文件2.idea检查“Java Compiler"的配置3.idea检查“Project"的配置4.idea检查“Modules --> Sources"的配置5.idea检查“Modules --> Dependencies"的配置 启动项目后报错:java: Compilation failed: internal java compiler error 原因:idea设置的JDK版本和项目配置不同 解决方法:先查看项目中配置的JDK版本,再去idea的配置中去同步版本设置 1.查看项目配置的JDK版本:pom.xml文件 2.idea检查“Java Compiler"的配置 位置:File --> Setting --> Build,Execution,Deployment --> Compiler --> Java Compiler 3.idea检查“Project"的配置 位置:File --> Project Structure --> Project Setting --> Project 4.idea检查“Modules --> Sources"的配置 位置:File --> Project Structure --> Project Setting --> Modules --> Sources 5.idea检查“Modules --> Dependencies"的配置 位置:File --> Project Structure --> Project Setting --> Modules --> Dependencies

[Windows] RVC WebUI v1228 (AI歌曲翻唱工具)

文章目录 AI歌曲翻唱工具RVC模型训练软件下载地址效果展示 AI歌曲翻唱工具 RVC 是一款前沿的音色替换项目,可以进行歌曲的翻唱和实时的变声,具有低延迟、优秀的变声效果、声音模型扩展性、个性化和先进的深度学习技术等特点。 该项目的核心功能之一是有更高的自由性和声音模型扩展性,可以对任意动漫角色和人物进行实时的声音转换,前提是进行训练声音模型。这为用户提供了极大的自由度和创新空间。,这种声音模型的转换是通过深度学习实现的,可以通过简单的设置和选择输入输出,将自己的声音转换成不同的声音音色,从而实现声音的个性化和可玩性。 RVC模型训练 过程分为: 1、声音数据集提取 2、模型训练 3、歌曲推理 4、歌曲合成 软件下载地址 N卡:https://www.123pan.com/s/02MbVv-3SU3H.html A卡和Intel核显:https://www.123pan.com/s/02MbVv-hSU3H.html 安装CUDA驱动(已安装则忽略,安装后重启电脑):https://developer.nvidia.com/cuda-11-8-0-download-archive 不懂的压缩包内有视频教程,跟着操作就行。 项目地址:https://github.com/RVC-Project/R … ce-Conversion-WebUI 效果展示

在 Windows 中安装部署并启动连接 MongoDB 7.x(命令行方式启动、配置文件方式启动、将启动命令安装为系统服务实现开机自启)

MongoDB 的下载 下载地址:https://www.mongodb.com/try/download/community 这里需要对 MongoDB 的版本号说明一下: MongoDB 版本号的命名规则是 x.y.z,当其中的 y 是奇数时表示当前的版本为开发版,当其中的 y 是偶数时表示当前的版本为稳定版,所以我们下载 MongoDB 时选择版本号 y 是偶数的版本下载,其中的 z 是修正版本号,数字越大越好 接下来,我们选择下载 MongoDB 的压缩包进行下载(解压即安装) MongoDB 的安装 我们将 MongoDB 的压缩包下载到本地后,根据自身需要将 MongoDB 的压缩包存放并解压到合适的目录,压缩包解压完成即安装完成 配置 MongoDB 环境变量 接下来,我们将 MongoDB 安装根目录下的 bin 目录配置到系统环境变量 Path 中,以便于我们在任何位置可以启动 MongoDB 或者执行 MongoDB 相关的可执行文件 进入配置系统变量界面:我的电脑=>鼠标右键=>属性=>高级系统设置=>环境变量=>系统变量 MongoDB 的启动 在 MongoDB 启动前,我们还需要创建一个目录,用于存放 MongoDB 中的数据库相关信息。 在 MongoDB 安装位置的根目录中创建 data/db 目录,用于存放 MongoDB 中的数据库相关信息;在 MongoDB 安装位置的根目录中创建 logs 目录,用于存放 MongoDB 启动运行过程中的相关日志信息。 命令行参数方式启动 我们可以在命令行窗口中,执行如下命令,启动 MongoDB 服务,并指定 MongoDB 中数据库的相关信息的存放位置为 MongoDB 安装位置的根目录中的 data/db 目录,指定日志信息的存放位置为 MongoDB 安装位置的根目录下的 logs/mongo.

分布式流水车间调度问题(DFSP)建模(一)

最近在学习分布式车间调度问题,关于这方面的博客内容好像还比较少,为了方便学习,自己整理了一下相关论文内容,仅供参考。 问题背景 生产调度是将有限的生产资源分配给特定时间段内的任务,以优化决策者确定的一个或多个目标。其中,最大完工时间(makespan)通常被作为生产调度问题的基本目标。随着智能工厂的发展和新型制造模式兴起,分布式生产环境下的调度问题引起了研究者的极大关注和兴趣。 问题描述 分布式流水车间调度问题(Distributed FlowShop Scheduling Problem,DFSP)是一类经典的混合整数线性规划(MILP)问题,需要完成将一组待加工的工件(Jobs)分配到多个工厂进行加工的过程,该过程中存在工厂分配和厂内排产两个子问题。在DFSP中,每个工厂都具有多台机器,不同工厂的机器制造顺序是相同的,每个Job都需要流经工厂内的所有机器。 置换流水车间加工甘特图 如上图所示,在某一工厂f内有M1,M2,M3三台机器组成的流水线,一次完整的加工中工件工件需要依次经过机器M1,M2,M3。需要注意的是,同一时刻,同一工件只能在一个机器上进行加工,只有完成前一道工序后才能转移至下一台机器进行加工,工件在所有机器上的加工顺序是固定的。对于DFSP,存在多个如上图所示的置换流水车间工厂。 数学模型 一般来说,DFSP解的表达形式为,其中表示工厂的Job序列,为工厂加工Job数量。用表示工厂的机器上加工Job 的处理时间,表示工厂的Job 离开机器的时间。那么,在最简单的没有其他加工约束的DFSP中对拥有台机器的工厂 的makespan计算如下: 虚拟工件0 第一台机器的第一个工件离开时间 第一台机器的每一个工件离开时间 每一台机器的第一个工件离开时间 机器上的工件需要等待其离开前一台机器且机器上的上一个工件离开机器,才能开始加工 工厂的makespan等于最后一台机器的最后一个工件离开的时间 整个生产计划的makespan等于所有工厂的最大makespan 关于DFSP的求解方法,暂时还没有从方法论的角度去分析,主要是先把模型理解清楚,后面的决策过程采用元启发式算法和RL的方法应该都可以解决。除此以外,初始解的构造也是影响调度结果的重要因素。

python -- NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+

报错分析 完整的报错:urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020报错分析:LibreSSL 是 OpenSSL 的一个分支,LibreSSL 2.8.3 与OpenSSL 1.1.1版本相似(有差异)。Mac版python里的ssl默认使用LibreSSL 2.8.3 编译,也就是OpenSSL 1.1.1。而urllib3 v2仅支持OpenSSL 1.1.1以上的版本,因此MAC版python里的ssl版本落后了。 解决办法: 升级LibreSSL(没用,LibreSSL升级了但是python里的ssl库没更新) # 查看当前用户,确保非root(id 不为0) whoami # 查看是否是root id -u # 修改目录权限 sudo chown -R $(whoami) /opt/homebrew # 升级libressl brew update brew upgrade libressl # 设置libressl环境变量 echo 'export PATH="/opt/homebrew/opt/libressl/bin:$PATH"' >> ~/.zshrc # 设置编译器环境变量:为了让编译器找到 LibreSSL echo 'export LDFLAGS="-L$(brew --prefix openssl)/lib"' >> ~/.

python 邮箱自动化操作(1) 邮件的自动获取 imapclient 非常详细!有范例!!

版本 python 3.8 imapclient:3.0.0 注意: 这里是以腾讯企业邮箱为例,不同的邮箱可能会有不同的编码格式,就可能会产生错误。 邮件协议概述 SMTP (Simple Mail Transfer Protocol): SMTP 是用于发送电子邮件的标准协议。客户端使用 SMTP 将邮件发送到邮件服务器。SMTP 客户端连接到 SMTP 服务器的 25 号端口。SMTP 协议通常用于将邮件从发送方传输到接收方的邮件服务器。 POP3 (Post Office Protocol version 3): POP3 是用于从邮件服务器上获取邮件的协议。客户端使用 POP3 从邮件服务器下载邮件到本地计算机。POP3 客户端连接到 POP3 服务器的 110 号端口。POP3 协议通常会将邮件从服务器上下载到客户端,并在下载后从服务器上删除邮件。 IMAP (Internet Message Access Protocol): IMAP 也是用于从邮件服务器上获取邮件的协议,与 POP3 类似,但提供了更多的功能。IMAP 允许客户端在多个设备上同步查看邮件,因为邮件仍然保留在服务器上。IMAP 客户端连接到 IMAP 服务器的 143 号端口。IMAP 协议通常更适合需要在多个设备上访问邮件的用户,因为它允许在所有设备上同步邮件状态。 这里列举了三种协议,其中SMTP用于发送邮件,POP3和IMAP用于获取邮件,由于IMAP更强大,所有本文的邮件获取也是基于IMAP协议。 从邮箱获取邮件 (标题、内容、附件等) python虽然自带imaplib这个包,但用起来比较复杂,所以在这一部分,本文使用imapclient,这是一个用于 IMAP 客户端的第三方库,提供了更高级的功能,例如搜索、标记、文件夹管理等,它比标准库中的 imaplib 更易于使用。 1. 邮箱登录 from imapclient import IMAPClient # 邮箱登录 email_address = 'xxxx@xxxx.

SpringBoot 接口访问频率限制(一)

前言 限流,是服务或者应用对自身保护的一种手段,通过限制或者拒绝调用方的流量,来保证自身的负载。限流是保护高并发系统的三把利器之一,另外两个是缓存和降级。限流在很多场景中用来限制并发和请求量,比如说秒杀抢购,保护自身系统和下游系统不被巨型流量冲垮等 功能说明 在Spring Boot应用程序中实施接口访问频率限制(也称为速率限制或节流)是非常重要的,原因主要有以下几点: 防止服务滥用:如果没有频率限制,恶意用户或系统可能会发送大量的请求到服务接口,导致服务过载或崩溃。通过限制单个用户或IP地址的请求频率,可以有效地防止服务被滥用。保护系统资源:限制请求频率可以确保系统资源(如CPU、内存、数据库连接等)得到合理分配,防止某个接口或功能消耗过多资源,影响其他正常用户的体验。提高系统稳定性:当接口请求量激增时,如果没有合理的频率限制,系统可能会因为处理大量请求而变得不稳定。通过限制请求频率,可以确保系统在高并发场景下依然能够稳定运行。维护业务安全:一些关键的业务接口,如用户注册、密码重置等,如果不加以限制,可能会被恶意用户利用,通过大量请求尝试破解或攻击。频率限制可以有效地提高这些接口的安全性。提升用户体验:当某个接口被大量请求占用时,其他正常用户的请求可能会受到阻塞或延迟。通过实施频率限制,可以确保每个用户都能获得稳定且响应迅速的服务。 为了更灵活地应对不同的场景和需求,我们可以采用策略模式来实现接口访问频率限制。策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在频率限制的实现中,策略模式允许我们定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换。这样,我们就可以根据不同的业务场景,动态地选择并应用适合的频率限制策略。 在策略模式中,我们通常定义一个策略接口,其中包含实现频率限制算法所需的方法。 限流策略定义: public class FrequencyControlDTO { /** * 代表频控的Key 如果target为Key的话 这里要传值用于构建redis的Key target为Ip或者UID的话会从上下文取值 Key字段无需传值 */ private String key; /** * 频控时间范围,默认单位秒 * * @return 时间范围 */ private Integer time; /** * 频控时间单位,默认秒 * * @return 单位 */ private TimeUnit unit; /** * 单位时间内最大访问次数 * * @return 次数 */ private Integer count; //时间换算毫秒 public long getTimeInMillis() { return unit.toMillis(time); } } } 限流策略接口定义: 然后,我们为每个具体的算法实现一个策略类,这些类都实现了相同的策略接口。在Spring Boot应用中,我们可以将这些策略类作为Spring的Bean进行注册,以便在需要时通过依赖注入的方式使用它们。

Spark实战:词频统计

文章目录 一、Spark实战:词频统计(一)Scala版1、分步完成词频统计2、一步搞定词频统计 (二)Python版1、分步完成词频统计2、一步搞定词频统计 二、实战总结 一、Spark实战:词频统计 (一)Scala版 1、分步完成词频统计 (1)基于文本文件创建RDD 执行命令:val lines = sc.textFile("/home/test.txt") (2)按空格拆分作扁平化映射 执行命令:val words = lines.flatMap(_.split(" ")) (3)将单词数组映射成二元组数组 执行命令:val tuplewords = words.map((_, 1)) (4)将二元组数组按键归约 执行命令:val wordcount = tuplewords.reduceByKey(_ + _) (5)将词频统计结果按次数降序排列 执行命令:val sortwordcount = wordcount.sortBy(_._2, false) 2、一步搞定词频统计 执行命令:sc.textFile("/home/test.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _).sortBy(_._2, false).collect.foreach(println) (二)Python版 1、分步完成词频统计 (1)基于文本文件创建RDD 执行命令:lines = sc.textFile("/home/test.txt") (2)按空格拆分作扁平化映射 执行命令:words = lines.flatMap(lambda line : line.split(' ')) (3)将单词数组映射成二元组数组 执行命令:tuplewords = words.map(lambda word : (word, 1)) (4)将二元组数组按键归约 执行命令:wordcount = tuplewords.reduceByKey(lambda a, b : a + b) (5)将词频统计结果按次数降序排列

【Redis】Could not connect to Redis at 127.0.0.1:6379: Connection refused not connected报错解决方案

【Redis】Could not connect to Redis at 127.0.0.1:6379: Connection refused not connected报错解决方案 大家好 我是寸铁👊 总结了一篇【redis】MISCONF Redis is configured to save RDB snapshots报错解决方案✨ 喜欢的小伙伴可以点点关注 💝 前言 今天在登录redis时,发现报错信息如下: 具体如下: Could not connect to Redis at 127.0.0.1:6379: Connection refused not connected 解决方案 这通常是因为redis的服务端没有开启。 输入下面的命令,后台启动即可: nohup ./redis-server > /dev/null 2>&1 & 命令解读 这条命令是在 Linux/Unix 系统中常用的一种启动Redis服务器的方式,主要作用是启动Redis服务器,并将其输出重定向到 /dev/null,以便在后台运行,并且不产生任何输出到终端。具体解释如下: nohup: nohup 是一个命令,用于在后台运行命令,即使当前终端会话结束后,也能保持命令的运行。它会将命令的输出重定向到一个文件,默认是 nohup.out,但是在这个命令中,输出被重定向到 /dev/null,表示将输出丢弃。 ./redis-server: ./redis-server 是启动 Redis 服务器的命令,./ 表示在当前目录下查找 redis-server 可执行文件。 /dev/null: > 是重定向符号,表示将命令的标准输出重定向到指定文件或设备。/dev/null 是一个特殊的设备文件,表示空设备,将输出重定向到这里相当于将输出丢弃。 2>&1: 2 表示标准错误输出(stderr),1 表示标准输出(stdout),>& 表示将输出重定向到另一个文件描述符。2>&1 表示将标准错误输出重定向到标准输出,这样可以确保错误信息也被重定向到 /dev/null,避免在终端显示。

Python如何求平均值?

求平均值是计算机编程语言中最基本的操作之一。作为一门高级的编程语言,Python提供了多种方法来求平均值,那么Python如何求平均值?可以使用Python内置函数、Numpy库等,接下来是具体内容介绍。 1、使用Python内置函数 最简单的方法就是使用Python内置的函数mean(),这个函数是statistics模块中的一部分,它可以计算一个序列的算术平均值。例如: import statistics seq=[1,2,3,4,5] avg=statistics.mean(seq) print(avg) 执行结果是3.0 2、使用Numpy库 除了Python自带的函数,我们还可以使用第三方库Numpy来计算平均值。Nmupy是Python中专门用于科学计算的库,它包括了各种各样的数学函数,可以快速地进行数值计算。下面是使用Numpy计算平均值的示例代码: import numpy as np seq=[1,2,3,4] avg=np.mean(seq) print(avg) 执行结果是3.0 3、手动计算平均值 除了使用函数和库,我们还可以手动计算平均值。手动计算的好处是可以更好地理解平均值的计算方法。计算平均值的公式是所有数据之和除以数据的个数。下面是手动计算平均值的示例代码: seq=[1,2,3,4,5] sum=0 for i in seq: sum+=i count=len(seq) avg=sum/count print(avg) 执行结果是3.0

利用免费的开源AI引擎:打造企业级文档合规性智能审查平台

合同、法律文件、文档管理是企业和机构运营中不可或缺的一部分。随着文档数量的不断增加,传统的人工文档审查方式已经无法满足高效率和高质量的要求。文档合规性智能审查平台应运而生,它利用图像识别、自然语言处理等前沿技术,为文档审查工作带来了革命性的改变。本文将详细介绍该平台的核心功能、优势特点以及应用场景,展现其在提升文档管理效率与质量方面的关键作用。 开源项目介绍(可本地部署,支持国产化) 思通数科研发了一款多模态AI能力引擎,专注于提供自然语言处理(NLP)、情感分析、实体识别、图像识别与分类、OCR识别和语音识别等接口服务。该平台功能强大,支持本地化部署,并鼓励用户体验和开发者共同完善,以实现开源共享。 ​​ 开源项目地址 AI多模态能力平台: 免费的自然语言处理、情感分析、实体识别、图像识别与分类、OCR识别、语音识别接口,功能强大,欢迎体验。https://gitee.com/stonedtx/free-nlp-apihttps://gitee.com/stonedtx/free-nlp-apihttps://gitee.com/stonedtx/free-nlp-api 在线体验地址 微信扫码登录,立刻体验 语音视频&文本图片多模态AI能力引擎平台https://nlp.stonedt.com/https://nlp.stonedt.com/https://nlp.stonedt.com/ 核心功能:智能化审查,精准高效 文档合规性智能审查平台的核心功能包括文档信息提取、智能自动审查、签字盖章自动识别和审查规则库等。 文档信息提取 平台应用非结构化文档解析引擎,能够高效提取PDF、Word、表格、图片等各式文档中的关键信息,如项目建议书、估算书中的编制时间、投资金额等,并比对这些数据的完整性和准确性。 智能自动审查 平台根据可配置的审查项,自动审查文档中的合规性、完整性、一致性问题,并支持导出审查报告。这为项目评审、档案审计等工作提供了强有力的辅助支撑。 签字盖章自动识别 基于OCR识别算法,平台能够分析封面签字页中的签字、盖章是否正确、完整,有效避免了签字、盖章的遗漏、模糊不清等问题。 审查规则库 平台内置了百余项文档常用审查规则,开箱即用。同时,支持规则库的可视化配置,满足了不同场景下的资料审查需求。 优势特点:审查能力强,AI技术领先 文档合规性智能审查平台的优势特点主要体现在审查能力和AI技术上。平台内置的百余项规则能够快速检查出文档中的完整性、一致性、合规性问题,如封面无盖章、金额不正确、命名不规范等。此外,平台的AI技术在行业中处于领先地位,易于集成,能够广泛应用于不同行业和场景。 应用场景:项目档案审查与数字化转型 文档合规性智能审查平台在项目档案审查和数字化转型全案咨询等领域发挥着重要作用。 项目档案审查 平台能够自动校验固化常见档案核查规则,对项目过程中的电子文件进行前置检验,实现文件上传过程中的格式规范性校验和要素合规性检查。这不仅提升了对项目档案的规范化管理水平,还有效规避了审计风险。 数字化转型全案咨询 文档合规性智能审查平台提供前瞻性的数字化规划及高效落地工具,助力企业和机构实现数字化转型,提升整体运营效率和竞争力。

【每日一问】IOS手机上Charles证书过期怎么办?

1、如何查看证书是否过期? 设置>通用>VPN与设备管理 2、在Charles中重置证书 步骤1:重置证书 Help>SSL Proxying>Reset Charles Root Certificate… 步骤2:在浏览器中,下载证书 首先,手机连上代理,然后在浏览器中输入网址:chls.pro/ssl 下载新的证书 步骤3:安装证书 在 设置>通用>VPN与设备管理中,安装证书 步骤4:在证书信任设置中,信任该证书 路径: 设置>通用>关于手机>证书信任设置 步骤5:设置代理域名

【PostgreSQL】已解决Spring Boot中Mybatis模糊查询时出现 could not determine data type of parameter $1

问题 ### Error querying database. Cause: org.postgresql.util.PSQLException: ERROR: could not determine data type of parameter $1 ### The error may exist in class path resource [mapper/bladexsql/BladexsqlMapper.xml] ### The error may involve defaultParameterMap ### The error occurred while setting parameters ### SQL: SELECT * FROM blade_user WHERE role_id LIKE concat('%', ?, '%') ### Cause: org.postgresql.util.PSQLException: ERROR: could not determine data type of parameter $1 ; bad SQL grammar []; nested exception is org.