- 博客(24)
- 收藏
- 关注
原创 记一次nginx+php出现的问题
背景:准备使用laravel搞点小东西,手动搭建了一个nginx+mysql+php环境,在浏览器输入www.book.com(自己本地配的域名),出现了502。寻找问题的过程:直接输入localhost不会出现502。这个是不是因为nginx无法访问php文件?在根目录写个html文件,再访问时正确显示文件,不会报错。好了,那肯定是php-fpm的问题了。首先说一下nginx和p...
2019-10-11 18:27:37 349
原创 关于wamp中MySQL首次启动问题
第一次在cmd中单独启动MySQL,有点蒙蔽,因为只知道用户名是root,并不知道密码。胡乱输入一通发现并不行,一直报错”Can't connect to MySQL server on localhost (10061)”。后来上网查,发现一条指令可以查看MySQL的初始密码,mysqld --initialize --user=root --console。最后一行的localhost后面的一...
2018-03-15 15:12:23 462
原创 Linux系统下的进程键的通信
引、进程间的相互通信的必要原因: 两个进程间可以相互传送数据; 两个进程可以共享资源; 卖票系统 通知事件; 如一个进程另一个进程发送信号 进程控制; 如 CTRL + C 可终止一个进程1、管道: (1)、什么是管道?有什么作用? 有什么特点? 管道是链接两个进程间的通信;只能一个进程在一端写数据,
2017-08-14 17:30:59 298
原创 C语言之字符串与运算符篇
字符串简介字符串(character string)是指一个或多个字符的序列。例如:"Zing went the strings of my heart!" 双引号不是字符串的一部分。它们只是通知编译器其中包含了一个字符串,正如单引号标识着一个字符一样。 C没有为字符串定义专门的变量类型,而是把它存储在char数组中。字符串中的字符存放在相邻的存储单元中,每个字符占用一
2017-08-07 09:30:20 4176
原创 C语言之递归篇
这里为什么把递归列出来呢? 个人觉得递归的思想比较重要C语言允许一个函数调用其本身,这种调用过程被称为递归(recursion)。当一个函数调用自己时,如果编程中没有设定可以终止递归的条件检测,它将会无限制地进行递归调用,所以需要进行谨慎处理。 递归一般可以代替循环语句使用。有些情况下使用循环语句比较好,而有些时候使用递归更有效。递归虽然使程序结构优美,但其执
2017-08-07 09:07:06 597
原创 C语言之函数篇
函数(function)是用于完成特定任务的程序代码的自包含单元。 为什么要使用函数?第一,函数的使用可以省去重复代码的编写。如果程序中需要多次使用某种特定的功能,那么只需编写一个合适的函数即可。第二,即使某种功能在程序中只使用一次,将其以函数的形式实现也是有必要的,因为这使程序更加模块化,从而有利于程序的阅读、修改和完善。 可以把函数看作“黑盒子”,即对一定的输入会产生特定的
2017-08-07 09:03:08 1210
原创 C语言之结构体与位操作篇
结构体引出的意义设计程序时,最重要的一个步骤就是选择一个表示数据的好方法。在多数情况下,使用简单的变量甚至数组是不够的。 例如,假设需要开发一个图书管理软件。需要显示出每本书的各种信息:书名、作者、出版商、版权日期、页数、册数及价格。其中的一些信息(如书名)可以用字符数组存储,另外一些信息可以用一个int数组或float数组存储。 如果使用7个不同的数组来保存所有的信息是不
2017-08-07 08:57:07 1180
原创 C语言之指针篇
赋值(Assignment) 可以把一个地址赋给指针变量。通常使用数组名或地址运算符&来进行地址赋值。 取值(dereferencing) 运算符*可取出指针变量指向地址中存储的数值。 取指针变量的地址(Taking a pointer address) 指针变量同其他变量一样具有地址和数值。使用运算符&可以得到指针本身的地址。 将一个整数加给指针变量
2017-08-07 08:51:05 2093
原创 C语言之数组篇
数组(array)由一系列类型相同的元素构成。数组声明(array declaration)中包括数组元素的数目和元素的类型。编译器根据这些信息创建合适的数组。float candy[365]; /* array of 365 floats */char code[12]; /* array of 12 chars */int states[50
2017-08-07 08:46:07 590
原创 C语言排序之快速排序篇
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个元素要O(nlogn)次比较。在最坏状况下则需要O(n^2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他O(nlogn)算法更快,因为它的内部循环可以在大部分的架构上很有效率地被实现出来。 快速排序使用分治策略(Divide and Conquer)来把一个序列分为两个子序列。步骤为:1. 从序列中挑出一个元
2017-08-06 20:47:21 362
原创 C语言排序之归并排序篇
归并排序是创建在归并操作上的一种有效的排序算法,效率为O(nlogn),1945年由冯·诺伊曼首次提出。 归并排序的实现分为递归实现与非递归(迭代)实现。递归实现的归并排序是算法设计中分治策略的典型应用,我们将一个大问题分割成小问题分别解决,然后用所有小问题的答案来解决整个大问题。非递归(迭代)实现的归并排序首先进行是两两归并,然后四四归并,然后是八八归并,一直下去直到归并了整个数组。
2017-08-06 20:45:10 653
原创 C语言排序之堆排序篇
堆排序是指利用堆这种数据结构所设计的一种选择排序算法。堆是一种近似完全二叉树的结构(通常堆是通过一维数组来实现的),并满足性质:以最大堆(也叫大根堆、大顶堆)为例,其中父结点的值总是大于它的孩子节点。 我们可以很容易的定义堆排序的过程:1. 由输入的无序数组构造一个最大堆,作为初始的无序区2. 把堆顶元素(最大值)和堆尾元素互换3. 把堆(无序区)的尺寸缩小1,并调用heapif
2017-08-06 20:42:45 305
原创 C语言排序之希尔排序篇
希尔排序,也叫递减增量排序,是插入排序的一种更高效的改进版本。希尔排序是不稳定的排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的:· 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率· 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位 希尔排序通过将比较的全部元素分为几个区域来提升插入排序的性能。这样可以让一个元素可以一次性
2017-08-06 20:24:37 318
原创 C语言排序之插入排序篇
插入排序是一种简单直观的排序算法。它的工作原理非常类似于我们抓扑克牌 对于未排序数据(右手抓到的牌),在已排序序列(左手已经排好序的手牌)中从后向前扫描,找到相应位置并插入。 插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 具体算法描述如下:1. 从第一
2017-08-06 20:19:50 414
原创 C语言排序之选择排序篇
选择排序也是一种简单直观的排序算法。它的工作原理很容易理解:初始时在序列中找到最小(大)元素,放到序列的起始位置作为已排序序列;然后,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。注意选择排序与冒泡排序的区别: 冒泡排序通过依次交换相邻两个顺序不合法的元素位置,从而将当前最小(大)元素放到合适的位置;而选择排序每遍历一次都记住了当前
2017-08-06 20:13:47 576
原创 C语言排序之鸡尾酒排序篇
鸡尾酒排序,也叫定向冒泡排序 是冒泡排序的一种改进。此算法与冒泡排序的不同处在于从低到高然后从高到低,而冒泡排序则仅从低到高去比较序列里的每个元素#include // 交换函数void swap (int a[], int i, int j){int tmp = a[i];a[i] = a[j];a[j] = tmp;}// 打
2017-08-06 20:12:11 1614
原创 C语言排序之冒泡排序篇
冒泡排序是一种极其简单的排序算法。它重复地走访过要排序的元素,依次比较相邻两个元素,如果他们的顺序错误就把他们调换过来,直到没有元素再需要交换,排序完成。这个算法的名字由来是因为越小(或越大)的元素会经由交换慢慢“浮”到数列的顶端。冒泡排序算法的运作如下: 1. 比较相邻的元素,如果前一个比后一个大,就把它们两个调换位置。 2. 对每一对相邻元素作同样的工作,从开始第一对到
2017-08-06 20:05:36 400
原创 C语言数据结构之二叉树篇
二叉树的定义 二叉树是由 n ( n ≥0 ) 个结点组成的有限集 合,该集合或者为空,或者是由一个根结点加 上两棵分别称为左子树和右子树的、互不相交 的二叉树组成。定义1:满二叉树 (Full Binary Tree)如果二叉树中所有分支结点的度数都为2,且叶子结点都在同一层次上,则称这类二叉树为满二叉树。定义2:完全二叉树 (Complete Binary Tre
2017-08-06 19:52:57 382
原创 C语言数据结构之普通树篇
简单给大家介绍一下树树的定义树是一种非线性的数据结构 树是由 n ( n ≥0 ) 个结点组成的有限集合 如果 n = 0,称为空树; 如果 n > 0,则: 有一个特定的称之为根(root)的结点,它只有直接后继,但没有直接前驱 除根以外的其它结点划分为 m (m ≥0) 个互不相交的有限集合T0
2017-08-06 19:51:30 1435
原创 C语言数据结构之队列篇
定义队列是只允许在一端删除,在另一端插入的线性表允许删除的一端叫做队头(front),允许插入的一端叫做队尾(rear)。特性先进先出(FIFO, First In First Out)ADT Queue { //对象:由数据类型为QueueData的元素构成 int EnQueue (Queue *Q, QueueData x); //进队 in
2017-08-06 19:42:40 419
原创 C语言数据结构之栈篇
定义 ●只允许在一端插入和删除的线性表; ●允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)。特点 后进先出 (LIFO)ADT Stack { //对象:由数据类型为StackData的元素构成 int Push (stack *S, StackData x); //进栈 int
2017-08-06 19:34:47 340
原创 C语言数据结构之链表篇
线性表的定义 定义n个数据元素的有限序列,记作(a1, a2, …, an)ai 是表中数据元素,n 是表长度线性表的特点 1. 除第一个元素外,其他每一个元素有一个且仅有一个直接前驱。 2. 除最后一个元素外其他每一个元素有一个且仅有一个直接后继。顺序表的定义和特点定义 将线性表中的元素相继存放在一个连续的存储空间中。
2017-08-06 19:27:56 247
原创 ++i ,i++的妙用
今天遇到这样一个题目:int x=8,y;y=(++x)+(x++)+(++x);printf("%d,%d",x,y);y的值应该为多少呢?第一种:x=11,y=30.第二种:x=11,y=38. 我在windows系统进行编译运行,其结果为x=10,y=30,在Linux系统下进行编译运行,其结果为x=11,y=38。 为什么会出
2017-07-12 20:30:52 261
原创 for的内嵌for之初体验
#includeint main(){ int m,n; for(m=2;m { for(j=2;j if(m%n==0) break; if(m==n) printf("%d%t",m); } printf("\n");retur
2017-07-11 19:50:24 304
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人