- 博客(96)
- 收藏
- 关注
原创 Android应用优化之流畅度实操
UI布局优化使用LinearLayout代替RelativeLayout,因为LinearLayout性能上稍微好一点如果复杂的布局,我们可以使用RelativeLayout来解决复杂的布局关系尽量少用LinearLayout的layout_weight属性,因为它会消耗较大的性能对应可以复用的布局使用include标签来进行复用使用ViewStub标签来加载一些不是必定出现使用的布局使用merge来减少不必要的层级嵌套化。
2025-02-06 15:39:14
895
原创 Android平台第三方SDK会采集用户的那些隐私数据及具体实现代码
1、获取用户使用WiFi时的网络连接信息。2、获取用户移动设备的联网信息。五、获取用户地理位置信息。
2025-02-06 15:37:29
175
原创 Android——Intent
/设置电话号码,发给谁(因为类型是uri,所以要强转电话号前要加smsto)//设置电话号码(因为类型是uri,所以要强转,电话号码前要加tel:)android:text=“跳转页面并传递值”/>//取出传递参数键为parm的值(可以传递多个)android:text=“带参数带返回值”/>android:text=“跳转百度页面”/>android:text=“拨打电话”/>android:text=“发短信”/>android:hint=“文本框”/>android:text=“返回” />
2025-02-06 14:33:06
769
原创 Android——File数据存储
Toast.makeText(this, “文件保存成功”, Toast.LENGTH_LONG).show();//输入流,data.txt文件名,MODE_PRIVATE私有的。String getParent()//如果没有父目录返回null。long lastModified()//获取最后一次修改的时间。//把buffer数组中的数据存放到os字节数组中。//getBytes转为字节数组,以字节数组存储。//读取字符,读取出来是在buffer数组中。//把字节数组中的数据保存到data中。
2025-02-06 14:31:20
527
原创 Android 曝光采集,判断RecyclerView中某子view是否可见 view曝光量的统计 view是否显示在屏幕中 view展示次数统计
我们次数的曝光view就是0,1,2,3 这个时候这四个条目显示在屏幕中。2,我们通过view.getTag();获取view里的数据,必须在此之前setTag()数据,我这里setTag是在viewholder中把数据set进去的。上面第三步拿到屏幕内可见条目的起始位置以后,我们就用一个for循环,获取当前屏幕内可见的所有子view。1,这这里起始位置的view显示区域如果不超过50%,就不算这个view可见,进而也就不统计曝光。四,获取到起始位置以后,我们就根据位置获取到view及view中的数据。
2025-02-06 12:46:38
471
原创 Android 打造任意层级树形控件 考验你的数据结构和设计
我们的思路是这样的,我们显示时,需要很多属性,我们需要知道当前节点是否是父节点,当前的层级,他的孩子节点等等;注:如果你觉得你的Item布局十分复杂,且布局会展示Bean的其他数据,那么为了方便,你可以让Node中包含一个泛型T , 每个Node携带与之对于的Bean的所有数据;3、显示时,比如点击父节点,它的子节点会跟随其后显示,我们内部是个List,也就是说,这个List的顺序也是很关键的;首先我们的类继承自BaseAdapter,然后我们对应的数据集是,过滤出的可见的Node;
2025-02-06 12:44:53
673
原创 Android R WindowManagerService模块(1) WMS整体架构及启动过程
DisplayArea是Android R上新添加的容器,目的就是将复杂的窗口层级管理简单化、低耦合。而在树结构中,各个容器结构如下:可以看到,在树结构中,根节点为RootWindowContainer,叶子节点为WindowState。正是通过这种结构,WMS中将系统中所有的窗口显示管理得井井有条,并将所有窗口以Surface的形式送到SurfacaFlinger中进行合成和显示。
2025-02-06 00:52:25
692
原创 自己封装的验证码工具类以及登录验证
model.addAttribute(“codeError”, “验证码不正确,请重新输入!model.addAttribute(“userError”, “用户名或密码不正确!model.addAttribute(“userError”, “用户名或密码不正确!// 将验证码存放在session。// 通过ImageIO写出图片。// 获取创建验证码工具类实例。// 随机设置字体RGB颜色。// 随机设置字体RGB颜色。// 获取生成的验证码字符串。// 随机生成干扰线。// 获取验证码图片。
2025-01-29 19:48:31
913
原创 自己动手实现OkHttp
一些常用的状态码 100~199:指示信息,表示请求已接收,继续处理 200~299:请求成功,表示请求已被成功接收、理解、接受 300~399:重定向,要完成请求必须进行更进一步的操作 400~499:客户端错误,请求有语法错误或请求无法实现 500~599:服务器端错误,服务器未能实现合法的请求。笔者认为这和网络协议栈非常相似,用户在应用层发出简单的数据,然后经过传输层、网络层等,层层封装后真正把请求从物理层发出去,当请求结果回来后又层层解析,最终把最直接的结果返回给用户使用。
2025-01-29 19:46:27
857
原创 安卓APP调用支付宝接口的实现
/ “8000”代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)// 8000 正在处理中,支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态。// 6004 支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态。// 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误。// 该笔订单真实的支付结果,需要依赖服务端的异步通知。
2025-01-29 02:14:55
855
原创 安卓APP登录忘记密码以及通过邮箱找回密码的实现
Toast.makeText(mContext, “用户名不存在或邮箱错误”, Toast.LENGTH_SHORT).show();Toast.makeText(mContext, “用户不存在或邮箱错误”, Toast.LENGTH_LONG).show();Toast.makeText(mContext, “无网络连接”, Toast.LENGTH_LONG).show();Toast.makeText(mContext, “请稍后重试”, Toast.LENGTH_LONG).show();
2025-01-29 02:12:51
76
原创 全网最全自学黑客技术学习路线,带你少走弯路_黑客自学路线图
*什么是黑客?**这个问题让人值得思考,黑客就是玩玩圈子,录教程收徒玩网恋?赚钱建站玩空间?还是一群技术狂人?或者说是一些行走于黑白两道之间的群体?这些都值得耐人寻味,不过,黑客这一词在莎士比亚的那个年代就存在了,最早的计算机诞生于1946年宾夕法尼亚大学,而最早的黑客却出现在麻省理工学院和贝尔实验室。初代黑客指的都是一些会计算机技术的研究人员,他们热衷于挑战,崇尚自由并主张信息的共享。
2025-01-28 16:51:57
225
原创 SQL 为什么动不动就 N 百行以 K 计_oracle某支股票最长连续涨了多少交易日
1. 将数据按产品分组,将每组排序,取出前 10 名;2. 将所有的前 10 名取交集;由于我们事先不知道会有多个产品,这样需要把分组结果也存储在一个临时表中,而这个表有个字段要存储对应的分组成员,这是 SQL 不支持的,办法就行不通了。如果有窗口函数的支持,可以转换思路,按产品分组后,计算每个销售员在所有分组的前 10 名中出现的次数,若与产品总数相同,则表示该销售员在所有产品销售额中均前在前 10 名内。这样的 SQL,有多少人会写呢?况且,窗口函数在有些数据库中还不支持。
2025-01-28 07:49:27
569
原创 Spring系列第20篇:@Conditional通过条件来控制bean的注册
/环境(测试环境、开发环境、生产环境)//环境//@3@1:注意这个注解比较特别,这个注解上面使用到了@Conditional注解,这个地方使用到了一个自定义Conditione类:EnvCondition@2:枚举,表示环境,定义了3个环境@3:这个参数用指定环境上面这个注解一会我们会用在不同环境的配置类上面@Override//获取spring容器//判断容器中是否存在Service类型的bean。
2025-01-28 07:47:23
541
原创 python初学者怎么入门?如何学习python?_初学者怎么练习python
很多刚接触编程的小伙伴们想要了解一下零基础学python难不难,本篇文章就来给大家解答一下python初学者怎么入门。了解 Python 的语法、关键字、变量、数据类型、运算符、条件语句、循环语句等基本概念,并通过简单的编程练习来熟悉这些概念。从 Python 的官方网站下载并安装最新的 Python 解释器。根据自己的操作系统选择合适的版本,并按照安装向导进行安装。Python 有丰富的标准库,其中包含了很多实用的模块和函数,如字符串处理、文件操作、日期时间处理、数学计算等。
2025-01-27 21:41:14
666
原创 Java开发架构篇:领域驱动设计架构基于SpringCloud搭建微服务
1. itstack-demo-ddd-case | 基于DDD的微服务 {本段代码在上一章节已经演示}application.yml | 服务配置{本案例是静态路由,按需可以开发为动态路由}2. itstack-demo-ddd-eureka-server | 服务注册与发现。3. itstack-demo-ddd-feign | 调用方,通过API接口调用。4. itstack-demo-ddd-zuul| 网关路由组件。application.yml | 服务配置。
2025-01-24 18:41:31
443
原创 Java基础15 Java常用类
StringBuffer的特点和StringBuilder相似,都是在自身的数组上进行的修改,常用方法也一样。通过String类的源码可知,字符串的内容保存在字符数组中,该数组是final的,一旦初始化后就不可修改。equals是用于比较String的内容,==用于比较String对象的内存地址。使用双引号括起来的内容叫字符串常量值,字符串常量值分配在方法区的常量池中。
2025-01-24 17:59:42
598
原创 JavaWeb学习笔记
/3.获取数据库连接对象//4.定义sql语句//5.获取执行sql的对象 Statement//6.执行sql//7.处理结果//8.释放资源详解各个对象:DriverManager:驱动管理对象static void registerDriver(Driver driver) :注册与给定的驱动程序 DriverManager。写代码使用: Class.forName(“com.mysql.jdbc.Driver”);
2025-01-24 17:17:52
855
原创 iptables转发基础
iptables [-t TABLE] COMMAND CHAIN [num] 匹配条件 -j 处理动作要使用iptables的NAT功能,我们首先需要启用网卡的IP转发功能如果想要永久生效,我们要编辑文件,设置,然后用sysctl -p命令使配置文件生效。我们使用**-t nat**参数指明使用nat表,因为iptables默认使用filter表。nat表同filter表一样有三条缺省的”链”(chains):POSTROUTING:定义进行源地址转换规则,重写数据包的源IP地址。
2025-01-24 16:08:51
539
原创 FFmpeg 公开课之FFmpeg代码架构
将输入流转换为帧的数据包 由于解码器的输入是一个完整的帧数据包,而无论是网络传输还是文件读取,一般都是固定的buffer来读取的,而不是安装格式的帧大小来读取,所以我们需要解析器Parser将流整理成一个一个的Frame数据包。demuxer的种类很多,而且是可配置的,demuxer有多少,可以看一下demuxer_list.c文件,太多了,不一一列举了,我们举一个mp4 demuxer的例子。,对应的结构体是AVOutputFormat,也是一个接口,功能是对编码后的音视频封装进格式容器的工具。
2025-01-24 09:49:02
591
原创 CAS单点登录-Debug调试源码(十八)
以下作者采用IDEA方式监听,eclipse监听可以参考,进行调试,具体调试哪个代码按自己的实际情况。端口,当然了这个端口也是可以改的。如果看到如下您已成功了一半。的方式启用了一个远程调试。
2025-01-24 07:41:58
722
原创 android拍照!一年后斩获腾讯T3,跳槽薪资翻倍_腾讯t3工资
答应大伙的备战金三银四,大厂面试真题来啦!这份资料我从春招开始,就会将各博客、论坛。网站上等优质的Android开发中高级面试题收集起来,然后全网寻找最优的解答方案。每一道面试题都是百分百的大厂面经真题+最优解答。包知识脉络 + 诸多细节。节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。给文章留个小赞,就可以免费领取啦~戳我领取:3000页Android开发者架构师核心知识笔记《960全网最全Android开发笔记》《379页Android开发面试宝典》
2025-01-24 05:44:28
749
原创 Android WebView与Native通信总结
在上面我们已经基于方案完成了native与WebView间通信机制的实现,双方可以交换数据,但开发的时候需要考虑更多问题。比如,如果是Javascript向native发送数据,需要将数据转换成一个字符串,然后再将字符串发给native, native再去解析这个字符串,找到对应的处理方法,提取出相关的业务参数,再进行相应的处理。所以我们需要定义这个字符串的数据结构。在上面我们已经约定了,H5端可以采用向native发送数据,该方法只有一个字符串参数, 以获取用户信息这个业务功能为例,我们的字符串参数是。
2025-01-24 03:51:27
444
原创 2024年度最全面JVM虚拟机,类加载过程与类加载器
JVM的类加载的过程是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由JVM的具体实现指定的。如果符号引用指向一个未被加载的类,或者未被加载类的字段或方法,那么解析将触发这个类的加载(但未必触发这个类的链接以及初始化。确保class文件中的字节流包含的信息,符合当前虚拟机的要求,保证这个被加载的class类的正确性,不会危害到虚拟机的安全。在加载类的时候,是采用的双亲委派模型,即把请优求先交给父类处理的一种任务委派模式。
2025-01-24 01:42:34
656
原创 2020年Android开发年终总结之如何挤进一线大厂?
编码、学习、或者是面试,没有一次性做到位的决心。因此如果想面试跳槽,像掉帧监控,函数插装,慢函数检测,ANR 监控,启动监控,都需要对 Framework 有比较深入的了解,才能知道怎么去做监控,利用什么机制去监控,函数插桩插到哪里,反射调用该反射哪个类哪个方法哪个属性……一线大厂一般有很多部门负责不同的项目,里面不乏知名大学毕业,技术大牛,往往在某一领域已经做到极致,有专门的团队负责某一功能点(性能优化、性能监控、中间件工具组件等),能投入人力物力去做好项目,并且薪酬福利可观,只是工作强度会很大。
2025-01-24 00:19:27
576
原创 专题3 编写你自己的PDF编辑器, 实现PDF页面提取, 页面合并与替换_pypdf2-pdf-extract-merge-replace
【代码】专题3 编写你自己的PDF编辑器, 实现PDF页面提取, 页面合并与替换_pypdf2-pdf-extract-merge-replace。
2025-01-15 10:09:20
199
原创 专科三年的教训,写给自己,也给正在学习路上的你
就是建立好这个私有云(Openstack)平台,然后进行一些简单的运维,建立虚拟机啊,创建网络啊之类的然后再去查看它们,就这些东西。不要被竞赛迷混了眼,竞赛大方向都没问题,都是未来很好的岗位,但是你没有这些基础,直接就干openstack,docker,k8s你真的能学会吗?在公司实习的时候,主管看我的简历,也没问我技术问题,就跟我说你这写的,Linux基础,openstack,KVM,CCNA,Docker这些你都会,底层的硬件交互,网络的通信协议,你都清楚不?为本科做好打算~~~
2025-01-15 10:05:40
318
原创 专栏已被锁定,此链接仅用于预览知道了 【强烈推荐】Java入门基础笔记,超全!
&(shift+7):and符号,并且的意思,同时满足连接前后条件才为true,有一个不满足为。||(shirt+):或者的意思,只要前后两个条件一个为true,整个表达式就为true,同时为。continue:如果continue在内层循环中,表示结束内层循环的本次循环,开始内层循环的。.split(以什么为分割的字符),返回一个String的数组,将分割的每个字符串放到这个数。比如:String[] args;5.二次传递:在调用方法的时候,传递一个参数值给该方法,然后在该方法中去调用了另外的方法,
2025-01-15 10:01:58
393
原创 【Java正则表达式】有了这个Java正则表达式学习大全,几乎不用看别的资料了
\ 反斜线字符。在书写时要写为\\\\。(注意:因为java在第一次解析时,把\\\\解析成正则表达式\\,在第二次解析时再解析为\,所以凡是不是1.1列举到的转义字符,包括1.1的\\,而又带有\的都要写两次)例如, ab\\Q{|}\\\\E。在表达式中可以通过\n来对相应的组进行引用,例如(ab)34\1就表示ab34ab,(ab)34(cd)\1\2就表示ab34cdabcd。POSIX 字符类(仅 US-ASCII)(注意反斜杠要写两次,例如\p{Lower}写为\\p{Lower})
2025-01-14 19:56:31
559
原创 【Java核心面试宝典】Day1、先给大家来几个面试开胃菜
经过多方面的深思熟虑,我还是开了这样一个专栏“Java高薪面试宝典”,听着名字可能有些浮夸了,毕竟在坐的各位肯定都是技术领域的大佬呀,在这个专栏中,我想和大家分享一些在java面试中常见的一些面试问题,还有我们众多Java程序猿经常容易忽略或者在开发中常常会用到的一些问题,包括技术和管理等众多方面。毕竟很多的面试都并不会让你直接的去讲述一个完整的项目的完成过程,而是对于在项目开发中经常会被程序员们忽略反而又比较重要的一些问题,甚至有时候还会拿一个看似很简单的问题来让我们交智商税。
2025-01-14 19:52:50
864
原创 【Java数据结构】栈与队列笔试习题详解
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。一个队列是实现不了栈的,必须是两个队列,因为栈是先进后出,队列是先进先出。一个栈是实现不了栈的,必须是两个栈,因为栈是先进后出,队列是先进先出。System.out.println(“括号匹配不成功”);System.out.println(“括号匹配成功”);System.out.println(“括号匹配成功”);System.out.println(“左括号多”);
2025-01-14 19:49:08
797
原创 Python输出格式全总结_python write函数 格式控制
str()函数是用于返回人类可读的值的表示,而repr()是用于生成解释器可读的表示(如果没有等效的语法,则会强制执行SyntaxError)对于没有人类可读性的表示的对象,str()将返回和repr()一样的值。你仍将使用 { 和 } 来标记变量将被替换的位置,并且可以提供详细的格式化指令,但你还需要提供要格式化的信息。string模块包含一个Template类,它提供了另一种将值替换为字符串的方法,使用类似$x的占位符并用字典中的值替换它们,但对格式的控制要少的多。这样可以更好地控制值的格式化方式。
2025-01-13 17:21:05
714
原创 Python虚拟环境配置_python 虚拟环境 有哪些
我们在学习Python的时候,可能会学到越来越多的第三方库,比如爬虫,我们需要安装requests,可能学着学着,我们还需要安装bs4,或者又学着学着,我们还需要安装scrapy,再学着学着,又需要安装lxml…上面说的,只是其中的一些问题,但是大概我们能猜测出来,如果我们不对我们的第三方库加以管理,可能会造成莫名其妙的问题,导致效率低下,bug多,如果是一个团队的话,我想会更糟糕,后果不堪设想。答案是肯定的,我们能想到这个问题,我们的大佬前辈当然也想到了,他都替我们安排好了,我们来一一讲解。
2025-01-13 17:17:24
521
原创 Python老司机带你快速搞定日志分析工具_python分析统计squid日志
适用场景:比如定位到某一类型的uriabs在某方面(hits/bytes/time)有异常,就可以通过detail子命令对该类uriabs进行更近一步的分析,精确定位到是哪种参数(args_abs)导致的异常;其实对于上述的这些不规范的请求,最好的办法是在nginx中定义日志格式时,用一个特殊字符作为分隔符,例如“|”。子命令后可以跟具体的uri/requesturi(显示该uri/request_uri以指定粒度随时间的分布)或不跟uri(显示所有请求以指定粒度随时间的分布)中的正则定义进行定制的)。
2025-01-13 17:13:43
679
原创 LeetCode10-正则表达式匹配
解释: 因为 ‘*’ 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 ‘a’。因此,字符串 “aa” 可被视为 ‘a’ 重复了一次。解释: 因为 ‘*’ 表示零个或多个,这里 ‘c’ 为 0 个, ‘a’ 被重复一次。给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。解释: "._” 表示可匹配零个或多个(’*’)任意字符(’.’)。解释: “a” 无法匹配 “aa” 整个字符串。// 方法三 动态规划升级版本。// 方法二 动态规划。
2025-01-12 20:14:24
336
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人