理想🀄️真挚的友谊
真正的好朋友,互损不会翻脸,疏远不会猜疑,出钱不会计较,地位不分高低,成功无需巴结,失败不会离去。奋斗的时候搭把手,迷茫的时候拉一把,开心的时候干一杯,难过的时候抱一下。一起走吧,趁将来未来,趁热情未冷。——致我们真挚的友情
真正的好朋友,互损不会翻脸,疏远不会猜疑,出钱不会计较,地位不分高低,成功无需巴结,失败不会离去。奋斗的时候搭把手,迷茫的时候拉一把,开心的时候干一杯,难过的时候抱一下。一起走吧,趁将来未来,趁热情未冷。——致我们真挚的友情
1、都是遍历数据每个元素;
2、回调的参数都相同都支持元素
、主键
、值
;
3、其中回调函数中的this
指向的是window
对象;
map()
会分配内存生成并返回新数组。forEach()
可以更改原数组元素值。
froEach()
而只是想用数据做一些事情时,并调用回显之用。map()
适用于生成并生成新数组,原数组不变,它的性能要比forEach()
要高。
/**
* 自定义token
* @param null $userId
* @param null $roles
* @param int $timeout
* @return string
*/
protected function setToken($userId = null, $roles = null, $timeout = 0) :string
{
$year = 1984;
$time = time();
return $roles.'.'.md5($time).'.'.$year + $userId.'.'.$time.'.'. $timeout;
}
序号 | 名称 | 描述 |
---|---|---|
1 | chinese(simplified ...) | 简体中文语言包 |
2 | live server | html 实时预览 |
3 | prettier-code formatter | 最流行的代码格式化插件 |
4 | better comments | 自定义注释颜色 |
5 | path intellisense | 路径自动感知填充 |
6 | helium icon theme | 一款我喜欢的文件图标主题 |
7 | one dark pro | 经典的主题,使用者众多,很耐看 |
8 | material theme | 经典"材料"主题 |
9 | material theme icons | 常与material theme配置的文件图标 |
10 | shades of purple | 赛博朋克风格的一款主题,很明亮风骚 |
11 | dracula official | 经典的吸血鬼主题 |
12 | dracula at night | 个人更喜欢这款小众的吸血鬼暗黑版(教学用它) |
13 | code runner | 几乎可以快速运行常见的所有语言,如php,java,js... |
14 | codesnap | 快速生成苹果电脑风格的代码片断截图,分享时使用 |
序号 | 名称 | 描述 |
---|---|---|
1 | markdown preview... | markdown 实时预览 |
2 | markdownlint | markdown 语法检查器 |
序号 | 名称 | 描述 |
---|---|---|
1 | auto close tag | 标签自动关闭 |
2 | auto rename tag | 标签自动更名 |
3 | indent-rainbow | 以不同颜色显示代码缩进 |
4 | css peek | 查看并跳转到 css 定义位置 |
5 | html css support | css 自动智能补齐 |
6 | intellsense for css ... | html 中的 css 智能提示 |
7 | easy less | less 实时编译 |
8 | px-to-viewport | px 自动转 vw |
9 | svg preview | svg 预览器 |
10 | tailwind css ... | 无需离开 html 就可快速构建出现代网页 |
11 | tabout | 按 tab 就可快速跳到下一下,或跳出/越过括号等 |
序号 | 名称 | 描述 |
---|---|---|
1 | bracket pair ... | 括号高亮配对提示 |
2 | javascript(es6) code snippets | 常用 js 代码片断 |
3 | node-snippets | 常用 node 代码片断 |
4 | quokka.js | js/es6 代码语法实时检查/执行器(续命法宝) |
5 | rest client | 可不离开 vscode 环境进行 api 请求测试 |
6 | eslint | js 代码质量智能分析器 |
7 | vetur | vue 语法高亮,智能感知,emmet 等 |
8 | vue3 snippets | vue3 常用代码片断 |
9 | vue-helper: vue-helper | 在扩展中使用的 vue 提示,如 element ui |
序号 | 名称 | 描述 |
---|---|---|
1 | php intelephense | php 语法提示/自动补齐 |
2 | php intellisense | php 代码跟踪/重构/自动完成 |
3 | php debug | php 代码调试器 |
4 | php docbloker | php 生成块级注释 |
5 | vscode-database | vscode 数据库 SQL 支持插件 |
字体名称 | 描述 | 支持连写 |
---|---|---|
Fira Code | 喜欢的真喜欢,讨厌的真讨厌 | 支持 |
JetBrains Mono | JetBrains 出品,免费 | 支持 |
vscode
中进行配置: settings.json
# 将Fira Code 字体放在第一个
"editor.fontFamily": "'Fira Code',Consoles, 'Courier New', monospace",
# 打开允许连写开关
"editor.fontLigatures": true,
本文来自:@PHP中文网公众号
第一步:下载https://github.com/oldj/SwitchHosts/releases
第二步:自选适合的方法获取IPhttps://github.com/ineo6/hosts
类型 | 说明 | 版本 | |
---|---|---|---|
类/接口 | 名称值必须为指定类和接口的实例化对象 instanceof | ||
self | 值必须是用于类型声明相同类的 instanceof 。 仅可在类中使用。 | ||
parent | 值必须是用于类型声明父级类的 instanceof , 仅可在类中使用。 | ||
array | 值必须为 array。 | ||
callable | 值必定是一个有效的 callable。 不能用于类属性的类型声明。 | ||
bool | 值必须为一个布尔值。 | ||
float | 值必须为一个浮点数字。 | ||
int | 值必须为一个整型数字。 | ||
string | 值必须为一个 string。 | ||
iterable | 值必须为 array 或 instanceof Traversable。 | PHP 7.1.0 | |
object | 值必须为object。 | PHP 7.2.0 | |
mixed | 值可以为任何类型。 | PHP 8.0.0 |
自 PHP 7.1.0 起,类型声明允许前置一个问号 (?) 用来声明这个值允许为指定类型,或者为 null。
还可以组合简单类型为复合类型。 PHP 支持以下方式复合类型:
void 是一个返回类型,用于标识函数没有返回值。 它不能是联合类型的一部分。 PHP 7.1.0 起可用。
https://www.php.net/manual/zh/language.types.declarations.php
数据查询语言(Data Query Language, DQL
)保留字SELECT
、FROM
,WHERE
,GROUP BY
,HAVING
和ORDER BY
(查询操作)。
数据定义语言 (Data Definition Language, DDL
) CREATE
、ALTER
、DROP
三个语法所组成(对表结构操作)。
数据操纵语言(Data Manipulation Language, DML
)INSERT
、UPDATE
、DELETE
三种指令为核心(对表内数据操作)。
数据控制语言 (Data Control Language
) 由 GRANT
和 REVOKE
两个指令组成(权限管理)。
它的语句,像DECLARE CURSOR
、FETCH INTO
和UPDATE WHERE CURRENT
用于对一个或多个表单独行的操作。
包括BEGIN TRANSACTION
、COMMIT
和ROLLBACK
(事务控制)。
M1
版:
https://pan.baidu.com/s/1C3-aZv7-uRXBt7wQCS0Q2w 提取码: wcoi
Intel
版:
链接: https://pan.baidu.com/s/1NKxce4YG7nK0mqmcQlltgg 提取码: bf3i
一般来说在Worker::runAll();
调用前运行的代码都是在主进程运行的,onXXX
回调运行的代码都属于子进程。注意写在Worker::runAll();
后面的代码永远不会被执行。
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
// 运行在主进程
$tcp_worker = new Worker("tcp://0.0.0.0:2347");
// 赋值过程运行在主进程
$tcp_worker->onMessage = function(TcpConnection $connection, $data)
{
// 这部分运行在子进程
$connection->send('hello ' . $data);
};
Worker::runAll();
注意:
1、不要在主进程中初始化数据库、memcache
、redis
等连接资源,因为主进程初始化的连接可能会被子进程自动继承(尤其是使用单例的时候),所有进程都持有同一个连接,服务端通过这个连接返回的数据在多个进程上都可读,会导致数据错乱。同样的,如果任何一个进程关闭连接(例如daemon
模式运行时主进程会退出导致连接关闭),都导致所有子进程的连接都被一起关闭,并发生不可预知的错误,例如mysql gone away
错误。
2、推荐在onWorkerStart
里面初始化连接资源。
Deprecated: Method ReflectionParameter::getClass() is deprecated in /vendor/topthink/think-container/src/Container.php on line 450
Script @php think service:discover handling the post-autoload-dump event returned with error code 255
这是因为在PHP8.0
以后反射类ReflectionParameter::getClass()
已弃用,变更为getType()
。
只要找到文件vendor/topthink/think-container/src/Container.php
修改替换即可。
如下图:
详情见:https://github.com/top-think/framework/commit/df4a07d2f51307a6fabdf75dc5b4b7f8b0ad8af8