Vscode

常用快捷键

  • cmd+P: 打开命令面板

    1. 直接输入文件名,跳转到文件
    2. ? 列出当前可执行的动作
    3. : 跳转到行数,也可以 Cmd+G 直接进入
    4. > 显示并运行命令
    5. @ 函数名跳转
  • 光标『多点编辑』

    1. option+click或option+cmd+up/option+cmd+down
    2. cmd+D: 搜索并选中下一个匹配值
    3. 批量设置光标:cmd+shift+鼠标左键 或 cmd+鼠标左键
  • shift+cmd+; : 查找历史命令

SonarQube 代码质量管理平台

SonarLint 与 SonarQube

  • SonarLint 仅存在于 IDE(IntelliJ,Eclipse 和 Visual Studio)中。 其目的是在您键入代码时提供即时反馈。 为此,它专注于您要添加或更新的代码。
  • SonarQube 是一个用于管理源代码质量的开放平台,它可以从多个维度检测代码质量,可以快速的定位代码中潜在的或者明显的 Bug、错误。它支持包括 Java、Python、Php、C/C++、C#、HTML、JavaScript、PL/SQL、Objective C 等二十多种编程语言的代码质量管理与检测。可作为我们日常开发中检测代码质量的重要工具。为此,它会定期分析项目的所有源代码行。

简单的说 SonarLint 是 SonarQube 的单机版本。

PHP 常用函数

时间函数

  1. 常用代码

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    date_default_timezone_set('PRC'); //默认时区
    echo "今天:",date("Y-m-d",time()),"<hr>";
    echo "昨天:",date("Y-m-d",strtotime("-1 day")), "<hr>";
    echo "明天:",date("Y-m-d",strtotime("+1 day")), "<hr>";
    echo "一周后:",date("Y-m-d",strtotime("+1 week")), "<hr>";
    echo "一周零两天四小时两秒后:",date("Y-m-d G:H:s",strtotime("+1 week 2 days 4 hours 2 seconds")), "<hr>";
    echo "下个星期四:",date("Y-m-d",strtotime("next Thursday")), "<hr>";
    echo "上个周一:".date("Y-m-d",strtotime("last Monday"))."<hr>";
    echo "一个月前:".date("Y-m-d",strtotime("last month"))."<hr>";
    echo "一个月后:".date("Y-m-d",strtotime("+1 month"))."<hr>";
    echo "十年后:".date("Y-m-d",strtotime("+10 year"))."<hr>";
    
  2. 一天前:换算成小时为单位,当前时间减去24h后,为一天前

Mysql 优化

慢查询优化

  1. 根据 where 条件,组建联合索引『每一次查询只能用上一个索引,所以需要好好利用联合索引』
  2. 使用强制索引,使用 explain 分析查询 sql 时,需要关注 key、rows、filtered 这三个字段,rows 越小表示扫描记录数越少,filtered 越大表示过滤效果越好。

限制 SQL 的最大执行时间

持续集成工作流

互联网软件的开发和发布,已经形成了一套标准流程。

持续集成

持续集成(Continuous integration,简称CI)指的是,频繁地(一天多次)将代码集成到主干。

Restful架构

什么是RESTful架构

用 URL 定位资源,用 HTTP 动词描述操作

  1. 每一个URI代表一种资源;

  2. 客户端和服务器之间,传递这种资源的某种表现层;

  3. 客户端通过五个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

DevOps 与 NoOps

DevOps

DevOps是开发和运维的融合,是开发和运维工程师共同协作,定义应用从设计到交付全生命周期过程的实践。

NoOps

  • NoOps的意思是无须操作。它的理念是去掉所有的平台管理部分,从而降低开发人员与基础设施之间的摩擦。
  • NoOps的目的是定义一个不需要开发与运维相结合,就可以使流程顺利进行的过程。NoOps有一个目标:通过设计使所有东西都可以完成部署,而不需要任何人参与。
  • NoOps大致的方法如下:开发人员将代码提交到代码库就已经完成了全部的部署。看起来与连续交付非常相似,但它所包含的范围更大,这里面不仅有应用程序,还包含了基础设施的部署。

其实无所谓DevOps或NoOps。最根本的驱动是:用尽可能少的维护工作,去创建智能的基础设施,并将一切自动化。

Socket && WebSocket

一般网络编程都叫Socket编程,网络编程通常采用的是经典的客户端-服务器模型(CS 模型)。

网络编程无非简单来看就是 TCP编程 和 UDP编程。

Socket

每一次建立 socket 连接后,都会生成一个 SessionId,便于标识通讯中的客户端和服务端。(SessionId 应保证分布式唯一)

TCP/IP

协议的概念

从应用的角度出发,协议可理解为『规则』,是数据传输和数据解释的规则。

协议如同人与人的对话

OSI 参考模型和 TCP/IP 协议

网络分层架构目的:为了减少协议设计的复杂性,大多数网络模型均采用分层的方式来组织。每一层都有自己的功能,就想建筑物一样,每一层都靠下一层支持。每一层利用下一层提供的服务来为上一层提供服务,本层服务的实现细节对上层屏蔽。好处:分工明确。

OAuth 与 OpenID

概念

开放授权(OAuth)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。