自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mr.horse的博客

来了就点个赞再走嘛

  • 博客(478)
  • 资源 (2)
  • 收藏
  • 关注

原创 pytorch保存和加载模型state_dict

保存模型:torch.save({ 'epoch': epoch + 1, 'state_dict': model.state_dict(), 'optimizer': optimizer.state_dict(), }, datadir)加载模型model = model_class(num_classes=num_classes) # 定义模型state = torch.load(datadir)

2021-10-18 10:29:47 38

原创 C++模板函数只声明一种类型但输入两种类型参数

具体见代码:#include <iostream> using namespace std; template <typename T>void Swap(T& a, T& b){ T tmp = a; a = b; b = tmp;} int main(){ int a = 10; float b = 20; Swap(a, b); //自动推导调用 cout<<"ok"&

2021-09-18 09:16:45 36

原创 调整数组顺序使奇数位于偶数前面

实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。定义两个指针tail和curr,tail指针首先指向第一个偶数,tail指针的含义是位于tail前面的都是奇数。接着curr从tail下一个开始出发,如果curr指针遇到奇数,则需要将奇数放到tail位置,然后tail指针+1到下一个位置。但将curr的值放到tail指针之前,需要将[tail,curr)区间的值往后移一个位置。接着curr继续寻找奇数

2021-09-17 14:51:48 29

原创 寻找区间质数

给定一个[left,right]的范围,计算这个区间内的质数的个数思路:定义一个isPrime数组,其长度为right+1,数组的元素为bool型,true代表该位置索引的数字是质数。首先数组初始化为全部true,然后从2开始遍历到sqrt(right),对于当前遍历到的数字,将其所有倍数的位置设为false,例如,遍历到3的时候,将6,9,12...设为false,因为这些数字都是3的倍数,一定不是质数。当遍历到某个数,只需要判断这个数是不是true,就知道这个数是不是质数,因为如果是true说明这个

2021-09-17 14:13:37 33

原创 C++ 最小堆实现

#include <bits/stdc++.h>using namespace std;//[4,3,5,2,1]void tiao(vector<int>& v, int node, int leng){ int left,right; int Min; while(1){ left=node*2+1; //左节点 right=node*2+2; //右节点 if(left<leng).

2021-08-25 12:04:15 38

原创 C++获取多维数组维数

#include <iostream>using namespace std;int main(void) { int a[3][4]; cout<<sizeof(a)/sizeof(a[0])<<endl; //3 cout<<sizeof(a[0])/sizeof(a[0][0])<<endl; //4 return 0;}

2021-08-17 23:44:15 135 1

原创 C++ 指向子类的指针转型为指向父类类型指针之后指向的对象地址不变

C++ 指向子类的指针转型为指向父类类型指针之后指向的对象地址不变例子:class A{ int a; int b;};class B:public A{ int c;};int main(){ B* p=new B(); cout<<p<<endl; cout<<static_cast<A*>(p)<<endl; return 0;}...

2021-08-13 16:15:01 31

原创 C++ priority_queue对链表节点建立小根堆

链表的节点为:struct ListNode { int val; ListNode *next; ListNode() : val(0), next(nullptr) {} ListNode(int x) : val(x), next(nullptr) {} ListNode(int x, ListNode *next) : val(x), next(next) {} };首先对链表节点建立一个结构体,结构体包含节点和节点的val值

2021-08-11 23:49:31 41

原创 C++ set insert的返回值

pair<iterator,bool> insert (const value_type& val);返回布尔对以表示是否发生插入,并返回指向新插入元素的迭代器。

2021-08-09 21:26:49 151

原创 C++万能头文件

<bits/stdc++.h>包含了全部的C++头文件

2021-08-08 17:12:27 527

原创 C++构建二叉树

首先定义树的节点:struct BinaryTreeNode { int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight; };定义构建节点和连接节点的方法:BinaryTreeNode* CreateBinaryTreeNode(int value){ BinaryTreeNode* pNode = new B

2021-08-06 00:20:52 31

原创 TCP三次握手的序列号和确认号

第一次握手:客户端发送:序列号是随机数x;第二次握手:服务端回:序列号随机数y,确认号x+1;第三次握手:客户端回:序列号x+1,确认号y+1

2021-08-02 00:06:21 659

原创 mysql统计同一字段重复的个数

例如有一个名称为orderID的列,orderID可能重复,比如orderID 1 2 2 2 3 3 4 现在需要统计有哪些orderID重复2次以上方法:select orderID,count(orderID) from tablename group by orderID having count(orderID)>1这里为什么不用where而用having,where只能写在group by前边,要.

2021-08-01 23:06:35 129

原创 C++打印浮点数时保留两位小数

int main() { printf("%.2f",2.356); //2.36,以四舍五入方式保留小数 return 0;}

2021-08-01 22:56:57 230

原创 printf打印百分号%

在要打印的%之前添加多一个%int main() { printf("%f%%",2.3); return 0;}打印:2.300000%

2021-08-01 22:54:22 42

原创 C++ lower_bound和upper_bound的区别

lower_bound( begin,end,num):返回第一个大于等于参数num的迭代器upper_bound( begin,end,num):返回第一个大于参数num的迭代器>= 和> 是二者的区别

2021-08-01 22:49:04 35

原创 C++中set和map的erase用法

删除容器中值为 val 的元素size_type erase (const value_type& val);删除 it迭代器指向的元素iterator erase (const_iterator it);删除 [first,last) 区间内的所有元素iterator erase (const_iterator first, const_iterator last);...

2021-08-01 22:33:16 79

原创 C++ swap用法

swap用于交换两个元素的值template<class T>void swap(T &a,T &b){ T c(a); a=b; b=c;}例如交换两个int型变量的值:#include <iostream>using namespace std;int main() { int a=1,b=2; swap(a,b); cout<<a<<" "<<b<<end.

2021-08-01 22:27:17 114

原创 POSIX信号量API函数

头文件:semaphore.h初始化:int sem_init(sem_t *sem, int pshared, unsigned int value);sem_init() 初始化一个信号量,信号量对象为sem。value 参数指定信号量的初始值。 pshared 参数指明信号量是由进程内线程共享,还是由进程之间共享。如果 pshared 的值为 0,那么信号量将被进程内的线程共享,并且应该放置在这个进程的所有线程都可见的地址上(如全局变量,或者堆上动态分配的变量)。int sem_.

2021-08-01 20:00:46 35

原创 POSIX条件变量API函数

初始化条件变量int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr);返回值:函数成功返回0;任何其他返回值都表示错误初始化一个条件变量。当参数attr为空指针时,函数创建的是一个缺省的条件变量。阻塞int pthread_cond_wait(pthread_cond_t *cond, pthrea

2021-07-30 18:14:35 35

原创 POSIX互斥锁api函数

初始化互斥锁int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);参数attr指定了新建互斥锁的属性。如果参数attr为NULL,则使用默认的互斥锁属性。锁定互斥锁int pthread_mutex_lock(pthread_mutex_t *mutex); 当pthread_mutex_lock()返回时,该互斥锁已被锁定。调用..

2021-07-30 17:32:18 23

原创 POSIX多线程API函数

创建int pthread_create( pthread_t* tidp, const pthread_attr_t* attr, void* (*start_rtn)(void*), void* arg)tidp:事先创建好的pthread_t类型的参数。成功时tidp指向的内存单元被设置为新创建线程的线程ID。attr:定义新线程的一些属性(配置项),包括线程栈[stack]、分离状态[detachstate]等,大部分情况下默认值即可(NULL)..

2021-07-30 17:02:13 28

原创 PHP单引号和双引号的区别

$foo = 2; echo "foo is $foo"; // 打印结果: foo is 2 echo 'foo is $foo'; // 打印结果: foo is $foo echo "foo is $foo\n"; // 打印结果: foo is 2 (同时换行) echo 'foo is $foo\n'; // 打印结果: foo is $foo\n

2021-07-30 11:41:12 12

原创 lock_guard源码

template<typename Mutex>class lock_guard{private: Mutex& m; explicit lock_guard(lock_guard&); lock_guard& operator=(lock_guard&);public: explicit lock_guard(Mutex& m_) : m(m_) { m.lock();.

2021-07-29 17:38:27 11

原创 mysql查询前100行和后100行

查询前100行SELECT * FROM table LIMIT 100; 查询后100行select * from table order by id desc limit 100;查询第6-15行SELECT * FROM table LIMIT 5,10;

2021-07-29 11:07:51 317

转载 一致性哈希解决的问题

假设,我们有三台缓存服务器,用于缓存图片,我们为这三台缓存服务器编号为0号、1号、2号,现在,有3万张图片需要缓存,我们希望这些图片缓存到这3台服务器上,以便它们能够分摊缓存的压力。做法是对缓存项的键进行哈希,将hash后的结果对缓存服务器的数量进行取模操作,通过取模后的结果,决定缓存项将会缓存在哪一台服务器上,这样说可能不太容易理解,我们举例说明,仍然以刚才描述的场景为例,假设我们使用图片名称作为访问图片的key,假设图片名称是不重复的,那么,我们可以使用如下公式,计算出图片应该存放在哪台服务器上。h

2021-07-28 16:01:56 21

原创 动态资源和静态资源分离

静态资源:指存储在硬盘内的数据,固定的数据,不需要计算的数据。如:图片、字体、js文件、css文件等等。在用户访问静态资源时,服务器会直接将这些资源返回到用户的计算机内。动态资源:指需要服务器根据用户的操作所返回的数据,以及存储在数据库的数据,经过一系列逻辑计算后返回的数据。如:请求明天的天气信息数据、请求查看账户余额。为什么要用动静分离在我们的软件开发中,有些请求是需要后台处理的(如:.jsp,.do等等),有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文

2021-07-26 20:28:43 69

原创 互斥量和临界区的区别

互斥量与临界区的作用非常相似,但互斥量是可以命名的,也就是说它可以跨越进程使用。互斥量在系统的任何进程里都是可见的,也就是说,一个进程创建了一个互斥量,另一个进程试图去获取该锁是合法的。然而,临界区的作用范围仅限于本进程,其它进程无法获取该锁。除此之外,临界区具有和互斥量相同的性质。...

2021-07-26 17:48:30 155

原创 linux条件变量

某个线程正在等待共享数据内某个条件出现,可可能需要重复对数据对象加锁和解锁(轮询),但是这样轮询非常耗费时间和资源,而且效率非常低。我们需要这样一种方法:当线程在等待满足某些条件时使线程进入睡眠状态,一旦条件满足,就唤醒因等待满足特定条件而睡眠的线程条件变量条件变量是用来等待线程而不是上锁的。条件变量使我们可以睡眠等待某种条件出现。条件变量主要包括两个动作:一个线程等待”条件变量的条件成立”而挂起;另一个线程使”条件成立”(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一

2021-07-26 15:44:40 18

原创 TestAndSet实现互斥锁

包含lock函数和unlock函数。首先定义一个全局变量flag,flag=1表明该锁已经锁住,flag=0表明锁没有锁住。lock函数里通过while循环不断检测flag是否等于1,如果等于1就一直循环并将flag设置为1。unlock()方法就将flag置为0。static int flag=0;void lock(){ while(TestAndSet(&flag,1)==1); //flag=1;}void unlock(){ flag=0;}in

2021-07-26 15:17:18 114

原创 进程同步,异步,互斥

同步同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系就是源于它们之间的相互合作。一个进程的执行依赖于另一个协作进程的消息或信号,当一个进程没有得到来自于另一个进程的消息或信号时则需等待,直到消息或信号到达才被唤醒。简单来说,同步就是指在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事例如,输入进程A通过单缓冲向进程B提供

2021-07-26 11:01:06 45

原创 优先队列priority_queue自定义比较函数

以一个例子进行说明,假设优先队列的每个元素是pair<int,int>,我需要自定义一个用于pair<int,int>比较的函数:decltype返回该变量的类型bool cmp(pair<int,int>& a, pair<int,int>& b){ return a.second>b.second;}priority_queue<pair<int,int>,vector<pair<

2021-07-25 16:07:07 92 1

原创 linux查看关键词前后几行内容

查看filename文件含有key所在行前10行内容cat filename | grep key -B 10查看filename文件含有key所在行后10行内容cat filename | grep key -A 10查看filename文件含有key所在行前后10行内容cat filename | grep key -C 10-A表示关键字之后,After-B表示关键字之前,Before-C表示关键字前后,Context...

2021-07-25 10:31:50 77

原创 ubuntu报错E: 无法获得锁 /var/cache/apt/archives/lock - open (11: 资源暂时不可用)E: 无法对目录 /var/cache/apt/archives/

ubuntu报错:E: 无法获得锁 /var/cache/apt/archives/lock - open (11: 资源暂时不可用)E: 无法对目录 /var/cache/apt/archives/ 加锁解决方法:运行:sudo rm /var/cache/apt/archives/locksudo rm /var/lib/dpkg/lock

2021-07-23 22:45:25 32

原创 重载,重写,隐藏

重载:在同一个类中,函数名相同,参数个数不同或参数类型不同,重载不关心函数返回类型隐藏:子类和父类中存在同名函数,注意只要求函数同名,不管参数列表是否相同,基类函数都会被隐藏重写,也称覆盖:基类和子类函数名,参数列表,返回值类型相同的函数,且基类中的函数带有virtual装饰...

2021-07-22 00:00:27 20

原创 逐行对比两个文件内容的好用软件

WinMerge可以官网下载或者去腾讯软件中心下载https://pc.qq.com/detail/6/detail_1326.html

2021-07-21 16:45:34 55

原创 linux将一个文件的内容复制到另一个新的文件

需要创建一个新的文件new_file.txt,并把一个文件file1.txt的内容复制到这个新文件中:cat file1.txt >> new_file.txt

2021-07-21 16:43:10 345

原创 linux文件重命名

mv命令:将文件剪切到当前文件夹并重新命名,执行后,原来的文件消失,新的文件创建成功,新的文件实际上就是原来的文件,只不过名字变了。例如:mv old_file.txt new_file.txt

2021-07-21 16:41:23 23

原创 将x的二进制最后一位置为0

对于任意整数x,x&(x−1),该运算将x的二进制表示的最后一个1变成0

2021-07-19 23:12:27 86

原创 刚安装完的ubuntu安装谷歌浏览器

首先去官网下载安装包接着打开终端,输入sudo dpkg -i google-chrome-stable_current_amd64.deb(你的安装包名称)刚装好的ubuntu一般会安装不成功,会出现如下提示:这时候需要通过输入以下命令来修复依赖关系apt-get -f install但如果是刚安装好的ubuntu又会提示没有权限这时候需要先开通root,方法见https://blog.csdn.net/weixin_38314865/article/details

2021-07-19 21:42:01 34

八种经典网络对cifar-10的分类.rar

包含8种经典网络在CIFAR10数据上的分类代码,其中包括LeNet,Network_in_Network,Vgg19,ResNet,wide_ResNet,ResNeXt,DenseNet,SENet

2020-02-16

用于EDF文件查看的Polyman软件

用于EDF文件和EDF+文件查看的Polyman软件,官方下载网址为https://www.edfplus.info/downloads/index.html,但是看官方网站下载会比较慢

2020-09-28

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除