Flyertutor


  • 首页

  • 归档

  • 分类

  • 标签

C 操作文件函数

发表于 2016-12-21 | 分类于 C

打开文件 fopen

打开一个文件,返回操作文件的指针

1
FILE *fopen(const char *path, const char *mode)

参数说明:

  1. path 文件的路径
  2. mode 打开模式,也叫打开文件的方式

模式介绍:
r: 只读方式打开,文件必须存在
r+: 可读写,必须存在
rb+: 打开二进制文件,可以读写
rt+: 打开文本文件,可读写
w: 只写,文件存在则文件长度清0,文件不存在则建立该文件
w+: 可读写,文件存在则文件长度清0,文件不存在则建立该文件
a: 附加方式打开只写,不存在建立该文件,存在写入的数据加到文件尾,EOF符保留
a+: 附加方式打开可读写,不存在建立该文件,存在写入的数据加到文件尾,EOF符不保留
wb: 打开二进制文件,只写
wb+: 打开或建立二进制文件,可读写
wt+: 打开或建立文本文件,可读写
at+: 打开文本文件,可读写,写的数据加在文本末尾
ab+: 打开二进制文件,可读写,写的数据加在文件末尾

由mode字符可知,上述如r、w、a在其后都可以加一个b,表示以二进制形式打开文件

阅读全文 »

C 操作 Mysql

发表于 2016-12-20 | 分类于 C

这里是使用 C 语言链接操作 Mysql 数据库,由于工作中一直使用 Mysql 数据库,就用他来实现了一个小例。

Mysql 是一个开源的数据库管理系统,是多用户,多线程的。而且在 Web 开发领域十分的流行。

要做开发示例的话,首先要安装 Mysql 的 C 语言开发包,下面就介绍如何进行安装,开发示例。

安装开发包

1
2
3
4
// Linux
yum install libmysqlclient-dev -y
// Ubuntu
apt-get install libmysqlclient-dev
阅读全文 »

MySQL 索引的使用

发表于 2016-12-19

介绍

索引是为了提高查询速度,但相对的会对 insert、 update、 delete 这些更新操作造成影响,所以在选择索引的时候要注意,对其表先进行评审,看其查询频繁还是更新频繁,选择最合适的方法,不要盲目的添加索引。

查看表索引

1
mysql> show index from table_name

索引管理

1
2
3
4
5
6
-- 创建
mysql> create index index_name on table_name(index_field); -- 单列索引
mysql> create index index_name on table_name(index_field2, index_field2); -- 多列索引

-- 删除
mysql> drop index index_name on table_name;

索引类型

  • 主键索引 : 强调字段不为空,且唯一,一般会在主键字段上面添加
  • 唯一索引 : 字段可为空,且唯一
  • 普通索引 : 一般索引
  • 全文索引
阅读全文 »

Vue 实现节点树

发表于 2016-12-18

今天公司提了一个需求,需要实现一个节点树的功能,刚好最近在学习 vue ,所以就用其来实现了一个小例。
使用 vue2 版本,实现效果如下:

1
2
3
4
5
            root

A B

C D E F

创建 tree 组件

首先是利用组件实现 tree,主要核心思想就是如果存在 children 节点的话,就递归调用 tree 组件。

定义组件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

const Tree = Vue.extend({
name: 'tree', // 使用标签时候的名字
template: '#tree', //模板,我这里使用 template 实现,tree 是 template 的 id
props: ['node', 'length'], // 组件之间传递的值, node 节点信息,length 当前节点 children 的长度,为了样式管理
computed: {
cls: function() {
// 根据 chilren 的长度分配宽度,定义 class
if (this.length > 0) {
return 'col-md-' + (12 / this.length);
} else {
return 'col-md-12';
}
}
}
});
阅读全文 »

Yii2 自定义 Widget

发表于 2016-12-18 | 分类于 Yii2

使用 widget

yii 的小组件是为了实现视图的可重用,例如一些常用的日期组件、弹框插件等,yii 巧妙的使用了 widget 将其封装,在视图中可简单调用,这样良好的封装减少我们开发重复代码,是一种优秀的设计。下面我们做个示例。

例如面包屑组件的使用

1
2
3
4
5
6
7
8
9
10
// 在视图文件中引入 breadcrumb 组件
use yii\widgets\Breadcrumbs;

Breadcrumbs::widget([
'links' => [
['Home']
]
]);

// 只是简单的代码就讲 links 数组中的面包屑地址生成一段 html ,这样就减少我们代码量

所有的小组件都是继承 yii\base\Widget 类,里面定义了静态的方法 widget,begin,end,在上面例子中使用了 widget,在调用 yii\widgets\ActiveForm 组件的时候,由于有开始标签 form 和闭合标签 </form>,在标签中间也有相应的输出,yii 也提供了便捷的实现方法,在开始调用 begin,中间书写其他表单元素,最后调用 end

阅读全文 »

Yii2 RBAC 授权管理(三)

发表于 2016-12-17 | 分类于 Yii2

管理平台 > 权限管理 > 授权管理

开发环境:
homestead: Ubuntu + Nginx + PHP7 + Mysql
Yii: yii2-app-advanced

本人使用的是 yii2-app-advanced 版本来进行开发,如果使用 yii2-app-basic,请修改相应的命名空间。
由于本人表单使用原生 html,所以在书写的时候要格外注意 csrf 的设置,不然的话,表单将无法提交成功。

首先关于 RBAC 的使用方式请参考本人另外一篇文章 Yii2 使用 RBAC

实现的 action

  1. user // 角色下所有的用户
  2. addUser // 给角色组添加用户
  3. removeUser // 从角色组删除用户
  4. permission // 角色对应权限管理
阅读全文 »

Yii2 RBAC 角色管理(二)

发表于 2016-12-17 | 分类于 Yii2

管理平台 > 权限管理 > 角色 role 管理

开发环境:
homestead: Ubuntu + Nginx + PHP7 + Mysql
Yii: yii2-app-advanced

本人使用的是 yii2-app-advanced 版本来进行开发,如果使用 yii2-app-basic,请修改相应的命名空间。
由于本人表单使用原生 html,所以在书写的时候要格外注意 csrf 的设置,不然的话,表单将无法提交成功。

首先关于 RBAC 的使用方式请参考本人另外一篇文章 Yii2 使用 RBAC

创建控制器

建立 RoleController 控制器来管理角色

1
2
3
4
5
6
7
8
9
10
11
12
<?php
namespace backend\controllers;

use Yii;
use yii\db\Query;
use common\models\User;
use yii\web\Controller

class RoleController extends Controller
{

}
阅读全文 »

Yii2 RBAC 权限节点管理(一)

发表于 2016-12-17 | 分类于 Yii2

管理平台 > 权限管理 > 权限节点 permission 管理

开发环境:
homestead: Ubuntu + Nginx + PHP7 + Mysql
Yii: yii2-app-advanced

本人使用的是 yii2-app-advanced 版本来进行开发,如果使用 yii2-app-basic,请修改相应的命名空间。
由于本人表单使用原生 html,所以在书写的时候要格外注意 csrf 的设置,不然的话,表单将无法提交成功。

首先关于 RBAC 的使用方式请参考本人另外一篇文章 Yii2 使用 RBAC

创建控制器

建立 PermissionController 来管理权限节点

1
2
3
4
5
6
7
8
9
10
<?php
namespace backend\controllers;

use Yii;
use yii\web\Controller;

class PermissionController extends Controller
{

}
阅读全文 »

PHP + Jsonp 跨域举例

发表于 2016-12-17 | 分类于 PHP

Jsonp 介绍

我们在网站开发的时候,经常会出现在 www.aa.com 域名下面请求 www.bb.com 的数据。
在 javascript 中,有一个很重要的安全性限制,同源策略 ,只能访问当前源下的内容。

源:指,域名,协议,端口相同

同源策略,它是由 Netscape 提出的一个著名的安全策略。现在所有支持 JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。当一个浏览器的两个 tab 页中分别打开来 百度和谷歌的页面当一个百度浏览器执行一个脚本的时候会检查这个脚本是属于哪个源的,即检查是否同源,只有和百度同源的脚本才会被执行

然而我们有很多的开发需求,需要访问其他源的内容,这是就会出现跨域的情况,下面我们介绍一种解决方案 jsonp

我们在 html 里面中经常会用到 script 标签加载文件信息,这里没有限制,可以加载任意域名下的内容。
可以利用这个特性实现获取其他源下内容信息

JSONP 的缺点则是:
它只支持 GET 请求,不支持 POST 等其它类型的 HTTP 请求
它只支持跨域 HTTP 请求这种情况,不能解决不同域的两个页面之间如何进行 JavaScript 调用的问题

阅读全文 »

PHP array 操作函数

发表于 2016-12-17 | 分类于 PHP

array_map 函数的介绍

将数组的每个单元使用回调函数
格式: array_map(callback, array)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

$arr = [
[
'id' => 1,
'name' => 'zhang',
],
[
'id' => 2,
'name' => 'lisi'
],
[
'id' => 3,
'name' => 'joe'
]
];

// 使用匿名回调函数,也可以使用自定义函数
$res = array_map(function($val) {
return $val['id'];
}, $arr);

print_r($arr);

// array_map 的回调函数也可以使用 php 函数
$arr = [
'aa',
'bc',
'Ad'
];
$res = array_map('strtoupper', $arr);
print_r($res);
阅读全文 »
1…5678
Flyertutor

Flyertutor

一个PHP爱好者

78 日志
9 分类
16 标签
GitHub
© 2018 Flyertutor
由 Hexo 强力驱动
主题 - NexT.Gemini