兰林

Results 113 issues of 兰林

### 场景 有一个 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
MongoDB

### 场景 在 PHP 中,定义常量有两种方式,要么使用 `const` 要么使用 `define()`。 究竟他们二者有什么不同呢?为什么说 `define()` 的性能低下呢? ### 分析 `const` 是在编译时(**compile time**)完成常量定义的,而 `define` 是在运行时(**run time**)完成的。 这是两者的根本性差别,由此也就解释了一些二者的其他差别。 1. `const` 只能用于顶层作用域(top-level)中,因此不能用于逻辑判断内,或者是方法体中。 `define` 则没有该限制。 ```php if (...) { const...

重要
常用
PHP

### 场景 元字符 `$` 无法正确的断言结束或者行尾。 ### 正常情况 首先,在单行模式下面。 `^` 与 `$` 只匹配整个字符串的开始和结束,而不会管实际你的字符串有多少行。 ```php $subject =

常用
吐槽
PHP

### 场景 某些时候,我们希望能在向客户端输出数据后,继续向下执行代码。 我们既不希望加大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(); //...

生僻
PHP

### 场景 某些时候,我们可能需要处理大量文本数据。 我们需要保留文本原有的缩进及换行。 同时,我们可能需要处理一些变量的输出。 如果,我们仅仅使用字符串拼接的形式,无疑是很浪费时间的,而且很容易出错。 这种情景下,我们就可以使用 heredoc 或者 nowdoc 来处理。 ### PHP 7.3 版本示例 heredoc 与 nowdoc 的语法都是 `

常用
吐槽
PHP

### 官方释义 [PHP Reflection 官方文档](http://php.net/manual/zh/intro.reflection.php) 从 PHP 5 开始支持反射。并提供了完整的反射 API。 添加了对类、接口、函数、方法和扩展进行逆向工程的能力。 此外,反射 API 提供了方法来取出函数、类和方法中的文档注释。 从以上描述可以得出的结论在于一个关键词 “逆向工程”。 反射的最基本用途就在于一个逆向溯源。 它的主要目的就是在运行时分析类或者对象的状态。 从而可以导出或提取出关于类、方法、属性、参数等的详细信息,包括注释等。 ### 常用场景 元编程、依赖注入、对象池、动态代理、自动生成文档、某些设计模式等。 平时应用最多的可能就是利用反射在运行时对某些对象就行调试。 还可以在不修改目标类代码的情况下,调用其私有属性及方法。 以及用反射封装对象访问的动态代理,从而可以实现诸如拦截,参数预处理等效果。 利用好这些,我们就可以在不改变原有代码的基础上,在外层封装一层代理或者叫做“壳子”。 这层“壳子”可以动态的改变原有的运行逻辑,所以能够实现更抽象和复杂的扩展。 至于其他的像依赖注入之类的,一般来说底层框架会用到。 日常的业务逻辑中,一般来说很少会有用到反射的情况。 ###...

生僻
PHP

### 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/)

重要
记事

### 情景 当在 Nginx 中启用了 http2 协议后,会发现请求返回的头信息中已经不包含状态信息了。 也就是除了 statusCode 以外,http 1.1 中的 statusText 或者 statusMessage 不见了。 ### 原因 http2 中已经移除了对于 statusText 的支持,原因就是这群大佬认为那玩意没什么卵用。。。 ### 解决办法 没有解决办法!也就是说你不能用 http2 的同时,又要求它能够支持 statusText。 那么只有自己在 response...

生僻
吐槽

### 情景 代码写着写着就卡死了,过几秒钟感觉恢复了,敲几个字又卡住了。 ### 解决方式 1. 首先应该是调整 phpstorm 的配置,去掉一些多余的插件及不必要的提示和检测等。 这一步请自行研究。因为每个人的项目不一样。 2. 如第一步无法解决,请尝试本步骤。 打开 `/Applications/PhpStorm.app/Contents/bin/phpstorm.vmoptions` 修改各项内存,大小请自行尝试,往大了调整就行。例如: ```java -Xms512m -Xmx2048m -XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=225m -XX:+UseCompressedOops ``` 3. 如第2步仍然无法解决问题,请尝试本步骤。 同样是打开 `/Applications/PhpStorm.app/Contents/bin/phpstorm.vmoptions` 添加如下两行代码 ```java -Dawt.usesystemAAFontSettings=lcd -Dawt.java2d.opengl=true...

生僻
无聊
系统