晨曦's Blog

This is a window to the soul

microsoft remote desktop for mac

根据【官方文档】所示,两种方式获取

  1. Mac 应用应用商店下载 (只支持美区)
  2. Mac beta 版,通过【appcenter】下载
  3. 商店之外正版下载,参考:Microsoft Remote Desktop now available outside the App Store

Mos

一个用于在 macOS 上平滑你的鼠标滚动效果或单独设置滚动方向的小工具,让你的滚轮爽如触控板

Mos

Redis 客户端

Redis 客户端众多,安利两款自己用过,还觉得不错的

AnotherRedisDesktopManager

Medis


未完待续

LCN 简介

  1. LCN 分布式事务框架的核心功能是对本地事务的协调控制,框架本身并不创建事务,只是对本地事务做协调控制
  2. 因此该框架与其他第三方的框架兼容性强,支持所有的关系型数据库事务,支持多数据源,支持与第三方数据库框架一块使用
  3. 在使用框架的时候只需要添加分布式事务的注解即可,对业务的侵入性低

LCN 核心步骤

  1. 创建事务组,是指在事务发起方开始执行业务代码之前先调用 TxManager 创建事务组对象,然后拿到事务标示 GroupId 的过程
  2. 添加事务组,添加事务组是指参与方在执行完业务方法以后,将该模块的事务信息添加通知给 TxManager 的操作
  3. 关闭事务组,是指在发起方执行完业务代码以后,将发起方执行结果状态通知给 TxManager 的动作。当执行完关闭事务组的方法以后,TxManager 将根据事务组信息来通知相应的参与模块提交或回滚事务

LCN 事务控制原理

LCN 事务控制原理是由事务模块 TxClient 下的代理连接池与 TxManager 的协调配合完成的事务协调控制 TxClient 的代理连接池实现了 javax.sql.DataSource 接口,并重写了 close 方法,事务模块在提交关闭以后 TxClient 连接池将执行” 假关闭” 操作,等待 TxManager 协调完成事务以后在关闭连接

阿里云 GTS 全局事务服务

  1. 全局事务服务(Global Transaction Service,简称 GTS)是一款高性能、高可靠、接入简单的分布式事务中间件,用于解决分布式环境下的事务一致性问题
  2. GTS 支持 DRDS、RDS、MySQL 等多种数据源,可以配合 EDAS 和 SpringCloud 等微服务框架使用, 兼容 MQ 实现事务消息。通过各种组合,可以轻松实现分布式数据库事务、多库事务、消息事务、服务链路级事务等多种业务需求

GTS 模拟场景演示

性能

GTS 通过大量创新,解决了事务 ACID 特性与高性能、高可用、低侵入不可兼得的问题。单事务分支的平均响应时间在 2ms 左右,3 台服务器组成的集群可以支撑 3 万 TPS 以上的分布式事务请求

LCN 性能参考:http://springcloud.cn/view/374 在众多开源分布式事务框架中,LCN 性能是处于前列的

LCN 总结

优点:

  • 性能优秀
  • 可靠性强
  • LCN 实现的分布式事务处理模式,编码复杂性和入侵代码量低

缺点:

  • 需额外部署 tx-manager 服务节点
  • 由于需要 lock 资源这种处理方式,如果集中更新某几个热门商品时,LCN 的性能衰减量大于 TCC 模式
  • 服务超时时,会造成其他服务的资源被锁住,比如支付服务超时过程中,相关商品库存会一直无法操作
  • 不支持 SpringCloud 2.0.0 及以上版本(目前已通过修改源码实现支持)

GTS 总结

优点:

  • 性能优秀 (有淘宝双十一作为示例)
  • 可靠性强
  • 代码入侵性小(相比 LCN 多一点)
  • 支持 SpringCloud 2.0.0 及以上版本

缺点:

  • 无法在本地进行测试
  • 只能在阿里云内网使用,或者购买专有云

前记

博客 hexo 一直部署在 Github Pages,方便、稳定非常 nice,但是最近发现打开博客的速度比较慢。于是想着能否通过多部署,或者国内 CDN 加快访问速度

加速方案

  1. 利用 Gitee Pages 作为国内部署,但是 Gitee Pages 免费版不支持 https,遂作罢
  2. 利用 Coding Pages 作为国内部署,支持 Let's Encrypt https,但发现所加速的 IP 均为国外 IP,有时也比较的慢,于是尝试在国内找 cdn 加速就有了下面方案的对比
  3. 百度云:免费版不支持 https,遂作罢
  4. 腾讯云:没有免费额度,支持上传自有证书,遂作罢
  5. 七牛 CDN:免费 10G 额度,免费版不支持 https,遂作罢
  6. 又拍云 (在用方案,目前最完美方案):支持 Let's Encrypt 加入又拍云联盟 10G 空间 + 15G 流量额度

后记

加速过后速度杠杠的

前记

最近由于项目比较大而且附件比较多,在服务器上选择了外挂 Nas 盘符来存储项目文件

目前服务器和 Nas 都是用的阿里的服务,这里说一下阿里在 Linux 中自动挂载的注意事项,在 /etc/fstab 配置文件中添加以下命令:

1
fid-xxxx.cn-hangzhou.nas.aliyuncs.com:/ /mnt  nfs4 vers=4.0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,_netdev,noresvport 0 0

重点来了,请注意:

命令中的 fid-xxxx.cn-hangzhou.nas.aliyuncs.com 为挂载点的域名

我第一次的时候就把 xxxx.cn-hangzhou.nas.aliyuncs.com 替换为了挂载点的域名,而保留了 fid

实现

按阿里官方说明为重启时自动挂载 NAS 文件系统,如果需要及时生效可以运行以下命令而不用重启:

1
2
sudo mount -a
-a:将 /etc/fstab 中定义的所有档案系统挂上

查看 npm 全局包

1
2
npm ll -g
npm la -g

上面这两个命令会显示包的简介和 git 地址和 readme 信息

npm ls -g 只会显示包名和版本

depth 参数代表依赖关系最大深度

如:npm ls -g --depth 0 表示只显示最顶层

前记

去年团建的时候公司一直在物色一个好的农家乐,由此关注上了不舍。鹿山。虽然最后也没有去,好心累

这次找了个周末双休带上孩子一起出发,去到大山卡卡里头呼吸新鲜的空气

在百度直接导航不舍。鹿山度假酒店即可差不多一个半小时左右

从重庆出发经过 G85->G93->江习高速在李市下道,再走上过 10 分钟左右就到了,有一个问题有差不多 500m 的距离小路非常窄,可能也就 2m 左右。记得要注意上面来车,真的很难错车

关于住宿最好是在网上订好,差不多只有 20 多间房吧,所有越早订好越好,基本周末都是满房。

就是因为我们订房晚了,所以只能订在周五…

目前订房好像是只接受官微订房,官微:蕙家农业价格方面有四个档次

以下价格为周末价格,平常价格可能会有波动请以官微为准

  1. 普通标间 280 元
  2. 精品标间 380 元
  3. 大床房 480 元
  4. 套房 680 元

普标房间内部,有热水,感觉空调不是嘿给力,如果冷可以找前台拿棉被

吃的还是比较多,价格也还能接收,有炒菜烧烤汤锅

价格方面:

  1. 晚上炒菜 8个菜 366元,分量非常足,就是冬天菜上桌易冷
  2. 早上房间含双早,自己点有饺子、汤圆、小面
  3. 中午汤锅整只乌鸡汤锅 299,现杀

对于我们 6 个大人 3 个小孩来说整体不算太贵,而且食材都还比较新鲜,尤其是鸡更是后山现抓、现杀

酒店门前有一大片竹林,夏天歇凉好去处,竹林下有草坪可露营等,晚上有篝火活动 (可能这个要看人多少)

由于冬天所有官方的活动只有丛林寻蛋59元一个小朋友,捡的蛋可以自己带走,如果是夏天会有各种采摘活动

也可以带小朋友看孔雀 、 梅花鹿 、 鸵鸟 、 鸡 、 香猪

总结

总体来说周末休闲,带小朋友出去耍还是不错的

写在前面

SOAR(SQL Optimizer And Rewriter) 是一个对 SQL 进行优化和改写的自动化工具。 由小米人工智能与云平台的数据库团队开发与维护。

本来之前使用过一段时间美团的 SQLAdvisor,但是依然有诸多问题无法解决,所以改用 SOAR 试试。

安装

下载二进制安装包

1
2
wget https://github.com/XiaoMi/soar/releases/download/0.10.0/soar.linux-amd64 -O soar
chmod a+x soar

验证安装

1
echo 'select * from film' | ./soar

配置

配置参考

写在前面

首先终端已经换为 zsh 了,至于怎样安装和更换默认终端,这里我就不赘述,可以参考下面网友做法

Homebrew install zsh & oh-my-zsh

安装

1
brew install nvm

设置

.bash_profile 加入以下这行,让你可以直接在 shell 使用 nvm 指令

1
source $(brew --prefix nvm)/nvm.sh

重新 source .bash_profile 来让设定生效

1
source .bash_profile

问题

以上操作看似没有任何问题,安装 node 后也能使用。但是,当你第二次重新打开终端时 node 将不能使用,提示错误 Run nvm use --delete-prefix v8.14.0 to unset it.

后面在 nvm 文档看到这段话 Homebrew installation is not supported. If you have issues with homebrew-installed nvm, please brew uninstall it, and install it using the instructions below, before filing an issue.,额… 看来没事还是要多看看文档啊,同时也有网友对此提有 Issues

正确安装

推荐使用官方script安装

1
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

最后在安装好 node 之后不要忘记设置 alias default

1
nvm alias default 8.14.0

对数组中的对象进行排序

函数:

1
2
3
4
5
function keysort (key, desc) {
return function (a, b) {
return desc ? (a[key] < b[key]) : (a[key] > b[key]);
};
}

示例:

1
2
const arr = [{"id":2,"name":"2"},{"id":1,"name":"1"}]
arr.sort(keysort('name', 'desc'));

判断是否是 Float 浮点

1
2
3
function isFloat (num) {
return num !== parseInt(num);
}

保留两位小数,同时不四舍五入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// number
// num 保留位数
function toFixedNum (number, num) {
const type = typeof (number);
let number_arr = [];
if (type === 'number') {
const str = number.toString();
number_arr = str.split('.');
} else if (type === 'string') {
number_arr = number.split('.');
}
if (number_arr.length > 1) {
number = number_arr[0] + '.' + number_arr[1].substr(0, num);
}
return parseFloat(number);
}

给出开始时间和结束时间,算出中间所有的日期

1
2
3
4
5
6
7
8
9
10
11
12
13
// start : 2018-01-01
// end : 2018-01-03
// return : ["2018-01-01","2018-01-02","2018-01-03"]
function getDate (start, end) {
start = new Date(start).getTime();
end = new Date(end).getTime();
const date = [];
for (; start <= end; start += 86400000) {
const tmp = new Date(start);
date.push(tmp.getFullYear() + '-' + (tmp.getMonth() + 1) + '-' + tmp.getDate());
}
return date;
}

从数组中随机取出 N 个元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function getRandomArrayElements (arr, count) {
const shuffled = arr.slice(0);
let i = arr.length;
const min = i - count;
let temp,
index;
while (i-- > min) {
index = Math.floor((i + 1) * Math.random());
temp = shuffled[index];
shuffled[index] = shuffled[i];
shuffled[i] = temp;
}
return shuffled.slice(min);
}

简介

CleanMyMac X 是一款强大的 Mac 系统垃圾清理工具,可以清除 Mac 系统多余的语言包、系统缓存、应用程序、PowerPc 软件运行库等,是硬盘瘦身的好工具

官网

国际版官网

中文官网

下载地址

因为 CleanMyMac 对不同的版本有不同的授权信息。

下面地址均为官网下载地址 https://dl.devmate.com 开头。

国际版 CleanMyMac 3

国际版 CleanMyMac X

中文版 CleanMyMac 3

中文版 CleanMyMac X

MacPaw 支持

可在支持中心查询许可证,或者当换机不成功时可以通过支持中心进行许可证重置。

支持中心

0%