前言

做iOS开发有3年了,从当初的小白到现在,断断续续看过很多资料,之前也写过一些博文来记录,但是感觉知识点都比较凌乱。所以最近准备抽时间把iOS开发的相关知识进行一个梳理,主要分为OC基础、UI控件、多线程、动画、网络、数据持久化、自动布局、第三方框架等几个模块进行梳理。本系列的所有博文集合参见:iOS开发知识梳理博文集。本文主要介绍 OC基础--字符串。

字符串应该是我们开发过程中用的最多的一种数据类型了,一般与后台的请求交互都跟字符串有关,不管是json串还是其他的数据格式,后台提供的绝大部分数据都是以字符串的形式返回的。Objective-C里核心的处理字符串的类就是NSString和NSMutableString这两个类,这两个类完成了Objective-C中字符串大部分功能的处理,我们今天的重点就是这两个类了。(后面内容转载自:玩转 NSString

一 NSString

1.1 字符串属性

  1. //////////字符串属性//////////
  2. NSString *str1 = @"string";
  3.  
  4. NSLog(@"长度: %ld", str1.length);
  5. NSLog(@"描述: %@", str1.description);
  6. NSLog(@"哈希地址: %lu", (unsigned long)str1.hash);
  7. NSLog(@"字符串对应下标字符: %c", [str1 characterAtIndex:]);
  8. //输出: 长度: 6
  9. //输出: 描述: string
  10. //输出: 哈希地址: 10152471993823965
  11. //输出: 字符串对应下标字符: r

1.2 字符串截取

  1. //截取指定位置之后的字符串
  2. - (NSString *)substringFromIndex:(NSUInteger)from;
  3. //从0下标开始截取到指定位置的字符串
  4. - (NSString *)substringToIndex:(NSUInteger)to;
  5. //截取指定范围的字符串
  6. - (NSString *)substringWithRange:(NSRange)range;
  7. //截取字符串指定范围的字符
  8. - (void)getCharacters:(unichar *)buffer range:(NSRange)range;

1.3 字符串比较

将两个字符串进行计较,返回NSComparisonResult枚举结果。

  1. //////////字符串比较//////////
  2. //1.比较
  3. - (NSComparisonResult)compare:(NSString *)string;
  4. //2.比较(指定字符串,条件)
  5. - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask;
  6. //3.比较(指定字符串,条件,范围)
  7. - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)compareRange;
  8. //4.比较(指定字符串,条件,范围,本地化)
  9. - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)compareRange locale:(nullable id)locale;
  10. //5.比较(不区分大小写)
  11. - (NSComparisonResult)caseInsensitiveCompare:(NSString *)string;
  12.  
  13. //6.本地化比较
  14. - (NSComparisonResult)localizedCompare:(NSString *)string;
  15. //7.本地化比较(不区分大小写)
  16. - (NSComparisonResult)localizedCaseInsensitiveCompare:(NSString *)string;
  17. //8.本地化比较(标准)
  18. - (NSComparisonResult)localizedStandardCompare:(NSString *)string;
  19.  
  20. //9.判断两个字符串是否内容一致
  21. - (BOOL)isEqualToString:(NSString *)aString;

比较结果说明:

NSComparisonResult 说明
NSOrderedAscending 升序 (左小右大)
NSOrderedSame 相同 (内容相同)
NSOrderedDescending 降序 (左大右小)

比较选项说明:

NSStringCompareOptions 说明
NSCaseInsensitiveSearch 不区分大小写比较
NSLiteralSearch 区分大小写比较
NSBackwardsSearch 从字符串末尾开始搜索
NSAnchoredSearch 搜索限制范围的字符串
NSNumericSearch 按照字符串里的数字为依据,算出顺序
NSDiacriticInsensitiveSearch 忽略 "-" 符号的比较
NSWidthInsensitiveSearch 忽略字符串的长度,比较出结果
NSForcedOrderingSearch 忽略不区分大小写比较的选项
NSRegularExpressionSearch 只能应用于 rangeOfString:..., stringByReplacingOccurrencesOfString:...和 replaceOccurrencesOfString:...方法

1.4 字符串搜索

  1. //////////搜索基本//////////
  2. //1.是否包含前缀(以str开头)
  3. - (BOOL)hasPrefix:(NSString *)str;
  4. //2.是否包含后缀(以str结尾)
  5. - (BOOL)hasSuffix:(NSString *)str;
  6. //3.获取公共前缀
  7. - (NSString *)commonPrefixWithString:(NSString *)str options:(NSStringCompareOptions)mask;
  8. //4.是否包含字符串
  9. - (BOOL)containsString:(NSString *)str;
  10. //5.本地化是否包含字符串(不区分大小写)
  11. - (BOOL)localizedCaseInsensitiveContainsString:(NSString *)str;
  12. //6.本地化是否包含字符串(标准)
  13. - (BOOL)localizedStandardContainsString:(NSString *)str;
  14. //7.本地化搜索字符串范围(标准)
  15. - (NSRange)localizedStandardRangeOfString:(NSString *)str;
  16.  
  17. //////////搜索字符串//////////
  18. //8.搜索(指定字符串)
  19. - (NSRange)rangeOfString:(NSString *)searchString;
  20. //9.搜索(指定字符串,条件)
  21. - (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask;
  22. //10.搜索(指定字符串,条件,范围)
  23. - (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)searchRange;
  24. //11.搜索(指定字符串,条件,范围,本地化)
  25. - (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)searchRange locale:(nullable NSLocale *)locale;
  26.  
  27. //////////搜索字符集合//////////
  28. //12.搜索(指定字符集合)
  29. - (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)searchSet;
  30. //13.搜索(指定字符集合,条件)
  31. - (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)searchSet options:(NSStringCompareOptions)mask;
  32. //14.搜索(指定字符集合,条件,范围)
  33. - (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)searchSet options:(NSStringCompareOptions)mask range:(NSRange)searchRange;
  34.  
  35. //15.用字符串的字符编码指定索引查找位置
  36. - (NSRange)rangeOfComposedCharacterSequenceAtIndex:(NSUInteger)index;
  37. //16.用字符串的字符编码指定区域段查找位置
  38. - (NSRange)rangeOfComposedCharacterSequencesForRange:(NSRange)range;

1.5 字符串拼接

  1. //////////字符串拼接//////////
  2. NSString *string = @"";
  3. NSString *appStr = @"";
  4. NSString *resultStr1 = [string stringByAppendingString:appStr];
  5. NSString *resultStr2 = [string stringByAppendingFormat:@" + %@", appStr];
  6.  
  7. NSLog(@"普通拼接: %@", resultStr1);
  8. NSLog(@"格式化拼接: %@", resultStr2);
  9. //输出: 普通拼接: 12
  10. //输出: 格式化拼接: 1 + 2

1.6 字符串基本类型转换

  1. //////////字符串基本类型转换//////////
  2. NSString *numStr = @"87234.2345";
  3.  
  4. NSLog(@"double型: %f", numStr.doubleValue);
  5. NSLog(@"float型: %f", numStr.floatValue);
  6. NSLog(@"int型: %d", numStr.intValue);
  7. NSLog(@"NSInteger型: %ld", numStr.integerValue);
  8. NSLog(@"long long型: %lld", numStr.longLongValue);
  9. NSLog(@"BOOL型: %d", numStr.boolValue);
  10. //输出: double型: 87234.234500
  11. //输出: float型: 87234.234375
  12. //输出: int型: 87234
  13. //输出: NSInteger型: 87234
  14. //输出: long long型: 87234
  15. //输出: BOOL型: 1

1.7 字符串大小写转换

  1. //////////字符串大小写转换//////////
  2. NSString *string = @"string";
  3.  
  4. NSLog(@"大写: %@", string.uppercaseString);
  5. NSLog(@"小写: %@", string.lowercaseString);
  6. NSLog(@"首字母大写: %@", string.capitalizedString);
  7. //输出: 大写: STRING
  8. //输出: 小写: string
  9. //输出: 首字母大写: String
  10.  
  11. //本地化(大写)
  12. - (NSString *)uppercaseStringWithLocale:(nullable NSLocale *)locale;
  13. //本地化(小写)
  14. - (NSString *)lowercaseStringWithLocale:(nullable NSLocale *)locale;
  15. //本地化(首字母大写)
  16. - (NSString *)capitalizedStringWithLocale:(nullable NSLocale *)locale;

1.8 字符串分行,分段

  1. //////////分行//////////
  2. //1.指定范围,分行取字符串
  3. - (void)getLineStart:(nullable NSUInteger *)startPtr end:(nullable NSUInteger *)lineEndPtr contentsEnd:(nullable NSUInteger *)contentsEndPtr forRange:(NSRange)range;
  4. //2.获取指定范围该行的范围
  5. - (NSRange)lineRangeForRange:(NSRange)range;
  6.  
  7. //////////分段//////////
  8. //3.指定范围,分段取字符串
  9. - (void)getParagraphStart:(nullable NSUInteger *)startPtr end:(nullable NSUInteger *)parEndPtr contentsEnd:(nullable NSUInteger *)contentsEndPtr forRange:(NSRange)range;
  10. //4.获取指定范围该段落的范围
  11. - (NSRange)paragraphRangeForRange:(NSRange)range;
  12.  
  13. //////////字符串分行,分段//////////
  14. NSString *string = @"123 456\nABC,DEF\nabc.def";
  15. //获取该行的范围(指定范围)
  16. NSRange range1 = [string lineRangeForRange:NSMakeRange(, )];
  17. NSLog(@"%ld 行长度: %ld", range1.location, range1.length);
  18. //输出: 0 行长度: 16
  19.  
  20. //获取该段落范围(指定范围)
  21. NSRange range2 = [string paragraphRangeForRange:NSMakeRange(, )];
  22. NSLog(@"%ld 段落长度: %ld", range2.location, range2.length);
  23. //输出: 0 段落长度: 8

1.9 字符串列举(按条件)

  1. //////////字符串列举//////////
  2. NSString *string = @"123456\nABCDEF\nabcdef
  3. //1.列举(按行)
  4. [string enumerateLinesUsingBlock:^(NSString * _Nonnull line, BOOL * _Nonnull stop) {
  5. NSLog(@"每行: %@", line);
  6. }];
  7. //输出: 每行: 123456
  8. //输出: 每行: ABCDEF
  9. //输出: 每行: abcdef
  10.  
  11. //2.列举(范围,条件)
  12. [string enumerateSubstringsInRange:NSMakeRange(5, 10) options:NSStringEnumerationByLines usingBlock:^(NSString * _Nullable substring, NSRange substringRange, NSRange enclosingRange, BOOL * _Nonnull stop) {
  13.  
  14. NSLog(@"%@", substring);
  15. NSLog(@"%ld %ld", substringRange.location, substringRange.length);
  16. NSLog(@"%ld %ld", enclosingRange.location, enclosingRange.length);
  17.  
  18. }];
  19. //输出: 6
  20. //输出: 5 1
  21. //输出: 5 2
  22.  
  23. //输出: ABCDEF
  24. //输出: 7 6
  25. //输出: 7 7
  26.  
  27. //输出: a
  28. //输出: 14 1
  29. //输出: 14 1

列举选项:

NSStringEnumerationOptions 说明
NSStringEnumerationByLines 按行
NSStringEnumerationByParagraphs 按段落
NSStringEnumerationByComposedCharacterSequences 按字符顺序
NSStringEnumerationByWords 按单词,字
NSStringEnumerationBySentences 按句子
NSStringEnumerationReverse 反向遍历
NSStringEnumerationSubstringNotRequired 不需要子字符串
NSStringEnumerationLocalized 本地化

1.10 字符串编码和转换

  1. //////////字符串编码和转换//////////
  2. NSString *string = @"string";
  3.  
  4. NSLog(@"最快编码值(枚举): %lu", (unsigned long)string.fastestEncoding);
  5. NSLog(@"最小编码值(枚举): %lu", (unsigned long)string.smallestEncoding);
  6. NSLog(@"UTF8编码值: %s", string.UTF8String);
  7. //输出: 最快编码值(枚举): 1
  8. //输出: 最小编码值(枚举): 1
  9. //输出: UTF8编码值: string
  1. //1.选择编码,是否允许有损编码
  2. - (nullable NSData *)dataUsingEncoding:(NSStringEncoding)encoding allowLossyConversion:(BOOL)lossy;
  3. //2.选择编码
  4. - (nullable NSData *)dataUsingEncoding:(NSStringEncoding)encoding;
  5. //3.判断是否可以无损编码
  6. - (BOOL)canBeConvertedToEncoding:(NSStringEncoding)encoding;
  7.  
  8. //4.C字符编码转换
  9. - (nullable __strong const char *)cStringUsingEncoding:(NSStringEncoding)encoding;
  10. //5.判读C字符转化是否可以成功
  11. - (BOOL)getCString:(char *)buffer maxLength:(NSUInteger)maxBufferCount encoding:(NSStringEncoding)encoding;
  12. //6.指定缓存区转换
  13. - (BOOL)getBytes:(nullable void *)buffer maxLength:(NSUInteger)maxBufferCount usedLength:(nullable NSUInteger *)usedBufferCount encoding:(NSStringEncoding)encoding options:(NSStringEncodingConversionOptions)options range:(NSRange)range remainingRange:(nullable NSRangePointer)leftover;
  14.  
  15. //7.对字符串进行编码时所需的最大字节数
  16. - (NSUInteger)maximumLengthOfBytesUsingEncoding:(NSStringEncoding)enc;
  17. //8.对字符串进行编码时所需的字节数
  18. - (NSUInteger)lengthOfBytesUsingEncoding:(NSStringEncoding)enc;
  19.  
  20. //9.可用字符串编码
  21. + (const NSStringEncoding *)availableStringEncodings;
  22. //10.本地化编码名称
  23. + (NSString *)localizedNameOfStringEncoding:(NSStringEncoding)encoding;
  24. //11.默认C字符串编码
  25. + (NSStringEncoding)defaultCStringEncoding;

1.11 字符串分割

  1. //////////字符串分割//////////
  2. NSString *string = @"A_B_c_D_E_F";
  3.  
  4. //分割(指定字符串)
  5. NSArray *resultArr1 = [string componentsSeparatedByString:@"_"];
  6. NSLog(@"%@", resultArr1);
  7. //输出: (A, B, c, D, E, F)
  8.  
  9. //分割(指定字符集合)
  10. NSArray *resultArr2 = [string componentsSeparatedByCharactersInSet:[NSCharacterSet lowercaseLetterCharacterSet]];
  11. NSLog(@"%@", resultArr2);
  12. //输出: ("A_B_" , "_D_E_F")

字符集合:

NSCharacterSet 说明
controlCharacterSet 控制符
whitespaceCharacterSet 空格符
whitespaceAndNewlineCharacterSet 空格换行符
decimalDigitCharacterSet 小数
letterCharacterSet 文字
lowercaseLetterCharacterSet 小写字母
uppercaseLetterCharacterSet 大写字母
nonBaseCharacterSet 非基础
alphanumericCharacterSet 数字字母
decomposableCharacterSet 可分解
illegalCharacterSet 非法
punctuationCharacterSet 标点
capitalizedLetterCharacterSet 大写
symbolCharacterSet 符号
newlineCharacterSet 换行符
1.12 字符串操作(修剪,填充,折叠,替换)
  1. NSString *string = @"3EWRs a;af";
  2.  
  3. //////////修剪//////////
  4. NSString *result1 = [string stringByTrimmingCharactersInSet:[NSCharacterSet lowercaseLetterCharacterSet]];
  5. NSLog(@"%@", result1);
  6. //输出: 3EWRs a;
  7.  
  8. //////////填充//////////
  9. NSString *result2 = [string stringByPaddingToLength: withString:@"填充" startingAtIndex:];
  10. NSLog(@"%@", result2);
  11. //输出: 3EWRs a;af充填充填充填充填充填
  12.  
  13. //////////折叠//////////
  14. NSString *result3 = [string stringByFoldingWithOptions:NSNumericSearch locale:[NSLocale systemLocale]];
  15. NSLog(@"%@", result3);
  16. //输出: 3EWRs a;af
  17.  
  18. //////////替换//////////
  19. //替换(指定字符串)
  20. NSString *result4 = [string stringByReplacingOccurrencesOfString:@" " withString:@"替换"];
  21. NSLog(@"%@", result4);
  22. //输出: 3EWRs替换a;af
  23.  
  24. //替换(指定字符串,条件,范围)
  25. NSString *result5 = [string stringByReplacingOccurrencesOfString:@"a" withString:@"替换" options:NSRegularExpressionSearch range:NSMakeRange(, string.length - )];
  26. NSLog(@"%@", result5);
  27. //输出: 3EWRs 替换;af
  28.  
  29. //替换(指定范围)
  30. NSString *result6 = [string stringByReplacingCharactersInRange:NSMakeRange(, string.length) withString:@"替换"];
  31. NSLog(@"%@", result6);
  32. //输出: 替换

1.13 字符串翻译

  1. //////////字符串翻译//////////
  2. NSString *dalian = @"大连";
  3. NSString *result = [dalian stringByApplyingTransform:NSStringTransformMandarinToLatin reverse:NO];
  4.  
  5. NSLog(@"%@", result);
  6. //输出: dà lián

翻译选项:

翻译选择 说明
NSStringTransformLatinToKatakana 拉丁->片假名
NSStringTransformLatinToHiragana 拉丁->平假名
NSStringTransformLatinToHangul 拉丁->韩语
NSStringTransformLatinToArabic 拉丁->阿拉伯语
NSStringTransformLatinToHebrew 拉丁->希伯来语
NSStringTransformLatinToThai 拉丁->泰国
NSStringTransformLatinToCyrillic 拉丁->西里尔字母
NSStringTransformLatinToGreek 拉丁->希腊
NSStringTransformToLatin 拉丁
NSStringTransformMandarinToLatin 普通话->拉丁
NSStringTransformHiraganaToKatakana 平假名->片假名
NSStringTransformFullwidthToHalfwidth 全角->半角
NSStringTransformToXMLHex XML16进制
NSStringTransformToUnicodeName Unicode名
NSStringTransformStripCombiningMarks 结合地带商标
NSStringTransformStripDiacritics 带音符

1.14 字符串写入

  1. //////////字符串写入//////////
  2. //写入到指定路径,编码的文件中
  3. [string writeToFile:@"/Users/Desktop/LuisX.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
  4.  
  5. //写入到指定URL,编码的文件中
  6. [string writeToURL:[NSURL URLWithString:@"file://LuisX.text"] atomically:YES encoding:NSUTF8StringEncoding error:nil];

二 NSMutableString

NSMutableString是动态的字符串,可以动态的添加,修改,删除等,并且NSMutableString继承自NSString,所以NSString中的方法在NSMutableString都可以使用。

2.1 可变字符串分配容量

提前指定的容量,知识用于内存优化,实际大小可以大于设置的容量capacity

  1. //////////字符串分配容量//////////
  2.  
  3. //1.初始化容量为Capacity大小的字符串 (需要手动释放内存)
  4. NSMutableString *mutableStr1 = [[NSMutableString alloc] initWithCapacity:];
  5.  
  6. //2.初始化容量为Capacity大小的字符串 (不需要手动释放内存)
  7. NSMutableString *mutableStr2 = [NSMutableString stringWithCapacity:];

2.2 可变字符串扩展方法

  1. NSMutableString *str = [NSMutableString stringWithString:@"string"];
  2.  
  3. //////////插入//////////
  4. [str insertString:@"" atIndex:];
  5. NSLog(@"%@", str);
  6. //输出: st123ring
  7.  
  8. //////////删除//////////
  9. [str deleteCharactersInRange:NSMakeRange(, )];
  10. NSLog(@"%@", str);
  11. //输出: st3ring
  12.  
  13. //////////拼接//////////
  14. [str appendString:@""];
  15. NSLog(@"%@", str);
  16. //输出: st3ring456
  17.  
  18. //////////格式化拼接//////////
  19. [str appendFormat:@"7 89"];
  20. NSLog(@"%@", str);
  21. //输出: st3ring4567 89
  22.  
  23. //////////设置新字符串//////////
  24. [str setString:@"string"];
  25. NSLog(@"%@", str);
  26. //输出: string
  27.  
  28. //////////字符串替换//////////
  29. //1.指定范围替换
  30. [str1 replaceCharactersInRange:NSMakeRange(, ) withString:@""];
  31. NSLog(@"%@", str1);
  32. //输出: st123ng
  33.  
  34. //2.指定字符串,条件,范围替换
  35. [str1 replaceOccurrencesOfString:@"" withString:@"--" options:NSRegularExpressionSearch range:NSMakeRange(, str1.length)];
  36. NSLog(@"%@", str1);
  37. //输出: st--ng

OC基础--字符串的更多相关文章

  1. oc基础 不可变字符串的创建和使用

    oc基础  不可变字符串的创建和使用 简介:下面都是字符串基本用法. 1.字符串的创建 //创建oc常量字符串 NSString *str=@"hello world!"; NSL ...

  2. OC基础13:数字、字符串和集合2

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 17.Foundation框架的数组是有序 ...

  3. OC基础12:数字、字符串和集合1

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.有时要将一些数字数据类型的值当做对象来 ...

  4. 【OC基础语法考试】

    OC基础语法已经全部学完,但是这些知识只是最基础的,还有很多高级知识,这个可能需要后面慢慢的去学习才能体会到.接下来我会总结前面的OC基础语法,如果大家发现有什么不正确的地方,请指正,小弟是新生,多请 ...

  5. iOS 阶段学习第11天笔记(OC基础知识)

    iOS学习(OC语言)知识点整理 一.OC基础知识 1)#import  用于导入头文件,预处理阶段加载引用,只加载一次. 2)OC 依赖于Foundation框架下的头文件Foundation.h, ...

  6. OC基础笔记目录

    OC基础(1) Objective-C简介 OC和C对比 第一个OC程序 面向对象思想 OC基础(2) 类与对象 类的设计 第一个OC类 对象方法的声明和实现 类方法的声明和实现 OC基础(3) 对象 ...

  7. OC - 2.OC基础知识介绍

    一.基础语法 1> OC语言和C语言 C语言是面向过程的语言,OC语言是面向对象的语言 OC语言继承了C语言,并增加了面向对象的思想 以下内容只介绍OC语言与C语言的不同之处 2> 关键字 ...

  8. OC基础 可变数组与不可变数组的使用

    OC基础 可变数组与不可变数组的使用 1.不可变数组 1.1不可变数组的创建 //实例方法 NSArray *array = [[NSArray alloc] initWithObjects:&quo ...

  9. OC基础17:归档

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.归档即是用某种格式把一个或多个对象保存 ...

随机推荐

  1. java数组的拷贝和扩容

    1.拷贝arraycopy方法 // 拷贝:arraycopy方法 // arraycopy // 第一个参数:原数组 // 第二个参数:原数组元素的起始位置 // 第三个参数:目标数组 // 第四个 ...

  2. DataGrip 2020.1 安装与激活

    1 软件下载 百度网盘: 链接:https://pan.baidu.com/s/1kHSq1XS0i4YDF0HuzsxCLg 提取码:djyc 2 安装 解压文件后点击 datagrip-2020. ...

  3. Typora 完美结合 PicGo,写作体验更佳!

    写在前面 在众多 md 编辑器中,Typora 是大家公认的体验较好的写作软件之一,它最大的特点就是:所见即所得,无须分屏预览,或者开启新页面预览.除此之外,还有很多优点,这里不做介绍,不是本文的重点 ...

  4. CSS漂亮盒子(下)

    4.多重背景 CSS支持一个元素设置多个背景图片. 每个背景属性有相应的多值语法,多个值由逗号分隔. .multi-bg-shorthand { width: 300px; height: 200px ...

  5. 8、Builder 建造者模式 组装复杂的实例 创造型模式

    1.什么是Builder模式 定义: 将一个复杂对象的构建与表示相分离,使得同样的构建过程可以创建不同的表示.大白话就是,你不需要知道这个类的内部是什么样的,只用把想使用的参数传进去就可以了,达到了解 ...

  6. 禁用 Spring Boot 中引入安全组件 spring-boot-starter-security 的方法

    1.当我们通过 maven 或 gradle 引入了 Spring boot 的安全组件 spring-boot-starter-security,Spring boot 默认开启安全组件,这样我们就 ...

  7. Java—面向对象、类与对象、封装

    理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式. 面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程. 面向对象的程序设计方式,是 ...

  8. JavaScript 严格模式(strict mode)

    概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:'严格模式'.顾名思义,这种模式使得Javascript在更严格的条件下运行. 目的 1: 消除Javascript语法的一些不合 ...

  9. 谈谈代码评审(code review)

    什么是代码评审(code review)? 根据维基百科的定义,代码评审是一种通过若干人员检阅源代码方式来进行的软件质量保证活动.根据软件工程的经典理论,代码评审应该是收益很高的活动,因其产生在Cod ...

  10. Java实现token的生成与验证-登录功能

    一.token与cookie相比较的优势1.支持跨域访问,将token置于请求头中,而cookie是不支持跨域访问的: 2.无状态化,服务端无需存储token,只需要验证token信息是否正确即可,而 ...