自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Fsm serial

Fsm serialmodule top_module( input clk, input in, input reset, // Synchronous reset output done); enum logic[3:0]{ stop1=4'b0001,start=4'b0010,data=4'b0100,stop=4'b1000 } state,next_state; logic [3:0] counter = 1

2021-11-09 21:15:18 586

原创 Linux网络编程基础api

Linux网络编程基础api一、通用socket地址二、专用的socket地址三、创建socket四、命名socket五、监听socket六、接受连接七、发起连接八、关闭连接九、数据读写1.TCP数据读写2.UDP数据读写十、通用数据读写函数十一、socket选项一、通用socket地址socket网络编程接口中表示socket地址是结构体sockaddrsa_family成员是地址族类型(sa_family_t)的变量。地址族通常和协议族对应。宏PF_* 和AF_*都定义在同一个头文件中,并且

2021-09-29 20:25:01 90

原创 设计模式(四)单例模式

单例模式一、饿汉模式二、懒汉模式1.经典的线程安全懒汉模式:(双检测锁)为什么要双检测?2.局部静态变量之线程安全懒汉模式单例模式作为最常用的设计模式之一,保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。通常我们可以让一个全局变量使得一个对象被访问,但是它不能防止你实例多个对象,一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且他可以提供一个访问该实例的方法。实现思路:私有化它的构造函数,以防止外界创建单例类的对象;使用类的私有

2021-09-28 22:42:29 143

原创 设计模式(三)建造者模式和观察者模式

建造者模式和观察者模式一、建造者模式二、观察者模式事件委托说明一、建造者模式将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示,需要‘建造者模式’,又叫做生成器模式。建造者模式可以将一个产品的内部表象与产品的生成过程分割开,从而使一个建造过程生成具有不同的内部表象的产品对象。如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体的建造过程和细节就不要知道。建造者模式的好处:使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以若需要改变一

2021-09-28 11:14:49 112

原创 设计模式(一)工厂模式

简单工厂模式前言一、什么是简单工厂模式?二、使用步骤1.引入库2.读入数据总结前言面向对象特点:1.可复用: 需要更改2.可扩展:增加新功能3.灵活好:满足其他各种要求一、什么是简单工厂模式?简单工厂模式,解决的是在多个基类的继承类中如何选择对应的类实例化。示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport mat

2021-09-28 09:48:21 63

原创 设计模式(UML类图)

UML类图一、UML类图示例一、UML类图示例动物的矩形框,它代表一个类。矩形框分三层,第一层显示类的名称,如果是***抽象类***,就用***斜体***表示。第二层表示类的特性,通常就是字段和属性。第三层是类的操作。通常是方法和行为。注意前面的符号,‘+’表示pubilc,‘-’表示private,‘#’表示protected。接口图与类图的区别主要是顶端有<<interface>>显示。第一行是接口的名称,第二行是接口的方法。接口还有另一种表示方法,棒棒糖表示法。

2021-09-27 21:08:54 340

原创 设计模式六大模式

设计模式六大原则一、单一职责原则(SRP)二、开放-封闭原则三、依赖倒转原则四、迪米特法则(LoD)五、里式替换原则(LSP)六、接口隔离原则(ISP)一、单一职责原则(SRP)单一职责原则,就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受意想不到的破坏。二、开放-封闭原则开放-封闭原则:软件实体(类、模块、函数等等)应该可以扩展,但是不可修

2021-09-27 20:10:22 425

原创 操作系统实战(十四)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码

2021-09-10 19:35:20 206

原创 操作系统实战(十三)

如何处理内核I/O包一、什么是I/O包1.创建和删除I/O包2.向设备发送I/O包二、驱动函数实例1.systick设备驱动程序的整体框架2.systick设备驱动程序的入口3.配置设备和驱动4.打开和关闭设备5.systick 设备中断回调函数一、什么是I/O包I/O包就是内核要求设备完成的各种参数封装在一个数据结构中。这样就可以统一驱动程序功能函数的形式了。objnode_t的数据结构中包括了各个驱动程序功能函数的所有参数。1.创建和删除I/O包创建I/O包就是在内存中建立objnode_t结

2021-09-08 16:42:03 97

原创 操作系统实战(十二)

内核中注册设备一、设备的注册流程二、驱动程序表三、运行驱动程序1.1调用驱动程序入口函数五、设备与驱动的联系六、向内核注册设备七、安装中断回调函数八、驱动加入内核一、设备的注册流程1.操作系统会收到一个中断。2.USB总线驱动的中断处理程序会执行。3.调用操作系统内核相关的服务,查找USB鼠标对应的驱动程序。4.操作系统加载驱动程序。5.驱动程序开始执行,向操作系统内核注册一个鼠标设备。对于安装在主板上的设备,操作系统会枚举设备信息,然后加载驱动程序,让驱动程序创建并注册相应的设备,同时也可以手

2021-09-08 10:08:01 138

原创 操作系统实战(十一)

如何表示设备类型和设备驱动一、计算机的结构二、如何管理设备?1.分而治之2.设备分类3.设备驱动1.设备2.驱动3.设备驱动的组织4.驱动程序功能一、计算机的结构芯片并非独立存在,而是以总线为基础链接在一起的,相互配合,共同实现用户的要求的功能。总线有层级关系,各种设备通过总线相连。二、如何管理设备?1.分而治之每个设备对应一个设备控制代码模块,操作系统内核要控制哪个设备,就加载相应的设备代码模块,以后如果不使用这个设备,就可以删除对应的设备控制代码模块。2.设备分类操作系统内核所感知的设

2021-09-07 21:42:57 748

原创 操作系统实战(九)(Linux)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档伙伴系统(buddy system)如何分配内存前言一、如何表示一个页?二、如何表示一个区三、怎样表示一个内存节点1.`NUMA`--Non-Uniform Memory Access(非一致性内存访问)三、数据结构之间的关系四、伙伴系统五、分配页面六、通过接口找到内存节点七、开始分配1.准备分配页面的参数2.Plan A:快速分配路径3.Plan B:慢速分配路径4.如何分配内存页面前言Linux操作系统是如何实现内存管理的?在L

2021-09-03 19:25:43 174

原创 操作系统实战(八)

实现进程的等待与唤醒机制一、进程的等待与唤醒1.进程等待结构2、进程等待3.进程唤醒4.空转进程5.建立空转进程6.空转进程运行一、进程的等待与唤醒1.进程等待结构需要设计一种数据结构,用于挂载等待的进程。2、进程等待让进程进入等待状态就是调用函数,在这个函数中会设置进程状态为等待状态,让进程从调度系统数据结构中脱离,最后让进程加入到kwlst_t等待数据结构中。一个进程想要进入等待状态,只需要调用这个函数。3.进程唤醒进程唤醒是进程等待的反向操作行为,即从等待数据结构中获取进程,然后设置进

2021-08-30 19:07:43 193

原创 操作系统实战(七)

多进程调度(一)一、为什么需要多进程调度?二、管理进程1.进程的生命周期二、如何组织进程三、管理进程的初始化四、设计实现进程调度器1.进程调度的入口2.如何获取当前运行的进程3.选择下一个进程4.获取空转进程4.进程切换一、为什么需要多进程调度?CPU同一时刻只能运行一个进程,而CPU个数总是比进程个数少,这就需要多进程公用一个CPU,每个进程在这个CP运行一段时间。当一个进程不能获取某种资源,导致不能继续运行,就需要让出CPU。进程拿不到资源就需要让出CPU。示例:pandas 是基于NumP

2021-08-30 17:08:28 139

原创 操作系统实战(四)

划分组织内存一、分段还是分页1、从表示方式和状态确定角度考虑2、从内存碎片利用率看3、从内存和硬盘的数据交换效率看一、pandas是什么?二、使用步骤1.引入库2.读入数据总结一、分段还是分页1、从表示方式和状态确定角度考虑段的长度大小不同。页的大小固定,只需要位图就能表示页的分配与释放。2、从内存碎片利用率看由于段的长度大小不一,更容易产生内存碎片。页的大小固定分配的最小单位是页,页也会产生碎片。可以通过修改页表的方式,将连续的虚拟页面映射到非连续的物理页面。3、从内存和硬盘的数据交换效

2021-08-25 21:56:46 76

原创 操作系统实战(三)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码

2021-08-20 19:45:02 417

空空如也

空空如也

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

TA关注的人

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