安装
第三方脚本
语言参考
基础语法 变量 常量 数据类型 表达式 运算符
流程控制 自定义函数
面向对象相关 命名空间 枚举
错误和异常
纤程和生成器
注解
预定义变量 异常 接口
上下文(Context)选项和参数 支持协议和封装协议
安全和特点
session cookie
文件上传处理
连接处理 数据库持久连接
引用的解释 垃圾回收机制
知识图谱
基础语法 变量 常量 数据类型 表达式 运算符
流程控制 自定义函数
面向对象相关 命名空间 枚举
错误和异常
纤程和生成器
注解
预定义变量 异常 接口
上下文(Context)选项和参数 支持协议和封装协议
session cookie
文件上传处理
连接处理 数据库持久连接
引用的解释 垃圾回收机制
左下角齿轮图标 >> Extension 打开扩展商品搜索即可安装
主题图标
vscode-icons 图标
Atom One Dark Theme 主题
语言包
Chinese (Simplified) Language Pack for Visual Studio Code
修改侧边栏样式
CSS文件目录:/usr/share/code/resources/app/out/vs/workbench/workbench.desktop.main.css
查找 .part>.content 如图修改字体
配置文件
MySQL Syntax 语法高亮显示
NGINX Configuration Language Support 语法高亮和自动补全
Apache Conf 语法高亮
Linux Desktop File support 桌面配置语法高亮
EditorConfig for VS Code 编码风格统一配置 editorconfig文档
DotENV .env格式配置文件 高亮显示 node php的部分框架都可以用
远程插件
Remote Development 远程开发插件
Remote – Containers 链接远程docker容器
Remote – SSH ssh远程终端工具
Remote – SSH: Editing Configuration Filesms 便捷ssh配置文件
其它插件
TODO Highlight TODO 标注功能的,如你写到某一部分的代码时,其中部分的功能需要稍后再来实现,这是就可以在对应的代码处添加一个 TODO 类型的注释
search-online 在线翻译和搜索插件
GitLens — Git supercharged git可视化工具,显示代码作者和提交历史
Project Manager ctrl + shift + p 如图使用
PHP插件
PHP Intelephense 代码提示,语法检测,psr12格式化,点击自动跳转追赠方法,显示内置API的官方文档,点击直接跳转官方文档提升查手册效率
可以免费使用,有付费功能,购买后输入key
设置PHP版本
出现未定义 undefined 错误 需要到如下选项配置支持。laravel框架需要 安装laravel ide help扩展包 swoole 也需要安装swoole ide help
php-cs-fixer 代码格式化插件 ,也可以项目中使用通过composer安装
"php-cs-fixer.executablePath": "php-cs-fixer",
"php-cs-fixer.onsave": false,
"php-cs-fixer.rules": "@PSR1,@PSR1,@Symfony",
"php-cs-fixer.config": ".php_cs;.php_cs.dist",
"php-cs-fixer.allowRisky": false,
"php-cs-fixer.pathMode": "override",
"php-cs-fixer.exclude": [],
"php-cs-fixer.autoFixByBracket": true,
"php-cs-fixer.autoFixBySemicolon": false,
"php-cs-fixer.formatHtml": false,
"php-cs-fixer.documentFormattingProvider": true,
多个格式化插件冲突时 通过如下配置,设置默认格式化插件
"[php]": {
"editor.defaultFormatter": "junstyle.php-cs-fixer"
},
PHP DocBlocker PHP注释插件
配置作者和邮箱,@author触发
"php-docblocker.author": {
"name": "yangliuan",
"email": "yangliuancn@foxmail.com"
},
laravel框架插件
laravel goto view 点击跳转 视图
laravel-goto-controller 点击跳转到控制器
Laravel Snippets laravel语句提示
Laravel Blade Snippets Blade模板语法提示
laravel8.x版本如下方式写路由时可以不使用此插件
Javascript
Vetur
ESLint
"eslint.validate": [
"javascript",
"javascriptreact",
"vue"
],
"eslint.options": {
"plugins": [
"html"
]
},
搜索时包含指定目录
点击替换下的…按钮可以输入要包含和排出的文件
shell
shellcheck
详细配置见扩展详情页或github
sudo apt update && sudo apt upgrade
Software && updates => Additional Drivers 一般N
如果没有合适的去官网下载,出现卡顿等问题也可以装一下显卡驱动试试
sudo apt install nvidia-utils-530
安装N卡显示设置
sudo apt install nvidia-settings
切换显卡
可以通过指令切换 nvidia|intel|on-demand|query
sudo prime-select nvidia # select nvidia gpu
sudo prime-select intel # select intel gpu
sudo prime-select on-demand # on-demand 按需
sudo apt install gnome-tweak-tool
#ubuntu22.04
sudo apt install gnome-tweaks
sudo apt install chrome-gnome-shell #需要安装chrome浏览器
sudo apt install gnome-shell-extensions
开启关闭gnome-shell-extensions
安装dash to dock 和 TopIcons Plus 和 Drop Down Terminal
版本未更新时替代品
Dash to Dock for COSMIC (替代 dash to dock ) ddterm (替代Drop Down Terminal ) TopIconsFix (替代 TopIcons Plus)
打开上述网站,搜索并安装扩展
设置为打开即可,如上图
dash to dock 配置截图
启用Dash To Dock 后 禁用ubuntu dock,否则会导致indicator-sysmonitor插件报错
dock尺寸
图标尺寸
isloate workspace 隔离工作空间 isloate monitors 隔离显示器
ddterm
Panel Icon : none 隐藏顶部栏图标
TopiconsFix
Tray horizontal alignment (托盘图标水平对齐) right
Ubuntu AppIndicators
Tray horizontal alignment left (托盘水平左对齐)可以解决一些应用菜单无法推出的情况
Input method Panel 输入法面板扩展
https://extensions.gnome.org/extension/261/kimpanel/
系统监控,顶部栏
https://extensions.gnome.org/extension/6807/system-monitor
终端工具
https://extensions.gnome.org/extension/6307/quake-terminal
gnome出现问题,可以尝试重新安装
sudo apt-get install --reinstall ubuntu-desktop
gnome控制中心设置失效可以重新安装
sudo apt install gnome-control-center
打开文件 /etc/sysctl.conf,增加以下设置
#该参数设置系统的TIME_WAIT的数量,如果超过默认值则会被立即清除
net.ipv4.tcp_max_tw_buckets = 20000
#定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数
net.core.somaxconn = 65535
#对于还未获得对方确认的连接请求,可保存在队列中的最大数目
net.ipv4.tcp_max_syn_backlog = 262144
#在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
net.core.netdev_max_backlog = 30000
#能够更快地回收TIME-WAIT套接字。此选项会导致处于NAT网络的客户端超时,建议为0
net.ipv4.tcp_tw_recycle = 0
#系统所有进程一共可以打开的文件数量
fs.file-max = 6815744
#防火墙跟踪表的大小。注意:如果防火墙没开则会提示error: "net.netfilter.nf_conntrack_max" is an unknown key,忽略即可
net.netfilter.nf_conntrack_max = 2621440
运行 sysctl -p
即可生效。
设置系统打开文件数设置,解决高并发下 too many open files
问题。此选项直接影响单个进程容纳的客户端连接数。
Soft open files 是Linux系统参数,影响系统单个进程能够打开最大的文件句柄数量,这个值会影响到长连接应用如聊天中单个进程能够维持的用户连接数, 运行ulimit -n
能看到这个参数值,如果是1024,就是代表单个进程只能同时最多只能维持1024甚至更少(因为有其它文件的句柄被打开)。如果开启4个进程维持用户连接,那么整个应用能够同时维持的连接数不会超过4*1024个,也就是说最多只能支持4×1024个用户在线可以增大这个设置以便服务能够维持更多的TCP连接。
Soft open files 修改三种方法:
第一种:在终端直接运行 ulimit -HSn 102400
,然后重启workerman。
这只是在当前终端有效,退出之后,open files 又变为默认值。
第二种:在/etc/profile
文件末尾添加一行 ulimit -HSn 102400
,这样每次登录终端时,都会自动执行。更改后需要重启workerman。
第三种:令修改open files的数值永久生效,则必须修改配置文件:/etc/security/limits.conf
. 在这个文件后加上:
* soft nofile 1024000
* hard nofile 1024000
root soft nofile 1024000
root hard nofile 1024000
这种方法需要重启机器才能生效。
开启BBR算法
参考
GOOGLE 2016年出的TCP拥塞控制算法,解决问题提高网络吞吐量,案例Google在YouTube上应用该算法,将全球平均的YouTube网络吞吐量提高了4%,在一些国家超过了14%
BBR不会将丢包视为拥塞信号,这会导致高重传率的保持,如果传递的内容对丢包敏感,那么BBR可能不是一个好选择,这种情况下,内容提供商需要仔细检查吞吐量和体验质量之间的权衡
BBR的公平性存在问题,它会抢占Cubic算法的带宽(取决于瓶颈缓冲区的大小)
如何开启BBR
使用laravel本地存储文件时,通常存放到public磁盘,即根目录下storage/app/public
执行命令 创建软链接后才可以通过公共访问文件
php artisan storage:link
laravel 7以上自定义软链接目录
项目迁移更换服务器后,磁盘的挂载目录变了,导致软链接路径不能生效了需要更新软连接
方法一
通过ln命令更新
ln –snf [新的源文件或目录] [目标文件或目录]
方法二
使用php artisan storage:link命令重新生成,首先要删除原先的软链接目录,删除软链接时一定要注意路径后边不能带/
cd /laravel根目录/public
rm -rf storage 正确的删除软链接方式
rm -rf storage/ 错误的删除软链接方式,会删除软链接对应的真实目录导致文件丢失
平均负载是指单位时间内,系统处于可运行状态(R 状态 Running 或 Runnable)和不可中断状态(Uninterruptible Sleep,也称为 Disk Sleep) 的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系
进程状态
linux中断机制
参考
操作系统需要管理外设,但是外设的速度远远低于CPU的速度,所以我们需要一种机制来弥补这种速度鸿沟,提高CPU的效率。
为此我们引入了中断机制,让外设在需要操作系统处理外设相关事件的时候,能够主动通知操作系统,即打断操作系统和应用的正常执行,让操作系统完成外设的相关处理,然后在恢复操作系统和应用的正常执行。
当CPU收到中断或者异常的事件时,它会暂停执行当前的程序或任务,通过一定的机制跳转到负责处理这个信号的相关处理例程中,在完成对这个事件的处理后再跳回到刚才被打断的程序或任务中
硬中断
由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。
软中断
为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。
buff/cache
过高时会导致物理内存占用过高
Swap交换分区
Swap分区在系统的物理内存不够用的时候,把硬盘内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中
虚拟内存
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。目前,大多数操作系统都使用了虚拟内存,如Windows家族的“虚拟内存”;Linux的“交换空间”等。
参考
json_decode produces error “Single unpaired UTF-16 surrogate in unicode escape” and returns null
php json函数只能支持utf-8编码
在调取其它语言接口时,json_decode报错Single unpaired UTF-16 surrogate in unicode escape
解决方法一
正则替换掉无效\u开头的unicode字符,然后json_decode
$contents = preg_replace('/(?<!\\\)\\\u[a-f0-9]{4}/iu', '', $contents);
$json = json_decode($contents, true);
解决方法二
自定义json_decode方法
public function customJsonDecode($json)
{
$comment = false;
$out = '$x=';
for ($i = 0; $i < strlen($json); $i++)
{
if (!$comment)
{
if (($json[$i] == '{') || ($json[$i] == '[')) $out .= ' array(';
else if (($json[$i] == '}') || ($json[$i] == ']')) $out .= ')';
else if ($json[$i] == ':') $out .= '=>';
else
$out .= $json[$i];
}
else
$out .= $json[$i];
if ($json[$i] == '"' && $json[($i - 1)] != "\\")
$comment = !$comment;
}
eval($out . ';');
return $x;
}