OC基础知识点的总结(全),学习OC的日记_oc setobject-程序员宅基地

  1. <span style="font-size:18px;">类的方法  
  2.   
  3. 1.在加号方法中不能使用实例变量,实例变量是依托于对象存在的只有有了对象,实例变量才会有空间  
  4.   
  5. 2.self 谁调用该方法,self就代表谁  
  6.   
  7. 当方法是一个减号方法时, 调用该方法的对象是谁,self就代表当前对象  
  8.   
  9. 当方法是一个加号方法时, 调用该方法的类是谁,self就代表当前类  
  10.   
  11. 3.实例变量的可见度:  
  12.   
  13.     @public:公共的,在任何文件中都可以访问,访问方式是通过实例对象->实例变量.(per->name)  
  14.   
  15.     @protected:受保护的,有一定的访问权,只允许在本类文件以及子类文件中访问,其他文件按不可以访问.  
  16.   
  17.     @private:私有的,只允许在本类文件中访问,不可以在子类文件中以及其他文件中访问.  
  18.   
  19.     默认的可见度是@protected  
  20.   
  21.     为什么不声明为@public?  
  22.   
  23.     1.声明为@public的实例变量,外部就可以访问以及修改,会影响到内部的一个实现,暴漏实现细节  
  24.   
  25.     2.违背了OC面向对象的三大特征之一:封装(封装的思想是隐藏内部实现,提供外部接口)  
  26.   
  27.     为什么不声明为@private?  
  28.   
  29.     1.声明为@priviate的实例变量,子类文件访问不到,所以子类文件还要重新定义  
  30.   
  31. 2.违背了OC面向对象的三大特征之一:继承.(父类的东西子类也有,可访问)  
  32.   
  33. 4.setter 和 getter 方法  
  34.   
  35. 继承  
  36.   
  37. 1.  子类继承父类保留自己独有的实例变量.  
  38.   
  39. 2.  子类可以继承父类除了private以及私有方法以外的实例变量.  
  40.   
  41. 3.  继承是单向的,具有传递性  
  42.   
  43. 4.  导入头文件时,直接导入子类头文件即可.  
  44.   
  45. 5.  子类可以重写父类的方法  
  46.   
  47. 6.  私有方法:在.m文件中实现,但是没有在.h文件中声明的方法,叫做私有方法,私有方法不允许在外部访问,但是  
  48.   
  49. 可以在本类中访问.  
  50.   
  51. 7.  子类重写父类有三种情况(1)只要父类的(2)只要自己的(3)既要父类,又要自己.  
  52.   
  53. 8.  父类具有子类共同的特点和行为.  
  54.   
  55. 9.  每个类只需要初始化独有的实例变量.  
  56.   
  57. 10.   Self用来调用自己的方法,super是用来调用父类方法的实现.  
  58.   
  59. 11.   初始化过程中要判断父类的初始化是否成功,若成功,在继续初始化当前类的特有特性.若不成功,不在初始化.  
  60.   
  61. 12. 便利构造器  
  62.   
  63. 快速创建对象,内部封装了创建对象的过程.  
  64.   
  65. +号方法,返回值类型为id类型,以类名+ with开头,拼接上多个参数.  
  66.   
  67. NSString类的常用方法  
  68.   
  69. 1.创建对象的两种方法  
  70.   
  71. (1).在main函数里先通过alloc开辟空间,然后初始化  
  72.   
  73. (2).便利构造器,也就是把第一种方式封装在类的实现部分,使用时直接用类调用即可  
  74.   
  75. 2.求字符串长度  
  76.   
  77. NSUInteger length= [str length];  
  78.   
  79. OC中的字符串结尾没有\0,这也是和C语言中有区别的地方  
  80.   
  81. 3.获取某一个字符  
  82.   
  83.  characterAtIndex:  
  84.   
  85. c语言中是通过数组名+下标  
  86.   
  87. 4.判断字符串是不是以给定的字符串开头或者结尾  
  88.   
  89. 判断开头hasPrefix:  
  90.   
  91. 判断结尾hasSuffix:  
  92.   
  93. 5.查找指定字符串的范围  
  94.   
  95. rangeOfString:  
  96.   
  97. 返回的是开始位置和长度  
  98.   
  99. 可以用NSRange 类型变量来接收  
  100.   
  101. 方法NSStringFromRange能够将NSRange类型的结构体变量转换为字符串对象,方便使用  
  102.   
  103. 6.从字符串中获得子字符串  
  104.   
  105. (1).获取给定下标之后的字符串,需要注意的是包含给定下标对应的字符  
  106.   
  107. substringFromIndex:  
  108.   
  109. (2).获取给定下标之前的字符串,需要注意的是不包含给定下标对应的字符  
  110.   
  111. substringToIndex:  
  112.   
  113. (3).获取给定范围的字符串  
  114.   
  115. substringWithRange:  
  116.   
  117. 在指定范围时用NSMakeRange()指定开始位置和长度就行了  
  118.   
  119. 7.字符串拼接  
  120.   
  121. stringByAppendingString:  
  122.   
  123. stringByAppendingFormat:  
  124.   
  125. 第二种拼接时可以设置格式串  
  126.   
  127. 8.替换字符串  
  128.   
  129. (1)将指定字符串替换成另外指定的字符串  
  130.   
  131. (2)将指定范围的字符串替换成另外指定的字符串  
  132.   
  133. 9.字符串比较  
  134.   
  135. compare:  
  136.   
  137. 需要注意的是返回值类型是NSComparisonResult  
  138.   
  139. 结果只有-1,0,1三种情况  
  140.   
  141. 10.字符串转换成数值类型  
  142.   
  143. C语言基本数据类型+Value  
  144.   
  145. 如:intValue  
  146.   
  147. 11.字符串大小写转换  
  148.   
  149. (1)全部大写  
  150.   
  151. uppercaseString  
  152.   
  153. (2)全部小写  
  154.   
  155. lowercaseString  
  156.   
  157. (3)首字母大写  
  158.   
  159. capitalizedString  
  160.   
  161. NSMutableString 类的方法  
  162.   
  163.    
  164.   
  165. 对于NSMutableString 类,因为这是可变的字符串类,所以字符串的增删改查方法都是在原字符串基础上修改  
  166.   
  167. 1.拼接  
  168.   
  169. appendFormat:  
  170.   
  171. 2.删除  
  172.   
  173. deleteCharactersInRange:  
  174.   
  175. 3.插入  
  176.   
  177. insertString:atIndex:  
  178.   
  179. 4.替换  
  180.   
  181. replaceCharactersInRange:withString:  
  182.   
  183. 数组类  
  184.   
  185. .NSArray常用方法  
  186.   
  187. 1.创建数组对象  
  188.   
  189. (1).用便利构造器的方法创建数组对象  
  190.   
  191. 示例:  
  192.   
  193. NSArray *arr1=[NSArrayarrayWithObjects:@"baidu",@tencent",@"xiaomi",@"alibaba",  
  194.   
  195. @"taobao",@"cctv", nil nil];nil是元素截至的标志符  
  196.   
  197.  NSLog(@"%@",arr1);  
  198.   
  199. (2)用初始化的方法创建数组对象  
  200.   
  201. 示例:  
  202.   
  203. NSArray *arr=[[NSArray alloc]initWithObjects:@"baidu",@tencent",@"xiaomi",@"alibaba",  
  204.   
  205. @"taobao",@"cctv",nil];  
  206.   
  207. NSLog(@"%@",arr);  
  208.   
  209. 2.获取元素个数  
  210.   
  211. 示例:  
  212.   
  213. NSUInteger count= [arr count];  
  214.   
  215.  NSLog(@"%lu",count);  
  216.   
  217. 3.根据索引值获取对象  
  218.   
  219. (1)获取指定下标对应的元素  
  220.   
  221. 示例:  
  222.   
  223. NSString *str= [arr objectAtIndex:1];  
  224.   
  225.  NSLog(@"%@",str);  
  226.   
  227. (2)获取数组中的第一个元素(两种方法)  
  228.   
  229. 示例:  
  230.   
  231.  NSString *str= [arr objectAtIndex:0];  
  232.   
  233. NSLog(@"%@",str);  
  234.   
  235. 第二种方法  
  236.   
  237. 示例:  
  238.   
  239. NSString *str= [arr firstObject];  
  240.   
  241.  NSLog(@"%@",str);  
  242.   
  243. (3)获取数组中的最后一个元素  
  244.   
  245. 示例:  
  246.   
  247.  NSString *str=[arr lastObject];  
  248.   
  249. NSLog(@"%@",str);  
  250.   
  251. 4.获取对象在数组中的索引值  
  252.   
  253. 示例:  
  254.   
  255.  NSUInteger index= [arr indexOfObject:@"baidu"];  
  256.   
  257. NSLog(@"%lu",index);  
  258.   
  259. 5.判断是否包含某个对象  
  260.   
  261. 示例:  
  262.   
  263. BOOL isExist= [arr containsObject:@"dd"];  
  264.   
  265.  NSLog(@"%d",isExist);  
  266.   
  267. 6.数组排序  
  268.   
  269. 示例:  
  270.   
  271. NSArray *sortArr=[arr sortedArrayUsingSelector:@selector(compare:)];  
  272.   
  273. NSLog(@"%@",sortArr);  
  274.   
  275. 7.快速遍历  
  276.   
  277. 示例:  
  278.   
  279. for (NSString *str in arr){  
  280.   
  281.     NSLog(@"%@",str);  
  282.   
  283.  }  
  284.   
  285. .NSMutableArray 的常用方法  
  286.   
  287. 1.创建数组对象  
  288.   
  289. 示例:  
  290.   
  291. NSMutableArray*arr1 = [[NSMutableArray alloc] initWithObjects:@"baidu",@tencent",  
  292.   
  293. @"xiaomi",@"alibaba",@"taobao",@"cctv",nil];  
  294.   
  295. 2.添加元素  
  296.   
  297. 示例:  
  298.   
  299.  [arr1 addObject:@"wangyi"];  
  300.   
  301. NSLog(@"%@",arr1);  
  302.   
  303. 3.插入元素  
  304.   
  305. 示例:  
  306.   
  307. [arr1 insertObject:@"tianya" atIndex:1];  
  308.   
  309. NSLog(@"%@",arr1);  
  310.   
  311.   
  312.   
  313.     
  314. 耿智聪  23:12:33  
  315. 4.删除元素  
  316.   
  317. 示例:  
  318.   
  319. [arr1 removeObjectAtIndex:1];//移除单个元素  
  320.   
  321. NSLog(@"%@",arr1);  
  322.   
  323. [arr1removeAllObjects];//移出所有元素  
  324.   
  325. NSLog(@"%@",arr1);  
  326.   
  327. 5.替换元素  
  328.   
  329. 示例:  
  330.   
  331. arr1 replaceObjectAtIndex:3 withObject:@"zhihu"];  
  332.   
  333. NSLog(@"%@",arr1);  
  334.   
  335. 6.交换指定位置的两个元素  
  336.   
  337. 示例:  
  338.   
  339. [arr1 exchangeObjectAtIndex:0 withObjectAtIndex:6];  
  340.   
  341.  NSLog(@"%@",arr1);  
  342.   
  343. 7.排序(幼儿版),对原数组进行排序  
  344.   
  345. 示例:  
  346.   
  347. [arr1 sortUsingSelector:@selector(compare:)];  
  348.   
  349. NSLog(@"%@",arr1);  
  350.   
  351. 8.遍历  
  352.   
  353. for (NSString *str in arr1){  
  354.   
  355.     NSLog(@"%@",str);  
  356.   
  357.  }  
  358.   
  359. .NSNumber的常用方法NSNumber有两个常用的方法  
  360.   
  361. 1.将基本数据类型转为NSNumber类型的对象  
  362.   
  363. 2.将NSNumber类型的对象转为基本数据类型  
  364.   
  365. 字典类  
  366.   
  367. 1.一个key只能对应一个value 但是一个value可以对应多个key.  
  368.   
  369. 2.字典主要是用来存储有一一对应关系的数据  
  370.   
  371. 3.可变字典增加了:添加,删除,修改功能  
  372.   
  373. 4.其中删除和修改的方法相同为setObject: forKey: 原理:先根据指定的key查找字典中是否存在指定的key,  
  374.   
  375. 如果没有,则添加该key和对应的Value,如果存在,则修改key对应的value  
  376.   
  377. 5.对于字典的遍历,遍历的是字典的key,然后根据key的值取出value的值  
  378.   
  379. 要想获取字典中的value值,首先应得到key值,然后再根据key获取value的值.  
  380.   
  381. 集合知识点  
  382.   
  383. 6.集合具有无序性,互异性,确定性  
  384.   
  385. 7.获取集合中的元素是系统给定的,不是有序的,也不是随机的.  
  386.   
  387. 8.可变集合可以添加或移除元素  
  388.   
  389. block语法以及数组排序高级  
  390.   
  391. 1.  block 的定义  
  392.   
  393. int (^block)(intx, int y) = ^(int x, int y)  
  394.   
  395. {  
  396.   
  397. return x + y;  
  398.   
  399. };  
  400.   
  401. 其中, int (^)(int x, int y)  block变量的类型  
  402.   
  403. block  block 变量的名字  
  404.   
  405. ^(int x, int y)  
  406.   
  407. {  
  408.   
  409. return x + y;  
  410.   
  411. };  
  412.   
  413. block变量的初值,block用来存储函数,所给block变量赋值时赋的是整个函数的实现  
  414.   
  415. 当把函数的实现赋给block之后,block变量就可以当做函数名使用  
  416.   
  417. 2.  有关全局变量的知识点  
  418.   
  419. 有关全局变量的知识点  
  420.   
  421. (1)想要访问在其他文件定义的全局变量,需要在当前文件用extern 修饰才可以访问到  
  422.   
  423.  (2)两个文件都定义了一个相同名字的全局变量,而又只想访问当前文件的全局变量,需要在两个文件中定义全局变量  
  424.   
  425. 时都用static修饰为静态的即可  
  426.   
  427. 3.当在block内部使用外部定义的局部变量时程序会crash  
  428.   
  429. 原因:外部定义的局部变量在block内部当成常量使用,所以不能被赋值  
  430.   
  431. 解决方案:在定义变量时加上__block(注意有两个下划线),如__block int a = 10即可,然后再block内部就  
  432.   
  433. 可以当做变量使用  
  434.   
  435. __block的作用就是告诉编译器编译时不要把外部定义的变量在内部当做常量使用  
  436.   
  437. 但是,如果变量是全局变量则没有这个问题  
  438.   
  439. 也就是说在block中访问全局变量,不需要__block修饰  
  440.   
  441. 3.  数组排序高级  
  442.   
  443. 当对系统提供的类的对象升序排序时或者对自定义的类的对象排序时使用:  
  444.   
  445. sortedArrayUsingSelector:  
  446.   
  447. 当对系统类型的对象排序时,并且要降序排序时,使用block 方式的排序方法  
  448.   
  449. sortedArrayUsingComparator:^NSComparisonResult(idobj1id obj2)  
  450.   
  451. 属性  
  452.   
  453. 1.  属性使用来替代settergetter方法的新语法,用属性可以快速创建settergetter的声明和实现  
  454.   
  455. 定义属性是用关键字@propetry  
  456.   
  457. 2.  属性的特性  
  458.   
  459. (1)       读写特性  
  460.   
  461. readonly 和 readwrite 系统默认的是读写特性是readwrite  
  462.   
  463. (2)       原子特性  
  464.   
  465. atomic(原子特性),保证线程安全  
  466.   
  467. nonatomic(非原子特性),不保证线程安全  
  468.   
  469. 系统默认为atomic,但是推荐使用nonatomic  
  470.   
  471. (3)       语义特性  
  472.   
  473. assign,直接赋值,针对于基本数据类型和对象类型  
  474.   
  475. retain,针对于对象,会造成引用计数加1  
  476.   
  477. copy,针对于对象,会造成引用计数从01  
  478.   
  479. 系统默认的是assign  
  480.   
  481. category (分类,类目)  
  482.   
  483. 目的是为没有源代码的类添加方法.(只能添加方法,不能添加实例变量)是扩充一个类的功能的方式之一.为原有类扩  
  484.   
  485. 充的方法会成为原类的一部分.使用即可.  
  486.   
  487. 分类的定义格式 @interface开头 + 扩展的类名(分类名) @end结束.  
  488.   
  489. 分类也分为.h(接口部分),以及.m(实现部分) .h文件中填写方法的声明, .m文件填写方法的实现  
  490.   
  491. 延展  
  492.   
  493. 延展, 也是扩充类的功能的一种方式,只不过延展扩充的功能是私有的.是在.m文件中定义的  
  494.   
  495. 延展既可以扩展方法,也可以扩展实例变量.只不过都是私有的,外界都无法直接访问  
  496.   
  497. 延展是为有源代码的类的扩充内容  
  498.   
  499. 协议  
  500.   
  501. 1.协议,就相当于一个任务清单,规定了所要做的操作,只有一系列的方法的声明.谁服从该协议,谁就要实现协议中的  
  502.   
  503. 方法(完成任务清单).所以协议只有.h文件,没有.m文件  
  504.   
  505. 2.协议的方法有两种类型, @optional@required  
  506.   
  507. @optional 可选的,被它修饰的方法服从协议的类可以选择实现  
  508.   
  509. @required 必须的,被它修饰的方法服从协议的类必须实现  
  510.   
  511. 3.  协议命名规范: 协议依托于哪一个类,就以这个类的类名+Delegate  
  512.   
  513.    
  514.   
  515. 内存管理  
  516.   
  517. 1.内存管理基本原则:如果你对一个对象进行alloc, retaincopy之后,你就拥有了该对象的拥有权,你就必须对  
  518.   
  519. 它进行 release 和 autorelease  
  520.   
  521. 可以简单地理解为谁让引用计数+1,谁就要让引用计数-1  
  522.   
  523. 2.可以使引用计数增加的操作有:alloc, retaincopy  
  524.   
  525. 使引用计数减1的操作有release和autorelease  
  526.   
  527. 3.当该类型的对象引用计数为 0 时,系统会自动调用该类的dealloc方法回收空间.该方法是由系统自动调用,不能  
  528.   
  529. 手动调用  
  530.   
  531. 验证对象空间是否回收,只需要查看该类的dealloc方法有没有执行即可(需要在.m重写dealloc)  
  532.   
  533. 4.  属性语义声明为retaincopy时内存问题  
  534.   
  535. 当语义声明为retaincopy之后,settergetter方法内部就不是简单地赋值操作,里面解决了野指针问题和内存  
  536.   
  537. 泄露问题,还有重写dealloc方法必不可少  
  538.   
  539. 5.  便利构造器内存问题  
  540.   
  541. 如果是调用系统的便利构造器方法的话,就不需要自己去管理内存  
  542.   
  543. 如果是自己写的类,在实现便利构造器的方法的同时要加上内存处理操作,在alloc 之后,返回时使用autorelease.  
  544.   
  545. 不过,尽量不要使用便利构造器,因为它并没有是引用计数立即减1,有内存泄露的隐患  
  546.   
  547. 6.  集合内存问题  
  548.   
  549. 当把对象放进集合中(数组,字典,集合),会将对象的引用计数 +1,因为内部做了retain操作  
  550.   
  551. 当集合(数组,字典,集合)空间被回收时,他们会向集合中每一个元素都发送一个release消息  
  552.   
  553. 当从数组中移除一个元素时,会release该对象,引用计数 - 1  
  554.   
  555.                 
  556.   
  557. KVC  
  558.   
  559. 1.  KVC ,key-value-coding, 也就是键值编码  
  560.   
  561. 2.  KVC是给类的实例变量赋值或取值的一种方法  
  562.   
  563. (1).setValue:forKey:  ( 赋值)  
  564.   
  565. 其工作原理是:1.先查找该类是否有对应的setter方法:比如:setName:(set_name),如果有则通过setter方法给  
  566.   
  567. 实例变量赋值,如果没有的话,再查找该类有没有一个_+key的实例变量,比如_name,如果有,则给name赋值,如果没  
  568.   
  569. 有则再查找该类是否有一个和key同名的实例变量,比如name,如果有,则给neme赋值,如果没有,则系统会抛出一个  
  570.   
  571. NSUnknownKeyException,说明没有找到你匹配的key.(也就是该类没有setName:, 也没有_name, 和 name)  
  572.   
  573. 为了预防没有匹配的key引起程序crash,在类的.m文件中实现setValue: forUndefinedKey:  
  574.   
  575. (2).value: forKey: ( 取值 )  
  576.   
  577. 原理和setValue: forKey:类似,这个方法先判断的是getter方法  
  578.   
  579. 相对应的,这个也要在.m文件中实现  
  580.   
  581. value: forUndefinedKey:  
  582.   
  583. (3). 如果类A中有一个类B类型的实例变量a, 要通过类A给类B的实例变量b赋值则使用  
  584.   
  585. 假设A的一个对象为aa  
  586.   
  587. [aa  setValue: ForKeyPath:@”a.b”];  
  588.   
  589. (4).KVC方式用字典给对象赋值  
  590.   
  591. setValuesForKeysWithDictionary:  
  592.   
  593. 原理是:  
  594.   
  595. for (NSString *key in dic) {  
  596.   
  597.     [stusetValue:[dic objectForKey:key] forKey:key];  
  598.   
  599.  }  
  600. </span>  
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chenhongyi_1992/article/details/38668879

智能推荐

Hive自定义GenericUDF函数_使用genericudf自定义函数-程序员宅基地

文章浏览阅读1.1k次,点赞9次,收藏5次。*** 自定义函数:将字符串转换为大写*//*** 初始化函数* @param arguments 函数参数的ObjectInspector数组* @return 函数返回值的ObjectInspector* @throws UDFArgumentException 如果参数数量不正确*/@Override// 检查参数数量是否为1= 1) {// 获取参数的ObjectInspector并创建Converter。_使用genericudf自定义函数

论软件设计模式及应用(系统架构师2024新版)_论软件设计模式的应用及其与软件质量之间的关系 csdn-程序员宅基地

文章浏览阅读5.3k次。2019年10月,本人所在保险公司启动了超级销售APP项目,该项目通过运用先进的销售工具、客户管理、营销活动管理等功能以达到提升销售人员的效能,加大业务驱动的目标。在该项目中我担任系统架构师,负责系统的架构设计工作。本文以该项目为例,主要论述了软件设计模式在开发中的具体应用。通过抽象工厂模式,实现出单流程车+人联合销售模块间的对象解耦,符合设计模式迪米特法则;通过外观模式,实现保费支付实名认证生物识别、手机号校验隐藏系统的复杂性,系统中的接口提供一致的界面;_论软件设计模式的应用及其与软件质量之间的关系 csdn

STM32 EC200 物联网项目实操 第2篇 FTP OTA升级_ftp 服务器ota升级-程序员宅基地

文章浏览阅读1k次,点赞14次,收藏9次。记录了STM32F0系统单片机 BOOT引导程序通过4G模块进行OTA升级的实操过程使用EC200 4G物联网模块,使用MD5算法校验OTA升级文件正确性。BOOT实现了FTP服务器OTA bin文件获取,跳转APP主程序的功能。硬件环境软件开发环境IAR 8.32.1VSCODESTM32 CUBE软件支持包ST HAL库4G模块EC200N-CN。_ftp 服务器ota升级

【A情感文本分类实战】2024 Pytorch+Bert/Roberta+TextCNN/BiLstm/Lstm+Prompt-Tuning等实现IMDB情感文本分类完整项目(项目已开源)_roberta文本分类-程序员宅基地

文章浏览阅读3.1w次,点赞64次,收藏241次。顶会的代码干净利索,借鉴其完成了以下工程本工程采用Pytorch框架,使用上游语言模型下游网络模型的结构实现IMDB情感分析预训练大语言模型可选择Bert、Roberta下游网络模型可选择BiLSTM、LSTM、TextCNN、GRU、Attention以及其组合语言模型和网络模型扩展性较好,可以此为BaseLine再使用你的数据集,模型最终的准确率均在90%以上项目已开源,clone下来再配个简单环境就能跑。_roberta文本分类

阿里云的海外虚拟云主机能否使用谷歌服务-程序员宅基地

文章浏览阅读485次。阿里云的海外虚拟云主机可以使用谷歌服务,但是需要注意地区和政策限制。_阿里云国外服务器可以访问谷歌吗

工作(科研)小助手(个人记录)_codenewscc-程序员宅基地

文章浏览阅读205次。1、 可用于文章搜索、作者文献系列查看下载等(校园内下载,值得推荐),链接:2、 一般近两年的文献无法下载,链接:3、,链接:4、,链接:1、,链接:2、,链接:3、,只需输入人名或专利名称等,链接:4、,链接:1、,链接:2、,链接:3、 ,降重好帮手,链接:4、,链接:5、Quillbot,润色,链接:1、,直接搜索期刊名字下载点击安装即可,链接:2、,简单引用文献,输入文章名称即可,链接:1、,外文书籍pdf下载,超nice,链接:1、,链接:1、,图片转文字,链接:_codenewscc

随便推点

pix2pixhd_图像翻译三部曲:pix2pix, pix2pixHD, vid2vid-程序员宅基地

文章浏览阅读150次。所谓图像翻译,指从一副图像到另一副图像的转换。可以类比机器翻译,一种语言转换为另一种语言。下图就是一些典型的图像翻译任务:比如语义分割图转换为真实街景图,灰色图转换为彩色图,白天转换为黑夜......本文主要介绍图像翻译的三个比较经典的模型pix2pix,pix2pixHD, vid2vid。pix2pix提出了一个统一的框架解决了各类图像翻译问题,pix2pixHD则在pix2pix的基础上,较..._spade pic2pichd

ART-Pi入门篇——(三)ART-Pi代码手册-程序员宅基地

文章浏览阅读2.8k次。SDK 代码 框架介绍工程项目代码由三部分构成,分别是 通用驱动库,工程逻辑代码,RT-Thread 源码,下面的表格来详细介绍这个三个部分:工程项目代码文件夹说明通用驱动库libraries用于存放 HAL 库以,基于 HAL 库的外设驱动文件以及其他通用库工程逻辑代码projects项目工程文件夹,包含了各种开源例程RT-Thread 源码rt-threadRT-Thread 源码为了保证 NOR FLASH (W25Q128) 的数据的安全性,_art-pi

架构讲义4_vrasp模型-程序员宅基地

文章浏览阅读4k次。 第四章 高层软件架构的设计 在高层设计阶段,主要工作是分析与设计软件的体系结构。通过系统分解,确定子系统的功能和子系统之间的关系,以及模块的功能和模块之间的关系,产生《体系结构设计报告》。 这个阶段是系统架构师发挥作用的主要位置,高层架构设计过程设计流程如下。 _vrasp模型

dj java decompiler 反编译支持中文_java decompiler 复制中文-程序员宅基地

文章浏览阅读2.8k次。1.dj java decompiler 反编译支持中文2.反编译jar步骤使用方法:首先将要反编译的jar文件,用Winrar解压到和jar文件名称一样的文件夹中 在命令输入框中输入如下命令:cd C:\Users\wz\Desktop\DJJavaDecompilerjad -o -r -dC:\Users\wz\Desktop\fby -sjava C:\_java decompiler 复制中文

webwork.in.action的学习经验-程序员宅基地

文章浏览阅读67次。今天看了电子版的webwork.in.action的中文版,把webwork框架又进一步理解下。xwork.xml的配置,包括package、action、result、interceptor。package:有继承方式,当abstract="true"时,只能给子类继承,其中不能有action映射。namespace:命名空间,每次到指定命名空间找对应action,如果未找到,则到默认的...

PyQt5在python中使用的经验总结_pyqt5按钮调用python脚本-程序员宅基地

文章浏览阅读795次。本文旨在归纳总结如何在python中导入desinger.exe设计出的ui,以及常用控件在python中的使用方法。常用控件的使用方法会根据自己使用情况,进行不断归纳更新_pyqt5按钮调用python脚本

推荐文章

热门文章

相关标签