上一页 1 2 3 4 5 6 7 8 9 10 ··· 21 下一页
  2018年4月21日
摘要: 之所以会用到同步,是因为如果多个线程中对同一个资源进行操作时,会发生混乱。 比如2个线程对变量进行加1操作,第1个线程还没来的及改写数据时,第2个线程就对变量进行操作了,那变量最终的结果就是未知的,这个时候就需要同步来进行控制了。 例子如下: 多次运行后,$cnt的值是不确定的。如下图所示: 在pt 阅读全文
posted @ 2018-04-21 09:50 怀素真 阅读(653) 评论(0) 推荐(0) 编辑
  2018年4月18日
摘要: 有些人会想,明明用thread已经可以很好的工作了,为什么还要搞个worker和pool? 之所以要用到worker和pool还是因为效率,因为系统创建一个新线程代价是比较昂贵,每个创建的线程会复制当前执行的整个上下文。 尽可能的重用线程可以让我们的程序更高效。 一个简单的worker例子: 上面代 阅读全文
posted @ 2018-04-18 18:26 怀素真 阅读(544) 评论(0) 推荐(0) 编辑
  2018年4月9日
摘要: 我的centos版本是7.4.1708,php的版本是7.2.4(注意要是线程安全版),如下图所示: 首先我们在如下网址下载好pthreads的源码: 如:pthreads-3.1.6.tgz 1、解压、并进入目录 2、运行phpize,生成configure,如果没有配置PATH的,可以打上绝对路 阅读全文
posted @ 2018-04-09 10:34 怀素真 阅读(4972) 评论(0) 推荐(1) 编辑
  2018年4月7日
摘要: YII2中ActiveDataProvider可以使用yii\db\Query或yii\db\ActiveQuery的对象,方便我们构造复杂的查询筛选语句。 配合强大的GridView,快速的显示我们想要的数据。 通过上面的两个工具,我们快速的显示用户表信息。用户表结构如下: 我们创建一个用户模型M 阅读全文
posted @ 2018-04-07 10:41 怀素真 阅读(3941) 评论(0) 推荐(0) 编辑
  2018年4月4日
摘要: 有些时候我们需要通过crontab在后台跑一些定时脚本,这时候就需要用到控制台命令了。 我们在commands目录下创建TestController.php,当然脚本的位置是可以随意指定的,只需要在config/console.php中配置好就行。 TestController.php代码如下: 运 阅读全文
posted @ 2018-04-04 10:50 怀素真 阅读(1483) 评论(0) 推荐(0) 编辑
  2018年4月2日
摘要: 有些时候系统功能过于复杂,这时我们需要通过模块把一些功能区分开来,便于管理与维护。 我用的是Yii2的基本应用程序模板,程序其实已经给我们提供了一个模块,就是app本身。YII2中是可以无限嵌套模块的。不过一般不要超过2层。 我们在app下创建一个modules的目录,并创建一个api子目录,子目录 阅读全文
posted @ 2018-04-02 15:43 怀素真 阅读(712) 评论(0) 推荐(0) 编辑
摘要: YII2中给我们提供了非常方便的日志组件,只需要简单配置一下就可以使用。 我们在config/web.php中配置如下: 通过下面5个方法,来写入我们自已的日志 注意我们上面定义日志的levels为['error', 'warning'],所以日志只会记录这两个级别的信息。 有些时候我们并不希望把所 阅读全文
posted @ 2018-04-02 12:14 怀素真 阅读(2398) 评论(0) 推荐(1) 编辑
  2018年3月31日
摘要: YII2中的yii\db\Query给我们提供了非常丰富的方法,方便我们构建复杂的SQL语句。 Query()与createCommand最大区别在于,后者直接使用我们写好的SQL语句,前者通过参数和数据库类型生成不同SQL,迁移性更好。 阅读全文
posted @ 2018-03-31 11:53 怀素真 阅读(1035) 评论(0) 推荐(0) 编辑
  2018年3月30日
摘要: 在使用YII2中自带的RBAC时,需要先配置config/web.php: 如果你需要运行yii migrate来创建表,那么config/console.php也需要同上面一样配置一下。 cmd进入项目目录,运行如下命令: 你会发现在数据库中创建了四张表 为了演示,我们在控制器下分别写四个方法,分 阅读全文
posted @ 2018-03-30 17:30 怀素真 阅读(737) 评论(0) 推荐(0) 编辑
  2018年3月29日
摘要: YII2中的行为说白了就是对组件功能的扩展,在不改变继承关系的条件下。 行为附加到组件后,行为将注入自已的方法和属性到组件,可以像组件访问自定义的方法和属性一样访问行为。 注意行为是对功能的扩展,不要乱用行为,比如有一个动物类和一个人类,他们各自有自已的名称,身高,体重,这些是属性。 他们都会跑,这 阅读全文
posted @ 2018-03-29 16:48 怀素真 阅读(4235) 评论(0) 推荐(0) 编辑
摘要: 我们常在控制器中看到一个actions的方法,这个方法具体的作用是共用一些功能相同的action,方便调用。 当然我们也可以自已写一些action来进行调用。在项目目录下创建common目录,并创建TestAction.php文件。action文件的存放路径可以随意指定。 控制器代码如下: 这样我们 阅读全文
posted @ 2018-03-29 14:41 怀素真 阅读(5593) 评论(0) 推荐(0) 编辑
摘要: 验证码的使用是比较频繁的。YII2中已经帮我们做好了封装。 首先我们在控制器里创建一个actions方法,用于使用yii\captcha\CaptchaAction 显示页面代码如下: 演示结果如下: 上面控制器中验证码的验证方式是我们手动的。我们也可以创建一个模型配置rules()来自动完成。 控 阅读全文
posted @ 2018-03-29 14:20 怀素真 阅读(3861) 评论(1) 推荐(1) 编辑
摘要: 当数据过多,无法一页显示时,我们经常会用到分页组件,YII2中已经帮我们封装好了分页组件。 首先我们创建操作数据表的AR模型: 然后创建分页的控制器: 最后就是显示数据分页: 最后效果如下: 阅读全文
posted @ 2018-03-29 10:41 怀素真 阅读(1052) 评论(0) 推荐(0) 编辑
  2018年3月28日
摘要: 有些时候我们需要自已定义用户类,操作自已建的用户表,来完成登陆和注册功能。 用户表结构如下,当然可以根据自已的需要添加或删除: 然后我们在models下创建MyUser.php,代码如下: 创建完我们自已的用户模型类后,我们需要在配置文件中修改成我们自已的,在config\web.php 然后我们创 阅读全文
posted @ 2018-03-28 18:24 怀素真 阅读(996) 评论(0) 推荐(0) 编辑
摘要: 有些时候我们提交的表单中含有文件。怎么样让表单里的数据和文件一起提交。 我的数据表tb_user内容如下: 表单页面代码如下(至于为什么没有用ActiveForm来创建,这个就不解释了): 模型类代码如下: 控制器代码如下: 这样我们就可以通过表单上传图像了。 阅读全文
posted @ 2018-03-28 11:26 怀素真 阅读(489) 评论(0) 推荐(0) 编辑
  2018年3月27日
摘要: 一、以createCommand方式: 二、以AR(Active Record)方式操作数据库 我们需要创建一个继承自\yii\db\ActiveRecord的模型,然后重写tableName()函数,返回要操作的表名。 常用操作如下: 具体更多的操作方式建议查看官方文档。 阅读全文
posted @ 2018-03-27 12:09 怀素真 阅读(6150) 评论(0) 推荐(1) 编辑
摘要: 有些时候我们需要自定义一些全局函数来完成我们的工作。 方法一: 直接写在入口文件处 方法二: 在app下创建common目录,并创建functions.php文件,并在入口文件中通过require引入。 方法三: 通过YII的命名空间来完成我们自定义函数的引入,在app下创建helpers目录,并创 阅读全文
posted @ 2018-03-27 09:21 怀素真 阅读(771) 评论(0) 推荐(0) 编辑
  2018年1月22日
摘要: package main; import ( "regexp" "fmt" "strings" ) func main() { //1、过正则来判断字符串是否匹配 if ok, _ := regexp.Match("^[0-9a-zA-Z_]+$", []byte("hello")); ok { fmt.Println("ok"); } //上面的例子也可以通过Match... 阅读全文
posted @ 2018-01-22 16:12 怀素真 阅读(37337) 评论(0) 推荐(0) 编辑
  2018年1月21日
摘要: golang中解析xml时我们通常会创建与之对应的结构体,一层层嵌套,完成复杂的xml解析。 反之,通过创建结构体对象,生成xml数据 json数据的解析,很多时候我们并不知道json的具体结构,这就需要我们灵活使用interface{}和类型断言来进行解析。 通过结构体对象生成json数据 阅读全文
posted @ 2018-01-21 22:08 怀素真 阅读(8857) 评论(0) 推荐(1) 编辑
  2018年1月2日
摘要: 一、Beanstalkd是什么? Beanstalkd是一个高性能,轻量级的分布式内存队列 二、Beanstalkd特性 1、支持优先级(支持任务插队)2、延迟(实现定时任务)3、持久化(定时把内存中的数据刷到binlog日志)4、预留(把任务设置成预留,消费者无法取出任务,等某个合适时机再拿出来处 阅读全文
posted @ 2018-01-02 16:17 怀素真 阅读(11247) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 21 下一页