- 博客(93)
- 收藏
- 关注
原创 QT笔记1
QtCreator本身不带编译功能,必须自己安装C++编译器,Windows上可以装Visual Studio来提供编译器。(提供QtCreator开发环境,调用VS2017的C++编译器)(3) QtCreator。(必须:提供C++编译器给QtCreator)(CMake+MSVC2017+CBD调试)QT开发环境包括三部分:(1)
2025-12-20 19:39:42
202
原创 JavaScript-Web APIs-BOM
/ h = parseInt(剩余的总秒数 / 60 / 60 % 24) // 将 剩余的总秒数 转换为 剩余的小时。//d = parseInt(剩余的总秒数/ 60/60 /24);// 将 剩余的总秒数 转换为 剩余的天。//将 剩余的总秒数 转换为 剩余的秒数。// 4. 将剩余的总秒数count 转换为 剩余的天/剩余的时/剩余的分/剩余的秒。// 3. 得到剩余的时间戳 count(毫秒) 记得转换为 剩余的总秒数。方法2:简写 +new Date() (
2025-10-03 00:54:46
302
原创 inline关键字+reified 关键字
这样的泛型类型传递给一个函数,在运行时,该函数只知道它接收到的是一个。因为类型擦除的关系,在实际运行的时候,你是无法知道一个泛型的确切类型。Kotlin 中带有实化类型参数的内联函数巧妙地解决了这个问题。关键字,类型信息会在调用点保留下来,从而在运行时可以访问。,你告诉编译器将函数代码直接复制到调用点,再加上。在java中,如果将一个集合。也可以JSON字符串序列化。
2025-09-27 15:27:28
170
原创 android-USB-STM32
usbDevice.getInterfaceCount() 这个方法返回该USB设备提供的接口(Interface)的数量。一个USB设备就像一个公司,而接口(Interface) 就像是这个公司里的不同部门。每个部门有自己特定的功能和工作方式。一个USB设备至少有一个接口。复杂的USB设备(如多功能打印机、集线器)可能有多个接口。这完全取决于设备的类型和功能。对于你的STM32 CDC设备,答案很典型:通常是 2 个接口。。用于设置波特率、数据位、流控等通信参数。。
2025-09-19 20:57:42
726
1
原创 JavaScript-基础-ECMAScript
JavaScript简介JavaScript简介JavaScript 是什么是一种运行在客户端(浏览器)的编程语言,实现人机交互效果。JavaScript的作用(做什么?网页特效 (监听用户的一些行为让网页作出对应的反馈)表单验证 (针对表单数据的合法性进行判断)数据交互 (获取后台的数据, 渲染到前端)服务端编程 (node.js)
2025-07-18 20:39:11
585
原创 CSS基础1.1
3.复制images和uploads子目录到xtx-pc-client文件夹目录中。2.复制favicon.ico图标到xtx-pc-client文件夹里。1.新建项目文件夹xtx-pc-client,在VScode中打开。index.html整个项目入口首页文件。4.新建index.html在根目录。
2025-07-12 01:05:41
495
原创 CSS基础3
keyframes 是用来指定 CSS 动画过程中,在特定时间点需要应用的样式规则。你可以在 @keyframes 内部定义动画序列中的关键帧(即动画的不同状态),然后浏览器会自动计算这些关键帧之间的过渡效果。@keyframes动画名称0% { /* 起始状态 */ } 220% { /* 中间某个时刻的状态 */ }...100% { /* 结束状态 */ }
2025-06-25 16:28:46
544
原创 CSS基础2
如果一个父块级元素没有设置height 或者设置 height: auto;但是里面的所有子元素都设置float: left/right属性子元素就会脱离标准文档流 不在占据自己原来的位置空间,这些浮动子元素( 不能像之前没有设置float浮动一样,可以决定撑开父元素高度)不能撑开块级父元素空间高度,导致父元素布局无法正常显示,如果父元素设置了具体的高度值 那么即使 子元素添加了浮动float熟悉 父元素布局也会正常显示 不会出现父元素高度塌陷的问题。
2025-06-03 16:02:57
738
原创 CSS基础1.2
CSS:层叠样式表CSS给页面中的HTML标签设置样式。比如文本的颜色、字体大小、页面布局、背景图片等,从而使网页不仅具有良好的结构(通过 HTML 实现),还能拥有美观的视觉效果。css写在style标签中,style标签一般写在head标签里面,title标签下面。
2025-05-06 19:55:37
667
原创 HTML基础笔记
HTML 超文本标记语言——HyperText Markup Language。超越普通文本,具有链接功能 - 通过链接可以把多个网页链接到一起。标签成对出现,开始标签和结束标签之间包裹内容。标记也叫标签,带尖括号的文本。<>里面放英文字母(标签名)一般都是小写。结束标签比开始标签多 /
2025-04-25 17:21:31
708
原创 C_内存 内存地址概念
内存地址是变量的位置标识,而值是该位置中存储的内容。修改值只是改变了内容,而位置本身不会发生变化。指针是C语言中直接操作内存的核心工具。指针本质上是一个变量,它存储的是另一个变量的内存地址。计算机的内存(RAM,随机存取存储器)是用来存储程序运行时的数据和指令的地方。这些地址从0开始编号。变量在内存中的内存地址。
2025-04-11 21:56:19
1119
原创 C基础笔记_指针专题
C 和 C++ 是系统级编程语言,它们的设计目标之一是允许开发者直接与硬件交互并高效地管理资源。指针提供了极高的效率和灵活性,特别是在性能敏感的应用中。mallocfreenewdeleteJava 和 Python 中也有类似的功能(如对象引用和垃圾回收),但这些功能是由运行时环境自动管理的,程序员无法直接干预。指针是实现复杂数据结构(如链表、树、图等)的核心工具。在 Java 中,类似的结构可以通过对象引用来实现,但底层的内存管理和指针操作是由 JVM 自动完成的。
2025-04-09 21:03:25
687
原创 C基础笔记20250325
define由于宏仅是文本替换,在调试时查看变量值时无法直接看到宏的名字,这可能使调试更加困难。宏的作用范围从定义点开始直到文件结束或遇到#undef指令为止,不具备块级作用域的概念。宏是全局性的,除非特别限制在一个文件内通过条件编译实现。适合用于定义简单的常数值,特别是当这个值需要被用作数组大小、case标签或其他不允许有变量的地方。也常用于条件编译。const。
2025-03-28 20:09:31
726
原创 定时器AlarmManager
AlarmManager常常用于需要周期性处理的场合,比如闹钟提醒、任务轮询等等。并且定时器来源于系统服务,即使App已经不在运行了,也能收到定时器发出的广播而被唤醒。AlarmManager是Android提供的一个全局定时器,其使用范围要大于Timer方式。因为Timer方式采用Thread通信,所以只适用于线程间通信,并且生命周期也有限。如果在Activity中定义Timer,那么Activity页面销毁后,定时器也失效了;
2024-10-14 22:17:21
696
原创 Android架构--MVVM
具体到Android开发中,开发架构就是描述三者之间的关系和实施:视图层:用户界面,即界面的展示、以及交互事件的响应。逻辑层:为了实现系统功能而进行的必要逻辑。数据层:数据的获取和存储,含本地、server。
2024-10-07 21:15:06
1101
原创 感知生命周期的数据组件--LiveData
LiveData是Android中用来进行数据监听的类。由于一些限制,现在官方推荐使用Flow进行数据监听。在ktx拓展包中,使用LiveData.asFlow()可以很方便的将LiveData转换为Flow。Flow.asLiveData()也可以很方便的将Flow转换为LiveData。
2024-08-08 22:11:39
711
原创 生命周期组件-Lifecycle
假如我们想要监听的类(不是Activity)没有实现,那么就没有办法直接获取LifeCycle。所以就需要进行自定义。) {
2024-08-06 15:56:11
822
1
原创 VideoView
setOnCompletionListener(MediaPlayer.onCompletionListener l):设置监听播放完成的事件。void setVideoURI(Uri uri):以Uri的方式设置视频源,网络Uri或本地Uri。void stopPlayback():停止播放,调用resume()可以从头重新播放。int getDuration():获取当前播放视频的总长度,单位为毫秒。void pause():暂停,调用start()可以继续。void start():开始播放。
2024-08-04 21:01:46
279
原创 Activity
当调用到onNewIntent(intent)的时候,需要在onNewIntent()中使用setIntent(intent)赋值给Activity的Intent.否则,后续的getIntent()都是得到老的Intent。,如果在任务的栈顶正好存在该Activity的实例,就重用该实例( 会调用实例的 onNewIntent() ),否则就会创建新的实例并放入栈顶,即使栈中已经存在该Activity的实例,只要不在栈顶,都会创建新的实例。如果栈中不存在该实例,将会创建新的实例放入栈中。
2024-07-27 08:34:19
1253
原创 Service
通过方法启动,此服务可以在后台一直运行,不会随启动组件的消亡而消亡。但是,此种启动模式只能执行单一操作,并且无法返回结果给调用方,主要常用于网络下载、上传文件,播放音乐等。通过启动模式启动的Service,如不主动关闭,Service会一直在。首次调用完startService函数后,Service1的onCreate和onStartCommand函数会依次执行,表示服务正式启动;
2024-07-22 20:22:55
1324
原创 git 代码回退 soft hard区别
git hard 回退 会清除掉 你当前修改的所有文件代码内容 或添加的新文件 把当前文件恢复到没有修改前的状态。git soft 回退 不会清除掉 你当前修改的所有文件代码内容 或添加的新文件。一:只是本地修改提交到本地版本库仓库,代码如何回退。把当前文件恢复到当时修改时的状态。
2024-06-29 17:25:41
191
原创 Kotlin 协程与 Retrofit
Kotlin 协程与 Retrofit | Jinyan's BlogKotlin 协程与 Retrofit | Jinyan's Blog
2024-06-09 21:11:04
202
1
原创 补篇协程:协程(Coroutine)里使用suspend函数实现异步IO操作
因此,每次异步传输的信息都以一个起始位开头,它通知接收方数据已经到达了,这就给了接收方响应、接收和缓存数据比特的时间;按照惯例,空闲(没有传送数据)的线路实际携带着一个代表二进制1的信号,异步传输的开始位使信号变成0,其他的比特位使信号随传输的数据信息而变化。例如在键盘上数字“1”,按照8比特位的扩展ASCII编码,将发送“00110001”,同时需要在8比特位的前面加一个起始位,后面一个停止位。使用了异步IO,在发起IO请求到实际使用数据这段时间 内,程序还可以继续做其他事情。
2024-06-08 22:19:20
838
1
原创 Java IO流详解
IO流是基于流的概念,它将数据的输入和输出看作是一个连续的流。数据从一个地方流向另一个地方,流的方向可以是输入(读取数据)或输出(写入数据)。以字节为单位读写数据,适用于处理二进制字节数据,如图像、音频、视频等。通过IO流可以进行网络数据的传输和接收,如Socket通信、HTTP请求等。通过IO流可以读取和写入文件中的数据,如读取配置文件、写入日志等。通过IO流可以将数据读取到内存中,或将内存中的数据写入到数据库中。IO流的原理是通过流的管道将数据从源头传输到目标地。:从字节数组中读取字节数据的类。
2024-06-08 21:41:37
907
1
原创 仿作用域函数with自定义各种myWith1/2/3/4/5/6/7(...)函数
【代码】仿作用域函数with自定义各种myWith1/2/3/4/5/6()
2024-06-04 14:46:30
158
原创 使用匿名labmda表达式对一个函数的参数是个函数类型的具体实现时的 双向回调数据 双向处理业务逻辑
双向回调数据 双向处理业务逻辑在android的应用场景就是:Activity界面的RecyclerView与Adapter双向的相互传递数据处理业务逻辑。
2024-05-28 20:20:44
285
原创 二次重温协程
Job是协程的句柄。如果把门和门把手比作协程和Job之间的关系,那么协程就是这扇门,Job就是门把手。意思就是可以通过Job实现对协程的控制和管理。Job我们可以认为他就是一个协程作业是通过生成的,同时它运行一个指定的代码块,并在该代码块完成时完成。我们可以通过isActive来获取到Job的当前状态。Deferred 继承了 Job 接口 , 是 Job 接口的子接口;机翻文档 , 仅供参考;/*** 定义协同程序构建器的开始选项。
2024-05-02 22:08:07
1020
原创 函数的参数命名和默认参数
在Kotlin中,函数可以有多个参数,记住参数的顺序或者仅靠位置理解他们的作用可能会很具有挑战性,特别是对于接受多个参数或者有相同类型参数的函数。命名参数通过允许开发者指定传递给函数的每个参数的名称来解决这个问题。
2024-04-15 15:22:56
442
原创 安全调用(?.) Elvis运算符(?:)
安全调用运算符允许开发者在可能为空的对象上安全地访问属性或调用方法。如果对象不为空,操作就会被执行;如果对象为空,则跳过操作,并返回null而不是抛出NullPointerException。如果text不为null,那么length将被赋予text的长度;如果text为null,那么length也将为null,全部都不会报NullPointerException。
2024-04-15 14:47:32
669
原创 Android 内存优化&内存泄漏处理
匿名内部类的泄漏原因:匿名内部类会隐式地持有外部类的引用.当外部类被销毁时,内部类并不会自动销毁,因为内部类并不是外部类的成员变量,它们只是在外部类的作用域内创建的对象,所以内部类的销毁时机和外部类的销毁时机是不同的,所以会不会取决与对应对象是否存在被持有的引用.
2024-02-24 19:14:46
1850
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅