自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(158)
  • 资源 (15)
  • 问答 (1)
  • 收藏
  • 关注

原创 Flutter 自定义Decoration

Flutter 中 可以给Container设置decoration来设置背景,边框等等效果,非常方便。 Container( decoration: TestDecoration(), );但是Flutter自带的decoration比较少,只能支持常规样式,当我们需要设置特殊背景时,就满足不了我们的需要了。这时候,就有必要自定义一个我们定制化的decoration。搜了一下flutter sdk代码,发现flutter里有一个定制化的FlutterLogo

2020-10-27 20:43:52 1996

原创 Flutter_web加Java Spring 整站前后台开发经验梳理

Flutter_web加Java Spring 整站前后台开发经验梳理这段时间开发了一个公司内部使用的网站,本着提前探索熟悉(踩坑)未来的全栈UI框架-Flutter的愿望,使用了Flutter for Web作为前端框架,后台部分则循规蹈矩的用了java Spring。目前已经开发完成,在此简要记录一下开发过程中积累的一些经验。突然发现,我现在不仅会android,又会java后端,又能用f...

2019-08-19 16:05:51 6008 3

原创 android studio编译和命令行调用gradle编译的区别

android studio编译比命令行调用gradle编译快很多从Android Studio 2.3版本之后,通过Android Studio打包普遍比通过命令行调用gradle编译要快很多。这是因为Android Studio增加了一项功能。通过Android Studio打包是,检测到连接的手机android本部大于21,就会关闭传统multidex方案,而使用速度快得多的新版多dex打...

2019-06-17 20:53:38 3019

原创 AddTryCatch gradle plugin 编译期给代码加try catch的插件

AddTryCatch插件,可以通过简单的配置,在编译期向指定方法中加入try catch!因为是在编译期在字节码的层面上修改,所以不管是自己写的代码,还是引用的第三方库中的代码,都可以加入try catch。项目地址:https://github.com/xingchenxuanfeng/AddTryCatchPlugin----

2019-03-29 09:50:16 1593

原创 一步步实现AddTryCatch插件 —— Gradle Transform和ASM实践

在上一篇AddTryCatch gradle plugin 编译期给代码加try catch的插件中介绍了AddTryCatch插件的使用方法,这一篇来一步步实现一下AddTryCatch插件。参考这篇文章,可以快速开发一个gradle插件,包含了我很多的探索和踩坑,看完这篇文章直接就可以上手开发插件了。

2019-03-28 11:18:49 2975 8

原创 Firebase Crashlytics Sdk接入流程(Android)

Firebase Crashlytics Sdk接入流程考拉刚刚把crash统计平台迁移到了firebase上,在此记录一下接入Firebase Crashlytics Sdk的流程,以供大家参考。接入一个新的SDK,最重要的文档就是官方手册,Firebase Crashlytics的官方手册是这个Firebase Crashlytics 使用入门  | 

2019-01-27 19:05:03 12555 19

原创 最简洁的Handler、Looper、Message源码级原理分析

每一个Android开发者,基本都能把Handler、Looper、Message的原理说上一通,最基本的面试题答案“每个线程里可以创建一个Looper,Looper里维护一个消息队列,handler可以往这个消息队列发消息,Looper又不停的从消息队列里取出消息分发给对应的handler”。然而实际上很多开发者对这段话只是一知半解,在这篇博客里,我来用最简洁的语言,梳理一遍Handler、Loo

2017-09-26 13:57:26 313

原创 android 最近任务多进程调度逻辑分析

android自从把最近任务改为一个activity后,最近任务的内部逻辑的复杂程度就在不停地快速增长着。android是支持多用户的,最近任务在每个用户空间都有一个单独运行的进程。而只有主用户空间的SystemUI进程才能收到PhoneWindowManager发过来的事件,比如showRecents,hideRecents等,所以副用户空间的systemui进程就需要主用户空间的systemui

2017-09-08 15:47:40 2152

原创 JS踩坑: for let 和 for var的区别

综上所述,使用let声明可以更好地控制变量的作用域,并避免一些常见的问题。因此,建议在JavaScript中优先使用let而不是var来声明循环变量。在JavaScript中,使用关键字let和var声明变量的方式在for循环中会导致不同的行为。如下两段代码,看起来没什么区别,但是实际运行效果却不一样。

2023-09-03 11:48:14 281

原创 包体积对app激活的影响

2023-04-21 15:58:42 179 1

原创 笔记 android悬浮窗的拖动实现踩坑

想要实现一个可拖动的悬浮窗,原理上非常简单:根据action_move时的event坐标偏移,去修改view的位置即可。但是实际实现上踩了个小坑。getRawX() 和 getX() 的区别。

2023-01-10 11:04:54 633

原创 管道、xargs、-exec的介绍与区别

管道command1 | command2用竖线分割两个命令,把第一个命令的输出,作为第二个命令的输入。 此时需要第二个命令支持这种从管道获取输入的功能,例如cat ls就支持这种功能。xargscommand1 | xargs command2xargs和管道类似,都是把第一个命令的输出传递到第二个命令。与管道不同的是,管道给第二个命令传递是直接传到命令输入上,这种方式要求命令本身的支持,支持的命令较少。而xargs,则是把第一个命令的输出作为参数传递到第二个命令上..

2021-05-31 19:52:33 5075

原创 android工程编译速度优化

android工程在越来越复杂后,编译速度会越来越慢,逐渐对开发效率带来很大的影响。本篇记录一些常见的编译速度优化的方式。一、 各种常见编译参数的配置和gradle、kotlin版本的更新网上关于这些编译参数的文档已经非常多了,我这里不想把这些参数再重复讲一遍,也没有这个必要。大部分对编译速度有帮助的编译参数,都随着gradle版本的升级,变成了默认值。所以只要把gradle版本升级到最新版本,基本上网上能看到的有用的编译参数都无需再去配置了。如果有使用kotlin,建议把kotlin相关版本,

2021-02-28 17:13:35 1761

原创 打npm包的步骤

打npm包的步骤使用parcel编译,parcel build ./index.ts --no-source-maps --target node --bundle-node-modules加上–no-minify可以设置不混淆package 中配置name , version ,main ,files 等下面是一个例子:{ "name": "mypackage", "version": "0.0.1", "main": "dist", "files": [ "co

2021-01-31 18:22:51 707

原创 JS 脚本动态执行 动态生成Function / 三个点运算符(扩展运算符)

最近有个这样的需求,要在我们的后台界面上,让平台使用者可以输入一段脚本,然后在nodejs层,读取这个脚本并执行。并且还要支持自定义输入参数的能力。研究了一下Function的使用,记录在这里。interface FunctionConstructor { /** * Creates a new function. * @param args A list of arguments the function accepts. */ new(...args:

2020-12-29 19:31:38 1455 2

原创 js超长number精度丢失问题——结论:number无解,换string才是正途

最近发现了一个线上问题,用户的信息获取错误。多方调试后发现,我们的userId太长了,超过了js支持的精度范围,发生了精度丢失的问题。比如一个userId:12345678900011137,在js里,如果使用number类型的话,实际会变成 12345678900011140 。看到了吗,js自带的坑,而且坑的还不是位数变化,位数没变,但是最后一位四舍五入了!!!经过各种查资料、咨询、调试、测试……最后确定,js number 对这个情况无解。换BigInt long bignumber 之类的

2020-09-24 16:20:29 4836 1

原创 git format-patch 、 git diff 、git apply 的使用

通过git format-patch 、 git diff 、git apply 三个命令,可以生成patch和打入patch,用于在多个git仓库间传递代码的情况。比如不想提交代码,但是要把代码传给其他协作者,就很适合用这个方式。git format-patch# 把当前没push的提交都打成一个patch git format-patch origin# 把commitid1 和 commitid2 间的提交打成一个patch git format-patch commit

2020-08-10 16:52:08 1992

原创 记录一个dart里的低级但常犯的语法错误 ( forEach vs any )

下面这是一段我们常写出的代码,注意其中的forEach函数,大家看看它的输出是什么。void main(List<String> arguments) { print(Test.inList('1')); Test.list.add('1'); print(Test.inList('1'));}class Test { static var list = <String>[]; static bool inList(String template) {

2020-07-22 16:50:21 749 1

原创 Flutter项目没有Logcat界面时打开Logcat的方法

我们在开发Flutter工程的时候,经常需要看日志时,发现没有Logcat视图,只能通过Debug视图中的Console Tab来看log。这个Console Tab比起Logcat来说,功能上差太多了,各种级别过滤、关键字过滤的功能都没有,截图、录屏这些工具不能用。想要打开Logcat视图,一般在第一次导入工程的时候,会提示检测到Android Framework,这时候按照提示点击导入,并设置Android Sdk即可。但是有时候并不是第一次导入的工程,莫名其妙Logcat视图就消失了,并且各

2020-06-05 13:59:48 6161 10

原创 git 同步超大仓库失败的解决办法

git 同步超大仓库的时候,会报如下错误git fetcherror: git upload-pack: git-pack-objects died with error.iB/sfatal: git upload-pack: aborting due to possible repository corruption on the remote side.fatal: the remote end hung up unexpectedlyfatal: early EOFfatal: index

2020-05-13 19:32:36 5165

原创 用find命令查找最近修改过的文件

用find命令查找最近修改过的文件查找最近一分钟内修改过的文件find . -mmin -1

2020-04-22 20:14:54 940

原创 Flutter PageView 嵌套 Swiper时嵌套滚动冲突问题解决

在Flutter中,如果 PageView 嵌套 Swiper时,默认是很正常的,内层Swiper优先消费滚动事件。但是当Swiper的layout设为自定义:SwiperLayout.CUSTOM 时,则会出现Swiper无法消费滚动事件的问题。这个问题是因为PageView和Swiper的滚动发送了冲突导致的。如果交互上可以接受的话,最简单的办法就是直接禁止外层PageView的滚动...

2020-04-14 15:27:10 4437 2

转载 以普通用户启动的Vim如何保存需要root权限的文件

在Linux或mac上工作的朋友很可能遇到过这样一种情况,当你用Vim编辑完一个文件时,运行:wq保存退出,突然蹦出一个错误:E45: 'readonly' option is set (add ! to override)这表明文件是只读的,按照提示,加上!强制保存::w!,结果又一个错误出现:"readonly-file-name" E212: Can't open file...

2020-02-27 15:50:50 387 1

转载 emacs操作简介

emacs操作简介文件编辑emacs是由GNU组织的创始人Richard Stallman开发的一个功能强大的全屏文本编辑器,它支持多种编程语言,具有很多优良的特性。有众多的系统管理员和软件开发者使用emacs。语法emacs(选项)(参数)选项+<行号>:启动emacs编辑器,并将光标移动到制定行号的行;-q:启动emacs编辑器,而不加载初始化文件;...

2020-01-21 16:05:00 377

原创 通过ContentProvider的onCreate自动初始化Sdk

ContentProvider的onCreate的调用时机介于Application的attachBaseContext和onCreate之间。利用这个机制,可以在ContentProvider的onCreate中做某些初始化逻辑,这样写的sdk,就不需要app方主动调用初始化也可以完成自动初始化。 <provider android:name="com.xxx.xxx...

2019-12-14 15:49:22 1237

转载 Android Studio Debug 的 9 个小技巧

周末看 Android Dev Summit '19 的视频的时候,看到一章关于 Android Studio Debug 的介绍,有很多日常非常有用的小技巧,学习了这些小技巧能很大程度的降低我们 Debug 的成本,快速定位问题的本质,今天就向大家介绍一下 Android Studio Debug 的 9 个小技巧。没关注的小伙伴记得关注订阅????,如果觉得这些文章有点意思,记得分享转...

2019-11-26 01:32:20 453

转载 一些好用的python代码片段

以下文章来源于读芯术,作者读芯术读芯术专注年轻人的AI学习与发展平台Python是一种非BS编程语言。设计简单和易读性是它广受欢迎的两大原因。正如Python的宗旨:美丽胜于丑陋,显式胜于隐式。记住一些帮助提高编码设计的常用小诀窍是有用的。在必要时刻,这些小诀窍能够减少你上网查Stack Overflow的麻烦。而且它们会在每日编程练习中助你一臂之力。1. 反转字...

2019-11-26 01:18:32 325

原创 GCP VM实例磁盘扩容,修改cpu和内存,修改IP地址 步骤

查看原有VM实例信息首先打开https://console.cloud.google.com/compute/instances查看我们GCP中的VM实例点击实例名进入详情可以看到我们的CPU 内存 磁盘 等信息。ssh上去,用df和lsblk查看的输出如下。创建快照在调整配置之前,先创建快照。以备不测。https://console.cloud.google.com/comp...

2019-10-18 23:39:55 7951

原创 热点分析平台

最近找了几个比较大的热点分析平台,试用对比了一下。谷歌趋势https://trends.google.com/trends/?geo=CN蝉大师https://www.chandashi.com/aso/keywordrank.html百度搜索风云榜http://top.baidu.com/?vit=1&fr=toppopulation微博received排行榜http://ww...

2019-09-02 15:34:57 804

原创 无须注册的云盘平台anonfile

最近发现一个匿名的云盘平台 anonfile。感觉说不定什么时候可能就用得着,在这里记录一下。https://anonfile.com/匿名上传您的文件,并在AnonFiles上免费上传我们为您提供20 GB的文件大小限制和无限带宽虽说官网写的是20GB的大小限制,但是既然是匿名的,那就没办法统计每个用户上传的大小,所以我猜这个20GB的限制,应该也是不存在的。这个网站还有面向开发...

2019-09-01 23:24:32 9562 4

原创 git 忽略已提交文件的修改

我们在使用git中,经常会遇到这样的情况:git仓库中有某个必要的配置文件,这个文件应该存在,但是在每个开发人员的本地都要对他进行修改。这就导致这个文件要被反复修改,容易冲突。要想不冲突,就要每个人提交前,都刻意不提交该文件,很是麻烦。一般我们这时候就会想到,用.gitignore来忽略这个文件,但是该文件是已经提交过的,并且对于工程是必要的,应该保存在git中的。.gitignore对于...

2019-07-29 11:52:41 5580 3

原创 万能json to code 在线工具

万能json to code 在线工具支持各种语言最近找json to dart的时候发现的,试了其他工具,不好用,还有bug,这个就好多了。https://app.quicktype.io/

2019-07-15 00:46:57 1525

转载 高效程序员的45个习惯

《高效程序员的45个习惯》总结转载自:https://www.open-open.com/blog/5035948179128506506.html一、敏捷——高效软件开发之道敏捷的精神:它要求团队中的每一个人(包括与团队合作的人)都具备职业精神,并积极地期望项目能够获得成功。它并不要求所有人都是有经验的专业人员,但必须具有专业的工作态度——每个人都希望尽最大可能做好自己的工作...

2019-06-04 15:45:40 1042

原创 遍历一个简单的android工程中gradle编译时的所有task,打印其依赖和输入输出

我们开发中如果涉及到gradle的开发,经常需要查看各个task的输入输出。我在这里创建了一个空的android项目,然后遍历了它的所有task,及其依赖和输入输出。遍历的代码非常简单:project.afterEvaluate(new Action<Project>() { @Override public void execute...

2019-05-04 18:10:28 3988

原创 Gradle进程调试方法

开发gradle插件和排查某些问题的时候,偶尔需要调试gradle进程。这时候可以用如下方法来开启调试。在原本的编译命令后加-Dorg.gradle.debug=true --no-daemon,-Dorg.gradle.debug=true表示gradle进程启动后等待调试器attach上才开始运行,--no-daemon表示是否开启daemon进程,不加这个参数默认是会开启daemon...

2019-05-04 15:27:17 2500

原创 tldr ! 比 man 简单好用的命令手册

tldr ! 比 man 简单好用的命令手册使用Linux或者Mac时,经常会忘记某些命令的用法,这个时候经常就需要去百度或者谷歌搜索命令的使用说明。其实系统自带了man命令来查看手册,但是man显示的使用手册往往又臭又长,我仅仅需要临时用一个命令,为什么非要看这么长的说明书?tldr是简化版的使用手册,并不会像man一样把所有的使用参数和说明都列出来,而是只显示常用的几个使用Sample和说...

2019-04-19 13:39:29 4877

转载 代码的坏味道

代码的坏味道代码坏味道:是指在代码之中潜在问题的警示信号。并非所有的坏味道所指示的确实是问题,但是对于大多数坏味道,均很有必要加以查看,并作出相应的修改。1.重复的代码如果你在一个以上的地点看到相同的程序结构,那么当可肯定:设法将它们合而为一,程序会变得更好。同一个class内的两个函数中含有重复的代码段 两个兄弟class的成员函数中含有重复的代码段 两个毫不相关的clas...

2019-03-08 14:14:13 785

原创 修改firebase、google等网站语言的方法

一般网站上有设置页面的,直接在设置页面里选择语言就好了,比如youtube但是某些网址上没有设置页面,或者设置页面里找不到设置语言的选项,这是可以试试在链接最后面加上hl后缀,Zh-cn表示中文,en表示英文 …… 就可以切换语言了。url?hl=Zh-cn //切换为中文url?hl=en  //切换为英文 不仅google官网如此,google系列的其他网站也是一样,比如...

2019-01-30 11:21:37 2577

转载 Linux磁盘相关-分区与修复

转自:http://balistardut.github.io/2016/01/30/Linux%E7%A3%81%E7%9B%98%E7%9B%B8%E5%85%B3-%E5%88%86%E5%8C%BA%E4%B8%8E%E4%BF%AE%E5%A4%8D/ Linux磁盘相关-分区与修复Jan 30, 2016 in linux问题描述:移动硬盘分配空间如下(其中sdb1...

2019-01-07 11:31:32 5854

转载 ubuntu上安装搜狗输入法

首先安装fcitx一、检测是否安装fcitx首先检测是否有fcitx,因为搜狗拼音依赖fcitx&gt; fcitx提示:程序“fcitx”尚未安装。 您可以使用以下命令安装:&gt; sudo apt-get install fcitx-bin 二、安装fcitxsudo apt-get install fcitx-bin相关的依赖库和框架都会自动安装上。...

2019-01-02 18:29:13 393

Host文件转换为Charles可识别的DnsSpoofing Xml配置文件

Host文件转换为Charles可识别的DnsSpoofing Xml配置文件 charles本身带有DNS Spoofing Settings的功能,在Tools菜单里,使用这个,就不需要在搭配其他Host修改工具使用了,我们项目中,开发时需要频繁改host,这个功能十分有用。 但是charles自带的这个功能,只能导入charles本身导出的xml配置,不能直接导入host文件,很不方便,我看了下这个xml的格式,自己写了个工具来转化格式,可以把host转化为charles支持的xml格式来导入。 使用方法:执行下面的命令运行即可,后面的hosts/参数,表示需要转化的host目录或文件名 java -jar convertFromHostToCharlesDnsSpoofingXml.jar hosts/ 想看源码的可以看这里:https://blog.csdn.net/xingchenxuanfeng/article/details/81709422

2018-08-15

android evi工具,按键录制、重放

用于录制android按键,录制后可以重放,可以帮助做一些重复的操作。 使用adb shell push evi /system/bin/evi 命令将该工具push到android手机 /system/bin/目录即可使用 用法很简单: 1 输入 adb shell evi record 后,做自己想要重复执行的操作。 2 输入 adb shell evi replay -t n ,即可重复执行操作,n代表想要重复执行的次数。 adb shell evi Usage: evi record [-f ] [] - record system events to If no -f option is supplied then the data is written to "/sdcard/events" ( is the list of events to be backed up. For example, "1 3 5" means event1, event3 and event5. By default, event0, event1, event3, event4, event6 and event7 are included.) evi replay [-f ] [-t ] - replay system events from If no -f option is supplied then "/sdcard/events" is used. If no -t option is supplied then events will be replayed once.

2018-08-15

simg2img system.img转化raw img文件的工具

simg2img 可以将android编译生成的system.img转换成raw img文件,查看android rom包的时候,不需要先刷机再去手机里看相应内容,直接就可以看rom包内文件。

2018-05-14

自动把getevent转化为sendevent的工具

自动把getevent转化为sendevent的工具,并且组装成可循环执行的shell,简易按键录制工具

2016-09-28

PullToRefresh源码

简单的下拉刷新,上拉加载的源码,简单实现,容易修改,自定义控件demo。

2016-04-06

xml生成javabean工具

在已经有xml的情况下,快速生成javabean代码,不需要自己再手打大量无聊的代码。

2016-03-08

快速生成javabean工具

在已经有xml文件的情况下快速生成javabean 源码放在博客里了,博客链接:http://blog.csdn.net/xingchenxuanfeng/article/details/50826620

2016-03-08

CordovaDemo,cordova简单helloword

cordova是一个移动应用开发框架,你基于这个东西可以用网页代码作出APP。 Cordova是贡献给Apache后的开源项目,是从PhoneGap中抽出的核心代码,是驱动PhoneGap的核心引擎。你可以把它们的关系想象成类似于Webkit和Google Chrome的关系

2016-01-28

新浪新闻爬虫

新浪新闻的爬虫,按类别分类,测试的是军事类,只需要修改url就可以爬取其他类别。使用webmgic框架开发,垂直爬虫,爬取后以文件形式保存。

2015-12-03

安卓定位demo

一个简单的安卓定位demo,使用百度地图sdk。

2015-06-02

C#的基于p2p的C/S聊天室

C#的基于p2p的C/S聊天室,chat是服务端,chatclient是客户端,很简单。有大量代码被注释了,注释掉的部分是我试验各种方法时用过的部分,注释掉的部分并不是错误的,只是觉得没有其他方法好而已。

2014-04-12

C#p2p五子棋

C#编写的p2p五子棋,很简单的小程序。需要的可以看一下。

2014-04-12

一个简单小巧的修改电脑摄像头设置的工具 amcap

一个简单小巧的修改电脑摄像头设置的工具 amcap,很小很实用。

2014-01-23

小牛远控工具

小牛远控工具 功能强大 可监控屏幕 超级终端 系统设置等功能

2012-04-11

flash 卷轴 源文件

flash 卷轴 源文件 自己研究弄的 大家看看

2011-12-09

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除