notes
notes copied to clipboard
个人笔记
### 场景 某些时候,我们需要将关联数组中的某个元素排列到第一的位置。 比如,数据库查询条件的拼装。为了优化性能,往往需要调整条件的过滤顺序。 使其优先命中被索引的字段。 ### 方法 假定`zzz`是目标索引, 下面将 `zzz` 调整到数据开始位置。 ```php $temp = [ 'xyz' => 'val 1', 'xxx' => 'val 2', 'zzz' => 'val 3', ]; $newArr =...
### 开启吐槽模式 鉴于 Reac-Native 万年不修复的一堆 BUG, 准备学习下 Flutter, 看能得否? 国内还是看热闹的多,一堆文章复制粘贴,说些乱七八糟的都不在点上的东西。 真正有技术含量点的分析几乎没有。连基本的原理都没有理清楚,纯粹是凑软文量而已。 ### 优秀技术文章推荐 or 备忘 目前发现写的最好的是这篇文章 [What’s Revolutionary about Flutter](https://hackernoon.com/whats-revolutionary-about-flutter-946915b09514) 以及其中文翻译版 [为什么说Flutter是革命性的?](http://www.infoq.com/cn/articles/why-is-flutter-revolutionary) 资源备忘 [Awesome-Flutter](https://github.com/Solido/awesome-flutter) ### 在线文档 [Flutter 中文文档](https://flutterchina.club/docs)
### 场景 有一个 demo 集合的关系表,形如 ```json // demo collection {_id: 1, userid: "A", owner_id: "B", owner_type: "user" } {_id: 1, userid: "B", owner_id: "A", owner_type: "user" } {_id: 1, userid:...
### 场景 在 PHP 中,定义常量有两种方式,要么使用 `const` 要么使用 `define()`。 究竟他们二者有什么不同呢?为什么说 `define()` 的性能低下呢? ### 分析 `const` 是在编译时(**compile time**)完成常量定义的,而 `define` 是在运行时(**run time**)完成的。 这是两者的根本性差别,由此也就解释了一些二者的其他差别。 1. `const` 只能用于顶层作用域(top-level)中,因此不能用于逻辑判断内,或者是方法体中。 `define` 则没有该限制。 ```php if (...) { const...
### 场景 元字符 `$` 无法正确的断言结束或者行尾。 ### 正常情况 首先,在单行模式下面。 `^` 与 `$` 只匹配整个字符串的开始和结束,而不会管实际你的字符串有多少行。 ```php $subject =
### 场景 某些时候,我们希望能在向客户端输出数据后,继续向下执行代码。 我们既不希望加大PHP配置文件中的最大执行时间,同时也不希望请求了半天没有响应。 这种情况下,我们可以用一些PHP的内置函数来解决。 ### 方法 ```php function keepRunning() { @ignore_user_abort(true); @set_time_limit(0); // when running with FPM if (is_callable('fastcgi_finish_request')) { @session_write_close(); @fastcgi_finish_request(); return; } $mode = php_sapi_name(); @ob_start(); //...
### 场景 某些时候,我们可能需要处理大量文本数据。 我们需要保留文本原有的缩进及换行。 同时,我们可能需要处理一些变量的输出。 如果,我们仅仅使用字符串拼接的形式,无疑是很浪费时间的,而且很容易出错。 这种情景下,我们就可以使用 heredoc 或者 nowdoc 来处理。 ### PHP 7.3 版本示例 heredoc 与 nowdoc 的语法都是 `
### 官方释义 [PHP Reflection 官方文档](http://php.net/manual/zh/intro.reflection.php) 从 PHP 5 开始支持反射。并提供了完整的反射 API。 添加了对类、接口、函数、方法和扩展进行逆向工程的能力。 此外,反射 API 提供了方法来取出函数、类和方法中的文档注释。 从以上描述可以得出的结论在于一个关键词 “逆向工程”。 反射的最基本用途就在于一个逆向溯源。 它的主要目的就是在运行时分析类或者对象的状态。 从而可以导出或提取出关于类、方法、属性、参数等的详细信息,包括注释等。 ### 常用场景 元编程、依赖注入、对象池、动态代理、自动生成文档、某些设计模式等。 平时应用最多的可能就是利用反射在运行时对某些对象就行调试。 还可以在不修改目标类代码的情况下,调用其私有属性及方法。 以及用反射封装对象访问的动态代理,从而可以实现诸如拦截,参数预处理等效果。 利用好这些,我们就可以在不改变原有代码的基础上,在外层封装一层代理或者叫做“壳子”。 这层“壳子”可以动态的改变原有的运行逻辑,所以能够实现更抽象和复杂的扩展。 至于其他的像依赖注入之类的,一般来说底层框架会用到。 日常的业务逻辑中,一般来说很少会有用到反射的情况。 ###...
### Ubuntu 16.04 为例 ## 1. 首次登陆 ```shell ssh [email protected] -p22 ``` ## 2. 先更新系统及应用 ```shell > apt-get update > apt-get upgrade > apt-get dist-upgrade ``` ## 3. 删除不必要的用户 ```shell...
### 参考文章 一些比较经典的阐述,收藏下。 [PHP程序员如何理解IoC/DI](https://segmentfault.com/a/1190000002411255) [PHP程序员如何理解依赖注入容器(dependency injection container)](https://segmentfault.com/a/1190000002424023) [控制反转(IoC)与依赖注入(DI)](http://blog.xiaohansong.com/2015/10/21/IoC-and-DI/) [DDD实战篇:分层架构的代码结构](https://insights.thoughtworks.cn/ddd-layered-architecture/) [模块化与解耦](https://blog.cnbluebox.com/blog/2015/11/28/module-and-decoupling/) [浏览器渲染方面](https://developers.google.com/china/)