摘要: 由于网络的原因使用composer安装Yii框架,实在太过痛苦,所以这里干脆就手动安装yii-imagine的扩展。 首先下载yii2-image和Imagine扩展库,点击链接就可以从百度云下载上传好的 然后将Image解压到vender目录下: 然后在将yii2-image解压到vender/y 阅读全文
posted @ 2016-10-22 22:37 xnuwu 阅读(2852) 评论(0) 推荐(1) 编辑
摘要: Yii的用户认证分为两个部分,一个是User组件,负责管理用户认证状态的,包括登录,登出,检测当前登录状态等,源文件位于vender/yiisoft/yii2/web/User.php。另一个是实现接口IdentityInterface的模型,同时必须继承ActiveRecord,当用户登录注册时, 阅读全文
posted @ 2016-10-19 11:21 xnuwu 阅读(3379) 评论(0) 推荐(0) 编辑
摘要: 类可以自下往上调用父类方法,如果需要在父类中根据不同的子类,来调用子类的方法,那么就需要延迟静态绑定。延迟静态绑定用的是保留关键词static。 所谓延迟静态绑定,顾名思义,静态调用时::符号左侧的部分的的绑定是延迟,也就是说不再被解析为定义当前方法所在的类,而是在实际运行时计算的。 运行 如果将第 阅读全文
posted @ 2016-10-15 12:47 xnuwu 阅读(1695) 评论(0) 推荐(1) 编辑
摘要: centos7默认是没有安装mlocate的,所以无法使用这两个命令 就可以了 参考:https://fedorahosted.org/mlocate/ 阅读全文
posted @ 2016-10-13 20:13 xnuwu 阅读(1461) 评论(0) 推荐(0) 编辑
摘要: Yii中,将两个不相关的表利用中间表关联有via和viaTable两种方法,这里通过用户权限查询来进行示例。 关系如上,需要建立三个表 用户表 权限表 用户表 数据: 权限表 数据: 关联表 数据: 然后创建权力模型 用户模型 关联模型: 控制器代码 运行结果: 其中用户模型中通过viaTable来 阅读全文
posted @ 2016-10-12 22:14 xnuwu 阅读(985) 评论(0) 推荐(0) 编辑
摘要: 在使用yii的yii\db\Connnection时发生错误 错误: 解决方法:将config目录下的db.php配置文件中的localhost改为127.0.0.1即可 当主机填写为localhost时mysql会采用 unix domain socket连接 当主机填写为127.0.0.1时my 阅读全文
posted @ 2016-10-11 09:48 xnuwu 阅读(2653) 评论(0) 推荐(0) 编辑
摘要: 打开httpd.conf 去掉下面的井号 在网站根目录添加.htaccess 重启服务器 阅读全文
posted @ 2016-10-09 23:47 xnuwu 阅读(568) 评论(0) 推荐(0) 编辑
摘要: 步骤: 提示: configure: error: xml2-config not found. Please check your libxml2 installation. 提示:Cannot find OpenSSL's <evp.h> 提示:configure: error: Please 阅读全文
posted @ 2016-09-22 23:55 xnuwu 阅读(1342) 评论(0) 推荐(0) 编辑
摘要: 开启端口 firewall-cmd --zone=public --add-port=80/tcp --permanent 命令含义: --zone #作用域 --add-port=80/tcp #添加端口,格式为:端口/通讯协议 --permanent #永久生效,没有此参数重启后失效 重启防火墙 阅读全文
posted @ 2016-09-22 23:11 xnuwu 阅读(166) 评论(0) 推荐(0) 编辑
摘要: tar: bzip2: Cannot exec: No such file or directorytar: Error is not recoverable: exiting now 需要安装bzip2 yum install bzip2 阅读全文
posted @ 2016-09-22 22:04 xnuwu 阅读(8570) 评论(0) 推荐(0) 编辑
摘要: 找到对应的ifcfg-entxxxx文件,然后添加网关,修改dhcp为static,静态ip,添加IPADDR ip地址.onboot = yes开机启动 DNS 添加 重启网络 更换yum为网易源 阅读全文
posted @ 2016-09-22 21:30 xnuwu 阅读(1230) 评论(0) 推荐(0) 编辑
摘要: linux平台下的gprof评测工具可以对程序进行分析,需要在编译时加上-pg选项,如上一章的二叉树代码: 先运行一下,然后就会生产gmon.out文件,该文件用于分析程序执行: 再次执行进行分析: 然后就可以看到具体的程序分析了,如下: 更多可以参考官方文档:https://sourceware. 阅读全文
posted @ 2016-09-18 17:25 xnuwu 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 17.8 为数组形式的树编写模块,用于从树中删除一个值,如果没有找到,程序节点 ArrayBinaryTree.c ArrayBinaryTree.h main.c 运行: 阅读全文
posted @ 2016-09-18 12:03 xnuwu 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 二叉树的节点删除分为三种情况: 1.删除的节点没有子节点,直接删除即可 2. 删除的节点有一个子节点,直接用子节点替换既可以 3.删除的节点有两个子节点。 对于第三种情况,一般是不删除这个节点,而是删除左子树中最大的值的节点,并用这个值替换原先应该被删除的节点。左子树的最大节点只可能有一个或者没有子 阅读全文
posted @ 2016-09-18 10:41 xnuwu 阅读(447) 评论(0) 推荐(0) 编辑
摘要: 堆栈: stack.h stack.c main.c 运行: 队列: 当使用数组作为队列时,如果只是一端插入一端弹出,那么当尾部没有空间时,便无法插入元素,一种解决方法是使用“环绕”数组,新元素可以存储到以前删除元素所留出来的空间中,这种方法称为循环数组。 循环数组有个问题,当队列为空,或者为满时, 阅读全文
posted @ 2016-09-17 08:40 xnuwu 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 16.8 计算平均年龄 运行: 16.9 计算相同生日概率 运行: 16.10 插入排序 运行: 阅读全文
posted @ 2016-09-16 12:52 xnuwu 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 信号名<signal.h> 程序中大多数错误都是程序本身导致的,但是,有些程序遇到的事件却不是程序本身所引发的。比如用户终止程序,程序无法预知此类事件发生的情况,信号就是为了对此类事件做出反应的。信号是一种事件,它可能异步发生。如果没有安排怎么处理一个特定的信号,那么该信号出现时,程序就做出一个缺省 阅读全文
posted @ 2016-09-15 21:48 xnuwu 阅读(242) 评论(0) 推荐(0) 编辑
摘要: setjmp和longjmp提供一种类似goto语句的机制,但它的作用域不局限于同一个函数的作用域之内。这些函数可以用于深层次的嵌套函数调用链。 必须声明一个jmp_buf变量,然后使用setjmp初始化,然后储存处理器状态信息,此时初始化的返回值为0。 将保存的状态重新恢复,longjmp使执行流 阅读全文
posted @ 2016-09-15 19:51 xnuwu 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 字符串转换: 将字符串转换为数值形式,遇到非法字符停止,如果stop不是NULL,则将转换停止位置储存在stop中。 运行: 日期和时间: clock返回从秩序开始执行处理器所消耗的时间,通常是处理器时钟的滴答次数,如果需要转换成秒,需要除以常量 CLOCKS_PER_SEC 运行: 不同编译器有不 阅读全文
posted @ 2016-09-15 15:12 xnuwu 阅读(356) 评论(0) 推荐(0) 编辑
摘要: 15.8 十六进制倾印码 /home/mao/test文件内容: 运行: 15.9 fgrep实现 目录下三个文件1.txt 2.txt 3.txt,运行: 15.10 校验checkSum 运行: 15.11 商品存货记录 运行: 注意:如果wb+打开文件需要读取,那么在读取之前需要fflush或 阅读全文
posted @ 2016-09-11 23:51 xnuwu 阅读(423) 评论(0) 推荐(0) 编辑
摘要: 二进制I/O 数据写入到文件效率最高的是用二进制形式写入,二进制输出避免了在数值转换为字符串过程中,所涉及的开销和精度损失,但而精致并非人眼所能阅读,所以这个技巧只有当数据被另一个程序按顺序读取才能使用。 buffer被解释为一个或多个值的数组,count参数指定数组中有多少值,所以读取标量,cou 阅读全文
posted @ 2016-09-11 17:28 xnuwu 阅读(342) 评论(0) 推荐(0) 编辑
摘要: stdio.h中包含了声明FILE结构 FILE作为一种结构,用于访问一个流,如果激活了好几个流,那么每个流都有一个对应的FILE与他关联。当需要对流执行一些操作,调用一些函数,并向他们提供一个相关联的FILE参数。 对于ansi c运行时至少有三个流,标准输入stdin,标准输出stdout,标准 阅读全文
posted @ 2016-09-11 12:37 xnuwu 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 对于C,所有的I/O操作都只是简单的从程序移进或移出字节,这种字节流便成为流(stream),我们需要关心的只是创建正确的输出字节数据,以及正确的输入读取数据,特定的I/O设备细节都是对程序隐藏的。 缓冲 绝大多数流是完全缓冲的,意味着“读取”和“写入”实际上是从一块被称为缓冲区的内存来回复制数据, 阅读全文
posted @ 2016-09-10 13:18 xnuwu 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 15.1 错误报告 perror 任何一种程序都存在出错的可能,包括系统的函数库,当出现错误时,系统提示发生错误,标准库函数在一个外部整型变量中保存错误代码,然后把错误代码传给用户程序,提示错误原因。perror简化了向用户报告特定错误过程。 perror,接受字符串,先打印出这个字符串,然后在后面 阅读全文
posted @ 2016-09-10 12:29 xnuwu 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 14.1 打印函数 运行: 14.2 编写函数,cpu_type提示运行这个函数的计算机类型 cpu_type.h main.c 运行: cpu_known。#_#。上古cpu。 阅读全文
posted @ 2016-09-09 22:29 xnuwu 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 编写一个C程序,第一个步骤称为预处理,预处理在代码编译之前,进行一些文本性质的操作,删除注释、插入被include的文件、定义替换由#define定义的符号,以及确定代码的部分内容是否应该按照条件编译 共有五个预处理指令: 预定义指令:define 条件编译:#if, #elif,#else,#en 阅读全文
posted @ 2016-09-09 21:12 xnuwu 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 1,1标准输入读入字符,统计各类字符所占百分比 运行结果: 1.4 编写sort函数,对任何类型数组进行排序 运行: 阅读全文
posted @ 2016-09-08 21:18 xnuwu 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 高级声明: 这里声明有两个括号,第二个括号是函数调用,第一个括号是聚组作用。(*f)是一个函数,所以f是指向返回整型的函数的指针。程序中的每个函数都位于,内存中某个位置,所以存在指向那个位置的指针。 下标的优先级高,所以f是个数组,数组中元素为指向int的指针。 首先按照优先级进行分析,括号内(*f 阅读全文
posted @ 2016-09-08 19:45 xnuwu 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 12.3 重新编写12.7,使用头和尾指针分别以一个单独的指针传递给函数,而不是作为一个节点的一部分 运行: 12.4 编写函数反序排列单链表所有节点。 运行: 12.5 编写程序,从一个单链表中删除一个节点,第一个参数为指向链表头部的指针的指针 运行: 12.6 双链表中移除节点,第一个参数为指向 阅读全文
posted @ 2016-09-07 22:50 xnuwu 阅读(408) 评论(0) 推荐(0) 编辑
摘要: 定义结构体后整体赋值时发生错误 typedef struct NODE { struct NODE *fwd; struct NODE *bwd; int value; } Node; //声明变量 Node first; first = {NULL, &second, 4}; 错误: error: 阅读全文
posted @ 2016-09-07 09:19 xnuwu 阅读(3255) 评论(0) 推荐(0) 编辑
摘要: 双链表中每个节点包含指向当前和之后节点的指针,插入节点到双链表中需要考虑四种情况: 1、插入到链表头部 2、插入到链表尾部 3、插入到空链表中 4、插入到链表内部 运行: 优化: 1.语句提炼 对于下面的代码可以从if语句中,提取出共同的部分。 将共同的i=1,提取出if语句 代码提炼:提取共同项 阅读全文
posted @ 2016-09-07 00:31 xnuwu 阅读(205) 评论(0) 推荐(1) 编辑
摘要: 链表是一种常用的数据结构,每个节点通过链或者指针链接在一起,程序通过间接指针访问链表中的节点。 单链表只可以单向遍历 单链表中插入:第一版 当插入值到表头和表尾时,会出错,需要加上对特殊情况的判断,将传入的第一个参数由,指向链表头部节点的指针改为,指向 指向链表头部的指针的指针,这样就可以添加节点到 阅读全文
posted @ 2016-09-05 23:40 xnuwu 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 1编写calloc,内部使用malloc函数获取内存 运行 2.编写函数从标准输入读取一列整数,把这些值存储于一个动态分配的数组中,并返回数组,函数通过EOF判断输入结束,数组第一个元素表示数组长度。 运行输入ctrl+D结束符EOF 3.编写函数从标注输入中读取字符串,然后把字符串复制到动态分配的 阅读全文
posted @ 2016-09-05 21:11 xnuwu 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 声明数组时,必须指定数组长度,才可以编译,但是如果需要在运行时,指定数组的长度的话,那么就需要动态的分配内存。 C函数库stdlib.h提供了两个函数,malloc和free,分别用于执行动态内存分配和释放,这些函数维护一个可用的内存池,当程序需要内存时,它就调用malloc从内存池中提取一块合适的 阅读全文
posted @ 2016-09-03 00:33 xnuwu 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 1. 记账信息结构联合 2. 指令解码: typedef 定义联合类型,就可以使用各种联合内的字段结构,访问了 阅读全文
posted @ 2016-09-02 22:04 xnuwu 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 结构体传值: 结构体也是标量,像字符和整数一样,可以传递给一个函数,但是传入整个结构体效率很低,可以传入指向结构体的指针来提高效率。如果不希望程序对结构体变量改变可以加入const关键词。 位段: 结构体可以实现位段,位段的声明和结构体类型,但是成员是多个位的字段,不同长度的字段储存在一个或多个整形 阅读全文
posted @ 2016-09-01 23:49 xnuwu 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 结构体: 聚合数据类型是指,能够同时存储超过一个的单独数据,C语言中有两个聚合数据类型,数组和结构体。数组中储存的类型必须相同,元素通过下标和指针引用来访问的。 结构体也是一些值的集合,但是结构体中每个元素的值的类型可以不同,每个元素都有自己的名字,和整数字符一样,结构体也是标量类型 结构体声明: 阅读全文
posted @ 2016-09-01 20:35 xnuwu 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 9.15 编写函数格式化金钱为标准字符串 运行: 9.16 指定格式格式化数字字符串 执行结果: 阅读全文
posted @ 2016-08-31 01:30 xnuwu 阅读(336) 评论(0) 推荐(0) 编辑
摘要: C语言中没有字符串类型,字符串是以NUL结尾的字符数组组成的。 高级字符串查找: 示例: 输出6 和 1 strtok的第一个参数不是NULL,函数将查找到字符串中的第一个标记。strtok同时保存它在字符串中的位置,如果第一个参数是NULL,函数就在同一个字符串中保存的位置开始像前面一样查找下一个 阅读全文
posted @ 2016-08-25 20:03 xnuwu 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 编译PHP 报错:node.c: In function dom_canonicalization /opt/php-5.2.17/ext/dom/node.c:1953: error: dereferencing pointer to incomplete type 是libxml导致的问题,可以 阅读全文
posted @ 2016-08-24 16:11 xnuwu 阅读(1281) 评论(0) 推荐(0) 编辑