自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 问答 (4)
  • 收藏
  • 关注

原创 C语言实现简陋printf函数

需要用到的知识:va家族的va_list,va_start, va_end, va_arg变参函数,函数封装和宏封装#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<fcntl.h>#include<string.h>#include<pthread.h>#include<stdarg.h>#include<int

2022-01-22 17:22:55 312

原创 重装Ubuntu20.04桌面版系统,制作U盘启动盘

众所周知,很多LJ第三方软件不支持制作Linux操作系统的启动盘。实测rufus可以,插上U盘运行那个rufus,该选U盘的地方选U盘,该选镜像的地方选镜像(镜像去Ubuntu官网下载,推荐20.04桌面版),然后点击开始,完事就制作好U盘启动盘了。制作U盘启动盘的时候会格式化U盘,但做好后可以继续往U盘存别的东西不受影响。https://www.aliyundrive.com/s/Vg8Pqi57d9T 选中右键转到下载rufus(为了蹭阿里云盘空间分享的,请支持一下呗!)...

2022-04-14 16:11:58 2382

原创 制作U盘启动盘重装windows10操作系统

众所周知,windows10自带的重置此电脑功能需要让你等半个世纪,我们通常想在半小时内完成,如果你想自己的电脑绝对干净,那么就需要制作u盘启动盘了。bios设置U盘启动和diskpart磁盘分区的方法,请自行查阅其他资料,我分享给大家一个良心的制作启动盘的方法,切记,不要再用老毛桃,大白菜,winpe,或者什么软碟通什么乱七八糟的各种LJ第三方软件了,windows10官方有制作启动盘的方法,我这里直接传到网盘里,直接点击下载吧,win10已经停更了,这最新的。就一个exe文件,点开以后,不断下一步,

2022-04-14 15:57:14 665

原创 51单片机笔记(二) 数码管

按下一个按键,用数码管显示一个数或者取消显示#include <REGX52.H>#include <INTRINS.H>void DelayXms(int x) //@11.0592MHz{ while (x--) { unsigned char i, j; _nop_(); _nop_(); _nop_(); i = 11; j = 190; do { while (--j); } while (--i); }}

2022-01-26 00:21:36 360

原创 51单片机笔记(一)

51单片机装驱动的时候用原装usb线keil的注册机要选择51keil中选择好型号,编译之前要确保Options for target(魔法棒)里面的output栏里的create Hex file勾选上。如果想改字体可以改configuration(扳手)keil中要包含寄存器的头文件,右键添加即可。keil中要包含函数库文件INTRINS.H其中,_crol_ 字符循环左移_cror_ 字符循环右移_irol_ 整数循环左移_iror_ 整数循环右移_lrol_ 长整数循环左移

2022-01-25 03:34:48 275

原创 win 32 学习笔记(十) 对话框

普通窗口和对话框窗口的区别:普通窗口:自定义函数调用缺省函数WndProc(...) {... DefWindowProc(...);}对话框窗口:缺省函数调用自定义函数。缺省函数(...) {... 自定义函数(...);...}对话框原理:对话框的分类:模式对话框:当对话框显示时,会禁止本进程其他窗口的和用户交互。无模式对话框:在对话框显示后,不影响本进程其他窗口的操作。对话框基本使用:1.对话框窗口处理函数。2.注册窗口类(不使用)。3.创建对话框。...

2022-01-06 02:50:10 1344

原创 win32 学习笔记(九)画笔和画刷(了解,不继续学)

绘图基础:绘图设备DC(Device Context),绘图上下文/绘图描述表HDC-DC句柄,表示绘图设备GDI-Windows graphics device interface(Win32 提供的绘图API)颜色:计算机使用红、绿、蓝,R - 0 ~ 255G - 0 ~ 255B - 0 ~ 255每一个点颜色是三个字节24位保存0-2^24-116位:5,5,632位:8, 8, 8, 8绘图或透明度。HDC hdc = BeginPaint(hWnd...);Tex.

2022-01-06 01:44:09 1352

原创 win32学习笔记(八) 图标资源、光标资源、字符串资源、加速键资源

图标资源添加资源注意图标的大小,一个图标文件中可以有多个不同大小的图标。加载图标:HICON LoadIcon( HINSTANCE hInstance LPCTSTR lpIconName);设置图标:注册窗口类时。光标资源:添加光标资源:每个光标有HotSpot;加载资源:HCURSOR LoadCursor( HINSTANCE hInstance, LPCTSTR lpCursorName); hInstance 可以为NULL,获取系统默认...

2022-01-03 02:16:00 815

原创 win32 学习笔记(七) 菜单资源

菜单资源菜单分类:窗口顶层菜单(标题栏下面)、弹出式菜单(右键,下拉等)、系统菜单(直属windows系统,例如右键标题栏)HMENU类型是菜单句柄,ID表示菜单项资源相关:资源脚本文件:*.rc文件编译器:RC.EXECL.EXE把c/cpp编译成.obj, RC.EXE把.rc编译成.res,LINK.EXE将上述两者链接存到exe第一步添加菜单资源第二步加载菜单资源1.注册窗口类时设置菜单2.创建窗口传参设置菜单3.在主窗口WM_CREATE消息中利用SetMenu函数设置菜单

2022-01-03 00:40:05 464

原创 win32学习笔记(六) 定时器消息

定时器消息:在程序中创建定时器,当到达时间间隔时,定时器会向程序发送一个WM_TIMER消息。定时器的精度是毫秒,但是准确度很低。附带信息:wParam: 定时器IDlParam: 定时器处理函数的指针。创建和销毁定时器:UINT_PTR SetTimer( HWND hWnd, //定时器窗口句柄 UINT_PTR nIDEvent, //定时器ID UINT uElapse, //时间间隔 TIMERPROC lpTimerFunc //定时器处理函数指针...

2022-01-02 20:35:35 467

原创 win32学习笔记(五) 鼠标消息

鼠标消息:基本鼠标消息: WM_LBUTTONDOWN:鼠标左键按下 WM_LBUTTONUP:鼠标左键弹起 WM_RBUTTONDOWN:鼠标右键按下 WM_RBUTTONUP:鼠标右键弹起 WM_MOUSEMOVE:鼠标移动消息双击消息: WM_LBUTTONDBLCLK:鼠标左键双击 WM_RBUTTONDBLCLK:鼠标右键双击滚轮消息:WM_MOUSEWHEEL:鼠标滚轮消息鼠标基本消息: 附带信息:wParam: 其他按键...

2022-01-02 06:20:55 779

原创 win32 学习笔记(四) 键盘消息

键盘消息:WM_KEYDOWN 按键按下时产生WM_KEYUP 按键弹起时产生WM_SYSKEYDOWN 系统键按下时产生WM_SYSKEYUP 系统键弹起时产生WMPARAM 按键的Virtual KeyLPARAM 按键的参数,例如按下次数。字符消息WM_CHAR:TranslateMessage在转换WM_KEYDOWN消息时,对于可见字符可以产生WM_CHAR,不可见字符无此消息。附带消息:WPARAM:输入字符的ascii码值。LPARAM:按键的相关参数。只考虑键盘按下

2022-01-02 05:08:09 416

原创 C++中两种调用函数的时机

忽然想明白很久之前问java老师的一个问题,当时我在类里定义了一个静态成员,直接用赋值号赋为了一个静态成员函数的返回值。就问老师为什么这次函数调用了,却没有让那个静态成员成为想要的值。今天又写了一行代码,再次出现这个问题:在全局,我“调用”了一个函数。后来我用后脑勺想了一下,什么情况下才会调用函数?一个程序从main函数开始,cs:ip指针是从main函数出发的,所以上述两个地址是无法经过的。不报错的原因,上图中,是因为赋值号左右类型兼容。然后就是类的构造函数,在定义类的对象的时

2022-01-02 04:32:38 494

原创 win 32学习笔记(三) 消息队列

抓取消息:GetMessage:从系统获取消息,将消息从系统中移除,阻塞函数。当系统无消息时,会等候下一条消息。PeekMessage:以查看的方式从系统获取消息,可以不将消息从系统移除,非阻塞函数。当系统无消息时,返回FALSE,继续执行后续代码。BOOL PeekMessage( LPMSG lpMsg,// message information HWND hWnd,//handle to window UINT wMsgFilterMin,//...

2022-01-01 23:05:52 940

原创 win32 学习笔记(二) 初识消息

WM_DESTROY消息:产生时间:窗口销毁时附带信息:wParam为0,lParam为0一般用法:常用于在窗口呗销毁之前,做善后处理,例如资源、内存WM_SYSCOMMAND消息:产生时间:当点击窗口的最大化、最小化、关闭等。附带信息:wParam:具体点击的位置,例如关闭SC_CLOSE等。 lParam:鼠标光标的位置。 LOWORD(lParam);//水平位置(lParam的低两个字节) HIWORD(lParam);//垂直位置(lParam的高两个字节)一...

2021-12-30 01:48:39 404

原创 win32 学习笔记(一) 字符编码

把项目属性里的字符编码方式从unicode改成多字节TEXT()函数可以根据是否定义了UNICODE把字符变成char或wchar_t由于他存在于库中,所以如果定义UNICODE,要写在include<Windows.h>的上面wprintf对汉字的打印支持不完善,打印汉字用WriteConsole函数LPSTR === char* LPCSTR === const char*LPWSTR === wchar_t* LPCWSTR === const wchar_t*...

2021-12-29 04:45:07 383

原创 mysql 李玉婷网课配套笔记(五) 分页查询,库和表的管理

-- 进阶8:分页查询/* 应用场景:当要显示得到数据一页显示不全,需要分页提交sql请求 语法: select 查询列表 from 表 【join type join 表2】 【on 连接条件】 【where 筛选条件】 【group by 分组字段】 【having 分组后筛选条件】 【order by 排序的字段】 limit offset, size; 其中offset是要显示条目的起始索引(起始索引从0开始) size是每一页的条目个.

2021-12-01 05:26:57 145

原创 mysql 李玉婷网课学习配套笔记(四) 连接查询、子查询

-- sql99连接语法/*语法:select 查询列表from 表1 别名【连接类型】join 表2 别名on 连接条件【where 筛选条件】【group by 分组】【having 筛选条件】【order by 排序列表】*//*连接类型:内连接:inner左外: left 【outer】右外: right 【outer】全外: full 【outer】交叉连接:cross*/-- 一、内连接/*语法:select 查询列表from.

2021-11-30 03:59:24 600

原创 mysql李玉婷网课配套笔记(三) 分组查询、连接查询bilibili

sql92语法:等值连接,非等值连接,自连接等基础函数汇总:一、单行函数1、字符函数concat 拼接substr 截取子串upper 变大写lower 变小写replace 替换length 获取字节长度trim 去前后空格lpad 左填充rpad 右填充instr 获取子串第一次出现的索引2、数学函数ceil 向上取整round 四舍五入floor 向下取整mod ...

2021-11-26 06:42:12 170

原创 mysql 李玉婷bilibili配套听课笔记(二)排序查询、常见函数

-- 进阶3: 排序查询 /*语法:select 查询列表from 表【where 筛选条件】order by排序列表asc升序默认可省略/desc降序 */ -- 案例1: 查询员工信息,按照工资高到低 SELECT * FROM employees ORDER BY salary DESC; -- 案例2:查询部门编号>=90的员工信息,按照入职时间先后排序 SELECT * FROM emplo...

2021-11-25 05:56:48 345

原创 mysql李玉婷网课配套笔记(一) 基础查询、条件查询bilibili

命令行:管理员身份运行cmdnet start/stop mysql 启动和关闭登录 mysql -h localhost -P 3306 -u root -p查看数据库:show databases 查看库里的表:show tables from进入库:use查看当前在哪个库:select database()查看表中数据:select * from表名创建一个表:create tables(行名 本行元素类型, 行名 本行元素类型……);显示表格:desc 表名#进阶1:...

2021-11-24 03:39:24 579

原创 3.无重复字符的最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注...

2021-11-24 01:54:16 144

转载 2两数之和

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输.

2021-11-21 23:47:39 59

原创 数组-1 两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums.

2021-11-21 00:33:21 79

原创 理解动态联编,探究C++ this指针和普通成员函数以及虚函数的关系

为什么可以通过虚函数的动态连编实现动态多态?经过一个中午的多方资料查询,我得出一个结论:普通成员函数是在调用的时候把this指针作为参数传进来,因而默认是调用当前类的这个函数,而虚函数是直接绑定在this指针上,也就是说在构造类的时候不仅像生成普通的成员函数一样,生成了虚函数(可能实现了也可能没实现)而且直接把虚函数的函数指针绑定到了this指针后面的地址里。所以可以把基类指针赋值为不同的派生类指针,通过这个基类指针调用不同派生类里面的虚函数。因为那些函数都已经绑定到实参上去了。而普通成...

2021-11-19 13:28:37 525

原创 kmp算法

目录kmp算法的介绍kmp算法的大致思路kmp算法的眼睛kmp算法的next数组的构造next数组实现过程中的归纳和构造两种思想kmp算法完整代码实现kmp算法的介绍KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是...

2021-11-19 00:10:33 112

原创 C陷阱与缺陷读书笔记(一) —C语言函数指针的强制类型转换

首先回顾一下函数指针,函数指针是指向函数的指针,不同于函数返回的指针类型数据,比如int* (*p)(); 这句话就是声明一个函数指针p,他指向一个"返回值类型为指向整型数据的指针类型的函数"。也就是声明普通的指针类型变量我们是写上类型名后面接*,而声名函数指针类型我们是写函数的返回值类型后面括号里面写*接函数指针变量名,再接()象征形参列表,如果是需要传参的函数,还要在里面写上参数类型,然后后面写不写形参都可以,类型声明而已,能不写就不写吧。或者这样想:"声明普通指针类型是把*放在后面,而声明函数指...

2021-11-08 10:11:37 1775 3

原创 浮动元素 float布局

初学前端,跟随着b站pink老师的528集超好的讲解,几天时间不知不觉已经进去了200集。对于刚接触float布局的人来说,一定有很多奇思妙想,而不管是别人给讲,还是翻阅书籍,都可能存在效果不符合预期的情况,当然,大多数情况都是没什么实用价值的瞎想。今天就总结两点,帮助像我一样的初学者不留疑惑地接受所有的偏僻情况。第一条: 浮动元素是往指定方向浮动,直到接触到父级元素的边框或者其他浮动元素的边框,把重叠在它下面的标准流元素往相反方向挤兑出去。第二条: 浮动元素在纵向上不会挤兑标准流元素,也

2021-05-23 00:27:12 124

原创 第十二周 acm刷题总结 二分

1 二分查找就不多赘述了,直接上代码吧。都默认单调递增int bin_search(int a*, int head, int tail, int val) { int l = head, r = tail; while(l <= r) { int mid = (l + r) >> 1; if (a[mid] == val) return mid; else if (a[mid] < val) l = mid + 1; else r = mid - 1; }

2021-05-19 04:25:07 247

原创 B. Permutation Sort Educational Codeforces Round 109 (Rated for Div. 2)

You are given a permutation aconsisting of n numbers 1, 2, …, n (a permutation is an array in which each element from 1 to noccurs exactly once).You can perform the following operation: choose some subarray (contiguous subsegment) of aand rearrange the

2021-05-18 17:32:36 178

原创 第十一周 acm刷题总结 背包

1 背包装物品是有顺序的,顺序是逆着状态转移的方向的。因为当我们逆着状态转移的方向去寻找上一个状态的时候,会发现背包的容积在减少,为什么在减少呢?因为我们在装物品。2 关于背包能否装满和能否装满的同时价值最大,这两个问题,之前只接触了后者,而对于单纯判断能否装满却毫无概念,就还是全赋值成为负无穷,然后因为负无穷加多少都加不成正值嘛,也就顺便用包最大容积状态的值的正负来判断能否装满了。这不仅是一种资源的浪费,而且并不是绝对可靠的,万一有很大的值就是能够把值加成正的呢?今天学习了一个地道的判定方法:判定背包当

2021-05-16 02:41:28 91

原创 2021年5月省赛总结

这次省赛我们只出了3道题,还是在有一个比较厉害的队友带的前提下。学习算法并非一朝一夕,如果想第一次参加省赛就必须拿奖的话,确实有点操之过急。虽然,这次省赛也确实给我们队伍不小的打击,和中学生都没法比。归根结底还是自己的知识量太少,因为知识量太少,所以对自己的能力没有自信,大家都是这样,题意拿到手了, 都不敢做。 先看看榜单,瞅着这个题没超过30人做出来,也不敢做,连深一点往下想的勇气和耐心都没有。也不能怪谁,我们都比较菜,自己到底能不能做这道题,自己也没有自信, 虽然读完了题觉得面熟,觉得试一试或..

2021-05-10 22:40:30 156 1

原创 第十周 acm刷题总结,背包

关于背包问题我比较熟悉的目前只是01背包,其他的背包如果能转化,我就都转化成01背包。01背包刚学的时候最初我是用二维数组记录状态的,后来习惯用一维。上个例题吧:Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as dog’s , cow’s , also he went to the

2021-05-10 18:56:14 196

原创 二进制优化的完全背包

题目描述有N种物品和一个容量为 V的背包,每种物品都有无限件可用。第 i种物品的体积是Ci,价值是Wi。求解在不超过背包容量的情况下,能够获得的最大价值。54E9C51263E1462585A8F6595841EEC0.jpg输入第一行为两个整数N、V(1≤N,V≤10000),分别代表题目描述中的物品种类数量N和背包容量V。后跟N行,第 i行两个整数Ci、Vi,分别代表每种物品的体积和价值。输出输出一个整数,代表可获得的最大价值。样例输入5 202 33 410 9

2021-05-06 19:22:05 463

原创 **第八周 acm刷题总结 区间DP**

关于区间DP还有好多问题没有解决,先把解决了的总结一下:区间DP的模板代码: 我习惯先枚举区间长度,再枚举起点终点,然后枚举分割点。//遍历阶段:枚举区间长度,本例枚举的不是坐标差,是区间内点的个数for (int len = 2; len <= n; len++) { //遍历每个阶段的状态:枚举起止点,起点先减去1,回到没有点的状态,然后加上点的个数,就是终点的位置,比写成i + len - 1 更友好。 for (int i = 1, j; (j = i - 1 + len) <

2021-04-26 02:18:09 126

原创 “第六周 acm 刷题总结 线性DP”

前期刷题整理:1.反恐训练营当今国际反恐形势很严峻,特别是美国“9.11事件”以后,国际恐怖势力更是有恃无恐,制造了多起骇人听闻的恐怖事件。基于此,各国都十分担心恐怖势力会对本国社会造成的不稳定,于是纷纷在本国的军队、警察队伍中开展了反恐训练。作为反恐立场坚定的大国,中国也十分重视在人民解放军、武装警察部队、人民警察队伍中反恐训练,还专门成立了反恐特警队。炜炜是反恐特警队的一名新队员,现在正在接受培训。这几天刚好是射击训练第二阶段——实弹应变训练的日子,此前的第一阶段里,炜炜经过努力,已经将自己训练成

2021-04-19 06:04:59 174

原创 **第四、五周 acm刷题总结 线性DP**

学习DP是前所未有的挑战。 今天对动态规划有了新的认识。之前认为它是一个采集更优解的过程,是太片面了。 今天遇到一个题,发现更优解不是动规采集的,动规本质上只是把每一个子状态存下来而 已。以前说起动态规划就想到背包,并且很多都能把那一套理论套上,现在发现更加通用 的理解方式,应该是递推。就找到子状态和递推方式就好了。 今天遇到的题是雇佣工人的问题,告诉工程持续的...

2021-04-14 04:23:15 456 1

原创 * 第四、五周acm刷题总结 背包**

** 第四、五周acm刷题总结 背包** 思考了两个周的动态规划,希望能慢慢用自己的方式理解。这两个周里想出来的一个“采集”的模型,在总结背包之前先解释一下。 动态规划和贪心都是局部最优累积成全局最优,是一个不断求最优解的过程,关于贪心,我想可以理解成在总揽全局的前提下,制定一个最优原则每一次局部的抉择都遵循这个原则,并且每走一步,往后的选择空间就少了一份。而动态规划,我想并不能做到总揽全局,另外,新的一步客观上继承上一步,但操作方法不受上一步的制约。...

2021-04-11 18:53:03 126

原创 **第三周 acm刷题总结 大整数**

**第三周 acm刷题总结**题越来越做不动了,做了个大整数除法学了两三天,这个周只有汇总一下大整数的加减乘除:本想多总结几道题的,大整数除法到现在不会做。大整数的加法:最初的原型是开4个大数组,两个字符型两个整形,方法:利用字符数组进行输入,然后把字符数组里的字符减48转化为对应的整形数字,逆序存进整形数组,这样是为了方便进位,然后模拟加法竖式,代码如下:#include #include #include <time.h>using namespace std;..

2021-03-28 23:57:04 103

原创 **第二周 acm刷题总结** 贪心算法

第二周 acm刷题总结 贪心算法贪心算法是通过局部最优解求全局最优解的方法,一般是首先借助朴素方法模拟整个行为过程,通过观察其中各个要素的作用选取有用要素为参照,很多时候需要排序,也有时候不需要。例子如下。例1:每次输入电视节目的总数以及每一个节目的起止时间,求在这n场节目中我最多能完整地看完几个?这个题模拟一下可以画一画线段示意图,然后观察出想要尽可能多看节目,需要先看最早结束的,然后每次都接着看早结束的。故而先按照结束时间升序排序,然后每次遍历结束时刻和下一个节目的开始时刻作比较,如果下一个节目

2021-03-20 17:21:02 88

空空如也

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

TA关注的人

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