Skip to content

asd12l/awesome-tools

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 

Repository files navigation

逆天开发库

防止失效,我都Fork一份到自己的github中,并完善了部分文档(过时请Issue下)

看文档:我的Github;看源码:原地址

PS:其实很多工具我以前曾经提过:大公司都有哪些开源项目~~~阿里,百度,腾讯,360,新浪,网易,小米等

常用解决方案https://github.com/LessChina

IDE

常用谷歌浏览器插件https://www.cnblogs.com/dunitian/p/5848931.html

1.VSCode推荐插件

1.1.Public

  1. Markdown:Markdown All in One
  2. JetBrains快捷键:IntelliJ IDEA Keybindings
  3. Git历史插件:Git History
  4. 微软开源的AI插件支持C#, C++, TypeScript/JavaScriptVisual Studio IntelliCode
  5. 项目图标:vscode-icons

PS:VSCode的Markdown All in One插件,列表选项卡只有3个空格的解决方案:

https://www.cnblogs.com/dotnetcrazy/p/10748165.html

1.2.Python

  1. 基本:Python
  2. 扩展:Python Extension Pack
  3. Python Preview:预览的时候图示执行过程
  4. 类型检查:pyright

pyright的说明:https://github.com/Microsoft/pyright

不装插件(没提示)

20190507210220.png

装了插件(有提示)

20190507210128.png

1.3.JavaScript

  1. JS、CSS压缩:Minify
  2. 给不同区块的括号上不同的色;Bracket Pair Colorizer
  3. 在谷歌浏览器中调试:Debugger for Chrome
    • 当前文件在默认浏览器中打开:open in browser
  4. 智能提示CSS与ID:HTML CSS Support
  5. 自动给CSS文件添加不同浏览器的CSS3前缀:Autoprefixer
    • PS:会删除-webkit-box-orient: vertical; 记得手动添加一下(关注git文件对比就能快速定位)
  6. px转rem:cssrem
    • PS:记得设置移动端默认字体大小:"cssrem.rootFontSize": 20
  7. less编译为css:Easy LESS
  8. 查看语法兼容性:Can I Use
    • PS:搜索html5就能找到
  9. 实时监测JS输出:Quokka.js
    • PS:只支持jsts文件
  10. 语法检测:ESLintjshintHTMLHint
  11. js文档注释:Document ThisCtrl+Alt+D
  12. CSS样式跳转:CSS Peek
  13. Vue框架智能提示:Vetur
  14. 缩写补全:JavaScript (ES6) code snippets
  15. 格式化插件:Beautify
  16. 文件版权声明:vscode-fileheader ctrl+alt+i

1.4.DataBase

  1. MySQL VSCode版IDE:MySQL
  2. SQLServer插件:mssql
  3. 支持大部分传统数据库:SQLToolsorvscode-database
  4. Redis客户端插件:Redis console

1.5.xxx

1.6.NetCore

  1. 基本:C#C# Extensions
  2. NuGet:NuGet Package Manager
  3. 函数文档注释:XML Documentation Comments(///就生成注释)
  4. IL视图:IL Viewer

other

  1. VSCode+Markdown下的快速上传插件:PicGo
    • 上传剪贴板图片:Ctrl + Alt + U
    • 上传本地的文件:Ctrl + Alt + E
  2. epub格式阅读:epub reader

2.NoteBook快捷键

Ctrl + Shift + P查看快捷键

2.1.编辑模式快捷键

快捷键 说明
Tab键 智能提示
Ctrl + / 注释、取消注释
Ctrl + Enter 执行当前Cell,停留在本Cell
Shift + Enter 执行当前Cell,并跳转到下一行
Alt + Enter 执行当前Cell,并插入一行在后面
上、下箭头 移动聚焦的代码块

2.2.命令模式快捷键

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 + 上下箭头 选中多行

2.3.设置系列

1.设置默认路径

https://www.cnblogs.com/dotnetcrazy/p/9261524.html

生成配置文件:jupyter-notebook --generate-config

打开配置文件:code ~/.jupyter/jupyter_notebook_config.py

设置默认路径:c.NotebookApp.notebook_dir = '/home/dnt/桌面/work'

2.设置服务器自定义密码:

https://www.cnblogs.com/dotnetcrazy/p/9824004.html

3.安装目录的扩展包

https://www.cnblogs.com/dotnetcrazy/p/10609041.html

4.其他系列

https://www.cnblogs.com/dotnetcrazy/p/9160514.html#2.1.编程环境

3.JetBrains系列快捷键

快捷键 说明
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 左侧导航文件重命名

4.VI快捷键:

命令摸模式下搜索/关键词

n下一个,N下一个

PS:想要不高亮显示就/xxx查找一个不存在的即可

命令摸索下替换:%s/old_str/new_str/g

命令摸索跳转G跳转到最后一行


1.Web

未来趋势:分布式无服务的前端架构

https://juejin.im/post/5cdc3dc2e51d453b6c1d9d3a

1.1.多平台

逆天点评:目前来说:Taro市面上的资料比MPVue略多,可能从填坑躺雷角度来说Taro更成熟(毕竟早几年出来)而chameleon暂时没看到显著优势(性能 or 便捷)

MPVueVue语法,TaroReact语法,看个人偏爱,这两个都是支持微信/百度/支付宝等多个小程序(一份代码多端运行,包括H5

PS:VueReact是前端两大擎天柱,国内Vue多点,国外React多点(从世界范围看,React第一,Vue第二

微信小程序官方推荐:https://github.com/Tencent/wepy

1.1.1.Taro(推荐)

【推荐】Taro京东开源的多端统一框架小程序H5ReactNative

https://github.com/LessChina/taro

逆天点评:这个之前我有提到过

最近百度小程序也比较火,大有超越微信小程序的趋势,这款也支持百度小程序和支付宝小程序了

前端大一统早就是经常提的,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

1.1.2.MPVue(潜力)

美团开发的一款基于Vue.JS的小程序开发框架

https://github.com/LessChina/mpvue

架构图:

架构

1.1.3.Chameleon

又一款多平台开发的利器:chameleon

https://github.com/lotapp/chameleon

架构图:

架构

头条小程序的案例:

https://github.com/lotapp/cml-tt-sets

1.2.xxx


2.Python

扩展:https://github.com/lotapp/awesome-python-cn

2.1.调试

2.2.Asyncio

扩展:https://github.com/lotapp/awesome-asyncio-cn

2.3.优化

2.3.1.Numpy

2.3.2.Numba

Anaconda开源的即时编译器

https://github.com/lotapp/numba

添加一个装饰器就可以了(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/gtc2019-numba

2.3.todo

3.DataBase

3.1.SQL

扩展:https://github.com/lotapp/awesome-mysql-cn

1.优化

1.1.Soar

【推荐】SQL自动优化和改写的工具

https://github.com/lotapp/soar

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替代。

拓展文章:

1.2.SQLAdvisor

【推荐】美团开源的SQL索引优化工具

https://github.com/LessChina/SQLAdvisor

# 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

jpg


2.抓包

2.1.go-sniffer

【推荐】抓包截取项目中的数据库请求并解析成相应的语句

https://github.com/lotapp/go-sniffer

demo

该工具通过抓包截取项目中的数据库、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
=======================================================================

3.中间件

3.1.MyCat(常用)

【推荐】常用中间件:Mycat(性能一直是个问题)

https://github.com/lotapp/Mycat-Server

PS:MyCat性能提升版

https://github.com/lotapp/Mycat2

3.2.DBProxy and Atlas

【推荐】美团开源数据库代理

https://github.com/lotapp/DBProxy

点我看手册:

管理

PS:3年前我提过一次360开源的MySQL中间层Atlas,美团的也是基于它的拓展

https://github.com/lotapp/Atlas

3.3.kingshard(热门)

【推荐】Go开发的高性能MySQLProxy

https://github.com/lotapp/kingshard

架构:

架构

PS:作者录制了讲解的视频:https://www.imooc.com/learn/1078

3.4.Gaea(潜力)

【推荐】小米基于mysql协议开源的数据库中间件,支持分库分表、sql路由、读写分离、连接池等基本特性

https://github.com/lotapp/Gaea

自述:分库分表方案兼容了mycatkingshard两个项目的路由方式,在设计、实现阶段参照了mycatkingshardvitess,并使用tidb parser作为内置的sql parser

架构

4.运维

MySQL常用工具包percona-toolkit

官方文档:https://www.percona.com/doc/percona-toolkit/LATEST/index.html

列几个常用的:

  1. pt-summary:查看服务器信息
  2. pt-diskstats:查看磁盘开销使用信息
  3. pt-mysql-summary --user=用户名 --password=密码:查看mysql信息
  4. pt-ioprofile:查看mysql表和文件的IO开销
  5. pt-show-grants --user=root --password=密码查看mysql授权
  6. pt-duplicate-key-checker --host=localhost --user=root --password=密码查找数据库表中重复的索引
  7. pt-deadlock-logger --user=root --password=密码 --host=localhost查看mysql死锁信息
  8. pt-query-digest /var/lib/mysql/localhost-slow.log分析慢查询日志
  9. pt-index-usage /var/lib/mysql/localhost-slow.log慢查询日志中分析索引使用情况
  10. pt-config-diff /etc/my.cnf /etc/my_master.cnf查看不同mysql配置文件的差异
  11. pt-slave-find --host=localhost --user=root --password=密码:查找mysql的从库和同步状态
  12. 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

完毕!
4.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语句
  1. Time:查询的执行时间start_time
  2. User@Host: root[root] @ localhost [] Id:11:执行 sql 的主机信息
  3. Query_time:SQL**查询时**间
  4. Lock_time锁定时间
  5. Rows_sent:所发送的行数
  6. Rows_examined锁扫描的行数
  7. 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语句:

  1. 翻页sql不一样,性能也是不一样的,越往后的页数越容易出现慢查询,而mysqldumpslow把所有翻页sql当成一个sql了
  2. 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

  1. 使用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
  2. 查看来自远程进程列表上最慢的查询:
    • pt-query-digest --processlist h=ip

PS:还有一款**mysqlsla**我没用过,所以贴个参考文章,感兴趣的同志自己研究下

https://www.cnblogs.com/fengchi/p/6187099.html

5.测试

SQLer

【推荐】根据SQL和配置文件生成接口的工具(支持SQLServer and MySQL

https://github.com/lotapp/sqler

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
}

3.2.NoSQL

3.2.1.集群系

1.Codis

【推荐】基于代理的Redis集群解决方案,支持管道和动态扩展

https://github.com/LessChina/codis

架构图:

架构

2.TwemProxy

memcached和redis的轻量级代理TwemProxy

https://github.com/lotapp/twemproxy

3.overlord

【推荐】bilibili开源的memcached和redis的集群解决方案

https://github.com/lotapp/overlord

PS:基于mesos和etcd提供的自动化缓存节点管理平台

架构图:

架构

扩展

如果不想要集群,只是扩充单机能力,那么就可以考虑Pika

PS:最好只当一个过渡使用,根据经验:360的开源维护一般都不超过2年

Pika是与redis兼容的nosql(主要解决redis由于存储数据量巨大而导致内存不够用的容量瓶颈)

https://github.com/lotapp/pika

PS:可以用在twemproxy或者codis中来实现静态数据分片

3.2.2.私有云

搜狐开源的Redis私有云平台

https://github.com/lotapp/cachecloud

架构

官方很细心提供了入门视频:http://pan.baidu.com/s/1c2mET5e

3.3.多功能工具

360开源一款多数据源SQL分析引擎:QuickSQL

https://github.com/lotapp/Quicksql

架构图

SQL数据库的通用命令行界面(支持TiDB、Cassandra、MySQL、MSSQL、Sqlite等)

https://github.com/lotapp/usql

PS:搭建在线IDE的时候可以使用


4.Spark

基于SparkSQL的即席查询服务

https://github.com/lotapp/IQL

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


5.Architecuture

5.1.常用算法

5.1.1.分布式ID

【推荐】美团开源分布式ID解决方案

https://github.com/lotapp/Leaf

架构图:

架构图

参考文章:

  1. Leaf——美团点评分布式ID生成系统
  2. Leaf:美团分布式ID生成服务开源

PS:扩展 ~ Snowflake算法

核心

5.1.2.布隆过滤


6.System

About

逆天开发库(整理更新ing)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published