自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 迅为嵌入式linux驱动开发笔记(二)—地址映射与字符设备_void __iomem(2)

/将主设备号和次设备号组成dev_t类型,第一个参数是主设备号,第二个参数是次设备号。#define DEVICE_SNAME “schrdev” //主设备号名称。#define DEVICE_ANAME “achrdev” //次设备号名称。#define DEVICE_MIN_NUMBER 0 //次设备号起始位置。//dev_t中获取次设备号。

2024-05-16 14:25:33 535

原创 物联网实战--入门篇之(八)嵌入式-空气净化器(2)

在使用上就很简单了,就是不断改变PWM值就行了,如下所示。这里还有个系数0.6主要是为了防止电流过大,影响主控设备稳定。

2024-05-15 16:20:29 586

原创 合宙ESP32C3使用PlatformIO开发点亮ST7735S_platformio开发esp32-c3

安装依赖LVGL 依赖库ESP32 芯片系列的 LVGL 驱动库直接编译会提示错误在头部增加在目录提交一下git更改为了等下测试方便,我们这里自己新增一些文件增加文件:增加文件:增加文件:增加文件:开始开发在正式写代码前,先验证一下依赖库是否存在异常点击编辑器下方的按钮,清理完成后点击如果提示就可以继续我们的开发了执行命令:打开菜单通过使用键盘的和来控制上下移动,返回上层按照下方的说明配置,全部修改完成后,按下保存成功后,一路关闭窗口进入 将以下代码复制到中

2024-05-14 18:09:51 896

原创 【物联网】详解STM32的GPIO八种输入输出模式,GPIO各种输入输出的区别、初始化的步骤详解,看这文章就行了(超详细)_stm32输出模式(1)

推挽输出(Push-Pull Output):推挽输出模式是最常见的GPIO输出模式。在该模式下,引脚可以输出高电平或低电平,同时具有一定的驱动能力。引脚在输出低电平时形成低阻抗,输出高电平时形成高阻抗,可以驱动外部电路。// 初始化推挽输出模式的GPIO// GPIO引脚号// 推挽输出模式// GPIO速度设置为高速// 初始化GPIOA开漏输出(Open-Drain Output):开漏输出模式是一种能够输出低电平和高阻抗的GPIO模式。

2024-05-14 03:43:19 1344

原创 【RT-ThreadX大学生夏令营】物联网温室环境实时监测报警系统_【rt-thread x 大学生夏令营】温湿度天气时钟 开源地址

当前项目是利用OneNet监测、传输数据给星火一号,再进行本地分析、发出控制命令。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nmQvDYnx-1690302870960)(温度.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kZNzNJn6-1690302870960)(湿度.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9YAQY0UJ-1690302870960)(亮度.png)]

2024-05-13 21:51:42 285

原创 ESP32-S3 Blufi开发学习记录_esp32s3网络开发

代码源路径:Espressif\frameworks\esp-idf-v4.4.2\examples\bluetooth\blufi。此过程事件的处理均按照收到的请求做相应的功能处理,可按照个人需求进行修改。获取网络 IP 地址,完成 IP 接口搭建。主要负责WiFi的连接、断开重连、扫描。

2024-05-13 07:20:00 1380

原创 C#部署基于pytorch的图像神经网络分类模型,实现本地化推理_c# pytorch(2)

主要就是得有OpenCvSharp、TorchSharp、libtorch三个主要的库。现在timm的模型预训练权重下载基本都得在huggingface[

2024-05-13 03:13:20 623

原创 2024年8月知识复习_iic与pwm的优劣势(2)

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种异步、串行、全双工的通信协议。发送线(TX)接收线(RX)和地线(GND),通信时必须将双方的TX和RX交叉连接并且GND相连才可正常通信。发送和接收设备之间的时钟频率可以不同,但是它们需要约定相同的波特率(传输速率)来确保数据的正确传输。UART数据包格式起始位:当不传输数据时,UART数据传输线通常保持高电平。

2024-05-13 01:42:49 1044

原创 (建议精读)HTTP灵魂之问,巩固你的-HTTP-知识体系!

从前面的小节可以知道,HTTP 传输是基于请求-应答的模式进行的,报文必须是一发一收,但值得注意的是,里面的任务被放在一个任务队列中串行执行,一旦队首的请求处理太慢,就会阻塞后面请求的处理。这就是著名的HTTP队头阻塞问题。前面说到了 HTTP 是一个无状态的协议,每次 http 请求都是独立、无关的,默认不需要保留状态信息。但有时候需要保存一些状态,怎么办呢?HTTP 为此引入了 Cookie。

2024-05-12 10:45:41 534

原创 项目实战之Rxjava、RxBinding在实际项目中的使用(2)

为了方便有学习需要的朋友,我把资料都整理成了视频教程(实际上比预期多花了不少精力)当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。

2024-05-11 21:05:33 988

原创 面试官:“会不会熟练使用Jetpack”--我:“------”

以前一直是自己在网上东平西凑的找,找到的东西也是零零散散,很多时候都是看着看着就没了,时间浪费了,问题却还没得到解决,很让人抓狂。后面我就自己整理了一套资料,还别说,真香!资料有条理,有系统,还很全面,我不方便直接放出来,大家可以先看看有没有用得到的地方吧。《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取![外链图片转存中…(img-YkPT5LsX-1715428532297)]

2024-05-11 19:55:43 736

原创 阿里大牛:选择大于努力,所以MVC、MVP、MVVM,我到底该怎么选?(2)

具有一定的分层,model彻底解耦,controller和view并没有解耦层与层之间的交互尽量使用回调或者去使用消息机制去完成,尽量避免直接持有controller和view在android中无法做到彻底分离,但在代码逻辑层面一定要分清业务逻辑被放置在model层,能够更好的复用和修改增加业务通过引入接口BaseView,让相应的视图组件如Activity,Fragment去实现BaseView,实现了视图层的独立,通过中间层Preseter实现了Model和View的完全解耦。

2024-05-11 18:26:42 816 2

原创 那天有人问我,Android 的事件到底是怎么来的?

CharSequence title, Activity parent, String id,NonConfigurationInstances lastNonConfigurationInstances,Configuration config, String referrer, IVoiceInteractor voiceInteractor,Window window, ActivityConfigCallback activityConfigCallback, IBinder assistToken

2024-05-11 17:15:41 430

原创 超经典,百度最爱考的安卓Android百题

针对于上面的问题,我总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料。(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!上搜索资料的时间来学习。**

2024-05-11 15:42:01 1081

原创 让JNI告诉你 你的应用为什么被卸载(1)

二 实例演示首先我们要明白的是,为什么有些项目中要使用C,原因很简单,哪怕是一个计算,C的效率也要高于Java,Java做的C可以做,Java不可以做的C也可以做,所以有些复杂的处理操作或者是底层相关的逻辑都可以交给C去做,像美图秀秀,播放器等软件都用了大量的C代码处理业务。验证用户名密码我们肯定要将用户名和密码传给C,我们新建一个JNI类,在类中新建一个返回整形的方法,如下所示。public native int checkUser(String name, String pass);记得使用关键字na

2024-05-11 09:59:45 347

原创 自定义Android Toast(2)

/**Show the view or text notification for a long period of time. This timecould be user-definable.*/public static final int LENGTH_LONG = 1;private Toast() {}/**Make a standard toast that just contains a text view.@param context The context to use. Usua

2024-05-11 01:51:32 320

原创 老大爷都能看懂的RecyclerView动画原理(1)

=====================================================================1. Adapter的notify方法用过RecyclerView的同学大概都应该知道Adapter有几个notify相关的方法,它们分别是:notifyDataSetChanged()notifyItemChanged(int)notifyItemInserted(int)notifyItemRemoved(int)notifyItemRangeChanged(int,

2024-05-11 00:27:47 1008

原创 简单、有趣的Kotlin异步微服务框架(一)_ 初始Ktor

可以看下下面最简单的一个get服务的定义,下面用get源码来解读:routing {get(“/”) {//可以看到这个处理get请求的handler,它实际上是一个Route的扩展函数,一起来看看源码//Route.get函数源码,其实一个Route对象就是一个对应的Handler,return route(path, HttpMethod.Get) { //route函数本质上是一个Route的扩展函数handle(body) //通过调用Route对象来处理的请求。

2024-05-10 22:59:41 1066

原创 真当Flutter不能热更新?QQ团队开源动态化Flutter

响应式UI框架WidgetTree:Widget 里面存储了一个视图的配置信息,可以高效的创建(build)和销毁Element 是分离 WidgetTree 和真正的渲染对象的中间层, WidgetTree 用来描述对应的Element 属性RenderObject 来执行 Diff, Hit Test 布局、绘制第一棵树有完整的UI描述信息,那么我只要JIT下通过 DartVM 创建第一棵树,其他耗时的操作都丢到AOT里去。

2024-05-10 20:48:32 1155

原创 热修复原理学习(2)底层替换原理和突破底层差异的方法

原因是这样的,在App启动到一半的时候,所有需要发生变更的分类已经被加载过了,在Android系统中是无法对一个分类进行卸载的。而腾讯系的方案是让Classloader去加载新的类,如果不重启App,原有的类还在虚拟机中,就无法加载新类。因此,只有在下次App重启的时候,在还没有运行到业务逻辑之前抢先加载补丁中的新类,这样在后续访问这个类时,就会解析为新的类。从而达到热修复的目的。Andfix采用的方法是直接在已经加载的类中native层替换掉原有的方法,是在原有类的基础上进行修改的。来看下 Andfix的

2024-05-10 19:29:58 987

原创 淦!在外包开发的三年给整废了,备战两个月终拿到Android阿里字节哈啰offer总结,阿里P6+这回稳了!

作为一名从事Android的开发者,很多人最近都在和我吐槽Android是不是快要凉了?而在我看来这正是市场成熟的表现,所有的市场都是温水煮青蛙,永远会淘汰掉不愿意学习改变,安于现状的那批人,希望所有的人能在大浪淘沙中留下来,因为对于市场的逐渐成熟,平凡并不是我们唯一的答案!《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!《Android汇总复习资料—Kotlin》《Android汇总复习资料—Flutter》

2024-05-10 18:10:27 1127

原创 月薪20k+的Android面试都问些什么?(含答案)

找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。多练。(视频优势是互动感强,容易集中注意力)你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。下面资料部分截图是我花费几个月时间整理的,诚意满满:特别适合有3-5年开发经验的Android程序员们学习。《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

2024-05-10 16:45:57 453

原创 攒了一个月的Android面试题及详细解答,年底准备起来,冲刺大厂单车变摩托!(下篇)

现在随着短视频,抖音,快手的流行NDK模块开发也显得越发重要,需要这块人才的企业也越来越多,随之学习这块的人也变多了,音视频的开发,往往是比较难的,而这个比较难的技术就是NDK里面的技术。音视频/高清大图片/人工智能/直播/抖音等等这年与用户最紧密,与我们生活最相关的技术一直都在寻找最终的技术落地平台,以前是windows系统,而现在则是移动系统了,移动系统中又是以Android占比绝大部分为前提,所以AndroidNDK技术已经是我们必备技能了。

2024-05-10 15:26:30 921

原创 探索 Flutter 异步消息的实现(1)

}});return result;}跟进 Timer 的实现,具体代码如下:/src/out/host_release/dart-sdk/lib/async/timer.dartstatic void run(void callback()) {new Timer(Duration.zero, callback);}factory Timer(Duration duration, void callback()) {if (Zone.current == Zone.root) {return Zone.c

2024-05-10 12:41:30 691

原创 手写代码详解Android Hook入门demo

View v = findViewById(R.id.tv);v.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(MainActivity.this, “别点啦,再点我咬你了…”, Toast.LENGTH_SHORT).show();}});这是的点击事件,了一段话,现在要求,不允许改动这个,要在之前添加日志打印 .乍一看,无从下手.看如何解决.按照上面的

2024-05-10 11:18:03 1029

原创 快速排序相关算法题(1)

┌───────────┐ pivot↓ ↓ ↓3 4 2 1 8 7 9 5 5↑ ↑storeIndex i交换后位置后,storeIndex 自增 1,storeIndex == 5:java hljs 6行pivot↓3 4 2 1 5 7 9 8 5↑storeIndex循环结束后交换基准元素和 storeIndex 位置的元素的位置:pivot↓3 4 2 1

2024-05-10 09:51:23 1015

原创 强势分享!BAT大牛带你深度剖析《全网最系统Android 三大主流开源框架(附源码)》(1)

今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司19年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。还有。

2024-05-09 22:14:11 468

原创 工作了几年的Android程序员的你,你还在迷茫吗(3)

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。下面是部分资料截图,诚意满满:特别适合有开发经验的Android程序员们学习。不论遇到什么困难,都不应该成为我们放弃的理由!如果你看到了这里,觉得文章写得不错就给个赞呗?《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》

2024-05-09 20:51:29 288

原创 学会这些Android开发热门前沿知识,2024年你就不用愁了!(2)

代码真的是重质不重量,质量高的代码,是当前代码界提倡的,当然写出高质量的代码肯定需要一个相当高的专业素养,这需要在日常的代码书写中逐渐去吸收掌握,谁不是每天都在学习呀,目的还不是为了一个,为实现某个功能写出高质量的代码。所以,长征路还长,大家还是好好地做个务实的程序员吧。最后,小编这里有一系列Android提升学习资料,有兴趣的小伙伴们可以来看下哦~《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!代码。**

2024-05-09 19:28:32 318

原创 字节跳动+京东+360+网易+腾讯,那些年我们一起踩过算法与数据结构的坑!

随着电视剧三十而已的热播,我感觉跟之前大火的我的前半生没有什么两样。除了给我一种无形的压力之外好像并没有什么用。有人说程序员也看电视剧,那不也要跟随潮流,不然怎么跟公司小姐姐聊天!嗯,走题了…30这个数字在我眼里就是被优化的代名词。所以其实这个字眼对我来说并不怎么友好,回顾一下我十年前20岁的时候刚刚从学校出来…(故事就下次说吧)今天主要的内容是给大家说一下,那些年我面试的时候在数据结构与算法上踩过的坑!最近有很多朋友在我群里留言说,马上就要秋招以及接下来还有金九银十。数据结构与算法不管在哪里都会问几乎是面

2024-05-09 18:13:47 433

原创 墙裂推荐!2024Android阿里&腾讯&百度&字节&美团校招面试汇总(2)

找工作是个很辛苦的事情,而且一般周期都比较长,有时候既看个人技术,也看运气。第一次找工作,最后的结果虽然不尽如人意,不过收获远比offer大。接下来就是针对自己的不足,好好努力了。最后为了节约大家的时间,我把我学习所用的资料和面试遇到的问题和答案都整理成了PDF文档《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!;项目中的编码规范找工作是个很辛苦的事情,而且一般周期都比较长,有时候既看个人技术,也看运气。

2024-05-09 16:07:24 517

原创 双非本科Android开发,如何逆袭拿到大厂 Offer?(1)

看了这么多书籍和网站之后需要对这些知识做一个比较系统的整理,这里推荐使用思维导图工具,下图则是我总结的Android复习体系图,完整的版本大家可以点击这里下载。Android学习是一条漫长的道路,我们要学习的东西不仅仅只有表面的 技术,还要深入底层,弄明白下面的 原理,只有这样,我们才能够提高自己的竞争力,在当今这个竞争激烈的世界里立足。人生不可能一帆风顺,有高峰自然有低谷,要相信,那些打不倒我们的,终将使我们更强大,要做自己的摆渡人。资源持续更新中,欢迎大家一起学习和探讨。

2024-05-09 13:59:54 786

原创 写给Android开发的一封信,没有深度技术的苦(1)

找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。多练。(视频优势是互动感强,容易集中注意力)你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。下面资料部分截图是我花费几个月时间整理的,诚意满满:特别适合有3-5年开发经验的Android程序员们学习。《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

2024-05-09 11:49:22 414

原创 入门级带你实现一个安卓智能家居APP(1)java版本(1)

相信大多数从事Android开发的朋友们越来越发现,找工作越来越难了,面试的要求越来越高了除了基础扎实的java知识,数据结构算法,设计模式还要求会底层源码,NDK技术,性能调优,还有会些小程序和跨平台,比如说flutter,以思维脑图的方式展示在下图;《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!终于都弄好了!!!累了累了…后面要是自己加功能或者改功能怎么做?我就随便讲几个例子,以后大家根据这些例子举一反三吧。

2024-05-09 01:08:47 978

原创 从事Android开发4年,面试通过全靠狂刷这份面试题,从11K涨到25K+(内含答案)(2)

跳槽季整理面试题已经成了我多年的习惯!在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。

2024-05-08 22:52:41 825

原创 不知不觉间成了职场老鸟!!四年多的Android开发经验都总结在这里了(2)

这里我特地整理了一份《Android开发核心知识点笔记》,里面就包含了自定义View相关的内容除了这份笔记,还给大家分享Android学习PDF+架构视频+面试文档+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这几块的内容。非常适合近期有面试和想在技术道路上继续精进的朋友。分享上面这些资源,希望可以帮助到大家提升进阶,如果你觉得还算有用的话,不妨把它们推荐给你的朋友~喜欢本文的话,给我点个小赞、评论区留言或者转发支持一下呗~

2024-05-08 20:27:58 624

原创 一个8年Android老司机的面经,教你如何进入阿里、腾讯、华为等大厂

这里只简单列举一些东西,可能不是特别全,但是却特别适用,也不一定按照下面的流程,有可能是穿插的,也有可能都有,根据公司的规模以及面试官的心情而定(哈哈哈 ,你们就自求多福吧)。建议大家还是要将下面的东西全部掌握,没事写写代码,练练手,在项目中能用到的地方一定要用,有可能会遇到很多坑,一定要自己想办法填坑,之后回忆起这段经历,肯定可以敢理直气壮的跟别人讨论。如果你说的头头是道,那么对方会先输一层,然后在心里对你佩服。1、一般情况下第一轮都是基础面试,需要扎实的基础最常用的Android 基础知识。

2024-05-08 18:29:19 826

原创 【Android进阶学习】Android-广播接收器(Broadcast-Receivers)

如果你想要应用程序中生成并发送自定义意图,你需要在活动类中通过sendBroadcast()来创建并发送这些意图。如果你使用sendStickyBroadcast(Intent)方法,则意图是持久的(sticky),这意味者你发出的意图在广播完成后一直保持着。cn.uprogrammer.CUSTOM_INTENT的意图可以像之前我们注册系统产生的意图一样被注册。

2024-05-08 16:40:33 732

原创 [译] 改善 Android Studio 的构建速度

网上高级工程师面试相关文章鱼龙混杂,要么一堆内容,要么内容质量太浅, 鉴于此我整理了上述安卓开发高级工程师面试题以及答案。希望帮助大家顺利进阶为高级工程师。目前我就职于某大厂安卓高级工程师职位,在当下大环境下也想为安卓工程师出一份力,通过我的技术经验整理了面试经常问的题,答案部分是一篇文章或者几篇文章,都是我认真看过并且觉得不错才整理出来。大家知道高级工程师不会像刚入门那样被问的问题一句话两句话就能表述清楚,所以我通过过滤好文章来帮助大家理解。现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕。

2024-05-08 14:56:37 616

原创 TextView AutoLink, ClikSpan 与长按事件冲突的解决(1)

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。上面分享的腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。【Android思维脑图(技能树)】知识不体系?

2024-05-08 12:39:13 654

空空如也

空空如也

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

TA关注的人

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