<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[GZXGYZ的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/GZXGYZ</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; GZXGYZ]]></copyright><item><title><![CDATA[国产 MCU 在不同应用领域的应用现状分析]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/147338627</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/147338627</guid><author>GZXGYZ</author><pubDate>Fri, 18 Apr 2025 18:39:43 +0800</pubDate><description><![CDATA[技术差距：高端制程（如 28nm 以下）、功能安全（ASIL-D）、PCIe/SATA 接口仍需突破。政策机遇：武汉对车规级芯片认证补贴 30%，成都高新区对流片最高补贴 3000 万元。未来趋势车规级 RISC-V：东风汽车 DF30、先楫 HPM6E00 等 RISC-V 车规 MCU 加速量产。AI 与边缘计算：国民技术 N32H7、国芯科技 CCR4001S 推动 “MCU+AI” 融合。开源生态：RISC-V 国际基金会、华为鸿蒙推动国产 MCU 跨平台兼容。]]></description><category></category></item><item><title><![CDATA[国产 MCU 硬件接口技术分析及应用现状]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/147338605</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/147338605</guid><author>GZXGYZ</author><pubDate>Fri, 18 Apr 2025 18:37:47 +0800</pubDate><description><![CDATA[MCU 硬件接口技术分析及应用现状]]></description><category></category></item><item><title><![CDATA[国产 MCU 市场的多维度分析报告，涵盖行业现状、技术趋势]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/147338570</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/147338570</guid><author>GZXGYZ</author><pubDate>Fri, 18 Apr 2025 18:35:01 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[c语言入门基础知识点]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/144298903</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/144298903</guid><author>GZXGYZ</author><pubDate>Fri, 06 Dec 2024 19:29:15 +0800</pubDate><description><![CDATA[C 语言规定，标识符可以是字母(A～Z，a～z)、数字(0～9)、下划线_组成的字符串，并且第一个字符必须是字母或下划线。4、格式化输出语句格式化输出语句，也可以说是占位输出，是将各种类型的数据按照格式化后的类型及指定的位置从计算机上显示。(1)标识符的长度最好不要超过8位，因为在某些版本的C中规定标识符前8位有效，当两个标识符前8位相同时，则被认为是同一个标识符。3、基本数据类型C语言中的数据也是有类型的，C语言中，数据类型可分为：基本数据类型，构造数据类型，指针类型，空类型四大类。]]></description><category></category></item><item><title><![CDATA[Http https区别]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589802</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589802</guid><author>GZXGYZ</author><pubDate>Fri, 24 Nov 2023 07:12:45 +0800</pubDate><description><![CDATA[HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议，比http协议安全。（4）客户端的浏览器根据双方同意的安全等级，建立会话密钥，然后利用网站的公钥将会话密钥加密，并传送给网站。3、http和https使用的是完全不同的连接方式，用的端口也不一样，前者是80，后者是443。2、http是超文本传输协议，信息是明文传输，https则是具有安全性的ssl加密传输协议。（3）客户端的浏览器与Web服务器开始协商SSL连接的安全等级，也就是信息加密的等级。]]></description><category></category></item><item><title><![CDATA[Xutils, OKhttp, Volley, Retrofit对比]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589799</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589799</guid><author>GZXGYZ</author><pubDate>Fri, 24 Nov 2023 07:11:42 +0800</pubDate><description><![CDATA[Volley：Volley是Google官方出的一套小而巧的异步请求库，该框架封装的扩展性很强，支持HttpClient、HttpUrlConnection， 甚至支持OkHttp，而且Volley里面也封装了ImageLoader，所以如果你愿意你甚至不需要使用图片加载框架，不过这块功能没有一些专门的图片加载框架强大，对于简单的需求可以使用，稍复杂点的需求还是需要用到专门的图片加载框架。毫无疑问，Retrofit 默认是基于 OkHttp 而做的封装，这点来说没有可比性，肯定首选 Retrofit。]]></description><category></category></item><item><title><![CDATA[app优化]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589794</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589794</guid><author>GZXGYZ</author><pubDate>Fri, 24 Nov 2023 07:10:32 +0800</pubDate><description><![CDATA[(2)用户退出App后, 系统可能由于内存原因将App杀死, 进程和activity都需要重启, 但是可以在onCreate中将被动杀死锁保存的状态(saved instance state)恢复。API设计：App与Server之间的API设计要考虑网络请求的频次, 资源的状态等. 以便App可以以较少的请求来完成业务需求和界面的展示.图片的Size：可以在获取图片时告知服务器需要的图片的宽高, 以便服务器给出合适的图片, 避免浪费.(2)定位中使用GPS, 请记得及时关闭。pp启动优化(针对冷启动)]]></description><category></category></item><item><title><![CDATA[Android内存泄露及管理]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589793</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589793</guid><author>GZXGYZ</author><pubDate>Fri, 24 Nov 2023 07:08:16 +0800</pubDate><description><![CDATA[内存泄露 memory leak：是指程序在申请内存后，无法释放已申请的内存空间，一次内存泄露危害可以忽略，但内存泄露堆积后果很严重，无论多少内存,迟早会被占光。在这些资源不使用的时候，记得调用相应的类似close（）、destroy（）、recycler（）、release（）等方法释放。解决：将Handler声明为静态内部类，就不会持有外部类SecondActivity的引用，其生命周期就和外部类无关，（1）内存溢出（OOM）和内存泄露（对象无法被回收）的区别。四、非静态匿名内部类引起的内存泄漏。]]></description><category></category></item><item><title><![CDATA[View，ViewGroup事件分发]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589791</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589791</guid><author>GZXGYZ</author><pubDate>Fri, 24 Nov 2023 07:07:35 +0800</pubDate><description><![CDATA[5.当某个子View返回true时，会中止Down事件的分发，同时在ViewGroup中记录该子View。由于子View是保存在ViewGroup中的，多层ViewGroup的节点结构时，上级ViewGroup保存的会是真实处理事件的View所在的ViewGroup对象:如ViewGroup0-ViewGroup1-TextView的结构中，TextView返回了true，它将被保存在ViewGroup1中，而ViewGroup1也会返回true，被保存在ViewGroup0中。]]></description><category></category></item><item><title><![CDATA[View的绘制流程]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589790</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589790</guid><author>GZXGYZ</author><pubDate>Fri, 24 Nov 2023 07:06:17 +0800</pubDate><description><![CDATA[第二步：OnLayout()：确定View位置，进行页面布局。从顶层父View向子View的递归调用view.layout方法的过程，即父View根据上一步measure子View所得到的布局大小和布局参数，将子View放在合适的位置上。第三步：OnDraw()：绘制视图。3、完全自定义控件：这个View上所展现的内容全部都是我们自己绘制出来的。这种自定义控件不需要我们自己绘制，而是使用原生控件组合成的新控件。View的绘制流程：OnMeasure()——>OnLayout()——>OnDraw()]]></description><category></category></item><item><title><![CDATA[四种LaunchMode及其使用场景]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589789</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589789</guid><author>GZXGYZ</author><pubDate>Fri, 24 Nov 2023 07:05:39 +0800</pubDate><description><![CDATA[一旦该模式的Activity实例已经存在于某个栈中，任何应用再激活该Activity时都会重用该栈中的实例( 会调用实例的 onNewIntent() )。如果在栈中已经有该Activity的实例，就重用该实例(会调用实例的 onNewIntent() )。如果在任务的栈顶正好存在该Activity的实例，就重用该实例( 会调用实例的 onNewIntent() )，否则就会创建新的实例并放入栈顶，即使栈中已经存在该Activity的实例，只要不在栈顶，都会创建新的实例。3. 遍历数据速度不同。]]></description><category></category></item><item><title><![CDATA[理解Activity，View,Window三者关系]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589788</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589788</guid><author>GZXGYZ</author><pubDate>Fri, 24 Nov 2023 07:04:39 +0800</pubDate><description><![CDATA[Activity像一个工匠（控制单元），Window像窗户（承载模型），View像窗花（显示视图）LayoutInflater像剪刀，Xml配置像窗花图纸。4：这些View的事件监听，是由WindowManagerService来接受消息，并且回调Activity函数。2：这个PhoneWindow有一个“ViewRoot”，这个“ViewRoot”是一个View或者说ViewGroup，是最初始的根视图。1：Activity构造的时候会初始化一个Window，准确的说是PhoneWindow。]]></description><category></category></item><item><title><![CDATA[java虚拟机和Dalvik虚拟机的区别]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589786</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589786</guid><author>GZXGYZ</author><pubDate>Fri, 24 Nov 2023 07:03:46 +0800</pubDate><description><![CDATA[4、一个应用，一个虚拟机实例，一个进程（所有android应用的线程都是对应一个linux线程，都运行在自己的沙盒中，不同的应用在不同的进程中运行。2、Dalvik运行的是自定义的.dex字节码格式。（java类被编译成.class文件后，会通过一个dx工具将所有的.class文件转换成一个.dex文件，然后dalvik虚拟机会从其中读取指令和数据。2、java虚拟机运行的是java字节码。基于栈的机器必须使用指令来载入和操作栈上数据，所需指令更多更多。1、dalvik虚拟机是基于寄存器的。]]></description><category></category></item><item><title><![CDATA[加密算法]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589784</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589784</guid><author>GZXGYZ</author><pubDate>Fri, 24 Nov 2023 07:02:46 +0800</pubDate><description><![CDATA[为减少计算量，在传送信息时，常采用传统加密方法与公开密钥加密方法相结合的方式，即信息采用改进的DES对话密钥加密，然后使用RSA密钥加密对话密钥和信息摘要。采用DES与RSA相结合的应用，使它们的优缺点正好互补，即DES加密速度快，适合加密较长的报文，可用其加密明文；RSA加密速度慢，安全性好，应用于DES 密钥的加密，可解决DES 密钥分配的问题。2、DES 的密钥的位数太短，只有56 比特，而且各次迭代中使用的密钥是递推产生的，这种相关必然降低密码体制的安全性，在现有技术下用穷举法寻找密钥已趋于可行。]]></description><category></category></item><item><title><![CDATA[HttpClient与HttpUrlConnection的区别]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589782</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589782</guid><author>GZXGYZ</author><pubDate>Fri, 24 Nov 2023 07:01:28 +0800</pubDate><description><![CDATA[首先HttpClient和HttpUrlConnection 这两种方式都支持Https协议，都是以流的形式进行上传或者下载数据，也可以说是以流的形式进行数据的传输，还有ipv6,以及连接池等功能。HttpClient这个拥有非常多的API，所以如果想要进行扩展的话，并且不破坏它的兼容性的话，很难进行扩展，也就是这个原因，Google在Android6.0的时候，直接就弃用了这个HttpClient.]]></description><category></category></item><item><title><![CDATA[Activity的启动过程]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589780</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589780</guid><author>GZXGYZ</author><pubDate>Fri, 24 Nov 2023 07:00:46 +0800</pubDate><description><![CDATA[我们创建一个新的项目，默认的根activity都是MainActivity，而所有的activity都是保存在堆栈中的，我们启动一个新的activity就会放在上一个activity上面，而我们从桌面点击应用图标的时候，由于launcher本身也是一个应用，当我们点击图标的时候，系统就会调用startActivitySately(),一般情况下，我们所启动的activity的相关信息都会保存在intent中，比如action，category等等。]]></description><category></category></item><item><title><![CDATA[Service生命周期]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589778</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589778</guid><author>GZXGYZ</author><pubDate>Fri, 24 Nov 2023 06:59:44 +0800</pubDate><description><![CDATA[这种方式启动的话，需要注意一下几个问题，第一：当我们通过startService被调用以后，多次在调用startService(),onCreate()方法也只会被调用一次，而onStartConmon()会被多次调用当我们调用stopService()的时候，onDestroy()就会被调用，从而销毁服务。service 启动方式有两种，一种是通过startService()方式进行启动，另一种是通过bindService()方式进行启动。不同的启动方式他们的生命周期是不一样.]]></description><category></category></item><item><title><![CDATA[线程、多线程和线程池知识点]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589777</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589777</guid><author>GZXGYZ</author><pubDate>Fri, 24 Nov 2023 06:59:05 +0800</pubDate><description><![CDATA[线程礼让，Thread.yield()方法，暂停当前正在执行的线程对象，把执行机会让给相同或更高优先级的线程，但并不会使线程进入阻塞态，线程仍处于可执行态，随时可能再次分得CPU时间。当方法进入时，请求一个信号，如果信号被用完则等待，方法运行完，释放一个信号，释放的信号新的线程就可以使用。之所以需要同步，因为在多线程并发控制，当多个线程同时操作一个可共享的资源时，如果没有采取同步机制，将会导致数据不准确，因此需要加入同步锁，确保在该线程没有完成操作前被其他线程调用，从而保证该变量的唯一一性和准确性。]]></description><category></category></item><item><title><![CDATA[Android网络编程总结]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589776</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/134589776</guid><author>GZXGYZ</author><pubDate>Fri, 24 Nov 2023 06:57:49 +0800</pubDate><description><![CDATA[并且，用公钥加密的数据，只有对应的私钥才能解密；这样，数据就能安全着到达双方。解决的办法就是数字证书：小服再给小客发公钥的过程中，会把公钥以及小服的个人信息通过Hash算法生成消息摘要，为了防止摘要被人调换，小服还会用CA提供的私钥对消息摘要进行加密来形成数字签名，当小客拿到这份数字证书之后，就会用CA提供的公钥来对数字证书里面的数字签名进行解密得到消息摘要，然后对数字证书里面小服的公钥和个人信息进行Hash得到另一份消息摘要，然后把两份消息摘要进行对比，如果一样，则证明这些东西确实是小服的，否则就不是。]]></description><category></category></item><item><title><![CDATA[Linux系统中JAVA创建文件后权限不足应该如何解决]]></title><link>https://blog.youkuaiyun.com/GZXGYZ/article/details/134582008</link><guid>https://blog.youkuaiyun.com/GZXGYZ/article/details/134582008</guid><author>GZXGYZ</author><pubDate>Thu, 23 Nov 2023 17:08:52 +0800</pubDate><description><![CDATA[但是通过程序上传的时候，文件上传后所属者也是root，但是权限变成了640.而这个640权限，通过ftp是访问不到的。于是，搜索后，看到一篇文章，但Linux系统umask的默认值是0022，也就是说创建的文件应该是644的权限，而上传的文件却是640的权限。我们知道在Linux系统规定，创建文件的最高权限为666，而创建文件夹的最高权限为777，系统通过变量umask来控制创建文件的权限问题。如果当umask的值为022时，则创建的文件权限为644，即权限是通过最高权限减去umask的值来控制的。]]></description><category></category></item></channel></rss>