• 零基础学Java(第3版)
  • 零基础学Java(第3版)
  • 零基础学Java(第3版)
  • 零基础学Java(第3版)
  • 零基础学Java(第3版)
21年品牌 40万+商家 超1.5亿件商品

零基础学Java(第3版)

10 1.4折 69 八五品

库存2件

江苏南京
认证卖家担保交易快速发货售后保障

作者常建功 著

出版社机械工业出版社

出版时间2012-04

版次3

装帧平装

货号78AKF-7

上书时间2024-09-16

田园书店

五年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:八五品
图书标准信息
  • 作者 常建功 著
  • 出版社 机械工业出版社
  • 出版时间 2012-04
  • 版次 3
  • ISBN 9787111372370
  • 定价 69.00元
  • 装帧 平装
  • 开本 16开
  • 纸张 胶版纸
  • 页数 605页
  • 正文语种 简体中文
  • 丛书 零基础学编程
【内容简介】
Java7.0是Sun公司与Oracle公司合并后推出的关于Java语言的第一个版本,同时也是最新版本。《零基础学Java(第3版)》站在零基础学习的角度,使初学者能尽快掌握Java7.0语言程序设计的精髓而少走弯路。

《零基础学Java(第3版)》一共分为4篇,共27章,循序渐进地讲述了Java语言的语法规则,Eclipse和MyEclipse开发环境的使用,从基本概念到具体实践,从入门知识到高阶主题,从语法语义到数据结构和算法都进行了详细的阐述,主要包括运算符、表达式、分支语句、循环语句、函数、数组、字符串、类、对象、包、继承、多态、封装、枚举、反射、标注、泛型、类加载器、动态代理、多线程、文件的操作和访问、数据的操作、数据的存储、Java数据结构、XML文件的创建和解析、数据库的链接、网络编程和界面的设计等知识点。

《零基础学Java(第3版)》非常适合Java语言的初、中级学者阅读,并可作为开发人员的参考手册。
【作者简介】
  本书由常建功主编,其他参与编著和资料整理的人员有冯华君、刘博、刘燕、叶青、张军、张立娟、张艺、彭涛、徐磊、戎伟、朱毅、李佳、李玉涵、杨利润、杨春娇、武鹏、潘中强、王丹、王宁、王西莉、石淑珍、程彩红、邵毅、郑丹丹、郑海平、顾旭光。
【目录】

前言

第一篇 Java语言语法基础-面向过程知识

第1章 Java技术概览

1.1 Java技术

1.1.1 Java编程语言

1.1.2 Java语言平台

1.1.3 Java语言的功能

1.1.4 Java语言的优点

1.2 Windows下的“HelloWorld”应用程序

1.2.1 创建应用程序的软件环境

1.2.2 创建“HelloWorld”应用程序的步骤

1.3 深入探讨“HelloWorld”应用程序

1.3.1 注释源代码

1.3.2 实现类定义

1.3.3 详解main方法

1.4 常见疑难问题解答

1.4.1 环境变量设置错误

1.4.2 语法错误

1.4.3 语义错误

1.4.4 运行时错误

1.5 小结

1.6 实践题

第2章 Java开发工具及环境设置

2.1 Java开发工具简介

2.1.1 下载并安装JDK

2.1.2 设定环境变量

2.1.3 验证JDK环境是否配置成功

2.2 JDK内置工具

2.2.1 JDK常用工具

2.2.2 JDK常用工具实例

2.2.3 应用程序发布工具

2.3 一个简单的Java应用程序

2.4 一个简单的Java Applet应用程序

2.4.1 编写一个Applet

2.4.2 编写承载Applet Java程序的HTML文件

2.4.3 Applet的运行过程

2.5 注释及内嵌式文档

2.6 常见疑难问题解答

2.6.1 JDK和J2SDK的区别

2.6.2 Java文件扩展名是否区分大小写

2.7 小结

2.8 实践题

第3章 Java语言中的数据与运算符

3.1 数制

3.1.1 基本概念

3.1.2 Java语言中的数制表现形式

3.2 数据类型

3.2.1 整型

3.2.2 字符型

3.2.3 浮点型

3.2.4 布尔型

3.3 变量

3.3.1 变量的声明

3.3.2 变量的含义

3.3.3 变量的分类

3.4 变量如何初始化

3.5 常量

3.6 运算符

3.6.1 算术运算符

3.6.2 关系运算符

3.6.3 逻辑运算符

3.6.4 位运算符

3.6.5 移位运算符

3.6.6 赋值运算符

3.6.7 三元运算符

3.6.8 逗号运算符

3.6.9 转型运算符

3.6.10 运算符的优先级别

3.7 常见疑难解答

3.7.1 如何将十进制转换成二进制

3.7.2 转型运算符会引起精度问题,为什么还要使用它

3.8 小结

3.9 实践题

第4章 程序设计中的流程控制

4.1 编程风格

4.2 条件语句

4.2.1 条件语句的种类

4.2.2 如何使用好条件语句

4.3 循环语句

4.3.1 for循环语句

4.3.2 while循环

4.3.3 do...while语句

4.4 中断与继续语句

4.4.1 中断控制语句

4.4.2 继续语句

4.5 分支语句

4.6 返回语句

4.7 常见疑难解答

4.7.1 普通循环是使用for语句还是while语句

4.7.2 一般的程序可否用分支语句来代替条件语句

4.8 小结

4.9 实践题

第5章 数组

5.1 数组概念的引入

5.1.1 实例的引入

5.1.2 数组的概念

5.1.3 用实例说明数组的用处

5.2 基本数据类型的数组

5.2.1 基本类型数组的声明

5.2.2 基本类型数组的初始化

5.3 由实例引出不同数组种类及其使用

5.3.1 由实例引出一维数组及其使用

5.3.2 由实例引出二维数组及其使用

5.4 数组的综合实例

5.5 常见疑难解答

5.5.1 声明数组需要注意什么

5.5.2 数组在平时的程序代码中使用是否频繁

5.6 小结

5.7 实践题

第6章 字符串的处理

6.1 字符串的基本概念

6.2 字符串处理的类库种类

6.2.1 字符串的赋值

6.2.2 字符串的处理类-String

6.2.3 字符串处理的方法

6.2.4 缓冲字符串处理类-StringBuffer

6.2.5 缓冲字符串StringBuffer类的构造器

6.2.6 缓冲字符串处理的方法

6.2.7 缓冲字符串类的特点

6.3 用实例演示如何处理字符串

6.4 如何格式化输出

6.5 常见疑难解答

6.5.1 “equals”和“==”的区别

6.5.2 String类为何被定义成final约束

6.5.3 char类型如何转换成int类型,int类型如何转换成字符串

6.6 小结

6.7 实践题

第二篇 Java语言语法进阶-面向对象知识

第7章 类

7.1 JDK相关版本特性

7.1.1 什么是JDK

7.1.2 JDK 5的特点

7.1.3 JDK 6的特点

7.1.4 JDK 7的特点

7.1.5 各种JDK版本的比较

7.2 用比较法阐述类的概念

7.3 Java中已有的类

7.3.1 Java的数学运算处理类Math

7.3.2 测试时间和日期的类Date

7.3.3 测试日历的类GregorianCalendar

7.3.4 日历处理的实例解析

7.4 用实例分析设计一个类的流程

7.4.1 如何在现实程序设计中提取一个类

7.4.2 设置器和访问器

7.4.3 总结

7.5 常见疑难解答

7.5.1 类在程序语言中起到了什么作用

7.5.2 设置器和访问器的作用

7.6 小结

7.7 实践题

第8章 对象和包

8.1 对象

8.1.1 什么是对象

8.1.2 操作对象

8.1.3 初始化对象

8.2 对象家族中的成员

8.2.1 对象的成员方法

8.2.2 对象的成员变量

8.3 对象中访问控制符的重要性

8.3.1 什么是访问控制符

8.3.2 如何使用访问控制符及其重要性

8.4 重载

8.4.1 什么是重载

8.4.2 用实例来说明重载的意义

8.5 包

8.5.1 什么是Java中的包

8.5.2 如何实现包

8.5.3 什么是类路径和默认包

8.5.4 包的作用域

8.5.5 静态导入

8.6 注释及嵌入文档

8.6.1 如何添加注释

8.6.2 类、方法、字段等注释的方法

8.7 常见疑难解答

8.7.1 包在实际编程中究竟有什么作用

8.7.2 访问控制符在实际开发有什么作用

8.7.3 一个文件中定义了两个class类是否生成一个.class文件

8.8 小结

8.9 实践题

第9章 继承

9.1 什么是继承

9.1.1 继承的引出

9.1.2 继承的概念

9.2 如何实现继承

9.3 构造函数的使用

9.3.1 什么是构造函数

9.3.2 继承中构造函数的初始化

9.3.3 替代父类和本身的方式

9.3.4 Java中的单继承性

9.4 继承中的覆盖现象

9.5 类之间的关系

9.5.1 依赖

9.5.2 聚合

9.5.3 继承

9.6 继承层次图

9.7 如何设计好继承

9.8 常见疑难解答

9.8.1 Java不支持多继承,如何处理一个类继承多个父类的情况

9.8.2 如果出现了带参数的构造函数,可否不在代码中写出来

9.9 小结

9.10 实践题

第10章 多态

10.1 多态的产生

10.2 多态的概念

10.2.1 使用多态编写程序

10.2.2 覆盖的应用

10.2.3 重载与覆盖的实例对比

10.2.4 覆盖的多态性

10.2.5 传值引用和传址引用

10.3 通过实例熟悉多态用法

10.4 绑定

10.4.1 静态绑定

10.4.2 动态绑定

10.5 超类

10.5.1 什么是超类

10.5.2 equals方法的使用

10.5.3 通用编程

10.6 常见疑难解答

10.6.1 动态和静态编译是什么

10.6.2 绑定与多态的联系是什么

10.6.3 多态与重载的区别是什么

10.7 小结

10.8 实践题

第11章 接口与内部类

11.1 接口

11.1.1 接口概念的引入

11.1.2 接口的概念

11.1.3 接口的声明

11.1.4 接口的实现

11.1.5 接口的多重实现

11.1.6 接口的属性

11.1.7 接口的继承

11.1.8 接口意义

11.2 内部类

11.2.1 使用内部类来访问对象

11.2.2 局部内部类

11.2.3 静态内部类

11.2.4 匿名内部类

11.3 常见疑难解答

11.3.1 匿名类如何在程序中使用

11.3.2 接口与继承有什么区别

11.4 小结

11.5 实践题

第12章 抽象

12.1 抽象的概念

12.1.1 什么是抽象

12.1.2 抽象的综合实例

12.2 抽象类

12.2.1 什么是抽象类

12.2.2 抽象类的实例

12.3 抽象与接口的区别

12.4 枚举

12.4.1 关于枚举的实现原理

12.4.2 枚举的简单应用

12.4.3 关于枚举的高级特性

12.5 反射(Reflection)

12.5.1 关于反射的基石-Class类

12.5.2 关于反射的基本应用

12.5.3 关于反射的高级应用

12.6 标注

12.6.1 标注的简单使用

12.6.2 关于JDK的内置标注

12.7 泛型

12.7.1 为什么要使用泛型

12.7.2 关于泛型的一些特性

12.7.3 关于泛型的通配符

12.8 类加载器

12.8.1 什么是类加载器

12.8.2 什么是类加载器的委派模型

12.9 动态代理

12.9.1 什么是代理

12.9.2 关于动态代理基础类

12.9.3 关于InvocationHandler接口

12.9.4 动态代理类的设计模式

12.10 常见疑难解答

12.10.1 抽象类和接口在概念上有什么区别

12.10.2 如何从设计理念上看待抽象类和接口

12.11 小结

12.12 实践题

第三篇 Java语言编程主题

第13章 线程

13.1 线程的基本概念

13.1.1 进程及其使用环境

13.1.2 线程及其使用环境

13.2 线程创建

13.2.1 如何创建线程

13.2.2 通过实例熟悉如何创建线程

13.3 线程的使用

13.3.1 线程的优先级

13.3.2 线程的休眠与唤醒

13.3.3 线程让步

13.3.4 线程同步

13.3.5 同步块

13.3.6 同步化方法

13.4 实例分析

13.4.1 生产者与消费者的程序设计及分析

13.4.2 多消费者的程序设计及分析

13.4.3 多生产者的程序设计及分析

13.5 常见疑难解答

13.5.1 Java中线程与线程之间怎么通信

13.5.2 什么是进程的死锁和饥饿

13.5.3 什么时候会涉及线程程序

13.6 小结

13.7 实践题

第14章 封装

14.1 封装的介绍

14.2 在程序设计中为什么要使用封装

14.3 结合实例讲述如何设计封装

14.4 在程序设计中设计封装的注意点

14.5 常见疑难解答

14.5.1 封装在现实开发中给程序员带来什么启发

14.5.2 封装在实际开发中的应用有哪些

14.6 小结

14.7 实践题

第15章 Java输入与输出(I/O)

15.1 输入与输出的重要性

15.2 Java重要的输入输出类

15.3 文件或目录信息的处理

15.3.1 File常用的操作方法

15.3.2 文件处理方法的应用

15.3.3 文件和目录的完全处理

15.4 读取数据的媒介之一-流(Stream)

15.4.1 什么是流

15.4.2 什么是输入流和输出流

15.4.3 字节输入流及输出流

15.4.4 使用文件字节输入流读取文件

15.4.5 使用文件字节输出流输出文件

15.5 多字节数据读取类-Filter类

15.5.1 Filter流的概念

15.5.2 处理字节类型以外的文件输入

15.5.3 处理字节类型以外的文件输出

15.5.4 增强的多字节输出流DataOutput

15.5.5 增强的多字节输入流DataInput

15.6 读取数据的媒介之二-字符流

15.6.1 字符流的概念

15.6.2 抽象字符输入流Reader类的使用

15.6.3 抽象字符输出流Writer类的使用

15.6.4 读取带缓存的BufferedReader字符流

15.6.5 带缓存的字符输出流BufferedWriter类

15.6.6 字符输入流FileReader类和FileWriter类的使用

15.6.7 如何用标准输入流System.in来获取数据

15.6.8 打印输入流PrintWriter类与PrintStream类的区别

15.6.9 随机文件访问RandomAccessFile类

15.7 利用对象序列化控制输入输出

15.7.1 什么是对象序列化

15.7.2 基本数据和对象数据读写ObjectInput接口与ObjectOutput接口

15.7.3 对象序列化处理ObjectOutputStream类

15.7.4 对象序列化处理ObjectInputStream类

15.8 常见疑难解答

15.8.1 字节流与字符流主要的区别

15.8.2 输入流与输出流如何区分,各有什么作用

15.8.3 什么是管道流

15.9 小结

15.10 实践题

第16章 异常与处理及内存管理

16.1 异常的概念

16.1.1 异常的分类

16.1.2 异常的声明

16.1.3 异常的抛出

16.2 异常的捕获

16.2.1 捕获多个异常

16.2.2 自定义异常

16.3 内存的管理和回收

16.4 常见疑难解答

16.4.1 为什么要声明方法抛出异常

16.4.2 为什么抛出的异常一定是检查异常

16.5 小结

16.6 实践题

第17章 Java中对数据的处理

17.1 如何将基本数据类型转换为对象

17.1.1 为什么要将基本数据转换为对象

17.1.2 Wrapper类的构造函数

17.1.3 包装类的常用函数

17.1.4 基本数据的拆装箱操作(autoboxing和unboxing)

17.2 如何处理随机性的数据

17.2.1 Random类的基础知识

17.2.2 通过实例熟悉Random类的常用方法

17.3 如何对数据进行排列、整理

17.3.1 Arrays类的常用方法

17.3.2 实例分析

17.4 常见疑难解答

17.4.1 Random类函数在现实生活中有什么用处

17.4.2 数组的排列和整理数据在实际应用中有什么用处

17.5 小结

17.6 实践题

第18章 数据结构

18.1 数据结构接口及实现

18.1.1 数据结构接口的实质

18.1.2 用实例来熟悉数据结构接口的实现

18.2 Collection集合接口与Iterator迭代器接口

18.2.1 熟悉Collection集合接口

18.2.2 List链表接口和Set接口

18.2.3 Map映射接口

18.2.4 Iterator迭代器接口

18.2.5 通过实例来认识迭代器的实现

18.3 常见疑难解答

18.3.1 Collection集合接口和Collections集合类的区别

18.3.2 ArrayList数组列表类和Vector存储类的区别

18.3.3 HashMap散列映射和Hashtable散列表的区别

18.3.4 数据结构的种类有哪些

18.3.5 List链表接口和Set接口的区别

18.4 小结

18.5 实践题

第19章 Java中的数据结构

19.1 链表

19.1.1 什么是Java中的链表

19.1.2 用程序代码段实现对链表的添加

19.1.3 用程序代码段实现对链表的删除

19.2 数组列表类

19.2.1 什么是数组列表类

19.2.2 通过实例熟悉数组列表如何存储数据

19.3 散列表

19.3.1 什么是散列表

19.3.2 通过实例熟悉散列表如何存储数据

19.4 散列集

19.4.1 什么是散列集

19.4.2 通过实例熟悉散列集如何存储数据

19.5 树集

19.5.1 什么是树集

19.5.2 通过实例熟悉树集如何存储数据

19.6 映像

19.6.1 什么是映像

19.6.2 通过实例熟悉映像如何存储数据

19.7 常见疑难解答

19.7.1 哪些是线程安全的数据结构

19.7.2 Vector是什么样的数据结构

19.8 小结

19.9 实践题

第20章 XML基础

20.1 XML的产生及与HTML的比较

20.2 XML的编辑工具

20.3 XML文档

20.3.1 XML的声明

20.3.2 文档类型的声明

20.3.3 元素

20.3.4 注释

20.3.5 处理指令

20.3.6 空白处理

20.3.7 行尾处理

20.3.8 语言标识

20.3.9 一个简单的有关XML的实例

20.4 关于XML的高级知识

20.4.1 什么才是格式良好的XML文档

20.4.2 DTD文档的作用

20.4.3 DTD的结构

20.4.4 几个简单有关DTD的实例

20.5 关于XML文档的操作

20.5.1 下载Dom4J组件

20.5.2 安装和配置Dom4J组件

20.5.3 Dom4J组件的简单使用-解析XML文件

20.5.4 Dom4J组件的简单使用-创建XML文件

20.6 关于XML文档的高级操作

20.6.1 下载Sax类库

20.6.2 安装和配置Sax组件

20.6.3 Sax组件的简单使用--解析XML文件

20.7 常见疑难解答

20.7.1 XML与HTML的区别

20.7.2 XML有哪些显示数据的方式

20.8 小结

20.9 实践题

第21章 JDBC及其应用

21.1 数据库基础知识

21.1.1 什么是数据库

21.1.2 数据库的分类及功能

21.1.3 关系数据库的设计

21.1.4 数据库设计技巧

21.2 JDBC的基础概念

21.2.1 JDBC驱动程序的分类

21.2.2 利用Java到数据库协议方式连接数据库

21.2.3 利用Java到本地API方式连接数据库

21.2.4 利用JDBC-ODBC方式连接数据库

21.3 关于SQL Server 2005数据库基础操作

21.3.1 什么是支持SQL语言的数据库

21.3.2 通过SQL语言如何操作数据库

21.3.3 安装SQL Server 2005

21.3.4 高级SQL类型

21.3.5 使用SQL创建数据库

21.4 JDBC基本编程

21.4.1 如何建立数据库

21.4.2 如何操作数据库

21.5 关于JDBC的高级操作

21.5.1 什么是事务处理

21.5.2 事务处理的过程演练

21.5.3 预查询

21.6 常见疑难解答

21.6.1 操作数据库的具体步骤是什么

21.6.2 数据库中的视图、图表、缺省值、规则、触发器、存储过程的意义

21.7 小结

21.8 实践题

第22章 Swing组件与布局管理器

22.1 什么是Swing编程

22.2 MVC设计模式基础

22.3 简单框架设计及实例

22.3.1 创建一个空白的框架

22.3.2 创建框架的其他工作

22.4 简单图形按钮控件的设计及实例

22.4.1 Swing中的按钮控件

22.4.2 按钮的模型

22.4.3 添加按钮

22.4.4 如何添加单选按钮

22.4.5 复选按钮

22.4.6 ToggleButton按钮

22.5 简单文本输入组件的设计及实例

22.5.1 文本域的设计

22.5.2 密码域的设计

22.5.3 如何设计文本区

22.6 标签组件的设计及实例

22.7 选择组件的设计及实例

22.8 菜单的组件设计

22.9 对话框的种类及用法

22.10 复杂布局管理器的种类及用法

22.10.1 箱式布局的设计

22.10.2 网格组布局的设计

22.11 通过实例熟悉Swing编程

22.12 常见疑难解答

22.12.1 如何处理菜单的启用和禁用功能

22.12.2 如何编写快捷键的程序

22.13 小结

22.14 实践题

第23章 开发工具的使用

23.1 Eclipse简介

23.1.1 下载并安装Eclipse

23.1.2 Eclipse界面介绍

23.2 如何使用Eclipse进行开发

23.2.1 如何新建一个Java工程

23.2.2 如何新建一个Java的类

23.2.3 编写代码

23.3 如何使用MyEclipse进行开发

23.3.1 下载并安装MyEclipse

23.3.2 关于MyEclipse的一些常用操作

23.4 常见疑难解答

23.4.1 Eclipse和Uedit两个开发工具的优缺点

23.4.2 什么是IDE环境

23.4.3 有关Eclipse的编译报错的原因

23.5 小结

23.6 实践题

第24章 Applet设计

24.1 Applet的基本概念及生命周期

24.2 Applet的多媒体处理

24.2.1 声音处理

24.2.2 图像处理

24.3 浏览器与Applet的设计

24.3.1 如何将Applet嵌入浏览器

24.3.2 如何使用Applet类编程

24.3.3 如何用Applet控制浏览器

24.4 Applet的安全

24.5 一个Applet的综合实例分析

24.6 常见疑难解答

24.6.1 浏览器如何运行Applet

24.6.2 有关Applet无法在IE中显示问题的解答

24.7 小结

24.8 实践题

第25章 网络编程基础

25.1 网络基础知识

25.2 TCP与UDP

25.3 端口与套接字

25.4 TCP程序设计基础

25.4.1 如何设计TCP的程序

25.4.2 一个简单的例子

25.5 UDP程序设计基础

25.5.1 如何设计UDP的程序

25.5.2 一个简单的例子

25.6 如何设计网络程序

25.6.1 单向通信综合实例

25.6.2 双向通信综合实例

25.7 常见疑难解答

25.7.1 TCP和UDP的区别

25.7.2  什么是TCP/IP协议?分为几层?协议有什么功能?

25.8 小结

25.9 实践题

第四篇 Java语言程序设计实例与面试题剖析

第26章 学校管理系统

26.1 开发背景

26.2 需求分析

26.3 登录界面的设计

26.3.1 登录界面的分析

26.3.2 登录界面的代码实现

26.3.3 登录界面的实现

26.4 主界面的设计

26.4.1 主界面类的分析

26.4.2 主菜单界面类的代码

26.4.3 主菜单界面类的实现

26.5 数据库系统的设计

26.5.1 数据库中表的创建

26.5.2 数据库中代码段

26.6 学生信息系统界面的设计

26.6.1 学生类的设计

26.6.2 储存类的设计

26.6.3 学生信息界面的设计

26.7 教师信息系统界面的设计

26.7.1 教师类的设计

26.7.2 储存类的设计

26.7.3 教师信息界面的设计

26.8 领导信息系统界面的设计

26.8.1 领导类的设计

26.8.2 储存类的设计

26.8.3 领导信息界面的设计

26.9 小结

第27章 面试题

面试题1 Java的引用和C++的指针有什么区别

面试题2 类和对象有什么区别

面试题3 说明private、protected、public和default的区别

面试题4 Java可以用非0来代表true吗

面试题5 StringBuffer和StringBuilder存在的作用是什么

面试题6 二维数组的长度是否固定

面试题7 符合什么条件的数据集合可以使用foreach循环

面试题8 如何序列化和反序列化一个Java对象

面试题9 如何使用Java的线程池

面试题10 如何利用反射实例化一个类

面试题11 TCP协议的通信特点是什么

面试题12 请简述JDBC操作数据库的编程步骤

面试题13 如何使用连接池技术

面试题14 简述接口和抽象类的区别

面试题15 如何理解Java中的装箱和拆箱

面试题16 根据代码判断创建的对象个数

面试题17 分析循环程序的运行结果

面试题18 可以返回最大值的方法

面试题19 关于垃圾回收的疑问

面试题20 线程问题:找出代码中的错误

面试题21 关于ArrayList、Vector、LinkedList的问答题


点击展开 点击收起

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP