自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 资源 (1)
  • 收藏
  • 关注

原创 android应用后台常驻内存优化(二) 类重命名

一些app业务需要在后台长时间运行,比如音乐播放,文件下载。这些任务一般都是按单独进程和service的形式进行,如果进程占用内存过高,则更容易被android系统杀掉,导致业务受影响,所以一个好的后台服务,常驻内存越低越好。

2023-10-17 22:54:32 313

原创 android应用后台常驻内存优化(一) dex重排

一些app业务需要在后台长时间运行,比如音乐播放,文件下载。这些任务一般都是按单独进程和service的形式进行,如果进程占用内存过高,则更容易被android系统杀掉,导致业务受影响,所以一个好的后台服务,常驻内存越低越好。

2023-10-16 22:13:13 660

原创 Android输入系统梳理

Android最常见的输入设备是触摸屏,然而除了触摸屏,安卓还支持其他输入设备如鼠标、游戏手柄、键盘等。当输入设备可用时,Linux内核会在/dev/input/下创建对应的名为event0~n或其他名称的设备节点。而当输入设备不可用时,则会将对应的节点删除。在用户空间可以通过ioctl的方式从这些设备节点中获取其对应的输入设备的类型、厂商、描述等信息。

2023-02-01 23:39:42 835

原创 Android点击事件被丢弃的类型与原因

InputDispatcher处理点击事件是单线程串行处理的,如果队列前面的点击事件一直无法处理,会导致后续点击事件迟迟无法响应,给用户的感知就是手机卡顿,所以在一些场景下,InputDispatcher必须丢弃一些未处理完成的点击事件。

2023-02-01 22:57:52 452

原创 ViewPager+Fragment首页布局的加载优化

本文通过设置ViewPager的setOffscreenPageLimit参数和提供适配ViewPager的Fragment来优化加载耗时。

2022-04-15 16:38:15 1479

原创 unix下的IP路由

IP路由相关指令route netstat路由表unix系统下输入netstat -rn 可以查看本机路由表Destination Gateway Interface 略过不讲Refcnt–reference count 表示正在使用该路由的活动进程个数,面向连接的协议如TCP在建立连接时要固定路由Use–指通过该路由转发的分组数Flags–常用的标志有如下几种:U 该路由可以使用G 该路由是到一个路由器,表明是间接路由,如果没有G标志,说明所在路由器或主机跟目的地直接相连,是直接路

2022-04-13 22:15:40 630

原创 View 基础知识

View 基础知识View关键历程measure、layout、draw是view的三个流程ViewRoot对应于ViewRootImpl类,它是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot来完成的。measure过程决定了View的宽/高,Measure完成以后,可以通过getMeasuredWidth和getMeasuredHeight方法来获取到View测量后的宽/高,在几乎所有的情况下它都等同于View最终的宽/高,但是特殊情况除外,

2022-04-13 21:56:28 314

原创 Android自定义View

android自定义View自定义View的常见方法1.继承View重写onDraw方法这种方法主要用于实现一些不规则的效果,即这种效果不方便通过布局的组合方式来达到,往往需要静态或者动态地显示一些不规则的图形。很显然这需要通过绘制的方式来实现,即重写onDraw方法。采用这种方式需要自己支持wrap_content,并且padding也需要自己处理。2.继承ViewGroup派生特殊的Layout这种方法主要用于实现自定义的布局,即除了LinearLayout、RelativeLayout、Fram

2022-04-13 21:52:48 2591

原创 android冷启动优化方案汇总

列举了app冷启动优化的9种方案,总有一种适合你

2022-04-11 23:45:04 3983

原创 android多个项目使用独立gradle缓存的办法

android多个项目使用独立gradle缓存的办法背景所在项目组做android开发,为了提高编译速度和代码解耦,把部分模块的代码打包成aar形式发布到maven上,每次开发拉取主干代码后,首次编译利用gradle的参数–refresh-dependencies从maven仓拉取更新aar文件,从而达到减少代码量和提高编译速度的目的。问题场景开发有时候需要在本地下载多份代码,我们设为项目A和项目B,A、B的代码基本是一致的,而依赖的aar是一样的,开发操作如下:下载A代码,gradle编译ap

2022-04-07 22:24:02 2787

原创 中世纪哲学

中世纪哲学简要介绍西方哲学思想的两个来源是希腊哲学和基督教,在查士丁尼关闭柏拉图学院后,基督教统治了西方思想一千多年。但中世纪哲学讨论的问题多与基督教相关,需要对基督教有所了解才可以深入,秉持无神论的人对着一千多年的思想史可以快速跳过,,中世纪哲学主要包括教父哲学、经院哲学、文艺复兴和宗教改革四个时期,时间从公元2世纪到16世纪。希腊哲学与基督教哲学哲学与宗教都源于人类精神的终极关怀,只不过他们解决问题的方式不同,哲学诉诸理性,宗教诉诸信仰。希腊哲学精神是一种乐观主义的悲剧精神,关注的是命运、必

2021-07-13 21:35:12 903

原创 希腊哲学史笔记

希腊哲学希腊哲学特点偏爱非个人性,有普遍性的东西试图给事物的存在找到理由–学以致知,挖掘现象背后的本质希腊哲学时间公元前6世纪到公元6世纪,以柏拉图学院被关闭为标志先有伯里克利,再有苏格拉底前苏格拉底哲学–>雅典哲学–>晚期希腊哲学前苏格拉底哲学讨论宇宙生成论形成了第一个哲学概率–本原(arche),包含有开端、主宰的含义泰勒斯西方第一位哲学家,米利都学派创始人赫拉克利特火是万物的本原人不能两次踏进同一条河流–关注万物的变化,而变化是由规律的提出log

2021-07-11 22:35:36 512 1

原创 多线程调用LiveData的postValue如何保证只展示最新值

多线程调用LiveData的postValue如何保证只展示最新值LiveData简介LiveData是一个数据持有类,它可以通过观察者模式被android的Activity和Fragment等监听,当LiveData的数据发生变化时,会通过onChanged方法通知页面更新数据。LiveData的优势在于可以感知组件的生命周期,只有在组件是活跃状态时才会通知组件更新(observe方法),当组件被destroy后,就算LiveData发生了变化也不会回调通知,且destroy后自动取消了组件的监听,

2021-02-03 22:35:49 1545

原创 pyinstaller使用注意事项

pyinstaller使用注意事项pyinstaller是把py文件打包成window下的exe文件的一个第三方库pyinstaller的安装 * 如果是 pip install pyinstaller 或从官网下载,版本是3.2.1, 只支持到python3.5 * python3.6版本的用https://github.com/pyinstaller/pyinstaller 替换 D:\python\Python36-32\Lib\site-packages\PyInstaller 即可

2020-07-18 12:04:28 441

原创 python3的str跟bytes问题

python3的str跟bytes问题python3 的str其实就是unicode字符,交互界面看到的是人类的字符,但其实存储中是unicode码位(code point 四位十六进制的数)。unicode其实就是做了一个人类所有字符码位的一个一一映射关系表数据的传输永远都是二进制的,我们要传输unicode字符,就需要把码位转换成二进制数据,这就另外规定了很多不同的编码方式–utf-8 utf-16 GBK ISO-2312等,有的编码方式支持所有unicode码位到二进制的转换,比如utf系列,

2020-07-18 11:59:46 170

原创 一张表告诉你Sun JDK常见监控与故障处理工具

工具名称主要作用jpsJVM Process Status Tool 显示指定系统内所有的HotSpot虚拟机进程ID和执行主类jstatJVM Statistics Monitoring Tool 监视虚拟机各种运行状态的命令行工具,可以显示本地或远程虚拟机进程中的类加载、内存、垃圾收集、JIT编译等运行数据jinfoConfiguration info for java 实时查看和调整虚拟机各项参数的工具jmapMemory Map for java 用于生...

2020-07-07 17:50:56 199

原创 java的垃圾收集器与内存分配策略--兼具算法理论与java实现

java的垃圾收集器与内存分配策略垃圾收集需要完成的三件事情哪些内存需要回收如何回收什么时候回收垃圾收集针对的java内存区域程序计数器、虚拟机栈、本地方法栈三个内存区域为线程私有,线程结束时内存会回收,内存的分配和回收在编译期能够确定下来,所以不需要垃圾收集java堆是线程共享的,在编译期无法知道需要的内存大小,在运行期动态分配回收内存,所以垃圾收集针对的内存区域为java堆。哪些内存需要回收判断哪些内存需要回收是垃圾收集需要完成的第一件事。内存需要回收以为着该片内存上的对象不再存活

2020-07-06 16:25:00 172

原创 探讨java中String的创建与存储机制

java中String的创建与存储机制介绍本文开头给了一段测试代码,基于此介绍了intern方法,由intern方法引出了字符串常量池和StringTable,接着用表格的方式探讨了HotSpot实现的jdk6和jdk7中字符串常量池的存储差异,介绍完字符串常量池后,也用表格介绍了三种字符串创建的方式,最后再对测试代码的结果逐一分析,加深对原理的理解。测试代码,全文基于该代码展开public class StringTest { public static void main(String[

2020-06-25 20:29:45 252

转载 java对象内存布局

转载:https://blog.csdn.net/zhou920786312/article/details/84204399

2020-06-20 17:18:48 150

原创 任性!Python批量压缩图片,无大小限制

任性!Python批量压缩图片,无大小限制需求分析在网站上传图片时,发现对图片的大小有要求,需要对大量的图片进行压缩自己搭建网站的时候,也会希望服务器上的图片越小越好百度一下,你就收费百度一下【图片压缩】,弹出来的那些可以在线压缩的网站,要不对图片的数量、要不对图片的大小有要求,最后一般都会提醒你去充值会员。。tinypnggoogle后发现了一个不错的网站https://tinypng.com/但也有限制:最多20张图片,每张不能超过5MB,我刚好两个都不满足。。。然后在它的网站上找到了

2020-06-20 10:22:55 603

原创 java运行时数据区域的划分与知识点(java面试必备)

运行时数据区域java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域下图是jdk8后的JVM内存布局,引用于https://www.cnblogs.com/czwbig/p/11127124.htmljdk8之前的JVM内存布局,来源如上1.1 程序计数器Program Counter Register程序计数器存储的值分为两种情况:执行java的方法时,程序计数器存储下一条需要执行的字节码指令的地址执行native方法时,程序计数器为空(undefine

2020-06-19 10:09:21 411

原创 java 局部变量表中Variable Slot复用带来的内存回收问题

java 局部变量表中Variable Slot复用带来的内存回收问题背景介绍java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域下图是jdk8后的JVM内存布局,引用于https://www.cnblogs.com/czwbig/p/11127124.html从图中可以看到,栈帧是虚拟机栈中的元素,是一个方法在内存中的实体映射,局部变量表则是存储方法中的局部变量的一张表。局部变量表中一般一个Variable Slot存储一个变量,除了64位的类型变量要用两个sl

2020-06-18 08:16:40 450

原创 python爬虫获取天猫店经营者资质证书(更新到2020.06.13

python爬虫获取天猫店经营者资质证书(更新到2020.06.13爬取需求excel表中给定多个天猫的店铺链接,获取店铺的经营者资质证书,保存为本地图片代码基于之前写的一个博客https://blog.csdn.net/qq_36267931/article/details/106715506,所以代码中有的部分是用于获取店铺链接的,希望不会给读者带来疑惑效果预览资质证书保存为png的形式,名称为店铺名字单张资质证书信息类似下图环境准备python3合适版本的chromedr

2020-06-13 10:43:06 2182 2

原创 python爬虫获取天猫店铺信息(更新到2020年)

python爬虫获取天猫店铺信息爬取需求在天猫搜索一个关键词,然后抓取这个关键词下的相关店铺,由于taobao的反爬策略,只能爬取到第十页大概200个店铺的信息。效果预览最终爬取的数据用excel保存,部分数据如下环境准备python3合适版本的chromedriver 参考https://blog.csdn.net/BinGISer/article/details/88559532第三方库:selenium、pandas、BeautifulSoup(pip install b

2020-06-12 14:46:28 6081 3

原创 《JAVA编程思想》笔记

《JAVA编程思想》笔记接口与抽象类抽象类的关键字为abstract,接口的关键字为interface抽象类中至少有一个抽象方法,可以有部分方法的实现。接口则全为抽象方法,不能有具体实现一个类只能继承一个抽象类或者具体类,但可以实现多个接口,类似于C++中的多重继承,但不会存在一个方法在多个基类上都有具体实现的问题,因为只继承了一个类,其他都是接口。抽象类中的抽象方法不能是static和private的,接口中的方法无需指定也是public的接口中的变量自动是public、static和fin

2020-05-16 20:46:38 147

原创 Android 监听双卡信号强度(更新到android10

Android 监听双卡信号强度(更新到android10背景介绍Android一开始设计并没有考虑双卡的情况,很多APi都是对默认的sim卡做操作,需要监听两张sim卡的信号强度,必须采用一些特殊的方式,比如反射。该文章基于android10的源代码做分析,对网上一种通过反射改PhoneStateListener中mSubId的方法(点这了解)做了修正,使其适应android10版本相关Android类android.telephony.PhoneStateListenerandroid.te

2020-05-15 17:53:11 2505 1

原创 还分不清适配器模式和装饰者模式?用一张表给你说明白

适配器模式和装饰者模式的区别,都在这张表里面了适配器模式装饰者模式关键字改接口,重复利用,包装模式不改接口,增强行为,包装模式定义适配器模式将一个类的接口,转换为客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。装饰者模式允许用户用组合的方式而不是继承对已有的类的功能进行扩展,扩展后的类为装饰者,被扩展的类为被装饰者,装饰者与被装饰者具有相同的方法...

2020-05-05 13:23:01 301

原创 用遥控器的例子逐步介绍命令模式

命令模式摘要这一篇文章用一个非常非常详细的用遥控器控制家电的例子来解释命令模式,用命令模式和不用命令模式的情况都有了具体的代码,方便大家做出比较,进而得到命令模式的优缺点。一开始我不会直接给出命令模式的定义,在例子中适合的时候我才会给出定义,方便读者循序渐进地理解命令模式的设计动机。这篇文章写了很久,各位看官走过路过不要错过,都进来看一眼吧。模式动机在软件设计中,我们经常需要向某些对象发...

2020-05-01 18:04:54 1354

原创 关于单例模式你需要知道的都在这了

关于单例模式你需要知道的都在这了定义单例模式确保一个类只有一个实例,并提供一个全局访问点做法把类的构造函数设置为private,用一个静态变量存储本身的唯一一个实例,然后通过静态方法获取唯一的实例。应用场景下面列举的应用场景引用于https://blog.csdn.net/tanyujing/article/details/14160941Windows的Task Manager(...

2020-04-21 12:05:46 438

原创 用抽象工厂模式开奶茶店

用抽象工厂模式开奶茶店相关概念产品等级结构 :产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCL电视机,则抽象电视机与具体品牌的电视机之间构成了一个产品等级结构,抽象电视机是父类,而具体品牌的电视机是其子类。产品族 :在抽象工厂模式中,产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品,如海尔电器工厂生产的海尔电视机、海尔电冰箱,海尔电视...

2020-04-20 13:57:19 711

原创 用工厂方法模式吃上不同品种的水果

用工厂方法模式吃上不同品种的水果定义工厂方法模式(Factory Method Pattern)定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法模式让类把实例化推迟到子类。适用场景我们创建实例的一般方式是用new,举个最简单的例子Fruit apple=new Apple();apple的类型是接口或者抽象类,符合“针对接口编程,而不是针对实现编程”的设计原则,但n...

2020-04-19 11:40:36 1487

原创 如何通过装饰者模式把你的猫变成女朋友

学习装饰者模式–通过详细的代码与例子定义装饰者模式允许用户用组合的方式而不是继承对已有的类的功能进行扩展,扩展后的类为装饰者,被扩展的类为被装饰者,装饰者与被装饰者具有相同的方法签名,而且有自己另外的方法。应用场景当使用继承的方式无法很好地对代码进行扩充时,可以考虑用装饰者模式,比如有一个奶茶基类,开始只有奶和茶,想做出珍珠奶茶,我们用继承实现一个珍珠奶茶类,想做出芒果味奶茶,我们用继承实...

2020-04-17 10:10:26 401 2

原创 了解观察者模式--通过详细代码与例子

观察者模式应用场景建立一个对象与多个对象之间的一对多的依赖关系,一个对象状态发生改变时将会通知其他对象,发生状态改变的对象为subject,变化主体,被通知的对象为observer,一个subject可以有多个observer,且observer之间相互独立,可以随机增减observer。常见的例子有微信的公众号与关注的人,公众号为subject,关注的人为observer,当有新推送时,所有...

2020-04-16 14:47:14 282

原创 了解策略模式--通过详细代码与例子

通过详细的例子与代码了解策略模式应用场景完成一项任务,往往可以有多种策略可以实现,要想灵活选择策略和添加新策略,可以使用策略模式。比如从数组中查找某个值的任务,我们可以从头到尾遍历查找,可以从尾到头遍历查找,如果数组有序,还可以用二分法查找。不同的数组可以采用不同的策略来实现查找任务,我们还想让数组的查找方式能设置与修改,这时候就可以用上策略模式,把不同的查找方法封装成独立的类,数组可以自行...

2020-04-15 12:14:57 238

原创 AODV路由协议详解

移动Ad Hoc网络(Mobile Adhoc Network,MANET)是一种无线自组织的网络,它允许一组可任意移动且支持无线通信的节点在没有固定的通信基础设施下进行通信,网络中任一节点都具备路由器的功能,可以接收和转发数据到MANET中的特定节点。由于MANET不依赖固定设施,MANET被广泛应用于军事通信和抢险救灾等领域。AODV(Ad Hoc On-Demand Distance Vector)路由协议是专门为移动Ad Hoc网络设计的路由协议,它是一个按需路由协议,只要当需要建立到目的节点的路

2020-04-04 20:03:46 26347 9

原创 Ping与Traceroute

Ping与TraceroutePingPing用于测试目的主机是否可达。如果目的主机设置了防火墙,会导致ping失败。ping是基于ICMP协议实现的,不是基于TCP也不是基于UDP,曾经面试被忽悠过Ping发送一份ICMP回显请求报文给目的主机,并等待返回ICMP回显应答报文Unix系统在实现ping程序时会把标识符设置成发送进程的ID号,为了同一台主机可以运行多个ping程序pin...

2020-01-30 23:37:06 765

原创 ICMP协议

ICMP协议简介ICMP–INTERNET CONTROL MESSAGE PROTOCOL 网络控制信息协议ICMP负责传递IP协议或更高层协议的差错报文以及其他需要注意的信息,正式规范在RFC792ICMP报文在IP数据报内部被传输ICMP报文格式与类型类型字段有15个不同的值,描述不同类型的ICMP报文,同一个类型下用代码字段描述不同报文检验和是整个ICMP报文的检验和,不...

2020-01-30 21:14:13 270

原创 RARP协议

RARP协议RARP–Reversed Address Resolution Protocol 官方定义在RFC903ARP跟RARP的关系RARP跟ARP的异同这是用于以太网的ARP的请求应答分组的格式,图中以太网地址就是物理地址RARP跟ARP都是请求广播,响应单播RARP的请求应答分组跟ARP的形式上一样,不同之处如下ARP的帧类型是0x0806 表示后面数据是ARP分组...

2020-01-29 21:52:30 2159

转载 【转】TCP/IP协议——ARP详解

文章转自https://www.cnblogs.com/songwenlong/p/6103406.html欢迎大家去看原文本文主要讲述了ARP的作用、ARP分组格式、ARP高速缓存、免费ARP和代理ARP。1.学习ARP前要了解的内容建立TCP连接与ARP的关系应用接受用户提交的数据,触发TCP建立连接,TCP的第一个SYN报文通过connect函数到达IP层,I...

2020-01-29 14:59:45 454

原创 SLIP协议与PPP协议

SLIP协议与PPP协议SLIP协议和PPP协议都是链路层协议,都提供直接相连的两台设备之间传输数据报的方法SLIP协议SLIP协议全程 Serial Line IP。它是一种在串行线路上对IP数据报进行封装的简单形式,在RFC 1055中有详细描述SLIP提供了两个特殊字符,END(0xc0)和 ESC(0xdb)SLIP报文的头尾都有一个END字符,头部的END是用来结束之前的噪声,...

2020-01-29 11:27:02 4449

Android平台实现AODV路由协议的代码与文档(2020年).zip

AODV(Ad Hoc On-Demand Distance Vector)路由协议是专门为移动Ad Hoc网络设计的路由协议,它是一个按需路由协议,只要当需要建立到目的节点的路由时,才会发起路由发现过程更新路由,支持单播路由与多播路由,使用序列号来保证路由得到及时更新,同时也避免了循环路由和计数到无穷的问题。 本文件提供了Android平台基于AODV路由协议的聊天APP的文档与代码。经过实验,该APP可以在不同Android版本的移动手机上运行,并对AODV路由协议原理有较好的体现,基本所需的功能如发现可连接设备、连接设备、自动路由、数据传输和异常报错都得到了实现。

2020-07-08

空空如也

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

TA关注的人

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