
开发
文章平均质量分 72
东陵十三
如人在荆棘林 不动即刺不伤
展开
-
for update踩过的坑
常用 select ... for update 加行锁 确保 事务中数据一致性 ,但是有坑如下线上一般都是主从 , select操作 被打到从库 read only 提高性能 行锁 如果是update操作 更新的还是改行数据 同一事物里面没毛病 如果 之后 是 insert 操作,先查 后增 这种会出问题 跟主从设置的机制有关系 自动根据 根据DML切换主从 还是...此处的事务 是读写事务分开 还是怎么处理 嗯 坑在此处...原创 2020-07-15 20:20:58 · 1089 阅读 · 0 评论 -
MySQL 导出数据踩过的坑
MySQL中你可以使用SELECT...INTO OUTFILE语句来简单的导出数据到文本文件上。SELECT ... INTO OUTFILE 语句有以下属性:LOAD DATA INFILE是SELECT ... INTO OUTFILE的逆操作,SELECT句法。为了将一个数据库的数据写入一个文件,使用SELECT ... INTO OUTFILE,为了将文件读回数据库,使用LOAD DATA INFILE。 SELECT...INTO OUTFILE 'file_name'形式的SELEC原创 2020-06-23 18:38:59 · 917 阅读 · 0 评论 -
git clone 踩过的坑3
报错: |Please wait a moment...remote: Counting objects: 864, doneremote: Finding sources: 100% (348/348)packet_write_wait: Connection to XX.XX.XX.XXport XXX: Broken pipefatal: the remote end hung up unexpectedlyfatal: early EOFfatal: index-pack .原创 2020-06-05 17:59:13 · 740 阅读 · 0 评论 -
git clone 踩过的坑2
报错: |Please wait a moment...|fatal: Project not found: XXXXXfatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.思路:git clone其他库试一下 如果pull 其他库OK 说明 对此库权限或者代码库本身问题 代码库设置成开..原创 2020-06-05 17:55:06 · 636 阅读 · 0 评论 -
git clone 踩过的坑
报错:Permission denied (baas,keyboard-interactive,publickey).fatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.思路:SSH公钥问题 每个用户在公共开发机生成一对自己专属的SSH密钥,用-f参数指定你的密钥对的位置把下面例子中的v_fangu原创 2020-06-05 17:51:24 · 512 阅读 · 0 评论 -
H5表单中时间日期控件
<form action="doAction.php" method='post'> <input type="date" name="datetime" id="" />年/月/日 <br/> <input type="datetime" name="datetime1" id=""> &l...原创 2020-03-09 20:26:37 · 4389 阅读 · 0 评论 -
可变函数
可变函数变量赋值与 函数名相同 调用变量时加上() 类似于调用函数print() unset() isset() empty() include() require() ---内置函数 是PHP语言结构function get_order($num) { echo 'A In get_order() we need ' . $num . ' boxs <...原创 2020-03-03 20:39:16 · 404 阅读 · 0 评论 -
嵌套函数-function_exists
嵌套函数 当外部函数被调用时 内部函数就会自动进入全局域中 成为新的定义函数function out() { function in() { echo "如果外部函数out没被调用 是不存在的 <br>" ; } } //in() ;// Fatal error: Call to ...原创 2020-03-03 14:47:26 · 373 阅读 · 0 评论 -
闭包函数简单用法
匿名函数(闭包函数) 允许临时创建一个 没有指定名称的函数 最经常用作回调函数(callback) 参数的值闭包函数可以作为变量的值来使用$example = function () { echo 'Hello <br>' ; } ; $example() ; //闭包函数使用 父作用域变量 use() 使用use()接收变量需要在闭...原创 2020-03-03 14:38:13 · 466 阅读 · 0 评论 -
文件引入之单独引用和路径引用
namespce 命名空间 主要解决了同一个脚本里面函数重名的问题(多个路径下 同名函数 类 创建实例的调用)而文件引入 主要解决函数代码重用的问题单独引用 (一次引入单文件 包含文件路径) require 和 include ...原创 2020-03-03 11:47:48 · 1206 阅读 · 0 评论 -
docker简单命令
Docker 容器技术的代表 将程序隔离 打包 简介 粗糙的理解为轻量层的虚拟机 Mac安装 下载 www.docker.com ->Download Docker for Mac 安装 配置 配置镜像 加速器 国内阿里云 时速云 注册帐号 专属加速器地址 Linux安...原创 2020-02-18 20:09:49 · 237 阅读 · 0 评论 -
ThinkPHP5-模型多重嵌套下的排序
/** * 根据商品id 获取 商品详情 * 商品头图 product 商品详情图 productImage 商品参数 productProperty * productImage关联了image表 productImage中 order字段 定义商品详情多张图片的排序 */$product = self::with(['imgs.imgUrl','properties']) ...原创 2019-11-07 16:45:59 · 1208 阅读 · 0 评论 -
ThinkPHP5-路由分组
//获取商品详情A---Route::get('api/:version/product/:id','api/:version.Product/getOne',[],['id'=>'\d+']) ;//获取最近新品B---Route::get('api/:version/product/recent','api/:version.Product/getRecent'...原创 2019-11-07 16:02:14 · 1076 阅读 · 0 评论 -
ThinkPHP5-路由的变量规则
//获取商品详情A---Route::get('api/:version/product/:id','api/:version.Product/getOne') ;//获取最近新品B---Route::get('api/:version/product/recent','api/:version.Product/getRecent') ;同一控制器下的两条路由 把B放在A前面可以正常...原创 2019-11-07 15:50:49 · 633 阅读 · 0 评论 -
ThinkPHP5-Token令牌验证身份以及权限
微信登录令牌 传统网站 用户登录 小程序 令牌 (分 权限) 获取令牌 客户端(携带帐号 密码) --->getToken接口 <-->帐号 密码 Token(令牌) Auth(权限) 访问接口 客户端(接待Token) --->访问接口(如 下单接口) <--...原创 2019-11-07 14:48:19 · 1424 阅读 · 0 评论 -
ThinkPHP5-数据集
场景:使用模型之后 可以protected $hidden=['summary'] 隐藏字段但是这种隐藏 所有相关模型全都隐藏了 如果有些需要显示 有些情况需要临时隐藏不返回给客户端 TP5提供了 一组模型对象 数据集 collection() 助手函数 返回数据集对象 该对象有 hidden() 方法 可以实现临时隐藏字段 $result = ProductMod...原创 2019-10-30 18:05:17 · 477 阅读 · 0 评论 -
ThinkPHP5-开启路由完整匹配
Route::get('api/:version/theme','api/:version.Theme/getSimpleList') ;Route::get('api/:version/theme/:id','api/:version.Theme/getComplexOne') ;如上 两条路由 不开启完整匹配的话 默认匹配到第一条 第二条不会被匹配config.php ...原创 2019-10-28 17:17:14 · 910 阅读 · 0 评论 -
ThinkPHP5-开闭原则(多版本支持)
一般 在控制器多传入一个参数 $version public function getBanner($id) { (new IDMustBePostiveInt())->goCheck() ; /** * 调用 model返回 banner信息 */ ...原创 2019-10-28 17:14:51 · 191 阅读 · 0 评论 -
ThinkPHP5-图片资源URL
图片资源URL配置 "img": { "url": "/banner-2a.png" } 图片存储 本地(数据库存储相对路径) 网络云 七牛云 阿里云oss 自定义配置文件 配置域名以及存储目录 读取配置文件+数据库相对路径 拼接成完整的路径 application/extra/setting.php...原创 2019-10-24 21:20:35 · 1011 阅读 · 0 评论 -
ThinkPHP5-模型关联|隐藏模型字段优化
模型关联(主从表 banner banner_item) 界面上有多个banner位 每个banner位置具体显示图片个数 banner_item 查询banner 获取当前banner位信息以及具体banner_item信息 banner->banner_item 1->many 定义关联 class Banner extends...原创 2019-10-24 21:07:25 · 1327 阅读 · 0 评论 -
ThinkPHP5-操作数据库(原生|构造器|模型)
原生sql $result = Db::query('select * from banner_item where banner_id = ?',[$id]) ;构造器 封装了对不同数据库的操作 提供了一种统一操作的语法 不需要关心不同数据库sql语法的差异性 /** * Db::table('banner_item')->where('banner_...原创 2019-10-24 15:52:57 · 646 阅读 · 0 评论 -
ThinkPHP5-自定义全局异常处理类报错 HttpException异常抛给Exception
思路 : ThinkPHP中 Exception 和 HttpException两个异常类没有直接关系Exception extends \Exception implements ThrowableHttpException extends RuntimeException extends \Exception implements Throwable但是有共同...原创 2019-10-23 17:11:35 · 1342 阅读 · 0 评论 -
ThinkPHP5-构建全局异常处理类
自定义异常处理类 1>class ExceptionHandler extends Handle 继承 Handle 2>public function render(Exception $e) 重写render方法 3>config.php中 配置exception_handle 指向自定义的异常处理类 // 异常处理handle类 ...原创 2019-10-22 19:55:35 · 437 阅读 · 0 评论 -
ThinkPHP-Exception异常分类
服务器端给客户端(小程序|app|CMS等)提供接口的时候 1>通常不需要记录日志 需要向用户返回具体信息 由于用户行为导致的异常 没有通过验证器 没有查询到结果(返回空 也可) 一般需要返回json格式的 自定义信息 (错误码 错误信息 以及当前接口URL)2>通常记录日志 不需要向客户端返回具体信息 服务...原创 2019-10-22 19:50:09 · 559 阅读 · 0 评论 -
ThinkPHP5-日志
TP5默认的日志系统 'log' => [ // 日志记录方式,内置 file socket 支持扩展 'type' => 'File', // 日志保存目录 LOG_PATH base.php 定义全局常量 'path' => LOG_PA...原创 2019-10-22 19:39:42 · 824 阅读 · 0 评论 -
TP5-validate验证器 构建自己的验证层
TP5自带的 validate常用来进行校验 分为独立验证和验证器两种服务器端给客户端(小程序|app|后台CMS不分离的话也算)提供接口的时候 客户端参数尤其要进行校验独立验证 use think\validate ; class Banner { ...原创 2019-10-22 19:31:26 · 523 阅读 · 0 评论 -
AOP
AOP 面向切面编程 抽象的方式 统一整体的处理某一类问题 每个框架都会遇到的全局异常处理层 全局校验层 ,把大部分业务都会遇到的抛异常 参数校验等封装一层 简化了代码 复用性也强 通俗的来讲 就像是去电影院看电影 买票的渠道很多 线上线下 但是检票口只有一个...原创 2019-10-22 18:59:37 · 142 阅读 · 0 评论 -
Vue2.6-父子组件之间值传递
父组件->子组件 v-bind:index = 'key' 简写 :index='key' 遍历list的时候 将每一项的值赋值给value 每一项的下标赋值给key 把value值通过v-bind绑定到变量 content上 把key值通过v-bind绑定到变量 index上 传递给to-do-list组件子组件->父组件...原创 2019-09-02 17:21:51 · 326 阅读 · 0 评论 -
Vue2.6-方法 侦听器 计算属性
很多时候 需要在视图中渲染的数据是通过 已经定义的多个变量通过逻辑计算返回的结果如 已经定义 firstName lastName 现在需要渲染 fullName = firstName + lastName 的结果实现方法有多种:watch(侦听器)和computed(计算属性)都具备缓存机制 但是相比较 watch需要侦听大量依赖 computed相比简洁所以 如果...原创 2019-09-03 16:51:19 · 229 阅读 · 0 评论 -
Vue2.6-computed(计算属性的getter和setter)
<!DOCTYPE html><html> <head> <title>computed的getter和setter</title> <meta charset="UTF-8" /> <script src="./vue.js"></script> </head> ...原创 2019-09-03 17:24:30 · 483 阅读 · 0 评论 -
Vue的样式绑定-class和style
Vue直接操作数据,当数据改变Vue底层自动渲染dom。当有需要改变dom区域样式的时候 借助于:class和:style以及事件可以实现class 一.class的对象绑定 :class="{actived: isActived}" 预定义样式 actived 根据事件判断isActived 当isActived为true的时候 使用样式<!...原创 2019-09-03 18:43:22 · 332 阅读 · 0 评论 -
Vue的条件渲染-v-if与show的区别以及key值的作用
v-if 条件渲染 通过v-if指令 结合js表达式返回值 决定一个dom元素是否存在1>标签一般成对使用 标签之间不能有其他不相关的标签阻隔 否则报错2> 通过条件判断 控制标签是否在页面上显示 但是条件不匹配的标签 不会出现在dom节点上3>key值的作用Vue在重新渲染页面的时候 会尝试复用页面上已经存在的dom 给某个元素标签加上key值之后...原创 2019-09-04 18:17:42 · 865 阅读 · 0 评论 -
Vue中列表渲染-key值的使用以及数据改变页面同步变化问题以及template占位符的使用
<to-do v-for="(value,key) of list" :value="value" :index="key" :class="['actived_one']"...原创 2019-09-04 21:46:06 · 2516 阅读 · 0 评论 -
oracle-exp imp 导入导出
$exp导出scott用户scott.dmp,并记录日志在/oracle/log路径下 exp scott/oracle file=/oracle/backup/exp_scott.dmp log=/oracle/log/exp_emp.log owner=scott 清空并删除scott的emp表 sql>runcate table empsql>drop tabl...原创 2019-05-27 15:36:46 · 714 阅读 · 0 评论 -
Vue2.5 基础
Vue2.5 入门一、创建第一个实例1) 官网:https://cn.vuejs.org/2) 安装 3) 直接下载并用 <script> 标签引入,Vue 会被注册为一个全局变量。a. 开发版本:包含完整的警告和调试模式b. 生产版本:删除了警告 30.90KBmin + gzipc. CDN:<script src="https://cdn.jsdelivr.net/npm/...原创 2018-07-02 16:34:05 · 846 阅读 · 0 评论 -
组件化实现简单的toDoList
组件化 将一个页面根据功能分解成多块,每一块定义成一个组件,页面分别引入这些组件。 如此一来 修改维护页面功能的时候 直接定位到相应组件文件。每一个组件其实就是一个Vue实例 组件化其实就是实例化 ,页面由多个Vue实例组成 全局组件 Vue.component Vue提供的 创建全局组件 v-bind 向子组件传入绑...原创 2019-09-02 15:45:26 · 712 阅读 · 0 评论 -
Vue2.6-浅析 MVP设计模式与MVVM设计模式
MVP 设计模式M model层 数据层P Presenter层 业务逻辑相关的 控制层V view层 视图层 页面上的dom展示通过以下 JQuery实现 toDoList M层很弱 没有通过ajax获取远程数据 div区域 dom域 是 V 层视图 视图改变的时候 触发控制器 控制器可以调M(模型层)发送ajax请求获取数据...原创 2019-08-25 14:57:39 · 261 阅读 · 0 评论 -
Vue2.6-简单的ToDoList 增加列表项(MVVM)
<!DOCTYPE html><html> <head> //MVVM 模式 直接操作数据 不涉及dom操作 vue底层自动根据数据 渲染页面 <title>ToDoList</title> <meta charset="UTF-8"> //引用...原创 2019-08-25 13:15:34 · 294 阅读 · 0 评论 -
PHP实现微信公众平台开发---提升篇(群发接口)
订阅号 一天一条 服务号 一月四条 素材通过 临时|永久素材接口 上传 返回media_id 预览接口 每日调用100次 保险起见 先用预览接口测试通过原创 2018-09-16 10:25:27 · 955 阅读 · 0 评论 -
PHP实现微信公众平台开发---提升篇(自定义菜单)
自定义菜单要求自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。 一级菜单最多4个汉字,二级菜单最多7+个汉字,多出来的部分将会以“...”代替。 创建自定义菜单后,菜单的刷新策略是,在用户进入公众号会话页或公众号profile页时,如果发现上一次拉取菜单的请求在5分钟以前,就会拉取一下菜单,如果菜单有更新,就会刷新客户端的菜单。测试时可以尝试取消关注公众账号后再次关注...原创 2018-07-26 17:43:13 · 2763 阅读 · 0 评论