Python酷库之旅-第三方库Pandas(010)

目录 一、用法精讲 22、pandas.read_hdf函数 22-1、语法 22-2、参数 22-3、功能 22-4、返回值 22-5、说明 22-6、用法 22-6-1、数据准备 22-6-2、代码示例 22-6-3、结果输出 23、pandas.HDFStore.put方法 23-1、语法 23-2、参数 23-3、功能 23-4、返回值 23-5、说明 23-6、用法 23-6-1、数据准备 23-6-2、代码示例 23-6-3、结果输出 24、pandas.HDFStore.append方法 24-1、语法 24-2、参数 24-3、功能 24-4、返回值 24-5、说明 24-6、用法 24-6-1、数据准备 24-6-2、代码示例 24-6-3、结果输出 二、推荐阅读 1、Python筑基之旅 2、Python函数之旅 3、Python算法之旅 4、Python魔法之旅 5、博客个人主页 一、用法精讲 22、pandas.read_hdf函数 22-1、语法 # 22、pandas.read_hdf函数 pandas.read_hdf(path_or_buf, key=None, mode='r', errors='strict', where=None, start=None, stop=None, columns=None, iterator=False, chunksize=None, **kwargs) Read from the store, close it if we opened it. Retrieve pandas object stored in file, optionally based on where criteria.

【C++】AVL树(旋转、平衡因子)

🌈个人主页:秦jh_-CSDN博客 🔥 系列专栏:https://blog.csdn.net/qinjh_/category_12575764.html?spm=1001.2014.3001.5482 ​ 目录 前言 AVL树的概念 节点 插入 AVL树的旋转 新节点插入较高左子树的左侧---左左:右单旋 新节点插入较高右子树的右侧---右右:左单旋 新节点插入较高左子树的右侧---左右:先左单旋再右单旋 新节点插入较高右子树的左侧---右左:先右单旋再左单旋 AVL树的验证 AVL树的性能 完整代码 前言 💬 hello! 各位铁子们大家好哇。 今日更新了AVL树的相关内容 🎉 欢迎大家关注🔍点赞👍收藏⭐️留言📝 AVL树的概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查 找元素相当于在顺序表中搜索元素,效率低下。 解决方案:当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高度,从而减少平均搜索长度。 它的左右子树都是AVL树左右子树高度之差(简称平衡因子)的绝对值不超过1(-1/0/1) 如果一棵二叉搜索树是高度平衡的,它就是AVL树。 插入的总体原则: 按照搜索树规则插入更新插入节点的祖先节点的平衡因子。 如果插入在父亲左边,父亲的平衡因子--。如果插入在父亲右边,父亲的平衡因子++。父亲平衡因子==0,则父亲所在子树高度不变,不再继续往上更新,插入结束。父亲平衡因子==1or-1,父亲所在子树高度变了,继续往上更新。父亲平衡因子==2or-2,父亲所在子树已经不平衡了,需要旋转处理。 节点 插入 bool Insert(const pair<K, V>& kv) { if (_root == nullptr) { _root = new Node(kv); return true; } Node* cur = _root; Node* parent = nullptr; while (cur) { if (cur->_kv.first < kv.first) { parent = cur; cur = cur->_right; } else if (cur->_kv.

2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片(Form_Vision部分代码)

2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片(Form_Vision部分代码) 1 目标效果视频 CamManager 2 增加一个class IMG_BUFFER 用来管理采集的图片 // <summary> /// IMG_BUFFER 用来管理内存图片的抓取队列 /// </summary> public class IMG_BUFFER { public List<Mat> list_imgs_acq; private object mutex; private int max_count = 3; public IMG_BUFFER() { list_imgs_acq = new List<Mat>(); mutex = new object(); } /// <summary> /// 图片入栈 /// </summary> /// <param name="himg_acq"></param> /// <returns></returns> public int Add(Mat himg_acq) { int nRet = 0; if (list_imgs_acq.Count >= max_count) return -1; lock(mutex) { list_imgs_acq.

人脸检测(Python)

目录 环境: 初始化摄像头: 初始化FaceDetector对象: 获取摄像头帧: 获取数据: 绘制数据: 显示图像: 完整代码: 环境: cvzone库:cvzone是一个基于OpenCV的计算机视觉库,它提供了一些方便的功能和工具,用于图像处理、人脸检测、手势识别等应用。cvzone库是由Murtaza Hassan开发的,目前支持Python语言。 cv2库:cv2是OpenCV(Open Source Computer Vision Library)的Python接口库,它是一种广泛使用的计算机视觉和图像处理库。cv2提供了丰富的函数和工具,用于处理图像、视频、进行特征检测、图像变换等各种计算机视觉任务。 可以通过清华镜像源安装 初始化摄像头: cap = cv2.VideoCapture(0) # 通常 '0' 指的是内置摄像头 cap.set(3,1280) #设置摄像头的分辨率为 1280x720 cap.set(4,720) 初始化FaceDetector对象: FaceDetector是一个基于OpenCV的库,它提供了一个简单而强大的人脸检测器。它使用了OpenCV的级联分类器(Cascade Classifier)来检测人脸,并提供了方便易用的接口。FaceDetector可以在静态图像或实时视频中检测出人脸,并返回每个检测到的人脸的位置和边界框。它还可以根据需要进行参数调整,以适应不同场景和要求。FaceDetector在诸如人脸识别、人脸跟踪、表情检测等应用中非常有用。 detector = FaceDetector(minDetectionCon=0.5, modelSelection=1) # modelSelection: 0 表示短距离检测(2米),1 表示长距离检测(5米) 获取摄像头帧: # success: 布尔值,表示是否成功捕获了帧 # img: 捕获的帧 success, img = cap.read() # 从摄像头读取当前帧 # 在图像中检测人脸 # img: 更新后的图像 # bboxs: 检测到的人脸边界框列表 img, bboxs = detector.findFaces(img, draw=False) #在图像中检测人脸,并返回更新后的图像和人脸边界框列表 获取数据: # ---- 获取数据 ---- # center = bbox["

AI | 基于 MaxKB+Ollama+Llama3 手把手从0-1构建本地私有化知识库

前言 随着人工智能技术的快速发展-大型语言模型(LLM),如 OpenAI 的 GPT 系列,已成为众多企业和个人关注的焦点,而 Ollama 作为一款开源的大型语言模型服务工具,正逐渐受到开发者和研究人员的关注,本文将探讨基于 MaxKB+Ollama +Llama3 如何快速零成本构建本地私有化 AI 知识库! 安装 Ollama Ollama 作为一款开源的大型语言模型服务工具,凭借其开源性、大规模和可定制性等特点,在人工智能领域展现出了巨大的潜力。通过高效性、灵活性和社区支持等优势,Ollama 在NLP、机器翻译和文本生成等领域得到了广泛应用。 下载&安装 Ollama 对应版本,根据操作系统任选其一即可。 运行 Llama3 输入命令,运行:To run and chat with Llama3. ollama run llama3 上述命令,默认下载的就是: 安装 MaxKB MaxKB 是一款基于 LLM(Large Language Model)大语言模型-知识库问答系统(Max Knowledge Base) 在 MaxKB 中接入 Ollama 的 LLM 模型,可以快速部署本地知识库问答系统~ docker run -d --name=maxkb -p 8080:8080 -v ~/.maxkb:/var/lib/postgresql/data 1panel/maxkb 拉取镜像,待其镜像下载完成后, 我们可以查看其镜像相关信息, 界面可视化-启/停构建的镜像服务。 首先,打开 MaxKB 界面 UI: http://127.0.0.1:8080/ui/login#/ 初始账号: admin``初始密码: MaxKB@123.. 登录成功之后,更新密码:

【clickhouse】clickhouse入门学习之环境搭建-windows下安装ClickHouse教程(详细版)

clickhouse入门学习之环境搭建-windows下安装ClickHouse教程(详细版) 文章目录 clickhouse入门学习之环境搭建-windows下安装ClickHouse教程(详细版)一、启用虚拟化二、启用Hyper-v1.按住键盘Win+R,输入control2.选择程序3.选择启动和关闭Windows功能4.勾选Hyper-v 三、安装WSL1.win+R,输入cmd,按回车键2.终端中输入命令wsl,启动即可3.不用时,减少内存占用,关闭wsl 四、docker下载1.docker安装包下载2.docker安装3.重启电脑后打开docker Desktop又出现下图报错4.说明系统的WSL版本太旧,需要更新5.win+R,输入cmd回车,输入docker --version检测docker安装的版本,出现如下图说明已经安装docker。6.继续输入docker run hello-world,出现下图说明docker安装成功,且可以执行docker命令。7.打开桌面上的docker Desktop,就不会报错,如下图 五、docker配置1.打开Docker配置中心:任务栏小鲸鱼右键 -> Settings2.配置Docker国内镜像加速下载:"https://pi9dpp60.mirror.aliyuncs.com",左侧菜单 Docker Engine -> 右侧输入框 -> Apply & Restart 六、clickhouse安装1.拉取镜像2.运行临时容器temp-clickhouse-server,Windows控制台继续执行命令3.config配置和users配置映射Windows硬盘目录4.修改监听5.销毁临时容器6.运行ClickHouse服务 七、测试是否安装成功1.进入docker中的clickhouse bash,运行sql (Win+R -> 输入cmd -> 回车)2.登录命令补充说明3.涉及到的常用命令 八、测试连接IDEA进行测试连接 一、启用虚拟化 打开任务管理器(CTRL+Shift+Esc), 选择性能,查看CPU虚拟化,确认是否已启用(一般是启用的)。 二、启用Hyper-v 1.按住键盘Win+R,输入control 2.选择程序 3.选择启动和关闭Windows功能 4.勾选Hyper-v 三、安装WSL 1.win+R,输入cmd,按回车键 2.终端中输入命令wsl,启动即可 wsl 3.不用时,减少内存占用,关闭wsl wsl --shutdown 四、docker下载 1.docker安装包下载 方式一: 网盘下载链接: https://pan.quark.cn/s/eba4fa833a15 方式二: 阿里云的下载地址: https://mirrors.aliyun.com/docker-toolbox/windows/docker-for-windows/ 2.docker安装 将下载下来的Docker Desktop Installer.exe文件双击进行安装即可,安装完成后,任务栏会出现一个蓝色的小鲸鱼图标(注意安装完成后可能会重启系统) 3.重启电脑后打开docker Desktop又出现下图报错 4.说明系统的WSL版本太旧,需要更新 win+R,输入cmd,按回车键,在终端中输入下述代码等待更新即可。 wsl --update 如果wsl --update命令执行失败,说明电脑安装的wsl有问题,请按以下教程完成WSL/WSL2的安装,WSL2安装说明如下 参考官网安装教程链接如下: https://learn.microsoft.com/zh-cn/windows/wsl/install-manual 详细说明: 1、执行《旧版 WSL 的手动安装步骤》步骤1-5

搭建纯净的SpringBoot工程

pom文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- SpringBoot --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.3.RELEASE</version> </parent> <groupId>com.demo.springboot</groupId> <artifactId>springboot-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <!-- <packaging>pom</packaging>--> <!-- <packaging>war</packaging>--> <name>${artifactId}</name> <description>springboot工程</description> <!-- 属性 --> <properties> <java.version>1.8</java.version> </properties> <dependencies> <!-- SpringBoot Web模块 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> </project> 配置文件 可自行选择properties或者yml # 服务端口 server.port=8080 # 服务端口 server: port: 8080 启动类 package com.demo.springboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootDemoApplication { public static void main(String[] args) { SpringApplication.

【QT】多元素控件

多元素控件 多元素控件1. List Widget2. Table Widget3. Tree Widget 多元素控件 Qt 中提供的多元素控件有: QListWidgetQListViewQTableWidgetQTableViewQTreeWidgetQTreeView xxWidget 和 xxView 之间的区别,以 QTableWidget 和 QTableView 为例: QTableView 是基于 MVC 设计的控件. QTableView ⾃⾝不持有数据. 使⽤ QTableView 的时候需要⽤⼾创建⼀个 Model 对象 (⽐如 QStandardModel ), 并且把 Model 和 QTableView 关联起来. 后续修改 Model 中的数据就会影响 QTableView 的显⽰; 修改 QTableView 的显⽰也会影响到 Model 中的数据(双向绑定).QTableWidget 则是 QTableView 的⼦类, 对 Model 进⾏了封装. 不需要用户手动创建 Model 对象, 直接就可以往 QTableWidget 中添加数据了. 1. List Widget 使用 QListWidget 能够显示⼀个纵向的列表. 形如: 核心属性:

Oracle-查询表空间使用率很慢

近期发现,因数据库监控指标采集比较频繁,甚至触发等待。 解决方案如下: 1、调整采集周期。现行的10S采集频率太高。 2、优化表空间查询语句。 3、考虑回收站原因: 3.1:查询回收站大小: SYS@evansdb2> SELECT count(*) FROM dba_recyclebin; COUNT(*) ---------- 127 SYS@evansdb2> SELECT value FROM v$parameter WHERE name = 'recyclebin'; VALUE --------------- OFF 3.3:清空全库回收站 SYS@evansdb2> purge DBA_RECYCLEBIN; DBA Recyclebin purged. 3.4 再次查询回收站大小: SYS@evansdb2> SELECT count(*) FROM dba_recyclebin; COUNT(*) ---------- 0 3.5 再次查询回收站大小: SYS@evansdb2> SELECT count(*) FROM dba_recyclebin; COUNT(*) ---------- 0 3.6 收集统计信息: SYS@evansdb2> exec dbms_stats.gather_table_stats(ownname => 'SYS',tabname => 'RECYCLEBIN$', estimate_percent => 100, method_opt=> 'for all indexed columns',degree=>8);

ios的info.plist 配置

网络相关 在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> 应用名称 CFBundleDisplayName <key>CFBundleDisplayName</key> <string>SW</string> 权限设置 相机: <key>NSCameraUsageDescription</key> <string>SW wants to use your camera to take pictures for uploading images</string> 相册: <key>NSPhotoLibraryUsageDescription</key> <string>SW wants to access your albums to upload images</string> 通信录: <key>NSContactsUsageDescription</key> <string>用于推荐好友关系发现朋友</string> 麦克风: <key>NSMicrophoneUsageDescription</key> <string>App 想使用你的麦克风允许吗?</string> 写入相册 NSPhotoLibraryAddUsageDescription 的用途: 保存图片或视频:应用可能需要保存用户拍摄或编辑的图片或视频到相册,例如相机应用、图片编辑器或社交媒体应用。导出内容:应用可能需要将生成的内容,如拼图、滤镜效果或合成图像,保存到相册供用户分享或备份。备份数据:一些应用可能提供数据备份功能,将用户的个人数据(如家庭照片、重要文档的扫描件)保存到相册中。 <key>NSPhotoLibraryAddUsageDescription</key> <string>我们需要将您创建的内容保存到您的相册。</string> Flutter IOS权限申请_flutter nslocalnetworkusagedescription 权限如何申请-CSDN博客

【uniapp-ios】App端与webview端相互通信的方法以及注意事项

前言 在开发中,使用uniapp开发的项目开发效率是极高的,使用一套代码就能够同时在多端上线,像笔者之前写过的使用Flutter端和webview端之间的相互通信方法和问题,这种方式本质上实际上是h5和h5之间的通信,网上有非常多的方案,最简单的就是使用postMessage和addEventListener的方式,这个在我之前的文章有讲解,这里不再赘述。 那么今天的问题,是使用uniapp开发的App端和H5端(webview)之间的通信问题。 注意前提,是使用uniapp同时去开发app端和h5端。 问题 uniapp本质开发的app实际上还是web,那么能不能用postMessage的方式呢? 答案当然是可以的,但是你要区分情况,仔细看看官方文档: 平台差异说明:App-nvue,是App-nvue的方法,这是个坑!!! 所以,这个时候就需要去区分情况了,你使用的是vue写的webview还是nvue写的webview。 vue类型的webview <web-view :src="src" ref="webview" :fullscreen="false" @message="receiveData"></web-view> app传递数据给h5 本质:h5在webview环境中提取放入一个函数,app调用该函数传递数据进去。 h5端接收:可以在app.vue的onLaunch阶段 window.msgFromUniapp = (res) =>{ console.log("原生传递过来的数据:",res) } app端发送: methods: { //给webview传递数据 postMess(msg) { const currentWebview = this.$scope.$getAppWebview(); const wv = currentWebview.children()[0]; wv.evalJS(`msgFromUniapp('${JSON.stringify(msg)}')`) } }, onLoad(item) { this.src = decodeURIComponent(item.url) // 传入需要跳转的链接 使用web-view标签进行跳转 this.title = item.title // #ifdef APP-PLUS const currentWebview = this.$scope.$getAppWebview(); const that = this setTimeout(function() { let wv = currentWebview.children()[0]; that.

2024年最新ComfyUI汉化及manager插件安装详解!

前言 在ComfyUI文生图详解中,学习过如果想要安装相应的模型,需要到模型资源网站(抱抱脸、C站、魔塔、哩布等)下载想要的模型,手动安装到ComfyUI安装目录下对应的目录中。 为了简化这个流程,我们需要安装ComfyUI-manager插件,通过这个插件就可以方便快捷安装想要的其他插件或者模型。 ComfyUI Manager ComfyUI manager 是一个用来加强ComfyUI可用性的扩展,提供了对ComfyUI各种自定义节点的安装、删除、禁用、启用等管理功能。 同时还提供了中心功能和便利功能,用来访问ComfyUI中各种信息。 界面如下图: ComfyUI Manager安装 转到ComfyUI的安装目录ComfyUI/custom_nodes;使用git拉取ComfyUI Manager,git clone https://github.com/ltdrdata/ComfyUI-Manager.git;重启ComfyUI即可。 安装前后的对比如图: 汉化插件安装 ComfyUI Manager安装好之后,就可以通过ComfyUI Manager来直接安装汉化插件,不然需要手动下载汉化包到ComfyUI/custom_nodes目录下。 打开ComfyUI Manager,点击Custom Nodes Manager。 在搜索框中输入translation, 安装第一个即可。 安装好之后要重启ComfyUI,然后点击设置,在翻译语言栏选择中文即可。 重新加载后,界面如图: 第三方插件 ComfyUI_Custom_Nodes_AlekPet 提供了提示词的翻译功能。有了这个插件,再也不用使用第三方翻译软件翻译提示词后,再粘贴到CLIP文本编码器中了。 同时提供的PoseNode、PainterNode两个节点可以编辑和绘画姿态,实现所画即所得。 ComfyUI-Custom-Scripts 给模型分类,更加便捷的调用模型针对输入自动补齐,信息的索引更丰富的功能设定页面 ComfyUI-Advanced-ControlNet ControlNet插件,使用线稿、姿态、深度、IP等控制数据和响应的ControlNet 模型控制图片的生成,Stable Diffusion 必备。 comfyui_controlnet_aux ControlNet的预处理器,用于从参考图片中提取线稿、姿态、深度、IP等控制数据。 ComfyUI_IPAdapter_plus 用于图像到图像调节的非常强大的模型。图像的主题甚至风格都可以迁移到所生成的图像中。 地址:https://github.com/cubiq/ComfyUI_IPAdapter_plus 网上有很多强大且有趣的插件,等待你去发现。 为了帮助大家更好地掌握 ComfyUI,我在去年花了几个月的时间,撰写并录制了一套ComfyUI的基础教程,共六篇。这套教程详细介绍了选择ComfyUI的理由、其优缺点、下载安装方法、模型与插件的安装、工作流节点和底层逻辑详解、遮罩修改重绘/Inpenting模块以及SDXL工作流手把手搭建。 由于篇幅原因,本文精选几个章节,详细版点击下方卡片免费领取 一、ComfyUI配置指南 报错指南环境配置脚本更新后记… 二、ComfyUI基础入门 软件安装篇插件安装篇… 三、 ComfyUI工作流节点/底层逻辑详解 ComfyUI 基础概念理解Stable diffusion 工作原理工作流底层逻辑必备插件补全… 四、ComfyUI节点技巧进阶/多模型串联 节点进阶详解提词技巧精通多模型节点串联… 五、ComfyUI遮罩修改重绘/Inpenting模块详解 图像分辨率姿势… 六、ComfyUI超实用SDXL工作流手把手搭建 Refined模型SDXL风格化提示词SDXL工作流搭建… 由于篇幅原因,本文精选几个章节,详细版点击下方卡片免费领取

14-47 剑和诗人21 - 2024年如何打造AI创业公司

​​​​​ 2024 年,随着人工智能继续快速发展并融入几乎所有行业,创建一家人工智能初创公司将带来巨大的机遇。然而,在吸引资金、招聘人才、开发专有技术以及将产品推向市场方面,人工智能初创公司也面临着相当大的挑战。 让我来概述一下 2024 年的 AI 初创企业生态系统、需要考虑的顶级商业模式和技术堆栈、从早期原型到资助扩大规模的阶段性发展,以及应对常见初创企业挑战的技巧: 2024 年的人工智能初创企业生态系统 到 2024 年底,全球人工智能市场价值预计将达到 1 万亿以上。我们已经看到人工智能转型在医疗、金融、交通、制造、零售等所有主要行业中扎根。人工智能的日益普及推动了对能够将人工智能从研究转化为实践的人工智能初创公司的巨大需求。 随着人工智能能力在 2024/2025 年继续快速发展,开创创业机会的一些主要驱动因素包括: 更强大、更高效的人工智能模型和架构,如大型语言模型和计算机视觉系统提高人工智能的可解释性和可信度,以提高现实世界的接受度大数据的持续增长为人工智能系统发展提供动力扩大人工智能基础设施、工具和平台的使用范围,降低进入门槛教育和培训计划推动人工智能研究人员、数据科学家和机器学习工程师的人才库不断增长企业和风险投资对人工智能初创企业的投资连年创下新高 这些因素结合在一起,为新兴人工智能初创企业在各个领域的涌现创造了完美的环境。 大小和规模分类 2024 年的人工智能初创企业按规模大致可分为四大类: 1. 个人创始人和微型创业公司 单人创始人或 2-5 人的小团队自筹资金或早期原型阶段测试想法并努力实现产品与市场的契合几乎没有收入,仍在验证商业模式常见结构:独资企业、单一成员有限责任公司、合伙企业易于设置并可在小规模内快速迭代 2. 自力更生的初创企业 创始团队由 2 至 10 人组成通过客户工作、咨询工作等自筹资金可能获得低于 50 万美元的早期天使投资在寻找产品与市场契合度方面取得进展年收入高达 100 万美元估值低于 6 位数或低于 500 万美元结构:有限责任公司、S 公司、C 公司 3. 风险投资支持的扩张型企业 创始团队规模较大,有 10 至 30 名以上员工获得风险投资公司充足的资金支持,已筹集超过 100 万美元先进的原型或已发布的平台强有力的产品市场验证年经常性收入增长率超过 30%8 至 9 位数的估值为 A/B 轮融资后的高速增长做好准备结构:具有股权结构表和投资者权利的 C 类公司 4. 人工智能独角兽 通过 IPO 或收购退出风险投资的大型企业精英团队通常拥有 100–1000 多名员工 *领先的工程和商业人才跨国经营估值 7.

阿里云 Ubuntu 开启允许 ssh 密码方式登录

以前用的 centos,重置系统为 ubuntu 后在ssh 远程连接时遇到了点问题: 在阿里云控制台重置实例密码后无法使用密码进行 SSH 连接登录 原因:阿里云 Ubuntu 默认禁用密码登录方式 解决办法: 先使用其他用户登录到服务器 这里进来是 admin 普通用户权限 修改配置文件: vi /etc/ssh/sshd_config 滑到最下面 按 i 进入插入模式: 将 PasswordAuthentication no 改为 PasswordAuthentication yes wq 保存退出 淦,估计是权限不够 先提权到 root 用户: 再次进行上述操作,修改配置文件允许使用密码登录,是没有问题的,可以保存。 之后重启 ssh 服务: systemctl restart sshd 使用一开始我们重置的 root 密码进行 ssh 登录 登录成功! 

Java中几种常见的四舍五入方法

在Java中,四舍五入到特定的小数位数是一个常见的需求,可以通过多种方式实现。以下是几种常见的四舍五入方法及其代码示例: 1. 使用Math.round()方法 Math.round()方法可以将浮点数四舍五入到最接近的整数。如果你需要四舍五入到特定的小数位数,可以先将数字乘以10的n次方(n为你想要保留的小数位数),然后使用Math.round()进行四舍五入,最后再除以10的n次方得到结果。 public class RoundExample { public static void main(String[] args) { double num = 3.14159; int decimalPlaces = 2; // 保留两位小数 double roundedNum = Math.round(num * Math.pow(10, decimalPlaces)) / Math.pow(10, decimalPlaces); System.out.println(roundedNum); // 输出 3.14 } } 2. 使用BigDecimal类 BigDecimal类提供了更精确的浮点数运算能力,包括四舍五入。它的setScale()方法可以用来设置小数点后的位数,并可以通过第二个参数指定舍入模式,例如BigDecimal.ROUND_HALF_UP代表四舍五入。 import java.math.BigDecimal; import java.math.RoundingMode; public class BigDecimalRoundExample { public static void main(String[] args) { BigDecimal num = new BigDecimal("3.14159"); int decimalPlaces = 2; // 保留两位小数 BigDecimal roundedNum = num.

【爱上C++】vector用法详解

文章目录 一:vector简介二:vector的创建和初始化三:vector的遍历1.[]+下标2.at()3.迭代器遍历4.范围for 四:vector的空间1.size2.max_size3.capacity4.reserve5.resize6.empty 五:vector的增删查改1.push_back2.pop_back3.find4.insert5.erase6.swap7.assign Hello~同学们好,本文将深入探讨 C++ 中的 vector 容器,作为标准模板库(STL)中最常用的动态数组之一,vector 提供了灵活的元素存储和高效的访问方法。我们将从基础知识入手,逐步学习其创建、初始化、遍历、空间管理以及增删查改等操作。通过详细的示例和解析,希望能够帮助读者全面理解和掌握 vector 的使用技巧和注意事项。 一:vector简介 vector文档 vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。就时间而言,这是一个相对代价高的任务,因为每当一个新的元素加入到容器的时候,vector并不会每次都重新分配大小。vector分配空间策略:vector会分配一些额外的空间以适应可能的增长,因为存储空间比实际需要的存储空间更大。不同的库采用不同的策略权衡空间的使用和重新分配。但是无论如何,重新分配都应该是对数增长的间隔大小,以至于在末尾插入一个元素的时候是在常数时间的复杂度完成的。因此,vector占用了更多的存储空间,为了获得管理存储空间的能力,并且以一种有效的方式动态增长。与其它动态序列容器相比(deque, list and forward_list), vector在访问元素的时候更加高效,在末尾添加和删除元素相对高效。对于其它不在末尾的删除和插入操作,效率更低。比起list和forward_list统一的迭代器和引用更好。 使用STL的三个境界:能用,明理,能扩展 ,那么下面学习vector,我们也是按照这个方法去学习 二:vector的创建和初始化 要包头文件#include<vector> // 默认构造函数,创建一个空的 vector vector<int> v1; // 创建一个包含 4 个默认初始化元素(值为 0)的 vector vector<int> v2(4); // 创建一个包含 4 个元素,每个元素初始化为 10 的 vector vector<int> v3(4, 10); // 使用迭代器范围(v3 的起始和结束迭代器)初始化 vector,v4 将包含 v3 的所有元素 vector<int> v4(v3.begin(), v3.end()); // 拷贝构造函数,创建一个 v2 的副本 vector<int> v5(v2); // 使用初始化列表创建 vector,v6 将包含 1, 2, 3, 4, 5, 6, 7 这些元素 vector<int> v6 = {1, 2, 3, 4, 5, 6, 7}; // 使用 std::string 初始化 string s1("

XML标记语言简介

XML标记语言简介 XML(eXtensible Markup Language,可扩展标记语言)是一种标记语言,设计用于存储和传输数据。它通过标签结构来描述数据,并且标签是自定义的,这使得 XML 非常灵活。以下是对 XML 及其用途、好处和应用场景的详细介绍: 什么是 XML XML 是一种文本格式,用于表示结构化信息。其设计目标是可读性好、易于理解和扩展。XML 文档的基本结构如下: <root> <element attribute="value">Content</element> </root> XML 的用途 数据存储:XML 常用于数据存储,可以将数据保存在文件中或通过网络传输。数据交换:在不同系统之间传输数据时,XML 是一种常见的数据交换格式。配置文件:许多应用程序使用 XML 来存储配置信息。文档格式:例如,Microsoft Office 和 OpenOffice 使用 XML 格式存储文档。网络协议:许多网络协议(如 SOAP)使用 XML 作为消息格式。 XML 的好处 自描述性:XML 文档中包含标签和数据,使得数据结构清晰明了。平台独立性:XML 是纯文本格式,可以在不同的操作系统和平台之间传输和处理。可扩展性:XML 标签是自定义的,可以根据需要添加新的标签和属性。标准化:XML 由 W3C 标准化,具有广泛的支持和兼容性。易于解析:许多编程语言都有内置或第三方库来解析 XML 数据。 使用 XML 的场景和环境 跨平台数据交换:在不同平台或编程语言之间传输数据时,XML 提供了一种通用的数据格式。Web 服务:XML 经常用于 Web 服务和远程过程调用(RPC)中,例如 SOAP 协议。配置管理:应用程序和服务器通常使用 XML 文件来存储配置参数。文档格式:办公软件、出版系统和电子书格式使用 XML 来描述文档结构和内容。数据备份和迁移:XML 是一种方便的数据备份和迁移格式,因其易于解析和转换。 示例:数据存储和交换 以下是一个简单的 XML 文件示例,描述了一本书的基本信息: <bookstore> <book> <title lang="en">Learning XML</title> <author>John Doe</author> <year>2024</year> <price>39.

【初阶数据结构】深入解析循环队列:探索底层逻辑

初阶数据结构相关知识点可以通过点击以下链接进行学习一起加油!时间与空间复杂度的深度剖析深入解析顺序表:探索底层逻辑深入解析单链表:探索底层逻辑深入解析带头双向循环链表:探索底层逻辑深入解析栈:探索底层逻辑深入解析队列:探索底层逻辑深入解析循环队列:探索底层逻辑 🔥引言 本篇将介绍如何实现循环队列并实现过程需要注意的事项,虽然篇幅较小,但是其中逻辑还是值得引人思考的,循环队列可以采用数组或链表实现,这篇将采用数组实现循环队列 🌈个人主页:是店小二呀 🌈C语言笔记专栏:C语言笔记 🌈C++笔记专栏: C++笔记 🌈初阶数据结构笔记专栏: 初阶数据结构笔记 🌈喜欢的诗句:无人扶我青云志 我自踏雪至山巅 文章目录 一、循环队列的概念二、实现循环队列的知识铺垫(核心实现逻辑)2.1 队列满足什么条件为空2.2 解决何时为空何时为满的方案2.3 小总结2.4 循环队列中如何保证闭环2.5 计算循环队列的数据个数 三、实现循环队列相关步骤3.1 循环队列的搭建3.2 构建器(设置队列长度为 k)3.3 判断循环队列是否为满和空的情况3.4 检查是否能插入数据和删除数据3.5 获得队首元素和队尾元素3.6 循环的销毁 一、循环队列的概念 循环队列是一种用数组实现的队列数据结构,与普通队列不同的是,循环队列允许队列的头尾相接,实现循环利用数组空间。它解决了普通队列在出队操作频繁时需要大量元素迁移的效率问题。循环队列通常通过两个指针来实现:一个指向队列的头部(front),一个指向队列的尾部(rear)。当队列满时,rear 指针可以绕回到数组的起始位置,实现循环存储;当队列为空时,front 和 rear 指针指向同一个位置。 二、实现循环队列的知识铺垫(核心实现逻辑) 2.1 队列满足什么条件为空 当front==back时不一定为空。这里是循环队列,如果出现front= =back时会出现下列两种情况 back通过循环与front相遇,此时front==back,则队列满了一开始back没有移动,back和front在同位置,此时front==back,则队列为空 对此我们无法通过front==back区分开空和满的情况,需要重新定义为空或满的标志 2.2 解决何时为空何时为满的方案 关于front和back初始位置,front指向对头,而由于back指向队尾会很难看,需要手动back置为-1,对此这里back指向队尾的下一个元素(跟栈中top定义问题是类似的) 判断满的两种方案: 增加一个size,当front== back并且size= =0就为空,size!=0就是为满多开一个空间,这样的好处就是back+1==front为满(不要存储数据,这样又回到了不能判断空或满) 2.3 小总结 这里我们选择第二种方案进行实现,对此我们总结下,定义好的方式。 front == back就是为空back + 1 == front就是为满 2.4 循环队列中如何保证闭环 如果遇到循环相关问题,可以考虑取模(解决问题上十分巧妙)。我们想要达到的目的是当back到达空位置时,就是相当于到了头位置。 同时取模中,如果左边小于右边,没有改变。如果左边大于左边,就会删除右边的倍数,直到左边小于右边(这里就是取模的逻辑,如果很难理解,可以通过图来理解下) 这里需要注意的是:这张图我们需要关注的地方back + 1和 head的位置,k +1是空位置,下标为4和0位置重叠处三处。这里size为有效元素个数,这里只多开一个空间并没有算上有效元素,然后k + 1到达空位置,我们想要的结果是我们想要达到的目的是当back到达空位置时,就是相当于到了头位置,这里(obj->back+1)%(obj->size+1)==obj->head;就满足了这种情况,相同数据取模模为0,意味着下标为0 2.5 计算循环队列的数据个数 如果是计算队列的数据个数,通常就是back - front,但是这里是循环队列可能会出现back在front前面的特殊情况。

『C++成长记』string模拟实现

🔥博客主页:小王又困了 📚系列专栏:C++ 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ ​ 目录 一、存储结构 二、默认成员函数 📒2.1构造函数 📒2.2析构函数 📒2.3拷贝构造 📒2.4赋值重载 三、容量操作 📒3.1获取有效字符长度 📒3.2获取对象空间大小 📒3.3使用reserve扩容 四、字符串的遍历 📒4.1下标访问 📒4.2迭代器访问 五、修改操作 📒5.1尾插字符 📒5.2尾插字符串 📒5.3任意位置插入字符 📒5.4任意位置插入字符串 📒5.5+=重载 六、其他操作 📒6.1删除操作 📒6.2查找操作 📒6.3交换操作 📒6.4获取字符串 📒6.5运算符重载 📒6.6清理字符串 📒6.7流操作 🗒️前言: 在上一篇中我们对string类进行了简单的介绍,介绍了各个接口的作用和使用方法,今天我们将为大家介绍string常用接口的模拟实现。 一、存储结构 string本质上是一个char类型的顺序表,所以结构上和顺序表类似。 namespace bit { class string { public: private: char* _str; size_t _size; size_t _capacity; const static size_t npos; }; } 结构上使用命名空间 bit 进行封装,防止与库冲突,其中: _str :指向存放字符串存空间的指针_size :表示当前所存储的有效字符个数_capacity :表示当前可存储的最大容量nops:此值设置为 -1,无符号整型转换就是42亿,且此值为const和静态参数具有全局效应,这个值常常被用来当作循环结束判断条件和查找时未找到的标志,某些函数设置其为缺省参数。 nops的初始化: #include"string.h" namespace bit { const size_t string::nops = -1; } 小Tips:我们使用声明与定义分离实现,nops只能在CPP文件中定义,因为类里面的静态成员变量相当于全局变量,在.

AI集成工具平台一站式体验,零门槛使用国内外主流大模型

目录 0 写在前面1 AI艺术大师1.1 绘画制图1.2 智能作曲 2 AI科研助理2.1 学术搜索2.2 自动代码 3 AI智能对话3.1 聊天机器人3.2 模型竞技场 4 特别福利 0 写在前面 人工智能大模型浪潮滚滚,正推动着千行百业的数智化进程。随着技术演进,2024年被视为是大模型应用落地元年。伴随着大模型与各产业的深度融合,新一代人工智能技术的商业化探索也将继续。302.AI平台正是这样一个得力的AI助手,致力于汇集全球顶级的人工智能解决方案,帮助用户在快速发展的科技时代中保持竞争优势。 302.AI不仅仅是面向小白友好的应用平台,也是面对开发者友好的平台。产品中所使用到的API全部开放给开发者,降低了开发者注册,付费的门槛,简化了开发流程。另外一方面,对于仅仅想使用302.AI的专业客户,也可以使用我们的API和开源工具进行对接,方便快捷。 接下来让我们一起体验一下吧~(文末有福利链接) 1 AI艺术大师 1.1 绘画制图 绘画机器人能够通过自动化技术快速创作高质量的艺术作品和插图。这种技术不仅节省了艺术家和创作者大量的时间和精力,还能够确保作品的一致性和风格。特别是对于自媒体从业者来说,绘画机器人提供了一个高效的工具,帮助他们快速生成吸引眼球的视觉内容,增强内容的吸引力和传播效果。这种自动化的创作方式不仅提升了内容的生产速度,还能够为自媒体创作者带来更多的创作灵感和可能性,推动内容创意的多样化发展。 点击绘画机器人并选择模型,目前302.AI支持最热门的midjourney和SD模型,接着添加机器人即可进入绘图页面 我们用下面这个咒语测试一下midjourney的绘图效果 Spring, microscopic world, vibrant grass, 2 cm tall cute girl with goggles excitedly riding a ladybug, leaves as umbrellas,light rain, cloudy day --ar 1:1 --niji 6 --stylize 750 可以看到画风非常棒 1.2 智能作曲 点击应用机器人,进入应用商店选择suno机器人 接着输入期望的曲风和主题即可创作一首歌,可以看到音乐风格、节奏、乐器等都被很完整地创作出来 点击观看,就可以听到AI创作的歌曲啦 2 AI科研助理 2.1 学术搜索 选择左侧工具超市中的AI学术搜索 试试这个深度求索模型 假如我们希望搜索《大语言模型在自动驾驶规划方面的应用》,直接在检索框输入主题即可