自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (13)
  • 收藏
  • 关注

原创 Hook技术实现免注册和登录验证的插件化框架

Hook技术实现登录框架1 找到hook点Activity.javapublic void startActivityForResult(@RequiresPermission Intent intent, int requestCode, @Nullable Bundle options) { ... Instrumentation.ActivityResul...

2018-05-09 01:01:27 1526

原创 DataBinding快速入门(还在用findViewById?)

一、DataBinding介绍了解一门新技术,一般从三个W一个H入手:是什么?(What)干什么用?(What)有什么好处?(What)怎么用?(How)二、DataBinding使用2.1 准备工作2.2 快速使用 user.nickName ?? user.name user.name + `(` + user.age +`)` us

2016-11-21 23:26:28 16027 3

原创 自定义控件——圆形圆点进度条(仿安全卫士中的一键加速)

一、源代码源代码及demo下载(此进度条开源项目后续会持续添加、更新)二、行动由来在开发交流群中,一童鞋说要实现这个进度条,但在网上没有找到开源项目。 看到这个图片,很熟悉吧?有木有想点它的冲动?觉得有点意思,可以研究一下,再说也有一段时间没写自定义控件了,正好复习复习(说实话,一段时间没写,思路有,但就是不知道从哪开始)。昨天花了一天的时间才把它搞定,先看效果图:3种显示模式: 模拟进度动画效

2016-09-26 00:49:09 9064 22

原创 Android网络编程TCP、UDP(三)——UDP实例:搜索局域网所有的设备

接上面的UDP,本篇主要讨论如何在局域网中搜索所有的设备,这个需求在物联网应用的比较多,也比较综合,特把名字加在标题中了。最后一块是网络编程的常见问题。3.6 实例:在局域网内搜索设备假设你家里安装了智能家居,所有的设备都是通过Wifi连接自己家里的局域网(至于这些设备没有界面操作,如何连接wifi?有一个比较流行的牛逼技术,叫SmartConfig)。现在这些设备连入到局域网了,那如何通过Andr

2016-09-04 22:20:26 20554 16

原创 树莓派入门

从咸鱼上淘了块树莓派(4B4G)+16G存储卡+读卡器。想用来做甲醛测试仪的设备端,上报数据到平台,然后通过手机实时查看数据。因为是二手货(卖家描述成色为全新,被P了),不知道是否正品、质量和功能怎么样,所以,从硬件、软件上都做个检测,当做入门。.........

2022-07-23 22:39:30 1246 1

原创 一键过滤选择百度网盘文件

今天拍照馆通过百度云盘给我发了266张照片,让我选择20张入册。但对方把.CR2和.JPG两种格式都发过来了,其实我只需要把.JPG的下载下来,然后去选择。但我需要从中选择133张,这种数量多、重复性的工作,挺考验耐力的。作为程序员,肯定要想个懒办法去解决它,毫无疑问,就从前端(Ctrl+Shift+I,浏览器的开发者工具)来解决对应的元素布局:不同点就在标签内的class中。所以只要这么一捞,133个文件就全部捞出来了:执行点击事件剩下的,就是给执行点击操作:...

2022-06-26 16:36:01 572

原创 ThingsBoard——v3.3.3源码编译

要二次开发,肯定少不了编译源码。编译的难点就是坑多,因为我们的环境不可能跟源码作者的一样,当然你的跟我的也可能不一样。我的环境:系统:macOS10.15.5,CPU i71 准备工作1.1 编译环境java版本:java 11$ java -versionopenjdk version "11.0.14.1" 2022-02-08 LTSOpenJDK Runtime Environment Corretto-11.0.14.10.1 (build 11.0.14.1+10-LTS)Ope

2022-03-14 01:42:02 6206

原创 ThingsBoard——自定义规则节点

一般的功能,可以使用现有的节点来完成。但如果有比较复杂,或有自己特殊业务需求的,可能就需要自定义了。按[官方教程](https://thingsboard.io/docs/user-guide/contribution/rule-node-development/)来基本就可以入门,如果需要深入,可以参考ThingsBoard自有节点的实现,见[源码](https://github.com/thingsboard/thingsboard)

2022-03-06 22:24:08 2335 1

原创 ThingsBoard——Docker重启失败,报错Connection to localhost:5432 refused的解决方法

一、问题现在还没编译好thingsboard源代码,用的是docker搭建起来的环境。在写自定义节点,要打包好扔到docker里,再重启docker。后来发现经常重启失败,报错的错误也都是这样:2022-03-05 08:53:23,164 [main] ERROR com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Exception during pool initialization.org.postgresql.util.PSQLExcepti

2022-03-05 15:06:25 5991

原创 ThingsBoard——Rest API获取token和刷新token

ThingsBoard的REST API文档使用的是Swagger,大多数的接口都可以通过这个地址来查看和测试(后面带锁图标的接口表示需要鉴权)http://{{YOUR_HOST}}:{{PORT}}/swagger-ui.html一、登录获取token登录接口在login-endpoint组中POST /api/auth/login请求账号和密码放在requestBody请求体中{ "username": "[email protected]", "password"

2022-02-20 00:48:03 2931 1

原创 ThingsBoard——Android APP安装

ThingsBoard移动端,就是后台操作界面的简化版。有些功能还是在后台比较方便操作,比如设计规则链。移动端使用语言是Flutter,源码在GitHub这里只介绍Android端的安装,iOS没有研究过,应该要简单一些。因为官方把Android端的apk放在了Google Play应用市场,因为种种原因,安装很不方便。我在安装过程中主要遇到两个问题:如何下载apk文件?下载的apk是个zip包,解压后,里面有很多apk文件,单独安装任何一个,都会失败下载apk Installer:一款An

2022-02-19 22:08:57 3118 1

原创 SpringBoot的Cacheable缓存入门

一、前言因为工作需要,最近开始入门SpringBoot。每种技术,应该都是先把基本的程序跑起来,然后根据需求或自己在其它技术上的经验,去寻找解决方案。搜索了下SpringBoot的缓存方案,有自带的ConcurrentLinkedHashMap,还有主流的Guava、Caffeine、Ehcache。作为入门,先拿自身的来玩玩,也就是ConcurrentLinkedHashMap二、ConcurrentLinkedHashMap的使用先简单说一下,此缓存是内存缓存,如果关闭或重启服务,缓存都将被清

2022-01-09 00:23:52 3040

原创 派单算法——找到手上工单最少者,然后派送给TA

1 题目一个简单的派单算法。有一群可接单人员,来了一个单子,需要给他们派单。派单规则,就是均衡分配:找到谁手上的单子最少,就分配给TA;如果找到的人多于1位,则从中随机抽取1位2 思路抛砖引玉,目前我的思路:从正在执行的单子中,计算每个人手中的单子数量遍历所有人中,找到持有最小单子数的人员集合从集合中随机抽取一位,把单子分配给TA有更好的算法,麻烦提供一下,感谢!3 代码public static void main(String[] args) { arrangeOrder(

2021-11-21 23:36:07 2248

原创 宜搭——下拉单选

最近,花了一周时间用宜搭做了个Web工具。中间遇到很多坑,还好宜搭的文档不错,除了基本的功能使用开发介绍外,还有很多专题案例,基本上可以找到答案,或从中得到灵感。选用宜搭的原因,除了团队最近在使用,主要还是因为它是低代码,可迅速搭建界面,开发语言是js,非常容易上手。必备先把个人觉得非常重要的文档和常用快捷键放上来:文档...

2021-11-07 19:28:56 4539 8

原创 Win10安装docker

想在window10系统上安装docker,发现并不是那么顺利1. 流程安装docker启用CPU虚拟化安装Hyper-V安装WSL 2测试2. Step by Step2.1 安装docker下载为什么要先安装docker?因为会检查环境,缺少会提示你,这样我们就可以按提示来操作,基本就能完成2.2 启用CPU虚拟化任务管理器 —— 性能,确保虚拟化是“已启用”如果未启用,进入BIOS(Lenovo:Fn + F2),把Intel Virtual Technology改成E

2021-10-24 17:01:35 3026

原创 Android启动动画bootanimation

Android的启动动画,不是gif,而是由N个png图片、和动画配置文件组成,跟帧动画一样一、准备工作png帧动画图片zip压缩软件预览工具二、制作启动动画路径: /system/media/bootanimation.zip文件构成:decs.txt:配置文件,主要包括动画分辨率、每秒帧数、循环次数、动画路径等part0:第1组动画所在的文件夹。里面的文件一般按序号来命名,eg:0001.png、0002.pngpart1:第2组动画所在的文件夹2.1 desc.txt 配

2021-02-02 00:16:06 790

原创 使用TCP/UDP工具调试Yeelight灯带

使用TCP/UDP工具调用Yeelight灯带本文介绍如何在Windows下,使用TCP/UDP工具调试Yeelight灯带准备工作TCP/UDP调试工具Yeelight WiFi Light Inter-Operation Specification一、搜索设备搜索设备,通过向局域网内发送组播搜索命令,设备接收到后会响应,把设备当前的状态信息返回过来1、创建UDP组播连接根据文档...

2020-04-17 00:54:00 1356 1

原创 实操笔记——笔记本加内存及清灰

实操笔记——笔记本加内存及清灰写在前面一、加内存1 如何确定能否增加1)当前电脑内存2)系统是否支持3)当前电脑支持的最大内存4)内存条插槽数2 如何选择内存条首选确定当前内存条是几代的、品牌、频率内存条选择规则二、清灰写在前面每次写博客都要先唠叨几句,这次也不例外。一年多没写博客了,自从换了工作,工作变忙了许多,很多笔记还是记录在电脑上,博客就没怎么发了,毕竟写博客不想随笔笔记,还是需要一个...

2020-04-06 23:48:17 1689

原创 源码分析自定义ViewGroup中Fragment无法显示的问题

一、背景昨天接到同学的一个问题:用了别人的自定义侧滑菜单控件,这个控件继承自ViewGroup,想通过左侧菜单里的列表,更改右侧界面显示的内容,内容通过Fragment来显示。问题来了:点击列表时,replace一个新的Fragment,无法显示在onCreate()中直接replace,可以显示二、填坑过程这里完全是个自嘲过程,可以直接跳过。因为调试过几次后,觉得应该从...

2018-08-04 01:13:47 1783

原创 使用iconfont.ttf图标文字库代替图标图片

1 效果2 下载字体库1) 选中图标 —— 添加入库:2) 添加至项目:3) 下载项目中的图标字体库:4)获取图标字体库iconfont.ttf5)查看图标对应的unicode值3 使用1)把iconfont.ttf拷贝到项目assets目录中2)修改TextView的字体库3)xml中使用4)装逼神器1 效果APP肯定都会用到图标,比如...

2018-08-03 19:25:52 25879

原创 热修复Sophix多渠道补丁的解决方案

1 背景最近,把Sophix集成到了一个多渠道的项目里。但,第一次使用就遇坑了。代码里使用了BuildConfig.FLAVOR来判断当前属于哪个渠道,如:有两个渠道:taobao和tianmao Test.java类中使用了BuildConfig.FLAVOR:if ("taobao".equals(BuildConfig.FLAVOR)){ toast("abc&a

2018-07-10 23:37:11 1026 1

原创 MD5+DES在C#.NET与Java/Android中的加解密使用

一、背景后台(C#.NET)使用一个MD5+DES的加解密算法,查了下,很多网友都使用了这个算法。在Android里,也需要这个算法,如何把这个加解密算法切换成Java版,成了难题。毕竟好久没涉及到这一块了,只知道:MD5(Message-Digest Algorithm 5,信息-摘要算法5):是一种信息摘要算法、哈希算法,不可逆; DES(Data Encryption Standard,数据

2017-03-20 00:43:33 2244 1

原创 自定义动画(仿Win10加载动画)——优化

此为前文章写的仿Win10加载动画的优化版源代码已更新到github优化分析 原生 自定义高仿(v1版) 一直觉得自己写的与原生的有差别,经过仔细对比观察,发现:原生的圆点出发位置不是都在底部,而是第一个在底部,后面的紧接着前面一个,像球在管子里一样圆点结束的位置就是该圆点开始的位置经过比对,发现一个周期的时间是7500ms,非7000ms经过优化后的对比: 原生

2016-10-08 16:05:29 11087 4

原创 自定义动画(仿Win10加载动画)

一、源代码源代码及demo二、背景先看看Win10的加载动画(找了很久才找到): 每次打开电脑都会有这个加载动画,看上挺cool的,就想着自己能否实现它。要实现这个动画?首先想能否通过自定义SurfaceView控件(界面刷新是通过子线程来完成)来实现。这需要知道某一刻时间,那些小圆点在什么位置。小圆点都在做圆周运动,可以看出除了左上角,可以通过势能和动能的相互转化来计算速度。但速度是变化的,如何

2016-10-07 17:04:19 13033 1

原创 如何让自定义控件的字体瘦身(优化圆形圆点进度条)

一、开源源码及demo下载二、产品经理来了本以为写好的圆形圆点进度条没问题了,因为写前篇博客时优化了一些细节。那位提需求的童鞋下班后呼叫我,说UI有点问题:我的百分比字体偏壮,没原版的苗条(告诉我是百度手机助手,现在才知道⊙﹏⊙b)。 一对比,确实粗壮了不少。怀疑是不是系统的原因,特意去下载手机助手在同一手机上进行比对,,,确实如此,接下来,找办法解决:首先去查是不是有字体类型,一个一个试,都

2016-09-28 01:32:11 1229 4

原创 局域网主机广播寻找设备

源码及demo:UdpBroadcastSearcher一、背景介绍这是前面UDP网络编程中的实例(Android网络编程TCP、UDP(三)——UDP实例:搜索局域网所有的设备)。觉得这功能在以后可能会用上,就按照原思路优化了下代码。主要优化的地方:Android和Java工程中都可以使用用户可选择是否携带自定义协议数据。如设备(或主机)可以直接携带设备名称、房间等信息主机可把设备携带的信息

2016-09-23 20:01:48 9370

原创 如何在新浪微博中批量取消关注

一、背景如果不想看这烦人的背景介绍,直接跳到最后看”解决步骤“(sorry,不会页内跳转,求教)。本篇文章在《Android网络编程TCP、UDP(一)》开始后不久就写好了。但毕竟那篇是重点、专业,而这篇完全是业余爱好折腾。因为近一年没有登录新浪微博了。结果密码被锁定了,密码正确但登录不了。没办法只能通过找回密码了。 进去后发现:微博发布了很多垃圾广告有很多私信在“关注”的“未分组”中发现了

2016-09-04 23:46:53 18909 9

原创 Android网络编程TCP、UDP(二)

先对上一遍的工具类,补充两点: 1、Client关闭异常 如果没有连接host就调用close()的话,会导致NullPointException,因为mInputStream为null。虽然socket关闭后,输入输出流也会随之关闭,但为了加快回收速度,建议把流也关闭。public void close() { if (mSocket != null) { try {

2016-09-04 00:23:19 7085 3

原创 Android网络编程TCP、UDP(一)

一、TCP与UDP简介TCP和UDP都属于TCP/IP参考模型中传输层的协议,且都是基于网际互联层IP协议。一位大神作了一个很形象的比喻:TCP和UDP使用IP协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。(参考:http://blog

2016-09-01 02:21:40 15544 3

原创 一道九宫格算法面试题

前言一前公司同事把此题放在群里,求大家帮忙解答。因为没有其他条件和说明。我的第一印象就是:方格里应该填1~9整数中剩下的1~8,且不能重复。于是拿着笔进行了一通计算。。。后来发现无解。接着,就想里面的算术运算符(+、-、×、÷),不按优先级,直接按先后顺序来计算,如:a - b × c,当做(a - b) × c 来运算。最后得到如下结果:5 8 97 6 43 2 1为

2016-08-12 03:35:36 9182 1

原创 AS中Git与GitHub的使用入门

一直想把自己的写的开源小项目放到github中,这两天才花时间来学学git。遇到些问题,百度了很多才解决。跟SVN一样,值得写一篇总结记录下,虽然上资源很多,但作为入门,自己遇到的写出来完全不一样。一、 Git与GitHub的简单介绍Git是一个开源的分布式版本控制工具。 GitHub是一个使用Git作为版本控制的项目托管平台,它是一个网站。 详细请参考:http://www.cnblogs.

2016-08-10 02:17:13 23743 7

原创 XML序列化与反序列化+自定义XML注解框架XmlUtils

背景前面一篇总结了Serializable的序列化与反序列化,现在接着总结XML。主要内容:XML基本的序列化与反序列化方法、一些注意事项、以及自定义了一个XML注解框架(简洁代码,解放双手)。XML的序列化与反序列化先与Serializable进行简单的对比:Serializable存储的文件,打开后无法正常查看,安全性高。xml文件可通过文本编辑器查看与编辑,可读性高(浏览器会格式化xml文件

2016-07-25 03:00:29 6655

原创 Serializable的序列化与反序列化

使用Serializable序列化,只要实现Serializable接口即可。一般情况下都会显示设置静态成员变量serialVersionUID为固定值。序列化时使用ObjectOutputStream写入,反序列化时使用ObjectInputStream读出。如此简单,谁都会。但这是我碰到复杂点的情况,特作以下总结:1、Serializable可继承:父类实现了序列化,子类也会自动实现序列化Per

2016-07-12 03:08:09 5818

原创 C移植到Java中,byte[]与其他数据类型的转换

最近在把C代码移植到Java(Android)中,C中一般的数据都会使用byte[](unsigned char)来存储,且位操作特别频繁。我要把这些数据转换成在Java存储,或把byte转换成本语言的其他类型,掉进不少坑。这里,总结下这段时间我遇到的转换问题。一、C与Java的变量类型区别1、变量类型及所占字节数 变量类型 C中字节数 Java中字节数 char 1 2

2016-07-02 17:30:59 10164

原创 AS中SVN的安装、配置及常见问题的解决方法

这两天被AS中的SVN折腾了不少时间。安装和配置倒还好,就是提交的时候出现了问题,也没提示什么问题,郁闷了。经过一段时间的倒腾,终于解决了。一、安装参考服务器VisualSVN Server和客户端Tortoise SVN软件的安装说明,基本next就OK了。服务器安装完后,可创建仓库(一般创建带branches、trunk和tags的仓库): 客户端安装完后,在资源管理器中,右键菜单中会有SVN

2016-06-19 23:50:12 7863

原创 AS中jar包和aar包的导出与导入

从Eclipse转Android Studio后,很多操作都不是很清楚,就包括jar包的使用,直到昨天出现了问题,才去找原因并解决。问题是这样的:自定义的控件打成jar包了,在其他工程中调用,在运行时出现错误,提示说在xml中的自定义控件无法填充。在xml中弹出错误,说NoClassDefFoundError,进入源码发现指向的是styleable,也就是自定义属性。毫无疑问,这就是R文件的问题了。

2016-06-12 22:39:07 25966 3

转载 三极管工作原理分析,精辟、透彻,看后你就懂

说明:内容与之前那篇一样,由于之前那篇是转载百度的,现在图片受限,无法阅读。这篇自己添加了图片资源。随着科学技的发展,电子技术的应用几乎渗透到了人们生产生活的方方面面。晶体三极管作为电子技术中一个最为基本的常用器件,其原理对于学习电子技术的人自然应该是一个重点。三极管原理的关键是要说明以下三点:1、集电结为何会发生反偏导通并产生Ic,这看起来与二极管原理强调的PN结单向导电性相矛盾。2、放大状态下集

2016-06-10 16:03:22 100484 63

原创 Android问题——PopupWindow的isShowing()一直都是返回false

问题:查看是否这样的设计思路:用一个按钮,通过isShowing()来判断状态,然后展示和隐藏popup。且使能了外部触摸setBackgroundDrawable(new BitmapDrawable()); setOutsideTouchable(true)然后在按钮中获取isShowing()的状态,结果一直返回的都是false。原因分析:你触摸按钮的时候,它属于外部区域,触摸它肯定会把po

2016-05-20 13:17:25 9747 3

原创 setPadding()无效的原因分析

在ListView中经常使用view.setPadding(left, top, right, bottom)来实现下拉和上拉的效果(view代表headerView或footerView),主要设置top值即可。我现在在写一个自定义控件,里面就用到了这个setPadding( ),view的高度是给定的,结果就直接代码创建了一个View,通过LayouParams设置它的高度值为给定值,效果死活出

2016-05-17 13:31:16 17211

原创 自定义控件——可拖拽排序的ListView

前言最经研究了一下拖拽排序的ListView,跟酷狗里的播放列表排序一样,但因为要添加自己特有的功能,所以研究了好长时间。一开始接触的是GitHub的开源项目——DragSortListView,实现的效果和流畅度都很棒。想根据他的代码自己写一个,但代码太多了,实现的好复杂,看别人的代码你懂的了,就去尝试寻找其他办法。最后还是找到了更简单的实现方法,虽然跟开源项目比要差一点,但对我来说可以了,最重要

2016-05-12 01:44:35 17663 12

ThingsBoard Live v1.0.1

ThingsBoard Live是ThingsBoard的官方demo apk

2022-02-19

Apk Installer

Apk Installer是一款app安装工具,可安装:APK、APK Bundles、OBB、XAPK、ZIP、APKM

2022-02-19

Android蓝牙工具nRF.Connect.4.24.3

非常好用的Android蓝牙工具

2021-03-03

BootAnimationPreview.zip

Android bootanimation.zip预览软件Windows版

2021-02-01

TCPUDP调试工具v1.02(Windows)

Windows系统下的TCP/UDP调试工具,功能如其名。支持TCP/UDP的收发、TCP的服务端和客户端模式、UDP的组播

2020-04-17

扁平化图标(Android、IOS、Web都可用)

一些常用的扁平化icon图标,可用在Android、IOS和Web开发中。为了适配屏幕,每种图标都有不同的尺寸

2016-05-06

批量文件重命名小软件

使用说明:http://blog.csdn.net/a10615/article/details/51234575

2016-05-06

抽奖通用软件v2

旧版本因动态图片导致很多人无法使用(http://download.csdn.net/detail/a10615/4049999),此版本已改进,并公开代码,欢迎各位高手指导 本软件是用Excel的VBA编写,主要利用了Excel在表格方面的优势。只要把工号及姓名复制进去便可。工作表名称请以“1月22日”或“1月22日一等奖”格式命名。操作简便,即下即用。

2013-12-18

StartUp宏病毒专杀(永久使用)

本工具用于专杀Excel的StartUp宏病毒。运行前提:1、把安全性设为低;2把“可靠运行商”的“信任对于Visual Basic项目的访问”勾上。 对前一版本(链接:http://download.csdn.net/detail/a10615/3966065)进行了更新。把使用的期限取消了,可以永久性地使用。还作了些其他修改。

2012-06-13

MPLAB_C30_C编译器用户指南(中文版)

MPLAB_C30_C编译器用户指南(中文版),可以作为参考手册

2012-05-24

江山市农民建房通用图集

很多网上传的都看不清楚具体的尺寸大小,这里的可以清晰看到。有准备自己建房的,推荐参考下。

2012-03-04

抽奖通用软件

  本软件是用Excel的VBA编写,主要利用了Excel在表格方面的优势。只要把工号及姓名复制进去便可。工作表名称请以“1月22日”或“1月22日一等奖”格式命名。操作简便,即下即用。

2012-02-07

StartUp宏病毒专杀

本工具用于专杀Excel的StartUp宏病毒。运行前提:1、把安全性设为低;2把“可靠运行商”的“信任对于Visual Basic项目的访问”勾上

2011-12-24

空空如也

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

TA关注的人

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