自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

仰望星空

Using no way as way, having no limitation as limitation.

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

原创 C#控制窗体自动缩放

一、讲解窗体里面存在若干控件(不去关心控件是否嵌套控件,Form包含Panel,而Panel包含GroupBox,而GroupBox包含Button),只关心第一层控件,控件的控件是下一层的事情,故而递归函数呼之欲出。控件显示的效果受4个因素影响,宽度、高度、上边距、左边距。如果控件还带有文本属性Text,那么显示效果还和字号有关,就是有5个因素。窗体大小改变,窗体内所有内容等比例缩放实际...

2019-06-03 16:59:58 4044 1

原创 清除DataGridView的全部内容,包括标题行

一、问题产生的原因在VS2017下,我用DataGridView自己实现的一个控件库。由于本文的重点不在我的控件库是怎么实现的,所以我只需要给出功能描述。在文本框输入想查询的表名,然后点击显示按钮。然后问题来了——在我想查询班级信息的时候,点击显示按钮没有用。学生信息的数据仍然残留在DataGridView中——目的:清空DataGridView,包括标题行。二、解决过程Data...

2019-05-30 10:48:31 3331

原创 C#由DataGridView删除行所想到的

参考资料【1】AcceptChanges方法的区分【2】使用dataAdapter.acceptChanges( )方法实例【3】DataSet 的删除行问题

2019-05-23 11:15:54 931

原创 C#操作MySQL数据库

必要准备:SQLyog(MySQL数据库可视化辅助软件) 提取码uq2v。MySQL数据库下载提取码:n76g。一、综述根据操作数据库时是否需要一直连接的特点,将行为分为两种。第一种是对数据库始终保持连接状态;第二种是先将数据暂存于内存中,操作是对内存的数据,操作完成后,更新数据库,如图1所示。图1 操作数据库的方式二、长连数据库(1)测试界面,如图2所示。...

2019-05-21 20:14:28 8039 2

原创 C#实现邮件单人发送

一、邮件发送过程A使用163邮箱发送邮件给B(qq邮箱)。首先A会把邮件通过SMTP(Simple Mail Transfer Protocol)协议传输到163的Smtp服务器上,163的Smtp服务器会根据B的邮箱账号,把邮件通过Smtp协议发给QQ邮箱的Smtp服务器。QQ的Smtp服务器接收到邮件消息后会将之存储在QQ邮箱的邮件存储设备上。当B登陆QQ邮箱后,如果有新邮件,POP3...

2019-05-11 16:44:56 513

原创 MySql数据库的使用

一、安装MySql数据库官网链接。安装MySql对于非专业人士(适合绝大部分人),一切按照默认一直点击下一步就可以了。本文主要是在Windows下的MySql的使用。默认路径C:\Program Files\MySQL\MySQL Server 8.0 (64位情形)。1.1 启动和退出启动 mysql -u 用户名 -p 密码退出 quit;二、基本使用...

2019-05-01 11:07:33 215

原创 STL源码剖析---deque::erase()

本文的目的不是手把手教你如何理解deque(那得看书,看书是最全面的),在你大概理解了deque的设计之后,你可以结合本篇博客,看看同我有多少共鸣多少分歧。一、背景deque是双向开口的动态数组,同vector的显著区别是:1)允许在常数时间内对头端进行插入或删除的操作;2)分段线性连续,所以扩容时不需要另辟空间--->拷贝--->释放原有空间。结构设计决定其行为,一个坏的结...

2019-03-31 11:40:26 1547

原创 STL源码剖析---deque::operator +=()

一、扩展源码中用到的思想是“基地址+偏移量”,这个思想处处可见,注意留心。deque是分段连续的动态数组,其核心结构是数组+缓冲区。关于这个思想,还有些实例:二维数组、段页式地址布局、内存池自由链表free list等,基本原理都一样。下面我就二维数组进行举例——以深绿色为基准, 前进19步到达黄色;后退22步到达粉色。现在的问题是:不要通过演练,直接给出结果?那这是如何计算的呢?...

2019-03-28 00:07:49 362

原创 STL源码剖析---vector::insert()

写在前面对于数组,如果我们去实现按位置 position 插入 n 个值为 x 的元素,怎么做?假设空间充足,一般的做法是:[position,last)所有元素顺次后移 n 个位置,然后 [position, position+n) 填充成 x 。常规思维也能达到目的,但是大师到底是大师,他们重重考虑了效率,面对最适合的情形总是选择最优的解决办法。稍后我们就可以看到 Alex Stepano...

2019-03-26 16:55:05 1826 4

原创 STL源码剖析---类型萃取

一、感想2018年10月08日第一次接触类型萃取,今天是2019年3月23号,自认为对类型萃取可以暂时告一段落。现对近半年来对类型萃取的总结层列如下。二、类型萃取说文解字,萃取二字的含义自是不必说,理解为提取吧。类型,谁的类型?在SGI STL中,分两个方面:1)迭代器类型;2)迭代器所指对象的类型。迭代器类型范畴:值类型、指针类型、引用类型、迭代器自身类型、距离类型。前3种和迭...

2019-03-23 20:33:26 232

原创 STL源码剖析---内存池的实现

一、感想2019年3月15日-3月23日,大概花了8天的时间,终于将SGI STL版本实现的内存池看懂了。不过内存池这个知识点大概在2018年8月份的时候就已经接触了,今天终于弄懂了,如卸心中之块垒!在此探讨的一些点,可能非常表面,如果需要深入了解,建议直接阅读《STL源码剖析·侯捷》相应章节。二、思路2.1 内存池内存池只是使用两根指针 start_free 和 end_free...

2019-03-23 18:06:39 1188 4

原创 讲解运算符

一、概念1.1 含义运算符用于执行程序代码运算,会针对一个及以上操作数来进行运算。1.2 特点 优先级和结合性:先考虑优先级,再考虑结合性。同一优先级的运算符结合性相同(用于消除歧义)。 一般而言:单目 > 双目 > 三目(例外 ?: > 赋值运算符);算术 > 关系 > 逻辑 > 赋值。当我们提到几目运算符,实际上谈论的是操作数的个...

2019-03-19 21:14:50 465

原创 STL源码剖析---装饰者模式

一、装饰者模式1.1 含义利用到类关系中的组合。被修饰的类称为被装饰者;修饰它类的类称为装饰者。作为装饰者,因为有了一份完全属于自己的被装饰的对象(的副本)在手,就可以通过转调呈现新的行为。1.2 体现在STL中,为了提高代码的复用性以及扩展性,大量用到了“装饰者模式”。例如 栈、队列、插入迭代器、逆向迭代器、流迭代器、仿函数(重载括号运算符的对象,形式上特别像函数调用)。如果希望...

2019-03-15 22:20:37 395

原创 STL源码剖析---sort_heap

一、背景场景1:某个容器允许用户以任何次数将任何元素放入容器内,但取出时一定是从数值最大的元素开始取。优先级队列priority queue不就是想干这样的事吗?1.1 动脑筋容器最重要的动作是放入元素和取出元素。如果放入元素时不加处理的话,取出元素时就需要进行遍历,只需要将容器扫描一趟,我同样可以取出最大元素。放入元素的时间复杂度是O(1),取出元素的时间复杂度是O(n)。我们也...

2019-03-11 11:12:28 427

原创 继承与派生

一、背景 1.1 隐藏隐藏全称同名隐藏,两个成员函数(包括成员变量)处在不同的作用域之中,但是名字相同(返回值、参数列表不作要求),此时如果你想用派生类的对象去调用基类中的同名方法就无法成功了,毕竟“强龙压不过地头蛇”。解决方法,在方法前面加上作用域。class Base{public: void fun() {cout << "void Base::fun()" ...

2019-02-25 09:34:13 178

转载 Linux___安装MySQL

安装教程、可能遇见的问题 ...is needed by...、mysql-5.7.24-1.el6.i686.rpm-bundle.tar提取码35ri。 

2019-01-17 23:18:54 103

原创 Linux___安装vundle

参考资料:安装插件vundle教程、一、事前准备1)检查操作系统信息如果操作系统不是redha6.3server 32位的话可能会遇见问题。2)是否注册未注册,yum服务无法使用;我们需要更换yum源Redhat6.3server更换centosyum源。已注册的话就更好了。centos和Redhat有什么区别呢?通俗来说,centos就是没有品牌的Redhat;cento...

2019-01-17 17:48:00 628

转载 Linux___如何永久挂载文件

Linux开机自动挂载存储的两种方式、/etc/fstab文档的功能

2019-01-17 17:20:14 5698

原创 Linux___虚拟机上网

ADSL 、PPPoE、VMnet8、解决虚拟机上网问题一、网络连接方式1.1 桥接模式bridge---网络连接类型是VMnet0。首先我们需要了解两种技术:ADSL技术采用频分复用技术把普通的电话线分成了电话、上行和下行三个相对独立的信道,从而避免了相互之间的干扰。用户可以边打电话边上网,不用担心上网速率和通话质量下降的情况。理论上,ADSL 可在5 km 的范围内,在一对...

2019-01-16 21:59:57 980 1

原创 Linux___RedHat6更换CentOsyum源

更换yum源、Linux6.3 Server下配置yum一、噩梦般的提示信息图1-1 Redhat自带的yun是收费的因为我们不注册RedHat,所以yum对我们来说非常不好用。换句话说,如果我们对yum没有什么要求的话,可以不注册系统。因为注册是要花钱的。 使用非注册的软件源。安装的必要准备:百度网盘链接:RedHat6使用CentOSyum源 提取码:sotx 。打开链接,将...

2019-01-14 11:45:08 867 2

原创 Linux___安装git

参考资料:刷新小技巧、git的安装、git资源一、查看安装环境如图1 所示,本人的版本是2.6版本的。图1-1 查看linux系统版本二、下载git从参考资料列出的资源链接“git资源”中下载适合的版本,我的是2.9.5。由于我装了VMtools,所以我是先下载到WIndows10电脑上,然后再拖到虚拟机中的。也可以直接点击百度网盘链接git-2.11.0.tar.gz提取码...

2019-01-14 10:43:13 144

原创 Linux___安装Linux、GCC和G++

一、安装linuxRed Hat Enterprise Linux 6 64位详细安装教程二、安装gcc2.1 将ISO映像文件导入linux分两步:先将光盘挂载到操作系统中,其次使用本地yum源安装gcc。图2-1 将CD从Windows导入虚拟机中 这一步看似平平无奇,实际上是决定安装成败的前提。因为我在之前安装了VMtools,ISO映像文件还是VMtools的...

2019-01-13 16:54:44 235

原创 项目___模拟实现内存管理系统

以FF为指导思想,以数组实现简单内存管理

2019-01-10 20:36:03 1610 2

原创 互斥和同步的区别

互斥是指不能同时被访问,但无法控制访问顺序。同步是面向流程的。

2019-01-05 10:52:55 5785

原创 操作系统读书笔记___轮转调度算法和最早截止时间优先算法

轮转调度算法和最早截止时间优先调度算法

2019-01-04 21:23:00 2594

原创 操作系统读书笔记___调度

多道批处理系统、分时系统、实时系统

2019-01-03 20:37:32 157

原创 UNIX环境高级编程读书笔记___线程创建函数(1)

本文由线程的创建和退出、Linux中man操作手册用法、线程的堆和栈加之自己的理解整合而来。一、创建线程1.1 调用接口自问:1为什么不直接使用整型变量记录线程id呢,就和pid一样不是更好吗?2restrict关键字是什么意思? 先回答1,linux的发展历史UNIX操作系统有很多版本,Linux 2.4.22使用无符号长整型数表示pthread_t类型。Solaris把...

2019-01-02 20:49:22 217

原创 计算机操作系统读书笔记___直接进程间通信

理解发送进程和接收进程均阻塞。

2019-01-01 09:54:49 425

原创 计算机操作系统读书笔记___进程状态的讨论

进程的就绪、阻塞、挂起状态的讨论

2018-12-31 11:14:46 185

原创 操作系统读书笔记___进程间通信模型

主要描述了本地进程间通信

2018-12-31 09:42:10 462

原创 操作系统读书笔记___读者-写者问题(初稿)

推荐阅读读者优先或写者优先本篇博客是从读者优先的角度看的, 所谓读者优先是指除非有写者在写文件,否则读者不需要等待。一、含义一个数据文件或记录可被多个进程共享,我们把只要求读该文件的进程称为“Reader进程”,其他进程则被称为“Writer进程”1.1 要点允许多个进程同时读一个对象,因为读操作不会使数据文件混乱。 不允许一个Writer进程和其他Reader进程或Wr...

2018-12-30 20:03:13 299

原创 操作系统读书笔记___生产者-消费者问题

解决PC问题抓住两点:缓冲区满,生产者阻塞;缓冲区空,消费者阻塞;还需要注意互斥问题。生产者-消费者问题是进程互斥与同步的经典问题之一。

2018-12-30 11:38:14 368

原创 计算机操作系统读书笔记___管程

在面向过程语言提及的过程和面向对象提及的方法是一个意思。管程的概念 前言信号量的应用目录一、管程机制1.1 定义1.2 模型给出 二、生产者-消费者问题 一、管程机制1.1 定义代表共享资源的数据结构以及对该共享数据结构实施操作的一组过程所组成的资源管理程序共同构成了一个操作系统的资源管理模块。管程相当于“围城 ”。1.2 模型给出 特点...

2018-12-30 09:50:04 601

原创 计算机操作系统读书笔记___信号量的应用

实现进程互斥以及前趋关系(或偏序关系)

2018-12-29 19:59:22 398

原创 计算机操作系统读书笔记___信号量机制

前言进程同步,衍生阅读互斥和同步区别,互斥锁读写锁自旋锁条件变量目录一、信号量机制1.1 背景1.2 整型信号量1.3 记录型信号量 1.4 AND型信号量1.5 信号量集一、信号量机制1.1 背景1965年,荷兰学者Dijkstra、计算机先驱之一提出的信号量机制(semaphores)机制是一种卓有成效的进程同步工具。在长期且广泛的应用中,信号量机制...

2018-12-28 23:54:08 1281

原创 计算机操作系统读书笔记___进程同步

进程同步实现多进程运行结果的可再现性。

2018-12-28 16:39:43 382

原创 分析时间复杂度(1)

目录一、度量1.1 定义1.2 思路二、实战2.1 例一2.2 例二求n!的递归函数的时间复杂度2.3 例三 一、度量1.1 定义将算法中基本操作的执行次数作为算法时间复杂度的度量。这里所讨论的时间复杂度不是执行完一段程序的总时间,而是其中基本操作的总次数。这很好理解:程序运行环境不同,运行的总时间是不同的,正如在银河系列巨型计算机和普通的个人用计算机运行同...

2018-12-28 14:22:04 2929

原创 计算机操作系统读书笔记___进程的引入

前言:单道程序和多道程序、进程和线程的区别目录一、进程的定义1.1 定义1.2 基本状态1.3 扩展状态二、PCB2.1 内容一、进程的定义在多道程序环境下,程序的执行属于并发执行,此时它们将失去封闭性,并具有间断性及不可再现性的特征。这决定了通常的程序是不能参与并发执行的。因为程序的结果是不可再现的。这样程序的运行也就失去了意义。为使程序能并发执行,并且为...

2018-12-27 15:57:34 333

原创 计算机操作系统读书笔记___顺序执行和并发执行

顺序执行:结果可再现;并发执行:不加约束结果不可再现

2018-12-26 21:47:13 3758

原创 I/O复用___select函数的使用(一)

一、思路1.1 原理图1 事件结构体定义select函数会在内核维护3个数组(long int [32]从图1 我们可以看到),分别用于存放可读、可写、异常事件的文件描述符。所以本函数只能处理三种类型的事件:图2 判断事件是否发生的原理示意图事件检测机制分两步:第一步、主动将整型数组的特定位修改为1,比如说想监听文件描述符为3;第二步、去数组中观察那一位是不是仍为1,如果被...

2018-12-12 20:54:41 183

使用读进程和写进程熟悉unix高级环境编程中出现了消息队列操作函数

压缩包内含4个文件:msg.h(定义消息结构)、msg.c(包含同名头文件)、snd.c(内部转调msgsnd函数发送消息)、rcv.c(内部转调msgrcv接收消息)。重点感受:消息是有类型——这再普通不过的事实。

2018-10-22

利用信号量实现进程间同步

压缩包内含4个文件:a.c,b.c是两个源文件,分别用来模拟读端和写端。semaphore.h和semaphore.c主要实现了sem_init,sem_p,sem_v,sem_del这四个函数(函数体内是转调semget,semctl,semop,这三个函数都是linux提供的库函数)。以一个.txt文件来模拟临界资源。

2018-10-21

空空如也

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

TA关注的人

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