当前位置: 首页 > news >正文

代码随想录二刷|字符串总结

代码随想录二刷|字符串

反转数字

题干

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

不要给另外的数组分配额外的空间,你必须**原地修改输入数组**、使用 O(1) 的额外空间解决这一问题。

思路

class Solution {
public:void reverseString(vector<char>& s) {int n=s.size();int l=0;int r=n-1;while(l<r){char temp=s[l];s[l]=s[r];s[r]=temp;l++;r--;}}
};

反转数字II

题干

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。

  • 如果剩余字符少于 k 个,则将剩余字符全部反转。
  • 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

思路

class Solution {
public:string rev(string s, int l, int r) {while (l < r) {char temp = s[l];s[l] = s[r];s[r] = temp;l++;r--;}return s;}string reverseStr(string s, int k) {int n = s.size();for (int i = 0; i < n; i += 2 * k) {if (i + k > n) {return rev(s, i, n - 1);} else if (i + 2 * k > n) {return rev(s, i, i + k - 1);}s = rev(s, i, i + k - 1);}return s;}
};

替换数字

题干

给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。 例如,对于输入字符串 “a1b2c3”,函数应该将其转换为 “anumberbnumbercnumber”。

思路

#include<bits/stdc++.h>
using namespace std;
int main()
{string s;cin>>s;int n=s.size();int l=0;string res;while(l<n){if(s[l]-'a'>=0 && s[l]-'a'<=26) {res.push_back(s[l]);l++;}else{res+="number";l++;}}cout<<res;return 0;
}

KMP算法

解决的问题:字符串匹配

例如:文本串aabaabaaf,模式串aabaaf,问文本串里面是否出现过模式串

概述

文本串aabaabaaf,

模式串aabaaf

发现f和b不匹配,找到前面匹配上的子串中的b,从b开始向后匹配

理论

1、寻找新的匹配起点

找模式串的最长相等前后缀,前缀的后一个字符作为新的匹配起点

2、前缀和后缀

(1)前缀:包含首字母不包含尾字母的所有子串

(2)后缀:包含尾字母不包含首字母的所有子串

3、前缀表

模式串的各个子串的最长相等前后缀长度的列表

a:0 aa: 1 aab: 0 aaba: 1 aabaa:2 abaaf:0

前缀表[0,1,0,1,2,0]

4、使用前缀表的匹配

(1)找模式串里面冲突的字符之前的子串前缀表里面的最长相等前后缀

(2)最长的相等前后缀长度就是新的匹配起点的下标

在f这个位置发生冲突,在f之前最长的相等前后缀长度为2,在子串aabaa中出现,跳到下标为2的位置,从b开始继续匹配

5、next数组

next数组可以是前缀表,或者前缀表统一减1,或者整体后移的结果

实现

1、next数组不同实现及其处理

(1)选择前缀表作为next数组

(2)在下标为i处遇见冲突,找next[i-1]

(3) j=next[i-1],模式串从[j]往后的部分作为新的模式串进行匹配

注:如果next数组是前缀表右移一位,第一位赋值-1,那么在下标为i处遇见冲突,找next[i];如果next数组是前缀表 -1,那么在下标为i处遇见冲突,找next[i-1]+1

2、求next数组
符号:

j:指向前缀末尾位置(前缀最后一个字符)

i:指向后缀末尾位置

(i相当于例子里面的f的下标,j相当于例子里面b的下标)

s:模式串

由于不能确定以j结尾的前缀和以i结尾的后缀是不是最长相等前后缀,在遍历的时候,j不是i及i以前最长相等前后缀的长度。

但是j既然走到了这里,就说明以j-1结尾的前缀和以i-1结尾的后缀是最长相等前后缀,j-1是s[0,i-1]这个子串最长相等前后缀的长度

1)初始化:

j初始化为0,next[0]=0

2)处理前后缀不相同的情况

前后缀不相等,就是s[i]!=s[j]

此时令 j=next[j-1],让j向左回退,退到j以前最长相等前后缀对应的的前缀末尾,再与原后缀末尾[i]进行比较

不停处理,直到前后缀相等,所以用while

while (j>0&&s[i]!=s[j]){j=next[j-1];}

3)处理前后缀相同的情况

如果 s[i]==s[j],说明前后缀相同,i及i以前最长相等前后缀的长度+1

j++,next[i]=j

4)更新next数组(在 2)和3)中各自进行)

for (i=1;i<模式串长度;i++){while (j>0&&s[i]!=s[j]){j=next[j-1];}if(s[i]==s[j]){j++;}next[i]=j;}
3、用next数组进行匹配

i为文本串t的下标

j为模式串s的下标

遍历i

(1)如果匹配,也就是if(s[j]==t[j]),让j++

(2)如果不匹配,也就是while(s[j]!=t[i]),让 j=next[j-1]

如果j=s.size()了,那么说明匹配了,匹配的起点是i-j+1

如果i先到终点,说明没匹配

KMP字符串匹配模版题:找出字符串中第一个匹配项的下标

给你两个字符串 haystackneedle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1

class Solution {
public:int strStr(string haystack, string needle) {int n = haystack.size();int m = needle.size();vector<int> next(m, 0);int j = 0;for (int i = 1; i < m; i++) {while (j > 0 && needle[j] != needle[i]) {j = next[j - 1];}if (needle[j] == needle[i]) {j++;}next[i] = j;}j = 0;for (int i = 0; i < n; i++) {while (j > 0 && needle[j] != haystack[i]) {j = next[j - 1];}if (needle[j] == haystack[i]) {j++;if (j == m)return i - j + 1;}}return -1;}
};

KMP总结

问题:文本串t中是否出现了模式串s
匹配思路:

i是文本串下标

j是模式串下标

next数组存放模式串前k个元素的最长相等前后缀的长度:例如next[k],表示模式串从s[0]到s[j]这部分子串的最长相等前后缀的长度

遍历i

(1)如果s[j]与t[i]匹配,i++

(2)如果s[j]与t[i]匹配,j=next[j-1]:

因为在j处没有和文本匹配,而next[j-1]是[0,j-1]这一段里最长相等前后缀的长度,也是这一段最长相等前后缀当中的前缀的后一个元素下标。不停地这样做,直到匹配或j退回0。

这个操作的含义是:如果j不能和i匹配,那么去找j前面有可能匹配的。

=既然能j能到这里,那么说明,现在s[0,j-1]t[i-j,i-1]是匹配的,如果挨着s[j]的元素在模式串的开头已经出现过,那么可以接着开头出现的元素继续遍历,而不是从模式串的开头开始遍历。

如果j前面有相等的前后缀,那么取最长的相等前缀后面的那个下标为新的j,看看能不能从这里开始匹配;如果没有的话就只能从0开始

e.g.

abcabdef:到d那里匹配不上,可以退回c那里,如果现在的t[i]正好是c,那么相当于已经匹配好abc,继续向下即可

abcdf:到d那里匹配不上,t里面i前面挨着的是abc,模式串只能从a开始了

(3)如果j到达s.size(),那么说明匹配了,如果i先到达终点,说明

求next数组的思路

i是模式串后缀的最后一个元素(子串最后一个元素)

j是模式串前缀的最后一个元素

(因为现在前后缀还不一定相等,因此j不是s[0,i]的最长相等前后缀长度,现在的最长相等前后缀长度是j-1)

从1开始遍历i

(1)如果前后缀相等,也就是s[i]==s[j],前缀继续增长,j++

(2)如果前后缀不相等,那么j=next[j-1],重复这样做,直到s[i]==s[j]或j为0

这样的意思是,现在已经知道前后缀最后一位不相等了,向前寻找更短的前缀。j既然走到了这里,就说明以j-1结尾的前缀和以i-1结尾的后缀是最长相等前后缀。[0,j-1]的子串中,前缀等于后缀,后缀等于y以i-1结尾的串(s[0,i-1]的后缀的后缀)(s[0,i-1]前缀的后缀等于s[0,i-1]后缀的后缀)。所以向前找到s[0,j-1]内最长相等前后缀的前缀的后一个元素,接着前缀继续和后面比较。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(3)next[i]=j:因为++前的j是前缀的最后一位下标,并且前后缀相同,并且进过了++,现在的最长相等前后缀长度是j

重复子串

给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成

暴力

搜索子串:子串开头是第一个元素,只需要遍历子串结束的位置

因此只需要两次for循环

移动匹配

重复子串x组成的字符串s,可以切成3份:x 中间 x

一个s和另一个s拼接起来,如果去掉前一个的首元素,后一个的尾元素后,剩下的部分中包含s(前一个s的后面和后一个s的前面拼接起来可以得到s),那么就是s就是由重复子串组成的

判断剩下的部分中是否包含s可以用KMP或调库用find函数

class Solution {
public:bool repeatedSubstringPattern(string s) {string s2=s+s;// auto it=s2.begin();s2.erase(s2.begin());s2.erase(s2.end()-1);return s2.find(s)!=string::npos;}
};
用KMP实现find,判断剩下的部分中是否包含s

KMP

结论:如果字符串是由重复子串构成的,那么它的最小重复子串是最长相等前后缀不包含的那部分

-----------|—

—|------------

---------- 是最长相等前后缀 —是最小重复子串

证明

充分性证明

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

必要性证明:即证何时最长相等前后缀不包含的部分是最小重复子串

发现只有在四则被最长相等前后缀不包含的部分长度整除时,最长相等前后缀不包含的部分才会是最小重复子串

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

求解

next[size-1]是最长相等前后缀的长度,size-next[size-1]最长相等前后缀不包含的部分长度,如果size被这个长度整除,那么最长相等前后缀不包含的部分是最小重复子串

class Solution {
public:bool repeatedSubstringPattern(string s) {int n=s.size();if(n==0)return false;vector<int>next(n,0);int j=0;for(int i=1;i<n;i++){while(j>0&&s[j]!=s[i])j=next[j-1];if(s[j]==s[i])j++;next[i]=j;}int len=next[n-1];if(len!=0&&n%(n-len)==0)return true;return false;}
};

string类库函数

erase:传入迭代器,删除对应位置的元素,无返回值(其他的容器的erase也是这么用)

find:传入一个字符串s,判断s有没有在字符串里面出现,不出现的话返回string::npos,出现的话返回s出现处的下标

ctornext(n,0);
int j=0;
for(int i=1;i<n;i++)
{
while(j>0&&s[j]!=s[i])j=next[j-1];
if(s[j]==s[i])j++;
next[i]=j;
}
int len=next[n-1];
if(len!=0&&n%(n-len)==0)return true;
return false;
}
};


## string类库函数erase:传入迭代器,删除对应位置的元素,无返回值(其他的容器的erase也是这么用)find:传入一个字符串s,判断s有没有在字符串里面出现,不出现的话返回string::npos,出现的话返回s出现处的下标

相关文章:

代码随想录二刷|字符串总结

代码随想录二刷|字符串 反转数字 题干 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须**原地修改输入数组**、使用 O(1) 的额外空间解决这一问题。 思路 class Soluti…...

Linux浅谈——管道、网络配置和客户端软件的使用

目录 一、管道 1、管道符 2、过滤功能 3、特殊功能 4、扩展处理 5、xargs命令扩展 二、网络配置 1、ifconfig查看网络信息 2、配置文件详解 网卡配置文件位置 3、systemctl查看网卡状态 4、systemctl启动/重启/停止网卡 三、客户端软件 1、什么是SSH 2、常用SSH终…...

HBASE学习(一)

1.HBASE基础架构&#xff0c; 1.1 参考&#xff1a; HBase集群架构与读写优化&#xff1a;理解核心机制与性能提升-CSDN博客 1.2问题&#xff1a; 1.FLUSH对hbase的影响 2. HLog和memstore的区别 hlog中存储的是操作记录&#xff0c;比如写、删除。而memstor中存储的是写入…...

深入解析 Linux 内核中的 IPoIB 驱动:ipoib.h 文件分析

引言 InfiniBand 是一种高性能、低延迟的网络互联技术,广泛应用于高性能计算(HPC)和数据中心。为了在 InfiniBand 网络上运行传统的 IP 协议栈,Linux 内核提供了 IP over InfiniBand (IPoIB) 驱动。ipoib.h 是 IPoIB 驱动的核心头文件,定义了驱动所需的数据结构、常量、宏…...

2025-01-16 思考-人生下半场的归途-那温和的良夜

摘要: 转眼已经不再年轻&#xff0c;生命赠与的礼物&#xff0c;也可以说开始陷入归途。不再被外界推着走之后&#xff0c;发现可以有更多的精力和时间可以用来内视&#xff0c;不被外界种种束缚。 在人生的下半场&#xff0c;其实更多的是接受失去&#xff0c;正如人生上半场…...

【C++篇】红黑树的实现

目录 前言&#xff1a; 一&#xff0c;红黑树的概念 1.1&#xff0c;红黑树的规则 1.2&#xff0c;红黑树的最长路径 1.3&#xff0c;红黑树的效率分析 二&#xff0c;红黑树的实现 2.1&#xff0c;红黑树的结构 2.2&#xff0c;红黑树的插入 2.2.1&#xff0c;大致过程…...

Linux的常用命令(一)

目录 一、文件处理命令 1.文件处理命令ls 2.文件处理命令cd 3.文件处理命令pwd 4.文件处理命令touch 5.文件处理命令mkdir 6.文件处理命令cp 7.文件处理命令mv 8.文件处理命令rm 9.文件处理命令cat 10.文件处理命令more 11.文件处理命令head 12.文件处理命令tail …...

小米vela系统(基于开源nuttx内核)——如何使用信号量进行PV操作

如何使用信号量进行PV操作 前言信号量1. 信号量简介2. NuttX中信号量的创建与使用2.1 Nuttx信号量的初始化和销毁2.2 信号量的等待和发布 3. 信号量的实际应用&#xff1a;下载任务示例3.1 实际代码3.2 代码说明3.3 执行说明 4. 信号量的优势与应用场景5. 常见应用场景&#xf…...

(01)STM32—GPIO

1. GPIO简介 GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出端口。可配置为8种输入输出模式。引脚电平&#xff1a;0V~3.3V&#xff0c;部分引脚可容忍5V。输出模式下可控制端口输出高低电平&#xff0c;用以驱动LED、控制蜂鸣器、模拟通信协议输出时…...

浏览器输入http形式网址后自动跳转https解决方法

一、问题描述 使用浏览器 网上冲浪 时会遇到一个情况&#xff1a; 在浏览器中输入“http域名”后会自动变成“https 域名”的形式&#xff0c;此时“https 域名”的网站可能已停止对外提供服务了&#xff0c;这时会出现如下不友好的网页提示&#xff1a; 二、处理方法&#x…...

mybatis的多对一、一对多的用法

目录 1、使用VO聚合对象&#xff08;可以解决这两种情况&#xff09; 多对一&#xff1a; 一对多&#xff1a; 2、非聚合的多对一做法&#xff1a; 3、非聚合的一对多做法&#xff1a; 1、使用VO聚合对象&#xff08;可以解决这两种情况&#xff09; 当我需要多对一、一对…...

生产管理看板助力节能科技公司实现数据自动化管理

在节能科技公司的生产过程中&#xff0c;数据管理的自动化是提高生产效率和产品质量的关键。然而&#xff0c;许多公司在数据记录、展示、对比和存档方面仍面临诸多痛点&#xff0c;如产品检测数据无法自动记录、缺乏直观的产线状态展示、检测数据对比繁琐耗时&#xff0c;以及…...

网络科技有限公司网络设计

网络科技有限公司网络设计 摘要&#xff1a;伴随着信息科技发展&#xff0c;上网变得一件必不可少的事情&#xff0c;当然网络安全对我们也是越来越重要。像我们的传统网结构是无法为我们的上网提供一个安全的网络环境。锐雯网络科技有限公司就是以网络安全为基本的对网络惊醒…...

C++没有Y Combinator?使用 C++ 实现 Y Combinator(中英双语)

C 中并没有直接内置的 Y Combinator&#xff0c;但通过现代 C 特性&#xff08;如 lambda 表达式 和 std::function&#xff09;&#xff0c;我们可以实现一个类似 Y Combinator 的功能。 下面我们来详细讲解如何在 C 中实现 Y Combinator。 使用 C 实现 Y Combinator 目标 …...

YOLOv10-1.1部分代码阅读笔记-loaders.py

loaders.py ultralytics\data\loaders.py 目录 loaders.py 1.所需的库和模块 2.class SourceTypes: 3.class LoadStreams: 4.class LoadScreenshots: 5.class LoadImagesAndVideos: 6.class LoadPilAndNumpy: 7.class LoadTensor: 8.def autocast_list(source…...

《戴森球计划》异地远程联机攻略

文章目录 前言1. 下载MOD2.配置cpolar内网穿透3. 主机开启联机3.1 玩家加入游戏 4. 配置固定的TCP端口5. 游玩体验 前言 《戴森球计划》不仅是一款融合了科幻冒险与经营管理元素的游戏&#xff0c;更是一个让玩家在浩瀚宇宙中尽情探索和创造的平台。在这个游戏中&#xff0c;你…...

【Linux跬步积累】—— 线程

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;Linux跬步积累 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日一题 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0…...

计算机网络 (46)简单网络管理协议SNMP

前言 简单网络管理协议&#xff08;SNMP&#xff0c;Simple Network Management Protocol&#xff09;是一种用于在计算机网络中管理网络节点的标准协议。 一、概述 SNMP是基于TCP/IP五层协议中的应用层协议&#xff0c;它使网络管理员能够管理网络效能&#xff0c;发现并解决网…...

模型 前景理论

系列文章 分享模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。面对得失&#xff0c;人们更怕失&#xff0c;参考点定输赢。 1 前景理论的应用 1.1 前景理论在投资决策中的应用案例 假设一位投资者面临两个投资方案的选择&#xff1a; 方案A&#xff1a;投资一只…...

Android ScrollView嵌套X5WebView大片空白问题

scrollview嵌套后webview的高度不可控。留有大片空白。 注&#xff1a;官方不建议scrollview嵌套webview 最好让webview自身滚动 解决方案&#xff1a; act_news_detail_wv.setWebViewClient(new WebViewClient() {Overridepublic void onPageFinished(WebView webView, Str…...

频域增强通道注意力机制EFCAM模型详解及代码复现

背景与动机 在深度学习领域,如何有效处理时间序列数据一直是一个重要的研究方向。近年来, 频域分析技术 在时间序列处理中展现出了巨大潜力,特别是离散余弦变换(DCT)因其能够高效捕捉低频信息并避免高频噪声干扰而受到广泛关注。 FECAM模型的开发正是基于这一背景,旨在…...

[计算机网络]一. 计算机网络概论第一部分

作者申明&#xff1a;作者所有文章借助了各个渠道的图片视频以及资料&#xff0c;在此致谢。作者所有文章不用于盈利&#xff0c;只是用于个人学习。 1.0推荐动画 【网络】半小时看懂<计算机网络>_哔哩哔哩_bilibili 1.1计算机网络在信息时代的作用 在当今信息时代&…...

第十三章:数据库技术

文章目录&#xff1a; 一&#xff1a;基础 1.概念 2.特点 3.常见数据库品牌 4.数据库应⽤系统 4.1 C/S 4.2 B/S 5.数据模型的分类 6.名词解析 7.关系运算 二&#xff1a;Access 1.基础 2.操作 2.1 建立表 2.2 维护表 2.3 创建查询 2.4 创建窗体 2.5 创建报表…...

中等难度——python实现电子宠物和截图工具

import io # 文件处理 import nt # windows nt 库直接获取对应的磁盘空间 import time # 时间 import zlib # 加解密 import ctypes # 调用 import struct # 处理字节二进制 import base64 # 编解码 import threading # 线程 import tkinter as tk # tk from datetime…...

构建优雅、高效的 Nodejs 命令行工具 - Archons

目录 项目简介安装基本用法样例创建一个简单的命令行工具使用archons上下文创建进度条 最后 项目地址: https://github.com/noctisynth/archons Bug反馈或功能请求&#xff1a;https://github.com/noctisynth/archons/issues 项目简介 Archons意思是“执政官”&#xff0c;我使…...

源码编译安装httpd 2.4,提供系统服务管理脚本并测试

1.安装httpd wget https://downloads.apache.org/httpd/httpd-2.4.62.tar.gzbmcv tar -zxvf httpd-2.4.62.tar.gz cd httpd-2.4.62 2.安装依赖包 sudo yum install -y gcc make apr-devel apr-util-devel pcre-devel sudo yum groupinstall "Development Tools"…...

【爬虫】某某查cookie逆向

代码仅供技术人员进行学习和研究使用&#xff0c;请勿将其用于非法用途或以任何方式窃取第三方数据。使用该代码产生的所有风险均由用户自行承担&#xff0c;作者不对用户因使用该代码而造成的任何损失或损害承担任何责任。 加密参数 加密参数主要是cookie&#xff0c;其中只有…...

【华为路由/交换机的ssh远程设置】

华为路由/交换机的ssh远程设置 R1&#xff08;client&#xff09;&#xff1a;10.1.1.1 R2&#xff08;server&#xff09;&#xff1a;10.1.1.2 R2服务端配置&#xff1a; 生成本机密钥 查看生成的密钥 设置AAA授权验证方式&#xff0c;并设置支持SSH协议 创建本地用户&…...

Linux:System V - 共享内存

1.System V共享内存的原理 通过为用户提供系统调用接口&#xff0c;让用户可以申请一块空间&#xff0c;进程A/B也可以通过系统调用接口将创建好的内存通过页表映射进进程的地址空间。完成让不同的两个进程看见同一份资源的目的。如果未来不想继续通信&#xff0c;取消进程和内…...

闪豆多平台视频批量下载器

1. 视频链接获取与解析 首先&#xff0c;在哔哩哔哩网页中随意点击一个视频&#xff0c;比如你最近迷上了一个UP主的美食制作视频&#xff0c;想要下载下来慢慢学。点击视频后&#xff0c;复制视频页面的链接。复制完成后&#xff0c;不要急着关闭浏览器&#xff0c;因为接下来…...

《鸿蒙Next微内核:解锁人工智能决策树并行计算的加速密码》

在当今人工智能飞速发展的时代&#xff0c;提升运算速度是推动其进步的关键。鸿蒙Next以其独特的微内核特性&#xff0c;为设计决策树的并行计算框架提供了新的思路和契机。 鸿蒙Next微内核特性概述 鸿蒙Next的微内核架构将核心功能模块化&#xff0c;仅保留进程管理、内存管…...

AWS Lambda

AWS Lambda 是 Amazon Web Services&#xff08;AWS&#xff09;提供的无服务器计算服务&#xff0c;它让开发者能够运行代码而不需要管理服务器或基础设施。AWS Lambda 会自动处理代码的执行、扩展和计费&#xff0c;开发者只需关注编写和部署代码&#xff0c;而无需担心底层硬…...

Python入门教程丨2.3 流程控制、算法效率分析及优化

流程控制是用于控制程序执行顺序的机制&#xff0c;它决定了程序中的语句按照何种顺序被执行。 本节课将详细讲解 Python 流程控制的三大核心结构&#xff1a;顺序、条件和循环&#xff0c;并配备一些小案例。 1. 顺序结构&#xff1a;从头到尾依次执行 顺序结构是程序中最基…...

NVIDIA发布个人超算利器project digital,标志着ai元年的开启

上图NVIDIA公司创始人兼首席执行官 黄仁勋&#xff08;Jensen Huang&#xff09; 这些年被大家熟知的赛博朋克风格一直都是未来的代言词&#xff0c;可以承载人类记忆的芯片&#xff0c;甚至能独立思考的仿生人&#xff0c;现在&#xff0c;随着NVIDIA的project digital发布之后…...

spring-mvc源码分析v3.3.0

分析下springboot内嵌tomcat启动流程&#xff0c;即springboot-mvc <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>3.3.0</version> </dependency>环境…...

反爬风控设计之请求头顺序检测

本次主要讲解请求头的顺序检测的反爬实现&#xff0c; 如下使用Django写的headers请求头顺序检验算法&#xff1a; def index(request):# 获取请求头的顺序request_order list(request.META.keys())print(request_order)# 定义标准请求头顺序standard_order ["HTTP_HO…...

力扣 查找元素的位置

二分查找经典例题。 题目 要是只是从数组中用二分查找对应的元素&#xff0c;套一下模板一下就可以得出了&#xff0c;然后这题就在于其中会有多个目标元素&#xff0c;要用不同的方式在找到第一个元素时再做偏移。 时间复杂度&#xff1a;O(log n)&#xff0c;空间复杂度&am…...

Android-V lmkd 中的那些属性值

源码基于&#xff1a;Android V 相关博文&#xff1a; Android lmkd 机制详解&#xff08;一&#xff09; Android lmkd 机制详解&#xff08;二&#xff09; Android lmkd 机制从R到T 1. 汇总 属性名说明默认值 ro.lmk.debug 启动 lmkd 的debug 模式&#xff0c;会打印一…...

LabVIEW 程序中的 R6025 错误

R6025错误 通常是 运行时库 错误&#xff0c;特别是与 C 运行时库 相关。这种错误通常会在程序运行时出现&#xff0c;尤其是在使用 C 编译的程序或依赖 C 运行时库的程序时。 ​ 可能的原因&#xff1a; 内存访问冲突&#xff1a; R6025 错误通常是由于程序在运行时访问无效内…...

vmware虚拟机配置ubuntu 18.04(20.04)静态IP地址

VMware版本 &#xff1a;VMware Workstation 17 Pro ubuntu版本&#xff1a;ubuntu-18.04.4-desktop-amd64 主机环境 win11 1. 修改 VMware虚拟网络编辑器 打开vmware&#xff0c;点击顶部的“编辑"菜单&#xff0c;打开 ”虚拟化网络编辑器“ 。 选择更改设置&#…...

mybatis延迟加载、缓存

目录 一、所需表 二、延迟加载 1.延迟加载概念 2.立即加载和延迟加载的应用场景 3.多对一延迟加载查询演示 (1)实体类 User Account (2)AccountMapper接口 (3)AccountMapper.xml (4)UserMapper接口 (5)UserMapper.xml (6)在总配置文件(mybatis-config.xml)中开启延…...

云上贵州多彩宝荣获仓颉社区先锋应用奖 | 助力数字政务新突破

在信息技术应用创新的浪潮中&#xff0c;仓颉社区吸引了众多企业和开发者的积极参与&#xff0c;已有多个应用成功落地&#xff0c;展现出蓬勃的创新活力。仓颉编程语言精心遴选了在社区建设、应用创新、开源共建、技术布道等方面做出突出贡献的优秀项目应用&#xff0c;并颁发…...

设计模式02:结构型设计模式之适配器模式使用情景及其基础Demo

1.适配器模式 用途&#xff1a;接口兼容评价&#xff1a;复杂、冗余、难以调试&#xff0c;个人认为直接在旧系统那里封装一个新实现调用旧实现就好了场景&#xff1a;系统A、B、C想调用同一个功能接口&#xff0c;但是实现细节存在差异时&#xff08;其实就是入参和出参转化处…...

镭速大文件传输视频文件预览实现原理

镭速可以支持视频预览&#xff0c;在测试过程中需要大量不同格式的视频&#xff0c;如果直接去找各种格式的视频不太现实&#xff0c;所以就会用到一个视频格式转换的工具ffmpeg&#xff0c;本文将介绍ffmpeg的基本使用方法。FFmpeg 是一个免费开源的音视频处理工具&#xff0c…...

Mac上安装Label Studio

在Mac上安装Anaconda并随后安装Label Studio&#xff0c;可以按照以下步骤进行&#xff1a; 1. 在Mac上安装Anaconda 首先&#xff0c;你需要从Anaconda的官方网站下载适用于Mac的安装程序。访问Anaconda官网&#xff0c;点击“Download Anaconda”按钮&#xff0c;选择适合M…...

git操作(Windows中GitHub)

使用git控制GitHub中的仓库版本&#xff0c;并在Windows桌面中创建与修改代码&#xff0c;与GitHub仓库进行同步。 创建自己的GitHub仓库 创建一个gen_code实验性仓库用来学习和验证git在Windows下的使用方法&#xff1a;https://github.com/Martianing/gen_code git初始设置…...

低代码平台:技术复杂性的系统简化

在传统开发模式下&#xff0c;应用构建需要经历需求分析、代码开发、测试部署等多环节&#xff0c;流程繁琐且耗时&#xff0c;往往成为企业技术创新的瓶颈。低代码平台通过模块化和自动化技术重新定义开发流程&#xff0c;使开发者能够在较短时间内实现复杂的应用功能&#xf…...

物联网网关Web服务器--lighttpd服务器部署与应用测试

以下是在国产ARM处理器E2000飞腾派开发板上部署 lighttpd 并进行 CGI 应用开发的步骤&#xff1a; 1、lighttpd简介 Lighttpd 是一款轻量级的开源 Web 服务器软件&#xff0c;具有以下特点和功能&#xff1a; 特点 轻量级&#xff1a;Lighttpd 在设计上注重轻量级和高效性&a…...

Flutter+vsCode 安装问题记录

VSCode在安装完AndroidSDK以及相关插件后&#xff0c;运行Flutter项目时选择模拟器提示&#xff1a;avdmanager is missing from the Android SDK&#xff0c;确保环境变量中存在ANDROID_HOME&#xff0c;且执行了flutter config --android-sdk 地址后&#xff0c;如果还提示&a…...

【CompletableFuture实战】

CompletableFuture实战 前言 前言 过去的一年&#xff0c;匆匆忙忙&#xff0c;换了一次工作&#xff0c;写博客的习惯就落下了&#xff0c;总之&#xff0c;有点懈怠。希望今年能重拾信心&#xff0c;步入正规&#xff01; CompletableFuture的用法网上资料颇多&#xff0c;…...