1.编辑 /etc/default/grub 2)修改GRUB_CMDLINE_LINUX_DEFAULT的值为nomodeset 3)更新grub: sudo update-grub 4)重启 2.进入grub界面后,按e键,进入编辑界面,这里可以进行编辑,没看到鼠标和指针光标?没关系,试着按下键盘的上下左右键就可以看见光标了 3.在倒数第二行中,roquiet splash 后面空格添加nomodeset,至此修改完成 4.按F10启动系统,然后再按ctrl+alt+F1发现可以正常进入字符界面了。 作者:dream0130__ 发表于 2018/11/15 21:52:51 原文链接 https://blog.csdn.net/dream0130__/article/details/84111610 继续阅读 >>


吕海东 18/11/15 21:52:51
My_chatting_room 项目文档 这个项目写的并不好….自己写项目的时候状态也很糟糕…会在后续部分继续完善这些内容 目录 引言 项目综述 术语表 参考资料 开发环境及使用工具 使用说明 数据结构说明 模块设计 程序函数调用图及模块分化 功能设计说明 文件说明 异常,错误处理 已经存在的问题及改善方案 引言 项目综述 随着现代通信的发展,很多聊天工具都开始流行,在此趋势之上开始写的基于Linux平台下的聊天工具,目前已经实现了部分的通信功能,会在后续继续完善实现. 实现的功能有: 所有的菜单都是以自己封装的getch函数来实行方向键,在一定程度上提高了界面的友好性,emmmmmmm虽然也造成了很多的问题,看起来似乎是值得的. 1.好友管理: 添加好友 删除好友 添加黑名单 查看好友列表 显示好友状态 2.账号管理: 登陆(防止重复登陆) 注册 (防止重复注册) 密码(md5加密) 找回密码 3.聊天通信: 私聊 继续阅读 >>


吕海东 18/09/08 15:39:30
一.动态规划的基本思想 动态规划(Dynamic Programming,简称DP),虽然抽象后进行求解的思路并不复杂,但具体的形式千差万别,找出问题的子结构以及通过子结构重新构造最优解的过程很难统一。 在做这些题之前,没有接触过任何关于动态规划的概念,所以写的很吃力,很难过 下去了解了一些关于动态规划的概念,在此做个记录和总结 动态规划的基本模型: 确定问题的决策对象 对决策问题划分阶段 对各个阶段确定状态变量 根据状态变量来确定费用函数和目标函数 确定状态转移方程 动态规划只能应用于有最优子结构的问题。最优子结构的意思是局部最优解能决定全局最优解(对有些问题这个要求并不能完全满足,故有时需要引入一定的近似)。简单地说,问题能够分解成子问题来解决。并且保存子问题的解 动态规划是一种牺牲了空间,换取时间的算法. 如何正确的理解动态规划算法? A * "1+1+1+1+1+1+1+1 =?" * A : "上面等式的值是多少" B : *计算* "8!" 继续阅读 >>


吕海东 18/08/09 17:59:20
一.线程和进程的关系 为什么要引入线程? CPU的执行速度过快,只有寄存器仅仅可以追上,RAM和别的设备更是难以追上,而进程和线程只不过是对应的CPU时间段的描述. 进程是cpu资源分配的最小单位,线程是cpu调度的最小单位 线程和进程的联系有 (1)进程是资源的分配和调度的一个独立单元,线程是CPU调度的基本单元 (2)同一个进程中包括多个线程,所有的线程共享进程的地址空间,可以在执行过程中节省时间 (3)系统调度时,切换的速度十分快,主要是因为进程地址空间独立而进程的线程独享地址空间 (5)线程不能独立存在,必须依附于进程 (6)进程所使用的内存地址可以限定使用通过信号来控制 线程的优点: (1)可以提高应用程序的响应速度 (2)可以提高多处理器的效率 (3)可以改善程序的结构 线程可以独立有自己的数据信息 (1)通过使用互斥锁来保存 (2)线程号 (3)堆栈 (4) 继续阅读 >>


吕海东 18/08/07 10:56:34
在Linux系统中,shell是我们每天经常使用的东西,而如何实现一个自己的shell?首先我们需要了解一些基础知识 一.进程基础知识 进程概述: CPU执行的程序,是一个动态的实体,进程是操作系统资源分配的基本单位。 进程和程序的区别在于进程是动态的,程序是静态的,进程是运行中的程序 linux 下可通过ps命令来实现查看 Linux中一个进程由三部分组成,代码段,数据段和栈堆端。代码段存放程序的全局变量,常量,静态变量。堆栈段中的堆用于存放动态分配的全局变量,堆栈中栈用于函数调用,它存放着函数的参数,函数内部定义的局部变量 Linux中的进程控制,系统提供了一些函数可以使用: fork用于创建一个新进程 exit用于终结进程 wait将父进程挂起,等待子进程的终结 getpid 获取当前进程的PID nice改变进程的优先级 进程分为几种不同的状态,运行状态,可中断状态,不可中断状态,僵尸进程,停止进程 2.还有几种特殊的进程 孤儿进程: 如果 继续阅读 >>


吕海东 18/08/05 17:58:11
A - 5×5迷宫 定义一个二维数组: int maze [5] [5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。 思路:遇到迷宫问题,一般首先考虑dfs算法,因为在迷宫问题中,dfs的效率比较高一点.遇到最短路径等问题,一般使用bfs算法,在这道题一般选用的是bfs算法,也可以用dfs算法用栈将路径保存起来,这道题里限制了迷宫的大小 我自己的问题:起初没有理解清楚dfs算法的过程,以为尝试过的路径就是最短路径,殊不知需要使用栈来保存 在这里附上代码,我在这里,并没有构建栈,而是使用了栈的思想,利用数组来进行栈的模拟 //在这里我的思路是 继续阅读 >>


吕海东 18/08/05 14:58:56
这周的主题是基本的搜索算法,基于bfs(广度搜索)和dfs(深度搜索)来实现的 在这里简单介绍以下dfs(深度搜索)算法 这里的关键点是递归和回溯 深度优先搜索算法(DFS)是一种用于遍历或者搜索树或图的算法,沿着一些树遍历树的结点,尽可能深的搜索树的分支,当节点的所在边都被探索过,搜索将回溯到发现结点v的那条边的起始结点.这一过程持续到发现原节点可以到达的所有节点位置。 深度优先搜索的步骤分为 1.递归下去 2.回溯上来。顾名思义,深度优先,则是以深度为准则,先一条路走到底,直到达到目标。这里称之为递归下去。 否则既没有达到目标又无路可走了,那么则退回到上一步的状态,走其他路。这便是回溯上来。 下面来结合具体例子来进行理解 假设按照以下的顺序来搜索: 1.V0->V1->V4,此时到底尽头,仍然到不了V6,于是原路返回到V1去搜索其他路径; 2.返回到V1后既搜索V2,于是搜索路径是V0->V1->V2->V6,,找到目标节点,返回有解。 继续阅读 >>


吕海东 18/08/04 15:43:04
Linux下的系统编程指的是程序员使用系统调用或C语言本身所携带的库函数来设计和编写某一特定的程序 ls是日常所用的比较常见的命令之一,那么如何实现ls命令 首先实现ls要明确参数的作用是什么 ls -a 可以将目录中的所有文件(包括以.开头的文件)显示出来 ls -l 列出文件中的所有信息,包括文件的属性和权限等数据 ls -R 使用递归连同目录中的子目录中的文件显示出来,如果要显示隐藏文件就要添加-a参数 在实现ls之前我们需要了解如下的信息 用户权限所对应的表 字符长量值 字符常量对应的八进制值 含义 S_IRUSR(S_IREAD) 00400 文件所有者具有可读权限 S_IWUSR(S_IWRITE) 00200 文件所有者具有可写入权限 S_IXUSR(S_IEXEC) 00100 文件所有者具有可执行权限 S_IRGRP 00040 用户组具有可读取权限 S 继续阅读 >>


吕海东 18/07/28 15:57:59
这周的题目并不是很难,而我将问题考虑的太过复杂,也有一些细节没有考虑到,所以导致提交多次仍是失败,在这里做一个反思 A - 字符排序 输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。 Input 输入数据有多组,每组占一行,有三个字符组成,之间无空格。 Output 对于每组输入数据,输出一行,字符中间用一个空格分开。 Sample Input qwe asd zxc Sample Output Sample Output e q w a d s c x z 这道题是根据ASCII码排列,也就是根据字典排列,是三个数从小到大排列 #include <stdio.h> #include <stdlib.h> int main(void) { char ch[4]; while (scanf("%s", ch) == 1) { int i, j, k; int mi 继续阅读 >>


吕海东 18/07/24 23:31:12
本次机考我考了0分,这是很丢人的成绩。我对此深深的反思,在自己曾经做过的题错的多么离谱。 自己最近的态度及其懒散,每天抱着手机,也不好好认真的学习 ‘1. 输出全排列(25 分) 请编写程序输出前n个正整数的全排列(n<10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间。 输入格式: 输入给出正整数n(<10)。 输出格式: 输出1到n的全排列。每种排列占一行,数字间无空格。排列的输出顺序为字典序,即序列a​1​​,a​2​​,⋯,a​n​​排在序列b​1​​,b​2​​,⋯,b​n​​之前,如果存在k使得a​1​​=b​1​​,⋯,a​k​​=b​k​​ 并且 a​k+1​​< b​k+1​​。 输入样例: 3 输出样例: 123 132 213 231 312 321 在这里,我可以使用dfs算法,即利用深度优先算法来进行的 hljs cpp">#include<string.h> int a[10],b[ 继续阅读 >>


吕海东 18/07/11 20:37:22