<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Cratels学编程]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/trustboycs</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; trustboycs]]></copyright><item><title><![CDATA[C++多线程：promise/future与packaged_task/future应用场景的区别]]></title><link>https://blog.youkuaiyun.com/trustboycs/article/details/138998090</link><guid>https://blog.youkuaiyun.com/trustboycs/article/details/138998090</guid><author>trustboycs</author><pubDate>Fri, 17 May 2024 10:40:54 +0800</pubDate><description><![CDATA[如果站在一个库开发者的角度去看，我可能会帮客户实现一部分功能，但也可能需要流出空位让用户将自己的实现塞进来。在我学习两者语法的时候总是搞不清两者的区别，知道怎么用却不清楚为什么这样用。关心与不关心，对应到代码中，就代表这个实现是你自己来写，还是可以交给别人写。乙只需要按照指定图纸干活即可，完成后结果会自动返回给甲。如果甲需要乙来帮忙建房，甲必须自己提供建房流程，然后将其使用。如果有甲乙两个人，甲负责主线程编写，乙负责辅助线程的编写。的执行体是乙提供的，甲只需引用即可。，然后引用乙提供的头文件来构建。]]></description><category></category></item><item><title><![CDATA[记一次恢复ipad的流程]]></title><link>https://blog.youkuaiyun.com/trustboycs/article/details/128462548</link><guid>https://blog.youkuaiyun.com/trustboycs/article/details/128462548</guid><author>trustboycs</author><pubDate>Tue, 27 Dec 2022 23:21:51 +0800</pubDate><description><![CDATA[家里的ipad被孩子多次输错密码而被锁，显示“ipad已锁定，请连接iTunes”,本来这是一个很简单的问题，网上各种教程也很多。比如在Windows下使用iTunes，或是直接连接macbook进行恢复都可以。
问题的关键在于：不要使用typec的连接线，而是使用老式的USB接口的数据线连接到电脑。
我的ipad送的数据线是typec的连接线，害得我试了很久总是各种报错，无法成功，换成老式数据线，一次就成功了。
不要使用这个线！！！！！


]]></description><category></category></item><item><title><![CDATA[设计模式之观察者模式]]></title><link>https://blog.youkuaiyun.com/trustboycs/article/details/115400295</link><guid>https://blog.youkuaiyun.com/trustboycs/article/details/115400295</guid><author>trustboycs</author><pubDate>Fri, 02 Apr 2021 15:41:19 +0800</pubDate><description><![CDATA[设计模式之观察者模式
首先假设目前有这样的一个应用场景，你正在设计一款角色对战游戏，每一个角色都有自己的一些属性，此处简化为：

血量hp
魔法值magicValue
攻击速度speed
武器装备等级attackLevel

现在的需求是开发人员需要在游戏界面的多处显示这些数据，比如角色头顶HeadPanel，屏幕左上角统计控件SummaryPanel以及右下角角色操作块OperationPanel。其中：

HeadPanel会显示角色的血量 以及魔法值
SummaryPanel会显示角色的血量 ，魔法值]]></description><category></category></item><item><title><![CDATA[设计模式之策略模式]]></title><link>https://blog.youkuaiyun.com/trustboycs/article/details/115395111</link><guid>https://blog.youkuaiyun.com/trustboycs/article/details/115395111</guid><author>trustboycs</author><pubDate>Fri, 02 Apr 2021 11:43:09 +0800</pubDate><description><![CDATA[设计模式之策略模式
让我们从《HeadFirst设计模式》中的例子开始我们的策略模式的学习，但我会对例子做一些修改，以使得文章逻辑更加清晰。

某公司开发了一款模拟鸭子的游戏，里面有各种各样的鸭子。在该游戏的第一个版本中，假设我们需要50种鸭子，只需要鸭子具有以下方法：

getWeight 获取鸭子重量
display 展示鸭子外观
swim 让鸭子游泳

其中


getWeight的实现针对每个鸭子都是一样的，


display则是每个鸭子都不一样


swim 比较复杂，50种鸭子共有A、B、C、]]></description><category></category></item><item><title><![CDATA[UML类图工具mermaid教程]]></title><link>https://blog.youkuaiyun.com/trustboycs/article/details/115385082</link><guid>https://blog.youkuaiyun.com/trustboycs/article/details/115385082</guid><author>trustboycs</author><pubDate>Thu, 01 Apr 2021 21:39:23 +0800</pubDate><description><![CDATA[文章目录写在开始定义类定义类成员定义类之间关系关系类型Dependency依赖Association关联Aggregation聚合Composition组合Generalization泛化Inheritance继承Realization实现类描述注释
写在开始
mermaid可以用代码的形式来画UML类图.
UML类图可以清晰地表示类之间的关系,可以帮助程序员的开始敲代码之前进行系统架构,是必须掌握的一门技能.
本文将介绍如何使用开源工具mermaid以代码的形式来画类图.学习UML之间的关系以及merma]]></description><category></category></item><item><title><![CDATA[Maven项目pom文件节点介绍]]></title><link>https://blog.youkuaiyun.com/trustboycs/article/details/115373139</link><guid>https://blog.youkuaiyun.com/trustboycs/article/details/115373139</guid><author>trustboycs</author><pubDate>Thu, 01 Apr 2021 14:19:52 +0800</pubDate><description><![CDATA[Maven节点介绍
文章目录Maven节点介绍projectgroupIdartifactIdversionpackagingnamescmpropertiesdependencyManagementbuildpluginManagementpluginresourcesresourceparent
project
项目顶层节点，写法固定，不做过多解析。
groupId
说明该项目是由哪个部门开发的，一般是所在公司的域名的倒置
artifactId
该项目在该公司的唯一识别标识
version
项目版本号
]]></description><category></category></item><item><title><![CDATA[Java多态的实现原理概述]]></title><link>https://blog.youkuaiyun.com/trustboycs/article/details/115372645</link><guid>https://blog.youkuaiyun.com/trustboycs/article/details/115372645</guid><author>trustboycs</author><pubDate>Thu, 01 Apr 2021 14:16:43 +0800</pubDate><description><![CDATA[Java多态的实现原理概述

面向对象的编程语言的特色就是：封装，继承，多态。作为基本特色之一，多态为我们带来了很多的便利。这篇文章我们将从大体上探究一下多态的实现原理，而不做具体实现细节的分析。

java项目是有一个个类组成的，出于重用以及可扩展的考虑，我们经常讲这些类关联起来，比如继承或是实现。多态也是基于类之间的这种关联来实现的，这也是OOP的精华所在。
当一个类被加载到JVM上时，该类的类型信息就被加载到JVM的方法区中。类型信息一般包括该类的方法代码、类变量、成员变量的定义，变量类型信息等等该类]]></description><category></category></item><item><title><![CDATA[Java线程生命周期概要]]></title><link>https://blog.youkuaiyun.com/trustboycs/article/details/115363283</link><guid>https://blog.youkuaiyun.com/trustboycs/article/details/115363283</guid><author>trustboycs</author><pubDate>Wed, 31 Mar 2021 22:48:14 +0800</pubDate><description><![CDATA[Java线程生命周期概要
线程的生命周期
首先,让我们根据一张图来了解一下线程的生命周期.

线程的生命周期包括五个状态:


新建状态New
新建状态是在线程实例在被创建之后但是还没调用start()方法之前所处的状态,不做深入研究.


可运行状态Runnable
此时线程已经调用了start(),但是因为没有被CPU调度,即没有获得CPU运行时间片,所以只是处于可运行状态,并未真的运行.


运行状态Running
线程获得了CPU时间片,开始执行线程体的内容.


阻塞状态Blocked
线程的阻塞]]></description><category></category></item><item><title><![CDATA[设计模式之原型模式]]></title><link>https://blog.youkuaiyun.com/trustboycs/article/details/115363073</link><guid>https://blog.youkuaiyun.com/trustboycs/article/details/115363073</guid><author>trustboycs</author><pubDate>Wed, 31 Mar 2021 22:35:51 +0800</pubDate><description><![CDATA[设计模式-原型模式
原型模式的使用场景
游乐场的过山车必须每天都检查设备状况，然后提交一个检查报告。每个报告中必须详细记录设备的100处的运行情况，其中95个属性是基本不变的，只有5个地方是每天都会变化的。这种场景就非常适合使用原型模式。
如果一个对象的创建过程很繁琐，而且每次的修改并不是很多，即大多数属性时基本相同的，我们应该避免每次都是用new来创建该对象，而应该使用原型模式来创建，效率更高而且步骤也更简单。


效率更高
体现在原型模式一般使用clone或序列化-反序列化来实现，两者都直接进行内存的拷]]></description><category></category></item><item><title><![CDATA[设计模式之工厂模式]]></title><link>https://blog.youkuaiyun.com/trustboycs/article/details/115363020</link><guid>https://blog.youkuaiyun.com/trustboycs/article/details/115363020</guid><author>trustboycs</author><pubDate>Wed, 31 Mar 2021 22:34:14 +0800</pubDate><description><![CDATA[文章目录前言简单工厂模式工厂方法模式抽象工厂模式
前言
怎样去创建一个maven项目呢？
当我们尝试去新建一个maven项目的时候，我们必须在pom配置文件中写下当前醒目的GAV，即：


groupid
公司或组织域名倒序 ，如com.ys.maven


artifactid
模块名，也是实际项目的名称如Maven_05


version
当前项目的版本，如0.0.1-SNAPSHOT


这三者唯一确定了一个maven项目，可以根据它找到并引用某一第三方包。

正如我们可以在maven项目中通过GA]]></description><category></category></item><item><title><![CDATA[设计模式概述以及七大设计原则]]></title><link>https://blog.youkuaiyun.com/trustboycs/article/details/115362920</link><guid>https://blog.youkuaiyun.com/trustboycs/article/details/115362920</guid><author>trustboycs</author><pubDate>Wed, 31 Mar 2021 22:32:02 +0800</pubDate><description><![CDATA[文章目录什么是设计模式设计模式的作用设计模式使用原则设计模式七大原则单一职责原则接口隔离原则依赖倒置原则里氏替换原则开闭原则最少知道原则合成复用原则
什么是设计模式
设计模式是指经过多年编程实践验证的,针对面向对象语言的一套有用的编程模式。
设计模式的作用
正确的使用设计模式可以降低代码间的耦合层度,便于代码的扩展以及维护。
设计模式使用原则
使用设计模式前应该明白：

设计模式是有用的,前提是你在正确的场景下使用正确的设计模式.23种设计模式针对23种不同的场景，应该根据自己的场景来选择使用设计模式。
设]]></description><category></category></item><item><title><![CDATA[Java多线程之虚假唤醒（原创）]]></title><link>https://blog.youkuaiyun.com/trustboycs/article/details/115347815</link><guid>https://blog.youkuaiyun.com/trustboycs/article/details/115347815</guid><author>trustboycs</author><pubDate>Wed, 31 Mar 2021 13:03:08 +0800</pubDate><description><![CDATA[Java多线程之虚假唤醒
文章目录Java多线程之虚假唤醒虚假唤醒的定义从`生产者-消费者`场景讲起单生产者-单消费者场景多生产者-多消费者场景这就是虚假唤醒吗？
首先需要说明的是，虚假唤醒不是Java语言特有的问题，而是多线程通信特有的问题，在java中就体现在sychronized-wait-notify上，最典型的应用场景就是生产者-消费者模式。
在网上翻看了很多关于虚假唤醒的文档，才发现大多数人说的都是错的。要么语焉不详，要么南辕北辙，不一而足。于是我决定自己写一篇文章来说一说：到底什么是虚假唤醒？]]></description><category></category></item><item><title><![CDATA[解决 Clion： this file does not belong to any project target]]></title><link>https://blog.youkuaiyun.com/trustboycs/article/details/105353337</link><guid>https://blog.youkuaiyun.com/trustboycs/article/details/105353337</guid><author>trustboycs</author><pubDate>Mon, 06 Apr 2020 22:36:58 +0800</pubDate><description><![CDATA[今天突然发现再CLion新建源文件的时候，文件总会出现warning：

“this file does not belong to any project target，XXXXXX”。



查了半天，解决方案之一是自己手动添加文件到CMakeLists，这有点不符合IDE的设定。后来发现是自己手贱关掉了自动添加到工程的选项：



如果你也遇到这个问题，如果你也手贱关掉了这个选项，直接点选...]]></description><category></category></item><item><title><![CDATA[C++中dynamic_cast强制转换运算符详解]]></title><link>https://blog.youkuaiyun.com/trustboycs/article/details/49226409</link><guid>https://blog.youkuaiyun.com/trustboycs/article/details/49226409</guid><author>trustboycs</author><pubDate>Sun, 18 Oct 2015 11:15:07 +0800</pubDate><description><![CDATA[在解释dynamic_cast的用法之前，我们先来探讨一下C++中的多态。
举一个例子，现在有三个class，分别为基类A，派生类B和C，BC分别重写了A中的show（）方法，如果现在有一个函数example（），它需要接受一个B或则C的对象实例，然后在其内部调用实例的show（）方法。则我们最好的方法就是example（A *a）；然后不论我们传入B还是C的实例，他们会调用各自的show（），]]></description><category></category></item></channel></rss>