自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 PHP隐式类型转化

布尔值转化为字符串首先看一下下面一段代码:$a = true;$b = false;var_dump(strlen($a)); // 1var_dump(strlen($b)); // 0在使用 strlen 时布尔变量会隐式转化为字符串,true 转化为字符串1, false转化为空字符串,其转化规则我们可以在PHP源码中找到答案。// 非字符串类型转化规则ZEND_API void zend_make_printable_zval(zval *expr, zval *expr_cop

2021-03-08 16:53:47 307

原创 Yii2 数据库表映射为模型

Yii2 数据库表映射为模型使用 yii2 自带的命令 yii 中的内置命令 gii 可以将数据库中的表结构映射为 Model 类文件:查看 gii 的使用帮助$ php yii gii/model --helpDESCRIPTIONThis generator generates an ActiveRecord class for the specified databasetable.USAGEyii gii/model [...options...]OPTIONS..

2020-09-22 17:33:02 634

原创 SQLAlchemy 自动分表

将数据库中的表自动映射ORM类在 SQLAlchemy 中提供了将数据库中的表自动映射为ORM类的扩展(sqlalchemy.ext.automap)。基本用法最简单用例是将一个已存在的数据库映射为新的model。from sqlalchemy.ext.automap import automap_basefrom sqlalchemy.orm import Sessionfrom sqlalchemy import create_engineBase = automap_base()

2020-09-03 15:24:52 2883

原创 php foreach中引用传值指针问题

首先我们需要了解PHP foreach的遍历机制, 简单来讲 php foreach 遍历中会存在一个类似于 JavaScript 中变量提升的问题。我们看下面得一个例子:<?php$arr = array(1, 2, 3);foreach ($arr as $v) {};var_dump($v); // 3此时 $v 的值为数组 $arr 的最后一个值;那么我们将上面的例子稍微改一下:$arr = array(1, 2, 3);// 此时使用,引用赋值// 第一次,$

2020-07-29 17:04:24 235

原创 Laragon下添加新版本Python

Laragon下添加新版本Python在 https://www.python.org/ 下载所需要的Python版本安装包 Windows x86-64 executable installer双击安装,取消下面的多选框,点击 Customize installation取消 tcl/tk and IDLE和py launcher,点击next选择python安装路径,位于 \lara...

2020-03-10 09:34:16 430

原创 SQLAlchemy 模型转字典以及处理特殊字段方式

SQLAlchemy 模型转字典以及处理特殊字段方式问题描述问题分析问题处理问题描述使用SQLAlchemy创建ORM模型后,会存在这样一类问题:1.直接返回查询结果会存在 对象转json失败TypeError: Object of type 'XXX' is not JSON serializable2.返回对象中有一些字段我们不希望输出道接口中eg: 用户模型中的 passwor...

2019-03-26 09:11:51 2275

原创 Electron 3 不能自动播放音频

Electron 3 audio not allowed before user interaction with the page (Chrome 66 autoplay policy) #13525问题使用 Electron打包的应用不能自动播放音频文件。问题的起源Chrome 66 之后更新了,自动播放的策略以提供更友好的交互体验。解决方法app.commandLine.app...

2018-12-19 14:16:21 3359

原创 javascript检查重复字符串

javascript检查重复字符串题目描述给定字符串 str,检查其是否包含连续重复的字母(a-zA-Z),包含返回 true,否则返回 false。思路一最直接的方法就是暴力循环检测是否有重复字母出现。function containsRepeatingLetter(str) { // 第一步 // 将非字母替换为空 var tmp = str.r...

2018-07-17 11:13:26 5057 3

原创 javascript组合式继承与寄生组合式继承

javascript组合式继承与寄生组合式继承javascript组合式继承组合继承式javascript最常见的继承模式;不过他也有自己的不足。组合继承最大的问题就是无论在什么情况下都会调用两次超类型构造函数: 一次是在创建子类型原型的时候,另一次是在子类型构造函数内部。function SuperType (name) { this.name = name; t...

2018-06-26 09:52:02 425

原创 javascript 实现类似于php in_array 的函数

javascript 实现类似于php in_array 的函数JavaScript 并没有提供像PHP一样直接检查数组中是否存在某个值的函数,但提供了一个类似的方法用来遍历数组 somesome() 方法用于检测数组中的元素是否满足指定条件(函数提供)。some() 方法会依次执行数组的每个元素:如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。 如果...

2018-05-24 17:37:53 2327

原创 Laragon 添加MongoDB服务

Laragon 添加MongoDB服务下载MongoDB免安装包 — mongodb官网下载地址 解压文件 — 将压缩包解压到 laragon/bin/mongodb/ 目录下 运行 laragon — 右键点击设置图标选择mongodb 点击 terminal打开控制台 — 键入 mongo 关于 laragon 的介绍...

2018-04-08 10:58:05 1473

原创 非递归深度优先遍历树结构数据

js 非递归深度优先遍历树结构数据使用递归方法实现对树的遍历效率非常低,下面利用栈的特性来实现对树的深度优先遍历;&lt;!DOCTYPE html&gt;&lt;html lang="en"&gt;&lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;tree&lt;/title&

2018-04-04 10:22:53 1088

原创 初识 service worker

初识 service worker 与君初相识,犹如故人归。很早就听别人说起过 service worker, 可是直到现在才有时间来尝试这项技术。 它的理论之类的东西我就不再赘述,感兴趣自行百度,咱废话不多说先让代码飞一会(Talk is cheap, show me the code.)。开始之前还是先了解一下基本概念:什么是ServiceWorker?什么是Prom...

2018-02-08 15:59:59 417

原创 一览 promise、async/await

一览 promise、async/await下面用一个http请求来简要概述 Promise, async/await。在没有 Promise 之前 发送一个 http请求是这样:function httpRequest() { var xhr = new XMLHttpRequest(); xhr.open("GET", "http://cnodejs.org/

2018-02-07 11:32:09 354

原创 使用jQuery.animate实现简单的页面切换效果

使用jQuery.animate实现简单的页面切换效果涉及知识点jQuery.animatecss positioncss flex 布局设计与实现jQuery.animate()语法:$(selector).animate(styless[,duration][,easing][,callback]);styles Object 必须 定义动画的css

2018-02-05 16:36:44 5821

原创 DOMException: The play() request was interrupted by a call to pause().

Uncaught (in promise): The play() request was interrupted by a call to pause().场景JavaScript 在调用 Audio 播放声音的时候,因为处理不当经常会出现上面的错误提示。问题分析在调用 Audio 的 play() 方法之后就立即被之后一次调用 pause() 方法中断了。错误提示中明确

2018-01-29 15:50:40 57386 2

原创 Uncaught TypeError: Cannot set property 'innerHTML' of null

Uncaught TypeError: Cannot set property 'innerHTML' of null从错误提示 “不能为 null 设置 innerHTML属性“,也就是说在javascript在对DOM节点的innerHTML赋值的时候,没有获取到该DOM节点。原因可能是:该DOM节点不存在在执行JavaScript脚本的时候,该DOM节点还未加载完成。

2018-01-11 10:29:21 1892

原创 WebStorm 静态资源文件引用地址报错

WebStorm 静态资源文件引用地址报错有时我们在webstorm中编辑html, 或者 css 文件的时候需要引用外部文件。例如:在如下目录结构的项目中,需要在style.css 文件中引用一张图片,当使用绝对路径时,路径下面会有红色的波浪线,看着很不好。(当然可以使用相对路径,就不会出现上述情况)。我们可以让编辑器识别使用绝对路径的写法,那就是将public目录设置成资源根目录。右键点击pub

2017-12-13 09:53:29 5759 6

原创 javascript 数组去重

javascript 数组去重利用键的唯一性,将数组的键和值倒置去重。var arr = [1, 3, 5, 9 , 3 , 2, 8 , 5, 6 , 2 , 7, 5];Array.prototype.uniqueBykey = function () { var oArr = {}; var res = []; this.forEach(function (value,

2017-11-28 11:15:33 313 2

原创 webApp 移动端键盘显示 搜索 按键

webApp 移动端键盘显示 搜索 按键实现需要使用 form标签包裹 <input type="search" />。例如:<form> <input type="search" placeholder="搜索" /><form>当移动端键盘输入字符后,键盘上会显示一个 “搜索”的按键。问题但是以上的这种方法,在部分手机上会出现点击了键盘上的搜索,页面会跳转到一个 url,这是我们不

2017-10-31 14:42:59 2085

原创 原生JS实现简易模板

原生JS实现简易模版String.prototype.renderTpl = function (obj) { var myself = this; var render = ''; var source = this.toString(); if (Object.prototype.toString.call(obj) === '[object Array]') {

2017-10-31 10:44:18 1563

原创 PHP 正则匹配 反斜杠

php 正则表达式匹配 反斜杠让我们看看下面这段代码。这段代码主要的目的就是将反斜杠之间的字符串都替换成空。$classname = 'DesignPattern\FactoryPattern\ShapeFactory';$class = preg_replace("/\w+\\/", '', $classname);var_dump($class);咋一看,没问题。\ 在正则表达式中是特殊(转义

2017-08-25 16:24:39 7250

翻译 RabbitMQ教程之php-amqplib(七)远程调用

远程调用 PRC(Remote procedure Call) using php-amqplib在第二节教程中,我们知道了怎样使用工作队列将耗时的任务分发给多个消费者。但是,如果我们需要在远程计算机上运行并等待结果怎么办?那样就是一个新的应用场景。这种模式通常称为远程调用或者叫 PRC。在本教程中,我们将使用RabbitMQ构建一个RPC系统:一个客户端和一个可扩展的RPC服务器。由于我们没

2017-08-22 17:13:23 3949

翻译 RabbitMQ教程之php-amqplib(六)主题

主题 (topics) using php-amqplib在上一节教程中,我们改进了我们的日志记录系统。我们使用可以选择性接收信息的 direct 类型交换机,而不是使用只能进行虚拟广播的 fanout 类型交换机。虽然使用 direct 类型交换改进了我们的系统,但它仍有限制 - 它不能基于对多个标准进行路由选择。在我们的日志系统中,我们可能不仅要根据日志的严重性订阅日志,还可以基于发出日志

2017-08-22 17:11:58 3078

翻译 RabbitMQ教程之php-amqplib(五)路由

路由(Routing) using php-amqplib在上一节中,我们构建了一个简单的日志系统。它能够向多个接收器广播消息。在本教程中,我们将在上一节基础上添加一个功能 - 我们将实现能够只订阅一部分消息。例如,我们想能够仅将关键的错误消息保存到日志文件(以节省磁盘空间),同时仍然能够在控制台打印所有日志消息。绑定在前面的例子中,我们已经创建了绑定。你能回忆之前的代码:$channel->

2017-08-22 17:10:39 2361

翻译 RabbitMQ教程之php-amqplib(四)订阅、发布

Publish/Subscribe using php-amqplib在上一节中我们创建了一个工作队列。在工作队列背后的假设是每个任务都交付给一个工作进程处理。在这一节中,我们会做一些完全不同的事情–我们会向多个消费者传递相同的信息。这种模式被称为“发布/订阅”。为了说明这种模式,我们将搭建一个简单的日志记录系统。它将包括两段程序–第一个将产生日志消息,第二个将接收并且打印它们。在我们的日志记

2017-08-22 17:09:02 4525

翻译 RabbitMQ教程之php-amqplib(三)工作队列

Work Queues using php-amqplib在第一篇教程中,我们编写了两段程序通过一个指定的队列来收发消息。在本节教程中,我们将创建一个工作队列,用于多个工作人员之间分配耗时的任务。工作队列(又名:任务队列)其主要的思想是避免立即执行资源密集型任务,并且阻塞进程等待任务完成。相反,我们让这类型任务稍后执行,我们将它封装为消息,并将其添加到任务队列中。在后台启动一个工作进程,读取工

2017-08-17 16:52:46 6057 2

翻译 RabbitMQ教程之php-amqplib(二)简介、入门

RabbitMQ 简介、入门介绍RabbitMQ 是一个消息代理:它接收并转发消息。你可以把它当成一个邮局,当你把你想发送的邮件投进邮箱时,你可以确定邮递员最终会把邮件送到你的收件人。在上面的比喻中,我们把 RabbitMQ 比作 邮箱、邮局、邮递员。RabbitMQ 和 邮局主要的不同是RabbitMQ不处理真实的信件,它接收、存储和转发二进制的数据–消息(message)。RabbitMQ和消息

2017-08-17 16:49:05 18300 3

翻译 RabbitMQ教程之php-amqplib(一)安装RabbitMQ

Installing on Debian / Ubuntu添加 /etc/apt/preferences.d/erlang# /etc/apt/preferences.d/erlangPackage: erlang*Pin: version 1:19.3-1Pin-Priority: 1000Package: esl-erlangPin: version 1:19.3.6Pin-Pri

2017-08-17 16:45:14 2405 1

原创 全栈式PHP集成环境-laragon(二) 配置、使用

全栈式PHP集成环境-laragon(二) 配置、使用配置启动项和端口Laragon 中集成了 Apache, MySQL, Nginx, Memcahed, Redis 我们可以按照自己的需要配置启动这些服务。1 启动Laragon 2 右键点击界面右上方 设置 图标 -&gt; PreferencesRun Laragon when Windows start...

2017-08-01 14:57:23 2896

原创 全栈式PHP集成环境-laragon(一)介绍、安装

全栈式PHP集成环境-laragon(一)介绍、安装介绍laragon官网 https://laragon.org/ 超快速,易用,高效,强大的开发环境。 Laragon在操作系统具有独立的环境,并提供构建现代Web应用程序所需的一切软件。 非常灵活。你可以移动Laragon文件夹(另一个磁盘,另一个笔记本电脑,同步到Cloud,…)安装下载最新版 laragon 选择WAM

2017-07-31 11:42:41 13477

原创 YII2 beforeSave not work?

YII2 中 beforeSave 不执行问题分析首先了解一下 YII2 Model的执行流程:初始化Model给Model赋值Model 数据验证执行save操作beforeSave() 是在调用 save() 方法后在保存数据之前执行, 因此造成beforeSave() 未执行的原因可能出现在上面的第三步,保存的数据没能通过数据验证,以至于未能执行之后的操作。查看该类型错误的方式:..

2017-07-17 15:07:39 816

原创 YII Insert or Update a Row

// try to find a row$model = someModel::find() ... ->one();// if exist a row, return the model// otherwise return null// now check if the model is nullif (is_null($model)) { $model = new

2017-07-14 11:11:42 658

原创 JavaScript 删除数组中一个元素--delete与赋值为undefined方法比较

JavaScript 删除数组中一个元素–delete与赋值为undefined方法比较delete 删除数组一个元素delete 删除数组的一个元素,将会把数组中该元素对应的索引一起删除, 但是数组的长度不会改变。var arr1 = [1, 2, 3, 4, 5];delete arr1[2];console.log(arr1);打印结果:(5)[1, 2, undefined × 1, 4,

2017-07-10 10:42:19 3521

原创 ajax提交form表单后页面自动刷新

ajax提交form表单后页面自动刷新有时我们用ajax提交表单数据时,明明设置的是异步,可是当提交数据后页面也会莫名其妙的刷新。原因是form 表单的提交按钮不是 <input type="button" .../>

2017-03-04 15:14:14 4871

原创 laragon 使用php5.* Service Apache can not start. Reason

Service Apache can not start. Reason*laragon 2.1. 默认使用 php7.*, 当切换php版本到php5 就会出现 Service Apache can not start. Reason: httpd: Syntax error on line 532 of … mod_php.conf: Cannot load…**如图:原因可能是因为你的电

2017-01-01 22:15:05 4166

原创 javascript 树形数据转化维数组

javascript 树形数据转化维数组废话不多说直接上代码。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>遍历树</title></head><body><script> window.onload = function () { var data = [

2016-11-12 15:10:28 900

原创 javascript 对象数组不确定对象属性名遍历问题

javascript 对象数组不确定对象属性名遍历问题有时候会莫名其妙的遇到一些奇怪的问题,就比如: javascript 对象数组不确定对象属性名遍历问题,本来拿到对象就可以了,可是对一些 “强迫症” 来说就要这么做没办法。下面贴出代码。<script>window.onload = function () { // 直接使用属性名访问成员变量的值 var books = {

2016-10-31 22:50:04 2143 1

原创 php 数组解析为树型结构

在程序在经常会遇到树形的数据,而在mysql中没有提供递归查询的方法,当然也可以用 mysql 的 自定义函数或者存储过程来实现,不过写方法依赖数据库不方便以后的数据迁移下面。下面是我用代码实现的方法:// 测试数据public function test(){ $data = array( ['id'=>1, 'father_id'=>0], ['id'

2016-07-27 09:41:30 584

原创 mysql 中 You can't specify target table <tbl> for update in FROM clause 错误解决方法

You can’t specify target table tbl for update in FROM clause在mysql中当在一句sql中先后执行对同一张表的select 和 update 或 delete 操作时,就会报错: You can't specify target table tbl for update in FROM clause例如:update t...

2016-07-02 22:14:03 580

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除