android-sdk/tools/proguard/bin/proguardgui.bat
使用方法
-optimizationpasses 5 # 代码混淆的压缩比例,值介于0-7,默认5-verbose # 混淆时记录日志-dontoptimize # 不优化输入的类文件-dontshrink # 关闭压缩-dontpreverify # 关闭预校验(作用于Java平台,Android不需要,去掉可加快混淆)-dontoptimize # 关闭代码优化-dontobfuscate # 关闭混淆-ignorewarnings # 忽略警告-dontwarn com.squareup.okhttp.** # 指定类不输出警告信息-dontusemixedcaseclassnames # 混淆后类型都为小写-dontskipnonpubliclibraryclasses # 不跳过非公共的库的类-printmapping mapping.txt # 生成原类名与混淆后类名的映射文件mapping.txt-useuniqueclassmembernames # 把混淆类中的方法名也混淆-allowaccessmodification # 优化时允许访问并修改有修饰符的类及类的成员-renamesourcefileattribute SourceFile # 将源码中有意义的类名转换成SourceFile,用于混淆具体崩溃代码-keepattributes SourceFile,LineNumberTable # 保留行号-keepattributes *Annotation*,InnerClasses,Signature,EnclosingMethod # 避免混淆注解、内部类、泛型、匿名类-optimizations !code/simplification/cast,!field/ ,!class/merging/ # 指定混淆时采用的算法
[保持命令] [类] { [成员]}
-keep # 防止类和类成员被移除或被混淆;-keepnames # 防止类和类成员被混淆;-keepclassmembers # 防止类成员被移除或被混淆;-keepclassmembernames # 防止类成员被混淆;-keepclasseswithmembers # 防止拥有该成员的类和类成员被移除或被混淆;-keepclasseswithmembernames # 防止拥有该成员的类和类成员被混淆;
public
、private
、protected
*
→ 匹配任意长度字符,但不包含包名分隔符 (.)**
→ 匹配任意长度字符,且包含包名分隔符 (.)extends
→ 匹配实现了某个父类的子类;implements
→ 匹配实现了某接口的类;$
→ 内部类;<init>
;<methods>
;public
、 private
、 protected
;*
和 **
通配符外,还支持 ***
通配符,匹配任意参数类型;...
→ 匹配任意长度的任意类型参数,如 void test(...)
可以匹配不同参数个数的 test 方法;# 不混淆某个类的类名,及类中的内容-keep class cn.coderpig.myapp.example.Test { *; }# 不混淆指定包名下的类名,不包括子包下的类名-keep class cn.coderpig.myapp*# 不混淆指定包名下的类名,及类里的内容-keep class cn.coderpig.myapp* {*;}# 不混淆指定包名下的类名,包括子包下的类名-keep class cn.coderpig.myapp**# 不混淆某个类的子类-keep public class * extends cn.coderpig.myapp.base.BaseFragment# 不混淆实现了某个接口的类-keep class * implements cn.coderpig.myapp.dao.DaoImp# 不混淆类名中包含了"entity"的类,及类中内容-keep class **.*entity*.** {*;}# 不混淆内部类中的所有public内容-keep class cn.coderpig.myapp.widget.CustomView$OnClickInterface { public *;}# 不混淆指定类的所有方法-keep cn.coderpig.myapp.example.Test { public <methods>;}# 不混淆指定类的所有字段-keep cn.coderpig.myapp.example.Test { public <fields>;}# 不混淆指定类的所有构造方法-keep cn.coderpig.myapp.example.Test { public <init>;}# 不混淆指定参数作为形参的方法-keep cn.coderpig.myapp.example.Test { public <methods>(java.lang.String);}# 不混淆类的特定方法-keep cn.coderpig.myapp.example.Test { public test(java.lang.String);}# 不混淆native方法-keepclasseswithmembernames class * { native <methods>;}# 不混淆枚举类-keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String);}#不混淆资源类-keepclassmembers class **.R$* { public static <fields>;}# 不混淆自定义控件-keep public class * entends android.view.View { *** get*(); void set*(***); public <init>;}# 不混淆实现了Serializable接口的类成员,此处只是演示,也可以直接 *;-keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve();}# 不混淆实现了parcelable接口的类成员-keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *;}
12月初,在办公室看着自己手中陪伴了自己4个多年头的老款 G502,在手上的感觉十分生硬,便想着是时候购买一个新鼠标换掉他了(对自己的手好一些)。
在准备购买之初,我并没有直接就定下 MX Master3 的明确方向,还有另外一个想法:轨迹球鼠标(同是罗技的 MX ERGO)。
两个鼠标都是称作为人体工学鼠标,ERGO 确实有着更符合人体工学的设计(不需要挪动鼠标,可以调节更大的倾斜角度来预防鼠标手),但是他却缺失了我在 G502 经常使用的无极滚轮,以及老旧的 MicroUSB 的充电接口。EROG 轨迹球的额外的学习成本也是没有购买他的原因之一。
而 Master3 有无极滚轮,且此滚轮不是 G502 上传统的机械式无极滚轮,升级成了自适应无极滚轮,并且其有着及其先进的 Type-C 充电口。此外 Master3 还在侧边增加了一个横向滚轮,以及一个手势按键。
在双十二的时候,ERGO 和 Master3 在京东的售价均为499。在10日凌晨的时候,我下了订单,在10日下午,京东就把鼠标送过来了,这个速度还是挺快的。
到手后,检查快递全新封贴未拆,还好没有收到被摸过的二手。
一上手,就能很明显的感觉到“嗯,这个确实有设计”,抓在手上的感觉十分舒适。
罗技这个官网,非常值得吐槽,你也不知道他哪个页面就会无法访问,最后实在顶不住了,直接在 PAC 里加入了 logi.com
。
在下载了 Logitech Options 后,给鼠标进行了初始化的设置,软件内有好些办公软件的默认鼠标快捷映射,不过我也不是办公软件重度用户,就没有去详细的调那些。
自适应无极滚轮,在滚轮下方的按键,你可以手动切换精准/无极,如果在精准模式下,你的滑动速度超过了设定值,那么他就会自动转变为无极模式,待速度慢下后又会回到精准模式。
在 IDEA 里,有时会有很宽的一个预览页,或者因为左右两侧被占用导致代码查看也需要横向滚动,我还是选择了把横向滚轮设置成了横滚。
至于手势键,好像没有想象中的好用,使用下来还是没有想的那么容易触发,后面则几乎没有去用了。
对应的软件 Logitech Options 在 Windows 中,居然不支持托盘模式,和软件内设置的开机自启,明明 G HUB 都有的功能,这是没有想明白的地方。
在使用了几天 Logitech Options 之后,软件内给我推送了 Logitech Options+ 内测的通知。安装上 Logitech Options+ 之后,Logitech Options 就提示我不在支持 Master3,要求你去使用 Logitech Options+。
然而 Logitech Options+ 确实很像一个在内测中的半成品,使用下来,界面确实好看,但是有些功能的缺失,之后还是选择了卸载掉 Logitech Options+,用回 Logitech Options。
确实好用,499不亏。
]]># 更新 aptsudo apt-get update# 配置允许 apt 通过 HTTPS 使用 repositorysudo apt-get install ca-certificates curl gnupg lsb-release# 添加 Docker 的 GPG Keycurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# 指定为稳定版渠道echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.io# 验证是否成功安装,运行一次 hello-worldsudo docker run hello-world
# 备份原有文件,防止迁移错误导致数据丢失cp -r ~/.halo ~/.halo.bak# 拉取 halo 最新镜像sudo docker pull halohub/1.4.16
在下一步之前,请先关掉原halo的进程 防止端口冲突
sudo docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.4.16
推荐将1.4.16替换为 Halo 最新版本号
宝塔面板的软件商店当中,有Docker管理器
,安装后可以在宝塔面板上进行一些 Docker 的操作
]]>[1][Install Docker Engine on Ubuntu](https://docs.docker.com/engine/install/ubuntu/)
[2][使用 Docker 部署 Halo](https://docs.halo.run/getting-started/install/docker)
首先将Windows Terminal和PowerShell Core正常安装到自己电脑上.
这两个都只需要简单的下一步即可.
在此(Nerd Fonts)下载你想用的字体,解压后安装到系统内(推荐[右键]->[为所有用户安装]).
推荐JetBrainsMono.
安装 Nerd Fonts 是因为 Oh My Posh 的主题中有很多图形字符,通常的字体中并不会包含这些内容.
Windows Terminal 的设置现已全部可视化,将[启动]->[默认配置文件] 设置为 PowerShell
即可.
[配置文件]->[默认值/PowerShell]->[外观]->[字体]选中为前面安装的 Nerd Fonts 字体.
其余选项按照自己喜好配置即可.
打开 Windows Terminal 运行其中的 PowerShell
安装 posh-git
Install-Module posh-git -Scope CurrentUser -Force
安装 Oh My Posh
winget install JanDeDobbeleer.OhMyPosh
*安装完成后,请重启 Teraminal 中的 PowerShell
# 获取全部主题列表Get-PoshThemes# 设置主题Set-PoshPrompt [主题名]
采用任意文本编辑器,修改PowerShell中的$PROFILE
# 用 vscode 打开并编辑code $PROFILE# 用记事本打开并编辑notepad $PROFILE
PROFILE文件:
Import-Module posh-gitoh-my-posh --init --shell pwsh | Invoke-Expression# 也可以在这自定义你想要PowerShell初始化时运行的内容
查看/修改主题
Get-PoshThemes# 之后输入主题所在文件夹# 主题文件夹在 ~\AppData\Local\Programs\oh-my-posh\themes# 可以自行编辑文件修改主题,此处请查阅oh-my-posh文档# 你可以直接在初始化的时候增加 [--config] 设置主题# 当然,你也可以自己个性化设置 config,并将其放在你喜欢的路径下oh-my-posh --init --shell pwsh --config ~\AppData\Local\Programs\oh-my-posh\themes\zash.omp.json | Invoke-Expression# 也可以采用 Set-PoshPrompt 命令修改主题Set-PoshPrompt zash
软件是会更新的,所以一段时间后,这个方法没法正常使用了,请多查看官网/Github页面的文档.
所需的文档均在下方参考链接有标注,多为英文文档,如你看不懂文档,可以留言问我,当然我更推荐多看多学.
众所周知kotlin协程写异步流非常方便。
今日在刷公众号的时候,看到关于在Application.onCreate()
加载框架耗时优化的文章,搜了些相关文章。
思路大概是:
onCreate()
完成Thread
实现同时加载多个框架 ansyc
await
runBlocking
ansyc
前先await
前置依赖class App : Application() { override fun onCreate() { super.onCreate() initEnd("Start") runBlocking { val taskA = async { initA() } val taskB = async { initB() } val taskCWaitA = async { taskA.await() initC() } val taskDWaitBC = async { taskB.await() taskCWaitA.await() initD() } } } private fun initA() private fun initB() private fun initC() private fun initD()}
这暂时只是一个思路,目前用到的项目还没用到很多加载很耗时的框架,更没有线上数据做支撑。
这个方案用到了kotlin协程的特性,不需要额外封装,没有附加的依赖,代码可读性也很强,个人认为还是很好的一个方法,等后续有数据可以验证后再下定论。
]]>如果你看到了这一篇文章,那么证明你已经安装成功了,感谢使用 Halo 进行创作,希望能够使用愉快。
在使用过程中,有任何问题都可以通过以上链接找寻答案,或者联系我们。
]]>这是一篇自动生成的文章,请删除这篇文章之后开始你的创作吧!
github页面的中文说明不知因何原因404了,在网上找到了原作者在其他地方写的文章说了一下他的思路。
链接
安装
npm install hexo-abbrlink --save
修改config.yml
# 修改文章的永久链接格式permalink: posts/:abbrlink/# 增加abbrlink插件配置abbrlink: alg: crc32 #算法,可选crc16(default) and crc32 rep: hex #编号进制,可选dec(default) and hex
其中posts/:abbrlink/可以替换成其他你想要的路径:abbrlink为插件生成的短链。
记得先clean,运行generate后,会在文章md文件的Front-matter内增加abbrlink字段
这次转换把文章原来的链接变成死链了...
过一段时间后检查一下搜索引擎收录和排名有没有问题。
文章名称 | 新链接 |
---|---|
Travellings-去看更多有意思的生活 | /posts/dec33ddb/ |
找工作踩坑记 | /posts/6ed5ccae/ |
剑三-世界BOSS工资表格 | /posts/1e807349/ |
英雄联盟壁纸 | /posts/d3dd5c3b/ |
Hexo搭建测试 | /posts/4192bb22/ |
在现在的生活工作当中,有很多突如其来的事情,如果一会没记住,过会你就很难再想起来了,等你想起来了又不知道是什么时候了。
在前几天上班的时候,同事review了我的代码,提出了几个修改建议,但是说完之后基本就忘掉了,根本想不起来改完这个点之后还有哪个地方需要再继续修改。
导致我一直在那脑回路断线,想着还有哪没改,不知道还有什么没做完。
这么一直想着哪没改,导致我比较难集中注意力,就很迷的在做当前手上的任务。
在做的时候又同时想着这哪没改,那哪没改,头都晕了。
这么一整,实在坚持不住了,我就在想有没有啥好方法能记录一下。
就想了这么几个方法
在网上搜索了一些关于TodoList的内容,发现还是有不少东西。
本着尽量使用同生态的软件的心态,我选择了微软Todo。
用了半周,感觉用起来还算顺手。
这么用下来的感觉是,把每件事都记在了清单上,可以放空脑袋来安心处理当前的事情。
感觉无形中减小了自己的压力,提高了一些工作效率吧。
只要你的工作不是一成不变的重复劳动,记录一下要做的事感觉还是挺重要的。
个人觉得可以当做是一个随便看看的按钮,当你无聊的时候就可以戳过去看看,或许你就能看见一个眼前一亮的博客。
用任意方法指向这个链接
https://travellings.now.sh/
引入JavaScript:
https://cdn.jsdelivr.net/gh/volfclub/travellings/assets/travelling.min.js
然后调用JS:
javascript:travelling()
最后都需去项目地址提交Issues等待收录
更多详细用法以开源页面为准
[![Travellings](Travellings.gif)](https://travellings.now.sh/)
<a href="https://travellings.now.sh/" target="blank" title="开往-友链接力"> <img src="https://travellings.now.sh/assets/logo.gif" alt="开往-友链接力" width="120"></a>
表格下载⏬
本表格用于解决剑三的世界BOSS工资计算过于麻烦,将计算内容交由表格完成,方便快速完成统计,和减少人工误算
表格所有锁定内容密码为空,如需修改可自行修改,如重新修改后向外发布望保留此文链接,并带上一份我的ID,谢谢🤣
如有问题和改进建议欢迎在下方进行回复,我会及时收到邮件提醒。回复你,你也可以收到提醒邮件
E列人数务必在空处填0,否则此行会按一人计算!!!
点击版本号可下载历史版本
版本号 | 更新日期 | 更新内容 |
---|---|---|
2.0.3 | 2020/1/20 | 1.增加使用说明多条链接指向 |
2.0.2 | 2020/1/20 | 1.调整表格背景配色 2.调整说明区域 3.链接个人博客 |
2.0.1 | 2019/12/24 | 1.表格布局格式优化 2.适应合服,老板ID修改为自定义 |
2.0.0 | 2019/8/30 | 1.添加一份团队总工资的副本到帮会名与团长ID中间,避免看误 2.云老板和与老板拍卖装备的自动化识别(只要拍卖老板名称输入正确) 3.锁定自动计算的单元格,防止误改 4.区分可修改单元格(浅蓝背景)和不可修改单元格(灰色背景) |
1.0.0 | 2019/4/10 | 1.初次创建表格 2.简单的求和 |