防止失效,我都Fork一份到自己的github中,并完善了部分文档(过时请Issue下)
看文档
:我的Github;看源码
:原地址
PS:其实很多工具我以前曾经提过:大公司都有哪些开源项目~~~阿里,百度,腾讯,360,新浪,网易,小米等
常用解决方案:https://github.com/LessChina
常用谷歌浏览器插件:https://www.cnblogs.com/dunitian/p/5848931.html
- Markdown:
Markdown All in One
- JetBrains快捷键:
IntelliJ IDEA Keybindings
- Git历史插件:
Git History
- 微软开源的AI插件支持
C#, C++, TypeScript/JavaScript
:Visual Studio IntelliCode
- 项目图标:vscode-icons
PS:VSCode的Markdown All in One
插件,列表选项卡只有3个空格的解决方案:
- 基本:
Python
- 扩展:
Python Extension Pack
Python Preview
:预览的时候图示执行过程- 类型检查:
pyright
pyright的说明:https://github.com/Microsoft/pyright
不装插件(没提示)
装了插件(有提示)
- JS、CSS压缩:
Minify
- 给不同区块的括号上不同的色;
Bracket Pair Colorizer
- 在谷歌浏览器中调试:
Debugger for Chrome
- 当前文件在默认浏览器中打开:
open in browser
- 当前文件在默认浏览器中打开:
- 智能提示CSS与ID:
HTML CSS Support
- 自动给
CSS文件
添加不同浏览器的CSS3前缀:Autoprefixer
- PS:会删除
-webkit-box-orient: vertical;
记得手动添加一下(关注git文件对比就能快速定位)
- PS:会删除
- px转rem:
cssrem
- PS:记得设置移动端默认字体大小:
"cssrem.rootFontSize": 20
- PS:记得设置移动端默认字体大小:
- less编译为css:
Easy LESS
- 查看语法兼容性:
Can I Use
- PS:搜索html5就能找到
- 实时监测JS输出:
Quokka.js
- PS:只支持
js
和ts
文件
- PS:只支持
- 语法检测:
ESLint
、jshint
、HTMLHint
- js文档注释:
Document This
(Ctrl+Alt+D
) - CSS样式跳转:
CSS Peek
- Vue框架智能提示:
Vetur
- 缩写补全:
JavaScript (ES6) code snippets
- 格式化插件:
Beautify
- 文件版权声明:vscode-fileheader ctrl+alt+i
- MySQL VSCode版IDE:
MySQL
- SQLServer插件:
mssql
- 支持大部分传统数据库:
SQLTools
orvscode-database
- Redis客户端插件:
Redis console
- 基本:
C#
、C# Extensions
- NuGet:
NuGet Package Manager
- 函数文档注释:
XML Documentation Comments
(///就生成注释) - IL视图:IL Viewer
- VSCode+Markdown下的快速上传插件:
PicGo
- 上传剪贴板图片:
Ctrl + Alt + U
- 上传本地的文件:
Ctrl + Alt + E
- 上传剪贴板图片:
- epub格式阅读:
epub reader
Ctrl + Shift + P
查看快捷键
快捷键 | 说明 |
---|---|
Tab键 |
智能提示 |
Ctrl + / |
注释、取消注释 |
Ctrl + Enter |
执行当前Cell,停留在本Cell |
Shift + Enter |
执行当前Cell,并跳转到下一行 |
Alt + Enter |
执行当前Cell,并插入一行在后面 |
上、下箭头 |
移动聚焦的代码块 |
PS:在编辑框中按ESC
即可进入
快捷键 | 说明 |
---|---|
f |
查找替换 |
c |
复制Cell |
x |
剪贴Cell |
dd |
删除代码块 |
a |
在Cell前面插入一行 |
b |
在Cell后面插入一行 |
m |
Cell切换成Markdown |
y |
Cell切换成Code |
Enter |
进入编辑模式 |
v |
在Cell后一行粘贴Cell |
Shift + v |
在Cell前一行粘贴Cell |
Shift + 上下箭头 |
选中多行 |
1.设置默认路径:
生成配置文件:jupyter-notebook --generate-config
打开配置文件:code ~/.jupyter/jupyter_notebook_config.py
设置默认路径:c.NotebookApp.notebook_dir = '/home/dnt/桌面/work'
2.设置服务器自定义密码:
3.安装目录的扩展包:
4.其他系列:
快捷键 | 说明 |
---|---|
F6 | 调试 |
F8 | 跳过方法体 |
Alt + Enter | 导入命名空间 |
Alt + 上下箭 | 移动到上下方法 |
Alt + 鼠标选中 | 选中多行 |
Ctrl + 鼠标悬浮 | 对象信息 |
Ctrl + P | 参数提示 |
Ctrl + 空格 | 代码提示 |
Ctrl + Shift + 空格 | 显示方法预览 |
Ctrl + Shift + 上下箭 | 上下移动当前行 |
Alt + Shift + 左右箭 | 上一步下一步跳转 |
Ctrl + Alt + L | 格式化代码 |
Ctrl + Shift + [ | 折叠代码块 |
Ctrl + Shift + ] | 展开代码块 |
Ctrl + Shift + [ | 选择直到代码块开始 |
Ctrl + Shift + ] | 选择直到代码块结束 |
Ctrl + Shift + I | 快速显示定义 |
Ctrl + Shift + Enter | 在下一行插入 |
Ctrl + Alt + Enter | 在上一行插入 |
Ctrl + Delete | 删除到单词结束 |
Ctrl + Backspace | 删除到单词开头 |
Ctrl + W | 选中当前代码块 |
Ctrl + Shift + W | 取消选中代码块 |
Ctrl + Z | 返回上一步 |
Ctrl + Shift + Z | 撤销上一步 |
Ctrl + Shift + V | 打开剪贴板列表 |
Shift + F6 | 左侧导航文件重命名 |
命令摸模式下搜索:/关键词
n下一个,N下一个
PS:想要不高亮显示就/xxx查找一个不存在的即可
命令摸索下替换::%s/old_str/new_str/g
命令摸索跳转:G
跳转到最后一行
未来趋势:分布式无服务的前端架构:
逆天点评:目前来说:Taro
市面上的资料比MPVue
略多,可能从填坑躺雷
角度来说Taro
更成熟(毕竟早几年出来)而chameleon
暂时没看到显著优势(性能 or 便捷)
MPVue
是Vue
语法,Taro
是React
语法,看个人偏爱,这两个都是支持微信
/百度
/支付宝
等多个小程序(一份代码多端运行,包括H5
)
PS:Vue
和React
是前端两大擎天柱,国内Vue
多点,国外React
多点(从世界范围看,React
第一,Vue
第二
微信小程序官方推荐:https://github.com/Tencent/wepy
【推荐】Taro京东开源的多端统一框架(小程序
,H5
,ReactNative
)
逆天点评:这个之前我有提到过
最近百度小程序也比较火,大有超越微信小程序的趋势,这款也支持百度小程序和支付宝小程序了
前端大一统早就是经常提的,Taro就是这一款开发框架(采用`React`语法标准,支持`JSX`和`TypeScript`)
最重要的是有个强大的后盾~`京东`,而且这款开源的确是京东为数不多的良心之作了,希望不要和360一样,各种开源胎死腹中......
相关链接:
https://taro.aotu.io
https://nervjs.github.io/taro
https://github.com/NervJS/awesome-taro
https://nervjs.github.io/taro/docs/README.html
https://juejin.im/book/5b73a131f265da28065fb1cd
https://nerv.aotu.io
https://nervjs.github.io/docs
京东前端团队:https://aotu.io
https://github.com/NervJS
https://github.com/o2team
小程序市场分析:https://baijiahao.baidu.com/s?id=1612578358728437062
美团开发的一款基于Vue.JS的小程序开发框架:
架构图:
又一款多平台开发的利器:chameleon
架构图:
头条小程序的案例:
扩展:https://github.com/lotapp/awesome-python-cn
扩展:https://github.com/lotapp/awesome-asyncio-cn
Anaconda开源的即时编译器:
添加一个装饰器就可以了(Numba 使用 LLVM 编译器基础结构 将原生 python 代码转换成优化的机器码)
from numba import jit
# 当使用 @jit 时,请确保您的代码有 numba 可以编译的内容,比如包含库(numpy)和它支持函数的计算密集型循环。否则它将不会编译任何东西,并且您的代码将比没有使用 numba 时更慢,因为存在 numba 内部代码检查的额外开销
@jit
def function(x):
# 循环或数据密集型计算或
return x
PS:案例:https://github.com/numba/numba-examples
扩展:https://github.com/lotapp/awesome-mysql-cn
【推荐】SQL
自动优化和改写的工具
PS:Web版扩展:https://github.com/lotapp/soar-web
可以自动优化 MySQL 语法族,并且给出为什么要这样优化的理由。功能特点:
跨平台支持
目前只支持 MySQL 语法族协议的 SQL 优化
支持基于启发式算法的语句优化
支持复杂查询的多列索引优化(UPDATE、INSERT、DELETE、SELECT)
echo "select title from sakila.film" | ./soar
# Query: 25807E6B94BEA72C
★ ★ ★ ★ ☆ 80分
SELECT
title
FROM
sakila. film
## 最外层SELECT未指定WHERE条件
* **Item:** CLA.001
* **Severity:** L4
* **Content:** SELECT语句没有WHERE子句,可能检查比预期更多的行(全表扫描)。对于SELECT COUNT(\*)类型的请求如果不要求精度,建议使用SHOW TABLE STATUS或EXPLAIN替代。
拓展文章:
【推荐】美团开源的SQL索引优化工具:
# 1.帮助
sqladvisor --help
Usage:
sqladvisor [OPTION...] sqladvisor
SQL Advisor Summary
Help Options:
-?, --help Show help options
Application Options:
-f, --defaults-file sqls file(sql文件)
-u, --username username(用户名)
-p, --password password(密码)
-P, --port port(端口)
-h, --host host(ip地址)
-d, --dbname database name(数据库名)
-q, --sqls sqls(sql语句,以;分隔)
-v, --verbose 1:output logs 0:output nothing
# 2.命令使用(命令行传参时,参数名与值需要用空格隔开)
sqladvisor -h ip地址 -P 端口 -u 用户名 -p '密码' -d 数据库名 -q "sql语句" -v 1
# 3.配置文件使用
sqladvisor -f sql.cnf -v 1
cat sql.cnf
[sqladvisor]
username=xx
password=xx
host=xx
port=xx
dbname=xx
sqls=sql1;sql2;sql3....
# 注意
SQL中的子查询、or条件、使用函数的条件 会忽略不处理
命令行传入sql参数时,注意sql中的双引号、反引号等都需要用\转义。建议使用配置文件形式调用
架构图:https://tech.meituan.com/2017/03/09/sqladvisor-pr.html
【推荐】抓包截取项目中的数据库请求并解析成相应的语句:
该工具通过抓包截取项目中的数据库、redis 请求解析成相应的语句。便于调试,不要修改代码,直接嗅探项目中的数据请求。使用说明如下:
=======================================================================
[使用说明]
go-sniffer [设备名] [插件名] [插件参数(可选)]
[例子]
go-sniffer en0 redis 抓取redis数据包
go-sniffer en0 mysql -p 3306 抓取mysql数据包,端口3306
go-sniffer --[命令]
--help 帮助信息
--env 环境变量
--list 插件列表
--ver 版本信息
--dev 设备列表
[例子]
go-sniffer --list 查看可抓取的协议
=======================================================================
[设备名] : lo0 : 127.0.0.1
[设备名] : en0 : x:x:x:x:x5:x 192.168.1.3
[设备名] : utun2 : 1.1.11.1
=======================================================================
【推荐】常用中间件:Mycat
(性能一直是个问题)
PS:MyCat性能提升版
【推荐】美团开源数据库代理:
PS:3年前我提过一次360开源的MySQL中间层Atlas
,美团的也是基于它的拓展
【推荐】Go开发的高性能MySQLProxy:
架构:
PS:作者录制了讲解的视频:https://www.imooc.com/learn/1078
【推荐】小米基于mysql协议开源的数据库中间件,支持分库分表、sql路由、读写分离、连接池等基本特性:
自述:分库分表方案兼容了mycat
和kingshard
两个项目的路由方式,在设计、实现阶段参照了mycat
、kingshard
和vitess
,并使用tidb parser
作为内置的sql parser
MySQL常用工具包:percona-toolkit
官方文档:https://www.percona.com/doc/percona-toolkit/LATEST/index.html
列几个常用的:
pt-summary
:查看服务器信息
pt-diskstats
:查看磁盘开销
使用信息pt-mysql-summary --user=用户名 --password=密码
:查看mysql
的信息
pt-ioprofile
:查看mysql表和文件的IO开销
pt-show-grants --user=root --password=密码
:查看mysql授权
- 官方文档:https://www.percona.com/doc/percona-toolkit/LATEST/pt-show-grants.html
- PS:通过
--revoke
、-separate
等,可以撤消用户的特定权限
pt-duplicate-key-checker --host=localhost --user=root --password=密码
:查找
数据库表中重复的索引
pt-deadlock-logger --user=root --password=密码 --host=localhost
:查看mysql死锁信息
pt-query-digest /var/lib/mysql/localhost-slow.log
:分析慢查询日志
pt-index-usage /var/lib/mysql/localhost-slow.log
:从慢查询
日志中分析索引使用情况
pt-config-diff /etc/my.cnf /etc/my_master.cnf
:查看
不同mysql配置文件的差异
pt-slave-find --host=localhost --user=root --password=密码
:查找mysql的从库和同步状态
pt-table-checksum --user=root --password=密码
:验证
数据库复制的完整性
安装附录:
# Ubuntu:# curl https://www.percona.com/downloads/percona-toolkit/2.2.20/deb/percona-toolkit_2.2.20-1_all.deb > percona-toolkit-2.2.20.deb
# CentOS:# curl https://www.percona.com/downloads/percona-toolkit/2.2.20/RPM/percona-toolkit-2.2.20-1.noarch.rpm > percona-toolkit-2.2.20.noarch.rpm
[dnt@localhost ~]$ curl https://www.percona.com/downloads/percona-toolkit/2.2.20/RPM/percona-toolkit-2.2.20-1.noarch.rpm > percona-toolkit-2.2.20.noarch.rpm
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1700k 100 1700k 0 0 309k 0 0:00:05 0:00:05 --:--:-- 426k
[root@localhost dnt] ls
percona-toolkit-2.2.20.noarch.rpm
# Ubuntu:# sudo apt install ./percona-toolkit-2.2.20.deb -y
# CentOS:# yum install percona-toolkit-2.2.20.noarch.rpm -y
[root@localhost dnt] yum install percona-toolkit-2.2.20.noarch.rpm -y
已加载插件:fastestmirror
正在检查 percona-toolkit-2.2.20.noarch.rpm: percona-toolkit-2.2.20-1.noarch
percona-toolkit-2.2.20.noarch.rpm 将被安装
正在解决依赖关系
--> 正在检查事务
---> 软件包 percona-toolkit.noarch.0.2.2.20-1 将被 安装
--> 解决依赖关系完成
依赖关系解决
========================================================================================================================================
Package 架构 版本 源 大小
========================================================================================================================================
正在安装:
percona-toolkit noarch 2.2.20-1 /percona-toolkit-2.2.20.noarch 5.7 M
事务概要
========================================================================================================================================
安装 1 软件包
总计:5.7 M
安装大小:5.7 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : percona-toolkit-2.2.20-1.noarch 1/1
验证中 : percona-toolkit-2.2.20-1.noarch 1/1
已安装:
percona-toolkit.noarch 0:2.2.20-1
完毕!
先简单分析下慢查询日志:
# Time: 2019-05-22T21:16:28.759491+08:00
# User@Host: root[root] @ localhost [] Id: 11
# Query_time: 0.000818 Lock_time: 0.000449 Rows_sent: 5 Rows_examined: 5
SET timestamp=1558530988;
select * from mysql.user order by host; # SQL语句
Time
:查询的执行时间(start_time
)User@Host: root[root] @ localhost [] Id:11
:执行 sql 的主机信息Query_time
:SQL**查询
所耗的时**间Lock_time
:锁定时间Rows_sent
:所发送的行数Rows_examined
:锁扫描的行数SET timestamp=1558530988;
:SQL执行时间
现在可以说说工具了,推荐两款:
1.自带的慢日志分析工具:mysqldumpslow:
查询最慢的10条SQL:
mysqldumpslow -s t -t 10 /var/lib/mysql/localhost-slow.log
-s 按照那种方式排序
t: 查询时间
c:访问计数
l:锁定时间
r:返回记录
al:平均锁定时间
ar:平均访问记录数
at:平均查询时间
-t 返回多少条数据(可以理解为top n)
-g 可以跟上正则匹配模式,大小写不敏感。
PS:使用mysqldumpslow的分析结果不会显示具体完整的sql语句:
- 翻页sql不一样,性能也是不一样的,越往后的页数越容易出现慢查询,而mysqldumpslow把所有翻页sql当成一个sql了
- eg:
select * from tb_table where uid=20 group by createtime limit 10000, 1000;
==>select * from tb_table where uid=N group by createtime limit N, N;
- 不管你uid和limit怎么变,mysqldumpslow认为是一样的
2.percona-toolkit
中的 pt-query-digest
(官方文档)
分析慢查询日志:
pt-query-digest /var/lib/mysql/localhost-slow.log
- 使用tcppdump捕获MySQL协议数据,然后报告最慢的查询:
tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 port 3306 > mysql.tcp.txt
pt-query-digest --type tcpdump mysql.tcp.txt
- 查看来自远程进程列表上最慢的查询:
pt-query-digest --processlist h=ip
PS:还有一款**mysqlsla
**我没用过,所以贴个参考文章,感兴趣的同志自己研究下
【推荐】根据SQL和配置文件生成接口的工具(支持SQLServer
and MySQL
)
SQLer是一个小巧的便携式服务器,使您可以使用SQL查询编写API,以便在任何人点击时执行它,还可以让您定义验证规则,以便您可以验证请求正文/查询参数,以及使用简单的数据转换 javascript语法。 sqler使用nginx样式配置语言(HCL)和jd引擎进行自定义表达式(与传统的 SQL 生成 RESETful API 的工具不同,这个工具允许你自定义一些 API 的前、后处理,Auth 之类的行为)
// 启动命令
sqler -config=path to config file
// 配置示例
adduser {
// 参数校验
validators {
user_name_is_empty = "$input.user_name && $input.user_name.trim().length > 0"
user_email_is_empty = "$input.user_email && $input.user_email.trim(' ').length > 0"
user_password_is_not_ok = "$input.user_password && $input.user_password.trim(' ').length > 5"
}
bind {
name = "$input.user_name"
email = "$input.user_email"
password = "$input.user_password"
}
methods = ["POST"]
// 权限校验
authorizer = <<JS
(function(){
log("use this for debugging")
token = $input.http_authorization
response = fetch("http://requestbin.fullcontact.com/zxpjigzx", {
headers: {
"Authorization": token
}
})
if ( response.statusCode != 200 ) {
return false
}
return true
})()
JS
exec = <<SQL
INSERT INTO users(name, email, password, time) VALUES(:name, :email, :password, UNIX_TIMESTAMP());
SELECT * FROM users WHERE id = LAST_INSERT_ID();
SQL
}
【推荐】基于代理的Redis集群解决方案,支持管道和动态扩展:
架构图:
memcached和redis的轻量级代理TwemProxy
:
【推荐】bilibili开源的memcached和redis的集群解决方案:
PS:基于mesos和etcd提供的自动化缓存节点管理平台
架构图:
如果不想要集群,只是扩充单机能力,那么就可以考虑Pika
PS:最好只当一个过渡使用,根据经验:360的开源维护一般都不超过2年
Pika是与redis兼容的nosql(主要解决redis由于存储数据量巨大而导致内存不够用的容量瓶颈)
PS:可以用在twemproxy或者codis中来实现静态数据分片
搜狐开源的Redis私有云平台:
官方很细心提供了入门视频:http://pan.baidu.com/s/1c2mET5e
360开源一款多数据源SQL分析引擎:QuickSQL
SQL数据库的通用命令行界面(支持TiDB、Cassandra、MySQL、MSSQL、Sqlite等)
PS:搭建在线IDE的时候可以使用
基于SparkSQL
的即席查询服务
PS:即席查询:根据自己的需求,灵活的选择查询条件,系统能够根据用户的选择生成相应的统计报表
基于SparkSQL实现了一套即席查询服务,具有如下特性:
- 优雅的交互方式,支持多种datasource/sink,多数据源混算
- spark常驻服务,基于zookeeper的引擎自动发现
- 负载均衡,多个引擎随机执行
- 多session模式实现并行查询
- 采用spark的FAIR调度,避免资源被大任务独占
- 基于spark的动态资源分配,在无任务的情况下不会占用executor资源
- 支持Cluster和Client模式启动
- 基于Structured Streaming实现SQL动态添加流
- 类似SparkShell交互式数据分析功能
- 高效的script管理,配合import/include语法完成各script的关联
- 对数据源操作的权限验证
支持的数据源:hdfs、hive、hbase、kafka、mysql、es、solr、mongo
支持的文件格式:parquet、csv、orc、json、text、xml
【推荐】美团开源分布式ID解决方案:
架构图:
参考文章:
PS:扩展 ~ Snowflake算法