十大经典排序算法-C语言实现
冒泡排序相邻的两个数据进行比较,小的数放到前面,大的放到后面。
123456789101112131415161718192021222324252627282930313233343536// 冒泡法void bubSort(int arr[], int arrLen){ while(arrLen--) { for (int i = 0; i < arrLen; i++) { if (arr[i] > arr[i+1]) { int temp = arr[i]; arr[i] = arr[i+1]; arr[i+1] = temp; } } }}// 优化,当已经是顺序时无需再排序void bubSortPro(int arr[], int arrLen){ int ...
基于立创泰山派的Linux驱动开发笔记
资料汇总硬件设计立创-泰山派开发板
文档资料【立创·泰山派RK3566】开发板
视频资料BiliBili-立创泰山派训练营
BiliBili-泰山派驱动开发
BiliBili-北京迅为-嵌入式学习之Linux驱动篇
开发环境搭建在虚拟机上安装 Ubuntu18虚拟机介绍虚拟机(Virtual Machine,简称VM)是一种计算机软件模拟的计算机系统。它模拟了足够多的硬件,以实现一个完整的、独立的计算环境,可以在一个物理机器(宿主机)上同时运行多个独立的操作系统(客户机操作系统)。虚拟机的关键特性包括:
隔离性:每个虚拟机都运行在自己的环境中,与其他虚拟机和宿主机操作系统隔离,这意味着一个虚拟机的崩溃或故障不会影响到其他虚拟机或宿主机。
封装性:虚拟机通常以文件形式存在,可以很容易地备份、复制、迁移或恢复。
硬件无关性:虚拟机可以在不同的物理硬件上运行,只要该硬件上安装了相应的虚拟化软件。
资源分配:虚拟机可以指定分配给它的CPU、内存、存储和网络资源,允许用户根据需要调整资源分配。虚拟机通常由以下几部分组成:
虚拟化层(Hypervisor):这是运行在物理硬件上的软件层,负责 ...
bit1个数计算算法
BK算法(Brian Kernighan’s算法)123456789101112unsigned char countBit1InByte(unsigned char byte){ unsigned char count = 0; while (byte) { byte &= (byte - 1); count++; } return count;}
此算法的思想是利用 n & (n-1) 可以将 n 的最右边的 1 置零的特性,通过迭代直到 n 变为 0,统计迭代次数即可。
它的运行时间与字节中bit1的位数成正比,而不是与字节的总位数成正比。因此计算效率不稳定,适用于bit1较少的场景。
位移法123456789101112131415161718192021222324252627282930313233#include <stdio.h> typedef unsigned char BYTE;typedef unsigned short WOR ...
bat脚本
🚲 🚗 ✈️ 🚀
🚀 桌面快捷方式箭头和盾牌去除123456789101112131415@REM 此脚本需要以管理员身份运行@REM 快捷方式小箭头和需要提权运行的提示图标均为透明图标reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons" /v 29 /d "%systemroot%\system32\imageres.dll,197" /t reg_sz /freg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons" /v 77 /d "%systemroot%\system32\imageres.dll,197" /t reg_sz /f@REM 关闭文件资源管理器taskkill /f /im explorer.exe@REM 清除原先的图标缓 ...
RaspberryPi-PICO新建工程
🚲 🚗 ✈️ 🚀
🚀 工程文件目录组成以创建一个 blink 工程为例
首先新建一个 blink 目录,该目录结构如下所示:
1234567.└── blink ├── build ├── CMakeLists.txt ├── main │ └── blink.c └── pico_sdk_import.cmake
build 和 main 是目录,build 用于存放编译后的文件,main 目录则用于存放工程相关的 .c 和 .h 文件。
pico_sdk_import.cmake 这个文件是从 pico-sdk 中拷贝过来的,拷贝命令如下:
1cp $PICO_SDK_PATH/external/pico_sdk_import.cmake .
CMakeLists.txt 是 CMake 的配置文件,内容如下:
123456789101112131415161718192021222324# 指定最低的cmake版本cmake_minimum_required(VERSION 3.12)# 指定依赖文件include(pico_sdk_im ...
LeetCode面试必刷75题
🚲 🚗 ✈️ 🚀
🚀 交替合并字符串 - 简单题目:
给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。
如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。
返回 合并后的字符串 。
示例 1:
输入:word1 = “abc”, word2 = “pqr” 输出:”apbqcr” 合并后: apbqcr
示例 2:
输入:word1 = “ab”, word2 = “pqrs” 输出:”apbqrs” 解释:注意,word2 比 word1 长,”rs” 需要追加到合并后字符串的末尾。 合并后:apbqrs
示例 3:
输入:word1 = “abcd”, word2 = “pq” 输出:”apbqcd” 解释:注意,word1 比 word2 长,”cd” 需要追加到合并后字符串的末尾。 合并后:apbqcd
题解 - 暴力求解定义一个数组或列表,依次读取word1和word2的字符并存储在该数组上,最后返回该数组。
12345678910111213141 ...
python离线安装库
🚲 🚗 ✈️ 🚀
以DrissionPage库为例
首先在一个可以联网的电脑可以离线安装包以及依赖库
12# 使用中科大镜像源下载离线安装包以及依赖库,下载到当前目录pip download -d ./ -i https://pypi.mirrors.ustc.edu.cn/simple/ DrissionPage
新建 requirement.txt 文件。
然后将命令行上的包文件名按照倒序的方式复制到 requirement.txt 中。
可以将所有Saved开头的文字一起负责到 requirement.txt ,然后用 vscode 打开,将前面的文字一起删除,最后进行倒序即可。
将文件夹拷贝到需要离线安装的电脑,并进入文件夹内,使用下面的命令进行安装。
1pip install -r requirement.txt ##按照脚本内安装包的顺序安装库
python脚本
🚲 🚗 ✈️ 🚀
🚀 修改文件名功能,打印当前目录下所有文件的文件名,并将文件名中的 ‘.’ 和 ‘-‘ 之间的字符替换成 ‘__’ (包括’.’ 和 ‘-‘ )。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546import osimport re# 获取指定目录下的所有文件名def get_file_names(directory): # 遍历目录下的所有文件,并将文件名添加到列表中 file_names = [] for filename in os.listdir(directory): if os.path.isfile(os.path.join(directory, filename)): file_names.append(filename) return file_names# 打印所有文件名def print_file_names(file_names): for filenam ...
HTML学习笔记
🚲 🚗 ✈️ 🚀
🚀 HTML简介
HTML 的英文全称是 Hyper Text Markup Language,即超文本标记语言。
HTML 是所有网站的基础,我们所看到的所有网站都是由 HTML 构成的。
HTML 最初于1989年由 CERN 的 Tim Berners-Lee 发明。HTML 基于更古老一些的语言 SGML 定义,并简化了其中的语言元素。这些元素用于告诉浏览器如何在用户的屏幕上展示数据,所以很早就得到各个Web浏览器厂商的支持。
🚀 第一个程序12345678910111213141516<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>hello程序</title> </head> <body> <h1>一级标题</h1> ...
随机数生成算法
🚲 🚗 ✈️ 🚀
🚀 较为真实的随机数获取一个随机数需要满足以下特点:
1、在规定的数值范围内,每个数值出现的概率相同,经过一定次数的生成之后可以覆盖该范围内的所有值。
2、不能通过任何算法推导出下一个数字。
由于上述第二个条件的限制,真正的随机数是不能通过算法生成的。一般可以用硬件信息来获取,例如:
1、定时器的值。
2、获取ADC采样的值。
3、加速度传感器的值。
不过由于这些数值短时间内的变化不是很大,因此不能在短时间内连续获取。
🚀 伪随机数算法一个良好的随机数发生器应当具备以下几个特性:
1、产生的随机数要具有均匀总体随机样本的统计性质,如分布的均匀性,抽样的随机性,数列间的独立性等。2、产生的数列要有足够长的周期,以满足模拟计算的需要。3、产生数列的速度要快,占用计算机的内存少,具有完全可重复性。
✈️ 线性同余法(LCG) 线性同余法是目前应用最广泛的方法之一,很多编程语言的随机数生成 API 也有采用这种方法,它利用数论中的同余运算来产生随机数,所以称为同余发生器,一般递推公式为:
其中 a、c、m 都是常数,$x_n$ ...