Giter Club home page Giter Club logo

awesome-tools's Introduction

逆天开发库

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

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

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

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

1.Web

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

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

1.1.多平台

逆天点评:目前来说:Taro市面上的资料比MPVue略多,可能从填坑躺雷角度来说Taro更成熟(毕竟早几年出来)chameleon正在观察中

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.1.4.Flutter(APP)

Flutter快速入门demo

https://github.com/alibaba/flutter-go

导图

PS:可以把它当做flutter开发者帮助APP,里面包含flutter常用140+组件的demo演示与中文文档,你可以把它作为使用Flutter的示例

1.2.xxx


2.Python

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

2.1.调试

2.1.1.PySnooper

代替print输出的PY调试库:PySnooper

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

2.1.2.loguru

Python简化版日志库

https://github.com/lotapp/loguru

2.1.3.Pylance

静态类型检测工具(Pyright的代替品)

https://github.com/microsoft/pylance-release

PS:pyright:https://github.com/Microsoft/pyright

2.1.4.other

【推荐】可视化的方式来实时追踪Python代码

https://github.com/lotapp/livepython

livepython

PS:之前有介绍过VSCode的一款插件Python Preview

【推荐】Python进度条库:监测代码执行进度

https://github.com/lotapp/tqdm

pypress

2.2.Asyncio

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

2.3.优化

2.3.1.Numpy and Pandas

todo

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.3.Cython

【推荐】Python小改动就能生成C代码

https://github.com/cython/cython

Cython 语言是 Python 的一个超集,它包含有两种类型的对象:

参考文章:https://cloud.tencent.com/developer/article/1476110

  1. Python 对象就是我们在常规 Python 中使用到的那些对象,诸如数值、字符串、列表和类实例等等。
  2. Cython C 对象就是那些 C 和 C++ 对象,诸如双精度、整型、浮点数、结构和向量,它们能够由 Cython 在超级高效的低级语言代码中进行编译。

eg:Python代码:

# test.py
def test(x):
     y = 1
     for i in range(x+1):
        y *= i
     return y

优化后的Cython代码:

# test.pyx
cpdef int test(int x):
     cdef int y = 1
     cdef int i
     for i in range(x+1):
         y *= i
     return y

创建一个 setup.py 文件,该文件将Cython代码编译为C代码

from distutils.core import setup
from Cython.Build import cythonize

setup(ext_modules = cythonize('run_cython.pyx'))
# 编译命令:python setup.py build_ext --inplace

2.4.测试

2.4.1.代码检测

1.Sonar

业内比较常用的是SonarQube

https://www.sonarqube.org/features/multi-languages/

图示

2.Bandit

Python代码安全漏洞检测工具

https://github.com/lotapp/bandit

参考文章:https://www.freebuf.com/sectool/204995.html

3.PyType

谷歌开源的Python代码的静态类型分析器

https://github.com/lotapp/pytype

4.Other

监视Python代码的内存使用情况的库:

https://github.com/lotapp/memory_profiler


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.1.Sharding-JDBC(常用)

Sharding-JDBC之前是当当开源的,后来用的人多了,生态圈完善了之后就贡献给了Apache

https://github.com/lotapp/Sharding-JDBC

架构

对比图: 对比

3.2.DBProxy(基于Atlas) or Zebra

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

https://github.com/lotapp/DBProxy

点我看手册:

管理

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

https://github.com/lotapp/Atlas

扩展:美团还有一款Java开发的数据库中间件:Zebra

https://github.com/Meituan-Dianping/Zebra

架构

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

架构

3.5.Other

DAL是携程框架部开发的数据库访问框架,支持代码生成和水平扩展

https://github.com/lotapp/dal

  1. Dal的定位是数据库访问层。是以数据访问类(dao)的形式出现。Dal包括生成的dao代码和dal client底层api。Dal底层使用标准的数据库访问协议访问实际的数据库。
  2. Dal本身不是数据库,也不实现数据库协议。Dal依赖具体的数据库实现数据访问的工作。
  3. Dal主要功能是ORM,sharding等。Dal支持简单的基于单库的事务,但dal不支持分布式事务
  4. Dal也不支持数据库同步工作。数据库同步请使用数据库自带或第三方工具

PS:Net和Java用的比较多些

4.binlog

4.1.Canal

【推荐】阿里巴巴mysql数据库binlog的增量订阅组件

https://github.com/LessChina/canal

Golang:https://github.com/CanalClient/canal-go
NetCore:https://github.com/CanalClient/CanalSharp

架构

基于日志增量订阅&消费支持的业务:

  1. 数据库镜像
  2. 数据库实时备份
  3. 多级索引 (卖家和买家各自分库索引)
  4. search build
  5. 业务cache刷新
  6. 价格变化等重要业务消息

原理相对比较简单:

  1. canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
  2. mysql master收到dump请求,开始推送binary log给slave(也就是canal)
  3. canal解析binary log对象(原始为byte流)

PS:支持kafka消息投递 and 支持prometheus监控

1.MySQL配置:

[mysqld]
log-bin=mysql-bin # 添加这一行就ok
binlog-format=ROW # 选择row模式
server_id=1 # 配置mysql replaction需要定义,不能和canal的slaveId重复

canal的原理是模拟自己为mysql slave,所以这里一定需要做为mysql slave的相关权限:(针对已有的账户可直接通过grant)

CREATE USER canal IDENTIFIED BY 'canal';  
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;

2.建立与Canal的连接demo: client

Install-Package CanalSharp.Client

//canal 配置的 destination,默认为 example
var destination = "example";
//创建一个简单CanalClient连接对象(此对象不支持集群)传入参数分别为 canal地址、端口、destination、用户名、密码
var connector = CanalConnectors.NewSingleConnector("127.0.0.1", 11111, destination, "", "");
//连接 Canal
connector.Connect();
//订阅,同时传入Filter,如果不传则以Canal的Filter为准。Filter是一种过滤规则,通过该规则的表数据变更才会传递过来
connector.Subscribe(".*\\\\..*");
//获取数据但是不需要发送Ack来表示消费成功
connector.Get(batchSize);
//获取数据并且需要发送Ack表示消费成功
// connector.GetWithoutAck(batchSize);

3.测试

insert into test values(1000,'111');
update test set name='222' where id=1000;
delete from test where id=1000;

client

Kafka接入参考:https://github.com/alibaba/canal/wiki/Canal-Kafka-RocketMQ-QuickStart


阿里巴巴分布式数据库同步系统

https://github.com/alibaba/otter

架构

原理描述:

  1. 基于Canal开源产品,获取数据库增量日志数据
  2. 基于zookeeper,解决分布式状态调度的,允许多node节点之间协同工作.
  3. 典型管理系统架构,manager(web管理)+node(工作节点)
    • manager运行时推送同步配置到node节点
    • node节点将同步状态反馈到manager上

PS:解决异地机房数据同步问题

5.运维

MySQL常用工具包

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-online-schema-change --alter "DDL语句" --execute --user=用户名 --password=密码 D=数据库名,t='表名'不加锁的情况下修改表结构在线DDL修改工具
  12. pt-slave-find --host=localhost --user=root --password=密码:查找mysql的从库和同步状态
  13. 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

完毕!
SQLServer常用工具包

一般都是使用RedGate的工具:www.red-gate.com

PS:就是出NET Reflector的那家公司

RedGate

5.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

6.测试

6.1.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

命令行工具

1.命令修复

在 Linux 命令行中,当你输入的命令有错误后,直接输入 fuck 就可以自动执行修复后的命令

https://github.com/lotapp/thefuck

2.简化版帮助文档

【推荐】洁版linux命令帮助工具:tldr

https://github.com/lotapp/tldr

6.1.运维基础

6.1.1.内网映射:nps(推荐)

【推荐】又一款内网穿透神器:提供服务端和客户端以及UI

https://github.com/LessChina/nps

go get -u github.com/cnlh/nps
go build cmd/nps/nps.go # 服务端程序
go build cmd/nps/npc.go # 客户端程序

图示


6.2.监控相关

6.2.1.OpenFalcon(潜力股)

【推荐】小米监控:Open-Falcon

https://github.com/open-falcon/falcon-plus/

中文文档:http://book.open-falcon.org/zh_0_2/

PS:以前最经典的就是ZabbixNagios


6.3.容器系列

6.3.1.镜像分析

【推荐】docker镜像分析工具:可以理解为dive的GUI

https://github.com/LessChina/diving

PS:基于dive来分析docker镜像,界面化展示了镜像每层的变动(增加、修改、删除等)、用户层数据大小等信息

demo

【推荐】用来探索docker镜像背后的每一层文件系统,以及发现缩小镜像体积方法的命令行工具(启动命令:dive 镜像名

https://github.com/LessChina/dive

dive

分析正在运行的Docker容器的资源使用情况和性能特征

https://github.com/LessChina/cadvisor


k8s容器关系依赖可视化组件(通过图的方式解释微服务之间复杂的相互依赖关系)

https://github.com/lotapp/scope

# 安装
sudo curl -L git.io/scope -o /usr/local/bin/scope
sudo chmod a+x /usr/local/bin/scope
scope launch
# 最后访问 http://localhost:4040

scope

6.3.2.镜像压缩

【推荐】不改变内容缩小Docker镜像

https://github.com/lotapp/docker-slim

PS:自动缩减docker镜像的体积的工具,方便分发

eg:docker-slim build --http-probe your-name/your-app

# 以NodeJS镜像为例:
from ubuntu:16.04 - 432MB => 14MB (缩减了 30.85 倍)

from debian:jessie - 406MB => 25.1MB (缩减了 16.21 倍)

from node:alpine - 66.7MB => 34.7MB (缩减了 1.92 倍)

6.3.3.镜像管理

【推荐】基于Docker的持续集成平台

https://github.com/lotapp/drone

drone

【推荐】企业级管理平台

https://github.com/lotapp/rancher

Docker终端管理工具

https://github.com/lotapp/docui

# 安装命令:
go get -d github.com/skanehira/docui
cd $GOPATH/src/github.com/skanehira/docui
GO111MODULE=on go install

docui

更傻瓜式的:【轻量级】带命令行 UI 的 docker 命令行 管理工具:

https://github.com/lotapp/lazydocker

lazydocker

6.4.云服务系

6.4.1.PaaS

【推荐】好雨开源的生产级无服务器PaaS

https://github.com/lotapp/rainbond

文档地址:https://www.rainbond.com/docs/

paas

6.4.2.SaaS


IDE

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

1.VSCode推荐插件

1.1.Public

  1. Markdown:Markdown All in One
    • MarkDown To PDF:md2pdf
  2. JetBrains快捷键:IntelliJ IDEA Keybindings
  3. Git历史插件:Git History
  4. 微软开源的AI插件支持C#, C++, TypeScript/JavaScriptVisual Studio IntelliCode
  5. 文件远程编辑:Remote - SSH
  6. 项目图标: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
  5. Jupyter Notebook预览插件:VS Code Jupyter Notebook Previewer

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
  3. PHP相关:PHP IntelliSense and PHP Debug

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跳转到最后一行

awesome-tools's People

Contributors

lotapp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.