win7 iis 默认网站属性网站设配色

pingmian/2026/1/25 20:34:57/文章来源:
win7 iis 默认网站属性,网站设配色,wordpress的windows,西安市网站建设公司Blocks概要 Blocks是C语言的扩充功能#xff0c;即带有自动变量的匿名函数。匿名函数就是不带函数名的函数。这一概念同样被称为“闭包”#xff0c;lambda计算等。 自动变量是在函数内部声明的变量#xff0c;其作用域仅限于声明它的函数内部。这意味着它们只能在其声明的…Blocks概要 Blocks是C语言的扩充功能即带有自动变量的匿名函数。匿名函数就是不带函数名的函数。这一概念同样被称为“闭包”lambda计算等。 自动变量是在函数内部声明的变量其作用域仅限于声明它的函数内部。这意味着它们只能在其声明的函数内部使用并且在函数执行完毕后会被自动销毁。 Blocks模式 block语法的完整形式 ^void (int event) {//... }即为 ^返回值类型 参数列表 表达式 与C语言不同的地方有 没有“^”插入记号插入该记号便于查找。没有函数名因为为匿名函数。 block的返回值类型是可以省略的省略返回值类型后如果有return语句就返回该返回值类型没有的话就使用void类型。 其次如果不使用参数参数列表也可以省略。 Block类型变量 同样的在Block语法下可将Block语法赋值给声明为Block类型的变量中。在有关Blocks的文档中“Block”既指源代码中的Block语法也指由Blcok语法所生成的值。 声明Block类型变量的语法如下 int (^blk)(int);该Block类型变量与一般的C语言变量完全相同可以用于自动变量、函数参数、静态变量、静态全局变量、全局变量。 下面使用Block语法将Block赋值为Block变量 int (^blk)(int) ^(int count)(return count1);由“^”开始的Block语法生成的Block被赋值给变量blk中。因为与通常的变量相同所以也可以由Block类型变量向Block类型变量赋值。 int (^blk1)(int) blk; int (^blk2)(int); blk2 blk1;在函数参数中使用Block类型变量可以向函数传递Block void func (int (^blk)(int)) {}在函数返回值中指定Block类型可以将Block作为返回值返回 int (^func()(int)) {return ^(int count)(return count1); }还可以使用typedef简化块的记述方式见EOF学习的博客第38条。 将赋值给Block类型变量的Block方法像C语言通常的函数调用那样使用这种方法与使用函数指针类型变量调用函数的方法几乎完全相同。变量funcptr为函数指针类型的时候像下面这样调用函数指针类型变量 int result (*funcptr)(10);变量blk为Block类型的情况下这样调用Block类型变量 int result blk(10);通过Block类型变量调用Block与C语言通常的函数调用没有区别 // blk_t blk就是一个块对象 int func(blk_t blk, int rate) {return blk(rate); }//块对象在OC中也可以当参数 - (int) useBlock: (blk_t)blk rate:(int)rate;也可以使用指向Block类型变量的指针即Block指针类型变量。 typedef int (^blk_t)(int); blk_t blk ^(int count)(return count1); blk_t *blkptr blk; (*blktr)(10);截获自动变量值 Blocks中Blocks表达式截获所使用的自动变量的值即保存该自动变量的瞬间值。 因为Block表达式保存了自动变量的值所以在执行Blocks语法后即使改写Block中所使用的自动变量的值也不会影响执行时自动变量的值。 int main() {int dmy 256;int val 10;const char *fmt “val %d\n”;//这里声明了块就是在截获变量此时捕获的fmt和val的值就是在该块被创建之前那一瞬间的值哪怕后面已经改变了fmt和val的值这里截获的结果还是改变之前的值因为那才是这个块创建那一瞬间的时候变量的值。void(^blk)(void) ^{printf(fmt, val);};val 2;fmt “These value were changed. val %d\n”;blk();return 0; }__block说明符 实际上自动变量值截获只能保存执行Block语法瞬间的值。保存后就不能修改该值。如果尝试改写截获的自动变量的值 int val 0; void (^blk)(void) ^{val 1};我们发现编译的时候会报错。 若想在Block语法表达式中给自动变量赋值需要在该自动变量上附加__block说明符 __block int val 0; void (^blk)(void) ^{val 1};使用附有_ _blcok说明符的可在Block中赋值该变量称为__block变量。 截获的自动变量 已知如果尝试改写截获的自动变量的值编译的时候会报错。那么截获OC对象调用变更该对象的方法也会产生编译错误吗 id array [[NSMutableArray alloc] init]; void (^blk)(void) ^{id obj [[NSObject alloc] init];[array addObject: obj]; }这样是没有问题的而向截获的变量array赋值就会编译错误。 虽然向截获的变量array赋值会产生错误但是使用截获的值不会产生错误。 这种情况下需要给截获的自动变量附加 _block说明符。 __block id array [[NSMutableArray alloc] init]; void (^blk) (void) ^{array [[NSMutableArray alloc] init]; };Blocks的实现 Block的实质 clang (LLVM 编译器)具有转换为我们可读源代码的功能 。通过“-rewrite-objo”选项就能将含有Block语法的 源代码变换为C 的源代码。说是C 其实也仅是使用 了str uc t 结构其本质是C 语言源代码。 clang -rewrite-objc 源代码文件名我们转换如下的block代码 int main() {void (^blk)(void) ^{printf(Block\n”);};blk(); return 0; }此代码的Block语法最为简单它省略了返回值类型以及参数列表。该源代码通过clang可变换为以下形式 //经过clang转换后的C代码 struct __block_impl {void *isa; // 指向 block 的类的指针int Flags; // 标志位int Reserved; // 保留字段void *FuncPtr; // 指向 block 函数的指针 };struct __main_block_impl_0 {struct __block_impl impl; // block 的实现struct __main_block_desc_0 *Desc; // block 的描述// 构造函数初始化 impl 和 Desc 字段__main_block_impl_0(void *fp, struct __main_block_desc_0 *desc, int flags0) {impl.isa _NSConcreteStackBlock; // 设置 isa 指针impl.Flags flags; // 设置标志位impl.FuncPtr fp; // 设置函数指针Desc desc; // 设置描述指针} };// block 函数的实现 static void __main_block_func_0(struct __main_block_impl_0 *__cself) {printf(Block\n); // 打印信息 }// block 的描述结构 static struct __main_block_desc_0 {size_t reserved; // 保留字段size_t Block_size; // block 的大小 } __main_block_desc_0_DATA {0, // 保留字段为 0sizeof(struct __main_block_impl_0) // block 实现的大小 };int main(int argc, const char * argv[]) {// 定义一个函数指针 blk指向 __main_block_impl_0 结构体的实例该实例通过 __main_block_impl_0 构造函数初始化void (*blk)(void) (void (*)(void))__main_block_impl_0((void *)__main_block_func_0, __main_block_desc_0_DATA);// 调用 block 函数指针((void (*)(struct __block_impl *))((struct __block_impl *)blk)-FuncPtr)((struct __block_impl *)blk);return 0; // 返回 }struct _ _block_impl这个结构体定义了一个 block 的实现包含了指向 block 类的指针 isa、标志位 Flags、保留字段 Reserved 和指向 block 函数的指针 FuncPtr。 struct _ _main_block_impl_0这个结构体扩展了 __block_impl定义了一个特定的 block 实现。它包含一个 _ _block_impl 的实例、一个指向 block 描述的指针 Desc并且有一个构造函数用于初始化这些字段。 _ _main_block_impl_0(void *fp, struct _ _main_block_desc_0 *desc, int flags0)这是 _ _main_block_impl_0 的构造函数用于初始化 impl 和 Desc 字段。 _ _main_block_func_0(struct _ main_block_impl_0 * _cself)这是 block 的实际函数实现在本例中只是简单地打印 “Block” 信息。 struct _ _main_block_desc_0这个结构体描述了 block 的大小和保留空间。 _ _main_block_desc_0_DATA这是 block 描述的实际数据包括大小信息。 main 函数中首先定义了一个函数指针 blk它指向一个 _ _main_block_impl_0 结构体的实例该实例通过 _ main_block_impl_0 的构造函数初始化并且调用了这个 block 函数指针打印 “Block” 信息。 该函数的参数 cself相当于C实例方法中所指的自身变量this或是OC实例方法中指向对象自身的变量self即参数 _cself为指向Block值的变量。 由这次Block语法变换而来的_main_block_func_0 函数并不使用__cself。我们先来看看该参数的声明 struct __main_block_impl_0* __cself//结构体声明 struct __main_block_impl_0 {struct __block_impl impl;struct __main_block_desc_0* Desc; }第一个成员变量是impl其__block_impl结构体的声明 struct __block_impl {void *isa;int Flags;int Reserved;void *FuncPtr; }第二个成员变量是Desc指针其__main_block_desc_0结构体的声明: static struct __main_block_desc_0 {size_t reserved;size_t Block_size; }以上就是初始化__main_block_impl_0结构体成员的源代码。我们刚刚跳过了_NSConcreteStackBlock的说明。_NSConcreteStackBlock用于初始化__block_impl结构体的isa成员。虽然大家很想了解它但在进行讲解之前我们先来看看该构造函数的调用。 void (*blk)(void) (void (*)(void))__main_block_impl_0((void *)__main_block_func_0, __main_block_desc_0_DATA);因为转换较多看起来不是很清楚所以我们去掉转换的部分具体如下: struct __main_block_impl_0 tmp __main_block_impl_0(__main_block_func_0, __main_block_desc_0_DATA);struct __main_block_impl_0 *blk tmp;这样就容易理解了。该源代码将_ main_block_impl0结构体类型的自动变量即栈上生成的 main_block_impl_0 结构体实例的指针赋值给 _main_block_impl_0结构体指针类型的变量 blk。以下为这部分代码对应的最初源代码。 void(^blk)(void)^{printf(Block\n);};将 Block 语法生成的Block赋给Block 类型变量blk。它等同于将_ main_block_impl_0 结构体实例的指针赋给变量blk。该源代码中的 Block 就是 main_block_impl_0 结构体类型的自动变量即栈上生成的 main_block_impl_0结构体实例。 下面就来看看 _main_block_impl_0结构体实例构造参数。 __main_block_impl_0(__main_block_func_0, __main_block_desc_0_DATA);第一个参数是由Block语法转换的C语言函数指针。第二个参数是作为静态全局变量初始化的_ main_block_desc_0 结构体实例指针。以下为 _main_block_desc_0 结构体实例的初始化部分代码。 static struct __main_block_desc_0 __main_block_desc_0_DATA {0sizeof(struct __main_block_impl_0) };我们来确认一下使用该 Block的部分。 blk();这部分可变换为以下源代码: ((void (*)(struct __block_impl *))( (struct __block_impl *)blk)-FuncPtr)((struct_block_impl *)blk);去掉转换部分。 (*blk-impl.FuncPtr)(blk);这就是简单地使用函数指针调用函数。正如我们刚才所确认的由Block 语法转换的_ main_block_func_0函数的指针被赋值成员变量FuncPtr中。另外也说明了 _main_block_func_0函数的参数__cself指向Block值。在调用该函数的源代码中可以看出Block正是作为参数进行了传递。 其实所谓Block 就是Objective-C 对象。 截获自动变量 int main(int argc, const char * argv[]) {int dmy 256;int val 10;const char *fmt val %d\n;void (^blk)(void) ^{printf(fmt, val);};blk();return 0; }struct __block_impl {void *isa;int Flags;int Reserved;void *FuncPtr; };struct __main_block_impl_0 {struct __block_impl impl;struct __main_block_desc_0* Desc;const char *fmt;int val;__main_block_impl_0(void *fp, struct __main_block_desc_0 *desc, const char *_fmt, int _val, int flags0) : fmt(_fmt), val(_val) {impl.isa _NSConcreteStackBlock;impl.Flags flags;impl.FuncPtr fp;Desc desc;} };static void __main_block_func_0(struct __main_block_impl_0 *__cself {const char *fmt __cself-fmt;int val __cself-val; printf(fmt, val); }static struct __main_block_desc_0 {size_t reserved;size_t Block_size; } __main_block_desc_0_DATA {0, sizeof(struct __main_block_impl_0) };int main(int argc, const char * argv[]) {int dmy 256;int val 10;const char *fmt val %d\n;void (*blk)(void) ((void (*)())__main_block_impl_0((void *)__main_block_func_0, __main_block_desc_0_DATA, fmt, val));return 0; }其中Block语法表达式中使用的自动变量被作为成员变量追加到了__main_block_impl_0结构体中。 struct __main_block_impl_0 {struct __block_impl impl;struct __main_block_desc_0* Desc;const char *fmt;int val; }_ _main_block_impl_0结构体内声明的成员变量类型与自动变量类型完全相同。 请注意 Block 语法表达式中没有使用的自动变量不会被追加 初始化该结构体实例的构造函数的差异: __main_block_impl_0(void *fp, struct __main_block_desc_0 *desc, const char *_fmt, int _val, int flags0) : fmt(_fmt), val(_val) {//通过构造函数调用确认其参数 void (*blk)(void) ((void (*)())__main_block_impl_0((void *)__main_block_func_0, __main_block_desc_0_DATA, fmt, val));使用执行Block语法时的自动变量fmt 和 val来初始化__main_block_impl_0结构体实例。即在该源代码中__main_block_impl_0结构体实例的初始化如下 impl.isa _NSConcreteStackBlock; impl.Flags flags; impl.FuncPtr fp; Desc desc; fmt val %d\n; val 10;初始化时对fmt和val进行了赋值。由此可知在__main_block_impl_0结构体实例中即Block自动变量被截获。 再看一下使用Block的匿名函数的实现 ^{printf(fmt, val)};转换为 static void __main_block_func_0(struct __main_block_impl_0 *__cself) {const char *fmt __cself-fmt;int val __cself-val;printf(fmt, val); }在转换后的源代码中截获到__main_block_impl_0 结构体实例的成员变量上的自动变量这些变量在Block语法表达式之前被声明定义。因此原来的源代码表达式无需改动便可使用截获的自动变量值执行。 在Block 中利用C语言数组类型的变量时有可能使用到的源代码。首先来看将数组传递给Block的结构体构造函数的情况。 void func(char a[10]) {printf(%d\n,a[0]); } int main() {char a[10] {2};func(a); }该源代码可以顺利编译并正常执行。在之后的构造函数中将参数赋给成员变量中这样在变换了Block语法的函数内可由成员变量赋值给自动变量。源代码预测如下。 void func(char a[10]) {char b[10] a;printf(%d\n, b[0]); } int main() {char a[10] {2};func(a); }该源代码将C语言数组类型变量赋值给C语言数组类型变量中这是不能编译的。虽然变量的类型以及数组的大小都相同但C语言规范不允许这种赋值。当然有许多方法可以截获值但Blocks 似乎更遵循C语言规范。 __Block说明符 Block中使用自动变量后在Block的结构体实例中重写该自动变量也不会改变原先截获的自动变量。 以下源代码试图改变Block中的自动变量val。该代码会产生编译错误。 int val 0; void(^blk)(void) ^{val 1;};因为在实现上不能改写被截获自动变量的值所以当编译器在编译过程中检出给被截获自动变量赋值的操作时便产生编译错误。 不过这样一来就无法在Block中保存值了极为不便。解决这个问题有两种方法。第一种:C语言中有一个变量允许Block改写值。具体如下: 静态变量静态全局变量全局变量 静态变量的这种方法似乎也适用于自动变量的访问。但是我们为什么没有这么做呢? 实际上在由Block语法生成的值Block上可以存有超过其变量作用域的被截获对象的自动变量。变量作用域结束的同时原来的自动变量被废弃因此 Block 中超过变量作用域而存在的变量同静态变量一样将不能通过指针访问原来的自动变量。这些在下节详细说明。 解决Block中不能保存值这一问题的第二种方法是使用“_ block说明符”。更准确的表述方式为“ block存储域类说明符”( _block storage-class-specifier)。C语言中有以下存储域说明符typedefexternstaticautoregister _block 说明符类似于 static、auto 和 register 说明符它们用于指定将变量值设置到哪个存储域中。例如auto 表示作为自动变量存储在栈中static 表示作为静态变量存储在数据区中。 下面我们来实际使用 block说明符用它来指定Block中想变更值的自动变量。我们在前面编译错误的源代码的自动变量声明上追加 _block 说明符。 __block int val 10; void (^blk)(void) ^{val 1;};变换后 struct __Block_byref_val_0 {void *__isa;__Block_byref_val_0 *__forwarding;int __flags;int __size;int val; }; struct __main_block impl_0 {struct __block_impl impl;struct __main block desc 0* Desc;__Block_byref_val_0 *val;__main_block_impl_0(void *fp, struct __main_block_desc 0 *desc, __Block_byrefval_0 *_val, int flags0) : val(_val-__forwarding) {impl.isa _NSConcreteStackBlock;impl.Flags flags;impl.FuncPtrfp;Desc desc; }; static void __main_block_func_0(struct__main_block_impl_0 *_cself) {__Block_byref_val_0 *val __cself-val;(val-__forwarding-val) 1; } static void_main_block_copy_0(struct __main_block_impl_0*dst, struct __main_block_impl_0*src) {_Block_object_assign(dst-val, src-val, BLOCK_FIELD_IS_BYREF); }static void __main_block_dispose_0(struct __main_block_imp1_0*src) {_Block_object_dispose(src-val, BLOCK_FIELD_IS_BYREF); }static struct __main_block_desc_0 {unsigned long reserved;unsigned long Block_size;void (*copy)(struct __main_block_impl_0*, struct __main_block_impl_0*);void (*dispose)(struct __main_block_impl_0*); }__main_block_desc_0_DATA {0,sizeof(structmain_block_impl_0),__main_block_copy_O,__main_block_dispose_0 }; int main() {__Block_byref_val_0 val {0,val,0,sizeof(__Block_byref_val_0),10};blk __mainblock_impl_0( __main_block_func_0, __main_block_desc_0_DATA, val, 0x22000000);return 0; }这个__block变量val是怎样转换过来的呢? __Block_byref_val_0 val {0,val,0,sizeof(_Block_byref_val_0),10 };它竟然变为了结构体实例。__block变量也同 Block一样变成__Block_byref_val_0结构体类型的自动变量即栈上生成的__Block_byref_val_0 结构体实例。该变量初始化为10且这个值也出现在结构体实例的初始化中这意味着该结构体持有相当于原自动变量的成员变量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/85747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苏州市网站制作台州网站制作咨询薇

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

网站服务器排名前十广州市外贸网站建设企业

初识sql语句 SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。SQL语言分为3种类型: DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTERDML语句 数据库操纵语言&a…

云梦县城乡建设局网站百度关键词优化推广

概述 最近工作中有用到ES ,当然少不了自己装一个服务器捣鼓。本文的ElasticSearch 的版本: 7.17.3 一、下载 ElasticSearch 点此下载 下载完成后上传至 Linux 服务器,本文演示放在: /root/ 下,进行解压&#xff1…

关于网站建设的外文文献网站建设开发方式包括一l丫

目录 一.配置软件仓库 二.安装http php miriadb 三.配置数据库 四.源码拖拽并解压 五.防火墙通过 六.浏览器安装测试 七.界面参数设置 一.配置软件仓库 1.进入仓库目录 cd /etc/yum.repos.d 2.创建仓库文件 vim local.repo 3.在 local.repo中写入:(粘贴的时候注意位…

建设网站重庆软件工程就业方向及薪资待遇

报 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。本文地址: http://blog.csdn.net/jobchanceleo/archive/2007/04/17/1568254.aspx 有个朋友Min十几年工作经验&…

河源网站搭建费用深圳工业设计协会

概述MySQL最强大的功能之一就是能在数据检索的执行中连接(join)表。大部分的单表数据查询并不能满足我们的需求,这时候我们就需要连接一个或者多个表,并通过一些条件过滤筛选出我们需要的数据。了解MySQL连接查询之前我们先来理解下笛卡尔积的原理。数据…

下沙建设局网站深圳软件公司工资有多少

1.将训练集、验证集、测试集按照7:2:1随机划分 1.项目准备 1.在项目下新建一个py文件,名字就叫做splitDataset1.py 2.将自己需要划分的原数据集就放在项目文件夹下面 以我的为例,我的原数据集名字叫做hatDataXml 里面的JPEGImages装的是图片 Annota…

教你做兼职的网站wordpress头像class

1. 元组 Tuple 是 C# 中表示元组(Tuple)的数据结构。元组是一个用于存储一组有序元素的数据结构,每个元素可以是不同类型的数据。在 C# 中,元组是值类型,允许存储多个值,并且可以通过索引或者具名字段访问…

网络技术员工作内容周口seo

试卷代号:1376 2021年春季学期期末统一考试 机械制造装备及设计 试题 2021年7月 一、单项选择题(从所给的四个选项中,找出你认为是正确的答案,将其编号填入括号内。每小题3分,共30分) 1.卧式支承的机床重心…

罗湖微信网站制作网站域名重要吗

微信小程序可以使用wx.navigateToMiniProgram方法实现跳转到其他小程序,但是跳转到网页需要使用wx.navigateTo方法,并将所跳转的地址写在URL参数中。 例如,跳转到百度的网页可以使用以下代码: wx.navigateTo({url: https://www.…

西昌市规划建设局网站网站行业认证怎么做

🤗博主:小猫娃来啦 🤗文章核心:gitee上开源一个移动端礼盒商城项目 文章目录 前言开源地址项目运行命令项目基本展示前端效果细节展示视频前端代码细节展示视频后台效果展示后台代码展示经典优势思维导图实现思路 前言 项目样式老…

购物网站建设情况汇报建造师求职网

概念:DAO(Data Access Object) 数据库访问对象,**面向数据库SQL操作**的封装。 (一)场景 问题分析 在实际开发中,针对一张表的复杂业务功能通常需要和表交互多次(比如转账)。如果每次针对表的…

网站建设的安全防护方法苏州做网站最好公司

Wi-Fi已经成为我们日常生活中必不可少的一部分。大多数家庭和办公室都依赖于Wi-Fi来连接网络和进行各种在线活动。然而,有时我们可能会遇到网络连接不稳定或速度较慢的问题。这可能是由于IP地址的设置不当所导致的。虎观代理小二二将向您介绍如何改变Wi-Fi的IP地址&…

做海报 画册的素材网站动易网络 官方网站

一、首先集成svn到idea 点击号连接svn仓库地址 等待代码下载完毕后就可以对代码进行update,commit操作了 更新操作方法一:项目上右键 方法二:点击快捷图标 方法三: 代码提交 方法一 方法二: 方法三: 会跳出窗口: 然后点击Commit 如果检测代码有错误会询问你是否要处理,一般确定…

邗江建设局网站网站文明建设工程包括

引言 有图有真相,那短视频就更是真相了。下面是三大语言的短视频。 Java源码版云控示例: Java源码版云控示例在线视频 Net源码版云控示例: Net源码版云控示例在线视频亚丁号-知识付费平台 支付后可见 扫码付费可见 Python源码版云控示例&…

贵阳网站建设加q479185700wordpress绑域名咋弄

我是电商珠珠 22年7月视频号团队开始发展自己的电商平台-视频号小店。截止到目前为止,也才发展了一年的时间。 新平台预示着新机会,在这个平台内可发展的空间很大,利润比较高。 对于新手来说一般可以做到5w的数据,今天就来给大…

一级做c爱片的网站seo按照搜索引擎的

网络监控如影随形 作为网络管理人员要做好网络设备的流量监控,及时洞悉网络流量的变化,就能及时发现潜在的网络故障,及时定位故障部位,及时予以排除,从而做到防患于未然。可是网管人员经常会由于各种事情不再网管机旁边…

企业网站开发公司有哪些wordpress适合大型网站吗

前言 以采集数据处理逻辑为例,数据采集分为不同种类如:MQTT、MODBUS、HTTP等,不同的采集数据有不同的解析处理逻辑。但总体解析处理步骤是固定的。可以使用工厂方法设计模式简化代码,让代码变得更加优雅。 代码实战 抽象类 总体…

网站开发语言优缺点网站上实用的h5特效

Me 不可以让后面有零钱的人先来买。所以这个题不能排序 题目的点在于20块钱找零15。15可以是5 5 5 15 或10 5 15这两种组合 func lemonadeChange(bills []int) bool {var sum5, sum10 int//sort.Ints(bills)for i:0; i<len(bills); i {switch bills[i] {case 5:sum5cas…

怎么让谷歌收录我的网站厦门企业网站建设专家

随着科技的不断进步&#xff0c;基于AI神经网络的视频智能分析技术已经成为了当今社会的一个重要组成部分。这项技术通过利用计算机视觉和深度学习等技术&#xff0c;实现对视频数据的智能分析和处理&#xff0c;从而为各个领域提供了广泛的应用。今天我们就来介绍下视频智能分…