Swift语言快速入门

Swift语言快速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进

极客学院 编著  

ISBN 978-7-121-24328-8

2014年10月出版

定价:59.00元

428页

16开

编辑推荐

本书内容翔实,实例丰富,同步新版官方API文档和语法

语法|词法|框架覆盖全面,实战案例|配套习题丰富

多位Swift专家联合推荐,不仅是Swift入门书籍,也可做案头工具书

作者携手Swift专家在线答疑,方式如下:

1、专属勘误交流论坛(Swift中文帮):http://swift.muzining.com/

2、QQ群(Swift快速入门书友会):259152129

内容提要

《Swift语言快速入门》以苹果官方Swift英文文档为基础,以其大纲为主线,从易到难全面阐述了Swift语言的语言基础、基本运算、字符串操作、集合类型、流程控制、函数与闭包、面向对象、高级运算符操作及语法参考等方方面面。此外,《Swift语言快速入门》内容及API已与苹果官方英文文档同步更新,减少了初学者学习旧版语言文档却不能正常编译代码的困惑。

《Swift语言快速入门》涵盖面广,内容全面,不仅适合于Swift语言的初学者,有一定iOS编程经验的开发者可以把它当作案头工具书。

目录

第1章 马斯堡游记     1

1.1  买票        1

1.2  导游        13

1.3  飞碟        22

1.4  斗法        23

1.5  题诗        27

第2章 Swift初见         28

2.1  Hello World     28

2.2  简单值   29

2.3  控制流   30

2.4  函数和闭包   33

2.5  对象和类        35

2.6  枚举和结构   39

2.7  协议和扩展   42

2.8  泛型        43

第3章 语法入门          45

3.1 基础        45

3.1.1 常量和变量         45

3.1.2 注释    48

3.1.3 分号    49

3.1.4 整数    49

3.1.5 浮点数         50

3.1.6 类型安全和类型推断         50

3.1.7 数值字面量         51

3.1.8 数值类型转换    52

3.1.9 类型别名    53

3.1.10 布尔值         54

3.1.11 元组    55

3.1.12 可选    56

3.1.13 断言    60

3.2 基本运算符   61

3.2.1 术语    61

3.2.2 赋值运算符         62

3.2.3 算术运算符         62

3.2.4 求余运算符         63

3.2.5 浮点数求余运算符    64

3.2.6 自增和自减运算符    64

3.2.7 单目负号运算符         65

3.2.8 单目正号运算符         65

3.2.9 复合赋值运算符         65

3.2.10 比较运算符         66

3.2.11 三目条件运算符         66

3.2.12  nil合并运算符 67

3.2.13 区间运算符         68

3.2.14 逻辑运算符         69

3.3  字符串与字符        71

3.3.1 字符串字面量    72

3.3.2 初始化空字符串         73

3.3.3 字符串可变性    73

3.3.4 字符串是值类型         73

3.3.5 使用字符    74

3.3.6 连接字符串和字符    74

3.3.7 字符串插值         75

3.3.8  Unicode        75

3.3.9 计算字符数量    77

3.3.10 比较字符串         78

3.4 集合类型        79

3.4.1 集合的可变性    80

3.4.2 数组    80

3.4.3 字典    84

3.5  流程流   89

3.5.1 for循环       89

3.5.2 while循环   93

3.5.3 条件语句    96

3.5.4 控制转移语句    103

3.6 函数        108

3.6.1 函数的定义与调用    108

3.6.2 函数参数和返回值    110

3.6.3 函数参数名称    113

3.6.4 函数类型    119

3.6.5 嵌套函数    122

3.7  闭包        122

3.7.1 闭包表达式         123

3.7.2 尾随闭包    126

3.7.3 值捕获         128

3.7.4 闭包是引用类型         130

3.8 枚举        130

3.8.1  枚举语法    131

3.8.2 使用switch 语句匹配枚举值   132

3.8.3 关联值         133

3.8.4 原始值         135

3.9 类和结构体   136

3.9.1 类和结构体的对比    137

3.9.2 结构体和枚举是值类型    139

3.9.3 类是引用类型    141

3.9.4 类和结构体的选择    142

3.9.5  字符串、数组及字典的赋值和复制行为         143

第4章 初级语法          144

4.1  属性        144

4.1.1 存储属性    144

4.1.2 计算属性    147

4.1.3 属性监察器         149

4.1.4 全局变量和本地变量         151

4.1.5 类型属性    151

4.2 方法        155

4.2.1 实例方法    155

4.2.2 类型方法    160

4.3 下标        163

4.3.1 下标语法    163

4.3.2 下标用法    164

4.3.3 下标选项    164

4.4 继承        166

4.4.1 定义一个基类    167

4.4.2 子类生成    168

4.4.3 重写    169

4.4.4 防止重写    173

4.5 构造        173

4.5.1 存储属性的初始赋值         173

4.5.2 自定义构造         174

4.5.3 默认构造器         178

4.5.4 值类型的构造器代理         179

4.5.5 类的继承和构造         180

4.5.6 通过闭包或函数来设置属性的默认值    190

4.6 析构        192

4.6.1 析构原理    192

4.6.2 析构实例    192

4.7 自动引用计数        194

4.7.1 ARC的工作原理         195

4.7.2 ARC实践     195

4.7.3 类实例间的强引用环         196

4.7.4 解决类实例间的强引用环         199

4.7.5 闭包产生的强引用环         205

4.7.6 解决闭包产生的强引用环         207

4.8 可选链   210

4.8.1 可选链替代可选强制解析         210

4.8.2 为可选链定义模型类         211

4.8.3 通过可选链获取属性         213

4.8.4 通过可选链调用方法         214

4.8.5 使用可选链获取下标         214

4.8.6 连接多层链         215

4.8.7 可选链中返回可选类型的方法         216

4.9 类型转换        217

4.9.1 定义一个类层次作为例子         217

4.9.2 类型检查    218

4.9.3 向下转换    219

4.9.4 Any和AnyObject的转换   220

4.10 类型嵌套        222

4.10.1 类型嵌套实践    223

4.10.2 引用嵌套类型    224

第5章 高级语法          225

5.1 扩展        225

5.1.1 扩展语法    225

5.1.2 计算属性    226

5.1.3 构造器         227

5.1.4 方法    228

5.1.5 可变实例方法    229

5.1.6 下标    229

5.1.7 嵌套类型    230

5.2 协议        231

5.2.1 协议语法    231

5.2.2 属性要求    232

5.2.3 方法要求    233

5.2.4 可变方法要求    234

5.2.5 协议作为类型    235

5.2.6 集合中的协议类型    240

5.2.7 协议的继承         241

5.2.8 协议合成    242

5.2.9 检查协议的一致性    243

5.2.10 可选协议要求    245

5.3  泛型        247

5.3.1 泛型解决的问题         247

5.3.2 泛型函数    248

5.3.3 类型参数    249

5.3.4 命名类型参数    249

5.3.5 泛型类型    250

5.3.6  扩展泛型类型    252

5.3.7 类型约束    253

5.3.8 关联类型    256

5.3.9  where子句 258

5.4  访问控制        260

5.4.1  模块和源文件    261

5.4.2  访问级别    261

5.4.3  访问控制语法    262

5.4.4  自定义类型         263

5.4.5  子类    265

5.4.6  常量、变量、属性和下标         266

5.4.7  协议    268

5.4.8  扩展    269

5.5  高级运算符   269

5.5.1  位运算符    270

5.5.2  溢出运算符         274

5.5.3  优先级和结合性         276

5.5.4  运算符函数         277

5.5.5  前置和后置运算符    278

5.5.6  组合赋值运算符         279

5.5.7  比较运算符         280

5.5.8  自定义运算符    280

5.5.9  自定义中置运算符的优先级和结合性    281

第6章 词法参考          282

6.1  关于词法参考        282

6.2  词法结构        283

6.2.1  空白与注释         283

6.2.2  标识符         283

6.2.3  关键字和标点符号    285

6.2.4  字面量         286

6.2.5  运算符         290

6.3  类型        292

6.3.1  类型标注    292

6.3.2  类型标识符         293

6.3.3  元组类型    293

6.3.4  函数类型    294

6.3.5  数组类型    295

6.3.6  字典类型    296

6.3.7  可选类型    296

6.3.8  隐式解析可选类型    297

6.3.9  合成协议    298

6.3.10 元类型         298

6.3.11 类型继承语法    299

6.3.12 类型推断    299

6.4  表达式   300

6.4.1  前缀表达式         300

6.4.2  二元表达式         301

6.4.3  赋值表达式         303

6.4.4  三元条件运算符         303

6.4.5  类型转换运算符         304

6.4.6  主表达式    305

6.4.7  后缀表达式         310

6.5  语句        314

6.5.1  循环语句    315

6.5.2  分支语句    317

6.5.3  带标签的语句    320

6.5.4  控制传递语句    321

6.6  声明        322

6.6.1  全局代码    323

6.6.2  代码块         323

6.6.3  导入声明    324

6.6.4  常量声明    324

6.6.5  变量声明    325

6.6.6  类和静态变量属性    327

6.6.7  类型别名    328

6.6.8  函数声明    328

6.6.9  枚举声明    332

6.6.10 结构体声明         334

6.6.11 类声明         335

6.6.12 协议声明    336

6.6.13 协议构造器声明         338

6.6.14 协议下标声明    338

6.6.15 协议相关类型声明    338

6.6.16 构造器声明         339

6.6.17 析构器声明         340

6.6.18 扩展声明    340

6.6.19 下标声明    341

6.6.20 运算符声明         342

6.6.21 特征声明修饰符         343

6.6.22 访问控制级别    344

6.7  特征        345

6.7.1  声明特征    345

6.7.2  Interface Builder使用的声明特征    348

6.7.3  类型特征    348

6.8  模式        349

6.8.1  通配符模式         349

6.8.2  标识符模式         350

6.8.3  值绑定模式         350

6.8.4  元组模式    350

6.8.5  枚举用例模式    351

6.8.6  类型转换模式    352

6.8.7  表达式模式         352

6.9  泛型形参和实参   353

6.9.1  泛型形参子句    353

6.9.2  where 子句         354

6.9.3  泛型参数子句    355

6.10 语法总结        356

6.10.1  语句(Statements)        356

6.10.2  泛型形参与实参(Generic Parameter and Arguments)      358

6.10.3  声明(Declarations)      358

6.10.4  模式(Patterns)    364

6.10.5  特征(Attributes) 365

6.10.6  表达式(Expression)     365

6.10.7  词法结构(Lexical Structure)        368

6.10.8  类型(Types) 372

第7章 使用Cocoa框架与ObjC         374

7.1  基本设置        374

7.1.1  建立你的Swift环境  374

7.1.2  理解Swift的导入过程       375

7.2  与ObjC API交互    376

7.2.1  初始化         376

7.2.2  访问属性    377

7.2.3  使用方法    377

7.2.4  id兼容性     378

7.2.5  使用nil        379

7.2.6  扩展    380

7.2.7  闭包    381

7.2.8  对象比较    381

7.2.9  Swift类型兼容性        381

7.2.10  Objective-C选择器   382

7.3  以ObjC的行为写Swift 383

7.3.1  继承Objective-C的类         383

7.3.2  适配协议    384

7.3.3  编写构造器和析构器         384

7.3.4  集成Interface Builder         384

7.3.5  指明属性特性    386

7.3.6  实现核心数据管理对象的子类         386

7.4  使用Cocoa数据类型    386

7.4.1  字符串         387

7.4.2  数字    387

7.4.3  集合类         388

7.4.4  Foundation数据类型 390

7.4.5  Foundation函数 390

7.4.6  Core Foundation 390

7.5  采用Cocoa设计模式    392

7.5.1  委托    392

7.5.2  错误报告    392

7.5.3  键值观察    393

7.5.4  Target-Action       394

7.5.5  内省    394

7.6  与C API交互 395

7.6.1  基本类型    395

7.6.2  枚举    396

7.6.3  指针    397

7.6.4  全局常量    401

7.6.5  预处理指令         401

7.7  与ObjC混编  402

7.7.1  混编概述    402

7.7.2  在同一个app target中进行代码导入      403

7.7.3  在同一个framework target中导入代码 404

7.7.4  导入外部框架    405

7.7.5  在Objective-C中使用Swift代码       406

7.7.6  product模式命名       407

7.7.7  故障排除和提醒         407

7.8  迁移ObjC代码至Swift 408

7.8.1  为你的Objective-C代码迁移做好准备    408

7.8.2  迁移过程    408

7.8.3  技巧和提示         409

作者简介

陈少佳,现任极客学院布道师,负责教师团队建设、线上课程建设等工作。

2008年从业至今,曾任外企技术总监、线下培训机构学术总监、副校长,培养过至少1000名月薪过万的Android、iOS开发工程师。

李艺(网名:蜗牛君),苏州人士,清华计算机硕士,极客学院Swift专家,木子宁工作室掌门。Adobe中国首批社区帮助管理员与版主,著名iOS独立游戏开发者,爱好书法、箫、吉他等,喜好郊游,偶尔会做义工。

博客地址:www.muzining.com

微博:weibo.com/angrymarble

媒体评论

Swift在保证性能的同时整合了很多现代的编程特性,对OSX和iOS开发者来说是重大的改进,也是以后的趋势。本书很好地讲解了Swift入门学习中各种实例、解决方案并配以详尽的语言文档,是开发者学习Swift的必备书籍!

——冯斌 正点科技技术总监

移动互联网时代,技术更新异常频繁。仅守住所谓的扎实的“基本功”已跟不上时代的潮流,必须时刻紧跟最新技术。极客学院紧抓技术热点,并在第一时间将其奉献给读者,不管是网络课程模式还是书籍形式,都是既追求实效性,又追求深度,真是读者的福音。

——毛晓冬 高通中国资深研发经理

极客学院的创业者们在国内移动端开发技术领域经营多年,积累非常深厚,致力于技术的交流和传承,培养出了不少优秀的工程师。相信这本书同样不会辜负各位开发者的期望,值得大家期待!

——王鹏云 多盟技术副总裁

想学好一门编程语言要从选好书开始!极客学院编著的好书值得您即刻购买!

——谢耀辉 活动行联合创始人

Swift会真正改变iOS开发生态,现在大家在同一个起跑线上,立即出发,开启Swift技术之旅吧。

——iceskysl 极客学院&eoe 联合创始人

前言

Swift体会

极客学院首席讲师 陈劭家(ime)

 

 

我不算是一个果粉,但是我很喜欢苹果的产品,甚至可以说是狂热。2014年6月2日晚上我一夜未眠,就是在等苹果的WWDC,这是开发者的狂欢之夜(或者狂欢之日,因为美国时间是白天)。凌晨1点,终于开始了,但是苹果一次又一次的新产品展示让我一次又一次的失望,作为开发者的我表示无感。

我坚持看因为我不相信苹果总是让我失望。最终在WWDC的最后一个环节,我真心沸腾了,因为一门新的编程语言——Swift出现了。要知道在饱受了Objective-C语言之苦后看见Swift是一种什么心情,你不需要再为引用计数而头疼,不需要再为没有命名空间而不得不添加该死的前缀而烦恼,不需要再为Objective-C那难懂的语法而整天晕乎乎的。此外,苹果还为我们提供了Playground这个工具,它能够在我们写程序时实时计算出变量的值,甚至还能呈现数字变量的趋势图,让编程富有乐趣及创造性。

由于Swift出现得晚,所以它拥有了目前世界上几乎所有编程语言的优点,而没有目前所有编程语言的缺点,Swift真的太漂亮了。下面我们开始一步一步认识它。

运行速度

从苹果官方给出的数据来看,Objective-C比Python快2.8倍,而Swift比Python快3.9倍,可见苹果在Swift上下了大量的工夫进行优化。

开发环境

Swift语言的开发环境是苹果公司提供的集成开发环境Xcode,可以用来开发iOS应用、iOS游戏、OS X窗体程序、OS X游戏、OS X命令行程序,读者可以直接从App Store中搜索并下载。用Swift语言可以做到几乎所有Objective-C所能做到的事情,所以Swift必将取代Objective-C,如果你还没有学过Objective-C语言,那么恭喜你,不用学了,直接学习Swift即可。

运行环境

Swift被强大的llvm编译成机器码,直接运行在系统中。由于Swift是苹果的产品,所以目前只支持苹果的系统(OS X和iOS)。我们期待会有社区开发出跨平台的Swift语言,因为这么好的一门编程语言,应该能够让世界上的每一个人享受到才好,就像mono让C#语言跨平台一样。

语言特性

具有所有现代编程语言的特性,包括:面向对象、类扩展、命名空间、闭包、泛型、强类型、函数有多个返回值等。

这些特性能够大大提高程序员的开发效率,从而为企业节约成本,同时让编程工作充满乐趣。

语法简介

通过前文的介绍,相信读者已经迫不及待地想尝试使用Swift了,下面我们就来认识一下Swift的语法。

简洁的语法

Swift抛弃了Objective-C那种古板难懂的语法,采用通俗易懂的脚本语言类语法,学过Python、JavaScript或者Lua语言的读者肯定不会陌生,这大大降低了初学者的学习成本。

变量及常量

如果要定义一个变量i等于1,只需要写var i = 1,可以看出,不需要指定类型,因为Swift会自动做类型推断。

如果要定义一个常量PI等于3.14,只需要写let PI = 3.14,常量只能被赋值一次。

输出语句

在Swift中,可以直接使用println函数来输出一段任意类型的信息,如下所示:

println("Hello Swift")

字符串连接

Swift语言中的字符串连接同样也非常简单,如果两个值都是字符串,则可直接用加号连接,如下所示:

var hello = "Hello"

var world = "World"

var str = hello + world

 

如果将要连接的值中有其他类型,则直接使用\()包括就可进行连接,如下所示:

var hello = "Hello"

var num = 100

var str = "\(hello) \(num)"

 

从上面的示例可以看出,相比Objective-C或者C/C++语言来说,简单太多了。

循环

传统的C语言中的for循环是这么写的:

for (int i = 0; i < 100; i++) {

    //TODO

}

 

在Swift中,将循环大大简化了,如下所示:

for i in 0..<100{

    //TODO

}

 

具体内容还有很多,详见本书正文。

条件判断

条件判断与C语言并没有区别,可以直接书写C语言的语法即可通过,如下所示:

if (count>5) {

    //TODO

}

 

在Swift中还可以再简洁一些,如下:

if count>5 {

    //TODO

}

 

另外,在Swift语言中,switch…case语句可以不用加break关键字。

函数

如果要定义一个函数用来输出一段信息,则代码如下所示:

func sayHello(){

    println("HelloSwift")

}

 

这种写法非常简洁,我曾在Dart语言中见过这种写法,func是一个关键字,用来指明所定义的是一个函数,sayHello是函数名称,()中是该函数的传入参数。如果还想使用传入参数及返回值,如下所示:

func max(a:Int,b:Int)->Int{

    if a>b {

        return a

    }else{

        return b

    }

}

 

该函数名称为max,可传入两个参数,都是整数类型,参数名称分别为a、b,函数的返回值也是整数类型。

Swift中的函数还可以同时返回多个值,如下所示:

func getNum()->(Int,Int){

    return (3,4)

}

 

如果想对该函数进行调用并获取到这两个返回结果值,则用法如下:

let (a,b) = getNum()

面向对象

类的定义非常简单,如下所示:

class Hello{

    func sayHello(){

        println("HelloSwift")

    }

}

 

该示例定义了一个名为Hello的类,其有一个成员函数名为sayHello,如果想调用该类及相应函数,则用法如下:

var h = Hello()

h.sayHello()

 

类的继承的写法也非常简单,这一点继承了C++语言的优秀传统,如果想定义一个名为Hi的类继承自Hello,则写法如下:

class Hi:Hello{

}

 

如果后期还想为某类添加功能,有两种方法。第一种是直接修改类的源码添加功能,第二种是为该类写扩展功能,下面我们来着重介绍第二种。如果想为Hello类再添加一个名为sayHi的方法,则代码如下所示:

extension Hello{

    func sayHi(){

        println("HiSwift")

    }

}

 

其中,extension关键字表示要扩展已经存在的类的功能,如果想扩展系统或者第三方的某个类的功能而得不到其源码时,采用这种方式将会是一个绝佳的选择。如下所示:

extension String{

    func printSelf(){

        println(self)

    }

}

var str = "Hello Swift"

str.printSelf()

 

通过这种方式扩展了系统的String类,为其增加了一个printSelf()方法,在使用时可直接调用目标对象的printSelf()方法,非常方便。

关于面向对象的更多特性,请看本书正文。

其实extension还有另一个用途,那就是模拟命名空间,请看下一个主题。

命名空间

在Swift语言中并没有专门的命名空间的关键字,但是可以模拟命名空间这个面向对象的特性,如下所示:

//定义命名空间ime

class ime{

}

 

//在ime命名空间下定义Hello类

extension ime{

    class Hello{

        func sayHello(){

           println("Hello Swift")

        }

    }

}

 

使用该类及相关方法的代码如下所示:

var h = ime.Hello()

h.sayHello()

 

有没有让你眼前一亮的感觉呢?

结尾

就写到这里吧,想必大家已经对Swift有了一个初步的了解,而且迫不及待地想开始学习了,努力吧,少年,你就是未来的太阳!

 

相关推荐

涵盖从Java 5到Java 11所有重要特性,让Java学习不再难!

曾经,网络上流传着这样一套视频,无数学员通过这套视频学会了Java,进入了软件开发领域~~这套视频就是“Java无难事”。如今,为了方便大家更好地学习,也跟上当前Java发展更新的步伐,作者基于之前的视频内容,做了更新和完善,在广度和深度上进行了扩展,并继承“让Java学习再也不是难事”的思想,推出了新书《Java无难事》。—— 从Java5到Java11 ——Java,这门编程语言界的常青树,凭借着简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 ,深受程

博文视点(北京)官方博客 5019

离开大厂为什么会“返贫”?比《逆行人生》更真实~~

近期热播的电影《逆行人生》讲述了曾经的互联网大厂中层高志垒,因意气用事成为了“家里蹲”,却没想到人生从此“开入逆行道”的故事!电影播出后陷入巨大争议,不少人认为这部电影在消费苦难,刻意把一个人的生活拍得那么无辜、受害~~一个高设定的中产家庭真的能落魄到这种地步吗?抛开电影中主角的具体经历,在现实中,确实有不少离开大厂“返贫”的怪现象!那么,大厂“返贫”到底有哪些不为人知的底层逻辑呢?《大厂之外》作者刘飞老师就此采访了互联网行业的“老炮儿”、见证过很多离开大厂盲目折腾的真实案例的沈浩翔老师,让我们一

博文视点(北京)官方博客 1247

首部顶级AI科学家创作的纯正科幻小说,一个元宇宙和AI时代的全新科学幻想!

自2023 年起,深度学习和大模型的浪潮,终于超脱学院里形而上的争论,展示了它大规模改变现实世界的可能性,而改变的方式,可能和我们的想象完全不同。在这个新的时代中,每个个体的“独一无二”不再是与生俱来的,而是需要把握先机,以极大的勇气去开辟的。当平静的生活被诡谲的彗星所打破,当艰难的抉择关系到人类的命运,当虚拟世界成为最后的避风港,在无解的阳谋之下,顶尖的头脑们如何破局?在此背景下,很多事情都会发生变化,人的价值体系和价值评判方式,人和人之间的互动模式,人和人之间的相互关系,都将产生巨大的改变。

博文视点(北京)官方博客 1351

如何构建一个大模型?看完你就知道了!

第 7 章和第 8 章围绕大语言模型的应用和评估开展介绍,包括将大语言模型与外部工具和知 识源进行连接的 LangChain 框架、大语言模型在智能代理及多模态大模型等方面的研究和应用情 况,以及传统的语言模型评估方式、针对大语言模型使用的各类评估方法。例如:提示词:复旦大学有几个校区?强化学习(Reinforcement Learning,RL)阶段根据数十万用户给出的提示词,利用前一阶段训练的奖励模型,给出 SFT 模型对用户提示词补全结果的质量评估,并与语言模型建模目标综合得到更好的效果。

博文视点(北京)官方博客 2018

爆火的无人驾驶萝卜快跑,背后有哪些隐忧?

就在不久前的上海世界人工智能大会上,澳大利亚科学院院士、新南威尔士大学教授托比·沃尔什,在出席“人工智能新进展与社会科学的未来”论坛时指出,要深入研究人工智能发展给人类带来的影响,尤其是在就业方面,并不是所有工作人工智能都做得比人类好,在谋划未来、创意工作和提供情绪价值等方面,人类具有不可取代的优势。不得不说,现在的人工智能技术,特别是那些超大的智能模型,简直就是坐上了火箭,嗖嗖地往前冲,对经济、社会还有咱们的日常生活,影响大得不得了!人工智能的发展必然会带来生产力的提升,对劳动力的替代也是必然的。

博文视点(北京)官方博客 2005

人类警惕!AI是个大骗子!

幸运的是,医学界拒绝了辛顿的建议,继续培训新的放射科医生。我认为,如果你是一名放射科医生,你就像那只已经跑到悬崖边缘的郊狼,因为还没有往下看,所以它没有意识到脚下已经没有路了。书中从图灵的梦想开始,谈到人机共存的未来,娓娓道来,深刻且生动有趣。从关于人工智能中的“人工”这一讨论中,我们可以得出一个最终结论,那就是在人类智能中的“人”可能是我们与我们正在制造的能力越来越强的人工制品的机器之间最重要的区别。我对那些人,尤其是从事人工智能和道德规范工作的员工表示同情, 他们似乎受到了不成比例的影响。

博文视点(北京)官方博客 1438

大模型时代的基础架构,大模型算力中心建设指南重磅来袭!

在这个例子中,成本为100元的T恤是最畅销商品,成本为80元的T恤是高毛利商品,它们的区别在于前者内在的原料价值创造了最畅销商品,带来了更高的性价比,而后者外在的思想价值创造了高毛利商品。这类商品不会有很强的需求和很大的销售量,但毛利率很高。在最畅销商品和高毛利商品的“挡拆”战术中,一旦客户与最畅销商品发生接触,就是高毛利商品赚取利润的最佳时机,因为客户会将二者进行比较。最畅销商品和高毛利商品并不是两类单独的商品,即新奇商品、流行商品、基本商品和专业化商品中的任何一个都同时包含最畅销商品和高毛利商品。

博文视点(北京)官方博客 1352

程序员“计算机之子“的职场反思

Winter 是我认识的最有传奇性,也最有趣的程序员之一。他在前端工程师领域颇有知名度,是 JavaScript 专家,主要的作品是 Weex 框架。如果在搜索引擎中搜 Winter,会出来一个看似没头没脑的“计算机之子”的称呼。这是因为他的生日是 10 月 24 日,正好是“程序员节”(1024 是 2 的 10 次方)。Winter 从小就用机器码编程了,那个年代还是用打孔纸的。从哈尔滨工程大学毕业后,他加入微软亚洲研究院,后来加入过 “人才辈出”的盛大创新院,又在 2012 年加入了阿里巴巴,职

博文视点(北京)官方博客 1935

红队实战宝典之内网渗透测试

本书是以内网攻防中红队的视角编写的,从内网的基础攻击原理出发,讲解红队的攻击思路和主流渗透测试工具的使用方法,旨在帮助安全行业从业人员建立和完善技术知识体系,掌握完整的后渗透流程和攻击手段。由于本书的编写初衷是为具有一定基础的渗透测试工程师和红队人员梳理常用技巧,所以,本书主要通过命令和工具介绍各种内网渗透测试方法,同时分析了一部分工具的工作原理。一场真实的、有目的的网络攻击,通常包括对业务的控制、修改和对数据的获取等,而对业务的攻击,一般都是通过本书介绍的方法拿到权限后展开的。

博文视点(北京)官方博客 1773

端午节,来看看这本应景的“龙舟书”吧!

如果你曾经尝试过使用AI工具,但是始终没有找到能够助力自己工作生活的地方,或者只停留于简单的问答,于是就慢慢放下了,那么这本书或许可以帮你看见使用AI工具的真正魅力,让你掌握ChatGPT的高阶玩法,看到它的更多应用场景,真正让它成为为自己赋能的AI助手!比如第四章的编程提效部分,或许你会用AI生成片段代码,但通过龙舟书的案例,你会了解到如何用AI实现一个模块、甚至实现项目级开发的操作逻辑和具体方法。在23年3月,我们也成立了自己的AI社群"AI俱乐部",也是在这个时期,我们全公司都加入了AI赛道!

博文视点(北京)官方博客 1043

100倍增长的背后:华为IPD实施20年

不仅有严谨的理论和方法阐述,更大量剖析了经典商业公司产品的成功案例,阐述了他们成功的背后逻辑是如何反应了IPD的本质,同时也基于大家司空见惯的日常商业案例进行了分析,让读者更容易理解IPD关于产品的业务本质和商业经营的核心。华为坚持IPD变革20多年,不仅构建了产品研发领域的世界级竞争力、更是开启了从此持续变革的序幕,培养了一大批熟知变革方法的干部队伍和企业文化,让华为尝到了变革的甜头,从此华为就开始不断革自己的命、直到今天也未有停止过。华为创始人任正非说过:华为没有成功、只有成长和对常识的遵守。

博文视点(北京)官方博客 1497

被众多AI大佬看好的具身智能到底是什么?它凭什么成为下一个AI浪潮?

通过比较智能体和具身智能,我们不仅能够更好地理解具身智能的独特性和价值,而且看到了一个全新的视角:智能是如何通过与环境的互动来发展和适应的。具身智能理论让我们想起人类自身的特性,我们的智能不仅来源于大脑的思维过程,还深深根植于我们的身体及我们与外部世界的交互。具身智能的核心观点是,认知和智能行为是大脑、身体、环境相互作用的结果,体现了智能体通过物理互动来学习和适应环境的能力。感知与交互:智能体的感知和交互很有规律,而具身智能喜欢与环境实时互动,它的感知和行为是在不断变化的环境中进行的。

博文视点(北京)官方博客 2482

数字经济 + 人工智能最大的商业机会不是在互联网上……

因为,今天中国农业已经不仅仅涉及单一的种养殖的事情了,还涉及农业组织、土壤问题、种业研发、种植技术、植保技术、采收技术、品控技术、深加工、营销及IP 打造、全渠道运营、物流供应链、文化赋能、一二三产融合、产业资本、政策配套等,同时还涉及农村产业结构、返乡创业、农民老龄化、新农人培养、产业转型升级等。(2) 家庭农场带动的一二三产融合模式 :城市周边的乡村,是很难实现规模化的农业的,如果单靠第一产业,很难支撑农业的发展,稳定种地农民的心,要一二三产融合发展,才能在同一片土地上,实现不同商业模式的收益。

博文视点(北京)官方博客 1428

亿级流量下通用的高并发架构设计

Proxy收到业务服务的数据库操作请求后,根据请求中的SQL语句进行归类,将属于写操作的请求(如insert/delete/update语句)转发到数据库Master,将属于读操作的请求(如select语句)转发到数据库任意一个Slave,完成读/写分离的路由。数据库承受的高并发请求压力,主要来自读请求。我们可以把数据库按照读/写请求分成专门负责处理写请求的数据库(写库)和专门负责处理读请求的数据库(读库),让所有的写请求都落到写库,写库将写请求处理后的最新数据同步到读库,所有的读请求都从读库中读取数据。

博文视点(北京)官方博客 1590

豆瓣8.7分,30000人都在阅读的量化用户体验实操书全面更新!

这些示例中的行为、态度和情感都是可以被度量的。来自不同专业和领域的关注如何提高用户体验的人将会从本书获益,包括可用性和用户体验专业人员、交互设计师、信息架构师、服务设计师、产品设计师、Web 设计师和开发人员、软件开发人员、平面设计师,以及市场营销和市场研究专业人员,还有项目和产品经理等。这本书适用于任何对改进不同类型产品或服务的用户体验感兴趣的人,无论这些产品是消费类产品、计算机系统、应用程序、网站、服务,还是其他任何类型的物品,只要是人使用的产品,就可以度量与使用该产品有关的用户体验。

博文视点(北京)官方博客 1230

一本书了解AI的下一个风口:AI Agent

随着技术的飞速发展,我们正站在一个新的转折点上,AI Agent(AI智能体,简称智能体)作为AI技术发展的新风口,正逐渐揭开神秘面纱,预示着一个全新的智能时代到来。它们将不再是被动的执行者,而是我们生活中的主动参与者,可以理解我们的语言,预测我们的需求,并在多个任务中提供个性化的帮助。智能体将不再是单一功能的应用程序,而是能够跨平台、跨任务的智能伙伴,可以根据我们的需求和偏好,提供更精准和更高效的帮助。我们需要制定相应的法律法规,确保智能体技术的发展在伦理和法律的框架内进行,并加强监管,保护用户的权益。

博文视点(北京)官方博客 1118

一本书精通推荐算法,轻松搞定入门、面试、进阶

精通推荐算法:核心模块+经典模型+代码详解》一书主要介绍推荐算法技术,覆盖召回、粗排、精排和重排等模块,目的是让读者熟悉推荐算法的全部链路,加深体系化理解,并掌握关键技术细节。它能帮助你掌握推荐算法的整体架构、每个核心模块的知识框架,以及一些工作必备的经典模型,同时,能帮助你深入理解它们的出发点和具体实现方案,在实际工作中融会贯通。同时,推荐系统链路很长,包括召回、粗排、精排和重排等诸多模块,如何掌握整体架构,并深入每个模块理解其细节,就成为一件困难且重要的事。(3)模型经典,代表性强。

博文视点(北京)官方博客 1287

一本书了解AI的下一个风口:AI Agent

随着技术的飞速发展,我们正站在一个新的转折点上,AI Agent(AI智能体,简称智能体)作为AI技术发展的新风口,正逐渐揭开神秘面纱,预示着一个全新的智能时代到来。它们将不再是被动的执行者,而是我们生活中的主动参与者,可以理解我们的语言,预测我们的需求,并在多个任务中提供个性化的帮助。智能体将不再是单一功能的应用程序,而是能够跨平台、跨任务的智能伙伴,可以根据我们的需求和偏好,提供更精准和更高效的帮助。我们需要制定相应的法律法规,确保智能体技术的发展在伦理和法律的框架内进行,并加强监管,保护用户的权益。

博文视点(北京)官方博客 1160

野心、梦想与科幻——浅谈外星殖民与软件工程

这本书完美融合价值和创新的软件架构选择,旨在让业务决策者和技术团队成员学会通过协作来清晰地理解自身在战略层面面临的问题,并确定理想的架构制定方法,无论该方法是分布式微服务、模块化良好的单体,还是介于两者之间的粗粒度服务。软件架构专家Vaughn Vernon和Tomasz Jaskuła展示了如何基于需求和目标做出平衡的架构决策,而非盲目跟风,从而聚焦于价值和创新,交付更具可演进性的系统,并避免代价高昂的错误。考虑到新的交付机制和收入模式,现有的产品可能是创新的催化剂,能够带来比昨天更大的价值。

博文视点(北京)官方博客 1672

万众期待,催更5年,《码农翻身2》强势来袭!!!

再比如,对于“编程语言的巅峰”这一节,如果你对基本的数组、条件分支、函数都不了解,就无法领略汇编语言的厉害之处。现在《码农翻身2》终于来了,之所以拖了这么长的时间,主要是因为中间“插播”了另外一本书——《半小时漫画计算机》,该书使用纯漫画的方式来讲解计算机基础知识,这对我来说是一个全新的尝试,花费了我不少的时间和精力。所以,我在写文章的时候也有意把枯燥乏味的技术包装一下,变成好玩有趣的故事,在故事中让主人公不断遇到问题,不断制造悬念,吸引大家看下去,不知不觉就把技术掌握了。

博文视点(北京)官方博客 1929

【干货来了】大语言模型训练优化秘籍

由于一次模型训练过程通常包含多轮,因此,初始数据预热占用的同步时间在整个训练过程中的占比很低,而且本地缓存不受节点数量增加的影响,可以保证每个节点具有同等的吞吐性能。这样做效率更高,性能可提升数倍。不同的分布式并行技术对通信带宽的要求不同,因此,针对不同的硬件环境,需要选择最适合的分布式并行方案,并针对不同的数据量和模型特点做针对性的优化,从而达到最好的通信效率。还有一些需要关注的 I/O 问题,如训练数据量比较大,通常有几 TB∼几百 TB,这对存储的要求比较高,既需要大存储容量,又需要高吞吐性能。

博文视点(北京)官方博客 1617

从《繁花》看图数据库的关联力!

据艾瑞咨询《2022年中国知识图谱行业研究报告》,知识图谱是二维链接的图结构而非行或列的表结构,需要以图数据的形式描述并存储,该方式能直接反映知识图谱的内部结构,有利于知识查询,并且结合图计算算法能够实现知识的深度挖掘与推理。在此背景下,图技术领域专家张晨博士基于近十多年来在图数据库技术领域的研究和实践经验,牵头编写了《图数据库:理论与实践》,为图技术爱好者提供一本即具备领域概括性、又具有专业深度、还兼顾了业务实操性的领域知识与实践手册。在市场上,尚未出现一本能够帮助图数据库爱好者从入门到精通的实践手册。

博文视点(北京)官方博客 1067

大模型的智慧之源:图技术的崛起

以创邻科技针对信用卡场景打造的智能问答平台为例,该平台通过图技术和通用大模型的协同工作,优化大模型框架的逻辑推理能力的同时拓展了其原始知识边界,让生成式回答的灵活开放性与精确性并存。在处理复杂的推理和问答任务,特别是涉及多个变量和条件的情况时,图技术可以将问题抽象为图结构,并利用图算法进行分析,有效解决复杂问题,弥补大型语言模型推理能力的不足,实现更广泛的应用和发展。与大模型相比,图技术能够更好地处理复杂的逻辑关系和多种数据结构,更全面地分析和理解数据之间的关系,提高推理和决策的准确性。

博文视点(北京)官方博客 759

Go 首次冲进前八!曾两次夺得年度编程语言,也曾跌至百名开外 | TIOBE 2 月榜单发布

本书基于Go 1.20版本编写,对Go语言的语法和使用方法进行了详尽的介绍,包括基础语法、数组、切片、映射、函数、类型、包与依赖管理、接口、反射、并发编程、泛型、测试、常用标准库和第三方库的基本原理和使用方法,并通过最佳实践案例详细讲解使用过程中遇到的常见问题和解决方法,以期帮助读者读者更好地理解Go语言的语法特性和应用技巧。想要用Go语言写出优质的软件,不仅要了解Go语言的语法,还需要对Go语言的特性、软件的通用编写方法、软件项目的组织方法、并发程序设计、软件测试、软件性能优化等方面都有一定的了解。

博文视点(北京)官方博客 1529

2024年了,是谁还在学C++11?(没错,是我)

它融合了令全球无数程序员为之迷醉的C++大师Stanley B. Lippman的丰富实践经验,注入了C++标准委员会原负责人Josée Lajoie 对C++标准的深入理解,再结合上C++ 先驱Barbara E. Moo在 C++教学方面的真知灼见,经历了语言缔造者与常青藤名校数版迭代,才锻造出了这样一本每一页都在闪闪发光的C++学习头牌!但无论如何,学习 C++11 仍然是一个有价值的投资,可以提升你的 C++编程技能,并为你在 C++领域的发展打下坚实的基础。

博文视点(北京)官方博客 1686

大模型竞速下半场,探索大模型应用的奥秘

虽然搭建Chatbot的产品方法论并没有因为以ChatGPT 为代表的大模型的出现发生本质的变化,但是在一些技术落地的实现路径中,新的技术对旧的技术确实有了一定程度的替换。只有冷静地看待人工智能的发展,理解技术周期性的变化并持续拥抱最新的技术,我们才能抓住真正的机会,做出人们期待的产品。与出版本书第1版时的情形非常相似,如今,大家对ChatGPT有和Chatbot一样巨大的误区,认为人工智能是一个纯粹的技术工程,被各种技术术语影响,忽略了商业应用中产品设计和对用户需求的理解实际上是更为重要的事实。

博文视点(北京)官方博客 1178

云联接:揭开SD-WAN神秘面纱,颠覆你对网络的认知!

如今,尽管 SD-WAN 技术在业内仍未有系统、标准的定义,但未来 WAN 传输将是软件定义的这一观点已成为业内共识:只有在应用识别能力、隧道加密能力、动态优化能力、应用可视化能力和零信任构架五大能力的支持下,一个具有商业化价值的 SD-WAN 基础服务架构体系才能形成。云联接,即世间万物中无处不在的联系、联接和联动,它是 SD-WAN 的形式化表述,包含了 SD-WAN 技术的丰富能力,是展现未来网络形态的理念。当然,不同行业的不同企业网络特性各有不同,SD-WAN的应用场景也可能大相径庭。

博文视点(北京)官方博客 846

RAG:让大语言模型拥有特定的专属知识

值得注意的是,在进行检索之前,对数据的处理也非常重要。可以发现,虽然大语言模型有上下文推理能力,但由于大语言模型存在“知识过期”和“细分领域的幻觉”这两个限制,且它会尽可能地尝试回答所有的问题,因此只是单纯地使用大语言模型是没有办法解决所有问题的,RAG正是在这个背景下应运而生的。RAG技术在Chatbot中的应用极大地提高了回应的相关性和准确性,使得处理复杂查询成为可能,并显著增强了个性化与上下文理解的能力,为用户提供了更丰富、更自然、更个性化的交互体验,推动了Chatbot技术的发展。

博文视点(北京)官方博客 2345

AI加持,openEuler打造数字基础设施全场景操作系统

通过在openEuler中引入的异构内核管理,可以在CPU和NPU通过共享页表的方式实现统一编址,使得双方可以互用内存,达成内存“透明”扩容、超分,这样可以提升推理场景吞吐量提升50%,并极大的简化内存管理的需求成本,以往多套内存接口简化为一套,异构驱动代码也能从万行下降到百行。通用的配置语言,也可以用于打造开箱即用的定制能力,支持任意YAML字段定制,适配众多格式的上游软件,而且OS支持分层定制,通过EulerMaker和EulerTest构建面向多场景的软件。“崛起数字时代,引领数智未来。

博文视点(北京)官方博客 1556

基于大语言模型LangChain框架:知识库问答系统实践

ChatGPT 所取得的巨大成功,使得越来越多的开发者希望利用 OpenAI 提供的 API 或私有化模型开发基于大语言模型的应用程序。然而,即使大语言模型的调用相对简单,仍需要完成大量的定制开发工作,包括 API 集成、交互逻辑、数据存储等。为了解决这个问题,从 2022 年开始,多家机构和个人陆续推出了大量开源项目,帮助开发者快速创建基于大语言模型的端到端应用程序或流程,其中较为著名的是 LangChain 框架。

博文视点(北京)官方博客 4695
上一篇: 大话软件测试
下一篇: 轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)
博文视点
博文视点 企业官方账号 企业官方账号 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄20年 6869粉丝 2132原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值