自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 Android组件化框架设计与实践

上图是目前比较普遍使用的 Android APP 技术架构,往往是在一个界面中存在大量的业务逻辑,而业务逻辑中充斥着各种网络请求、数据操作等行为,整个项目中也没有模块的概念,只有简单的以业务逻辑划分的文件夹,并且业务之间也是直接相互调用、高度耦合在一起的。单一工程模型下的业务关系,总的来说就是:你中有我,我中有你,相互依赖,无法分离。如下图:组件化的指导思想是:分而治之,并行开发,一切皆组件。要实现组件化,无论采用什么样的技术方式,需要考虑以下七个方面问题:代码解耦。如何将一个庞大的工程分成有机的整体。

2025-01-16 15:41:16 723

原创 Android开发经验的有效总结,社招面试心得_参加招聘会面试android开发的感想和收获

Flutter最大的优势之一就是可以定制你在屏幕上看到的任何东西,不管它有多复杂。(6)有自己的渲染引擎Flutter使用Skia将界面渲染到平台提供的画布上,意味着不需调整,即可迁移到其他平台。简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。

2025-01-16 14:42:22 870

原创 Android开发的未来发展方向

目前现在是需求量趋于平衡,对初中级水平的开发人员需求量变少,但是对高级以上的需求市场还是很匮乏,特别是对于特定细分领域的Android开发人员也是很匮乏,对Android开发的综合能力,特别是基础原理性要求也越来越高,比如很多公司要求会对对某项要求会优先考虑,比如现在流行的Kotlin,混合开发,跨平台开发,NDK,高级图像处理等,市场上很火爆的直播和小视频对音视频这个细分领域的高级人才需求量也是比较大的,以至于AI、AR、VR等技术也需要通过终端展示给用户,所以说移动端开发未来还是会有所作为。

2025-01-16 14:41:01 1531

原创 Android开发是简单的「能写应用就行」吗?

仔细考察这个团队的背景,如果创始人和合伙人是这个领域的牛人,更重要的是他有过成功的经历,那么,加入其中的风险则可有效降低。而大公司比较趋同于流程,如果你愿意在团队中安心地做一颗螺丝钉,在前人已经沉淀地较深的技术基础上学习和修补,那么,大公司也是不错的选择。这是你快速成长成熟的阶段,此时你可能已经有过一次跳槽经历,已经可以独立带领一个小团队,成为一名技术Leader,或小型创业公司的CTO。优秀的Android工程师一般也具有良好的产品思维,比起公司规模,他们更看重产品的前景。

2025-01-16 14:39:39 945

原创 Android中调用系统所装的软件打开文件

在这里你一定有疑问,这个MIME_MapTable是什么?//在MIME和文件类型的匹配表中找到对应的MIME类型。//获取后缀名前的分隔符"."在fName中的位置。//设置intent的data和Type属性。* 根据文件后缀名获得对应的MIME类型。//设置intent的Action属性。//获取文件file的MIME类型。//{后缀名, MIME类型}/* 获取文件的后缀名 */

2025-01-16 13:09:00 728

原创 android中的动画

这里写代码片public class MainActivity extends Activity {}

2025-01-16 13:06:59 174

原创 android中RecyclerView的简单使用(四)——上下拉刷新的实现

((FooterHolder) holder).mtv.setText(“正在加载更多数据…((FooterHolder) holder).mtv.setText(“没有更多数据了…// 底部视图的两种方式-加载更多 和 没有更多数据了。//根据viewHolder判断布局的加载。//当前页面能见的最后一个item的id。//mrv滑动的时候会回调这个方法。// 两种view的类型。//判断底部视图加载状态。//能显示的数据最大值。//底部视图的两种状态。//判断是否加载数据。

2025-01-16 13:04:57 915

原创 10天学会kotlin DAY6 继承、类、重载

/ -> else 由于我的show 函数,是使用枚举类 类型来做判断处理的,这个就属于 代数类型,就不需要写else 了。// kotlin 中所有的类,默认是 final 修饰的,是不能被继承的,和Java 相反。// sealed 密封类,里面的成员,就必须有 类型,并且继承自 本类。// 外部的类,能访问嵌套的内部类,嵌套的内部类不能访问外部的类。// 内部类的特点:外部类,能访问内部类,内部类能访问外部类。// 嵌套类: kotlin 默认情况下,就是一个嵌套类。

2025-01-16 00:59:37 478

原创 10分钟理解ES6箭头函数

是静态的箭头函数的写法为什么叫箭头函数( Arrow Function )?因为它的写法,看上去就是一个箭头:它等价于:此外,还可以传多个参数,以及可变参数。// 多参数// 可变参数i++) {当有多条语句时,需要配上{...}和return。另外,如果返回的结果是对象,则需要配上(),像下面这样:从上述的写法来看,相较普通函数而言,箭头函数的确简便了很多,提升了我们代码的易用性。

2025-01-16 00:57:36 457

原创 10个省时间的 PyCharm 技巧

在需要选择某个函数的时候,只需要把光标放在最前面,然后点击 Command + Option + Shift + [ ,就可以选择对当前代码块, 使用 Command + /注释。有时候需要输入很长的代码,比如 if __name__ == ‘__main__’: ,这时候手动输入不如直接Command + J ,就可以直接插入常用代码了。调用库时,你可以在你好奇的几乎任何地方点击 Command+B,就可以很方便的跳转到源码里的类,方法,函数,变量的定义。Shift + F10:直接运行当前代码。

2025-01-16 00:55:34 387

原创 02【Java的IO模型】_java io包是属于哪种io模型

如果连接大多是长连接,则会导致连接无法释放,新的请求将无法得到处理,另外,BIO这种一个请求对应一个线程的方式在应对高并发的情况下,服务器必须也要创建同等量的线程来处理客户端的请求,这样对系统的消耗是非常大的;在NIO模型中,每个请求都会有一个与服务器做数据交互的通道(Channel),所有的通道都被注册到一个选择器中(selector),当需要与服务器做数据交互时,数据通过管道写入到一个缓冲区(Buffer)中,服务器通过往缓冲区中读取数据,如果当前通道没有数据时,就什么都不会获取,

2025-01-15 23:47:59 537

原创 02-SpringBoot工程中JDBC应用实践

在上图中,用户通过DataSource对象的getConnection()方法,获取一个连接。数据库连接池在Java数据库相关中间件产品群中,应该算是底层最基础的一类产品,作为企业应用开发必不可少的组件,无数天才们为我们贡献了一个又一个的优秀产品,它们有的随时代发展,功成身退,有的则还在不断迭代,老而弥坚,更有新生代产品,或性能无敌,或功能全面。" values (‘维护通知’,‘2020-02-02 19:00 系统维护’,‘1’,‘0’,now(),‘tony’,now(),‘tony’) ";

2025-01-15 23:45:57 689

原创 01-自定义Pass_在ue5源码中添加自定义pass

从上面的🌰中看到,在clang或者opt调用自定义Pass都需要指定自定位Pass库文件的全路径,下面将Pass注册到llvm中,免去命令load Pass库的操作llvm源码中 /workspace/llvm-project/llvm/include/llvm/和/workspace/llvm-project/llvm/lib中的目录结构是大致相仿,include/llvm用于防止头文件,lib用于放置实现代码。将自定义Pass注册进llvm,就是在这两个目录下进行修改。

2025-01-15 23:41:49 503

原创 【C++初阶:STL —— list】list的介绍及使用 list的深度剖析及模拟实现 list与vector的对比_c

可以看到算法里的 sort、reverse 的声明,它的模板参数的命名不是 T,也不是 iterator,对于模板参数的命名可以任意,但是它的命名是有含意的。后面学了继承,就可以知道它们满足一个继承关系。如下可以看到算法里 swap 的 C++98 的实现,无论是 string、vector、list 使用它会涉及深拷贝问题,而且这里的深拷贝代价极大,需要深拷贝 3 次 —— 当 lt1 和 lt2 交换,这里会把 lt1 拷贝构造一份 c,然后把 lt2 赋值于 lt1,c 赋值于 lt2,完成交换。

2025-01-15 00:38:49 883

原创 【Android】录屏功能实现——MediaProjection

/初始化Recorder录像机。//获取存储文件夹的位置。//服务的两个主要逻辑。

2025-01-15 00:35:07 1955

原创 【Android】AMS中关于内存回收的一些操作_android 应用退出时释放内存

/ActivityThread的 handleLowMemory()= Process.SYSTEM_UID) { //释放sqlite。//判断mProcessesToGc数量大于0,发送GC_BACKGROUND_PROCESSES_MSG。if (canGcNowLocked()) { //判断是否可以GC,根据广播 sleep 等判断。//判断是否updateOomAdj成功 当需要杀掉目标进程则返回false;//释放canvas。

2025-01-15 00:31:25 906

原创 [springboot一本通]-2

一、本文大纲RESTful风格API的好处RESTful API的设计风格二、RESTful风格API的好处API(Application Programming Interface),顾名思义:是一组编程接口规范,客户端与服务端通过请求响应进行数据通信。REST(Representational State Transfer)表述性状态传递,决定了接口的形式与规则。看Url就知道要什么资源看http method就知道针对资源干什么看http status code就知道结果如何。

2025-01-14 14:59:29 573

原创 [springboot一本通]-1

肯定是有的,但是对于这个功能很多人对功能的叫法有争议,笔者查询了维基百科、官方文档,没有得到合理的答案,也没有权威的定义,笔者知道的就有:热启动、热加载、热更新、热部署、热切换。这几个词从语义上是有区别的,但是叫什么并不重要,实现了最重要,毕竟绝大部分程序员为了使用这个功能方便开发,也不是专业的搞学术研究的。在比较新的Spring Boot devtools版本中我们已经不需要做如下的配置了,但是如果你以上的步骤都完成了,仍然无法实现代码更改之后的热加载,请参考下面的方法。虽然有破解方案,但是不建议!

2025-01-14 14:55:47 696

原创 [JVM教程与调优] 了解JVM 堆内存溢出以及非堆内存溢出

JVM内存结构从图中我们可以看到,JVM的内存结构分为两大块。一块叫,一块叫。堆区又分为两大块,一块,一块叫。区又分为区和区。区我们又分为S0与S1。可以结合下图进行理解JVM堆区非堆区呢,是属于我们操作系统的本地内存。它是独立于我们堆区之外的。它在里面有一个新的名字,叫Metaspace。Metaspace里面还包含几个块,其中有一块就是CCS,还有一块是CodeCache。当然,在我们的Metaspace中还包含很多其他块,这里就不做扩展了。接下来,我们来通过实战,来更加深入的理解JVM。

2025-01-14 14:52:05 621

原创 Python基础篇:常见常用且要常记得的数据类型--列表_items=[(‘one‘,1),(‘two‘,2),(‘three‘,3),(‘four‘,4)]

f3 = 0f4 = 0f5 = 0f6 = 0f1 += 1f2 += 1f3 += 1f4 += 1f5 += 1else:f6 += 1print(f’1点出现了{f1}次’)print(f’2点出现了{f2}次’)print(f’3点出现了{f3}次’)print(f’4点出现了{f4}次’)print(f’5点出现了{f5}次’)print(f’6点出现了{f6}次’)

2025-01-13 15:28:43 464

原创 python基础——字符串的常见操作方法【下标索引,index,count,len,replace

🎬个人简介:努力学习ing以及🎀CSDN主页。

2025-01-13 15:25:02 340

原创 Python又把GUI界面攻下了,这个界面真漂亮啊!

The tkinter package (“Tk interface”) is the standard Python interfaceto the Tk GUI toolkit. Both Tk and tkinter are available on most Unixplatforms, as well as on Windows systems.从上面描述中我们不难看出,不管你是 Mac OS 系统,还是 Windows 系统,它都可以生成相对应的操作界面,这就是所谓的跨平台。1.调用关系说明其原

2025-01-13 15:21:19 836

原创 java使用EasyExcel导入导出excel

一、准备工作。

2025-01-12 15:33:42 689

原创 Java优雅的记录日志:log4j实战篇

在java中,记录日志有很多种方式:**自己实现:**自己写类,将日志数据,以io操作方式,写数据到文本文件、数据库中。**使用log4j:**log4j可以将日志输出到console窗口、文本文件、数据库等,功能强大!**使用slfj:**slfj也是一个很强大的功能,slfj旨在一统天下,提供了logging.jar 和 log4j的接口,可以通过slfj来调用log4j,也可以调用jdk的logging。

2025-01-12 15:30:01 927

原创 java代码编译和运行在命令行中完成

我们可以做个试验,你返回 src 的上一层,执行 “java ./src/完整包名” 也是报 错误: 找不到或无法加载主类 …下面这段示例代码可以说是非常简单了,main是一个入口函数,我们在搞清楚 java 代码 编译和运行 过程的同时,也来讲解一下 args 这个字符串数组参数,作用:将字节码文件(.class文件)加载到内存中交给java虚拟机执行,直到程序执行结束的过程,该过程主要。不知道大家有没有注意过,你执行 " java 完整的包名 "的时候 ,你所在的目录是 src。

2025-01-12 15:26:19 697

原创 C语言变参数函数详解_c语言可变参数函数

va_args(ap,A) //ap为va_list类型,A为需要取出的参数类型,如int,char。va_list //这是一个特殊的指针类型,指代栈中参数的开始地址。va_start(ap,T) //ap为va_list类型,T为函数第一个参数。va_end(ap) //ap为va_list类型。

2025-01-11 21:49:46 938

原创 C语言中的多线程编程:POSIX线程库(Pthreads)入门与实战(三)_posix pthread

线程池是一种预创建并管理一组工作线程的技术,用于处理异步任务。使用线程池的优点包括减少线程创建销毁开销、更有效地利用系统资源,以及简化任务调度。在多线程环境中,任务的优先级管理可以帮助系统更高效地处理重要或紧急的任务。Pthreads提供了。调试多线程程序往往更具挑战性,因为问题可能涉及竞态条件、死锁等难以复现的现象。每当Pthreads函数返回错误时,它们通常会设置一个对应的错误码,可以通过。函数来设置线程的调度策略和优先级。

2025-01-11 21:46:05 599

原创 C语言printf函数是怎么解析格式化字符串的?_fioformatv

【代码】C语言printf函数是怎么解析格式化字符串的?

2025-01-11 21:42:23 629

原创 Alibaba内部流行的“Java突击宝典”,程序员升职加薪必备

一致性算法(Paxos+Zab+Raft+NWR+Gossip+一致性Hash)数据结构(栈+队列+链表+散列表+排序二叉树+红黑树+B树+位图)Java算法(二分查找+排序算法+回溯算法等)4-5年:提升技术广度与深度。1-3年:合格的程序员。

2025-01-11 06:35:08 220

原创 Ajax中XMLHttpRequest对象的详细解析

responseURL属性时字符串,表示发送数据的服务器的地址,如果URL为空,则返回空字符串。如果两者类型不兼容,那么服务器返回的数据会变成null,及时服务器返回了数据。这个属性时可写的,可以在调用open()方法之后,send()方法之间设置这个属性值,告诉服务器返回指定类型的数据,如果responseType设为哦空字符串,等同于默认值text。GET参数的编码方式使无法认为干涉的,这导致了不同浏览器有不同的编码方式,因此最稳妥的使人工预编码,人工编码,人工解码,从而禁止浏览器的编码干涉。

2025-01-11 06:31:26 727

原创 AI数字人:语音驱动面部模型及超分辨率重建Wav2Lip-HD_wav2lip hd

Wav2Lip模型是一个两阶段模型。

2025-01-11 06:27:44 802

原创 2021年马上结束了,回顾下我两个月面试阿里、携程等9家互联网企业(Java 岗)

但是如果做游戏的话就要一条路走到黑了,技术栈和互联网公司也会有很大不同,所以是需要一定热情的,你真的考虑好要做这一行了吗,如果你下定决心了我就给你安排二面。面试官上来就怼你的简历写的不好没有把做过的项目突出给面试官呈现想看的东西(虚心接受了,面完美团后就对简历做了修改,重点突出了做过的项目在其中的指责)为什么想跳槽,然后面试官就有了一种你现在在这家公司是这样,来了美团情况也不会有所改观的想法根深蒂固在脑海中,接下来我也就无 FU 可说。流利说的 CTO 个人感觉非常有活力,你每提一个问题都会说,嗯!

2025-01-10 23:06:22 461

原创 2021年青海省大学生首届网络安全知识与技能大赛——赛题回顾及基本讲解_青海省大学生网络安全知识与技能竞赛

比赛体验青大专家食堂的饭真好吃,傻逼神州数码的人装逼真厉害🍺赛题难易程度总体来说偏简单(青海的学生能力太差)发展方向网络工程专业的同学建议往两个方向发展(个人偏安全)1、安全技术工程师应届生薪资:9-10K左右/月知识要求:路由交换+设备安全。

2025-01-10 23:02:41 295

原创 Intellij IDEA 神级插件,效率至少提升 10 倍

这几种风格的命名方式,用快捷键 ⇧ + ⌥ + U / Shift + Alt + U可以进行快速转换,当我们需要修改大量变量名称的时候很方便。可以帮忙我们优化包导入,自动给没有修改的变量添加final修饰符,调用方法的时候自动添加this关键字等,使我们的代码更规范统一。会按照阿里Java开发手册上规范帮我们检查代码,然后对代码做不同颜色展示,鼠标放上去,会看到提示内容,帮助我们写出更规范的代码。原本只会复制你选中的代码,改完配置后,就能复制整行,无论你是否完全选中。当代码很多的时候,方便查看,很有用。

2025-01-09 06:56:37 397

原创 IDEA的正确用法-程序员必备插件

IDEA作为现在JAVA开发最流行的工具,插件可谓数不胜数,从其中找到适合自己、可以让自己的开发效率事半功倍。

2025-01-09 06:50:07 674

原创 iBeacon工作原理_python模拟ibeacon信标

BLE最重要的特点当然在于它的低能耗。举个例子,一些beacon设备靠一颗微型电池就能够持续发送一个信号两年左右(这种电池一般是不可拆卸的,你可能需要在beacon停止工作之后替换一个新的beacon)。传统蓝牙和LE蓝牙使用的都是相同的波段(2.4GHz-2.4835GHz)。BLE协议的传输速率比较低,因此除了用于发现设备和做一些简单通信之外,不太适合用于传输大量的数据流。在协议条款上,LE和传统蓝牙的信号都能够覆盖到100米的范围。

2025-01-09 06:46:48 869

原创 Android获取屏幕尺寸,屏幕适配

【代码】Android获取屏幕尺寸,屏幕适配。

2024-12-17 20:35:07 254

原创 Android程序员的春天!2021京东最新Android面试真题解析,成功拿下大厂offer_安卓春天2021

考虑到文章的篇幅问题,我把这些问题和答案以及我多年面试所遇到的问题和一些面试资料做成了PDF文档,如果有需要的朋友可以私信我【面试】免费领取点击这里领取Android面试资料汇总)**[外链图片转存中…(img-Hw2AMyuA-1611543511142)][外链图片转存中…(img-hp0yIqwC-1611543511149)]

2024-12-17 20:31:25 465

原创 Android源码剖析之Framwork层消息传递,架构师必备技能_预览返回buffer时间间隔不是标准的1000 预览帧率p ms。 导致framwork送给显示模块

自定义view,Android开发的基本功。

2024-12-17 20:27:44 916

原创 Android打造不一样的新手引导页面(二)

上一篇博客主要讲解怎样自定义一个CirclePageIndicator控件这篇博客主要讲解怎样更改ViewPager切换的效果。首先我们先来看一下默认的ViewPager的切换效果,感觉是不是很普通,因为大多数时候我们经常没有用到ViewPager的动画切换效果 ,这种想过见多了,也就觉得平淡了下面我们来看一下我们自己实现的ViewPager页面的 切换效果,总共有 四种不同的样式实现原理说明其实要实现上述的 效果非常简单,只需要以下几行代码,就搞定了。

2024-12-17 20:24:01 750

空空如也

空空如也

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

TA关注的人

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