- 博客(50)
- 收藏
- 关注
原创 sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set问题解决方案
执行完成后,重启系统,再次执行sudo su命令,不在出现sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set问题。(1)重启系统,出现启动界面按ESC,进入grub菜单页面(如果esc无法进入,可尝试shift)。该错误出现原因:是因为/usr/bin/sudo的权限被修改了,/usr/bin/sudo 的所有者不是 root 用户,并且没有设置 setuid 位。可以登录普通用户再次执行sudo su验证。
2023-12-29 11:31:57 6593
原创 蓝牙基本概念及发展历史介绍
蓝牙协议包括两种技术:BR:Basic Rate和LE:Low Energy。这两种技术都包括搜索(discovery)管理、连接(connection)管理等机制,但它们是不能互通的。厂商如果只实现了一种,那么只能与同样实现该技术的设备互通。如果厂商要确保能和所有的蓝牙设备互通,那么就只能同时实现两种技术,而不去管是否真的需要。
2023-12-13 14:32:55 221
原创 Windows10配置tensorflowGPU版详细流程
今天给大家详细讲解一下如何在Windows10上配置安装好tensorflow的GPU版本1、首先,打开Tensorflow官网的安装指南(https://www.tensorflow.org/install/install_windows)。2、官网对安装Tensorflow GPU版提出了一些要求,如下图所示。要安装GPU版,首先确认自己电脑的显卡是否满足要求,也就是官网要求中的第四点。到...
2019-11-11 19:56:47 686
原创 "爱心"便利店小型收银系统的设计与实现
在这个飞速发展的信息时代,传统的商店、便利店采用的收银方式及员工管理方式,已经远远达不到要求。传统的具有以下缺点:收款结算速度慢,容易出现营业差错,不宜进行商品调价,盘点效率底用户体验不好而小型的收银系统拥有众多优点:1.方便管理员对售货员及商品进行管理,节约大量人力成本。2.方便顾客进行购物结算,系统会自动对顾客所选物品进行计算。不容易出现差错。系统整体框架:爱心便...
2019-09-06 22:54:11 752
原创 海图(基于http服务器的图片管理工具)
有时需要在网页上上传本地图片,这个基于http服务器的图片管理工具就实现了对上传图片、查看所有图片信息、查看指定图片信息、查看指定图片内容、删除图片的功能。整个海图项目分为两个模块:数据存储模块,服务器模块。数据存储模块采用MySQL数据库对图片数据进行管理数据库中只需要创建一张表管理图片数据:create table image_table( image_id int, ...
2019-09-05 17:23:59 1164
原创 Linux详细知识图谱
整个Linux学习框架分为三大部分1. 常见命令、常用工具2. Linux系统编程3. Linux网络编程如下图所示是整个Linux知识思维导图:如果图片看不清,可以找我要原图哦!...
2019-09-04 14:20:37 1065
原创 TCP/UDP套接字编程
套接字编程:socket编程一、概述TCP(传输控制协议)和UDP(用户数据报协议是网络体系结TCP/IP模型中传输层一层中的两个不同的通信协议。TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流,TCP套接口是字节流套接口(stream socket)的一种。UDP:用户数据报协议。UDP是一种无连接协议。UDP套接口是数据报套接口(datagram socke...
2019-07-30 22:20:09 290
原创 Linux_minishell的重定向实现
#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <fcntl.h>#include <sys/wait.h>int main(){ w...
2019-06-10 16:58:36 133
原创 linux 进程控制
进程创建, 等待, 终止. 使用代码实现.进程创建fork()从已存在的进程中,创建一个具有独立地址空间的新的进程。新进程被称为子进程,而原进程为父进程。函数原型:pid_t fork(void);返回值:fork有两个返回值,子进程中返回0,父进程返回子进程id;出错返回-1。fork之后,父进程与子进程共享代码,但数据各自私有一份。fork常规用法:1.父进程创建子进程,父子...
2019-06-10 16:38:06 333
原创 Linux-----进程
进程的调度算法.操作系统的调度分为三种:1.远程调度(创建新进程);2.中程调度(交换功能的一部分);3.短程调度(下次执行的进程)进程调度算法:先来先服务(FCFS)短作业优先(SPN)最短剩余时间(SRT)时间片轮转(RR)最高响应比优先公平共享调度task_struct结构体Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一...
2019-05-30 12:36:16 107
原创 数据结构之二叉树顺序存储之堆
顺序结构存储二叉树堆:1. 熟悉堆的概念以及特性如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储,在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<= K2i+2 (Ki >= K2i+1 且 Ki >= K2i+2) i = 0,1,2…,则称为小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆...
2019-05-27 14:37:41 229
原创 数据结构之链式二叉树
1. 分析顺序存储二叉树的优缺点二叉树的顺序存储,寻找后代节点和祖先节点都非常方便,但对于普通的二叉树,顺序存储浪费大量的存储空间,同样也不利于节点的插入和删除。因此顺序存储一般用于存储完全二叉树。链式存储相对顺序存储节省存储空间,插入删除节点时只需修改指针,但寻找指定节点时很不方便。不过普通的二叉树一般是用链式存储结构。2. 使用孩子表示法实现二叉树的以下操作:typedef char ...
2019-05-27 14:22:52 380
原创 数据结构之栈和队列
1. 什么是栈,栈有什么特性?栈(Stack)作为一种限定性线性表,是将线性表的插入和删除操作限制为仅在表的一端进行,通常将表中允许进行插入、删除操作的一端称为栈顶(Top),因此栈顶的当前位置是动态变化的,同时,表的另一端称为栈底(Bottom)。当栈中没有元素时称为空栈。栈的插入操作可以形象的称为入栈或进栈。栈的删除操作称为出栈或退栈。总的来说:栈又称为后进先出(Last In Fir...
2019-05-24 00:33:49 122
原创 数据结构之二叉树
1.树的基本概念树就是n(n>=0)个结点的有限集合T。当n为0时,称为空树。当n>0时,该集合满足如下条件:(1)其中有一个称为根(root)的特定结点,他没有直接前驱,但有零个或多个直接后继。(2)其余n-1个结点可以划分成m个(m>=0)个互不相交的有限集T1,T2,Ti,Tm,其中Ti又是一棵树,称为根的子树。每棵子树的根节点有且只有一个直接前驱,但有零个或多个直接后继...
2019-05-21 01:11:12 263
原创 Linux常用工具汇总
编辑器VimVim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性,是一个自由软件,其在代码补完、编译错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。1999 年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。但在2000年2月Vim赢得了Slashdot Beanie的最佳开放源代码文本编辑器大奖,又将Emacs...
2019-05-20 22:51:31 930
原创 经典十二道链表笔试题!
1. 删除链表中等于给定值val的所有节点/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ typedef struct ListNode Node;struct ListNode* removeElem...
2019-05-16 00:10:23 901
原创 初识Linux及Linux基础命令
Linux发展Unix的前身是由贝尔实验室的Ken thompson利用汇编语言写成的。后来在1971年到1973年间由Dennis ritchie 以C语言进行改写,才称为Unix。1977年由bill joy 释出BSD1984年由Andrew tannenbaum制作出Minix系统1984年Richard stallman 提倡GNU项目1991年由Linus torvalds ...
2019-05-09 00:59:04 120
原创 数据结构之单链表
1. 熟悉什么是链表,链表的分类?链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表一共分为8种。1.单向、双向。2.带头、不带头。3.循环、不循环。由这几种情况组合而成。常见的是不带头非循环单链表、带头循环双向链表。2. 熟悉链表带头结点和不带头结点的区别?线性表的插入删除需要移动大量的元素,因此引入链表(本文讨论单链表)的概念,...
2019-04-30 15:38:29 214
原创 数据结构之顺序表
1.什么是线性结构?线性结构是一个有序数据元素的集合。2. 线性结构中都包含什么内容?常见的线性结构有:线性表、栈、队列、双队列、数组、串。3. 什么是顺序表?顺序表的分类?顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删改查。顺序表一般可1.分为静态顺序表:使用定长数组存储。2.动态顺序表:使用动态开辟的数组存储。4.动...
2019-04-28 17:07:34 139
原创 算法的时间复杂度和空间复杂度总结
如何衡量一个算法的好坏?时间复杂度+空间复杂度什么是时间复杂度?时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,他定量的描述了该算法的运行时间。一个算法执行所耗费的时间,理论上来说是不能算出来的,只有你把程序放在机器上跑起来才能知道。但是这样是很麻烦的。所以才有了时间复杂度。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。时...
2019-04-24 12:08:31 544
原创 C语言(文件操作)
C语言中没有输入输出语句,所有的输入输出功能都用 ANSI C提供的一组标准库函数来实现。文件操作标准库函数有:文件的打开操作 fopen 打开一个文件文件的关闭操作 fclose 关闭一个文件文件的读写操作 fgetc 从文件中读取一个字符 fputc 写一个字符到文件中去 fgets 从文件中读取一个字符串 ...
2019-04-24 09:22:08 129
原创 C语言实现通讯录(动态版本)
//通讯录实现//1.新增联系人//2.删除联系人//3.修改联系人//4.查找联系人//5.打印全部联系人//6.排序联系人//7.清空联系人//8.保存联系人到文件//9.加载联系人//0.退出#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include&...
2019-04-19 14:28:07 100
原创 C语言实现通讯录
//通讯录实现//1.新增联系人//2.删除联系人//3.修改联系人//4.查找联系人//5.打印全部联系人//6.排序联系人//7.清空联系人//8.保存联系人到文件//9.加载联系人//0.退出#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include&...
2019-04-18 17:23:33 115
原创 (C语言)自定义类型:结构体,枚举,联合。
结构体1.结构体的声明结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。结构的声明struct tag { member - list;}variable-list;例如描述一个学生:struct Student { char name[20]; int age; char sex[5]; char id[20];};//分号不能丢特殊的声...
2019-04-17 16:35:36 145
原创 C语言自行实现字符串常用库函数
1.实现strcpy完成字符串的复制#include<stdio.h>#include<stdlib.h>#include<assert.h>char* Strcpy(char* dest,const char* src) { assert(dest != ""); assert(src != ""); int i = 0; for (i=0;...
2019-04-16 17:04:38 421
原创 模拟实现strcat
//4.模拟实现strcat#include<stdio.h>#include<stdlib.h>#include<assert.h>char *Strcat(char* dest, const char*src) { char *ret = dest; assert(dest != NULL); assert(src != NULL); whi...
2019-04-12 16:02:07 78
原创 模拟实现strcpy
#include<stdio.h>#include<stdlib.h>#include<assert.h>char *Strcpy(char* dest, const char*src) { char *ret = dest; assert(dest != NULL); assert(src != NULL); while (*src) { *...
2019-04-12 16:00:34 87
原创 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以多少汽水。 编程实现。
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int main() { int rmb = 0; printf("请输入你的金额:\n"); scanf("%d", &rmb); int bottle = rmb * 2 - 1; printf("可以喝汽水:...
2019-04-12 15:59:20 128
原创 一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个数字,编程实现。
#include<stdio.h>#include<stdlib.h>void find(int arr[], int len) { int i = 0; int num = 0; int num1 = 0; int num2 = 0; int flag = 0; for (i = 0; i < len; i++) { num = num ^ ar...
2019-04-12 15:57:57 124
原创 判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 =AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.
AABCD左旋一个字符得到ABCDAAABCD左旋两个字符得到BCDAAAABCD右旋一个字符得到DAABC#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>//左旋字符串vo...
2019-04-08 17:12:42 225
原创 C语言实现一个函数,可以左旋字符串中的k个字符。
ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h>void reverse(char *str, int len, int k){ int i; while (k--...
2019-04-08 17:08:05 153
原创 杨氏矩阵 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);
数组:1 2 32 3 43 4 51 3 42 4 54 5 61 2 34 5 67 8 9#include<stdio.h>#include<stdlib.h>int search(int arr[3][3], int a, int row, int col){ int x = 0; int y = col - 1; //利用杨氏矩阵特性...
2019-04-08 16:56:05 193
原创 C语言实现:调整数组使奇数全部都位于偶数前面。
题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>void MoveNum(int arr[], int size){ int *left ...
2019-04-08 16:17:22 318
原创 有一个字符数组的内容为:"student a am i", 请你将数组的内容改为"i am a student".
要求: 不能使用库函数。 只能开辟有限个空间(空间个数和字符串的长度无关)。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>void reverse(char *start, char *end){ assert(start); asser...
2019-04-08 13:24:47 166
原创 C语言编程实现: 一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。(使用位运算)
#include<stdio.h>#include<stdlib.h>int main() { int arr[5] = { 1,1,2,2,3 }; int result = arr[0]; for (int i = 1; i < 5; i++) { result = result ^ arr[i]; } printf("%d", result);...
2019-04-08 13:05:53 150
原创 C语言编写:不使用(a + b) / 2这种方式,求两个数的平均值。
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int average(int a, int b) { return (a - b) / 2 + b;}int main() { printf("输入两个数:"); int a = 0; int b = 0; scanf(...
2019-04-08 12:45:39 240
原创 编写函数: unsigned int reverse_bit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值。
如:在32位机器上25这个值包含下列各位:00000000000000000000000000011001翻转后:(2550136832)10011000000000000000000000000000程序结果返回:2550136832#include<stdio.h>#include<stdlib.h>unsigned int reverse_bit(u...
2019-04-08 12:33:35 88
原创 C语言实现扫雷小游戏
大家都玩过扫雷吧!这是我们的童年记忆,今天就带大家用C语言实现扫雷程序的设计。//1.二维数组表示地图 (1)show_map玩家看到的地图 数字表示已翻开和*表示未翻开(2)mine_map地雷布局图 每个位置标记是否是地雷 0、1//2.初始化 两个地图 (1)show_map 初始化把每个元素都设为* (2) mine_map 初始化随机生成10个地雷//3.打印...
2019-04-08 12:17:56 161
原创 (C语言)打印杨辉三角
11 11 2 11 3 3 1#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include<stdlib.h>int main(){ //首先定义二维数组计数符号i,j 还有杨辉三角行数的初始化 int i, j, n = 0; int a[100][100] = { 0,1 }; //二维...
2019-04-02 10:57:41 297
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人