【C++】C++的内存处理 --- 智能指针

只有经历地狱般的磨炼, 才能练出创造天堂的力量 ; 只有流过血的手指, 才能弹出世间的绝唱 。 --- 泰戈尔 --- 开始使用C++智能指针 1 前言2 智能指针2.1 什么是智能指针2.2 C++库中的智能指针2.3 循环指向问题与weak_ptr2.4 自定义删除器 3 手搓shared_ptr3.1 框架搭建3.2 拷贝构造和赋值重载3.3 自定义删除器3.4 功能函数3.4 多线程下的特殊处理 4 内存泄漏Thanks♪(・ω・)ノ谢谢阅读!!!下一篇文章见!!! 1 前言 我们来回顾一下在学习异常机制中遇到的一种问题:在try catch语句中,如果我们开辟了一段空间,但是发生了异常,会直接终止掉函数栈桢,导致内存泄漏问题。所以此时就要在catch语句中进行一个特殊处理。如果我们开辟了多段空间,那么这个操作就会变得更加复杂:假如new失败了,就会直接返回到上层的catch语句,也导致了内存泄漏问题!使用传统是异常机制来解决问题会产生大量冗余的语句 — 大量的try catch嵌套! 为了解决这个问题,可以使用智能指针!可以简单的来进行解决! 2 智能指针 2.1 什么是智能指针 智能指针类似lock_guard,是对指针的封装,可以实现在超出生命周期之后自动销毁的功能! void func() { int* p1 = new int[10]; int* p2 = nullptr; try { p2 = new int[20]; try { double a, b; cin >> a >> b; Division(a, b); } catch (.

后端Spring/SpringBoot框架基础介绍

1.Spring基础介绍 spring官网:https://spring.io/ 官方对spring的描述:使java更快、更容易、更安全,聚焦于速度、简洁和生产力。并且是全世界最流行的Java框架。 Spring如今已经形成开发生态圈,它提供若干个子项目,每个项目用于完成特定的功能。它们都基于最基础的框架也就是Spring Framework。但Spring Framework配置繁琐,入门难度大,因此spring家族推出了大名鼎鼎的Springboot。 2.Springboot基础介绍 Springboot可以快速构建应用程序、简化开发、提高效率。它简化了spring的配置,底层依然是spring,但让开发难度更低,速度更快。 3.Springboot简单案例 IDEA创建springboot项目,勾选spring web依赖 在pom.xml文件中指定了一个坐标,这个坐标是springboot的父工程,所有springboot项目都要继承这个父工程。 package com.cc.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController //标识它为请求处理类 public class HellloController { @RequestMapping("/hello1") //浏览器请求/hello地址,就调用hello方法 public String Hello(){ System.out.println("Hello~"); return "Hello~"; } } 运行时还遇到了一点小问题: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource There is already 'hellloController' bean method 提示我们BasicController里有相同的@RequestMapping,点进去果然有一个一样的,把我们自己的改成其他的(我改成hello1)就行。 运行后就能成功访问localhost:8080/hello1这个8080端口下的/hello1资源。

LeetCode之回溯

1.全排列 1.1 题目 1.2 题解 LeetCode 力扣官方题解 1.3 代码 class Solution { public List<List<Integer>> permute(int[] nums) { // 创建一个空的列表 res,用于存储所有的排列结果 List<List<Integer>> res = new ArrayList<>(); // 如果输入数组 nums 的长度为 0,则直接返回结果列表(空列表) if (nums.length == 0) { return res; } // 创建一个布尔数组 used,用于记录哪些数字已经被使用。其长度与 nums 相同 boolean[] used = new boolean[nums.length]; // 创建一个双端队列 path,用于保存当前排列的数字 Deque<Integer> path = new LinkedList<>(); // 调用名为 dfs 的辅助方法,开始深度优先搜索。初始深度为 0 dfs(nums, 0, path, used, res); // 最后返回包含所有排列结果的列表 res return res; } private void dfs(int[] nums, int depth, Deque<Integer> path, boolean[] used, List<List<Integer>> res) { // 递归终止条件 if (depth == nums.

day27 贪心算法-基础+发饼干+摆动序列+最大子序和

## 8. Greedy ### 8.1 introduction 核心:通过局部最优达到全局最优。 ### 8.2 455. Assign Cookies Assume you are an awesome parent and want to give your children some cookies. But, you should give each child at most one cookie. Each child i has a greed factor g[i], which is the minimum size of a cookie that the child will be content with; and each cookie j has a size `s[j]. If s[j] >= g[i], we can assign the cookie j to the child i, and the child i will be content.

android7.1.2内置音频播放踩坑

在做APP的时候,需要播放声音。就遇到一个情况: 音频播放这块有问题请教一下,下面这段代码在 API34的模拟器中正常运行,在真机API25中就报错,有没有什么解决办法。 代码 package com.android.example.sound import android.media.MediaPlayer import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.* import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.compose.ui.tooling.preview.Preview class MainActivity : ComponentActivity() { private var mediaPlayer: MediaPlayer? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { AudioPlayerApp( onPlayClicked = { if (mediaPlayer == null) { mediaPlayer = MediaPlayer.create(this, R.raw.beep) } mediaPlayer?.start() } ) } } override fun onDestroy() { super.

基于协同过滤推荐算法+springboot+vue的个人摄影作品分享网站

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Python|HTML|数据可视化|SSM|SpringBoot|Vue|Jsp|PHP等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 感兴趣可以先收藏起来,以防走丢,有任何选题、文档编写、代码问题也可以咨询我们 项目介绍: 本系统采用前后端分离,项目代码工整,结构清晰,适合选题:协同过滤,推荐算法,个人摄影、摄影、摄影作品、作品分享、前后端分离类其他摄影等。系统采用springboot+vue整合开发,前端主要使用了element-ui框架、项目后端主要使用了springboot,数据层采用mybatis。 部分功能: 用户: 用户登录:用户登录系统获取自己的个人信息。需要用户输入自己的账号和密码。 用户注册:用户注册,在系统中录入自己的信息,方便后期使用系统。需要输入用户的姓名、性别、手机号、邮箱、个人头像。 用户个人信息管理:用户更改自己的电话号码、姓名、性别、邮箱、个人头像。 摄影作品收藏:用户对别人分享的摄影作品进行收藏或是将收藏夹中的商品进行移出。 摄影作品点赞:用户对别人分享的摄影作品进行点赞 用户评论管理:用户对别人分享的摄影作品进行评论 摄影作品浏览:可以分类查看摄影作品,或者模糊查询 摄影作品发布:每个用户都可以分享摄影作品,或编辑、删除、下架个人摄影作品 摄影作品资讯:查看管理员发布的摄影资讯信息 摄影作品推荐:根据收藏信息,使用基于用户的协同过滤算法进行推荐摄影作品 管理员: 1.此个人摄影作品分享网站可命名为 光影故事坊。 2.分为前后台,前台首页可以加个轮播图 以及 后台加轮播图管理(参考全国热门旅游景观) 3.还有我的要求在于 登录(后台登录)那里,我希望实现 账号+密码+图形验证码登录 以及 邮箱+验证码登录 两种登录方式。 邮箱用我的邮箱来发验证码就可以,到时候我提供给您需要的smtp码。 (当然您在写代码的时候可以先用您的来方便调试) 因为我们这边对于毕设有一定的工作量和创新点的要求,不知道这个要求可不可以实现 4.搜索与推荐 作品搜索:提供关键词搜索功能,方便用户查找感兴趣的摄影作品。 智能推荐:按照您所提供的文档中协同过滤推荐算法进行推荐即可 系统包含技术: 后端:springboot,mybatis 前端:vue、js、css等 算法:协同过滤推荐算法 开发工具:idea/vscode 数据库:mysql 5.7 JDK版本:jdk1.8 部分截图说明: 首页 摄影作品 详情 作品推荐 资讯 资讯详情 登录 用户管理 摄影作品管理 资讯管理 收藏管理 部分代码: /** * 分页查询 */ @PostMapping("selectAll") public PageInfo<Delivery> selectAll(@RequestBody Map<String,String> mp) { PageHelper.

单片机内存映射

在一些桌面程序中,整个内存映射是通过虚拟内存来进行管理的,使用一种称为内存管理单元(MMU)的硬件结构来将程序的内存映射到物理RAM。在对于 RAM 紧缺的嵌入式系统中,是缺少 MMU 内存管理单元的。 因此在一些嵌入式系统中,比如常用的 STM32 来讲,内存映射被划分为闪存段(也被称为Flash,用于存储代码和只读数据)和RAM段(用于存储读写数据)。 一、FLASH闪存 文本段 (Text):可执行代码 (Executable Code)和常量 (Literal Value) 只读数据区域 (Read Only Data) 数据复制段 (Copy of Data Section):存放程序中初始化为非 0 值的全局变量的初始值(之所以要将初始值存放到这里,是因为全局变量是存放在 RAM 上的,RAM 上的值掉电便丢失,每次上电后这些变量是要进行重新赋值的,而重新赋的值就存放在这里。那为什么不存放初始化为 0 的全局变量初始值呢,原因也很简单,既然是初始化为 0,那么在上电后统一对存放初始化为 0 的全局变量的那块区域清0就好了。) 二、RAM 栈 (Stack) : 存放局部变量和函数调用时的返回地址堆 (heap) : 由 malloc 申请,由 free 释放bss : 存放未初始化或者是初始化为 0 的全局变量和静态变量data : 存放初始化为非 0 值的全局变量和静态变量 三、总结 Flash (ROM):存放程序代码、常量和初始化过的全局/静态变量。 RAM:包含堆、栈和静态区,其中堆用于动态分配,栈用于函数调用,静态区存储全局和静态变量的实际数据。 堆与栈:堆用于动态内存分配,栈用于函数调用栈帧,二者均属于RAM。 全局与静态变量:按初始化与否,分别存储在Data Segment(已初始化)和BSS Segment(未初始化)中,最终都在RAM中占用空间。 四、C语言内存分区

【Linux基础】Linux基本指令(二)

目录 🚀前言一,mv指令二,more & less指令2.1 more 指令2.1 less指令 三,重定向技术(重要)3.1 echo指令3.2 输出重定向 >3.3 追加重定向 >>3.4 输入重定向 < 四,head & tail指令4.1 head 指令4.2 tail指令4.3 管道(重要) 五,时间相关的指令5.1 date指令(没啥用)5.2 时间戳 六,有关查找或搜索指令6.1 find指令6.2 which指令6.3 指令就是文件!6.4 验证:指令就是文件6.5 grep指令 七,ls 与 ll 的关系八,文件的压缩与解压指令8.1 tar指令8.2 zip/unzip指令 九 ,bc指令(没啥用)十,uname 指令 🚀前言 在上一篇文章的基础上,我们继续对Linux的基础指令进行介绍。所以建议先看完上一篇文章 Linux基本指令(一) 。 一,mv指令 mv命令是move的缩写,可以用来剪切文件/目录或者将文件/目录重命名。 语法: mv [选项] [源文件或目录] [目标文件或目录] 功能:剪切文件/目录或者将文件/目录重命名 常用选项: -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖 比如剪切文件或是目录: 再比如给文件改名字: 二,more & less指令 more指令和less指令的功能与cat指令类似,都是可以查看文件内容。但是查看内容的形式不一样。 2.1 more 指令 语法:more [选项][文件]

腾讯云AI代码助手:智驭Python,编织代码的诗篇 —— 深度测评体验

文章目录 引言💖1. 开发环境介绍💻vscode安装插件方法一:链接访问下载安装方法二:vscode直接安装 2. 使用实例✨1. 代码补全2. 技术对话3. 代码优化4. Bug处理 3. 帮助与提升🚀4. 建议与展望💡5. 结语🌟 引言💖 🚀 在当前AI技术迅猛发展的大环境下,各种智能化工具如雨后春笋般涌现,为各行各业带来了前所未有的变革。作为Python开发者,我也一直在关注如何利用AI技术来提升编程效率。最近,我尝试了腾讯云AI代码助手,这款以AI技术为驱动的代码辅助工具,正是在这样的背景下应运而生。接下来,我将从Python开发者的角度,分享我的使用体验,讲解我的测评感受。 1. 开发环境介绍💻 我的日常开发环境部分是基于VS Code,这是一款功能强大、插件丰富的编辑器。在VS Code中,我已经安装了一系列辅助编程的插件,但总觉得在代码补全、错误诊断等方面还有提升空间。因此,当我听说腾讯云推出了AI代码助手时,便迫不及待地想要尝试一下。 vscode安装插件 方法一:链接访问下载安装 腾讯云AI vscode插件下载地址 访问链接,点击install即可跳转打开vscode安装 方法二:vscode直接安装 进入软件,插件商场搜索腾讯云AI即可 2. 使用实例✨ 在实际使用过程中,我发现腾讯云AI代码助手确实给我带来了很大的帮助。比如,当我编写一个复杂的Python函数时,它能够根据我已经输入的代码,智能地推荐接下来的代码片段,这不仅提高了我的编码速度,更令我印象深刻的是,这款工具在代码诊断方面也非常出色。它能够准确地指出我代码中的语法错误和逻辑错误,并提供具体的修改建议。 1. 代码补全 插件会根据光标所在位置合理选择合适的位置进行代码补全,例如插件当光标位置在代码行尾附近位置,或者换行的时候才会触发代码补全。 行尾右小括号前面位置触发补全; 行尾右大括号前面位置触发补全; 代码行尾位置触发补全; 代码换行位置触发补全。 2. 技术对话 遇到技术难题?不妨试试与AI助手进行对话。它能理解你的需求,提供解决方案或引导你思考,让技术难题迎刃而解。智慧的火花,在这里不断碰撞。💥 3. 代码优化 AI助手不仅擅长编写代码,更擅长优化代码。它能自动分析代码结构,提出性能优化建议,帮助你写出更简洁、更高效的代码。让每一次迭代,都是一次性能的提升。🚀 代码需要优化?性能提升,发给他吧 4. Bug处理 面对烦人的Bug,AI助手能迅速定位问题所在,并提供修复建议。它像是一位经验丰富的调试专家,帮你快速恢复代码的健康状态,确保项目顺利进行。🛡️ 框选代码 > 单击鼠标右键 > 选择腾讯云 AI 代码助手 > 调用 AI 命令调出对话窗口再要求 AI 代码助手进行代码检查。 3. 帮助与提升🚀 近期通过体验使用腾讯云AI代码助手,对我有以下的帮助与提升: 开发效率显著提升,减少了我编写和调试代码的时间避免潜在错误,提供精准代码补全和推荐自动检测潜在错误,及时处理降低代价代码优化,性能升级,直接提升个人能力😁 除了基本的编码帮助,我还发现腾讯云AI代码助手在Python高级特性和最佳实践方面也有着出色的表现。它能够根据我的代码上下文,推荐更简洁、更高效的实现方式,让我不断学习和掌握更多的Python编程技巧。这对于一个不断追求进步的Python开发工程师来说,无疑是一个巨大的福音。 4. 建议与展望💡 虽然腾讯云AI代码助手已经表现得非常出色,但我认为它还有进一步优化的空间。比如:

C++刷LeetCode常用容器和函数

一、字符串与数值转换问题: 经常会涉及类型之间转换的问题,可以使用string头文件李的函数 参考:C++中的字符串(String)和数值转换_c++字符串转数字-CSDN博客 string和数值转换转换类型to_string(val) 把val转换成stringstoi(s,p,b) 把字符串s从p开始转换成b进制的intstol(s,p,b) 把字符串s从p开始转换成b进制的longstoul(s,p,b)把字符串s从p开始转换成b进制的unsigned longstoll(s,p,b)把字符串s从p开始转换成b进制的long longstoull(s,p,b)把字符串s从p开始转换成b进制的unsigned long longstof(s,p)把字符串s从p开始转换成floatstod(s,p)把字符串s从p开始转换成doublestold(s,p)把字符串s从p开始转换成long double 进制转换:进制转换(C++)_c++进制转换-CSDN博客 二、String 附表:ASCII 表 1、string初始化 string str; //生成空字符串 string s(str); //生成字符串为str的复制品 string s(str, strbegin,strlen); //将字符串str中从下标strbegin开始、长度为strlen的部分作为字符串初值 string s(cstr, char_len); //以C_string类型cstr的前char_len个字符串作为字符串s的初值 string s(num ,c); //生成num个c字符的字符串 string s(str, stridx); //将字符串str中从下标stridx开始到字符串结束的位置作为字符串初值 string s(begin,end); //以区间beg;end(不包含end)内的字符作为字符串s的初值,即迭代器间的值。 eg: string str1; //生成空字符串 string str2("123456789"); //生成"1234456789"的复制品 string str3("12345", 0, 3);//结果为"123" string str4("012345", 5); //结果为"01234" string str5(5, '1'); //结果为"11111" string str6(str2, 2); //结果为"3456789" 2、操作函数 关于大小和容量 size()和length(); //返回string对象的字符个数,他们执行效果相同。 max_size(); //返回string对象最多包含的字符数,超出会抛出length_error异常 capacity(); //重新分配内存之前,string对象能包含的最大字符数 eg: string s("

ASP.NET前后端分离,WebApi。Vue3+ElementPlus+Axios+Pinia全流程教程

文章目录 前言1、.net core 执行过程2、中间件的执行过程3、AOP切面编程 Swagger添加Swagger注释 JWT1、解析2、配置JWT 配置SqlSugar0、引入`SqlSugarCore`包1、编写`Context`类2、配置实体类3、创建`Service`服务类进行数据库的CRUD4、配置Controller进行路由 依赖注入与IOCIOC依赖注入DIAutofac轻量容器的使用使用Autofac完成AOP日志 使用扩展进行服务注册Webapi的操作返回值和方法参数返回值ActionResult操作方法的参数URLQueryString请求报文体总结 VUE项目结构主要文件项目运行流程添加Element-ui、AXIOS Axios与piniaAXIOS使用npm等包管理工具下载axios创建axios实例、封装get、post请求方法封装api接口调用方法在页面中调用api pinia使用使用npm下载pinia创建Store文件进行状态存储在页面组件中实例化状态并赋值 前言 1、.net core 执行过程 2、中间件的执行过程 3、AOP切面编程 Swagger 添加Swagger注释 1、右击项目->选择属性->点击生成->输出,选中文档文件 2、配置服务 在program.cs 文件里配置SwaggerUI //增加项一 builder.Services.AddSwaggerGen(c=> { c.SwaggerDoc("v1", new OpenApiInfo { Title = "Web API", Version = "v1" }); var xmlFile = $"{Assembly.GetEntryAssembly().GetName().Name}.xml"; var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); c.IncludeXmlComments(xmlPath); }); //增加项二 if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); }); } 3、在控制器的方法上加上注释即可在swagger网页上看到注释 4、添加实体类的Swagger注释 JWT 1、解析 1)客户端向授权服务系统发起请求,申请获取“令牌”。

LVS部分配置1

LVS nat服务器(作时间服务器) [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# setenforce 0 [root@localhost ~]# yum -y install ntpdate [root@localhost ~]# ntpdate cn.ntp.org.cn [root@localhost ~]# which ntpdate [root@localhost ~]# crontab -e * 2 * * * /usr/sbin/ntpdate cn.ntp.org.cn [root@localhost ~]# yum -y install ntp [root@localhost ~]# systemctl start ntpd [root@localhost ~]# systemctl enable ntpd 配置规则 [root@localhost ~]# yum -y install ipvsadm [root@localhost ~]# ipvsadm -A -t 192.168.1.43:80 -s rr [root@localhost ~]# ipvsadm -A -t 192.

【Datawhale AI夏令营 task2】动手学大模型应用全栈开发:LLM项目的分类和原理解析

一、LLM项目的分类 1、如何分类 根据是否需要微调模型、是否需要训练embedding模型、是否需要优化prompt等技术 2、prompt项目 Prompt项目——ChatPaper ChatPaper是一种基于文本生成技术的研究论文,具有类似于ChatGPT的功能。它可以根据关键字来获取相应的论文,并通过分析论文的标题、作者、单位、链接、研究背景、其它工作的问题、本文方法、本文方法具体步骤、总结本文的优缺点等内容,实现一分钟下载一篇最新arxiv论文,一个分钟速读主要信息。 Prompt项目——ChatBI、ChatExcel 思路1:用户上传文件存入db,输入text生成sql语句 思路2:用户输入的text直接转化成操作表格的代码文件 ChatExcel入口 酷表ChatExcelhttps://chatexcel.com/ Prompt项目——ChatPPT PPT是一种文件格式(和ChatMind类似) task https://github.com/PandaVT/AI_PPT_demo/https://github.com/PandaVT/AI_PPT_demo/ 3、如果要处理的数据很多,超过token限制怎么办? 方式1:长文本裁剪,分段总结汇总 方式2:Embedding 将文本、图像等人类世界的高维信息转换为低维向量,同时保留不错的语义信息,便于进行数学运算和相似度比较。 task GitHub - JessyTsui/awesome_LLM_beginner: 送给LLM初学者的路径,看我心情和时间更新送给LLM初学者的路径,看我心情和时间更新. Contribute to JessyTsui/awesome_LLM_beginner development by creating an account on GitHub.https://github.com/JessyTsui/awesome_LLM_beginner 4、通用模型解决不了的问题怎么办 ChatLaw 数据集 https://huggingface.co/datasets/PandaVT/chinese_verdict_examples https://huggingface.co/datasets/PandaVT/chinese_law_examples

腾讯云AI代码助手助力软件开发体验分享

引言 现在,AI工具在软件开发中变得越来越重要,它们能显著提升效率和代码质量。本文就来分享一下我用腾讯云AI代码助手的经历,看看它是怎么在开发中帮了大忙的。 开发环境介绍 这次的项目用的是JavaScript,开发环境是Windows 10操作系统。我主要使用了Visual Studio Code (VSCode) 编辑器,并且安装了腾讯云AI代码助手插件。VSCode的功能很强大,加上腾讯云AI代码助手,开发效率和代码质量都上了一个新台阶。 我先下载并安装了插件,然后通过腾讯云账号进行了腾讯云 AI 代码助手授权。 使用实例 在开发一个实时数据可视化的项目时,腾讯云AI代码助手发挥了很大的作用: 创意实现 我想做一个网页应用,能实时显示和分析传感器数据。为了实现这个目标,我用了腾讯云AI代码助手的代码补全、技术对话和代码优化功能。 代码补全 在编写前端的数据处理模块时,AI代码助手的代码补全功能大大提高了我的效率。比如,我只需要输入一部分代码,它就能自动补全常用的JavaScript函数和语法,省去了很多手动输入的时间。 // AI代码助手自动补全示例 function updateChart(data) { // AI助手补全代码 chart.update({ series: [{ data: data }] }); } 这段代码用来创建和更新一个时间序列折线图,利用了 Chart.js 库。它设置了图表类型、数据源、显示选项和时间轴,以展示数据随时间的变化。 技术对话 当我遇到如何优化数据处理性能的问题时,AI代码助手的技术对话功能给了我很大的帮助。我用自然语言跟助手交流,它提供了很多优化建议和代码示例,比如推荐了一些高效的数据处理算法,帮助我快速改进。 function processData(data) { // 推荐的高效算法 var result = data.split('\n').map(function (item) { return item.split(' ').map(function (item) { return parseInt(item, 10); }); }); } 解释代码 当需要解释某段代码时,选中代码片段,AI助手就会在左侧边栏显示这段代码的功能和每部分的详细解释。 代码优化与规范 AI代码助手能够自动检测代码中的潜在问题并提供优化建议。例如,在此处我们可以选中代码点击修复代码,小助手会给出代码修复建议。此外,助手还根据JavaScript标准自动格式化代码,确保代码的一致性和可读性。 获得的帮助与提升 在使用腾讯云AI代码助手的过程中,我发现它为我的开发工作带来了显著的提升。助手不仅帮助我快速解决了技术难题,还优化了我的代码质量,并提升了调试效率。以下是几个主要的帮助和提升: 快速解决技术难题:AI代码助手在遇到技术瓶颈时,提供了即时的技术支持和解决方案,使我能够迅速找到问题所在并解决它们。这种快速响应显著提高了我的工作效率。 提升代码质量:通过助手提供的代码优化建议,我能够发现和改进代码中的性能问题和冗余部分。这不仅让我的代码更加高效,也提高了代码的可读性和维护性。 增强调试能力:助手的错误检测和修复建议减少了手动调试的工作量,使得问题定位和解决更加高效。这种增强的调试能力提高了软件的稳定性,并减少了测试阶段的工作负担。

web, 证书体系,https, http

_____ https 扫盲 HTTPS 和 SSL/TLS 协议[1]:背景知识、协议的需求、设计的难点 @ 编程随想的博客 (program-think.blogspot.com) 这个人写了很多 _____ 证书体系 SSL证书原理讲解 - 2240930501 - 博客园 (cnblogs.com) 这个更简单,清晰 CNNIC 证书的危害及各种清除方法 @ 编程随想的博客 (program-think.blogspot.com) 讲得很详细,不是堆积文字 数字证书及 CA 的扫盲介绍 @ 编程随想的博客 (program-think.blogspot.com) 这个人写了很多 东西比较多,下面这一篇也是他写的 扫盲 HTTPS 和 SSL/TLS 协议[1]:背景知识、协议的需求、设计的难点 @ 编程随想的博客 (program-think.blogspot.com)

Axios 详解与使用指南

Axios 详解与使用指南 1. Axios 简介 Axios 是一个基于 Promise 的 HTTP 客户端,能够在浏览器和 Node.js 环境中运行。它提供了一种简便的方式来执行 HTTP 请求,并支持多种请求方法,如 GET、POST、PUT、DELETE 等。Axios 的配置灵活,支持请求和响应拦截器、取消请求、并发请求处理等功能,使其成为现代 Web 开发中非常流行的选择。 2. Axios 特性 基于 Promise:Axios 完全支持 Promise,使得异步操作更加直观,特别是在使用 async/await 时。支持多种请求方式:支持常见的 HTTP 请求方法,满足不同的请求需求。浏览器与 Node.js 兼容:Axios 可同时在前端和后端项目中使用。拦截器:提供请求和响应拦截器,允许在请求或响应到达之前进行处理。自动转换 JSON 数据:自动将 JSON 数据转换为 JavaScript 对象。请求取消:支持通过 CancelToken 取消请求。并发请求处理:支持 axios.all 等方法,处理多个并发请求。 3. Axios 安装与引入 3.1 使用 npm 安装 npm install axios 3.2 使用 Yarn 安装 yarn add axios 3.3 在项目中引入 在 ES6 模块化的项目中使用: import axios from 'axios'; 或者在 CommonJS 模块化的项目中使用:

使用Python和Proxy302代理IP高效采集Bing图片

目录 项目背景一、项目准备环境配置 二、爬虫设计与实现爬虫设计思路目标网站分析数据获取流程 代码实现1. 初始化爬虫类(BingImageSpider)2. 创建存储文件夹3. 获取图像链接4. 下载图片5. 使用Proxy302代理IP6. 主运行函数 运行截图 三、总结 项目背景 本篇博客详细介绍了一个网络爬虫项目的准备和实现过程。该项目的目标是从Bing图片搜索中获取图片链接并下载图片。此类爬虫项目通常用于收集大量的图片数据,以便用于训练各种人工智能模型,特别是计算机视觉模型。计算机视觉领域的研究需要大量的图像数据来训练和测试模型,以便实现图像分类、对象检测、图像生成等功能。 一、项目准备 环境配置 在开始编写爬虫之前,确保已经完成以下环境配置: 1.Python安装: 确保已安装Python 3.x版本。Python是一种功能强大且易于学习的编程语言,适合于各种编程任务,包括网络爬虫开发。 2.需要的库: Python拥有庞大的第三方库生态系统,我们将使用几个核心库来开发爬虫: requests: 用于发送HTTP请求和处理响应。os: 提供了与操作系统交互的功能,用于创建文件夹等文件操作。time: 提供了时间相关的功能,例如休眠程序以及计时等。urllib: 提供了在网络上获取数据的一些功能,主要用于URL编码。 可以使用以下命令通过pip安装这些库: pip install requests 如果你使用的是Anaconda等集成环境,可以使用conda命令: conda install requests 这些库将帮助我们处理HTTP请求、解析和存储数据,以及进行一些基本的系统操作。 二、爬虫设计与实现 爬虫设计思路 目标网站分析 在设计爬虫之前,分析目标网站是必不可少的。对于Bing图片搜索网站,我们进行如下分析: 网页结构:Bing图片搜索页面的结果通常以HTML的形式呈现,其中包含了多个图片的缩略图。每张图片的缩略图通常通过<img>标签展示,图片的真实链接保存在src属性中。动态加载:Bing的图片搜索结果可能采用了动态加载的方式。即在页面初始加载时,可能只加载部分图片,更多图片会在用户滚动页面时动态加载。Selenium可以模拟用户行为(如滚动)以加载这些动态内容。请求限制:Bing图片搜索可能对请求频率或IP地址进行限制。使用代理服务器有助于分散请求负载,避免IP被封禁。 数据获取流程 构建请求URL:根据用户输入的搜索关键词构建Bing图片搜索的URL。URL的格式通常为https://www.bing.com/images/search?q={搜索词},其中{搜索词}是用户的查询内容。 发送GET请求:通过Selenium WebDriver发送GET请求,加载目标网页。由于Bing图片搜索页面可能含有动态内容,Selenium能够处理这些动态加载的内容,确保图片链接完全加载。 解析网页数据:使用Selenium解析网页源代码,提取所有图片缩略图的src属性。通常,缩略图链接可以通过CSS选择器找到,例如使用img.mimg选择器获取图片标签。 下载图片:对于每个提取到的图片链接,使用Requests库发送GET请求以获取图片数据,并将其保存到本地目录。确保在保存时处理任何可能的下载异常,如网络问题或链接无效等。 存储管理:将下载的图片保存到预先创建的目录中,目录结构可按搜索词分类,方便后续管理和使用。 代码实现 以下是代码的主要部分及其功能说明: 1. 初始化爬虫类(BingImageSpider) 在爬虫开发过程中,首先需要定义一个爬虫类以实现图片的爬取功能。我们定义了一个名为BingImageSpider的类,用于处理从Bing图片搜索页面抓取和下载图片的任务。 import requests import os import time from urllib import parse class BingImageSpider(object): def __init__(self): self.url = 'https://www.

HarmonyOS应用开发者基础认证(二)

1、下面是ArkTS中常量名、枚举值名推荐的代码风格是? 答案: 全大写,下划线分割 分析:常量名、枚举值名采用全部大写,单词间使用下划线隔开。 const MAX_USER_SIZE = 10000; enum UserType { TEACHER = 0, STUDENT = 1 }; 2、下面是ArkTS中类名、枚举名推荐的代码风格是。 答案: 大驼峰 分析:类采用首字母大写的驼峰命名法。 类名通常是名词或名词短语,例如Person、Student、Worker。不应使用动词,也应该避免类似Data、Info这样的模糊词。 // 类名 class User { username: string constructor(username: string) { this.username = username; } sayHi() { console.log('hi' + this.username); } } 3、下面是ArkTS中变量名、方法名、参数名推荐的代码风格是。 答案: 小驼峰 分析:函数的命名通常是动词或动词短语,采用小驼峰命名,示例如下: let msg = 'Hello world'; function sendMsg(msg: string) { // todo send message } 4、用哪一种装饰器修饰的组件可作为页面入口组件? 答案:@Entry 分析:@Entry装饰的自定义组件为页面的入口组件。 5、首选项preferences值的存储支持哪些数据类型? 答案: 数字型、字符型、布尔型以及这3种类型的数组类型 分析:@ohos.data.preferences (用户首选项)为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。

如何轻松恢复 Android 设备上最近删除的照片:四种有效方法

概括 您是否曾经不小心从 Android 设备中删除了珍贵的照片,后来才意识到您需要找回它们?不用担心,您可以在本教程中获得 4 个有效的解决方案来恢复 Android 上最近删除的相册中已删除的照片。在某些 Android 设备上,此功能也称为回收站或垃圾箱。让我们开始吧。 第 1 部分:您能在 Android 上看到最近删除的照片吗? Android 设备上可以查看最近删除的照片吗?答案是肯定的。只要超过 30 天没有删除,您就可以在 Android 手机或平板电脑上查看最近删除的图片(“最近删除”相册仅将删除的图片和视频保留 30 天)。 如果您删除的照片不在有效期内,它们将被彻底删除。在这种情况下,您将无法看到已删除的照片。您可以前往手机上的“最近删除”图库查看是否有您想要的照片。 第 2 部分:如何从 Android Gallery 上最近删除的照片中恢复已删除的照片 “最近删除”相册现在可在大多数 Android 设备上使用,您可以在 Android 图库应用程序上访问该相册。从相册中恢复图片非常容易。 就是这样: 步骤1:打开Android手机,进入图库应用程序。 步骤2:选择底部的“相册”,然后向下滚动屏幕找到“最近删除”相册。 第三步:点击进入相册,选择需要恢复的图片。然后单击“恢复”将图片移动到原来的相册中。 第 3 部分:如何通过 Google Photos 在 Android 上恢复最近删除的照片 许多人喜欢使用Google Photos来备份和同步他们的照片。如果您使用此应用程序在 Android 上备份了图像,则可以轻松检索已删除的照片。此外,Google Photos 能够将已删除的照片保留 30 天。您可以转到其“垃圾箱”文件夹来取回照片。 以下是如何通过 Google 相册从 Android 上最近删除的文件夹中检索已删除的图像: 第 1 步:在 Android 手机上启动 Google Photos,然后登录您的 Google 帐户。