深度解析算法之模拟
39.替换所有的问号
题目链接
给你一个仅包含小写英文字母和 '?'
字符的字符串 s
,请你将所有的 '?'
转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。
注意:你 不能 修改非 '?'
字符。
题目测试用例保证 除 '?'
字符 之外,不存在连续重复的字符。
在完成所有转换(可能无需转换)后返回最终的字符串。如果有多个解决方案,请返回其中任何一个。可以证明,在给定的约束条件下,答案总是存在的。
示例 1:
输入: s = “?zs”
输出:“azs”
解释: 该示例共有 25 种解决方案,从 “azs” 到 “yzs” 都是符合题目要求的。只有 “z” 是无效的修改,因为字符串 “zzs” 中有连续重复的两个 ‘z’ 。
示例 2:
输入: s = “ubv?w”
输出:“ubvaw”
解释: 该示例共有 24 种解决方案,只有替换成 “v” 和 “w” 不符合题目要求。因为 “ubvvw” 和 “ubvww” 都包含连续重复的字符
我们遍历这个数组,当碰到一个问号的时候,那么我们就用a~z进行替换,并且一次进行判断是否重复了
class Solution {public:string modifyString(string s){int n=s.size();//计算字符串的长度for(int i=0;i<n;i++){//遇到问号我们就将这个进行替换if(s[i]=='?'){for(char ch='a';ch<='z';ch++){//改变这个字符不能和前面相同,//因为我们这里是不能存在连续的重复的字符的if((i==0||ch!=s[i-1])&&(i==n-1||ch!=s[i+1]))//i=0就是前面字符不存在的情况,第一个括号就是判断i的位置是不是和前面位置的字符相等,第二个符号就是判断是否和后面的字符相等{s[i]=ch;//我们直接将当前的字符ch放进去break;}}}}return s;}};
我们先利用遍历数组找到我们的这个字符串中的问号,然后对当前位置进行字符的插入,然后在插入字符的时候对前后位置的字符进行判断,是否和当前插入的字符相等,不能是连续的重复字符
40.提莫攻击
题目链接
在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。
当提莫攻击艾希,艾希的中毒状态正好持续 duration
秒。
正式地讲,提莫在 t
发起攻击意味着艾希在时间区间 [t, t + duration - 1]
(含 t
和 t + duration - 1
)处于中毒状态。如果提莫在中毒影响结束 前 再次攻击,中毒状态计时器将会 重置 ,在新的攻击之后,中毒影响将会在 duration
秒后结束。
给你一个 非递减 的整数数组 timeSeries
,其中 timeSeries[i]
表示提莫在 timeSeries[i]
秒时对艾希发起攻击,以及一个表示中毒持续时间的整数 duration
。
返回艾希处于中毒状态的 总 秒数。
示例 1:
输入: timeSeries = [1,4], duration = 2
输出: 4
解释: 提莫攻击对艾希的影响如下:
- 第 1 秒,提莫攻击艾希并使其立即中毒。中毒状态会维持 2 秒,即第 1 秒和第 2 秒。
- 第 4 秒,提莫再次攻击艾希,艾希中毒状态又持续 2 秒,即第 4 秒和第 5 秒。
艾希在第 1、2、4、5 秒处于中毒状态,所以总中毒秒数是 4 。
示例 2:
输入: timeSeries = [1,2], duration = 2
输出: 3
解释: 提莫攻击对艾希的影响如下:
- 第 1 秒,提莫攻击艾希并使其立即中毒。中毒状态会维持 2 秒,即第 1 秒和第 2 秒。
- 第 2 秒,提莫再次攻击艾希,并重置中毒计时器,艾希中毒状态需要持续 2 秒,即第 2 秒和第 3 秒。
艾希在第 1、2、3 秒处于中毒状态,所以总中毒秒数是 3 。
如果我们相邻中毒时间点之间的差值大于等于d的话,那么我们是需要将差值累加上的
如果相邻中毒时间小于d的话,那么我们就说明我们在a点中毒了,但是只能中毒b-a秒,而不是完整的d秒,所以这里我们的中毒时间就是d-a秒
如果我们的时间差值小于中毒时间的话那么就是会进行重置操作的
class Solution{public:int findPoisonedDuration(vector<int>& timeSeries, int duration){int ret=0;//记录最终的中毒时间for(int i=1;i<timeSeries.size();i++){int x=timeSeries[i]-timeSeries[i-1];//计算我们当前位置和前一秒位置的时间差值if(x>=duration) ret+=duration;//差值大于我们的中毒时间的话else ret+=x;//差值小于我们的中毒时间的话}//到这里的话,我们还没有计算最后的时间中毒的return ret+=duration;}};
41.Z字形变换
提目标链接
将一个给定字符串 s
根据给定的行数 numRows
,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 "PAYPALISHIRING"
行数为 3
时,排列如下:
P A H N
A P L S I I G
Y I R
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"
。
请你实现这个将字符串进行指定行数变换的函数:
string convert(string s, int numRows);
示例 1:
输入: s = “PAYPALISHIRING”, numRows = 3
输出:“PAHNAPLSIIGYIR”
示例 2:
输入: s = “PAYPALISHIRING”, numRows = 4
输出:“PINALSIGYAHRPI”
解释:
P I N
A L S I G
Y A H R
P I
示例 3:
输入: s = “A”, numRows = 1
输出:“A”
我们先需要基于原来的数组进行Z字型变换,然后再将轨迹上的字符提取出来
这种解法的时间复杂度太高了,我们需要在当前模拟的基础上进行优化的操作,去找规律
我们这里发现我们第一行的满足条件的字符的区间是6,所以我们就能将第一行的所有满足条件的字符找到
公差的计算就是这先前两列的元素减去两个空格就行了,公式就是2n-2
这里的话第一行和最后一行的元素,我们依次加上公差就能获得我们的符合的元素
对于第k行的话,我们这里以(4,5)进行举例子
k行(k,d-k)->(k+d,d-k+d)->(k+2d,d-k+2d)
我们的1是k,5是这个d-k,然后我们依次进行变化,每次加k个元素
现在我们将这个变成3行再看看我们总结出的这个规则也是符合规则的
我们当n=1的时候需要进行特殊情况进行处理操作
class Solution{public:string convert(string s, int numRows){//处理边界情况if(numRows==1) return s;//只有一行的话,我们直接将当前的字符进行返回了string ret;//记录最终、返回的结果//我们直接在原本的字符串通过规律进行符合条件的字符的寻找int d=2*numRows-2,n=s.size();//计算公差的长度//1.先处理第一行for(int i=0;i<n;i+=d){//我们这里第一行每次向后面移动是移动d个单位的ret+=s[i];//直接将对应的放到s[i]里面去}//2.处理中间行for(int k=1;k<numRows-1;k++)//中间行的范围是1~n-2行{//我们这里使用或,没有使用并且,因为当我们的i越界了,但是j没有越界,j这个位置的元素需要加到我们的数组中去,所以我们使用||或者for(int i=k,j=d-k;i<n||j<n;i+=d,j+=d)//我们这一行的第一个元素是从下标k开始的,第二个元素从d-k开始的,i和j每次向后移动d个单位{//先添加i位置的元素,再添加j位置的元素,但是我们此时的i可能会存在越界的情况,所以我们在添加之前我们先进行判断是否出现越界的情况if(i<n)ret+=s[i];//如果i没有越界的话就将当前的元素添加到ret中if(j<n) ret+=s[j];//j没有越界就将当前的元素添加到元素中去}}//3.处理最后的一行的数据for(int i=numRows-1;i<n;i+=d){ret+=s[i];}return ret;}};
先将第一行的处理了,然后将中间行的元素处理了,最后将最后一行的元素处理了
我们这里是直接在原先数组的基础上进行改变的,通过找规律找到我们想要的字符
42.外观数列
题目链接
「外观数列」是一个数位字符串序列,由递归公式定义:
countAndSay(1) = "1"
countAndSay(n)
是countAndSay(n-1)
的行程长度编码。
行程长度编码(RLE)是一种字符串压缩方法,其工作原理是通过将连续相同字符(重复两次或更多次)替换为字符重复次数(运行长度)和字符的串联。例如,要压缩字符串 "3322251"
,我们将 "33"
用 "23"
替换,将 "222"
用 "32"
替换,将 "5"
用 "15"
替换并将 "1"
用 "11"
替换。因此压缩后字符串变为 "23321511"
。
给定一个整数 n
,返回 外观数列 的第 n
个元素。
示例 1:
输入: n = 4
输出:“1211”
解释:
countAndSay(1) = “1”
countAndSay(2) = “1” 的行程长度编码 = “11”
countAndSay(3) = “11” 的行程长度编码 = “21”
countAndSay(4) = “21” 的行程长度编码 = “1211”
示例 2:
输入: n = 1
输出:“1”
解释:
这是基本情况。
第一行是一个一
那么我们第二行即是对第一行的解释的
第三行就是对第二行的解释的
第四行就是对第三行的解释的:一个二和一个一
我们在每次解释的时候找到一个相同的部分就解释一下这部分是什么数字组成的
我们的right一直进行向右移动的操作,直到我们遇到不同的数字,我们就进行次数的3出现的次数的统计了
次数就是right-left+1
然后我们让left移动到我们right的位置继续进行遍历判断的操作
我们这边的算法就是模拟+双指针就可以解决这个问题了
class Solution {public:string countAndSay(int n){string ret="1";//因为我们是从第一项开始进行解释的,所以我们将第一项定义为1//如果n=1的话,我们是直接返回结果的,如果n=2的话,我们翻译一次,n=3的话,我们翻译两次,所以我们下面的for循环进行n-1次就行了for(int i= 1;i<n;i++)//进行n-1次{string tmp;//记录本次翻译的结果//我们利用双指针进行数组的遍历操作int len=ret.size();//获取当前ret中需要翻译的字符串的长度,我们的right是不能超过这个len的for(int left=0,rihgt=0;right<len;){//直到我们碰到不同的数字的话我们就停下来,然后将这一段进行翻译下存到我们的tmp中while(right<len&&ret[left]==ret[right]) right++;//先保证我们right的范围没有出现越界的情况再进行移动的操作tmp+=to_string(right-left)+ret[left];//前面的是计算多少个,后面是多少个什么元素left=right;}//当我们循环结束之后我们整个字符串就解释完成了ret=tmp;}return ret;}};
定义一个ret为1,然后我们从1开始进行翻译操作
如果给到我们的是一个n,那么我们就得循环进行n-1次
在循环中创建一个字符串,进行翻译结果的存储操作
我们利用双指针进行数组遍历的操作,只要我们的right指针不查过我们翻译的字符串ret的长度,我们就持续进行翻译操作
只要是相等的字符的话,我们的right就一直进行右移操作,直到我们遇到不同的字符停下来了,然后我们就将我们先前遍历的那些相同的字符全部翻译到我们的tmp中去,利用to_string将我们这串字符加等到tmp中
然后将我们的left移动到我们的right的位置,结束了内部循环后我们将tmp赋值给ret,然后进行下一轮的内部循环操作
43.数青蛙
题目链接
给你一个字符串 croakOfFrogs
,它表示不同青蛙发出的蛙鸣声(字符串 "croak"
)的组合。由于同一时间可以有多只青蛙呱呱作响,所以 croakOfFrogs
中会混合多个 “croak”
。
请你返回模拟字符串中所有蛙鸣所需不同青蛙的最少数目。
要想发出蛙鸣 “croak”,青蛙必须 依序 输出 ‘c’, ’r’, ’o’, ’a’, ’k’
这 5 个字母。如果没有输出全部五个字母,那么它就不会发出声音。如果字符串 croakOfFrogs
不是由若干有效的 “croak” 字符混合而成,请返回 -1
。
示例 1:
输入: croakOfFrogs = “croakcroak”
输出: 1
解释: 一只青蛙 “呱呱” 两次
示例 2:
输入: croakOfFrogs = “crcoakroak”
输出: 2
解释: 最少需要两只青蛙,“呱呱” 声用黑体标注
第一只青蛙 “crcoakroak”
第二只青蛙 “crcoakroak”
示例 3:
输入: croakOfFrogs = “croakcrook”
输出:-1
解释: 给出的字符串不是 "croak " 的有效组合。
假设我们现在遍历到r这个字符了,那么我们就需要判断我们当前字符前面是否存在c这个字符,如果遍历到了o这个字符的话,那么我们就需要判断我们当前字符的前面是否出现了我们的r这个字符
所以这里我们是需要借助哈希表进行统计的
我们在哈希表中计数,假设我们的数组是上面这样的,我们从c开始统计,c的个数+1,遍历到r,判断r前面是否出现c,我们将1移动到我们的r的位置,然后遍历到c的位置,就说明又出现了一只青蛙,那么我们在c的位置再次加上1,遍历到o,我们判断前面是否出现r,哈希表中出现了,那么我们将r位置上的1移动到o了,然后遍历到a的位置,我们判断前面是否出现o,出现了,我们将o的位置上的1移动到a的位置,那么遍历到k,前面出现了a,那么我们将1移动到k的位置,那么现在我们的1只青蛙就完成了呱叫,但是此时我们的c位置上还有一个数据,就说明还有1只青蛙,我们再次进行相同的步骤,到这里我们的两只青蛙都完成了呱,但是后面还有一个croak,那么此时我们将这两只青蛙其中一只拿去遍历,看看是否能完成呱叫,最少出现了两只青蛙了
并且哈希表中最后只有k的位置不为0,k里面放的是最终的结果,如果前面的字符里面存的是0的话,那么就说明存在错误的叫
在遍历的时候找一下是否存在前驱的字符
roak
class Solution{public:int minNumberOfFrogs(string croakOfFrogs){string t="croak";int n=t.size();//计算字符串的长度vector<int >hash(n);//用数组来模拟哈希表unordered_map<char,int>index;//存的是x字符和x字符对应的下标for(int i=0;i<n;i++){index[t[i]]=i;//直接将对应的字符下标和字符对应上}for(auto ch:croakOfFrogs){//如果我们遍历的到的是c的话,那么我们进行下面的判断操作if(ch=='c'){//想求出最后一个位置在hash中出现的次数if(hash[n-1]!=0) hash[n-1]--;//我们让这个位置上的数字减一,这个青蛙重新进行呱叫hash[0]++;//这里的话就是我们之前已经存在了一只青蛙叫完了,然后我们n-1的位置就是次数,然后呢我们再让其中的一个青蛙再叫一遍,那么就是我们这个n-1的位置的此时-1了,到开头的位置重新遍历了//不管怎么样,我们的hash[0]都得进行加加的操作}else//遇到的是其他的字符{int i=index[ch];//ch是当前的字符,index[ch]就是当前字符的下标//那么我们仅仅需要判断我们当前字符的前驱字符是否存在if(hash[i-1]==0) return -1;//前驱字符不存在的话,就说明没有青蛙叫//到这里的话,就说明我们的前驱是存在的hash[i-1]--;hash[i]++;//那么我们让前驱字符的出现数字的1移动到我们的当前数字的位置上}}//整个for循环结束之后,我们需要判断我们的0~n-2的区间是否存在数字,一定要都是0才表示我们的青蛙叫完了for(int i=0;i<n-1;i++){if(hash[i]!=0) return -1;//说明我们的青蛙还没叫完,或者是异常的叫}return hash[n-1];//否则的话我们直接返回的是最后一个符号里面存的数字,这个数字就是我们最少的青蛙个数}};
两个hash表,一个存的是我们的对应字符出现的次数,一个存的是我们字符对应的下标
第一个循环我们将我们字符对应的下标存在我们的hash中去,第二个循环我们就开始进行遍历数组了
我们先判断我们当前的字符是否是是c,如果是c的话,那么我们判断下我们最后一个字符出现的次数,如果最后一个字符出现的字符是0 的话,那么就说明这个青蛙刚开始叫的,如果最后一个字符不是0的话,那么就说明我们这只青蛙已经开始叫第二声呱了,重新叫
如果最后一个字符存在数据的话,那么我们让最后一个字符对应的数据-1,然后让我们的开始位置的元素的次数进行加加的操作,在这个条件判断中不管怎么样我们都是需要进行hash[0]++的操作
如果遇到的是其他的字符的话,那么我们就得判断我们当前字符前面的那个字符是否存在,我们获取当前字符的下标,然后我们利用这个判断我们的当前字符的前一个字符出现的次数是否为0,如果没有出现为0的话,那么就说名这个字符串是错误的,我们直接return -1就行了
如果存在的话,那么我们让前一个字符的次数移动到我们当前字符的次数
整个循环结束后,我们还需与判断、我们的0~n-2的区间是否存在数字,一定要都是0才表示我们的青蛙叫完了,如果其他的字符还存在次数的话,那么就说明青蛙没叫完,或者是字符串异常的问题,我们直接返回-1就行了
循环结束我们直接返回最后一个字符出现的次数,这个就是我们最小的青蛙次数
相关文章:
深度解析算法之模拟
39.替换所有的问号 题目链接 给你一个仅包含小写英文字母和 ? 字符的字符串 s,请你将所有的 ? 转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。 注意:你 不能 修改非 ? 字符。 题目测试用例保证 除 ? 字符 之外&#…...
leetcode刷题日记——插入区间
[ 题目描述 ]: [ 思路 ]: intervals 有序,需要将一个新的范围插入,然后进行整合方法一,将新的范围插入原 intervals 区间,然后使用 56 题的合并区间函数直接解决方法二, 找出能够包容 newInte…...
gbase8s存储学习一 rootdbs存储结构以及寻址分析
主要层次自下而上为 最小物理存储单元page ,多个page 组成逻辑存储单元extent,多个extent 组成物理存储单元chunk ,而多个chunk组成逻辑存储单元dbspace,多个dbspace 组成一个数据库实例 在数据库初始化阶段会生成一个rootdbs表空间,该表空…...
学习设计模式《五》——工厂方法模式
一、基础概念 工厂方法模式的本质是【延迟到子类来选择实现】; 工厂方法模式的定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,FactoryMethod使一个类的实例化延迟到其子类 。 工厂方法模式的功能 序号说明0工厂方法模…...
如何将 Azure Active Directory (Azure AD) 作为 SAML IdP 对接到 Keycloak
✅ 一、在 Azure AD 创建 SAML 应用 🔧 1. 登录 Azure 门户 前往 https://portal.azure.com,使用管理员账号登录。 📌 2. 创建企业应用(Enterprise Application) 左侧菜单进入 “企业应用程序”。点击 “新建应用程…...
OCR之身份证识别
前言 OCR身份证识别是光学字符识别技术在身份证领域的应用。通过扫描或拍照获取身份证图像,利用图像处理、深度学习等技术,自动提取姓名、性别、民族、出生日期、地址、身份证号等信息,可大幅提升信息录入效率,广泛应用于政务、金…...
JavaScript 渲染内容爬取:Puppeteer 高级技巧与实践
在现代网络应用中,动态网页内容的爬取一直是开发者面临的挑战之一。Puppeteer 作为一种强大的浏览器自动化工具,为这一问题提供了优雅的解决方案。本文将深入探讨 Puppeteer 的高级技巧,包括动态内容抓取、性能优化、反检测与伪装、复杂自动化…...
组织级项目管理OPM
组织级项目管理(Organizational Project Management, OPM)是一种系统化的管理方法,旨在通过整合项目组合、项目集和项目管理,确保组织的战略目标与项目执行的一致性,提升资源利用效率和项目成功率。以下是其核心内容与框架的详述: 一、组织级项目管理的定义与目标 定义 组…...
HTML与Web 性能优化:构建高速响应的现代网站
HTML 与 Web 性能优化:构建高速响应的现代网站 引言 随着互联网用户对网站加载速度期望的不断提高,前端性能优化已经成为现代 Web 开发的核心竞争力。据 Google 研究表明,页面加载时间每增加 1 秒,用户跳出率就会增加 32%。用户…...
模型 观测者效应
系列文章分享模型,了解更多👉 模型_思维模型目录。观察即影响,存在因注视而变。 1 观测者效应的应用 1.1 工业心理学—霍桑实验中的生产效率谜题 行业背景:20世纪20年代西方电气公司霍桑工厂,研究者试图通过优化照明…...
Ubuntu启动SMB(Samba)服务步骤
目录 1.基本的Samba服务器搭建流程主要分为四个步骤。 2.Samba工作流程: 3.解读主要配置文件smb.conf 4.开始安装Samba 5.检查Samba服务状态 6.创建Samba共享文件夹 7.配置Samba文件以及设置Samba用户密码 8.重启Samba服务器 9.关闭防火墙 10.Linux客户端…...
使用react的ant-design-pro框架写一个地图组件,可以搜索地图,可以点击地图获取点击的位置及经纬度
首先,先创建一个地图页面,用于显示地图组件,我是在pages文件中创建了一个mapSearch组件。 然后在routes.ts中注册页面。 {path: /mapSearch,name: mapSearch,icon: smile,component: ./mapSearch,}, 第三步就是使用高德地图来创建地图。 关键…...
【每日八股】复习计算机网络 Day4:TCP 协议的其他相关问题
文章目录 昨日内容复习已经建立了 TCP 连接,客户端突然出现故障怎么办?什么时候用长连接?短连接?TCP 的半连接队列与全连接队列?什么是 SYN 攻击?如何避免?TIME_WAIT 的作用?过多如何…...
Git远程操作与标签管理
目录 1.理解分布式版本控制系统 2.远程仓库 3.新建远程仓库 4.克隆远程仓库 5.向远程仓库推送 6.拉取远程仓库 7.配置Git 7.1.忽略特殊文件 7.2.给命令配置别名 8.标签管理 8.1.理解标签 8.2.创建标签 8.3.操作标签 1.理解分布式版本控制系统 Git是目前世界上…...
Element Plus消息通知体系深度解析:从基础到企业级实践
一、核心组件与技术定位 Element Plus的消息通知体系由三个核心组件构成:ElMessage(全局提示)、ElNotification(通知弹窗)和ElMessageBox(交互式对话框)。这套体系的设计目标是为开发者提供轻量…...
SpringCloud组件——Eureka
一.背景 1.问题提出 我们在一个父项目下写了两个子项目,需要两个子项目之间相互调用。我们可以发送HTTP请求来获取我们想要的资源,具体实现的方法有很多,可以用HttpURLConnection、HttpClient、Okhttp、 RestTemplate等。 举个例子&#x…...
[Godot] C#2D平台游戏基础移动和进阶跳跃代码
本文章给大家分享一下如何实现基本的移动和进阶的跳跃(跳跃缓冲、可变跳跃、土狼时间)以及相对应的重力代码,大家可以根据自己的需要自行修改 实现效果 场景搭建 因为Godot不像Unity,一个节点只能绑定一个脚本,所以我…...
C语言对n进制的处理
先看一道题目: 从键盘获取一个正整数,如果把它转为16进制的数字,那么它是一个几位数呢?如果把它转为28进制又是一个几位数呢? 在讲这个题目之前,我们先要了解进制转换 什么是进制转换? 简单来说,进制就是数位的表示方法。 十进制(常用&am…...
rk3568main.cc解析
rk3568main.cc解析 前言解析总结前言 正点原子rk3568学习,rk官方RKNN_MODEL_ZOO文件中 rknn_model_zoo-main/examples/mobilenet/cpp/main.cc 从执行命令:./build-linux.sh -t rk3568 -a aarch64 -d mobilenet 到: cmake ../../examples/mobilenet/cpp \-DTARGET_SOC=rk3…...
【白雪讲堂】[特殊字符]内容战略地图|GEO优化框架下的内容全景布局
📍内容战略地图|GEO优化框架下的内容全景布局 1️⃣ 顶层目标:GEO优化战略 目标关键词: 被AI理解(AEO) 被AI优先推荐(GEO) 在关键场景中被AI复读引用 2️⃣ 三大引擎逻辑&#x…...
S32K144学习(16)-Bootloader
1.什么是bootloader Bootloader(引导加载程序) 是存储在设备非易失性存储器(如 ROM、Flash)中的一段特殊程序,负责在设备上电后初始化硬件、加载操作系统(OS)或用户应用程序,并最终…...
反素数c++
先上代码 #include<bits/stdc.h> using namespace std; typedef long long ll; ll n; ll p[]{2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53}; int maxd,maxval; void dfs(int pl,ll tmp,int num,int up){ if((num>maxd)||(nummaxd&&maxval>tmp)){ …...
C++ linux打包运行方案(cmake)
文章目录 背景动态库打包方案动态库转静态库动态库打到软件包中 运行 背景 使用C编写的一个小项目,需要打包成ubuntu下的可执行文件,方便分发给其他ubuntu执行,因为docker镜像方案过于臃肿,所以需要把项目的动态库都打在软件包中…...
JavaScript 渲染内容爬取实践:Puppeteer 进阶技巧
进一步探讨如何使用 Puppeteer 进行动态网页爬取,特别是如何等待页面元素加载完成、处理无限滚动加载、单页应用的路由变化以及监听接口等常见场景。 一、等待页面元素加载完成 在爬取动态网页时,确保页面元素完全加载是获取完整数据的关键。Puppeteer…...
AI数字人:元宇宙舞台上的闪耀新星(7/10)
摘要:AI数字人作为元宇宙核心角色,提升交互体验,推动内容生产变革,助力产业数字化转型。其应用场景涵盖虚拟社交、智能客服、教育、商业营销等,面临技术瓶颈与行业规范缺失等挑战,未来有望突破技术限制&…...
测试基础笔记第九天
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、数据类型和约束1.数据类型2.约束3.主键4.不为空5.唯一6.默认值 二、数据库操作1.创建数据库2.使用数据库3.修改数据库4.删除数据库和查看所有数据库5.重点&…...
C++抽象基类定义与使用
在 C 中,抽象基类(Abstract Base Class, ABC) 是一种特殊的类,用于定义接口规范和约束派生类的行为。它通过纯虚函数(Pure Virtual Function)强制要求派生类实现特定功能,自身不能被实例化。以下…...
20.4 显示数据库数据
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的 20.4.1 设计时进行简单绑定 【例 20.22】【项目:code20-022】设计时关联数据库。 设计时设置DataGridView的DataSource属…...
PyTorch 多 GPU 入门:深入解析 nn.DataParallel 的工作原理与局限
当你发现单个 GPU 已经无法满足你训练庞大模型或处理海量数据的需求时,利用多 GPU 进行并行训练就成了自然的选择。PyTorch 提供了几种实现方式,其中 torch.nn.DataParallel (简称 DP) 因其使用的便捷性,常常是初学者接触多 GPU 训练的第一站…...
UDP协议理解
文章目录 UDP协议理解UDP 协议的特点:UDP协议图示UDP 的头部结构:UDP数据传输图示 UDP 的应用场景:TCP 与UDP对比UDP的传输丢包和顺序错乱问题(了解)丢包的解决方法:顺序错乱的解决方法:综合应用…...
微信小程序拖拽排序有效果图
效果图 .wxml <view class"container" style"--w:{{w}}px;" wx:if"{{location.length}}"><view class"container-item" wx:for"{{list}}" wx:key"index" data-index"{{index}}"style"--…...
算力网络的早期有关论文——自用笔记
2023年底至2024年初阅读有关论文的自用笔记,作为参考。 算力网络架构 https://baijiahao.baidu.com/s?id1727377583404975414&wfrspider&forpc think¬e 是否可以和cpu进程调度联系。 目前:看一些综述深一步了解背景和发展现状,完善认…...
卷积神经网络基础(四)
今天我们继续学习各个激活函数层的实现过程。 目录 5.2 Sigmoid层 六、Affine/Softmax层实现 6.1 Affine层 6.2 批处理版本 5.2 Sigmoid层 sigmoid函数的表达式如下: 用计算图表示的话如下: 计算过程稍微有些复杂,且这里除了乘法和加法…...
【MySQL数据库】表的约束
目录 1,空属性 2,默认值 3,列描述 4,zerofill 5,主键primary key 6,自增长auto_increment 7,唯一键unique 8,外键foreign key 在MySQL中,表的约束是指用于插入的…...
网络威胁情报 | Friday Overtime Trooper
本文将分别从两个环境出发,以实践来体验利用威胁情报分析可疑文件的过程。 Friday Overtime 现在你是一位安全分析人员,正在美美等待周五过去,但就在即将下班之时意外发生了:你的客户发来求助,说他们发现了一些可疑文…...
GPIO(通用输入输出端口)详细介绍
一、基本概念 GPIO(General - Purpose Input/Output)即通用输入输出端口,是微控制器(如 STM32 系列)中非常重要的一个外设。它是一种软件可编程的引脚,用户能够通过编程来控制这些引脚的输入或输出状态。在…...
学习笔记——《Java面向对象程序设计》-继承
参考教材: Java面向对象程序设计(第3版)微课视频版 清华大学出版社 1、定义子类 class 子类名 extends 父类名{...... }如: class Student extends People{...... } (1)如果一个类的声明中没有extends关…...
基于javaweb的SpringBoot校园失物招领系统设计与实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...
什么事Nginx,及使用Nginx部署vue项目(非服务器Nginx压缩包版)
什么是 Nginx? Nginx(发音为 “engine-x”)是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。它以其高性能、高并发处理能力和低资源消耗而闻名。以下是 Nginx 的主要特性和用途: 主要特性 高性能和高并发 Nginx 能够处理大量并发连接,适合高…...
nodejs使用require导入npm包,开发依赖和生产依赖 ,全局安装
nodejs使用require导入npm包,开发依赖和生产依赖 ,全局安装 ✅ 一、Node.js 中使用 require() 导入 npm 包 // 导入第三方包(例如 axios) const axios require(axios);// 使用 axios.get(https://api.example.com).then(res &g…...
CSS在线格式化 - 加菲工具
CSS在线格式化 打开网站 加菲工具 选择“CSS在线格式化” 或者直接访问 https://www.orcc.top/tools/css 输入CSS代码,点击左上角的“格式化”按钮 得到格式化后的结果...
图片转base64 - 加菲工具 - 在线转换
图片转base64 - 加菲工具 先进入“加菲工具” 网 打开 https://www.orcc.top, 选择 “图片转base64”功能 选择需要转换的图片 复制 点击“复制”按钮,即可复制转换好的base64编码数据,可以直接用于img标签。...
性能比拼: Redis vs Dragonfly
本内容是对知名性能评测博主 Anton Putra Redis vs Dragonfly Performance (Latency - Throughput - Saturation) 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 在本视频中,我们将对比 Redis 和 Dragonfly。我们将观察 set 与 get 操作的延迟ÿ…...
如何收集用户白屏/长时间无响应/接口超时问题
想象一下这样的场景:一位用户在午休时间打开某电商应用,准备购买一件心仪已久的商品。然而,页面加载了数秒后依然是一片空白,或者点击“加入购物车”按钮后没有任何反馈,甚至在结算时接口超时导致订单失败。用户的耐心被迅速消耗殆尽,关闭应用,转而选择了竞争对手的产品…...
来啦,烫,查询达梦表占用空间
想象一下oracle,可以查dba_segments,但是这个不可靠(达梦官方连说明书都没有) 先拼接一个sql set lineshow off SELECT SELECT ||||OWNER|||| AS OWNER,||||TABLE_NAME|||| AS TABLE_NAME,TABLE_USED_SPACE(||||OWNER||||,||||T…...
# 利用迁移学习优化食物分类模型:基于ResNet18的实践
利用迁移学习优化食物分类模型:基于ResNet18的实践 在深度学习的众多应用中,图像分类一直是一个热门且具有挑战性的领域。随着研究的深入,我们发现利用预训练模型进行迁移学习是一种非常有效的策略,可以显著提高模型的性能&#…...
AT24C02芯片简介:小巧强大的串行EEPROM存储器
一、AT24C02概述 AT24C02是一款2K位(即256字节)的串行EEPROM芯片,采用IC(Inter-Integrated Circuit)总线进行通信,适合低功耗、小容量存储需求。 主要特性: 项目 参数 存储容量 2Kb&#x…...
【Vue】状态管理(Vuex、Pinia)
个人主页:Guiat 归属专栏:Vue 文章目录 1. 状态管理概述1.1 什么是状态管理1.2 为什么需要状态管理 2. Vuex基础2.1 Vuex核心概念2.1.1 State2.1.2 Getters2.1.3 Mutations2.1.4 Actions2.1.5 Modules 2.2 Vuex辅助函数2.2.1 mapState2.2.2 mapGetters2.…...
施磊老师基于muduo网络库的集群聊天服务器(四)
文章目录 实现登录业务登录业务代码补全数据库接口:查询,更新状态注意学习一下里面用到的数据库api测试与问题**问题1:****问题2:** 用户连接信息与线程安全聊天服务器是长连接服务器如何找到用户B的连接?在业务层存储用户的连接信息多线程安全问题加锁! 处理客户端…...
深度学习-全连接神经网络(过拟合,欠拟合。批量标准化)
七、过拟合与欠拟合 在训练深层神经网络时,由于模型参数较多,在数据量不足时很容易过拟合。而正则化技术主要就是用于防止过拟合,提升模型的泛化能力(对新数据表现良好)和鲁棒性(对异常数据表现良好)。 1. 概念认知 …...