LeetCode
每日一题2025.3.30栈专题 1234567891011121314class Solution {public: string makeGood(string s) { string res; for (char c : s) { if (!res.empty() && abs(res.back() - c) == 32) { res.pop_back(); // 删除上一个相反大小写的字母 } else { res.push_back(c); } } return res;}}; 如果栈空,直接插入;如果栈非空,比较当前插入的字符和栈内的字符ascii码差值是否为32,32为大小写关系。 左右元素和的差值 123456789101112131415161718class Solution {public: ...
论文笔记
COFFEEc:cross-layer optimization for fast and efficient executions of the SK algorithm on HPC systems with clusters of compute nodes在有计算节点集群的HPC系统上快速高效执行SK算法。算法中:行、列都可以重新缩放,列缩放相较行缩放极其缓慢。在多节点上的性能比单节点提升最高7.5倍,平均2倍;与天河一号的MPI Allreduce算法比,最高2.9,平均1.6.SK算法:a simple but very useful iterative method to approach the double stochastic matrix of Sinkhorn’s theorem by alternately rescaling all rows and all columns of the given...
LearningHPC
Pytorch学习基础语法123from PIL import Imageimg_path = r"D:\PythonProject2\hymenoptera_data\hymenoptera_data\train\ants\0013035.jpg"img = Image.open(img_path) 这样就可以实现图片的打开。因为在python里面\t或者是\n是转义字符,直接加r表示这就是原始语义。 如果要读取一个文件夹里的许多图片,需要用到os库,然后使用列表的形式 123import osdir_path = r"D:\PythonProject2\hymenoptera_data\hymenoptera_data\train\ants"img_path_list = os.listdir(dir_path) 最后达到右边的效果
Network
Computer NetworkThe following content is about the basic knowledge of computer network. Breif introductionSuch as smartphone, tv, safe system, car and so on.All of this are called host or end system. The end system is linked by communication link(通信链路) and packet switch(分组交换机).Different communication links such as 电缆、光纤、无线电频谱 can spread the data with different speed. The transmission rate are measured by bit/s or bps.These message packet(信息包) are called packet(分组).The packet seems like...
计算机系统
汇编入门80386通用寄存器 %ax :accumulate 累加寄存器 %bx :base 基址寄存器 %cx :count 计数寄存器 %dx :divide 放除法的商和余数 %eax : extend 扩展 表示32位的寄存器%eax表示32位寄存器,%ax表示低16位,在低16位的寄存器中:%ah表示高八位,%al表示第八位 汇编指令1005.s 立即数寻址movl $8,%eax; $是立即数,表示8 movl是移动的意思,将8赋值给%eax;最终的运行结果如下 1006.s 寄存器寻址 movl 用于传送32位的长子值 movw 用于传送16位的子值 movb 用于传送8位的子值不能把movw的w改为l,因为%bx是16位的寄存器,如果改为l试图把32位的传给16位是错误的。可以写mov / movw命令为 movw $0x5678,%dx ; 意思是传16个字节(w)的数据到寄存器dx里,结果如我们所愿,如果用%dh/%dl便会报错,因为%dh/%dl是8位的寄存器;同样,也不能movw...
算法(一)
算法汇总介绍常用的算法 二分查找有三个关键量,right、left、middle;middle = (right - left)>>1,其中>>为右移运算符,将right - left结果的二进制位向右移一位,>>n右移n位,举个例子 8 - 4 = 4,4的二进制位为0100,右移一位变为0010,代表十进制2。 7 - 2 = 5,5的二进制位为0101,右移一位变为0010,代表十进制2。可以看出,右移运算符的作用是将两数相减并向下取整得到结果为什么要用右移运算符而不用/2? 右移运算 >> 通常比除法 / 更快,因为位运算是底层硬件直接支持的。 1234567891011121314151617int search(vector<int>& nums, int target) { int left = 0; int right = nums.size() - 1; while (right...
C++Practise
基本语法auto:在C++中,auto可以自动推导类型。12345#include <vector>std::vector <int> v;//有两种方式可以遍历STL容器- for (std::vector::iterator it = v.begin();it!=v.end();it++)- for (auto vtest : v) &为引用,加&与否取决于是否要修改原值或避免拷贝 需要修改并输出修改后的值 123456789101112131415#include <iostream>#include <vector>std::vector <int> v{0,1,2,3,4,5};int main(){ for (auto &v1:v) { v1 = v1+1; } for (auto v1:v) { std::cout<<v1<<std::endl; }}...
Thread2
互斥量互斥量解决多线程数据共享问题当多线程去共享同一个数据的时候,会造成争夺 12345678910111213141516171819#include <iostream>#include <thread>int a = 0;void func() { for (int i = 0; i < 10000; i++) { a += 1; }}int main() { std::thread t1(func); std::thread t2(func); t1.join(); t2.join(); std::cout << a << std::endl; system("pause"); return...
Thread
C++11多线程编程 进程与线程 进程就是正在运行的程序 线程就是进程中的进程 多线程可以提高效率。 线程的多少取决于CPU的核数如下图,如果是串行的话就必须顺序执行,但如果并行的话你就可以在同一时间内干多个事情。但同时要注意你的“核数”,你不能同时刷抖音和听音乐,因为你没有四个耳朵,亦或者说你的手机同一时间内只能处理一个应用播放声音。 C++11 Thread 准备工具 Visual Studio 线程库 thread 12#include <iostream>#include <thread> 使用thread创建一个线程123456789void PrintHelloWorld(){ std::cout<<"HelloWorld"<<std::endl;}int main(){ std::thread thread1(PrintHelloWorld); return...
第一篇文章!
汇编语言(一)CPU的组成 运算器进行信息处理; 寄存器进行信息存储; 控制器协调各种器件进行工作; 内部总线实现CPU内各个器件之间的联系。 [{"url":"1.png","alt":"img","title":""}] 8086上一代CPU的寄存器是八位的,那如何保证兼容性呢?把16位寄存器分成AH和AL两个独立的8位寄存器使用;同样,32位或64位的寄存器也可以分,从而实现兼容性。比如AX中现在存储0101010110101010,可以分为AH01010101和AL10101010来存储 汇编指令汇编指令 控制CPU完成的操作 mov ax,18 将18送入AX mov ah,78 将78送入AH add ax,8 将AX中的值和8相加并把值存入AX mov ax,bx 将BX中的值赋值给AX add ax,bx ...