06 2021 档案
摘要:一般情况下web前端面试的时候并不会设计特别复杂的问题。但是依旧有很多同学在比较基础的问题上栽了跟头。所以小编结合多套面试题,为大家整理出8个虽然简单面试题,即将面试或者正在面试的小伙伴速度参考一下,别让小问题组织了你高薪的步伐。 1、你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? IE
阅读全文
摘要:任何技术岗位面试的时候都要经过人力面试和技术岗位面试至少两次。人力面试一般也就是考察一下个人品质以及薪资问题,而技术岗位则是考察你是否有真才实学。本文和大家分享一个难到了很多前端工程师的面试题:Quirks模式是什么?它和 Standards 模式有什么区别? 下面就是针对这个问题的讲解。 从 IE
阅读全文
摘要:JVM的引入,使Java语言可以在不同平台上运行时不需要重新编译。但是程序上线前的测试或者运营的过程中,会出现各种关于JVM的问题。例CPU load过高、请求延迟、tps降低,甚至出现内存泄漏,内容一处导致系统崩溃等等问题。因此需要对JVM进行调优,促使程序正常运行的前提下获得更高的用户体验和运行
阅读全文
摘要:在Java工程师面试的过程中,线程和进程的相关问题经常被面试官提到。同时线程和进程的区别也是Java开发学习工作中非常重要的知识点。那线程和进程有什么区别呢?和小编一起学习一下吧。 首先我们了解一下线程和进程的定义 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配
阅读全文
摘要:Java开发中进程和线程的区别是什么?进程是具有一定独立功能的程序关于某个数据集合上的一次 运行活动,进程是系统进行资源分配和调度的一个独立单位;线程自己基本上不拥有 系统资源,只拥有一点在运行中必不可少的资源。 1.进程和线程的定义分别是什么 进程是具有一定独立功能的程序关于某个数据集合上的一次
阅读全文
摘要:Java基础知识,能不能自己写个类也叫 java.lang.String?可以,但在应用的时候,需要用自己的类加载器去加载,否则,系统的类加载器永远只是去加载 jre.jar 包中的那个java.lang.String。 由于在 tomcat 的 web 应用程序中,都是由webapp 自己的类加载
阅读全文
摘要:Java基础字节流与字符流的区别是什么?要把一片二进制数据数据逐一输出到某个设备中,或者从某个设 备中逐一读取一片二进制数据,不管输入输出设备是什么,我们 要用统一的方式来完成这些操作,用一种抽象的方式进行描述, 这个抽象描述方式起名为 IO 流,对应的抽象类为 OutputStream 和 Inp
阅读全文
摘要:ArrayList,Vector, LinkedList 的存储性能和特性,这样的题属于随意发挥题:这样的题比较考水平,两个方面的水平:一是要真正明白这些内容,二是要有较强的总结和表述 能力。如果你明白,但表述不清楚,在别人那里则等同于不明白。 首先,List 与 Set 具有相似性,它们都是单列元
阅读全文
摘要:装饰者模式目标 把许多要实现的功能,加载在子类上,类的继承,显得很臃肿,装饰着模式是在不改变原有类文件和使用继承的情况下,通过创建一个包装对象动态地扩展一个对象的功能,相比生成子类更为灵活 装饰模式的结构<ignore_js_op> 在装饰模式中的角色有: ● 抽象构件(Component)角色:给
阅读全文
摘要:什么是HTML? HTML:Hyper Text Markup Language 超文本标记语言。 1_超文本: 超过普通文本,普通文本只能看。网页不但有文本,还有图片,视频,音乐。 文本还可以设置大小,颜色,点文本还可以进行页面跳转。 2_标记语言: 网页由各种各样的标记(标签)组成,这些标签有着
阅读全文
摘要:java中反射的三种方法:1. 通过Object类的getClass方法来获取java.lang.Object中定义有getClass方法:public final Class getClass()所有Java对象都具备这个方法,该方法用于返回调用该方法的对象的所属类关联的Class对象,例如:Da
阅读全文
摘要:30道常见We前端面试题你会几个?以下30到web前端面试答出了大多数的或者是全部的题表明你的基础扎实;只答出小部分或者答出了大部分题但答案不正确,说明水平还差的远,基础知识不扎实距离拿高薪还很遥远,需要基础夯实基础。 一、HTML常见题目 1、Doctype作用?严格模式与混杂模式如何区分?它们有
阅读全文
摘要:6.2 实现接口 1 类实现接口 在Java语言中,接口由类来实现以便使用接口中的方法。 一个类需要类声明中使用关键字implements声明该类实现个或多个接口。 如果实现多个接口,用逗号隔开接口名,例如A类实现Pintable和Addable接口。 classA implements Print
阅读全文
摘要:IOC inversion of Controller 控制反转。由我们自己实例化的对象交给spring容器来实始化。这时对象的初始化的权利就会反转。DI dependency injection 依赖注入在spring框架负责创建Bean对象时,动态将依赖对象注入到Bean组件IOC/DI区别 I
阅读全文
摘要:前言:这段时间用springboot感觉确实挺好用的,很大程度上的简化了开发,由其是它的自动化配置,让大大的提高了开发效率,现在我们要让SpringBoot与MyBatis一起工作。下面就来详细介绍如何在Spring Boot中整合MyBatis,并通过注解方式实现映射。 1.0 创建项目 1.1
阅读全文
摘要:JScript 运行时错误是指当 JScript 脚本试图执行一个系统不能运行的动作时导致的错误。当正在运行脚本、计算变量表达式、或者正在动态分配内存时出现 JScript 运行时错误时。 错误号 描述 5029 数组长度必须为一有限正整数 5030 必须赋给数组长度一个有限正数 5028 需要 A
阅读全文
摘要:DML是数据操作语言,包括对数据库表记录的添加、删除与修改。今天我们先来学习向表中插入数据,向表中插入数据后需要查看数据是否插入成功,这时就需要使用DQL,DQL是数据查询语言,它的语法是: SELECT * FROM 表名:表示查询指定表的所有记录; 使用DML语句向表中插入记录的语法是:INTE
阅读全文
摘要:外连接分为左外连接,右外连接以及全外连接。前面我们学习的内连接获得是满足条件的记录,连接查询的表中不满足条件的记录被去掉。而外连接的特点是:查询出的结果存在不满足条件的可能。 1.左外连接 左外连接是将左表的所有记录查询出来,左表中不满足条件的记录对应的右表中的列的值显示为NULL。左外连接的关键词
阅读全文
摘要:1.停止MySQL服务 在卸载MySQL数据库之前,我们首先要停止MySQL服务。停止MySQL服务器有两种方式,一种是在dos窗口下使用命令方式停止,另一种是在任务管理器中手动停止。首先我们使用命令方式停止MySQL服务,如下: 在dos窗口中输入如下命令:net stop mysql;使用这个命
阅读全文
摘要:1.Servlet生命周期详解 Servlet的生命周期包括即Servlet从创建到销毁的这一个过程,可以将Servlet的生命周期分为初始化阶段、服务阶段、销毁阶段这三个阶段。下面通过一张图来描述Servlet的生命周期,如图1-1所示: 图1-1 Servlet生命周期通过对图1-1Servle
阅读全文
摘要:1.什么是HTTP响应 当服务器收到浏览器的请求后,会发送响应消息给浏览器。一个完整的响应消息主要包括响应首行、响应头信息、空行和响应正文。其中,每个部分都代表了不同的含义。下面我们会围绕HTTP响应消息的每个组成部分进行详细分析。 2.HTTP响应消息分析 下面我们通过HttpWatch抓包工具,
阅读全文
摘要:HttpServletRequest基本功能 1 HttpServletRequest的功能 HttpServletRequest在JavaWeb中非常重要的一个类。它是Servlet的service()方法的参数之一!所以你必须必须要掌握它!request的功能可以分为以下几种: 封装了请求头数据
阅读全文
摘要:操作XML文档概述 1 如何操作XML文档 XML文档也是数据的一种,对数据的操作也不外乎是“增删改查”。也被大家称之为“CRUD”。 C:Create; R:Retrieve; U:Update; D:Delete 2 XML解析技术 XML解析方式分为两种:DOM(Document Object
阅读全文
摘要:1.案例创建步骤 (1)创建web应用,Example5;(2)在该应用下新建一个Class类,名称为Person,主要内容见代码;(3)在该应用下新建一个Class类,名称为Demo,然后在该类中定义两个单元测试方法fun1,fun2,这些方法的主要作用是为了测试BeanUtils类的某些方法,主
阅读全文
摘要:1.Servlet实例化时机 通过Servlet的学习,我们知道当浏览器第一次访问Servlet的时候,服务器为该Servlet创建实例,该实例会永驻内存,当服务器关闭或当前应用被移出服务器时,Servlet实例才会被销毁。现在我们可以通过配置来设置Servlet在服务器启动的时候就被创建,即在we
阅读全文
摘要:1.常用状态码介绍 在http响应协议中,我们通过HttpWatch抓包抓取到响应信息。其中响应首行中就包含一个状态码。状态码由三位数字组成,表示请求是否被理解或者被满足。HTTP响应状态码的第一个数字定义了响应的类别,后面两位没有具体分类,第一个数字有五种可能的取值,具体介绍如下所示: 1xx :
阅读全文
摘要:1.Myeclipse发布项目 我们使用Myeclipse创建了一个web应用,现在需要将该应用发布到Tomcat的webapps目录下。在web应用练习中,创建的应用都是手动拷贝到webapps目录下,现在有了Myeclipse工具,它会帮助我们将web应用拷贝到webapps目录下。下面我们就来
阅读全文
摘要:随着Web应用业务需求的增多,动态Web资源的开发变的越来越重要。目前,很多公司都提供了开发动态Web资源的相关技术,其中比较常见的有ASP、PHP、JSP和Servlet等。基于Java的动态Web资源开发,SUN公司提供了Servlet和JSP两种技术。接下来,我们来详细了解Servlet技术。
阅读全文
摘要:JDK Streams — 行云流水般地编码 Streams 简介 JDK 8已经发布好一段时间,在JDK 8中新增了好些开发人员期许的功能;从性能、开发效率上都有提升。也引入了很多全新的API ,如 java.util.stream包下的Stream及其相关 Stream API。 java.ut
阅读全文
摘要:前言Hibernate作为一个成熟的持久层解决方案,通过简单的配置,可以在不修改源码的情况下,无缝的在不同的数据库上运行。尽管如此,使用不同的数据库仍然会出现一些问题,比如本文要讨论的Oracle中的问题。 1. Hibernate无法创建hibernate_sequence的问题错误提示: 问题分
阅读全文
摘要:CKFinder实现文件上传功能 本文使用:jsp整合ckeditor和ckfinder完成在网页上嵌套文本编辑器,并实现图片上传功能。在项目中我们曾经可能都使用过FckEditor文本编辑器,该技术在论坛、互联网的项目中显得尤为重要。但现在最新又出来了个ckEditor,其实我们到官方网站看看就知
阅读全文
摘要:angularJS介绍 AngularJS是完全使用JavaScript编写的客户端技术。同其他历史悠久的Web技术(HTML、CSS和JavaScript)配合使用,使Web应用开发比以往更简单、更快捷。它提供了开发者在现代Web应用中经常要用到的一系列高级功能,例如:解耦应用逻辑、数据模型和视图
阅读全文
摘要:FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。 二、FastDFS的安装和使用 (1)安装准备软件 yum install
阅读全文
摘要:一、组件型注解: Component在类定义之前添加 Component注解,他会被spring容器识别,并转为bean。 Repository对Dao实现类进行注解(特殊的 Component) Service用于对业务逻辑层进行注解,(特殊的 Component) Controller用于控制层
阅读全文
摘要:Ajax能做什么 Ajax是一种异步请求数据的web开发技术,目前主要用于异步,大家都知道,浏览器主线程是单线程的,也就是一次只能干一件事,以Ajax就是让浏览器当主线程完成后去干别的事情,比如发送请求,加载接口数据等等.这个技术通过XMLHttpRequest对象实现,具体的机制大家可以参考浏览器
阅读全文
摘要:我们已看到 AJAX 可被用来创建更多交互性的应用程序。 AJAX Suggest实例 在下面的 AJAX 例子中,我们会演示当用户向一个标准的 HTML 表单中输入数据时网页如何与 web 服务器进行通信。在下面的文本框中输入名字: First Name: Suggestions: 例子解释 -
阅读全文
摘要:在面向对象的编程语言中,这些类是任何应用程序的构建块。如果这些块不牢固,则建筑物(即应用程序)将来将面临艰难时期。 当应用程序范围扩大,或者实现在生产或维护中遇到某些设计问题时,设计不佳的应用程序可能导致团队陷入非常困难的境地。 另一方面,一组精心设计和编写的类可以加快编码过程,同时减少技术负担和相
阅读全文
摘要:互联网应用飞速发展,数据量越来越大,对数据存储访问的性能要求越来越高,单纯依靠存储来提高性能显然已经不够 特别是对于需要运算出来的数据,存储服务压力更大,早期第一时间出现的性能瓶颈也是因为数据存储,例如通过Mysql需要实时获取,股票价格,存储查询都显得特别无力,单纯的Mysql性能无法支持 目前应
阅读全文
摘要:今天小编要跟大家分享的文章是关于开源Web应用的安全测试工具汇总。Web应用安全测试可对Web应用程序执行功能测试,找到尽可能多的安全问题,大大降低黑客入侵几率。 在研究并推荐一些最佳的开源Web应用安全测试工具之前,让我们首先了解一下安全测试的定义、功用和价值。 一、安全测试的定义 安全测试可以提
阅读全文
摘要:JVM为Java程序提供运行时环境,其中一项重要的任务就是管理类和对象的生命周期。类的生命周期从类被加载、连接和初始化开始,到类被卸载结束。当类处于生命周期中时,它的二进制数据位于方法区内,在堆区内还会有一个相应的描述这个类的Class对象。只有当类处于生命周期中时,Java程序才能使用它,比如调用
阅读全文
摘要:一、CSS3 过渡 transition css3的transition允许css的属性值在一定的时间区间内平滑地过渡。这种效果可以在鼠标单击、获得焦点、被点击或对元素任何改变中触发,并圆滑地以动画效果改变CSS的属性值 transition-property:检索或设置对象中的参与过渡的属性 tr
阅读全文
摘要:伪类和伪元素的区别,其实很简单,从字面上就可以理解。它们有一个共同的修饰词“伪”,那么“伪”是什么意思呢?就是假的。所以,伪类就是假的类,伪元素就是假的元素,这就是在字面上它们之间的区别。 定义 伪类: CSS3给出的定义是: The pseudo-class concept is introduc
阅读全文
摘要:今天,我们来学习一下JavaScript语言中的条件分支语句。我们知道JavaScript中的代码默认是顺序执行的,即从上到下默认执行,这种方式我们称之为顺序结构。如果我们通过条件判断,有选择性的执行某段代码,就要用到条件分支语句。JavaScript中的条件分支语句分为:if-else,switc
阅读全文
摘要:Java是一门面向对象的编程语言,主要核心点就是类,Java类具有封装,继承,多态的特性; 在Java中,类里面包含了某类事物的基本属性,将这些属性封装起来,只对外部公开别人可以访问的信息,不想让别人访问的信息,可以设置属性将它隐藏起来,这样就可以对类的属性值进行保护,让别人不可以随意的进行操作修改
阅读全文
摘要:在编程中,我们或多或少的会遇到一些程序异常的情况,为了不影响程序的正常执行,我们需要在程序发生异常的情况下,进行一些操作来防止造成更大的损失。例如在我们平时的除法运算中,被除数是不能为0的,如果为0就会造成异常,同样在计算机程序中,如果除以一个为0的数字,那么这个语句就会是一个错误的语句,这样就会造
阅读全文
摘要:面向对象编程(Object Oriented Programming),是现在许多流行的高级编程语言的一种编程思想,例如现在的Java,Python,c#等。这些都是现在用的人数比较多的编程语言,之所以用的比较多,其中一个原因就是他们都是面向对象的编程语言。 那么什么是面向对象呢,面向对象的前提是需
阅读全文
摘要:Java为我们定义了非常多的异常处理,当程序运行出现问题之后,Java会将异常信息打印出来,我们可以很直观的看到问题的源头和原因,但是在我们开发中,会遇到各式各样的问题,Java原有定义的异常经常会不满足我们的使用,这时候我们就可以自定义一些异常,当程序运行过程中出现某些情况的时候,可以将我们自定义
阅读全文
摘要:在Java中提供了很多的修饰符,修饰符可以用来修饰类,接口,方法,变量的信息;不同的修饰符,可以控制不同的访问权限; 以我们最开始见到的main方法来说:public static void main(String[] args){} public 就是一个修饰符与public类似的修饰符还有def
阅读全文
摘要:多线程是为了能够让计算机资源合理的分配,对于处理不同的任务创建不同的线程进行处理,但是计算机创建一个线程或者销毁一个线程所花费的也是比较昂贵的,有时候需要同时处理的事情比较多,就需要我们频繁的进行线程的创建和销毁,这样花费的时间也是比较多的。为了解决这一问题,我们就可以引用线程池的概念。 所谓线程池
阅读全文
摘要:在Java中我们经常会见到一些基本的数据类型,比如整数类型(int),小数类型(double,float)等,但是Java是一门面向对象的语言,很多的类型都是以对象的形式展现,像这些数据类型也可以有自己的对象;每个类型的对应包装类型为:int-> Integer double->Double flo
阅读全文
摘要:正则表达式是一个字符串,它不仅可以用于表达一个字符串,还可以用于表达一类字符串,表示一类字符串的规则或者格式,它一般被用来检查一个字符串是否符合规定、或者将匹配的子串替换成符合某个规定的另一个子串。正则表达式的优点在于可以用简单的代码展现复杂的规则,缺点为大家写出的正则表达式的正确率比较低。 正则表
阅读全文
摘要:初学者如果要学Java,首先要了解Java开发工具都有哪些。能够熟练的运营Java开发工具才能熟练的做编程开发。那么常用的Java开发工具都有哪些呢? 想要做好Java开发,没有常用的开发工具可不行。而Java初学者往往处于对Java还一知半解的状态,对于Java开发工具的了解也不会太多,常常会为了
阅读全文
摘要:常量与变量是Java当中一个基础的知识点,如果你从零开始学习Java,那么就要了解Java常量与变量的概念。下面小编就给大家简单介绍下Java的常量与变量。 首先我们先来看Java软件开发的常量,软件开发中常量的定义为在程序执行期间其值不能发生变化的数据,它的书写格式为: final 数据类型 常量
阅读全文
摘要:随机飘雪的网页特效我们经常在一些文艺类网站或博客中看到,再配合背景音乐可以更好地营造温馨的氛围。我们先来看看最终运行效果如图所示。 我们先来说明一下该项目要实现的功能主要包含哪些方面: (1) 通过代码来新增一片或多片雪花。 (2) 雪花新增的位置是随机的。 (3) 可以随时开始和暂停雪花的移动。
阅读全文
摘要:正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。搜索模式可用于文本搜索和文本替换。 正则表达式并不是某一门编程语言专用,它是一项独立于任何编程语言的一套文本搜索和匹配规则,目前是
阅读全文
摘要:由于HTML页面都是平面,并没有提供标准的立方体解决方案,就像我们在一张A4纸上不可能绘制出一个标准的立方体,只能通过二维平面的视觉效果来模拟一个立方体效果,如图所示。 毫无疑问,上图中这个立方体只是一个视觉上的3D图像而已,那么我们要利用一个平面图来模拟这个3D图像,必然会使用到Transform
阅读全文
摘要:现如今市面上「端」的形态多种多样,Web、App、小程序等各种端大行其道。 当业务要求我们同时在不同端都有所表现的时候,如果针对不同的端去编写不同的代码,其开发成本显然非常极其的高。因此这个时候,只编写一套代码就能适配到多端的能力,就显得极为需要了 。 正是因为大家对这种「一套代码,多端适配」的需求
阅读全文
摘要:在学习Java的过程中会遇到关于反射技术知识学习,这个技术在学习的过程中有一定的难度,今天就和大家一起研究下反射最重要的一个类Class。 介绍Class类:在学习Java过程中我们知道书写的任何类、接口、枚举、注解等程序经过JDK中的javac命令编译之后都会在指定的硬盘目录下生成对应的class
阅读全文
摘要:Java中的I/O流或者输入/输出流是指数据在本地文件或网络中以流的方式进行传输。新的输入/输出(NIO)库是在JDK1.4版本中引入的。NIO弥补了原来的I/O的不足,它在标准Java代码中提供了高速的、面向块的I/O。原来的I/O库与NIO最重要的区别是数据打包和传输方式的不同,原来的I/O以流
阅读全文
摘要:前面我们已经介绍了代理的好处了,前面写的是静态代理,要手工创建代理类。下面,我们说说它的问题,我们发现,代理类和老板类都实现了一个接口,如果业务繁多,这样的接口会有很多,如果代理的功能是通用的,就需要对每个接口创建相应的代理类,这个叫类爆炸(类太多了),所以Java提供了动态代理,即程序运行时动态创
阅读全文
摘要:CSS用于修饰网页样式,但是,如果希望CSS修饰的样式起作用,就必须在html档中引入CSS样式表。引入样式表的常用方式有三种,即行内式、内嵌式、外链式,具体介绍如下。 1.行内式 行内式也称内联样式,是通过标记的 Istyle属性来设置标记的样式,其基本语法格式如下: <标记名 style= ”属
阅读全文
摘要:一.常量相关1.定义常量 [JavaScript] 纯文本查看 复制代码 ? 1 var a=1; // 错误:"var"定义的"常量"是可变的,在声明一个常量时,该常量在整个程序中都应该是不可变的。 正解: [JavaScript] 纯文本查看 复制代码 ? 1 const a=1 2.给常量赋值
阅读全文
摘要:# WebSocket分析及实践 ## WebSocket产生背景:实时Web应用的窘境 Web 应用的信息交互过程通常是客户端通过浏览器发出一个请求,服务器端接收和审核完请求后进行处理并返回结果给客户端,然后客户端浏览器将信息呈现出来,这种机制对于信息变化不是特别频繁的应用尚能相安无事,但是对于那
阅读全文
摘要:# jQuery自定义插件开发实践 ## JavaScript插件是什么?我们写代码,有一个很重要的原则就是“避免重复造轮子”,我们得看一下是否需要将一部分经常重复的代码抽象出来,写到一个单独的文件中便于以后再次使用。所谓JavaScript插件就是那些已经写好的可以极大提高自己代码质量或者页面展示
阅读全文
摘要:什么是懒加载 懒加载其实就是延迟加载,是一种对网页性能优化的方式,比如当访问一个页面的时候,优先显示可视区域的图片而不一次性加载所有图片,当需要显示的时候再发送图片请求,避免打开网页时加载过多资源。 什么时候用懒加载 当页面中需要一次性载入很多图片的时候,往往都是需要用懒加载的。 懒加载原理 我们都
阅读全文
摘要:# jQuery自定义插件开发实践 ## JavaScript插件是什么?我们写代码,有一个很重要的原则就是“避免重复造轮子”,我们得看一下是否需要将一部分经常重复的代码抽象出来,写到一个单独的文件中便于以后再次使用。所谓JavaScript插件就是那些已经写好的可以极大提高自己代码质量或者页面展示
阅读全文
摘要:下面我们开始介绍实践型的4个优化技巧,先从首屏关键CSS开始。 1. 内联首屏关键CSS(Critical CSS) 性能优化中有一个重要的指标——首次有效绘制(First Meaningful Paint,简称FMP)即指页面的首要内容(primary content)出现在屏幕上的时间。这一指标
阅读全文
摘要:前言 JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一。那么如何在JS中实现继承呢?让我们拭目以待。 JS继承的实现方式 既然要实现继承,那么首先我们得有一个父类,代码如下: [JavaScript] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 1
阅读全文
摘要:一、问题的由来 学懂 JavaScript 语言,一个标志就是理解下面两种写法,可能有不一样的结果。 上面代码中,虽然obj.foo和foo指向同一个函数,但是执行结果可能不一样。请看下面的例子。 这种差异的原因,就在于函数体内部使用了this关键字。很多教科书会告诉你,this指的是函数运行时所在
阅读全文