当前位置:首页 > 编程电子书 >

Java编程的逻辑 PDF 原书清晰扫描版

大小:39.3M已被644人关注 资源下载

Java编程的逻辑》是一本Java编程相关的电子书资源,介绍了关于Java编程、Java编程逻辑方面的内容,本书是由机械工业出版社出版,格式为,资源大小39.3M,马俊昌编写,目前豆瓣、亚马逊、当当、京东等“Java编程”类电子书综合评分为:9.6分

内容介绍

Java专家撰写,力求透彻讲解每个知识点,逐步建立编程知识图谱。本书以Java语言为例,由基础概念入手,到背后实现原理与逻辑,再到应用实践,融会贯通。

全书共六大部分,其要点如下。

第一部分(第1~2章)讲解计算机程序的基本执行流程与元素,以及数据背后的二进制表示,帮读者掌握编程的基本概念。

第二部分(第3~7章)讲解面向对象的编程原理与逻辑,涉及类、继承与多态、接口与抽象类、异常与常用基础类,让读者透彻了解Java的重要基础——面向对象。

第三部分(第8~12章)介绍泛型与容器及其数据结构和算法,涵盖泛型、列表和队列、各种Map和Set、堆与优先级队列等。

第四部分(第13~14章)介绍文件处理。涵盖文件的基本概念、二进制文件和字节流、文本文件和字符流、文件和目录操作,以及文件处理的一些高级技术,包括常见文件类型的处理、随机读写文件、内存映射文件、标准序列化机制,以及Jackson序列化。

第五部分(第15~20章)介绍并发,包括线程的传统基础知识和Java并发包。传统基础知识包括线程的基本概念与基本的同步、协作和中断机制;Java并发包涵盖原子变量、显式锁、显式条件、并发容器、异步任务执行服务、同步和协作工具类。

第六部分(第21~26章)介绍动态和声明式编程编程思路、API与技巧,涵盖反射、注解、动态代理、类加载机制、正则表达式、Java 8引入的函数式编程等。

这本书和别的书有什么不同?

简单来说,其他书大多教你怎么用,而这本书帮助你透彻理解,从基本概念到高层框架,剖析实现原理与JDK源代码,融合专业理论与应用实践,使你透彻理解Java编程的实现原理和思维逻辑,融会贯通。具体来说:

1)对于每个编程概念,不仅介绍了语法和用法,还分析了为什么要有这个概念,实现原理是什么,背后的思维逻辑是什么;

2)对于Java的主要API(如Java基础类、各种容器类、文件、并发包等),不仅介绍了用法、示例和应用,还剖析了大量JDK源代码,解释了其内部实现机制;

3)对于实践中常用的系统程序和框架,如键值数据库、消息队列、序列化框架、DI(依赖注入)容器、AOP(面向切面编程)框架、热部署、模板引擎等,本书利用基本API演示了其基本实现原理;

4)本书不仅注重实现原理,同样重视实用性,介绍了很多实践中常用的技术,包含了不少实际开发中积累的经验和教训,使读者可以少走一些弯路;

5)本书虽然是Java语言描述,但以更为通用的编程逻辑为主,融入了很多通用的编程相关知识,如二进制、编码、数据结构和算法、设计模式、操作系统、编程思维等;

6)本书高度注重表述,尽力站在读者的角度,循序渐进、简洁透彻、通俗易懂。

作者介绍

马俊昌,邻家科技CTO和联合创始人。北京理工大学博士,曾就职于IBM,从事中间件、云计算架构和开发工作,在万普世纪负责移动广告平台大数据分析和算法优化工作。2014年联合创立邻家科技,主要产品“到位APP”是一个到家生活服务平台。十多年来,一直从事Java编程,积累了比较丰富的经验。平时喜欢读书,研究技术与创新,乐于分享编程心得,欢迎关注我的微信公众号“老马说编程”,和你一起探索编程本质。

目录

  • Contents 目录
  • 读者评论
  • 前言
  • 第一部分 编程基础与二进制
  • 第1章 编程基础2
  • 1.1 数据类型和变量3
  • 1.2 赋值4
  • 1.2.1 基本类型4
  • 1.2.2 数组类型6
  • 1.3 基本运算8
  • 1.3.1 算术运算8
  • 1.3.2 比较运算10
  • 1.3.3 逻辑运算10
  • 1.3.4 小结11
  • 1.4 条件执行11
  • 1.4.1 语法和陷阱11
  • 1.4.2 实现原理14
  • 1.5 循环16
  • 1.5.1 循环的4种形式16
  • 1.5.2 循环控制19
  • 1.5.3 实现原理20
  • 1.5.4 小结20
  • 1.6 函数的用法21
  • 1.6.1 基本概念21
  • 1.6.2 进一步理解函数23
  • 1.6.3 小结27
  • 1.7 函数调用的基本原理27
  • 1.7.1 栈的概念27
  • 1.7.2 函数执行的基本原理28
  • 1.7.3 数组和对象的内存分配29
  • 1.7.4 递归调用的原理30
  • 1.7.5 小结31
  • 第2章 理解数据背后的二进制33
  • 2.1 整数的二进制表示与位运算33
  • 2.1.1 正整数的二进制表示33
  • 2.1.2 负整数的二进制表示34
  • 2.1.3 十六进制35
  • 2.1.4 位运算36
  • 2.2 小数的二进制表示37
  • 2.2.1 小数计算为什么会出错37
  • 2.2.2 二进制表示38
  • 2.3 字符的编码与乱码39
  • 2.3.1 常见非Unicode编码39
  • 2.3.2 Unicode编码42
  • 2.3.3 编码转换44
  • 2.3.4 乱码的原因45
  • 2.3.5 从乱码中恢复46
  • 2.4 char的真正含义49
  • 第二部分 面向对象
  • 第3章 类的基础52
  • 3.1 类的基本概念52
  • 3.1.1 函数容器52
  • 3.1.2 自定义数据类型53
  • 3.1.3 定义第一个类55
  • 3.1.4 使用第一个类55
  • 3.1.5 变量默认值57
  • 3.1.6 private变量57
  • 3.1.7 构造方法58
  • 3.1.8 类和对象的生命周期60
  • 3.1.9 小结61
  • 3.2 类的组合61
  • 3.2.1 String和Date61
  • 3.2.2 图形类62
  • 3.2.3 用类描述电商概念63
  • 3.2.4 用类描述人之间的血缘关系65
  • 3.2.5 目录和文件66
  • 3.2.6 一些说明67
  • 3.2.7 小结68
  • 3.3 代码的组织机制68
  • 3.3.1 包的概念68
  • 3.3.2 jar包71
  • 3.3.3 程序的编译与链接71
  • 3.3.4 小结72
  • 第4章 类的继承73
  • 4.1 基本概念73
  • 4.1.1 根父类Object74
  • 4.1.2 方法重写74
  • 4.1.3 图形类继承体系75
  • 4.1.4 小结80
  • 4.2 继承的细节80
  • 4.2.1 构造方法81
  • 4.2.2 重名与静态绑定82
  • 4.2.3 重载和重写83
  • 4.2.4 父子类型转换85
  • 4.2.5 继承访问权限protected85
  • 4.2.6 可见性重写86
  • 4.2.7 防止继承final87
  • 4.3 继承实现的基本原理88
  • 4.3.1 示例88
  • 4.3.2 类加载过程90
  • 4.3.3 对象创建的过程91
  • 4.3.4 方法调用的过程92
  • 4.3.5 变量访问的过程93
  • 4.4 为什么说继承是把双刃剑94
  • 4.4.1 继承破坏封装94
  • 4.4.2 封装是如何被破坏的94
  • 4.4.3 继承没有反映is-a关系97
  • 4.4.4 如何应对继承的双面性97
  • 第5章 类的扩展100
  • 5.1 接口的本质100
  • 5.1.1 接口的概念101
  • 5.1.2 定义接口101
  • 5.1.3 实现接口102
  • 5.1.4 使用接口103
  • 5.1.5 接口的细节105
  • 5.1.6 使用接口替代继承106
  • 5.1.7 Java 8和Java 9对接口的增强106
  • 5.1.8 小结108
  • 5.2 抽象类108
  • 5.2.1 抽象方法和抽象类108
  • 5.2.2 为什么需要抽象类109
  • 5.2.3 抽象类和接口109
  • 5.2.4 小结110
  • 5.3 内部类的本质111
  • 5.3.1 静态内部类111
  • 5.3.2 成员内部类113
  • 5.3.3 方法内部类115
  • 5.3.4 匿名内部类117
  • 5.4 枚举的本质119
  • 5.4.1 基础120
  • 5.4.2 典型场景122
  • 第6章 异常125
  • 6.1 初识异常125
  • 6.1.1 NullPointerException(空指针异常)125
  • 6.1.2 NumberFormatException(数字格式异常)126
  • 6.2 异常类128
  • 6.2.1 Throwable128
  • 6.2.2 异常类体系129
  • 6.2.3 自定义异常130
  • 6.3 异常处理131
  • 6.3.1 catch匹配131
  • 6.3.2 重新抛出异常131
  • 6.3.3 finally132
  • 6.3.4 try-with-resources133
  • 6.3.5 throws134
  • 6.3.6 对比受检和未受检异常135
  • 6.4 如何使用异常135
  • 6.4.1 异常应该且仅用于异常情况136
  • 6.4.2 异常处理的目标136
  • 6.4.3 异常处理的一般逻辑137
  • 第7章 常用基础类138
  • 7.1 包装类138
  • 7.1.1 基本用法139
  • 7.1.2 共同点140
  • 7.1.3 剖析Integer与二进制算法144
  • 7.1.4 剖析Character149
  • 7.2 剖析String155
  • 7.2.1 基本用法156
  • 7.2.2 走进String内部157
  • 7.2.3 编码转换157
  • 7.2.4 不可变性158
  • 7.2.5 常量字符串159
  • 7.2.6 hashCode160
  • 7.2.7 正则表达式161
  • 7.3 剖析StringBuilder162
  • 7.3.1 基本用法162
  • 7.3.2 基本实现原理162
  • 7.3.3 String的 和 =运算符165
  • 7.4 剖析Arrays166
  • 7.4.1 用法166
  • 7.4.2 多维数组171
  • 7.4.3 实现原理172
  • 7.4.4 小结174
  • 7.5 剖析日期和时间174
  • 7.5.1 基本概念174
  • 7.5.2 日期和时间API175
  • 7.5.3 局限性182
  • 7.6 随机183
  • 7.6.1 Math.random183
  • 7.6.2 Random184
  • 7.6.3 随机的基本原理185
  • 7.6.4 随机密码187
  • 7.6.5 洗牌189
  • 7.6.6 带权重的随机选择189
  • 7.6.7 抢红包算法191
  • 7.6.8 北京购车摇号算法192
  • 7.6.9 小结193
  • 第三部分 泛型与容器
  • 第8章 泛型196
  • 8.1 基本概念和原理196
  • 8.1.1 一个简单泛型类197
  • 8.1.2 容器类199
  • 8.1.3 泛型方法201
  • 8.1.4 泛型接口202
  • 8.1.5 类型参数的限定202
  • 8.1.6 小结205
  • 8.2 解析通配符205
  • 8.2.1 更简洁的参数类型限定205
  • 8.2.2 理解通配符206
  • 8.2.3 超类型通配符208
  • 8.2.4 通配符比较211
  • 8.3 细节和局限性211
  • 8.3.1 使用泛型类、方法和接口211
  • 8.3.2 定义泛型类、方法和接口213
  • 8.3.3 泛型与数组214
  • 8.3.4 小结217
  • 第9章 列表和队列218
  • 9.1 剖析ArrayList218
  • 9.1.1 基本用法218
  • 9.1.2 基本原理219
  • 9.1.3 迭代221
  • 9.1.4 ArrayList实现的接口225
  • 9.1.5 ArrayList的其他方法227
  • 9.1.6 ArrayList特点分析229
  • 9.1.7 小结229
  • 9.2 剖析LinkedList229
  • 9.2.1 用法230
  • 9.2.2 实现原理232
  • 9.2.3 LinkedList特点分析238
  • 9.3 剖析ArrayDeque239
  • 9.3.1 实现原理239
  • 9.3.2 ArrayDeque特点分析244
  • 第10章 Map和Set245
  • 10.1 剖析HashMap245
  • 10.1.1 Map接口245
  • 10.1.2 HashMap247
  • 10.1.3 实现原理247
  • 10.1.4 小结256
  • 10.2 剖析HashSet256
  • 10.2.1 用法256
  • 10.2.2 实现原理258
  • 10.2.3 小结259
  • 10.3 排序二叉树260
  • 10.3.1 基本概念260
  • 10.3.2 基本算法261
  • 10.3.3 平衡的排序二叉树263
  • 10.3.4 小结264
  • 10.4 剖析TreeMap264
  • 10.4.1 基本用法265
  • 10.4.2 实现原理267
  • 10.4.3 小结273
  • 10.5 剖析TreeSet274
  • 10.5.1 基本用法274
  • 10.5.2 实现原理275
  • 10.5.3 小结276
  • 10.6 剖析LinkedHashMap276
  • 10.6.1 基本用法276
  • 10.6.2 实现原理279
  • 10.6.3 LinkedHashSet282
  • 10.6.4 小结282
  • 10.7 剖析EnumMap283
  • 10.7.1 基本用法283
  • 10.7.2 实现原理285
  • 10.7.3 小结287
  • 10.8 剖析EnumSet287
  • 10.8.1 基本用法287
  • 10.8.2 应用场景288
  • 10.8.3 实现原理291
  • 10.8.4 小结294
  • 第11章 堆与优先级队列295
  • 11.1 堆的概念与算法296
  • 11.1.1 基本概念296
  • 11.1.2 堆的算法298
  • 11.1.3 小结302
  • 11.2 剖析PriorityQueue302
  • 11.2.1 基本用法302
  • 11.2.2 实现原理304
  • 11.2.3 小结309
  • 11.3 堆和PriorityQueue的应用309
  • 11.3.1 求前K个最大的元素309
  • 11.3.2 求中值311
  • 11.3.3 小结314
  • 第12章 通用容器类和总结315
  • 12.1 抽象容器类315
  • 12.1.1 AbstractCollection316
  • 12.1.2 AbstractList319
  • 12.1.3 AbstractSequentialList321
  • 12.1.4 AbstractMap323
  • 12.1.5 AbstractSet325
  • 12.1.6 AbstractQueue325
  • 12.1.7 小结326
  • 12.2 Collections326
  • 12.2.1 查找和替换327
  • 12.2.2 排序和调整顺序329
  • 12.2.3 添加和修改332
  • 12.2.4 适配器333
  • 12.2.5 装饰器338
  • 12.2.6 小结342
  • 12.3 容器类总结342
  • 12.3.1 用法和特点342
  • 12.3.2 数据结构和算法344
  • 12.3.3 设计思维和模式344
  • 第四部分 文件
  • 第13章 文件基本技术348
  • 13.1 文件概述348
  • 13.1.1 基本概念和常识348
  • 13.1.2 Java文件概述352
  • 13.2 二进制文件和字节流355
  • 13.2.1 InputStream/OutputStream355
  • 13.2.2 FileInputStream/File-OutputStream357
  • 13.2.3 ByteArrayInputStream/ByteArrayOutputStream359
  • 13.2.4 DataInputStream/Data-OutputStream361
  • 13.2.5 BufferedInputStream/BufferedOutputStream363
  • 13.2.6 实用方法364
  • 13.2.7 小结365
  • 13.3 文本文件和字符流365
  • 13.3.1 基本概念366
  • 13.3.2 Reader/Writer368
  • 13.3.3 InputStreamReader/Output-StreamWriter368
  • 13.3.4 FileReader/FileWriter369
  • 13.3.5 CharArrayReader/Char-ArrayWriter370
  • 13.3.6 StringReader/StringWriter370
  • 13.3.7 BufferedReader/Buffered-Writer371
  • 13.3.8 PrintWriter372
  • 13.3.9 Scanner374
  • 13.3.10 标准流374
  • 13.3.11 实用方法376
  • 13.3.12 小结377
  • 13.4 文件和目录操作378
  • 13.4.1 构造方法378
  • 13.4.2 文件元数据378
  • 13.4.3 文件操作379
  • 13.4.4 目录操作380
  • 第14章 文件高级技术383
  • 14.1 常见文件类型处理384
  • 14.1.1 属性文件384
  • 14.1.2 CSV文件385
  • 14.1.3 Excel388
  • 14.1.4 HTML389
  • 14.1.5 压缩文件391
  • 14.2 随机读写文件394
  • 14.2.1 用法394
  • 14.2.2 设计一个键值数据库BasicDB396
  • 14.2.3 BasicDB的实现397
  • 14.2.4 小结401
  • 14.3 内存映射文件402
  • 14.3.1 基本概念402
  • 14.3.2 用法403
  • 14.3.3 设计一个消息队列BasicQueue404
  • 14.3.4 实现消息队列406
  • 14.3.5 小结409
  • 14.4 标准序列化机制409
  • 14.4.1 基本用法409
  • 14.4.2 复杂对象411
  • 14.4.3 定制序列化411
  • 14.4.4 序列化的基本原理413
  • 14.4.5 版本问题414
  • 14.4.6 序列化特点分析414
  • 14.5 使用Jackson序列化为JSON/XML/MessagePack415
  • 14.5.1 基本概念415
  • 14.5.2 基本用法415
  • 14.5.3 容器对象418
  • 14.5.4 复杂对象419
  • 14.5.5 定制序列化420
  • 14.5.6 Jackson对XML支持的局限性428
  • 14.5.7 小结428
  • 第五部分 并发
  • 第15章 并发基础知识430
  • 15.1 线程的基本概念430
  • 15.1.1 创建线程430
  • 15.1.2 线程的基本属性和方法432
  • 15.1.3 共享内存及可能存在的问题435
  • 15.1.4 线程的优点及成本438
  • 15.2 理解synchronized439
  • 15.2.1 用法和基本原理439
  • 15.2.2 进一步理解synchronized443
  • 15.2.3 同步容器及其注意事项445
  • 15.3 线程的基本协作机制450
  • 15.3.1 协作的场景450
  • 15.3.2 wait/notify450
  • 15.3.3 生产者/消费者模式453
  • 15.3.4 同时开始455
  • 15.3.5 等待结束456
  • 15.3.6 异步结果458
  • 15.3.7 集合点461
  • 15.3.8 小结462
  • 15.4 线程的中断463
  • 15.4.1 取消/关闭的场景463
  • 15.4.2 取消/关闭的机制463
  • 15.4.3 线程对中断的反应464
  • 15.4.4 如何正确地取消/关闭线程467
  • 15.4.5 小结467
  • 第16章 并发包的基石468
  • 16.1 原子变量和CAS468
  • 16.2 显式锁473
  • 16.3 显式条件483
  • 第17章 并发容器490
  • 17.1 写时复制的List和Set490
  • 17.2 ConcurrentHashMap493
  • 17.3 基于跳表的Map和Set498
  • 17.4 并发队列501
  • 第18章 异步任务执行服务505
  • 18.1 基本概念和原理505
  • 18.2 线程池513
  • 18.3 定时任务的那些陷阱518
  • 第19章 同步和协作工具类527
  • 19.1 读写锁ReentrantReadWrite-Lock527
  • 19.2 信号量Semaphore529
  • 19.3 倒计时门栓CountDownLatch531
  • 19.4 循环栅栏CyclicBarrier533
  • 19.5 理解ThreadLocal535
  • 第20章 并发总结541
  • 20.1 线程安全的机制541
  • 20.2 线程的协作机制543
  • 20.3 容器类544
  • 20.4 任务执行服务546
  • 第六部分 动态与函数式编程
  • 第21章 反射550
  • 21.1 Class类551
  • 21.2 应用示例559
  • 21.3 反射与泛型561
  • 第22章 注解564
  • 22.1 内置注解564
  • 22.2 框架和库的注解566
  • 22.3 创建注解568
  • 22.4 查看注解信息570
  • 22.5 注解的应用:定制序列化571
  • 22.6 注解的应用:DI容器573
  • 第23章 动态代理577
  • 23.1 静态代理577
  • 23.2 Java SDK动态代理579
  • 23.3 cglib动态代理584
  • 23.4 Java SDK代理与cglib代理比较585
  • 23.5 动态代理的应用:AOP585
  • 第24章 类加载机制592
  • 24.1 类加载的基本机制和过程593
  • 24.2 理解ClassLoader594
  • 24.3 类加载的应用:可配置的策略597
  • 24.4 自定义ClassLoader598
  • 24.5 自定义ClassLoader的应用:热部署599
  • 第25章 正则表达式603
  • 25.1 语法603
  • 25.2 Java API612
  • 25.3 模板引擎618
  • 25.4 剖析常见表达式619
  • 第26章 函数式编程628
  • 26.1 Lambda表达式628
  • 26.2 函数式数据处理:基本用法637
  • 26.3 函数式数据处理:强大方便的收集器647
  • 26.4 组合式异步编程658
  • 26.5 Java 8的日期和时间API668

以上就是本次介绍的Java编程相关电子书的全部内容,希望我们整理的资源能够帮助到大家,更多相关的电子书资源可以下面的相关资源中查找。

展开 +

收起 -

下载地址:百度网盘下载
网友留言
网友NO.559173

《Java编程的逻辑》读书笔记、评价

读者评价 前边的不明白,立即看过函数式编程,读得很非常好,我用在新项目中了。 详尽分析java源代码及建立观念,很全方位。不够,一些章节目录一些乏味,看不进,就跳已过 提议先到学视頻基本,再看来这这书较为好,哪个给1星的简直傻.逼,我这个人交给习的杂稿1星,什么,介绍哪些耶和华,就你这副模样信耶稣,估算你也就只有变成犹大那样的门徒,我到现在为止基础没发哪些评价,仅仅见到这类人气不打某处来,更可悲的居然還是个女孩,随口就是说废弃物,我觉得这这书3星起跳,我能给四星,一些章节目录深度1不足,最好是能学关键技术相同分出几卷,每卷的內容能够再深一点 前边的……

网友NO.219668

详解JAVA随机生成指定长度的密码功能(包含大小写和数字组合)

本文实例讲述了JAVA编程实现随机生成指定长度的密码功能。分享给大家供大家参考,具体如下: import java.util.Random;public class PassWordCreate { /** * 获得密码 * @param len 密码长度 * @return */ public String createPassWord(int len){ int random = this.createRandomInt(); return this.createPassWord(random, len); } public String createPassWord(int random,int len){ Random rd = new Random(random); final int maxNum = 62; StringBuffer sb = new StringBuffer(); int rdGet;//取得随机数 char[] str = { a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A,B,C,D,E,F,G,H,I,J,K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y ,Z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int count=0; while(count len){ rdGet = Math.abs(rd.nextInt(maxNum));//生成的……

马俊昌

黄哲瀚 提供上传

资源
39
粉丝
5
喜欢
1269
评论
2

Copyright 2020-2021 www.fuhao321.com 编程软件库