ubuntu配置clash
前言作为一名软件开发攻城狮,日常佛跳墙是有必要的。近期讲win电脑上安装了ubuntu系统准备作为开发的主力系统。本次记录一下如何在ubuntu (20.04)安装 clash作为访问google.com的工具。 下载clash访问到 clash的Github地址,发现访问比较慢,别急,有方法: 访问IP地址查询 然后获取到最近的访问github的IP 执行命令sudo vi /etc/hosts 写入2.74.223.119 github.comhost 再次访问github发现速度飙升,然后下载对应系统的包 启动clash 运行sudo gzip -d clash.gz 解压对应文件夹 运行sudo cp clash的解压后的地址 /usr/local/bin/clash 复制可执行文件到bin中 执行clash 生成默认的配置文件 执行cd /home/用户名/.config/clash可以看到对应的配置文件config.yaml 将你自己的配置文件修改为config.yaml 然后再次执行clash 就可以正常的使用路由规则了,如果需要后台运行执行nohup cl...
ClickHouse常用函数
前言近期项目引入了Clickhouse进行数据计算与展示,今天突然我们的PM同学来问我一个问题,怎么快速获取这十个品牌中GMV各自排名前三的SPU数据。当时想了想,一般情况下这种需求都是使用代码实现的,简直So easy,但是一旦写代码的话就没法快速获取并且以后类似的需求也没法快速响应了。 然后想到了咱们使用的是Clickhouse数据库,它自带很多函数,在经过一段时间的查询以后,发现有一个函数还是比较好用的,正好解决这种典型的分组取TOP的问题,这个函数就是groupArray(x),可以查看以下sql,看它是怎么使用的: 12345678910111213select * from (select b.bid,b.brand as brand, c[1] as top1,c[2] as top2,c[3] as top3,groupArray(3)(b.spu_name) as c,groupArray(10)(b.gmv) as d,d[1]+d[2]+d[3]+d[4]+d[5]+d[6]+d[7]+d[8]+d[9]+d[10] as gmvsum from ( ...
Github进行fork后如何与原仓库同步
前言 近期使用github给baidu/brcc提交pr,然后发现提完pr以后我如果再次修改并且baidu/brcc有其他人的更新,我的fork仓库无法同步,所以找了一些最佳实践,在此进行总结。 实现方案一般情况下,这种情况有两种做法: 将fork的仓库在你的github上删除掉,然后重新fork 通过git命令将原代码进行同步到你的代码中 实际上在github的操作中都是merge 与 merge的操作,在你只需要和原代码保持一致的情况下,可以采用第二种方案进行同步 实践步骤通过git命令将原代码同步到我fork的代码仓库中,使用merge的方法来进行操作。下面是具体的操作命令,以brcc仓库为例. 1、进入到我的本地仓库中: 1cd ~/github-me/brcc/ 2、执行命令 git remote -v 查看远程仓库的地址初始情况下,执行完命令只会存在如下两条记录 123➜ brcc git:(main) git remote -v origin git@github.com:dislazy/brcc.git (fetch)orig...
Github-pr最佳实践
Pull Request在github中的作用 主要是用来做代码reivew 从开发分支合并到环境分支 控制不同级别人员对于分支内容的提交 Pull Request在github中的三种合并分支的方法一、merge 合并1、特点 merge是指将开发分支的代码merge到目标分支 merge会产生一条对应的merge记录 merge会存在代码覆盖情况,如果产生冲突需要手动解决2、适用场景 适用于不同分支向不同目标分支合并代码的所有场景 二、squashing 压缩合并1、特点 squashing 会将开发分支中的代码commit合并为一个综合的commit squashing 会将综合的commit作为一次commitmerge到目标分支中 squashing 如果存在多分支之间切换的情况,会出现多次综合性的commit中出现重复的提交2、适用场景 适用于不同开发分支向同一目标分支合并代码的场景 三、rebase 变基合并1、特点 rebase 变基是将用户的commit插入到目标分支合适的位置 rebase和merge是不同的合并方式,它类似于cherry pic...
Mac使用Vim快捷键
一、移动光标 移动到行尾”$”,移动到行首”0”(数字),移动到行首第一个字符处”^” 移动到段首”{“,移动到段尾”}” 移动到下一个词”w”,移动到上一个词”b” 移动到文档开始”gg”,移动到文档结束”G” 跳到第n行”ngg” 或 “nG” 或 “:n” 移动光标到屏幕顶端”H”,移动到屏幕中间”M”,移动到底部”L” 二、编辑操作 光标后插入”a”, 行尾插入”A” 后插一行插入”o”,前插一行插入”O” 删除字符插入”s”, 删除正行插入”S” 光标前插入”i”,行首插入”I” 删除一行”dd”,删除后进入插入模式”cc”或者”S” 删除一个单词”dw”,删除一个单词进入插入模式”cw” 删除一个字符”x”或者”dl”,删除一个字符进入插入模式”s”或者”cl” 粘贴”p”,交换两个字符”xp” 交换两行”ddp” 复制”y”,复制一行”yy” 拷贝当前行 “yy”或者”Y” 撤销”u”,重做”ctrl + r” 删除到行尾可以使用”D”或”C” 删除当前字符 “x” “ >>”缩进所有选择的代码 “<&...
好看又好用并且安全的密码管理工具
为什么要使用密码管理工具在日常的生活中,尤其是现在发达的网络环境下,每个人都在大量的网站注册了大量的账号,除却QQ登录、微信登录等登录方式之外,绝大部分网站都支持使用账号密码登录,一旦账号多了,密码多了,发现记录密码是一件非常麻烦的事,又不敢明文保存,还经常需要用到,此时密码管理工具的作用就凸显出来了。 什么密码管理工具好用之前自己使用过keepPass的开源版,它的理念是把账号密码的数据存储在本地,起到了安全性的作用,但是这样就造成了自己有多台电脑的时候,同步密码就成了一件非常费力的事情。 在百度上搜索好用的密码管理工具,基本上无外乎KeepPass、LastPass、1Password等,好评比较高的有LastPass,但是它数据是存储在云端,但是我们知道网络上别人的数据库是不可靠的,但是那个时候没有找到能取代它的好用的工具。 直到有一天搜到了一款密码管理工具:bitwarden,相信很多人没有听说过它,一旦使用之后才发现它的强大。 为什么好用bitwarden我比较喜欢的点有三个: 界面简洁,全中文 自己搭建服务,数据完全存储在自建数据库中 有完备的设备支持:win、ma...
HashMap浅谈-基本方法
HashMap的初始化过程HashMap的初始化有两种方法: 直接使用HashMap的无参构造方法,此时初始化的容量为:DEFAULT_LOAD_FACTOR 也就是16 1234567/** * Constructs an empty <tt>HashMap</tt> with the default initial capacity * (16) and the default load factor (0.75). */ public HashMap() { this.loadFactor = DEFAULT_LOAD_FACTOR; // all other fields defaulted } 传入容量参数的有参构造方法,此时的初始化容量需要进行计算 12345678910/** * Constructs an empty <tt>HashMap</tt> with the specified initial * capacity and the...
HashMap浅谈-基本原理
HashMap的组成HashMap的内部实现是一个数组,但是它是一个特殊的数组。如下图所示: HashMap的内部结构HashMap是一个特殊的数组实现,它的数据插入并不是按照顺序逐个写入的,而是按照一种特定算法来确定写入的位置, 然后将对象进行写入,它就是散列计算,就是计算出当前key的hash值,然后对hash值做一定的操作,再计算出当前的hash对应的是哪个桶,然后再将对应的输入写入到桶内(栗子:上图中的Node1节点) 当存在同hash值时,同一个桶内的数据会采用拉链法来使桶内的数据形成一个链表结构,这样同hash的值都会保存并且不会覆盖。 当链表长度达到一定的阈值时(阈值:8),为了提高它的性能,此时会将链表转化为红黑树进行存储(栗子:上图中的Node2节点) HashMap的核心概念 HashMap的存储结构 HashMap的底层实现是一个数组,源码如下: 1234567/** * The table, initialized on first use, and resized as * necessary. When allocated, lengt...
nginx配置https和跨域设置
简介为了网站快速响应,经常需要将前端页面放在cdn上,此时就需要后端服务支持跨域访问,所以 记录一下在tengine上的配置,用于集中管理多个服务和支持服务的跨域访问设置。关于nginx的安装可以参照 这里 第一步 将配置文件进行分离使用vi nginx.conf编辑nginx的配置文件,改成如下配置 12345678910111213141516171819202122232425262728293031323334353637#user nobody;worker_processes 1;error_log logs/error.log;error_log logs/error.log notice;error_log logs/error.log info;error_log "pipe:rollback logs/error_log interval=1d baknum=7 maxsize=2G";pid logs/nginx.pid;events { worker_connections 1024; ...