<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[2401_89722439的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/2401_89722439</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; 2401_89722439]]></copyright><item><title><![CDATA[C++智能指针_主动销毁智能指针的方法]]></title><link>https://blog.youkuaiyun.com/2401_89722439/article/details/144599316</link><guid>https://blog.youkuaiyun.com/2401_89722439/article/details/144599316</guid><author>2401_89722439</author><pubDate>Fri, 20 Dec 2024 06:14:39 +0800</pubDate><description><![CDATA[在C++中，动态内存的使用时有一定的风险的，因为它没有垃圾回收机制，很容易导致忘记释放内存的问题，具体体现在异常的处理上。想要释放掉抛异常的程序的一些内存，往往需要多次抛异常，这种处理方式是十分麻烦的。智能指针的本质就是使用一个对象来接管一段开辟的空间，在该对象在销毁的时候，自动调用析构函数来释放这段内存。因此智能指针的本质是一个类，类中最主要的对象是一个指针，该类的析构函数就是销毁该指针指向的空间，使用智能指针的本质就是将一个指向动态开辟空间的指针赋给该类中的指针。]]></description><category></category></item><item><title><![CDATA[C++抽象编程——字符串（1）—]]></title><link>https://blog.youkuaiyun.com/2401_89722439/article/details/144599308</link><guid>https://blog.youkuaiyun.com/2401_89722439/article/details/144599308</guid><author>2401_89722439</author><pubDate>Fri, 20 Dec 2024 06:10:58 +0800</pubDate><description><![CDATA[从概念上讲，字符串就是由一串简单的字符构成，比如“hello， world”就是一个包含12个的字符串，10个字母，一个逗号，还有一个空格。当你使用库来进行操作的时候，你就会发现它并不像你之前所学的基本类型的那样使用，它的大多数运算都是通过函数调用来实现的。但是，这在C++中是不正确的，这个表达式的问题就是string不是一个传统的数据类型，它是类的一个例子，可能是最简单的用来描述一组值以及相关联的操作集合的模板。），一个单独的类可以有很多的对象，每一个这样的对象我们称为类的实例（),类似于传统函数。]]></description><category></category></item><item><title><![CDATA[c++中vector的用法详解_c语言vector&lt；int&gt；]]></title><link>https://blog.youkuaiyun.com/2401_89722439/article/details/144599294</link><guid>https://blog.youkuaiyun.com/2401_89722439/article/details/144599294</guid><author>2401_89722439</author><pubDate>Fri, 20 Dec 2024 06:07:17 +0800</pubDate><description><![CDATA[当进行insert或push_back等增加元素的操作时，如果此时动态数组的内存不够用，就要动态的重新分配当前大小的1.5~2倍的新内存区，再把原数组的内容复制过去。但是，vector的拷贝构造函数只分配拷贝的元素需要的内存，所以这个临时vector没有多余的容量。如果不是执行push_back，代码在string的任意位置进行一个insert，我们仍然可以保证在插入期间没有发生重新分配，但是，与伴随string插入时迭代器失效的一般规则一致，所有从插入位置到string结尾的迭代器/指针/引用将失效。]]></description><category></category></item><item><title><![CDATA[C#第一章笔记2024-09-14]]></title><link>https://blog.youkuaiyun.com/2401_89722439/article/details/144599272</link><guid>https://blog.youkuaiyun.com/2401_89722439/article/details/144599272</guid><author>2401_89722439</author><pubDate>Fri, 20 Dec 2024 06:03:36 +0800</pubDate><description><![CDATA[与 Console.WritLine()对应，从控制台输入可以使用 Console.ReadLine()；对比java，java的String在C#中的string的S需要小写，Java里面的boolean在C#中是bool。常量：在程序运行过程中保存不变的值，不可改变的值，使用const关键字定义的变量都只能赋一次值，再次修改报错。方式三的"HelloWorld{0}"就是格式化字符串，{0}叫做占位符，它占地是 i1 的位置，{0}对应的是变量列表的第一个变量 {1}对应的是变量列表的第二个变量。]]></description><category></category></item><item><title><![CDATA[C# 从1到Core--委托与事件]]></title><link>https://blog.youkuaiyun.com/2401_89722439/article/details/144599256</link><guid>https://blog.youkuaiyun.com/2401_89722439/article/details/144599256</guid><author>2401_89722439</author><pubDate>Fri, 20 Dec 2024 05:59:55 +0800</pubDate><description><![CDATA[Action 、Func、Predicate本质上是框架为我们预定义的委托，在上面的例子中，我们使用委托的时候，首先要定义一个委托类型，然后在实际使用的地方使用，而使用委托只要求方法名相同，在泛型委托出现之后，“定义委托”这一操作就显得越来越累赘，为此，系统为我们预定义了一系列的委托，我们只要使用即可。通过上面委托的表现来看，委托就像是保存了一个相同方法名的集合 List ，可以向集合中添加或移除方法，当调用这个委托的时候，会逐一调用该集合中的各个方法。Func与此类似，是最多16个参数的有返回值的委托。]]></description><category></category></item><item><title><![CDATA[B站【狂神说Java笔记】-面向对象编程]]></title><link>https://blog.youkuaiyun.com/2401_89722439/article/details/144599247</link><guid>https://blog.youkuaiyun.com/2401_89722439/article/details/144599247</guid><author>2401_89722439</author><pubDate>Fri, 20 Dec 2024 05:56:14 +0800</pubDate><description><![CDATA[内部类就是在一个类的内部定义一个类，比如，A类中定义一个B类，那么B类相对A类来说就称为内部类，而A类相对于B类来说就是外部类了。abstract 用来可以用来修饰方法也可以修饰类，如果修饰方法，那么该方法就是抽象方法。使用new 关键字创建的时候，除了分配内存空间之外，还会给创建好的对象进行默认的初始化以及对类中构造器的调用。对象，是具体的事物。类是抽象的，是对对象的抽象。抽象方法，只有方法的声明，没有方法的实现，它是用来让子类实现的。继承的本质是对某一批类的抽象，从而实现对现实世界更好的建模。]]></description><category></category></item><item><title><![CDATA[B站【狂神说Java笔记】-注解和反射]]></title><link>https://blog.youkuaiyun.com/2401_89722439/article/details/144599236</link><guid>https://blog.youkuaiyun.com/2401_89722439/article/details/144599236</guid><author>2401_89722439</author><pubDate>Fri, 20 Dec 2024 05:52:33 +0800</pubDate><description><![CDATA[将class文件字节码内容加载到内存中，并将这些静态数据转换成方法区的运行时数据结构，然后在堆中生成一个代表这个类的java.lang.Class对象，作为方法区中类数据的访问入口。Java采用泛型擦除的机制来引入泛型,Java中的泛型仅仅是给编译器javac使用的,确保数据的安全性和免去强制类型转换问题，但是，一旦编译完成﹐所有和泛型有关的类型型全部擦除。以上的方法返回值的类型是一个Class类，此类是Java反射的源头，实际上所谓反射从程序的运行结果来看也很好理解，即:可以通过对象反射求出类的名称。]]></description><category></category></item><item><title><![CDATA[Binder相关面试总结（三）：Binder机制是如何跨进程的]]></title><link>https://blog.youkuaiyun.com/2401_89722439/article/details/144599205</link><guid>https://blog.youkuaiyun.com/2401_89722439/article/details/144599205</guid><author>2401_89722439</author><pubDate>Fri, 20 Dec 2024 05:41:20 +0800</pubDate><description><![CDATA[ServiceManager 和其他进程同样采用 Bidner 通信，ServiceManager 是 Server 端，有自己的 Binder 实体，其他进程都是 Client，需要通过这个 Binder 的引用来实现 Binder 的注册，查询和获取。对于进程之间来说，用户空间的数据不可共享，内核空间的数据可共享，为了保证安全性和独立性，一个进程不能直接操作或者访问另一个进程，即Android的进程是相互独立、隔离的，这就需要跨进程之间的数据通信方式。Binder框架 是基于 C/S 架构的。]]></description><category></category></item><item><title><![CDATA[BFC——块格式化上下文]]></title><link>https://blog.youkuaiyun.com/2401_89722439/article/details/144599197</link><guid>https://blog.youkuaiyun.com/2401_89722439/article/details/144599197</guid><author>2401_89722439</author><pubDate>Fri, 20 Dec 2024 05:37:39 +0800</pubDate><description><![CDATA[表现为：此时内部两个div是在一个BFC下放置，div1的margin-bottom是30px，div2的maigin-top为50px，按道理来说应该是30+50=80px，但实际只有50px，这就是。我是自适应的我是自适应的我是自适应的我是自适应的我是自适应的我是自适应的我是自适应的我是自适应的我是自适应的我是自适应的我是自适应的我是自适应的我是自适应的我是自适应的我是自适应的。表现为：父元素未设置高度，子元素高度为50px，但子元素高度并未撑开父元素。，会选择较大的margin作为两个元素的间隔。]]></description><category></category></item><item><title><![CDATA[ArrayList(JDK1]]></title><link>https://blog.youkuaiyun.com/2401_89722439/article/details/144599163</link><guid>https://blog.youkuaiyun.com/2401_89722439/article/details/144599163</guid><author>2401_89722439</author><pubDate>Fri, 20 Dec 2024 05:22:38 +0800</pubDate><description><![CDATA[***///转换最主要的是toArray()，这在Collection中就定义了= 0) {// c.toArray 有可能不返回一个 Object 数组//使用 Arrays.copy 方法拷创建一个 Object 数组} else {// 替换为空数组以无参数构造方法创建 ArrayList 时，实际上初始化赋值的是一个空数组。当真正对数组进行添加元素操作时，才真正分配容量。即向数组中添加第一个元素时，数组容量扩为10。内部类ArrayList有四个内部类，其中的。]]></description><category></category></item><item><title><![CDATA[Android性能优化之APP 启动优化（不敢说秒开，但是最终优化完真不到 1s）]]></title><link>https://blog.youkuaiyun.com/2401_89722439/article/details/144524048</link><guid>https://blog.youkuaiyun.com/2401_89722439/article/details/144524048</guid><author>2401_89722439</author><pubDate>Tue, 17 Dec 2024 09:13:40 +0800</pubDate><description><![CDATA[首先为什么会造成白屏勒我们来看一段源码最后就是这个 windowBackground 搞的鬼，知道了是这个搞的鬼那么我们就可以来进行优化了。]]></description><category></category></item><item><title><![CDATA[Android性能 之 服务优化]]></title><link>https://blog.youkuaiyun.com/2401_89722439/article/details/144523969</link><guid>https://blog.youkuaiyun.com/2401_89722439/article/details/144523969</guid><author>2401_89722439</author><pubDate>Tue, 17 Dec 2024 09:09:58 +0800</pubDate><description><![CDATA[幸运的是在API 21 ( Android 5.0，即Lollipop )中，google提供了一个新叫做JobScheduler API的组件来处理这样的场景。主要五步就搞定了，很简单吧，但是不要高兴的太早，因为这种双进程守护的方法，只能对4.0以下有效，对于4.0以上机型，只能部分有用，这个问题最后再说，我们先来看下使用JobScheduler，轮询启动被杀死的进程。当应用程序退到后台时，释放占用的资源，因为当oom_adj相同时，优先释放内存消耗大的进程一直在后台运行的进程一定要轻。]]></description><category></category></item><item><title><![CDATA[Android必备的360个基础知识点，已整理成册，需要者速领_android基础知识总结]]></title><link>https://blog.youkuaiyun.com/2401_89722439/article/details/144523895</link><guid>https://blog.youkuaiyun.com/2401_89722439/article/details/144523895</guid><author>2401_89722439</author><pubDate>Tue, 17 Dec 2024 09:06:16 +0800</pubDate><description><![CDATA[Activity任务栈是什么
有哪些Activity常用的标记位Flags
Activity的数据是怎么保存的,进程被Kill后,保存的数据怎么恢复的

2.Service

service 的生命周期，两种启动方式的区别
Service的两种启动方式？区别在哪
如何保证Service不被杀死 ？
Service与Activity怎么实现通信
IntentService是什么,IntentService原理，应用场景及其与Service的区别
Service 的 onStartCommand 方法有几种返]]></description><category></category></item><item><title><![CDATA[Android开发指南！Android事件分发机制收藏这一篇就够了，2年以上经验必看]]></title><link>https://blog.youkuaiyun.com/2401_89722439/article/details/144523694</link><guid>https://blog.youkuaiyun.com/2401_89722439/article/details/144523694</guid><author>2401_89722439</author><pubDate>Tue, 17 Dec 2024 08:55:12 +0800</pubDate><description><![CDATA[【Android 详细知识点思维脑图（技能树）】我个人是做Android开发，已经有十来年了，目前在某创业公司任职CTO兼系统架构师。虽然 Android 没有前几年火热了，已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了，现在高级工程师还是比较缺少的，很多高级职位给的薪资真的特别高（钱多也不一定能找到合适的），所以努力让自己成为高级工程师才是最重要的。这里附上上述的面试题相关的几十套字节跳动，京东，小米，腾讯、头条、阿里、美团等公司19年的面试题。]]></description><category></category></item><item><title><![CDATA[Android开发8年，2024-2024面试50家公司经验总结：Android面试过程所需要掌握的技术]]></title><link>https://blog.youkuaiyun.com/2401_89722439/article/details/144523625</link><guid>https://blog.youkuaiyun.com/2401_89722439/article/details/144523625</guid><author>2401_89722439</author><pubDate>Tue, 17 Dec 2024 08:51:30 +0800</pubDate><description><![CDATA[个人信息栏其实不用写很多东西，最主要的就是姓名、联系方式、性别、如果学校是名校那么就写上，如果本科学的是计算机专业也可以在这里写上，如果都不是就最好放到最后去写，因为最前面的东西永远是最先看到的内容，也是你最有竞争力和卖弄的资本。3.有技术博客和github开源项目的一定写在最前面。这是活生生的例子。我在面试华为的时候面试官就特意去看了我的csdn上的博客。然后说写的还是不错的，给他留下了一个不错的印象，所以这点是绝对的加分项最好就是写在最前面。刷面试题这块其实一开始我并没有刷特别多，也就是简单的看了下一些]]></description><category></category></item><item><title><![CDATA[Android应用开发-小巫优快云博客客户端总结篇]]></title><link>https://blog.youkuaiyun.com/2401_89722439/article/details/144523560</link><guid>https://blog.youkuaiyun.com/2401_89722439/article/details/144523560</guid><author>2401_89722439</author><pubDate>Tue, 17 Dec 2024 08:47:49 +0800</pubDate><description><![CDATA[初学者最怕的就是急躁，想当初我学Android的时候也有过这样的经历，也是从菜鸟过来的，但现在是否成为你们口中的大牛呢，我也不敢说是。我也发表很多关于这些客户端的开发，相信大家都可以知道开发一款应用并不是想象得那么难，难的是没有动手之前就被前面的不知所措给阻碍了，所以我建议一些初学者，无须害怕自己没有掌握相关的知识，百度是你最好的老师，遇到不懂的，或者不明白的可以自己尝试去寻找答案，网上很多大牛都很有分享精神，会把一些经验分享给大家，这时你就可以通过学习他们的博文或者请教他们来得到解决方案。]]></description><category></category></item><item><title><![CDATA[Android应用setContentView与LayoutInflater加载解析机制源码分析]]></title><link>https://blog.youkuaiyun.com/2401_89722439/article/details/144523493</link><guid>https://blog.youkuaiyun.com/2401_89722439/article/details/144523493</guid><author>2401_89722439</author><pubDate>Tue, 17 Dec 2024 08:44:07 +0800</pubDate><description><![CDATA[看见没有，我们其实只用分析setContentView(View view, ViewGroup.LayoutParams params)方法即可，如果你在Activity中调运setContentView(View view)方法，实质也是调运setContentView(View view, ViewGroup.LayoutParams params)，只是LayoutParams设置为了MATCH_PARENT而已。我们可以看见Window类的setContentView方法都是抽象的。]]></description><category></category></item><item><title><![CDATA[Android实现内录]]></title><link>https://blog.youkuaiyun.com/2401_89722439/article/details/144523428</link><guid>https://blog.youkuaiyun.com/2401_89722439/article/details/144523428</guid><author>2401_89722439</author><pubDate>Tue, 17 Dec 2024 08:40:24 +0800</pubDate><description><![CDATA[AudioSource输入源介绍| 项目 | 介绍 | 权限 || DEFAULT | 默认。在源码 system/media/audio/include/system/audio.h配置默认项 | 无 || MIC | 麦克风 | 无 || VOICE_UPLINK | 电话录音上行线路 | android.permission.CAPTURE_AUDIO_OUTPUT，系统权限不允许第三方app使用 |]]></description><category></category></item></channel></rss>