自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 PyQt5 快速入门

​ 因为我们后面需要对程序进行打包,所以为了减少对于打包没有帮助的库,我们创建一个干净的全新的虚拟环境进行开发。我这里是依赖于anaconda来创建虚拟环境,指令如下。​ 创建好之后,我们通过pip list指令来确认一下,发现确实是一个干净的环境。

2024-07-22 00:37:19 893

原创 基于Resent的医学数据集分类实战

​ 原始数据集:NCT-CRC-HE-100K:结肠癌组织NIH-ChestXray14 dataset:肺部X光数据HAM10000:皮肤病变数据集​ 但是这些数据集的规模都太大了,所以我们对这些数据进行处理,得到简易实验的数据集,所有的数据格式都类似mnist(28*28),方便我们进行初步试验。

2024-07-19 15:08:31 806

原创 项目:文档扫描OCR识别

​ 下图右边是输入图像,左边是通过边缘检测后的输出图像。我们需要关注的是图片的主题而不是背景,我们需要识别到我们要检测的主题。

2024-07-17 15:57:48 499

原创 Linux应用层协议HTTP(二)

​ 平时我们俗称的“网址”其实就是说的URL(统一资源定位符,它是URI(统一资源标识符)的一个子集,是URI概念的一种实现方式);IP+端口可以定位互联网上唯一一台主机,但如果我们还需要该主机上的资源文件,还要有路径。即我们通过IP+路径,就可以唯一地确认一个网络资源。http、https协议或其他指定用户名和密码作为服务器端获取资源时的必要信息,此项为可选项,浏览器显示时会隐藏访问服务器时必须指明服务器地址,上图给出的只是方便人们记忆的网址,实际会由DNS(域名解析器)进行解析。

2024-06-29 20:33:41 824

原创 Linux应用层协议HTTP(一)

一般来说将这种结构化的数据发送给李四,是需要经过特殊处理的,那就是序列化,转变为一个长字符串;通过网络传输之后,再次经过反序列化的过程,填入李四的结构化数据相应的位置。​ 协议是一种“约定”,socket api的接口,在读取数据时,都是按“字符串”的方式来发送接收的,如果我们要传输一些“结构化的数据”怎么办呢?我们就需要对结构化的数据进行打包,然后通过网络发送至对端主机,再进行解包,进而对端主机接收到结构化的数据;​ 反序列化:将网络中的字节序列(可以理解为是长的“字符串”)转化为结构化的数据;

2024-06-29 20:29:19 702

原创 Linux基本的UDP套接字编程

​ 在使用TCP编写的应用程序和使用UDP编写的应用程序之间存在一些本质的差异,其原因在于这两个传输层之间的差别:UDP是无连接不可靠的数据报协议,非常不同于TCP提供的面向连接的可靠字节流。​ 以下给出了典型的UDP客户/服务器的函数调用。客户不与服务器建立连接,而是只管使用sendto函数给服务器发送数据报,其中必须指定目的地(即服务器)的地址作为参数。类似的,服务器不接受来自客户端的连接,而是只管调用recvfrom函数,等待来自某个客户的数据到达。

2024-06-29 20:27:35 586

原创 Linux基本的TCP套接字编程(详解)

因此,它也被称为程序地址。​ 这么看来sockaddr_in这个结构也不复杂,除了一开始的2个字节表示sin_family,然后是2个字节的变量sin_port表示端口,接着是4个字节的变量sin_addr表示IP地址,最后是8个字节变量sin_zero填充尾部,用来与结构sockaddr对齐。​ 从介绍的套接字函数接口来看,bind函数,accept函数和connect函数都要一个struct sockaddr的结构体指针,我们在介绍参数的时候也已经说了,这种结构是指向一个特定于协议的地址结构的指针。

2024-06-29 14:51:00 662

原创 Linux网络基础(一)

​ 今天我们开始接触计算机网络相关的知识,总的来说计算机网络的学习相比计算机操作系统的学习两者不相上下,如果你已经对操作系统有一定的知识体系,那么学习计算机网络将会变得很轻松。这是网络基础的第一章,里面涉及的新名词不会详细的介绍,会在后续更新的博客中详细介绍。

2024-06-29 14:44:34 721

原创 Linux线程池

​ 线程池是线程的一种使用模式。在前面的情况中,我们都是遇到任务然后创建线程再执行。但是线程的频繁创建就类似于内存的频繁申请,会给操作系统带来更大的压力,进而影响整体的性能。​ 所以我们一次申请好一定数量的线程,然后将线程的管理操作交给线程池,就避免了在短时间内不断创建与销毁线程的代价,线程池不但能够保证内核的充分使用,还能防止过度调度,并根据实际业务情况进行修改。

2024-06-29 14:40:45 529

原创 Linux信号量

​ 之前,我们利用加锁解锁保证了每次只有一个线程进入临界资源,但是临界资源很多也很大,如果每次只允许一个线程进入临界资源往往会使效率很低。但是将临界资源划分为多个独立的区域,划分为多少个区域就可以让多少个线程进入。信号量可以理解为一个计数器,它是用来描述临界资源的有效个数;

2024-06-29 14:39:02 873

原创 Linux生产消费者模型

​ 处于生产者与消费者之间的缓冲区可以有多种实现方式,比较经典的就如阻塞队列(Blocking Queue)。如下图当队列为空时,消费者将会被阻塞,直到队列中存放了数据;当队列满时,生产者就会被阻塞,直到有数据取出;

2024-06-29 14:36:08 533

原创 Linux线程安全

但是由于线程A加锁的能力特别强,可能1000次中有900次是A加锁成功了,但是即便加锁成功了这么多次,对于A也是没有意义的,因为A加锁之后要对数据进行修改,然后让B操作,但是在这种情况下,B被阻塞了很多次,所以虽然数据是安全的,但是效率却十分低下,没有完成我们逻辑中按顺序执行的效果。​ 例如,我们在上述的抢票系统中引入互斥量,每一个线程要进入临界区之前都必须先申请锁,只要申请到锁的线程才可以进入临界区对临界资源进行访问,并且当线程出临界区的时候需要释放锁,这样才能让其余要进入临界区的线程继续竞争锁。

2024-06-29 14:33:13 993

原创 Linux多线程

​ 从运行结果以及进程监视脚本来看,新线程在分离后的2秒中后,自动退出了,主线程在等待新线程,并且想要获取到它的退出码”111“,但是结果确是0,所以新线程在设置分离后,主线程就不能再去join,会失败,它的资源会被自动回收;Linux中没有真正意义上的线程,它是用进程来模拟实现的,内核提供LWP,用户使用的线程要由线程库自己来管理,如何管理?操作系统中存在大量的进程,一个进程内又存在一个或多个线程,因此线程的数量一定比进程的数量多,当线程的数量足够多的时候,很明显线程的执行粒度要比进程更细。

2024-06-29 14:29:58 657

原创 Linux进程信号

函数功能:设置某一信号的对应动作第一个参数signum:指明了所要处理的信号类型,它可以取除了SIGKILL(9号信号)和SIGSTOP(19号信号)外的任何一种信号。第三个参数handler:表示我们要对信号进行的处理方法,它可以取以下三种值:关联动作含义SIG_DFL执行该信号的默认处理动作SIG_IGN忽略该信号提供一个信号处理函数,要求内核在处理该信号时切换到用户态执行这个处理函数,这种方式称为捕获(catch)一个信号。

2024-06-29 14:27:14 830

原创 Linux进程间通信

进程通信(Interprocess communication),简称:IPC;本来进程之间是相互独立的。但是由于不同的进程之间可能要共享某些信息,所以就必须要有通讯来实现进程间的互斥和同步。比如说共享同一块内存、管道、消息队列、信号量等等就是实现这一过程的手段,相当于移动公司在打电话的作用。管道分为匿名管道和命名管道;管道通信方法的中间介质的文件,通常称这种文件为管道文件;匿名管道:管道是半双工的,数据只能单向通信;需要双方通信时,需要建立起两个管道;

2024-06-29 14:24:01 649

原创 Linux动态库和静态库

静态库在可执行程序链接时就加入到可执行代码中,在物理上称为可执行程序的一部分;程序运行时不再需要该静态库。相对于动态库链接生成的程序,静态库相当于编译器将代码补充完整了,因此执行程序会大一些,但是运行起来相对快些;静态库是牺牲了空间效率,换取了时间效率动态库在程序编译时并不会被链接到目标代码中,而是在程序运行时才被载入,因此在程序运行时还需要动态库存在;动态库只有在程序执行时,那些需要的函数才被拷贝到内存中。这样就使得可执行文件比较小,节省磁盘空间;

2024-06-29 14:12:44 638

原创 Linux基础IO

​ 我们之前都有学过文件操作相关的函数,能够利用C语言相关的库函数进行文件的写入和读取;我们只是会用相关的库函数接口,但是并不知道文件究竟是怎么被写入的,怎么被读取的,文件操作的底层原理究竟是什么我们一概不知,接下来将会详细介绍文件操作的底层原理。让我们对文件操作有一个新的认识。函数接口函数说明fopen打开文件fclose关闭文件fputc一次写一个字符fgetc一次读一个字符fputs写一行数据fgets读一行数据fprintf格式化输出函数fscanf格式化输入函数。

2024-06-29 14:02:02 880

原创 Linux进程的控制

​它是一种输出型的参数​ 所谓获取子进程的status,就是获取子进程退出时的退出信息;​ 首先,在子进程中分别用exit(0)和exit(10)来中断子进程,父进程获取status值,判断进程的退出状态。ret--;sleep(1);exit(0);//比较exit(10)或任意值else​ 通过上面的运行结果,我们本来以为status应该是0和10,但和预期的结果却有所不同。这里我们仔细思考一下:父进程拿到什么样的status结果,一定是和子进程如何退出强相关的。

2024-06-28 21:30:54 1003

原创 Linux进程的概念

​ 简而言之,首先,程序数据加载到内存后,由操作系统分配进程PCB(task_struct和mm_struct(进程虚拟地址空间))和页表。此时我们的进程就算是创建好了。虚拟地址的设计有什么好处:​ 1.有了虚拟地址,每个进程都认为自己独占内存资源,这样对于操作系统来讲,也更加偏于管理进程。​ 2.采用间接的地址访问方法访问物理内存。程序中访问的内存地址不再是实际的物理内存地址,而是一个虚拟地址,然后由操作系统将这个虚拟地址映射到适当的物理内存地址上。

2024-06-28 21:27:19 890

原创 Redis从入门到精通【redis基础】

​ 这个Redis的初心,最初就是用来作为一个“消息中间件”的(消息队列),作为一种分布式系统下的生产者消费者模型。但是当前很少人会直接使用Redis作为消息中间件了(因为业界有更多更专业的消息中间件使用)单机架构(应用程序+数据库服务器)数据库和应用分离应用程序和数据库服务器,分别放到了不同主机上部署了引入负载均衡优化应用服务器 => 集群通过负载均衡器,把请求比较均匀的分发给集群中的每个应用服务器,并且当集群中的某个主机挂了,其他主机仍然可以承担服务,提高了整个系统的可用性。

2024-06-28 21:25:30 627

原创 Linux环境基础开发工具的使用

最后一列,base表示的是“软件源”的名称,类似于“小米应用商店”,“华为应用商店”这样的概念。​ 从上图可以发现,想要得到可执行程序,我们首先要得到test.o文件,要得到test.o文件就要得到test.s文件,以此类推,只要我们写好了源代码,通过这样的依赖关系和依赖方法,最终就能得到可执行程序。​ 项目清理类似于VS下的清理解决方案,也就是将之前生成的所有文件清理掉,如果我们进行手动清理,那么在有多个文件的情况下,手动清理未免太过麻烦,此时我们可以将项目加入到Makefile文件中。

2024-06-27 17:57:59 743

原创 Linux权限管理

目录的可执行权限是表示你可否在目录下执行命令;如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目录,即使母校仍然具有-r读权限(这个地方和容易犯错,认为有读权限就可以进入目录读取目录下的文件)如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls指令,但仍然没有权限读出目录下的文档。

2024-06-27 17:54:04 1004

原创 Linux初识——基本指令的使用

​ (在学生阶段)我们现在普遍使用的都是windows操作系统,很少使用Linux操作系统;因为windows操作系统采用的是图形化界面,给使用者带来很多方便;Linux由于都是命令行,所以相对使用较少,但不影响Linux是一个优秀的操作系统;在学习Linux之前,我们需要搭建Linux环境:​ 1.直接安装在物理机上,但是由于Linux桌面使用起来非常不友好,不推荐。

2024-06-27 17:49:21 528

原创 【项目设计】——基于Boost库的搜索引擎

你不得不会的Boost搜索引擎的设计

2024-06-27 17:42:18 1605

原创 23年(24届)CS保研末二选手的辛酸历程

9.29下午接受拟录取通知,终于也算是尘埃落定。2023年(24届)CS保研堪称史诗级地狱难度名额下发严重推迟(比去年晚了一个多星期),985院校的保研率大幅提升,本校保护盛行,强基计划转段第一年,去年能去中九的,今年往往只能考虑次9,或者非纯CS学院。回顾近半年以来的辛酸路程,可谓是百感交集,趁着记忆还在,记录一下一路走来的一些经验,希望能帮助到和我一样本校title不好,科研方向边缘的CS保研人们。这里先提前科普一些保研界常见的术语:rk = rank = 排名title = 学校水平、牌子。

2023-10-01 16:27:05 293

原创 正式入坑CSDN的第一篇博客

大家好,我是来自安徽大学材料类专业的一名准大二学生,说起我的转码之路是非常心酸的高考填报志愿的时候并没有清晰的认识到各个专业之间未来在就业上的差距,认为无论填报哪个专业,只要好好学习,都不会有坏结果的吧!加上高考发挥失常,于是,我决定填好一点的学校,专业就调剂吧,之后,我来到了我们学校的化学化工学院材料类专业,大一上的心思很单纯,一心就想搞好学习,每天空闲时间就刷一刷高数题,复习专业课的相关知识,想着大三那年可以凭靠绩点保研。自然的,这一个学期结束后,我取得了专业第一的好成绩,说实话,取

2021-07-16 10:27:48 172 10

空空如也

空空如也

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

TA关注的人

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