自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 UEFI中的界面设计(二)

结合PASSWORD控件阐述HII驱动中代码部分的写法

2022-06-03 14:41:34 1718 1

原创 如何理解UEFI的事件机制(三)——时钟中断

填坑啦填坑啦!填陈年老坑啦!一,时钟中断概述UEFI 中的EVENT是使用时钟中断来驱动的。在时钟中断处理函数中,它会检查系统中的定时器事件并处理到期的定时器事件,并在合适的时机调度事件的Notify函数,是事件的实现基础。时钟中断在DXE的主函数DxeMain中初始化(准确的说是在初始化事件时)并开始使用,具体的流程请看下图——当时作为UEFI小白的我画了一天!其实后来看,有一些是架构协议与触发函数注册的内容,待会浅提一下。二,时钟中断执行流程执行时钟中断的单元函数是CoreTimerTick

2022-04-11 12:23:05 1811 2

原创 UEFI中的界面设计(一)

最近我从显示驱动搞到显示LOGO和显示界面、再到做界面、改框架,一路走来很是坎坷,但或许会有意义所在吧?一直想写点东西,然而真没空懒 ,三月末疫情哐的一下给我锁家里了,好了,可算是有空了。废话说的太多,直接上笔记好了,为了不违规用的都是EDK2官方的代码,可以直接找对应的文件对应着看一下!界面设计概论最新的EDK2代码,构造界面框架大概如下稍微解释一下HiiDriver:最上层的界面实现,由.uni、.vfr和.c组成,这里我只画了一个,其实可以有很多个,以lib的形式被UiApp集成。

2022-04-05 12:37:45 3678 5

原创 如何理解UEFI的事件机制(二)

我看了很多文章,包括用的教材都是基础知识——时间中断——调度这个顺序这给我造成了很多误解,因为看时钟中断看了很久,但完全不知道它和异步事件调度有什么联系,看到最后才恍然大悟,原来是这样。虽然这种博客应该没什么人看,但恭喜你,不用奇怪这点了。故事要从上篇提到的恢复(降低)优先级的RestoreTpl说起这个函数前面都很正常,断言啊,判断啊,比较有意思的是这一段 while (gEventPending != 0) { PendingTpl = (UINTN) HighBitS

2021-08-03 18:35:31 831

原创 如何理解UEFI中的事件机制(一)

(工作真是太奇妙了,总觉着我在疯狂的给自己立flag)顺便记录自己第一次说话都打颤的技术交流1,关于eventevent的定义属实难找,教材也没有,spec也没有。不过它还是很好理解的,作为一个曾经写过如何自学qt博客的人(可惜最后工作完全用不上),我看见它的第一反应就是这不connect吗设置一个信号一个槽,当信号被触发时运行槽里的内容至于怎么用,我举事件类型的例子就可以了这是常用的三种类型(还有其他类型,类型与类型还可以组合,这不赘述了)顺便一提,WAIT和SIG

2021-08-02 09:16:42 1408

原创 如何在linux上搭建edk编译环境

被分到了做bios系统的组里(但愿下周我还在),记录一下最艰难的起步。环境说明:ubuntu子系统 18.04gcc 7.5python 3.61,下载源码git clone https://github.com/tiancore/edk2第一步就扑街,这是我没想到的。这里涉及到git里面的子模块——热知识,在clone项目时子模块的内容不会被一并复制下来,而是以链接的形式储存在文件里。这个时候就需要另一个指令git submodule update --init

2021-07-15 15:53:28 1702 2

原创 【力扣每日一题】扰乱字符串

力扣 扰乱字符串题求解

2021-04-16 16:36:32 161

原创 如何自学qt(12)——绘图(上)

1,在头文件中添加绘图事件//paint.cppvoid paintEvent(QPaintEvent *event);2,在窗体函数里实现事件具体功能见注释#include<QPainter> //画家类//实例一个画家对象,this指定绘图设备QPainter painter(this);//画线void Widget::paintEvent(QPaintEvent *event){ //实例一个画家对象,this指定绘图设备 QPainter pai

2020-11-04 12:23:02 285

原创 如何自学QT(11)——event分发的理解

事件什么是事件?(9)里面的鼠标,(10)里面的计时器,都是qt的事件——只不过,他们并不是直接面向应用的,在事件和app中间,还夹着一个分发器bool evenr(QEvent *ev);如果返回值是true,证明用户要处理这个事件,不再向外分发了...

2020-11-01 00:09:19 190

原创 如何自学qt(10)——计时器

学了这个就能玩时限梗了首先查个文档(注意,选类的时候选QTimer)和(9)中鼠标事件类似的身影因为这个没有进入进出的问题,所以我们可以直接在主窗体里面实现首先,在.h文件中声明一下,我们要重写这个函数了//mainwindow.hpublic: void timerEvent(QTimerEvent *e);//就是把帮助文档复制过去在.cpp文件中重写函数//mainwindow.cppvoid MainWindow::timerEvent(QTimerEvent *e)

2020-10-29 22:54:11 270

原创 如何自学qt(9)——鼠标响应

在写鼠标事件之前,我们先按(8)的方法造一个mylabel控件,并把它应用在主窗口【为了方便看,我给这个label加了黑框,修改位置在这里】然后就可以开始写鼠标事件了遇事不决,先查文档可以看到,qt提供了鼠标事件的五种操作,分别是移动,摁压,释放(图1),进入(图2),和离开(图3)而且,这是一种虚函数——这就说明,我们要自己实现它。先在mylabel的头文件里面写声明//mylabel.hpublic: explicit mylabel(QWidget *parent =

2020-10-29 21:12:07 308

原创 如何自学qt(8)——自定义封装控件

首先,选择qt中的设计师界面类【然后随便选一个窗口就行,这里我们选择widget,一个空窗口】选择两个控件,做一个水平布局,调整大小。观察,这个控件是widget类,所以我们在主窗口里也创建这样一个类,对它右键,选择提升为输入创建的类名,点击添加...

2020-10-27 14:15:31 657

原创 如何自学qt(7)——其他控件

1,ListWidget大概可以理解为,写成链表的widget①麻烦的可以细化属性的填入方法QListWidgetItem *item = new QListWidgetItem("相见争如不见");//把item放进控件ui -> listWidget->addItem(item);//设置item在框里的位置item->setTextAlignment(Qt::AlignHCenter);//枚举如果找不到可以查帮助文档效果如下②快捷的没法设置位置的填入方法Q

2020-10-11 23:12:11 244

原创 如何自学QT(6)——在?看看摁钮控件

1, pushbutton①添加资源【把资源文件添加到res中的操作见前文】找到icon项点击下箭头,添加资源可以选择图标,最左边的转向可以撤销。【不要点添加文件!添加文件不显示的!】2,toolbutton比起pushbutton,toolbutton更适合用于添加图片资源【举个例子,就是qq的图标】添加图片,添加文本找到toolbuttonstyle 修改图片和文本的相对位置如果点击autoraise,可以把摁钮改成透明的,鼠标移动显示最后效果3,radiobutton

2020-10-08 12:12:08 218

原创 如何自学qt(5)——页面布局

拖拽也是要讲基本法的!1,选取wight进行布局点击,拖到界面,把要布局的控件扔进去然后点这个这样,里面的控件就可以乖乖摆成一排类似的,竖直控件是一列,如果要矩阵排列,就点栅格布局(右三)如果想要删除,点打破布局(右二)控件和wight之间是有固定边距的,一般为9,可以在这里修改可以修改窗口的长度,使它和控件等高或等宽,参数在这里跟之前一样,修改成fixed即可2,关于弹簧1,布局后才能使用弹簧2,弹簧的长度是可以设定的在这3,弹簧可以固定长度点击fixed即可3

2020-10-07 23:34:41 366

原创 如何自学qt(4)——对话框

1,触发对话框在qt中,对话框分成两种一种是模态对话框,简单的说,就是点开后无法忽视它,必须要关闭才能操作其他窗口【如果强制操作会发出duang的声音】另一种是非模态对话框,跟上面那个相反,是一个无所谓的对话框。具体的话……先在ui里创建两个触发一个叫new,一个叫open用new触发模态对话框的生成,代码如下connect(ui->actionnew,&QAction::triggered,[=](){ //对话框分类 //模态对话框(不可以对其他

2020-10-06 21:23:08 811

原创 如何自学qt(3) ——添加资源文件

添加资源文件(×)如何把我老婆放上界面(√)1,把图片拷贝到项目下2,在项目中添加res文件我把它起名成了res【友情提示,这个qrc不能双击打开,要右键点击open in editor】3,添加资源文件在res.qrc里面添加前缀和文件,选中之前粘进项目的我老婆图标4,使用然后就可以在项目里添加啦! // 使用qt资源 ": + 前缀名 + 文件名" ui ->actionnew -> setIcon(QIcon(":/xin.jpg"));其中,a

2020-10-06 10:04:16 161

原创 如何自学qt(2) ——MainWindow类相关

这一篇主要讲MainWindow这个基础类——因为我学qt的终极目标是做一个文本编辑器,所以这个就很重要。我实在是懒得描述这四个1,菜单栏【中午没买咖啡,我现在困的像狗】菜单栏只能有一个,在最上面,类似于word里面的那一排“文件”“格式”“布局”什么的基础设置代码如下#include "mainwindow.h"#include "ui_mainwindow.h"#include <QPushButton>#include <QDebug>#include &l

2020-10-04 18:41:26 420

原创 如何自学qt(1)

【题目应该叫,如何在面试的前一天临时抱佛脚】1,文件目录项目名称——pro文件,里面有基础的版本信息,一般不改——头文件,和c++一样,自动生成——资源文件main.cpp :程序入口mainwindow : 窗体文件,代码在里面——组成里面放着ui2,写代码!①写个摁钮吧两种写法,一种是QPushButton *b = new QPushButton();然后在后面设定b -> setParent(this); //继承的窗体b -> setText("f

2020-10-04 12:23:05 379

原创 c++的链表归并排序

为什么做这个呢?因为深信服面试考了这个我没答出来啊阿西吧!首先是归并排序啦所谓的归并排序,就是,把一串数字两两分组排序,然后再两两分组排序,然后……直到排完看起来就很递归至于取中值……快慢指针大法好!【代码有参照别人的class Solution {public: ListNode* merge(ListNode* h1,ListNode* h2) { if(!h1) return h2; if(!h2) return h1;

2020-09-18 13:18:51 515

原创 C++实现KMP(大概能跑)

【这代码写的我云里雾里,全靠瞎蒙,反正是蒙上了】【存个档】#include <studio>#include <string>#include <vector>using namespace;int main(){ string pattern = "qwwqui"; string s = "sgyuigqwwquiihso"; int length = pattern.size(); vector<int> next(length,-

2020-09-17 21:39:40 142

原创 面试笔记(未完待续)

啊!面试凉了两个了!而且问的问题,完全不一样啊!嗯……算是回顾一下吧。1,关于结构体数据对齐在深信服笔试里出现的问题,觉着还挺有意思的,记一下首先是关于字节长度,在不同机位的系统下中,不同类型对应的字节长度也不同比如int 16位系统下两字节,32下四字节,64下四字节char 什么系统都一字节long 16系统下4字节 32下四字节 64下八字节至于指针,因为值得是地址,所以只跟系统长度有关16系统:2字节 32系统:4字节 64系统:8字节那么,什么是结构体数据对齐

2020-09-13 23:13:29 260

原创 C++解决上升下降字符串问题

嗯……最近在刷力扣,没什么兴致写博客。不过这题挺有意思的,想记一下原题链接:https://leetcode-cn.com/problems/increasing-decreasing-string/题目:给你一个字符串 s ,请你根据下面的算法重新构造字符串:从 s 中选出 最小 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最小 的字符,且该字符比上一个添加的字符大,将它 接在 结果字符串后面。重复步骤 2 ,直到你没法从 s 中选择字符。从 s 中选出 最大 的字符,

2020-08-28 18:25:45 231

原创 二叉树相关知识(c++)【未完结】

1,求深度:递归思想,一个点的深度 = 子树最大深度+1【本质是DFS后序遍历】class Solution {public: int maxDepth(TreeNode* root) { if(root == NULL) return 0; else return max(maxDepth(root->left),maxDepth(root->right))+1; }};2,求

2020-08-28 14:55:22 102

原创 c++求平方根(牛顿迭代法)

借鉴了:https://blog.csdn.net/weixin_42109012/article/details/91359268思路很简单,就是确定这样一个函数确定一个点,在这个点做函数的切线,这条切线和x轴的交点会越来越靠近所求的值接下来就是高一数学,假设这个点是x0,确定的点就是(x0,x0×x0-n)对函数求导,得切线斜率是2x0计算这个切线和X轴的交点为((x0×x0)+num)/2×x0再比较大小,不断循环到找到符合精度的代码如下:#include <iostream&

2020-07-30 13:19:27 5612

原创 C++算法数组相关(未完结)

1,合并数组【怨念】其实这道题不难——但是!我以为相同的数字要删去!考虑了很久!【实际并不用删】题目:AB两个排序数组,原地合并数组。(A当中穿插一些无效数字怎么处理?)原理:注意,是原地合并数组所以,假设a的后端空间足够大,判断长度后从后往前比较就可以了代码如下:#include <iostream>#include <stdlib.h>using namespace std;/*AB两个排序数组,原地合并数组。(A当中穿插一些无效数字怎么处理?)1 a

2020-07-06 00:01:48 188

原创 C++解决剑指剪绳子问题

题目:给你一根长度为n绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段的绳子的长度记为k[0]、k[1]、……、k[m]。求k[0] * k[1]*…*k[m]的最大乘积是多少?例如:当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到最大的乘积18。看见最大,以及相乘这种可以被拆解的计算方式,我们应该能想到动态规划。那么,该拆到什么程度呢?当长度为1时,结果是0当长度为2时,结果是1×1 = 1当长度为3时,结果是1×2 = 2当长度为4

2020-07-05 19:16:56 364

原创 c++算法解决力扣跳步问题

我是一只小跳蛙首先是题目:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。例子:输入: [2,3,1,1,4]输出: true解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。需要注意的是,参数是可以跳的最大长度,不是必须要跳的长度——也就是说,跳出去也没问题的。因为这个特点,所以使用贪心算法,计算每个位置能跳的最大值。比如第一个数值是2,位置是0,所以当前最大位置是2第二

2020-07-04 12:31:57 529

原创 算法:买卖股票最佳时机(c++)

买卖股票相关问题:1,只能买卖一次:假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易,设计一个算法来找出最大利润。例如:[3,4,5,1,9]输出:8解释:第四天买入,第五天卖出原理:为了减少复杂度,这里用峰谷的方法遍历在第一个不亏损的日子买入,然后比较,如果后一天不卖是亏损还是接着赚。亏损就放弃这一段,从下一个日子开始继续分析接着赚就不放弃。【说实话我觉着难点在怎么记这个开始和结束的日子,我还试了一下,挺麻烦的】c++实现代码如下:i

2020-07-04 10:43:50 2789

原创 python实现wm算法(多模式匹配)

唔……项目的一部分,留个底吧。首先介绍一下wm算法:这是一个多模式匹配算法,核心思想是跳步——简单的说,就是如何找出当前状态下,跳的最多步数。为了完成这样一个需求,要先对数据进行处理。这里,我们假设要匹配的短字符为tag,要匹配的内容为text打个比方:listtag = ['陈白露呀', '杜伟的死', '以色列外交部']listext = [text0, text1, text2, text3, text4, text5, text6]text0 = '【外媒:中国驻以色大使去世,原因尚

2020-06-26 00:50:23 1347

原创 python链接mysql进行搜索时出现中文字符无法识别问题解决

【这问题我足足改了一下午,吐了】是这样的,正常语句是下面这样SELECT COUNT(*) FROM 用户博文表 where 性别 = '女'在mysql里面这个语句是可以的但是在python里面不行!不能定义一个含有‘女’的字符串!不加‘’,就会弹出1064,‘女’不在元素中的错误纠结了一下午,忽然想起来,诶,为什么不用group by呢……于是乎……mysql_cn = pymysql.connect(host='localhost',

2020-05-28 16:59:03 444

原创 libpcap抓包的千层套路

这玩意可真是太折腾人了下载libpcap运行下载libpcap一行就行sudo apt install libpcap-dev输入密码,选择yes,倒一杯红tea的时间就下完了##关于测试代码因为这回是做实验,所以先贴一下需求winpcapt或libpcap编程过程,编写程序捕获实验一的数据包。还原四元组(源目的IP源目的端口),和文件内容,写到一个文件里(默认文件)如果需要也...

2020-04-11 23:29:19 206

原创 窝工数据库第一次实验学习记录(下)

这篇主要记一记学习的java GUI相关知识。【我错了,我真的错了,我一开始就不应该非要用VS肝这个实验,浪费了大量时间结果还是乖乖用javaGUI好,GUI真的好,我永远都爱GUI1,首先是建立文件项目右键—》new—》otherWindowBuilder—》JFrame2,拖方框也是一门艺术点击上面这个contentPane,下面会弹出来一堆属性,把其中的Layout改成(...

2020-04-03 22:50:50 176

原创 窝工数据库第一次实验学习记录(上)

兵荒马乱的第一次实验啊……有的知识点记一下。用java做了一个工厂的管理系统,记录方面包括java 的GUI和数据库两方面。数据库1,建立一个表CREATE TABLE `name`( `runoob_id` INT UNSIGNED AUTO_INCREMENT, `runoob_title` VARCHAR(100) NOT NULL, `runoob_author` V...

2020-04-03 22:20:02 243 1

原创 算法题之最长子串长度

小垃圾刷算法题【我绝对没有在水博客】力扣上的字符串类型题给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。如:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。思路:遍历是不可能遍历的,复杂度太大,系统不给过.借用一下滑动窗口思想.当窗口里不包含下一个字符时把窗口往后移,并且比较当前长度和最长的长度当...

2020-01-14 21:58:09 1450

空空如也

空空如也

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

TA关注的人

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