改造网站支持 Progressive Web Apps (PWA),改善移动端体验。
主要分成一下几步:
检测当前的浏览器是否支持 Service Worker
调试 Service Worker,可以在 Chrome 开发者选项 Application 看到 Service Worker.
创建 sw.js
并注册
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', function () {
navigator.serviceWorker.register('/sw.js');
//navigator.serviceWorker.ready always resolve
navigator.serviceWorker.ready.then(function (registration) {
console.log('Service worker successfully registered on scope', registration.scope);
});
});
}
</script>
关于 sw.js
比较复杂, 可以参考文末 Google 的文档。
manifest 属性
页面中添加 manifest.json 使之生效。
<link rel="manifest" href="/manifest.json">
这里 可以生成 manifest 和不同尺寸的 icon
部署后可以测试一下
整理文件的时候总想快速的删掉重复的文件,这里就总结下个人使用感觉良好的几个命令工具,包括 [[jdupes]], rdfind, fdupes, [[fclones]] 这些。
依据推荐指数从高到低。
开源地址:
jdupes 是 fdupes 的增强版,根据作者自己的描述,jdupes 比 fdupes 1.51 版本要快 7 倍左右。
使用方式:
Usage: jdupes [options] DIRECTORY...
和 fdupes 类似, jdupes 也有类似的选项:
-d --delete prompt user for files to preserve and delete all
others; important: under particular circumstances,
data may be lost when using this option together
with -s or --symlinks, or when specifying a
particular directory more than once; refer to the
documentation for additional information
-N --noprompt together with --delete, preserve the first file in
each set of duplicates and delete the rest without
prompting the user
-r --recurse for every directory, process its subdirectories too
所以总结一下:
jdupes -r path/to/dir
这行命令不会真正去删重复的文件,如果要删除,用 -d
参数:
jdupes -dr path/to/dir
此时 jdupes 会打印出报告,然后一个一个让用户自己去确认要删除哪一个。
安装使用:
sudo apt-get install rdfind
rdfind -dryrun true path/to/dir
结果会保存在 results.txt 文件中。如果要真正删除 (Be Carefule):
rdfind -deleteduplicates true path/to/dir
或者建立硬链接
rdfind -makehardlinks true path/to/dir
安装使用:
sudo apt install fdupes
fdupes path/to/dir
递归搜索:
fdupes -r path/to/dir
如果要删除重复内容可以使用 -d
选项(同样需要非常谨慎):
fdupes -d path/to/dir
-d
选项会弹出选择,用户可以手动选择保留的文件。如果使用 -I
选项会在遇到重复文件时直接删除。
-N
选项和 --delete
一起使用时,会保留第一个文件,然后删除之后的重复文件,不会弹出让用户确认。
最强悍模式:
fdupes -rdN path/to/dir
在 review tldr 的 PR 时又看到了一个 C 语言实现的 duperemove,作者没有提供 benchmark,有机会可以尝试一下。
这篇文章受到 IntelliJ 官方插件 IDE Features Trainer 的启发,学习一个编辑器应该归类,从不同的操作学习。从基本的编辑,到代码导航,再到辅助,到重构,重要的不是学习这些快捷键,而是学习可以怎么样做,并且用这样的思考方式用到不同的编辑器中。
Mac 上常见的四个快捷键对应关系,简单的可以将 Alt 对应 Mac 下的 Option,而在 Mac 下 Cmd 和 Ctrl 被人为的分隔开来,Cmd 大多数与GUI相关,Cmd+Q退出应用,Cmd+W关闭一个Tab,而Ctrl和终端相关,Ctrl+a则是跳转到行首,Ctrl+e跳转到行尾。然后和Shift,Option结合就能组合成非常多常用的功能。Windows下不足的一个地方就是将 Win 键的功能单一化了,大部分的情况下Win 键是鸡肋。
另外 Shift 可以认为是一个相反的操作,比如 Cmd+Tab 是切换应用,那么 Cmd+Shift+Tab 就是反向切换应用。再比如在 IntelliJ IDEA 中 Cmd+z 是 undo,那么 Cmd+Shift+z 就是 redo,撤销之前的撤销。
一个编辑器基本的操作,包括复制,剪切,粘贴,选择,多点选择,折叠代码块等等。而关于复制,剪切,粘贴 IdeaVim 已经完全满足需求,不需要用 IntelliJ 内置的任何命令。
选择,块选择,本来 Vim 的选择模式也已经足够强大,不过 IntelliJ 提供了如下两个方式相较于 Vim 的块选稍微强大一些。
原来 Vim 的块选,比如想要选择某一个方法,大致可以使用 vap
,或者选择花括号内容 vi{
等等,在非常清楚需求的情况下非常方便,但是比如有些时候不想选择整个段落,想要可视化的选择一些代码块,不妨试试上面两个快捷键。
代码的折叠与展开,倒是不复杂。
多选,比较常见地一种场景就是变量重命名,当然有些时候比如编辑 html 时批量替换某些标签,有很多方法可以实现,比如变量重命名功能,或者批量替换,又或者使用 vim 的 dot 命令。
IntelliJ 当然也提供了很多方式,上面提到的只是其中的一种。
生成一些模板方法,默认的快捷键是 Cmd+n, 自动生成构造方法,toString 方法,get-set 方法,或者 override 方法等等。
批量重命名,很有用的快捷键,必须知道。
借助 IdeaVim 在我的配置文件中, 我把 ,+r
映射成了变量重命名:
nnoremap <Leader>r :<C-u>action RenameElement<CR>
Ctrl + Alt + V
个人对方法提取用的还是比较多的,重构代码或者重新规划代码时非常有用。
格式化,对于格式化的要求应该在任何保存的时候进行格式化,应该在提交代码前强制进行格式化。当然用快捷键时不时的格式化一下也可以。
显示参数
Vim 插件已经能够做到非常好的在单文件内浏览了,无论是上下,或者翻页,或者查询特定变量,方法。如果要做到查询方法的父类或者接口就不得不借助 IntelliJ 自身的快捷键。
我借助 IdeaVim 插件的魔力,将常见的代码流量都映射成了 g 开头的操作,比如跳转到超类就是 go to super, 快捷键就是 gs
在阅读代码时有几个操作经常会用到:
个人使用 Vim 的 *
和 np
基本满足了查询当前字符串的需求,所以这里也就不列举 IDE 自带的快捷键了。
全局搜索,默认的快捷键是 Shift + Shift, 这是一个非常有用的快捷键,可以搜索 IntelliJ IDEA 内部的功能,同时也可以模糊搜索项目代码文件,执行任务,跳转等等。
默认的快捷键是 Alt+Enter
默认的快捷键是 Alt(Option)+F12
重构代码,会弹出一个功能选单 Refactor this,在这个功能选单中可以做如下事情。
停留在变量上,方法名,类名上:
Cmd 系列
快捷键 | 功能描述 |
---|---|
Cmd+q | Q退出应用 |
Cmd+c/v/x | copy/paste/cut |
Cmd+z | |
Cmd+w | close Tab |
Cmd+e | recent file |
Cmd+n | generate |
Cmd+o | file structure |
Ctrl 系列
快捷键 | 功能描述 |
---|---|
Ctrl+a/e | 行首行尾 |
Ctrl+n/p | next line/Previous line |
Ctrl+b | go to super class |
Ctrl+g | find usage |
Ctrl+h | find in path |
Ctrl+Option+b | go to implements |
Linux Mint 自带的备份和还原工具就是 timeshift, 今天看到有人贡献 timeshift 的命令行版本,突然意识到这个工具其实还有命令行版本。
sudo apt-add-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install timeshift
timeshift 提供两种模式的备份方式:
RSYNC 在第一次使用时会拷贝所有文件,以后每次备份都是增量备份,使用硬链接创建从上一次快照未修改的系统文件。快照文件可以保存到任何 Linux 文件系统的硬盘格式下,保存快照到非系统盘或者外部硬盘上,这样即使系统盘损坏或者被格式化也能够快速从外部硬盘恢复数据。RSYNC 支持排除文件和目录来节省硬盘空间。
BTRFS 需要安装 btrfs-tools
,快照通过 BTRFS 文件系统创建,快照备份和恢复的速度要比 RSYNC 快,快照创建和恢复都是原子事务的,不能中断。快照通过替换系统 subvolumns 来恢复,因为文件没有拷贝,删除或者覆盖,不会有文件丢失的风险。恢复后的系统会作为一次新的快照。快照在备份时是完美地逐字节拷贝,不能排除任何文件。快照会存在系统相同的硬盘上,暂时还不支持备份到其他硬盘,如果系统盘损坏,那么快照也会丢失。初始 BTRFS 备份是 0 字节,但是随着系统使用占用内容会逐日增多,快照中的文件依然还是会指向原始的文件 block. 系统必须安装在 BTRFS 分区上,并使用 Ubuntu-type subvolumn layout(@ and @home subvolumns),其他的 layouts 不支持。
通过界面可以非常快速的设置 timeshift.
在标签页,Filters 一栏中可以设置不备份的路径。
通过界面可以定制简单的定时备份任务,但是如果界面无法满足高级的需求,比如固定时间调用 timeshift 来备份,那么可以使用 cron 脚本来定时备份。比如要在每天下午 7 点中执行备份,可以新建 /etc/cron.d/timeshift_daily_7p
并在其中配置:
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""
0 19 * * * root timeshift --create --tags D --scripted
如果安装某些程序导致了无法进入系统,那么可以用 USB 上的系统进入,然后在 USB 启动的系统中使用 timeshift 来恢复系统。
优化 Docker 镜像文件的大小可以:
Docker 镜像由很多层组成(最多 127 层),依赖很多底层基础,比如文件系统,写时复制,联合挂载等等,每创建一层都会相应地增加一些体积。
使用 Alpine 作为基础镜像。
gcr.io/google_containers/pause-amd64:3.1
镜像仅有 742KB。
scratch 是一个空镜像,只能用于构建其他镜像,比如你要运行一个包含所有依赖的二进制文件,如 Golang 程序,可以直接使用 scratch 作为基础镜像。Google pause 镜像 Dockerfile:
FROM scratch
ARG ARCH
ADD bin/pause-${ARCH} /pause
ENTRYPOINT ["/pause"]
Google pause 镜像使用了 scratch 作为基础镜像,这个镜像本身是不占空间的,使用它构建的镜像大小几乎和二进制文件本身一样大,所以镜像非常小。当然在我们的 Golang 程序中也会使用。对于一些 Golang/C 程序,可能会依赖一些动态库,你可以使用自动提取动态库工具,比如 ldd、linuxdeployqt 等提取所有动态库,然后将二进制文件和依赖动态库一起打包到镜像中。
scratch 是个空镜像,如果希望镜像里可以包含一些常用的 Linux 工具,busybox 镜像是个不错选择,镜像本身只有 1.16M,非常便于构建小镜像。
减少 RUN 指令
应该把多个命令串联合并为一个 RUN(通过运算符 && 和 / 来实现),每一个 RUN 要精心设计,确保安装构建最后进行清理,这样才可以降低镜像体积,以及最大化的利用构建缓存。
下面是一个优化前 Dockerfile
:
FROM ubuntu
ENV VER 3.0.0
ENV TARBALL http://download.redis.io/releases/redis-$VER.tar.gz
# ==> Install curl and helper tools...
RUN apt-get update
RUN apt-get install -y curl make gcc
# ==> Download, compile, and install...
RUN curl -L $TARBALL | tar zxv
WORKDIR redis-$VER
RUN make
RUN make install
# ==> Clean up
WORKDIR /
RUN apt-get remove -y --auto-remove curl make gcc
RUN apt-get clean
RUN rm -rf /var/lib/apt/lists/* /redis-$VER
CMD ["redis-server"]
构建镜像,名称叫 test/test:0.1。
我们对 Dockerfile
做优化,优化后 Dockerfile
:
FROM ubuntu
ENV VER 3.0.0
ENV TARBALL http://download.redis.io/releases/redis-$VER.tar.gz
RUN echo "==> Install curl and helper tools..." && \
apt-get update && \
apt-get install -y curl make gcc && \
echo "==> Download, compile, and install..." && \
curl -L $TARBALL | tar zxv && \
cd redis-$VER && \
make && \
make install && \
echo "==> Clean up..." && \
apt-get remove -y --auto-remove curl make gcc && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /redis-$VER
CMD ["redis-server"]
构建镜像,名称叫 test/test:0.2。
对比两个镜像大小:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test/test 0.2 58468c0222ed 2 minutes ago 98.1MB
test/test 0.1 e496cf7243f2 6 minutes ago 307MB
将多条 RUN 命令串联起来构建的镜像大小是每条命令分别 RUN 的三分之一。
为了应对镜像中存在太多镜像层,Docker 1.13 版本以后,提供了一个压扁镜像功能,即将 Dockerfile
中所有的操作压缩为一层。这个特性还处于实验阶段,Docker 默认没有开启,如果要开启,需要在启动 Docker 时添加 -experimental
选项,并在 Docker build 构建镜像时候添加 --squash
。不推荐使用这个办法,请在编写 Dockerfile
时遵循最佳实践编写,不要试图用这种办法去压缩镜像。
在了解复式计帐开源软件 Beancount 的时候偶然的知道了 git-crypt, 因为 beancount 使用纯文本来记账,非常适合使用 git 来做管理,而个人帐务资产信息又是非常敏感的内容,所以就有了 git-crypt 的使用场景。而在日常的项目管理中,如果遇到代码需要公开,而某些敏感配置,比如数据库连接配置等等,使用相同的原理 git-crypt 也能够有使用场景。
git-crypt 使用 C++ 编写,安装的过程可以自行编译安装:
git clone git@github.com:AGWA/git-crypt.git
sudo apt install make g++ libssl-dev git openssl
sudo make ENABLE_MAN=yes install
详细参考官网,安装后会在 /usr/local/bin
目录中,可以使用 man git-crypt
来查看说明。
而对于 MacOS, 只需要安装 git-crypt
,gpg
即可:
brew install gpg
brew install git-crypt
在 git 项目中加密敏感内容
配置加密工具 gpg
# gpg --gen-key // 生成密钥(公钥和私钥),按照流程提示进行
# gpg --list-keys // 列出当前所有的密钥,检查刚才的密钥是否生成成功
配置 git-crypt
cd path/to/project
git-crypt init // 类似于 git init,安装 git-crypt 到项目中
git-crypt add-gpg-user einverne // 添加密钥用户,这里以我的用户 einverne 为例
添加配置文件 .gitattributes
vi .gitattributes
格式为: * filter=git-crypt diff=git-crypt , 例如我要加密 config 文件夹的三个配置文件 , 则在 .gitattributes
文件内加入:
secretfile filter=git-crypt diff=git-crypt
*.key filter=git-crypt diff=git-crypt
secretdir/** filter=git-crypt diff=git-crypt
上传到 git
# git rm -r --cached config/ // 清理 config 的 git 缓存
# git add .
# git commit -m 'git-crypt'
# git push
导出密钥
# git-crypt export-key ~/Desktop/git-crypt-key
导出了密钥以后,就可以分发给有需要的团队内部人员。
当团队其他成员获取了代码以后,需要修改配置文件,需要先解密,解密动作只需要做一次,往后就不需要再进行解密了。
解密
# git-crypt unlock /path/to/git-crypt-key
利用该方式进行配置文件管理可以保证安全性,只有团队内相关人员才能看到配置文件明文内容,解密只需要第一次进行,之后就没什么改变,直接改配置文件,git 提交会自动加密。
很早就听闻了复式记账这个名词,但是一直在我的 TODO 上没来得及消化,记得当时主要是看了 wzyboy 和 byvoid 二位的文章,我关注的不同的人选择同样的方式来做一件事情,肯定是有意义的。所以当时我就将复式计帐和 Beancount 放到了我的 Trello 待办事项里面,这几天终于有时间来了解一下了。
首先什么是复式记账,相对复式来说的记账法是单式记账,我之前一直在寻觅的记账软件 其实都是单式记帐,通过消费流水来记账,这种方式比较简单,只能够记录消费状况,其实对于自己财务的整体状况并不是很清楚,通过这样的记账方法最多只能统计到日常的消费状况,而无法回答诸如[[资产损益表]]、[[资产负债表]]等等个人帐务问题。并且对于信用卡消费还款这样的情况,单式记帐软件根本无法满足需求,而且如今个人的资金分散在支付宝,微信,银行卡,证券股票账户等等各种账户中,如果没有很好的管理,时间一长就非常难以追溯。就像 byvoid 在文章中所说的那样 —-“为什么要记账?实际上是要通过记录来增加对自我的认知。”
在继续看下去之前,有一些需要提前了解的概念:
在了解复式计帐前有些名字概念需要提前了解,在提到复制记账额时候肯定会提到这一个恒等式:
也就是:
Assets (资产) = Liabilities (债务) + Equity(权益,或者叫净资产 net worth,或者抵押资产)
转换一下就更好理解,一个人的净资产等于资产减去负债。理解净资产后,在记账软件中我们可能会记入
资产和债务字面意思都比较好理解,Equity 直接翻译叫做净资产,又有翻译叫做权益,也有一个更细节的公式:
Equity(权益,资产) = Owner's Equity(资产) - Dividends(应付红利) + Retained Earings(净收入)
也就是一个人的资产等于固有资产减去分红加上净收入。这里引入了一个 Dividends 的概念,这样的会计恒等式一般是针对公司主体而言的,所以应付红利则是表示公司对股东的分红。对个人债务而言很少会使用到 Dividends 这样的概念,所以简化一下,净收入又有:
Retained earings(净收益) = Revenue(收入) - Expense (支出)
这个公式就比较好理解了。
所以综上,得到了如上的公式,也就能总结出这几大账户,「其中有些公司记账相关的内容,比如 revenue,dividend,等这里就不提了」, 对于普通人大致可以总结出这几类:
Assets
—— 现金 (Cash)、银行存款、有价证券、Investment, Loans credits 等;Income
—— 工资 (Paycheck)、奖金 (bonus)、Gift receives, Dividends, Interest 等;Expenses
—— 税金 (Taxes)、外出就餐、购物、旅行、Gift given、捐款 (Donations) 等;Liabilities
—— 抵押 (Mortgage)、信用卡应付款 (Credit Cards)、房贷 (house loans)、车贷 (car loans) 等;Equity
—— 一般用来记录已有资产;而这几类的划分也正好和后面要用的 [[Beancount]] 中默认的几类账户是有关系的。
一般的流水帐是从资金角度出发,比如,某年某月某日某时某刻买了什么东西,而复式记账则能记录资产的流动:
复式记账又分为了借贷记账法,和正负记账法,这里先介绍一下借贷记账法。
借 (debits) 贷 (credits)
Debits 和 Credits 是经济交易中的双向流动:
有借必有贷,借贷必相等
例子:
假如用现金购买了 100 元文具。
DEBIT(进) | CREDIT(出) |
---|---|
文具 | 100 元 |
记账时需要分开记账
在文具账簿分类下
DEBIT | CREDIT |
---|---|
2019-11-11 文具 100 |
在现金账簿下:
DEBIT | CREDIT |
---|---|
2019-11-11 文具 100 |
又用信用卡 25000 购买了电脑:
工具分类下
DEBIT | CREDIT |
---|---|
2019-11-11 电脑 信用卡 25000 |
信用卡下:
DEBIT | CREDIT |
---|---|
2019-11-11 电脑 工具 25000 |
这是常见的 T 字记账法,左边表示 DR 表示增加,右侧是 CR 表示减少。
相较于借贷记账,正负记账则是用 +
和 -
来分别代表流入和流出。非常相似。
假如用上面的例子,那就应该是:
2019-11-11 支出:文具 +100
2019-11-11 现金 -100
更好的了解自己,认识自己的财务状况,这包括
Beancount 是一款开源的复制记账软件,基于纯文本,按照特定语法书写的记账规则,可以非常轻松的生成各种资产报表。
A double-entry bookkeeping computer language that lets you define financial transaction records in a text file, read them in memory, generate a variety of reports from them, and provides a web interface.
源代码:http://furius.ca/beancount/
因为开源所以 Beancount 有无限的扩展性:
Beancount 用 Python 编写,可以从 Pypi 中拉取,同时可以安装 fava 一款比较友好的展示界面, Web UI:
pyenv local 3.6.1
python -m venv beancount
source beancount/bin/active
pip install beancount fava
安装完成后可以使用这些命令:
上手体验,使用 bean-example
输出样例:
bean-example > example.bean
然后使用 fava 展示:
fava example.bean
建议在安装体验完后,仔细阅读作者提供的文档.
beancount 具体语法和使用方式 byvoid 的这篇文章 已经非常清晰,也就不在这里提了。这里只简单记录一下我需要记住的一些语法单词。
账户操作语法,创立账户、备注账户、注销账户:
[yyyy-MM-dd] open Assets:Cash:CNY "CNY"
[yyyy-MM-dd] note Assets:Cash:CNY "现金"
[yyyy-MM-dd] close Assets:Cash:CNY
五种账户类型,Assets,Liabilities,Equity,Income,Expenses,分别对应资产、负债、权益、收入、支出。
账单语法:
[yyyy-MM-dd] [*|?] "payee" "content"
[account1] +[num] [currency-unit]
[account2] (-[num] [currency-unit])
微信账单可以通过如下方式导出,APP,通过“我”-“支付”-“钱包”-“账单”- 右上角“···”-“账单下载”。
导出的账单解压得到 csv,观察 csv 文件,前 16 行是账单信息,从第 17 行开始是真实有效的记录。包括了:
交易时间 交易类型 交易对方 商品 收 / 支 金额(元) 支付方式 当前状态 交易单号 商户单号 备注
一种比较直观的方式就是从每个月发送的账单中,将网页的表格下载成 CSV 文件,然后使用自定的脚本批量的添加到 Beancount 中。
[[2021-02-02-beancount-introduction]]
新建一个目录专门用来记录,该目录使用 git 来做版本管理,敏感内容使用 git-crypt 加密。
记录一下 PS4 的设置。
关于港版和国行的机器,除开价格上的差异,国行版本多了两年全国联保,不过国行版本需要特殊方式解锁。问题都不是很大。
关于 PSN 的注册,网上太多内容,建议注册港服,在注册的时候选择香港的服务器,并且将地址选在香港。
在注册的时候有个操作,我们都知道 Gmail 的邮箱名,其实在邮箱名后面加 +
号,后面的内容是会被 Gmail 忽略的,比如有一个邮箱叫做 admin@gmail.com
,那么可以使用 admin@gmail.com
注册一个美服账号,再用 admin+hk@gmail.com
来注册一个港服账号,但是实际注册邮件都会发送到一个地址中,但是在 Sony 的服务中就是完全两个不同的服务账号。非常方便管理,也不用注册多个 Gmail 账号来隔离,也非常方便记忆。
PS4 购买游戏有两种选择,一种就是直接购买游戏光盘,一种是购买数字版,这两种的区别在于游戏光盘等通关之后还可以转手卖掉,数字版就没有办法了。不过个人推荐新推出的游戏买光盘版,时间比较老的游戏可以择时机购买数字版,因为黑 5 的游戏经常有 5 折的优惠。
买来登录账号就费了一番功夫,国内的网络环境真的是!推荐在网络设置中手动设置网络地址,并且指定 DNS 服务器。这个服务器地址可以网上找找,然后使用 dig @8.8.8.8 store.playstation.com
来验证服务器是否有效。
看个人网络环境了,有可能连这个 DNS 都连不上。
实测比较稳定而且下载速度很快。
主 DNS 14.18.24.253 备 DNS 14.18.16.93 主 DNS 202.98.0.68 备 DNS 202.96.75.68
PlayStation Plus 为 PS4 游戏提供线上联机服务、存档线上备份、自动下载、会员优先试玩、会员专享折扣以及每月几款免费游戏。
需要提醒一点,如果绑定了信用卡充值会员后系统会默认开通自带续费功能,要记得从系统中将其关闭,方法如下:若要停止 PlayStation®Plus 的自動更新,請在(設定)>[PlayStation Network/ 帳戶管理]>[帳戶資料]>[PlayStation 定期服務]> [ PlayStation Plus ],再選擇[關閉自動續訂機能]
把 NTFS 格式的 U 盘插入后竟然不支持,只能格式化成 FAT32 来使用。
ps4 折扣助手 微信小程序
中文里面的快充,其实对应着很多个英文单次,Quick Charge, fast charge, dash charge, USB PD(USB Power Delivery), Dual charge, 这些许许多多的名词,在中文的语境中都被叫做快充其实是不太准确的。虽然都叫快充,但是其实各个设备厂商都有各自自己的实现,目前市场上比较常见的快充实现是 QC,PD。
追溯快充的历史,可以追到高通的芯片,一般被用来给移动设备芯片供电。通常意义上所讲的快充是指的,通过 USB 标准,提供 5V,2A 的充电技术。
不过不同厂家都有自己的专有技术,比如联科发的 Pump Express, OPPO 的 VOOC 以及华为的 SuperCharge.
我们通常所讲的 QC 快充其实是高通的一套快充解决方案,一般搭载高通处理芯片的移动设备会用到该快充技术。
Quick Charge 也有其自身的发展,从 Quick Charge 2.0,到 3.0,到随着 Snapdragon 835 发布的 4.0,再到目前的 4+,维基百科有非常完整 QC 快充发展历史 1。
这里的 PD 快充指的是 USB 联盟制定的快充规范,不仅可以用于手机,还可以用于 PC,相机,显示器等等设备。PD 协议的出现也是一定程度上缓解市面上的各种不同快充协议。不过 PD 快充一定需要通过 USB Type-C 接口。使用 PD 快充,最高可达到 100W (20V * 2A). 充电装置和充电器会自动判断用多大的电流充电。高通在 QC4.0 后使用了 USB PD 规则,理论上 QC4.0 快充装置也能支持 USB PD 快充。
这是 OPPO 的快充专有技术,授权给 OnePlus 叫做 Dash Charge,或者又叫做 Warp Charge. OPPO 算是市面上研究充电技术比较早的公司,14 年推出 VOOC 闪充,18 年商用 SuperVOOC 超级闪充,而后者是目前最快的手机充电技术。
SuperVOOC 充电规格,通过 10V/5A 高电压,大电流方式,充电功率可以达到 50W,充电 10 分钟可以得到 40% 电量。
而一加的 Warp 充电,使用 5V/6A 大电流。
这是华为用来给麒麟芯片提供快充的技术。
不同厂家的快充技术听名字可能会非常困惑,但追溯到原理无非就是:
具体的实现原理,本人也不是硬件设计出身,所以具体内容也就不好展开了。
对于快充技术,一般情况下都是需要电源适配器和充电线搭配使用才能发挥最佳,使用普通充电线可能并不能达到快充效果。
这里有个小技巧,在电源适配上,除了一般的电压和电流标识,如果支持 QC 快充,一般在适配器 LOGO 中会显示一个 QC 的 LOGO(上面图中右上角的标识),一般也会标注快充的版本。
所以最理想的状态就是等 N 年过去,大家可以不再纠结什么快充协议,一个 PD 充电适配器,适配所有的设备,不管是手机,电脑,相机还是显示器。但显然要等待的时间还有些漫长。
最近发现威联通 TS-453Bmini 在安装服务比较多的情况下内存有些吃紧,默认的 4G 内存已经不够,日常使用开机就已经要到瓶颈,所以就不得不升级一下。网上简单的查了一下低电压版 DDR3L 1600 的内存即可,所以看到京东有十铨的有卖,所以就趁着打折买了两条 8G,119 一条也不是很贵。
具体型号:十铨低电压(1.35V) DDR3 1600 8G 笔记本内存 X2
具体更换过程还是挺简单的,Ts-453b mini 的设计也非常简单,关机,断电,然后在机器底部有可拆卸的盖子,打开盖子就能看到非常清晰的内存条插槽,然后换入新入的内存条即可。
具体可以参考这里