<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_51598534的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_51598534</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_51598534]]></copyright><item><title><![CDATA[如何在本地部署DeepSeek R1 ]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/145508957</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/145508957</guid><author>qq_51598534</author><pubDate>Mon, 10 Feb 2025 16:48:51 +0800</pubDate><description><![CDATA[废话不多说，火速安排！这是我集油管、B站等AI科技up主之所长，亲自试验总结的教程，非科班的小白也能看懂。（不信你发给你七大姑八大姨试试）我觉得吧，你要想本地能和deepseek官网一样的效果，那是不现实的，说实话也没这个必要，但本地部署最终要的是能解决数据隐私的问题，当然本地化部署也有其缺点：不连网的话协同搜索方面的内容会有局限。Ollama 是个啥？你可以叫它「欧拉马」，可以理解成是个自己电脑上运行大语言模型的容器，开源，免费，这玩意怎么下？]]></description><category></category></item><item><title><![CDATA[AudioRecord]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/142202786</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/142202786</guid><author>qq_51598534</author><pubDate>Fri, 13 Sep 2024 10:07:15 +0800</pubDate><description><![CDATA[AudioRecord是Android平台上的一个类，用于实时录制音频数据。它提供了一种方便的方式来捕获和处理音频流。以下是关于AudioRecord的一些介绍：音频源：Record可以从多种音频源中录制音频数据例如麦克风、电话线路、语音识别等。音频格式：可以选择不同的音频格式来录制音频数据，如PCM（脉冲编码调制）、AAC（级音频编码）等。缓冲区AudioRecord使用一个缓冲区来存储录制的音频数据。开发者可以指定缓冲区的大小，以适应不同的录制需求。]]></description><category></category></item><item><title><![CDATA[AudioTrack]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/142201725</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/142201725</guid><author>qq_51598534</author><pubDate>Fri, 13 Sep 2024 09:58:39 +0800</pubDate><description><![CDATA[AudioTrack是Android平台上的一个类，用于播放音频数据.它允许PCM音频缓冲区流式传输到音频接收器进行播放.创建AudioTrack对象：可以通过构造函数创建AudioTrack对象，需要指定音频流类型、采样率、音频通道配置和音频格式等参数。写入音频数据：可以使用write()方法将音频数据写入AudioTrack对象。写入的数据可以是PCM格式的原始音频数据，也可以是压缩格式的音频数据（如MP3、AAC等）。播放音频数据：在写入音频数据后，可以调用play()方法开始播放音频数据。]]></description><category></category></item><item><title><![CDATA[音频基础知识学习（二）]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/142170076</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/142170076</guid><author>qq_51598534</author><pubDate>Thu, 12 Sep 2024 11:17:31 +0800</pubDate><description><![CDATA[在需要播放音频的地方，可以使用 AudioController 请求音频焦点，开始播放音频。这样，我们的应用就可以与其他应用协调音频的使用，解决音频竞争问题。AudioEffect 是 Android 提供的用于处理音频的基类，它包含了一些预定义的音频效果，如均衡器（Equalizer）、混响（Reverb）、压缩器（Compressor）等。注意处理音频权限：在进行音频录制或读取外部存储中的音频文件时，我们需要在 Manifest 文件中声明相应的权限，并在运行时请求这些权限。]]></description><category></category></item><item><title><![CDATA[音频基础知识学习（一）]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/142168310</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/142168310</guid><author>qq_51598534</author><pubDate>Thu, 12 Sep 2024 11:07:35 +0800</pubDate><description><![CDATA[音频至此，我们经过了：创建 Media codec->配置 Media codec->启动 Media codec->向 Media codec申请可用的输入Buffer块 -> 对 Buffer块填充需要编码的数据 ->提交 Buffer块 ->申请完成编码的Buffer块->处理原始的编码块->返回处理完的编码块等一系列的步骤，完成了编码的工作，工作步骤虽然不少，但是理解了其原理还是比较简单的。]]></description><category></category></item><item><title><![CDATA[Systrace使用分析流程]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/142168032</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/142168032</guid><author>qq_51598534</author><pubDate>Thu, 12 Sep 2024 10:23:19 +0800</pubDate><description><![CDATA[Trace 文件是 Android Studio 提供的用于记录应用执行周期的一种工具。它详细记录了应用中各个方法的执行时间、调用栈信息等，有助于开发者发现并解决性能问题。systrace 是 android 4.1 中新增的性能数据采集和分析工具，它可帮助开发者收集 Android 关键子系统（如 SurfaceFlinger、WindowManagerService、Framework 关键模块、服务、View 系统等）的运行信息，从而帮助开发者更直观的分析系统瓶颈，改进性能。]]></description><category></category></item><item><title><![CDATA[Smali 简介与JVM指令]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/142167839</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/142167839</guid><author>qq_51598534</author><pubDate>Thu, 12 Sep 2024 10:16:55 +0800</pubDate><description><![CDATA[Smali是用于Dalvik（Android虚拟机）的反汇编程序实现，汇编工具（将Smali代码汇编为dex文件）为smali.jar，与之对应的baksmali.jar则是反汇编程序（下载地址Smali支持注解、调试信息、行数信息等基本Java的基本特性，可以说是很接近Java编译在JVM上的中间语言了，一般用来做Android程序的逆向工程。Smali是用于做反汇编的一种语言实现，如果可以，自己也能定义一套这样的语言，实现反汇编的效果JVM指令助记符。]]></description><category></category></item><item><title><![CDATA[Android逆向分析]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/142167215</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/142167215</guid><author>qq_51598534</author><pubDate>Thu, 12 Sep 2024 10:11:27 +0800</pubDate><description><![CDATA[Android 逆向开发是指对已发布的 Android 应用进行分析和破解，以了解应用程序的内部工作原理，获取应用程序的敏感信息，或者修改应用程序的行为。Android应用 Java编写的,利用Android SDK编译代码,并并且把所有的数据和资源文件打包成一个APK(Android Package)文件这是一个后缀名为.apk的压缩文件,apk文件中包含了一个Anddroid应用程序的所有内容,是Android平台用于安装应用程序的文件。]]></description><category></category></item><item><title><![CDATA[ANR原理及案例分析]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/142166582</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/142166582</guid><author>qq_51598534</author><pubDate>Thu, 12 Sep 2024 09:55:31 +0800</pubDate><description><![CDATA[ANR (Application Not responding)，是指应用程序未响应，Android 系统对于一些事件需要在一定的时间范围内完成，如果超过预定时间未能得到有效响应或者响应时间过长，都会造成 ANRANR问题即使应用响应超时问题，它根据发生的原因不同，主要分为KeyDispatchTimeout、BroadcastTimeout、ContentProviderTimeout、ServiceTimeout四类。]]></description><category></category></item><item><title><![CDATA[应用进程闪退]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/142166540</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/142166540</guid><author>qq_51598534</author><pubDate>Thu, 12 Sep 2024 09:40:02 +0800</pubDate><description><![CDATA[内存不足：应用在运行过程中消耗了过多的内存，导致系统无法分配足够的内存给其他应用或系统服务。堆栈溢出：应用代码中存在递归调用或循环引用，导致堆栈空间耗尽。线程阻塞：线程在执行过程中被阻塞，导致其他线程无法正常执行。线程同步问题：多个线程同时访问同一资源，导致数据不一致或程序崩溃。CPU 资源限制：应用在运行过程中占用过多的 CPU 资源，导致系统无法处理其他任务。网络资源限制：应用在访问网络资源时，由于网络不稳定或资源限制，导致数据加载失败。]]></description><category></category></item><item><title><![CDATA[应用进程kill]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/142166216</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/142166216</guid><author>qq_51598534</author><pubDate>Thu, 12 Sep 2024 09:38:53 +0800</pubDate><description><![CDATA[杀死进程：当目标进程没有子进程或者子进程已经结束时，系统会向目标进程发送SIGKILL信号，强制杀死进程，此时，目标进程无法进行任何清理工作，可能会导致数据丢失或其他问题。在Android系统中，进程有五种状态：创建、就绪、运行、阻塞和死亡，进程的生命周期包括创建、运行、暂停、终止等阶段，当一个进程不再需要时，系统会将其杀死以回收资源。信号的方式来完成的。文件中定义了所有的系统中断号，用户态程序通过不同的系统调用号来调用不同的内核服务，通过系统调用号从系统调用表中查看到相应的内核服务。]]></description><category></category></item><item><title><![CDATA[应用进程启动]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/142148181</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/142148181</guid><author>qq_51598534</author><pubDate>Thu, 12 Sep 2024 09:18:09 +0800</pubDate><description><![CDATA[在Android操作系统中，Zygote进程是一个非常重要的系统进程，它是所有Android应用进程的父进程，负责为新的应用进程提供预加载的环境和资源。Zygote进程在系统启动时由init进程创建，它会预加载Android框架类和资源，包括常用的Java类库、Android框架类、系统服务和资源等。这些预加载的环境和资源在新的应用进程创建时被复制（通过fork操作），从而避免了重复加载和初始化，提高了应用启动速度。]]></description><category></category></item><item><title><![CDATA[NE触发原理及案例分析]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/142148014</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/142148014</guid><author>qq_51598534</author><pubDate>Wed, 11 Sep 2024 19:27:35 +0800</pubDate><description><![CDATA[Native Crash 是发生在 Android 系统中 C/C++ 层面的 Crash。从 Android 系统全局来说，Crash 通常分为 App/Framework Crash，Native Crash，以及 Kernel Crash。对于 App 层或者 Framework 层的 Crash(即 Java 层面 Crash)，那么往往是通过抛出未捕获异常而导致的 Crash。在 Kernel Crash，很多情况是发生 Kernel panic，对于内核崩溃往往是驱动或者硬件出现故障。]]></description><category></category></item><item><title><![CDATA[JE触发原理及案例分析]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/142147678</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/142147678</guid><author>qq_51598534</author><pubDate>Wed, 11 Sep 2024 19:17:53 +0800</pubDate><description><![CDATA[App Crash全称Application crash, 对于Crash可分为Java Crash和NativeCrash。在应用启动及运行中，出现闪退（崩溃），屏幕提示当前程序停止运行的弹窗，类似于windows的应用程序崩溃。小结：Crash是由于代码异常而导致App非正常退出现象，也就是我们常说的崩溃为什么会出现崩溃？概括来讲，就是程序运行中有未捕获的异常，未被 try-catch，导致进程被杀。]]></description><category></category></item><item><title><![CDATA[Android日志系统]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/142145846</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/142145846</guid><author>qq_51598534</author><pubDate>Wed, 11 Sep 2024 17:41:16 +0800</pubDate><description><![CDATA[主日志使用打印，主要被应用使用。系统日志使用打印。许多android框架层的模块使用该工具打印日志，这样可以与应用日志区分开，避免其他日志干扰。事件日志使用打印，输出二进制格式的日志。日志入口包含二进制tag code，后面跟二进制参数。二进制tag code存储在。]]></description><category></category></item><item><title><![CDATA[Git/Gerrit/代码提交]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/142145676</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/142145676</guid><author>qq_51598534</author><pubDate>Wed, 11 Sep 2024 17:28:20 +0800</pubDate><description><![CDATA[比如你新增了一行，这就是一个修改， 删除了一行，也是一个修改， 更改了某些字符，也是一个修改， 删了一些又加了一些，也是一个修改， 甚至创建一个新文件，也算一个修改。]]></description><category></category></item><item><title><![CDATA[服务器配置、代码拉取(repo)、编译、刷机流程]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/142145420</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/142145420</guid><author>qq_51598534</author><pubDate>Wed, 11 Sep 2024 17:23:13 +0800</pubDate><description><![CDATA[代码的gerrit服务器网页，如gerrit-os.transsion.com、gerrit-share.transsion.com、gerrit-wx.transsion.com、gerrit-old.transsion.com、gerrit-cq.transsion.com等等）创建目录以存放代码,如mkdir AE11_code和mkdir AE11_vendor_ccode，cd AE11_code或AE11_vendor_code进入目录(注意使用Tab进行代码补全,简便)]]></description><category></category></item><item><title><![CDATA[熟练操作Linux环境基本命令]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/142144857</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/142144857</guid><author>qq_51598534</author><pubDate>Wed, 11 Sep 2024 17:11:48 +0800</pubDate><description><![CDATA[说明: cp指令用于复制文件或目录，如同时指定两个以上的文件或目录，且最后的目的地是一个已经存在的目录， 则它会把前面指定的所有文件或目录复制到此目录中。当第二个参数类型是文件时，mv命令完成文件重命名，此时，源文件只能有一个（也可以是源目录名），它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时，源文件或目录参数可以有多个，mv命令将各参数指定的源文件均移至目标目录中。上面的两个指令，touch和mkdir，一个床架目录，一个创建文件，目录和文件的差别在哪呢？]]></description><category></category></item><item><title><![CDATA[Android应用常见各个组件的开发]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/142144791</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/142144791</guid><author>qq_51598534</author><pubDate>Wed, 11 Sep 2024 17:00:59 +0800</pubDate><description><![CDATA[4大基本组件都需要注册才能使用，每个Activity、service、Content Provider都需要在AndroidManifest文件中进行配置。AndroidManifest文件中未进行声明的activity、服务以及内容提供者将不为系统所见，从而也就不可用。而broadcast receiver广播接收者的注册分静态注册（在AndroidManifest文件中进行配置）和通过代码动态创建并以调用Context.registerReceiver()的方式注册至系统。]]></description><category></category></item><item><title><![CDATA[Android App 创建、编码、打包、安装、启动流程]]></title><link>https://blog.youkuaiyun.com/qq_51598534/article/details/142144368</link><guid>https://blog.youkuaiyun.com/qq_51598534/article/details/142144368</guid><author>qq_51598534</author><pubDate>Wed, 11 Sep 2024 16:56:12 +0800</pubDate><description><![CDATA[zygote意为“受精卵“。Android是基于Linux系统的，而在Linux中，所有的进程都是由init进程直接或者是间接fork出来的，zygote进程也不例外。Android系统zygote是一个进程的名字。Android是基于Linux System的，当你的手机开机的时候，Linux的内核加载完成之后就会启动一个叫“init“的进程。在Linux System里面，所有的进程都是由init进程fork出来的，我们的zygote进程也不例外。]]></description><category></category></item></channel></rss>