本页自动汇总「1经验」分类下的全部笔记(含子分类),随笔记增删实时更新。

在 GitHub 上提交 Pull Request(简称 PR,拉取请求)是参与开源项目或团队协作的核心方式。简单来说,就是把你修改好的代码“请求”合并到别人的项目里。

以下是提交 PR 的完整标准流程,你可以把它看作一份新手避坑指南:

🌱 1. Fork 项目(复制一份到你自己的仓库)

在你想要贡献代码的项目主页,点击右上角的 Fork 按钮。这会在你的 GitHub 账号下生成一个该项目的完整副本。

💻 2. Clone 到本地(把代码下载到电脑)

打开你 Fork 后的仓库,点击绿色的 Code 按钮,复制仓库的 HTTPS 或 SSH 链接。在本地终端(命令行)中执行克隆命令:
git clone 你的仓库链接

🌿 3. 配置上游仓库与创建分支(关键步骤)

进入项目文件夹后,千万不要直接在主分支(main/master)上修改代码!

  • 添加上游仓库:为了后续能同步原项目的最新代码,需要把原项目添加为上游仓库(upstream)。
    git remote add upstream 原项目的仓库链接
  • 同步最新代码:先拉取原项目的最新代码,确保你的基础是最新的。
    git checkout main 然后 git pull upstream main
  • 创建新分支:基于最新的 main 分支,创建并切换到一个新的功能分支。分支名最好有意义,例如 fix/typo-in-readme(修复文档错别字)或 feature/new-login(新增登录功能)。
    git checkout -b fix/typo-in-readme

✏️ 4. 开发与提交(写代码与 Commit)

在本地用你喜欢的编辑器修改代码。修改完成后,执行以下 Git 操作:

  • git add . (将修改加入暂存区)
  • git commit -m "docs: fix typo in installation guide" (提交代码)
    • 提示:Commit 信息最好遵循规范,比如 feat: 表示新功能,fix: 表示修 Bug,docs: 表示改文档,这样会显得非常专业。
  • git push origin fix/typo-in-readme (将你的分支推送到你远程的 GitHub 仓库)

🚀 5. 提交 Pull Request(发起合并请求)

代码推送到你的 GitHub 仓库后,打开你的仓库页面,通常会看到一个醒目的 Compare & pull request 按钮,点击它(或者去原项目的 Pull requests 页面点击 New pull request)。

  • 填写 PR 描述:标题要简明扼要。在描述框里写清楚你解决了什么问题、是怎么修改的,如果有相关的 Issue 编号也可以关联(如 Closes #123)。
  • 点击 Create pull request:正式提交请求,通知原项目的维护者来审查你的代码。

🔄 6. 应对反馈与合并(代码审查)

提交后,项目维护者会 Review 你的代码:

  • 如果需要修改:直接在本地同一个分支(fix/typo-in-readme)上继续修改,然后再次 add、commit、push。PR 会自动更新,不需要重新提交。
  • 如果发生冲突:如果原项目在你修改期间有了新更新,你可能需要先在本地 pull upstream main 并解决冲突,然后再 push。
  • 大功告成:维护者审核通过后,会点击 Merge pull request。你的代码就正式被合入原项目了!🎉

🧹 7. 收尾清理

PR 合并后,记得清理一下本地和远程的临时分支,保持环境整洁:

  • 切回主分支并拉取最新代码:git checkout main 和 git pull upstream main
  • 删除本地功能分支:git branch -d fix/typo-in-readme

💡 给新手的建议:
如果你是第一次尝试,可以先从修复文档错别字、翻译或修正链接开始,这些都是非常受欢迎的入门贡献。另外,动手前记得阅读项目里的 CONTRIBUTING.md 文件,里面通常包含了该项目的具体贡献规范。祝你第一次提 PR 顺利!

实践环境

物理机:Windows10 专业版,操作系统版本 17134.950 (查看方式:Win+R 打开运行 -> 输入 winver)

虚拟机:Ubuntu20.04.2 LTS (查看方式: cat /etc/issue)

linux-vm-tools 简介

在 Hyper-V 中的刚安装好 Ubuntu 虚拟机之后,会发现鼠标滑动很不顺畅,也不能向虚拟机中拖拽文件或者复制内容。在 VMware 中,可以通过安装 VMware tools 来使物理机和虚拟机之间达到更好的交互。在 Hyper-V 中,也有这样的工具。这款工具可以完成更好的鼠标交互,我的实践结果发现它可以在物理机和虚拟机之间复制粘贴(包括文字和文件),不支持在两者之间拖拽文件。这是一款Windows与XRDP合作开发的工具 —— linux-vm-tools。

微软官方技术论坛关于 linux-vm-tools 的说明 click here

操作 Ubuntu 虚拟机

在 Ubuntu 打开终端(Terminal),准备执行命令

1.安装 git

sudo apt-get update
sudo apt install git

第一条命令是为了更新 apt-get ,防止执行第二条命令时出现 软件包 git 还没有可供安装的候选者 的错误。

2.用 git 下载源码

git clone https://github.com/microsoft/linux-vm-tools

这条命令会将 linux-vm-tools 下载到 /home/{你的用户名}/linux-vm-tools 文件夹下。

如果遇到一些网络不好,下载超时的情况,可以试一下下面这个备用地址:

git clone https://hub.fastgit.org/microsoft/linux-vm-tools

3.安装 linux-vm-tools

cd ~/linux-vm-tools/ubuntu/18.04/
sudo chmod +x install.sh
sudo ./install.sh

第一条指令,进入 ubuntu 18.04 的文件夹;
第二条指令,修改 install.sh 文件,使其可执行;
第三条指令,执行 install.sh

因为我在 /ubuntu/18.04 中没有看到 config-user.sh 文件,因此就没有执行 sudo chmod +x config-user.sh 和 sudo ./config-user.sh

image

install.sh 执行到最后,出现如上图所示的操作指示:

1、执行重启:

reboot

2、重启后,再次执行 install.sh 这个文件

sudo bash ~/linux-vm-tools/ubuntu/18.04/install.sh

Ubuntu20.04.2无法启动xrdp 问题解决方案 click here

3、虚拟机Ubuntu立即关机

sudo shutdown now

操作 Windows 10 主机

打开 PowerShell 操作符:

Set-VM -VMName <your_vm_name>  -EnhancedSessionTransportType HvSocket

举例:

在 Ubuntu 上创建一个新用户

创建一个新用户专门用来通过 远程桌面连接 登录 Ubuntu,了解更多 click here

su root
adduser ubuntu

创建一个新的用户可以避免一些蓝屏和黑屏的问题。

参考文档

  1. Windows10使用Xrdp远程桌面连接Ubuntu主机 click here
  2. 微软官方技术论坛关于 linux-vm-tools 的说明 click here
  3. ubuntu桌面 黑屏_Win10远程桌面连接Ubuntu 20.04 click here
  4. Ubuntu16.04系统中创建新用户 click here

排查方法:看看是不是你的请求链接写错了,详细对照以下几点

① http写成https

② 端口号写错了

③ 网址写错了!!!

Java和C++的区别

  1. C++中的virtual虚函数,Java中不用什么前缀,子类直接重写即可,用@Override作标记

  2. C++中的纯虚函数,Java中加abstract前缀,且类也要声明为抽象类,C++不用声明

  3. Java中的接口,其实就是一个抽象类,里面都是常量和abstract方法,记住,都是常量和abstract方法,都是常量和abstract方法

  4. C++中通过类名访问静态成员与Java不一样,

    • C++的格式是 类名::成员变量名
    • Java的格式是 类名.静态成员变量名
  5. 还有,C++类名::成员变量名,其中,只要是类中公有的成员,都可以访问(不晓得为啥,明明对象都还没有,怎么来的内存),而Java只能访问静态成员。

  6. 问题:重写了接口里面的abstract方法之后怎么调用?
    答:new一个实现类就行了

  7. C++中对象可以是栈区

继承的那些事

==子类继承父类的变量和函数(理解:只能继承财富和技能,继承不了身体)==

父类和子类有重名的定义时:

子类的可以直接访问​了,父类要在前加this

父类的虚函数可以重写或者不重写(不重写就用父类的,不用想都明白),但纯虚函数必须重写。

只有纯虚函数没有函数体以外,其他的函数都要有函数体,不然会报函数未定义的错误

类成员的访问属性

0

继承九宫格

0

之前你一直不理解的问题:继承不是公有属性时,怎么理解?

答:若继承为保护属性,能改变的只是基类中的公有属性,若继承为私有属性,能改变的只是基类中的(公有属性/保护属性),看上面那表就知道,一级压一级,看完上面的表之后再看上一点那表你就理解了

  1. Java源文件的名字跟类中的public修饰的类一样。
  2. Java的一个类中可以没有public类,有也只能有一个,且要与源文件同名,非public类可以有多个
  3. Java里面的char占两个字节
  4. float类型的变量怎么与double区别的呢?
    答:值后面加上f或F
  5. Java中 int[]a,b; //其实是定义了两个一维数组,名字分别为a、b,int a[],b; //才是定义了一个数组a和一个变量b
  6. Java中数组是引用来的,所以数组需要new才能使用,要不然就只能在定义时初始化,即int a[20];在Java中不对,应为int a[]=new int[20];
  7. 循环语句的判断表达式只能是boolean类型,但是switch除了double和float,其他都可以
  8. 数据类型转换中的注意事项:
    答:如果是在定义时就初始化的话,只要不超所定义数据类型的取值范围都可,在进行运算的表达式中,整数是int类型,小数是double类型,所有低于int类型的数据在运算之后都会转成int类型
  9. 逻辑运算符和关系运算符的结果都是true或false,不是0或1
  10. Java里面的所有条件表达式都必须是boolean类型,如while(1)是错误的

① 公司中是用html+css还是用vue

答:

这得看应用场景,如果需要被搜索引擎搜录 -> html+css

不需要,只需要服务于特定群体,而且要快速落地 -> Vue

② 为什么很多公司都用第三方组件

答:

因为谁都不想消耗巨大的人力和物力造轮子,公司主要看效益,能用就行,能赚钱就行

③ 为什么很多公司喜欢用老版本的东西(例如JDK8)

答: 稳定性!!!

版本问题,很多公司肯定是用最稳定的框架,因为稳定才是一个企业发展的根基,不然就像你那时候遇到的那个最sb的bug一样(代码死在加载模型那里,我真的艹了,重装了好几次操作系统和环境都不行,真的日了),如果从技术的手段来处理都处理不了,那么只能推倒重来,其中消耗的人力物力是一个企业无法承担的

所以最核心的思想就是

0

在 Linux 中,文件和目录的操作是非常基础且常用的。下面整理了一些常见的命令,涵盖文件操作、目录操作、文件与目录之间的操作以及目录与目录之间的操作。


一、文件操作(File Operations)

功能 命令 说明
创建文件 touch filename 创建一个空文件或更新已有文件的时间戳
查看文件内容 cat filename 显示整个文件内容
分页查看文件 less filename 适合查看大文件
查看文件前几行 head -n 10 filename 默认显示前10行
查看文件后几行 tail -n 10 filename 默认显示后10行;tail -f 可持续跟踪日志
复制文件 cp file1 file2 将 file1 复制为 file2
移动/重命名文件 mv oldname newname 也可用于重命名
删除文件 rm filename 删除单个文件;rm -i​ 安全确认;rm -f 强制删除
查看文件类型 file filename 判断文件真实类型(如文本、二进制等)
查看文件大小 ls -lh filename 以易读方式显示文件大小

二、目录操作(Directory Operations)

功能 命令 说明
创建目录 mkdir dirname 创建一个目录
递归创建多级目录 mkdir -p dir1/dir2/dir3 自动创建所有不存在的父目录
删除空目录 rmdir dirname 只能删除空目录
删除非空目录 rm -r dirname 递归删除目录及内容;加 -f 可强制删除
进入目录 cd dirname 切换当前工作目录
返回上一级 cd .. 返回父目录
返回家目录 cd​ 或 cd ~ 回到当前用户的主目录
查看当前路径 pwd 显示当前工作目录的绝对路径
列出目录内容 ls​ / ls -l​ / ls -a -l​ 详细信息,-a 显示隐藏文件

三、文件与目录之间的操作

功能 命令 说明
将文件复制到目录 cp file.txt /path/to/dir/ 目标必须是目录
将文件移动到目录 mv file.txt /path/to/dir/ 移动后原文件消失
在目录中创建文件 touch /path/to/dir/newfile 直接指定路径创建
查找某目录下的文件 find /path/to/dir -name "filename" 按名称查找文件
批量操作(如删除某类文件) rm /path/to/dir/*.log 删除目录下所有 .log 文件

四、目录与目录之间的操作

功能 命令 说明
复制整个目录 cp -r dir1 dir2 -r 表示递归复制所有子内容
移动/重命名目录 mv dir1 dir2 若 dir2 不存在,则重命名;若存在,则移动到其内部
同步两个目录(增量备份) rsync -av dir1/ dir2/ 高效同步,保留权限、时间等;注意末尾 / 的区别
比较两个目录差异 diff -r dir1 dir2 递归比较目录内容
合并目录内容 cp -r dir1/* dir2/ 将 dir1 所有内容复制到 dir2(不覆盖同名需加 -n)

⚠️ 注意:rsync 是高级但非常实用的工具,常用于备份和镜像。


补充建议

  • 使用 man 命令​(如 man cp)查看命令的完整手册。
  • 操作前建议先用 ls 确认路径和文件名。
  • 删除操作(尤其是 rm -rf)要格外小心,不可恢复!

keysqiu.bakup.sh

keysqiu.restore_latest.sh

MP4视频测试URL地址,亲测有效_视频地址-CSDN博客

如果你在使用一个框架,在具体业务逻辑中得到意料之外的结果,除去特殊情况,一般就是还有一些代码其他人写的,你还没找到罢了

for<=2层,if<=3层

2147483646

Centos查看Ip地址命令:ip addr

使用Linux 时不要乱删或乱改根目录下的东西(非必要)。家目录随便你操作,再乱删、乱改 剁手!!!

查看名称对应进程ID(​ps -ef | grep 名字****​ )

图形化模式查看Linux的硬盘使用情况:baobab

修复 U 盘命令:chkdsk /f [U 盘挂载盘符号]

一、随心记

⚠️⚠️⚠️项目部署到服务器时,注意把前端和后端用到的端口在安全组里面都打开

无论是 Windows 还是 Linux,在终端输入的命令,第一个输入的肯定是那个工具的全称或者是缩写,也就是可以直接跑的一个程序(比如说 python xxx,其实就是 python.exe xxx,java xxx,其实就是 java.exe),其他后面的后缀都是它里面可以解析的指令集,大悟彻悟 – 2024.3.11 0:22😊😊

调试程序找bug的两大杀器, !!! 注释+输出语句 !!!

一定要善于使用工具(tools/utils),特别是别人已经有的工具(一定不要自己造轮子,没必要),还有Python(这可真是个好东西)

复制粘贴固然好用,但是也容易出问题,一下小小的地方没改过来(得找半天,我哭死😭),反正很细节

编写程序的一个很好用的思路:标志位

开发什么东西都差不多,无论是游戏还是软件还是一些其他的什么东西,凡是关于计算机的,通通都是一个个函数堆起来的,就那样,简简单单,有手就行

在Ubuntu编译C++项目时,如果项目编译完仍没有生成可执行文件,那么一定是CMakeLists里面写的有问题

sprintf函数的作用:在一个字符串中需要夹杂着可变数字,就需要sprintf来格式化一下

Ubuntu输出段错误(核心已转储),一般为程序抛的异常,类似与VS的中断一样。

C# 好像Java还没独立完的样子,有点C,又有点Java

①:g_标识符:定义全局变量

②:局部变量的一种可爱用法:用来当开关使用,您细品

③:检查bug的步骤:

(1)语法有没有问题

(2)访问有没有问题

(3)逻辑有没有问题

④:经验: (直接记)

a指针=b指针,说明a指针指向b指针指向的地方

a指针=b内容,说明a指针指向b内容

⑤:尽量不要用l和o对变量进行命名,因为它会和1、0混淆

⑥:npm install安装vue所需包报错时,如果出现的问题不知道咋解决,可以考虑把项目下的 package-lock.json 先删掉,在npm install试试

二、免费获取图片网站(测试用):

https://picsum.photos/200

三、安装python包的万能命令:

安装

单个包:pip install [包名] -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
requirements.txt文件:pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

卸载

卸载
单个包:pip uninstall [包名] 
requirements.txt文件:pip uninstall -r requirements.txt		#然后一直按回车即可

四、二维数组下标规律

① 主对角线上的下标,主对角线上的每一个下标的行下标等于列下标

② 副对角线上的下标,副对角线上的每一个下标的行下标+列下标都等于一个特定的值

五、栈损坏

栈损坏一般的考虑情况

①:数组大小太小,不够装下所要存储的数据

②:数组下标访问越界

六、C++指针异常问题

C++异常:如果读入位置为0X00000000,则是野指针错误

如果读入位置为0X41123341(随便一个地址),则是指针访问越界

七、快速熟悉一个框架

如何快速熟悉一个框架:

①资源文件在哪里加载?

②框架的属性在哪里改,这个组件有什么作用,具有事件的代码在哪里写?

八、输出错误

C/C++输出-nan(ind)的问题:对负数开平方,对负数取对数,0.0除以0.0,0.0乘无穷大∞,无穷大∞除以无穷大∞ 等错误都会得到它

下载安装包和破解工具

**链接:**​https://pan.baidu.com/s/1omVvljarD88EiJY1dSkqnw?pwd=dmue
提取码:dmue
–来自百度网盘超级会员V5的分享

破解工具

**链接:**​https://pan.baidu.com/s/1nVYZTjwzXHoa4IfosWB7ow?pwd=72wg
提取码:72wg
–来自百度网盘超级会员V5的分享

开始安装

下载好后首先安装 Navicat Premium 15 ,此安装比较简单,我就不全部截图,​选定安装位置后​全部点下一步

开始激活(退出所有杀毒软件)

使用注册机,退出所有杀毒软件,再打开注册机,否则会一直报错 no All Pattern Found! File Already Patched?

注册机报错提示
**在激活工具的第一个选项(1.Patch)里选择Backup,Host,Navicat 是那个版本就选那个版本,这里就选择Navicat V15就好了,然后点击,Patch按钮,**​选择Navicat的安装位置中的navicat.exe文件

出现以下提示说明Patch成功了。

License. Product and LanguageLicense里选中Enterprise、在Produce里选择Premium、在Languages里选择Simplified Chinese(简体中文)

Resale License
选择Site License

Keygen / Offline Activation
点击Generate按钮就会生成一个​许可证秘钥​ ,将许可证秘钥复制后就打开Navicat Premium 15

打开Navicat Premium 15,点击注册

粘贴秘钥,然后点击激活按钮

在弹出的界面选择手动激活

将请求码粘贴到注册机Request Code框中

点击激活页面的激活弹出(说明激活成功)


恭喜,激活成功啦!!

一、下载安装包

链接: https://pan.baidu.com/s/1RCZQXYtEPr9TooOUeSjMIQ?pwd=ywmk
提取码:ywmk
–来自百度网盘超级会员V5的分享

下载后的目录如图所示

二、Postman安装

双击目录下的​Postman-win64-9.10.0-Setup.exe​即可自动安装

三、Postman汉化

三、Postman汉化

找到postman的安装目录,然后会看到resources文件夹,把刚下载的汉化包复制到此当前文件夹即可!!

0

放好了之后,重启一下postman,就可以看到原来的英语基本变成中文了!!!

0

四、关闭自动更新

① 把postman目录下的update删除

(点击桌面的postman,右键点击,然后选择文件所在位置,即可看到)

0

② 然后在postman里面选择把自动更新关闭!!!

0

缓存的意义在于可以保护后台的接口不被大量的请求所攻击
逻辑是这样的:
1、客户端第一次请求的话,先从数据库中查询到数据并将其写入Redis缓存中,后面都是直接从Redis里面读
2、(​最简单的处理,如需复杂一点的处理,后面再跟进记录****​ )除了查询,如果后台对数据进行了增加、修改、删除,那么后台会把Redis缓存清除(对应的键值),前端再次请求,还是从数据库里面获取并将其写入Redis缓存

方法一:打开sublime——首选项(preferences)——设置(setting)


然后加入下面这一句代码,重新打开Sublime Text3

"update_check":false


如果方法一不行,用方法二

方法二:打开hosts文件,在里面加入下面两句

文件路径参考:C:\Windows\System32\drivers\etc

127.0.0.1 license.sublimehq.com
127.0.0.1 www.sublimetext.com

然后保存,打开Sublime,无更新提示!

  1. 主要是两个脚本文件,train.py(模型训练脚本文件),detect.py(利用训练出来最好的权重文件进行推理的脚本文件)
  2. 流程为:先用开始模型自带的权重文件进行训练,等到模型训练完之后会生成一个最好的权重文件,然后利用这个最好的权重文件进行推理
  3. 需要更改的文件:一个是data目录下的相应的yaml文件,一个是model目录文件下的相应的yaml文件,一个是train.py(模型训练脚本文件)

一台电脑会有65536个端口,计算是由256*256得出,端口号从0开始到65535.

  1. 公认端口(baiWell Known Ports):从0到1023,它们紧密绑定于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。
  2. 注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。
  3. 动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。

乐观锁:先改,提交时再看有没有人动过,有就重来;
悲观锁:先占住,别人等我改完才能动。

作用:普通型http(s)隧道穿透,用于搭建网站,微信开发等穿透到本地web服务

1 安装NATAPP软件

将下面文件解压到一个目录

natapp_windows_amd64_2_3_9.zip

解压后,文件夹的内容如下

0

主要是替换natapp.bat下的authtoken,具体authtoken怎么获取,请从第2点开始看

0

2 去NATAPP官网申请一个authtoken

NATAPP官网:https://natapp.cn/tunnel/buy/free

2.1 购买免费隧道

0

0

2.2 修改购买隧道的配置,我这里用的是8080

1764769408846

获取authtoken,购买完成后,在左侧菜单栏找到我的隧道,如下图所示

1764769427253

注:vue项目

vue项目应该在devServer下添加disableHostCheck: true,跳过检查;否则会报Invalid Host header

1764769415944

哈希表

哈希表的思想就是一个数组的下标嵌套另一个数组的值,形成一个键值的对应关系,将键作为数组的索引,数组中索引为i存储的值就是它对应的值

栈

栈的指针为什么一开始赋值为-1,这是因为当压入数据时,可以使(下标++)的代码不用特殊处理,也就是一直(下标++)

二叉树的遍历

由前序知道树的根节点是哪个,再到中序中找他的左右子树,如果没有就是空,如果有多个就继续在前序中把下一个当根节点(理解为遍历,一定要一个个遍历,不要怀疑,肯定对的)
其实用到了递归的思想,一点点地拆分,您细品就知道了!
(遍历看的时候,先总体看,再细分)

问:新手学Python容易上手吗?

答:建议直接从项目开始做

某个东西,你想做但不会,就去抄一个项目,先跑起来

比如你想爬百度的内容,肯定有人做过

你就直接抄过来,能跑就是第一步

然后开始改

改着改着你就入门了

这比你看枯燥的课程快多了

然后学一学基本的语法就ok了

(注:一开始最好不要直接看项目具体的逻辑,先跑起来再说,这个思想很重要!!!)
**1、**​ ******(也是最重要的一步)******​ ,按照上一个开发者的 readme 配好环境,(如果没有 readme,那就量力而行,看看这个框架自己熟不熟悉需要哪些环境,或者 CSDN 一下,一般项目都有 readme 的)
2、项目跑起来了(注:这里跑起来的意思是没有报错❎,有警告⚠️不鸟他)
3、代码跑起来了之后,到处玩玩这个项目,看看点击那个按钮有什么效果
4、等自己玩的差不多知道它是用来干嘛的时候,再尝试改项目

首先:两台电脑需要在同一个局域网里面,且能ping通对方

一、创建Hyper-V共享文件夹

步骤1. 在Hyper-V主机中创建一个文件夹,并将您想要传输的文件放入此文件夹中。

步骤2. 右键单击此文件夹,依次选择 “属性”>“共享”>“共享” ,然后添加 “Everyone” 用户并将其权限级别设置为 “读取/写入” 并单击下方的 “共享” 按钮。

0

步骤3. 此后将出现一个弹窗,里面有此共享文件夹的路径,请您复制此路径并妥善保存,以便之后能够顺利访问此共享文件夹,然后单击 “完成” 。

0

步骤4. 此时您已经成功在本地计算机中创建了共享文件夹,然后您需要在Hyper-V中将此网络位置添加到虚拟机。所以请您打开Hyper-V虚拟机,选择 “此电脑” ,然后选择 “映射为网络驱动器” 。

0

步骤5. 在弹出窗口中您可以设置网络驱动器的驱动器号,在下方文件夹框处输入刚刚复制的共享文件夹路径,勾选 “登录时重新连接” ,然后单击 “完成” 即可在虚拟机上成功映射出本地计算机上的共享文件夹,您可以随时访问,从而达成Hyper-V虚拟机共享文件的目的。 (如果需要输入账号密码,随便输入宿主机一个用户的账号和密码即可)

0

‍

  • 字段是否走了索引,走不走索引的效率差了几百倍
  • 批量操作
  • 连接的表不要过多
  • ==避免使用 select==
  • 小表驱动大表
  • 使用 limit
  • 使用 union all 代替 union
  • 口诀:in 小,exists 大,in 先内后外,exists 先外后内

2023 年 11 月 21 日 00:10
总之记得一句话,文件多的文件夹打包传输

前言:如果服务器需要访问外网的服务,不要选择内地的,内地的会被屏蔽用不了,推荐选择中国香港的

服务器配置选择:

  • 1-10人使用:1核2G
  • 10-30人使用:2核4G
  • 30-100人使用:4核8G
  • 100人以上使用:8核16G

文件注释:

@file - 文件名
@author - 作者
@version - 版本
@date - 日期
@note - 注解

函数注释:

@brief - 简短说明
@param - 输入参数
@arg - 输入参数取值
@return - 返回值
@retval - 返回值取值
@sa -参考资料(see also)
@code -在文档当中嵌入代码块,代码结尾处使用@endcode标签
@addtogroup、@{、@}添加到一个分组,如果分组不存在,自动创建
@todo -将要做的事
@since - 从哪个版本起有了这个函数
多行注释:/**
*
*/
单行注释://
根据Doxygen生成帮助文档。
命名空间:禁止使用 using 指示 引入整个命名空间的标识符号(污染命名空间),在命名空间的最后注释出命名空间的名字。

TFS:子分支起点,合并到主分支

Git:主分支起点,合子分支

  1. 内存擦拭金手指还是点不亮:说明主板有问题
  2. 显卡和主板最容易坏,CPU 和内存、硬盘那些都很难坏的
  3. CPU 和显卡温度 正常不会超过 70

始终记得一个理念:
非必要,不要自己造轮子,不要觉得全部自己写的就是好的,一定要站在巨人的肩膀上开发,能实现需求就行,管你怎么实现的
多用别人写好的库,真的香
最后

C、C++版

////////////////////////////////////////////////////////////////////
//                          _ooOoo_                               //
//                         o8888888o                              //
//                         88" . "88                              //
//                         (| ^_^ |)                              //
//                         O\  =  /O                              //
//                      ____/`---'\____                           //
//                    .'  \\|     |//  `.                         //
//                   /  \\|||  :  |||//  \                        //
//                  /  _||||| -:- |||||-  \                       //
//                  |   | \\\  -  /// |   |                       //
//                  | \_|  ''\---/''  |   |                       //
//                  \  .-\__  `-`  ___/-. /                       //
//                ___`. .'  /--.--\  `. . ___                     //
//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
//      ========`-.____`-.___\_____/___.-`____.-'========         //
//                           `=---='                              //
//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
//            佛祖保佑       永不宕机     永无BUG                   //
////////////////////////////////////////////////////////////////////

Python版

'''
//                          _ooOoo_                               //
//                         o8888888o                              //
//                         88" . "88                              //
//                         (| ^_^ |)                              //
//                         O\  =  /O                              //
//                      ____/`---'\____                           //
//                    .'  \\|     |//  `.                         //
//                   /  \\|||  :  |||//  \                        //
//                  /  _||||| -:- |||||-  \                       //
//                  |   | \\\  -  /// |   |                       //
//                  | \_|  ''\---/''  |   |                       //
//                  \  .-\__  `-`  ___/-. /                       //
//                ___`. .'  /--.--\  `. . ___                     //
//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
//      ========`-.____`-.___\_____/___.-`____.-'========         //
//                           `=---='                              //
//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
//            佛祖保佑       永不宕机     永无BUG                   //
////////////////////////////////////////////////////////////////////
'''

1、网站的脚本有两种形式写法:js和ts

3、Axios和Ajax的区别

axios是通过Promise(Promise技术,说人话就是把异步变同步,只需要在代码中加入async、await,解决了​******传统 Ajax 回调函数嵌套问题,因为传统的 Ajax 异步调用在需要多个操作的时候,会导致多个回调函数嵌套,导致代码不够直观,就是常说的 Callback Hell (“回调地狱”****​ )​实现对ajax技术的一种封装,就像jquery对ajax的封装一样,**​总结一句话就是axios是ajax,ajax不止axios)。

注: 传统Ajax 指的是 XMLHttpRequest(XHR),axios和jQuer ajax都是对Ajax的封装。

主板和 CPU 要配对,其他的都是通用的
CPU:Intel,AMD
主板:技嘉,华硕
内存条:金士顿,海盗船,游戏威龙
显卡:七彩虹,华硕,影驰
固态:三星

1、父辈比子辈多一辈,所以父进程的pid为1,子进程的pid为0
2、sleep(1)的作用是在子进程尝试使用sem_p()获取信号量之前引入1秒的延迟。这个延迟给父进程足够的时间将字符串写入文件并使用sem_v()释放信号量。如果没有这个延迟,存在子进程在父进程写入文件之前执行的可能性(主要是为了限制进程的不可预测性,您细品),导致子进程读取到空字符串或不完整的字符串。通过引入延迟,确保了父进程和子进程之间的正确同步。


输入regedit

找到路径

计算机\HKEY_CLASSES_ROOT\Directory\Background\shell

现在开始创建一个新的

默认情况是这样,我写了一个android 2

双击下面图片内容



下面开始




然后在写入地址

然后将command项的右边的数值改为"D:\android-config\android-studio\bin\studio64.exe" “%V”,软件安装的具体路径要按照各自的路径来

就可以右键文件夹了

实现一个需求时,无论是别人给的还是自己想的,切记第一点:一开始一定不要想的很复杂,先想最简单的,并且实现它,拿QQ来说,刚开始出来的时候也没多美观啊,只实现了最基本的两个客户端之前互相聊天(​开始可能也没考虑什么高并发啊,这些乱七八糟的****​ ),后面界面的变化都是后来的事情了,反正你就记得,先有,你才有改的余地,不管你怎么实现的,只要你能实现预期的效果就行,“不管白猫黑猫,只要能抓到老鼠的就是好猫”

1、频繁使用、并发率高的表尽量使用DB.Update进行更新对应的字段,使用RF.Save更新会存在字段被覆盖更新的情况
2、批处理与延迟提交,使用批量插入/更新数据,减少数据库往返次数。
3、能使用异步处理,尽量使用异步、消息队列处理,可降低主线程阻塞情况。