自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(109)
  • 资源 (5)
  • 收藏
  • 关注

原创 Centos7 安装 Oracle19c

Centos 7 安装 oracle 19c

2024-04-02 10:46:11 628

原创 Linux gdb 破解软件密码

备注完整的程序的示例代码在https://github.com/SimpleSoft-2020/gdbdebug/这儿有一个完整的破解视频在这儿https://edu.csdn.net/course/detail/28981********************************************************************************************************这儿有一个小程序,运行的时候需要输入密码,如果密码.

2021-04-19 18:02:44 2809

原创 C/C++语言链表的排序与查找定位

在前一篇文章中其实介绍了链表的基本知识,比如构建、遍历、查找等问题,可以参考这篇文章https://blog.csdn.net/zhanghaiyang9999/article/details/114360628本篇文章主要介绍对链表的排序操作。链表的排序链表的排序,本质上是和其他的数据结构(比如数组)的排序的原理是一样的,排序的本质是元素的交换,知识链表元素的交换稍微麻烦一点。链表元素的交换比如我们现在有如图所示的一个链表结构:希望把节点2和节点3进行交换,交换后的结果就是

2021-03-18 13:10:22 2606

原创 C语言结构体与链表,单向链表构造,链表遍历,链表元素查找,链表元素删除

C语言的结构体C语言中的结构体非常常用和非常非常重要,也是链表的基础,真正把结构体掌握好了,链表也就很容易掌握了。在C语言中,申明一个结构体,很简单,如下代码所示:struct TEST_S{ char name[20]; int age; char gender;};这就申明了一个TEST_S的结构体,有三个成员字段,name,age和gender,在使用结构体的时候也非常方便,简单,如下代码所示:struct TEST_S test;test.age

2021-03-07 09:32:07 1686 1

原创 C语言结构体-大小,对齐,填充,使用及其他

C语言结构体-大小,对齐C语言中的结构体(struct)的定义在C语言中,最常用的数据结构就是结构体了,结构体也是其它数据结构(比如链表等)的基础,结构体的使用非常简单。比如,定义一个结构体:struct TEST_STRUCT{ char Name[20]; int Age; char Sex;};在使用TEST_STRUCT的时候也很方便,如下代码所示:void TestStruct(){ struct TEST_STRUCT test;

2020-12-11 08:43:32 821 1

原创 /bin/bash^M: bad interpreter

一种简单的方式是使用vi打开文件,然后执行:set ff=unix然后保存即可

2020-07-15 21:09:46 99

原创 C语言基础排序算法-选择排序

C语言基础排序算法-选择排序什么是选择排序?选择排序(Selection sort)是一种简单直观的排序算法,第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序过程假设有一个数组,3,2,5,4,1按照从小到大的顺序排序,最后的结果为1,2,3,4,5,则每一次的排序过程为:初始状态第一次交换后,状态为:由于3大.

2020-07-08 12:16:45 326

原创 C语言基础排序算法-冒泡排序

C语言基础排序算法-冒泡排序什么是冒泡排序?顾名思义,这种排序方法就像水中的气泡一样,从底逐渐往上冒,一次前进一步。我们来看一个例子,看看到底是怎么冒泡的。假设有一个数组3,2,5,4,1,我们希望按照从小到大的顺序排序,最后的结果为1,2,3,4,5。记住冒泡算法的关键一点是每次相邻的两个元素进行比较,如果不满足排序的要求(比如后面的一个元素大于前面的元素),则进行交换。基本原理如下:(1) 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。.

2020-07-03 13:44:11 2937 1

原创 C语言文件读写(5)-文件位置相关

C语言文件读写(5)-文件位置相关当打开一个文件以后,无论是读还是写,都有一个指示文件位置的这么一个东西,我们可以称之为文件的位置指示器或者文件位置指针,文件位置指示器指明了当前文件读或者写的位置信息,每读写一次,文件的位置指示器都会跟着变化,更新。比如说我们要在文件的指定位置写数据怎么办?我们不可能从文件开始一直写,写到文件的指定位置,然后写入我们要写的数据,C语言还提供了几个跟文件位置有关的函数,可以用来获取文件的位置,设置文件的位置等等。先看rewind,函数原型为: .

2020-07-01 18:16:37 2065

原创 C语言文件读写(4)-判断文件是否结束

C语言文件读写-判断文件是否结束在读文件的时候,很重要的一个条件是:文件是否结束,因为文件已经结束了,就不用继续读文件了。判断文件结束,有许多方式,比如读取文本文件和二进制文件就可以使用不同的方式,下面分别进行详细介绍和举例。使用EOF判断文件是否结束EOF的值为-1,所以往往使用EOF也可以判断文件是否结束,一般用在非格式化文本文件读取中,如果在格式化文本读取时使用EOF来判断,在某些情况下是会出错的。函数fgetc返回的值为一个字符,当文件结束时,返回EOF,因为文本文件中可打印字符

2020-07-01 08:37:33 9235 3

原创 C语言文件读写(3)-二进制文件读写操作

C语言文件读写-二进制文件写操作先说说什么是二进制文件,二进制文件是相对于文本文件而言的,文本文件是由一行一行的字符的有序序列组成的。二进制文件就没有行的概念了,也是由有序的字符组成的,但是在写入数据的时候,系统并不会做任何的转换,是什么就写入什么,也不会添加换行符之类的。通常情况下,二进制文件我们很难用“肉眼”去查看文件的内容,因为内容往往都是很难直接去阅读的,所有的内容都是连续的,也不会出现换行的情况,所以可读性很差。这是狭义的二进制文件,广义上来讲,所有的文件我们都可以称之为二进制文件,任

2020-06-30 22:01:31 2421 7

原创 C语言文件读写(2)-文本文件写操作

C语言文件读写-文本文件写操作在上一篇中介绍了如何读取文本文件https://blog.csdn.net/zhanghaiyang9999/article/details/107032563这一篇将详细介绍如何写文本文件,由于在读取文本文件那篇文章中介绍的比较详细,因此我们这篇文章就会轻松很多了,如果没有看过上一篇文本文件读操作的文章的话,建议先读一下,有些知识会理解得更好一些。《C语言文件读写-文本文件读操作》这篇文章介绍了什么是文本文件,以及如何打开文本文件的模式以及如何进行正确地读取,

2020-06-30 17:20:27 726

原创 C语言文件读写(1)-文本文件读操作

C语言文件读写-之文本文件读写

2020-06-30 12:40:09 45004 9

原创 Debug Assert Failed 怎么办?

C/C++调试快速入门与提高https://edu.csdn.net/course/detail/28915就像这里视频里面提到的一样,当你看到这个对话框的时候一定不要慌张,也不要吃惊,而是应该感到激动和高兴,因为这表示你离解决这个BUG又进了一步。怎么办呢?不要点击终止和忽略,点击“重试”按钮,立即就会进入到问题所在地,如图所示。然后继续,打开堆栈窗口,定位到自己代码行。如图所示:对,就是delete的问题,因为我把一个数组去delete了。其他的错误也是.

2020-05-26 08:30:39 3858

原创 使用VC++远程调试Linux程序

为什么要用VC++来调试Linux程序Linux下面的gdb也很好用,说真的,缺点是在调试大型程序的时候不太方便,比如来回的切换线程,查看堆栈等等,总是没有那么直观,但是VC就好一些,毕竟是GUI界面,线程切换,堆栈查看等等,要方便很多,再比如查看内存值,函数参数等等,VC的图像界面就要占一些优势,话不多说,开启调试Linux程序之旅。更详细的描述,可以参考https://edu.csdn.net/course/detail/28915远程调试Linux程序准备工作Linux上.

2020-05-18 10:42:53 641 2

原创 如何在程序中生成崩溃转储dump文件以及如何分析dump

关于更详细的内容,如果有兴趣,可以访问下面的视频https://edu.csdn.net/course/detail/28915程序崩溃的时候如何生成dump文件话不多说,直接上代码,下面的程序会崩溃,而且会在崩溃的时候在运行目录生成dump文件。#include "stdafx.h"#include <Windows.h>#include <Dbghelp.h>#include <stdio.h>LONG WINAPI handle_e.

2020-05-17 14:14:03 1227

原创 error C4335: Mac file format detected: please convert the source file to either DOS or UNIX format

vc里面遇到这个问题的解决方案error C4335: Mac file format detected: please convert the source file to either DOS or UNIX format原因很有可能是通过QQ传输文件或者是真的是Mac电脑上存的文件,格式会有点不同,所以VC编译的时候会报错。解决方案1.选择将文件另存为,如图所示2.另存的时候选择 “Save with Encoding”,如图所示3.在Line endings中选择

2020-05-16 22:12:00 1241

原创 什么是死锁?为什么会死锁?如何解决死锁问题?如何调试死锁问题?

什么是死锁?锁,顾名思义,含义真的就是我们平常每天看到的那个锁,锁门的锁,如果门锁着,那就进不去了,那就只能在门外等着。软件中的锁,意义和这个类似,也是为了阻止非授权用户能够进入某些代码的执行,如果要想执行被锁保护(同步)的代码,那么必须要先获得锁,如果你想进去的时候,别人正在拥有这个锁,你也只好等待了,必须等到被人使用完了以后才能进入被保护或者被同步的代码执行。什么是死锁呢?死锁是指两个或两个以上的线程或者进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,而且会一直阻塞

2020-05-15 09:14:37 1126

原创 Apache + PHP为什么不能在www目录下写文件以及如何解决PHP写文件问题

本文以Ubuntu为例,其他的Linux系统类似。环境为Apache + PHP搭建的web服务器假设网站根目录为/var/www/html问题:直接通过shell执行PHP,在网站目录下面读写文件没有问题,但是通过浏览器访问php,却不能写文件。原因:Apache是通过用户www-data来执行PHP的,所以PHP能够做什么,取决于用户www-data能做什么?一般情况下,www-data用户并没有在www/html下面写文件的权限,所以PHP在通过浏览器访问的时候是没有办法.

2020-05-14 10:18:37 1320

原创 什么是BUG

先讲一个有关BUG来源的故事这个故事和一个美国的计算机科学家有关,先看一下她的图片故事的主角叫格蕾丝·霍珀(Grace Hopper),于1946年战争结束后从现役军役中退役,当时她加入哈佛大学计算实验室的工作。在这里,她继续在Mark II和Mark III计算机上工作。1947年9月9日,格蕾丝(Grace)在马克二世(Mark II)上发现了一个错误,错误的原因是被困在继电器中的一只死飞蛾。她仔细地除去了这只飞蛾,机器就正常工作了,后来她把昆虫并将其贴在日志上,并创造了计算机BU.

2020-05-13 09:49:42 395

原创 Windows version

Building Drivers for Different Versions of Windowshttps://docs.microsoft.com/en-us/windows-hardware/drivers/develop/building-drivers-for-different-versions-of-windowsClient OS Server OSWindo...

2020-04-22 21:20:04 734 1

原创 IRQL Level

PASSIVE_LEVELAPC_LEVELDISPATCH_LEVELPage fault in PASSIVE_LEVELAPI IRQLMemory APIsExAllocatePoolWithTag &...

2020-04-22 21:19:17 284

原创 算法2:判断两个字符串内容是否相同

详细描述判断两个字符串的内容是否相同,指的是两个字符串中的字符是否完全一样,顺序可以不同(也可以称之为换位字符串)。比如字符串1为”abc”,字符串2为”cba”,则认为这两个字符串内容是一样的,再比如字符串1为”aba”,字符串2为”abaa”,则认为两个字符串内容不同。因此,两个字符串内容相同包含的意思就是:两个字符串长度相同,并且字符串的字符完全一样(顺序可以不同)。分析在算法1中,...

2020-03-31 15:06:51 9534

原创 算法1:找出第一个非重复字符在字符串中的位置

详细描述对于一个字符串,为了简便起见,假设字符串的所有字符都是英文的。这个字符串的长度不定,可长可短,内容也不确定,可能有大写,可能也有小写,有重复的,比如这样一个字符串 ”this is a test book”,这个字符串里面有很多字符是重复的,比如t,i,o等,也有没有重复的字符,比如h,因此这个算法的目标就是找到h,然后返回1(位置从0开始)。再比如这个字符串 ”They are wor...

2020-03-31 15:02:41 703

原创 Android华容道之一步一步实现-8-开始游戏

开始游戏指的是开始打乱图片顺序。效果图如下:先说产生随机数,利用随机数产生一个[0-14]的整数,代码如下:private void init_num_arr() { for (int i = 0; i < 16; i++) { num_arr[i] = -1; } num_arr[15] ...

2019-04-19 08:03:25 779 1

原创 Android华容道之一步一步实现-7-重构代码

是时候做一点代码的重构了,毕竟已经是一个可运行的版本了,并且顺带做一点点美化的工作,先看效果图,重构和美化完之后的版本效果图。重构第一部分如果是数字版,不再使用带有数字的图片,而是使用动态创建数字图片的方式。并在图片上绘制数字,代码如下:private void draw_text(Bitmap bitmap, String text) { int...

2019-04-18 09:03:58 914

原创 Android华容道之一步一步实现-6-还原状态检测

再次说明一下,我们的华容道的最终版本是图像华容道,不是纯数字的华容道,难度当然要比纯数字版的华容道大多了,因为在玩的时候要记住整福图像以及被切分后,每一张小图片应该在什么位置,如果是一幅您不熟悉的图片的话,是很考察观察力和记忆力的。但是无论是图片版也好,数字版也好,我们实现的本质都是一样的。我们先说数字版的华容道怎么判断已经还原。还原状态也就是初始状态,1234,5678,9 10 1...

2019-04-17 09:11:12 407

原创 Android华容道之一步一步实现-5-图像块移动算法实现

首先祝贺一下,完成这一步,0.1版的图像华容道就实现了,就是能够自己可以自由玩耍了。不要着急一次成型,要使用Agile的思想,每天一次更新,但是每天都是可用的,一个可用的软件比别的都重要。优化啊,界面啊,性能啊,重构啊,别急,慢慢来。在上一篇文章中提到了具体的算法思想,这次就是具体的实现,主要就这个一个函数,根据手指触摸的位置来对所有的图像块进行重新排序,但是实际上每次最多三块图像的位...

2019-04-17 08:20:33 783

原创 Android华容道之一步一步实现-4-图像块移动算法

下一个关键点就是图像块的移动,以如图为例。假设空格处于第二行第三格,那么此时只有触摸第二行以及第三列的图像块的时候才需要移动图像块,因为别的图像块不能移动。当触摸发生在合法的图像块的时候,即上面图中的十字交叉黑线区域,则有四种情况出现,即移动图像块有四种可能,向上,向下,向左,向右。比如手指触摸在7号图像块,这7号图像块只能向左移动,别的图像块都不用移动。再比如手指触摸在...

2019-04-16 10:15:05 744

原创 Android华容道之一步一步实现-3 -手指触摸处理

华容道关键点之一出现了,就是处理触摸,包括手指按下,抬起,移动等。自己实现一个处理触摸的类,然后处理onTouchEvent(MotionEvent event)事件,在这里处理手指按下,抬起,移动事件。代码为:这里的效果是手指触摸一下,16块小图像依次交换package com.example.szhrd;import android.R.bool;im...

2019-04-16 09:45:36 900

原创 Android华容道之一步一步实现-2-图片分割

因为华容道是16个格子,所以要把一张大一点的图片分割成16个相等的小图片。可以使用Bitmap.createBitmap方法来进行。直接上代码ori_bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.koala);原始图片下面对原始图片进行切分,分为16张 ori_bitmap = ...

2019-04-15 21:36:30 1579 1

原创 Android华容道之一步一步实现-序言

女儿看了最强大脑的数字华容道节目之后,就缠着要玩数字华容道,买了实物版,玩了几天,感觉好像还没有过瘾,就让我做个手机版的数字华容道游戏。说明一下,最终要实现的版本并不是最强大脑那种数字版的华容道,而是图像版的华容道,也就是说要比数字华容道的难度大多了,玩的时候不但要记住整福图像,而且要记住每一个小图像块的位置才能还原,不但需要很强的观察力,也需要很强的记忆力,因为这不是拼图游戏。虽然是久经...

2019-04-15 09:18:34 1927

原创 Ubuntu迁移/boot卷

默认/boot卷总是不是太大,总是有很多理由需要/boot卷很大,说重点,如何在不重新装机的情况下迁移到另外一个空间很大的卷上。步骤:(亲测有效)假设有一个卷/dev/sdc1,并且空间足够1.拷贝/boot里面的所有东西到一个临时目录,比如叫/tmp/boot2.umount /boot3.mount /dev/sdc1 /boot4.拷贝/tmp/boot里面的所有文件...

2019-04-05 19:11:16 893

原创 Linux error number

errno.00 is: Successerrno.01 is: Operation not permittederrno.02 is: No such file or directoryerrno.03 is: No such processerrno.04 is: Interrupted system callerrno.05 is: Input/output errorerrno...

2019-01-08 14:16:08 1463

原创 那些年,程序员读错的英语

         那些年,中国IT工程师读错的英语 Top 10  错误读音 正确读音 错误流行度 putty [ˈpuːti] [ˈpʌti] ★★★★★ ubuntu [juː'bʊntʊ] [ʊ'bʊntʊ] ★★★★★ git [dʒɪt] [ɡɪt] ★★★★★ height [h...

2018-11-09 17:28:17 177

原创 ubuntu如何升级?

just do it:do-release-upgrade

2018-11-09 16:07:42 463

原创 你知道你的程序到底能使用多少内存吗?

作为一个程序员,好像这个问题不用回答似的,如果是32位程序,最多能使用2G内存。如果是64位程序,那就多了去了。我们以32位程序作为说明对象。有时候,用C++写的一个程序,通过task manager来查看,自己的程序明明只有使用了几百M内存,为什么还会分配内存 失败呢?如下图所示:明明这个程序只使用了不到200M内存,但是实际这个程序到底占用了多少内存呢?请看下图...

2018-11-08 15:17:43 436

原创 数据备份,数据保护中的稳定点(in-consistent, crash-consistent, application-consistent)

什么是数据保护的稳定点?比如平时我们用copy命令或者在资源管理器中进行文件拷贝,如果拷贝的文件是正在变化修改的,那么我们拷贝出来的文件就是一个不稳定的状态,可以称之为in-consistent。为什么说是不稳定的呢?比如说我们要拷贝一个目录下的所有文件,假设这些文件都在被改变,那么我们用copy命令拷贝出来的这些文件的时间戳会是不一样的,copy命令只管拷贝。那么怎样才能做到一个稳定点呢...

2018-10-23 10:28:16 947

原创 如何统统扩充loop设备的size(linux loop resize2fs)

我们知道,在Linux系统中,可以使用一个文件作为一个磁盘,并且可以对这个文件进行格式化,mount等操作,就完全像一个真正的磁盘一样。下面来使用一个文件制作loop设备,并且mount起来,在其空间不够的时候在进行online扩展空间。步骤:1.创建一个文件,大小为2G。dd if=/dev/zero of=loop.dat bs=1M count=20482.对loop.d...

2018-10-06 16:55:27 3227

原创 git提交指定文件

如果修改了多个文件,但是只想提交其中部分文件如何提交呢?我们知道提交的时候一般常用两种方式,一是git commit -a这种方式提交的时候不需要执行git add操作,自动就把所有修改的文件提交了。另外一种方式就是git commit -m这种方式只会提交你用git add的文件,所以你想提交那些文件,就调用一下git add,然后git commit -m...

2018-09-28 09:53:16 48035 15

C语言控制台时钟显示代码

C语言控制台时钟 printf("1.改变钟的样式 2.设置闹铃 3.启动秒表 4.退出\n"); scanf("%d",&choose_type); switch(choose_type) { case 1: { if(clock_type == 1) clock_type = 0; else clock_type = 1; } break; case 2: printf("请输入闹铃时间,几点几分,格式为:小时:分钟"); scanf("%d:%d",&bell_hour,&bell_minute); bell = 1; break;

2021-03-07

C/C++图实现运动会比赛安排

C/C++图实现运动会比赛安排 int map[49];//邻接矩阵,使用一维数组表示,下标=行*结点数+列 int color[7];//存入每个项目的颜色号 const char *n[6] = { "张凯","王刚","李四","张三","王峰","李杰" };//参赛人员姓名 const char *b[7] = { "标枪","铅球","铁饼","100m","200m","跳远","跳高" };//比赛项目

2021-03-07

C/C++哈弗曼编码,译码

【基本功能】 将哈夫曼编码应用于通讯系统时,在发送端对待发电文进行编码,在接收端对收到的电文进行译码。对于双工通讯,每端都需要一个编码器和译码器。请设计一个哈夫曼编码器/译码器。 【基本要求】 (1)初始化:键盘输入n个字符和n个权值,建立哈夫曼树; (2)编码:利用已建立的huffman树生成huffman编码 ; (3)译码:利用已建立的哈夫曼树对一段代码进行译码。

2021-03-07

C语言宿舍管理系统,二分查找

C语言宿舍管理系统,二分查找,支持保存文件,从文件中读取 /* 按照姓名,学号或者宿舍号排序 从小到大 oerderBy: 1-按照姓名 2-按照学号 3-按照宿舍号 */

2021-03-07

基于C++模板(template)的二叉树,支持任意类型为数据

基于C++模板(template)的二叉树,支持任意类型为数据 支持查找,删除,遍历等 /* 二叉树节点信息 */ template<class T> class BiNode { public: T data; BiNode <T>* lch; BiNode <T>* rch; BiNode() :lch(NULL), rch(NULL) { }; }; template<class T> class BST {

2021-03-07

空空如也

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

TA关注的人

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