当前位置: 首页 > news >正文

濮阳做网站的公司有哪些对网站建设展望

濮阳做网站的公司有哪些,对网站建设展望,套模板网站,帝国网站后台编辑器没有了系列文章目录 Java基础知识题(一) Java基础知识题(二) Java基础知识题(三) Java基础知识题(四) Java基础知识题(五) 文章目录 系列文章目录 前言 一 Java的数据连接——JDBC 1. 简述什么是JDBC#xff1f;重点 2. JDBC PreparedStatement比Statement有什么优势重点 2. JDBC PreparedStatement比Statement有什么优势重点 3. 简述什么时候使用CallableStatement重点 二 Hibernate 1. 阐述Hibernate工作原理Hibernate数据持久化?重点 1)创建Configeration类的实例。 2)创建SessionFactory实例 3)调用SessionFactory创建Session的方法 4)通过Session 接口提供的各种方法来操纵数据库访问。 2. 请你简述对Hibernate OR映射的理解?重点 O/R 映射 集合映射 集合类型 映射和描述 关联映射 映射类型 描述 组件映射 映射类型 描述 3. 简述Hibernate数据库标识与主键之间的关系 ? 4. 阐述对于Hibernate的理解一级和二级缓存的作用怎么使用缓存的 5. 谈谈Hibernate与iBatis的区别哪个性能会更高一些重点 6.简述为什么要使用Hibernate 7. 简述Hibernate的核心组件有哪些重点 8. 简述Hibernate相比JDBC有什么优势重点 三 Java分布式服务框架——Dubbo 1. 简述什么是Dubbo 2. 为什么要用Dubbo 3. 简述Dubbo 和 Spring Cloud 有什么区别重点 4. 简述Dubbo都支持什么协议推荐用哪种重点 5. 解释Dubbo需要 Web 容器吗重点 6. 简述Dubbo内置了哪几种服务容器重点 7. 简述Dubbo里面有哪几种节点角色重点 8. 简述Dubbo默认使用什么注册中心 四 Java正则表达式 1. 简述什么是正则表达式Regular Expression ? 2. 简述Java正则表达式字符类 3. 简述Java正则表达式预定义字符类 重点 4. 简述Java正则表达式重复类 重点 五 Java日志 1. 简述Java常用的日志框架 2. 简述Java日志输出级别 重点 3. 编写Java代码实现log4j1集成 重点 六 Java其他 1. 简述对大O符号(big-O notation)的理解 2. 简述Applet和Servlet有什么区别 3. 浏览器和Servlet通信使用的是什么协议 4.解释什么是JSP页面 5. 阐述JSP请求是如何被处理的 前言 本文主要讲解Java当中的JDBC连接Hibwenate、Dubbo、正则表达式、日志等。 一 Java的数据连接——JDBC 1. 简述什么是JDBC重点 JDBC代表Java数据库连接(Java Database Connectivity)它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API换句话说JDBC是用于在Java语言编程中与数据库连接的API。 JDBC库包括通常与数据库使用相关如下面提到的每个任务的API - 连接到数据库 创建SQL或MySQL语句 在数据库中执行SQL或MySQL查询 查看和修改结果记录 从根本上说JDBC是一个规范它提供了一整套接口允许以一种可移植的访问底层数据库API。 Java可以用它来编写不同类型的可执行文件如 - Java应用程序Java AppletJava ServletsJava ServerPages(JSP)企业级JavaBeans(EJB) 所有这些不同的可执行文件都能够使用JDBC驱动程序来访问数据库并用于存储数据到数据库中。 JDBC提供与ODBC相同的功能允许Java程序包含与数据库无关的代码(同样的代码只需要指定使用的数据库类型不需要重修改数据库查询或操作代码)。 //更多请阅读JDBC是什么 -JDBC教程 解释下驱动(Driver)在JDBC中的角色 JDBC驱动提供了特定厂商对JDBC API接口类的实现驱动必须要提供java.sql包下面这些类的实现Connection, Statement, PreparedStatement,CallableStatement, ResultSet和Driver 2. JDBC PreparedStatement比Statement有什么优势重点 1、相对比较安全可以防止sql注入 2、有预编译功能相同操作批量数据效率较高 PreparedStatement 是预编译 使用Statement时 sql 中要进行很多的单引号拼接字符串首先是容易出错也比较麻烦还有就是存在sql 注入问题这是从安全方面说的。 PreparedStatement 传参数时候用 了占位符 “”很好的解决了以上Statement的问题。我所体会到得的就是这些。 PreparedStatement是在执行前先输入sql语句Statement正好相反是在执行的时候传入sql语句的。 这样的区别在于PreparedStatement可以在传入sql后执行语句前给参数赋值避免了因普通的拼接sql字符串语句所带来的安全问题而且准备sql和执行sql是在两个语句里面完成的也提高了语句执行的效率。 3. 简述什么时候使用CallableStatement重点 CallableStatement用来执行存储过程。存储过程是由数据库存储和提供的。存储过程可以接受输入参数也可以有返回结果。非常鼓励使用存储过程因为它提供了安全性和模块化。准备一个CallableStatement的方法是 CallableStament.prepareCall(); CallableStatement的所有超级接口为PreparedStatement、Statement、Wrapper。其中继承自PreparedStatement接口。CallableStatement主要是调用数据库中的存储过程。在使用CallableStatement时可以接收存储过程的返回值。CallableStatement对象为所有的DBMS提供了一种标准的形式去调用数据库中已存在的存储过程。对数据库中存储过程的调用是CallableStatement对象所含的内容。有两种形式1形式带结果参数2形式不带结果参数。结果参数是一种输出参数(存储过程中的输出OUT参数)是存储过程的返回值。两种形式都有带有数量可变的输入、输出、输入和输出的参数。用问号做占位符。 形式带结果参数语法格式 { ? call 存储过程名[(?, ?, ?, ...)] } ; 形式不带结果参数语法格式 { call 存储过程名[(?, ?, ?, ...)] } ; PS方括号里面的内容可有可无。 CallableStatement接口中常用的方法。 1getInt(int parameterIndex)、getInt(String parameterName)、还有getString、getBigDecimal、getString、getDate、getURL等等都类似和PreparedStatement与Statement中的用法类似。 2registerOutParameter(int parameterIndex, int sqlType):按顺序位置parameterIndex将OUT参数注册为JDBC类型sqlType。 3wasNull():查询最后一个读取的OUT参数是否为SQL Null。等等还有很多方法感兴趣的读者可以自行查阅JDK API文档。 二 Hibernate 1. 阐述Hibernate工作原理Hibernate数据持久化?重点 1.Hibernate 的初始化. 读取Hibernate 的配置信息-〉创建SessionFactory 1)创建Configeration类的实例。 它的构造方法将配置信息(Hibernate config.xml)读入到内存。 一个Configeration 实例代表Hibernate 所有Java类到Sql数据库映射的集合。 2)创建SessionFactory实例 把Configeration 对象中的所有配置信息拷贝到SessionFactory的缓存中。 SessionFactory的实例代表一个数据库存储员源创建后不再与Configeration 对象关联。 缓存(cache):指Java对象的属性(通常是一些集合类型的属性占用内存空间。 SessionFactory的缓存中Hibernate 配置信息。OR映射元数据。 缓存大重量级对象 小轻量级对象 3)调用SessionFactory创建Session的方法 1】用户自行提供JDBC连接。 Connection condataSource.getConnection(); Session ssessionFactory.openSession(con); 2】让SessionFactory提供连接 Session ssessionFactory.openSession(); 4)通过Session 接口提供的各种方法来操纵数据库访问。 2. 请你简述对Hibernate OR映射的理解?重点 O/R 映射 目前为止我们已经通过应用 Hibernate 见识过十分基础的 O/R 映射了但是还有三个更加重要的有关映射的话题需要我们更详细的探讨。这三个话题是集合的映射实体类之间的关联映射以及组件映射。 集合映射 如果一个实例或者类中有特定变量的值的集合那么我们可以应用 Java 中的任何的可用的接口来映射这些值。Hibernate 可以保存 java.util.Map, java.util.Set, java.util.SortedMap, java.util.SortedSet, java.util.List和其它持续的实例或者值的任何数组的实例。 集合类型 映射和描述 java.util.Set 它和 \ 元素匹配并且用 java.util.HashSet 初始化。 java.util.SortedSet 它和 \ 元素匹配并且用 java.util.TreeSet 初始化。sort 属性可以设置成比较器或者自然排序。 java.util.List 它和 \ 元素匹配并且用 java.util.ArrayList 初始化。 java.util.Collection 它和 \ 或者 \ 元素匹配以及用 java.util.ArrayList 初始化。 java.util.Map 它和 \ 元素匹配并且用 java.util.HashMap 初始化。 java.util.SortedMap) 它和 \ 元素匹配并且用 java.util.TreeMap 初始化。sort 属性可以设置成比较器或者 自然排序。 对于 Java 的原始数值 Hibernate 采用支持数组对于 Java 的其它数值 Hibernate 采用支持数组。然而它们很少被应用因此我也就不在本指导中讨论它们。 如果你想要映射一个用户定义的集合接口而这个接口不是 Hibernate 直接支持的话那么你需要告诉 Hibernate 你定义的这个集合的语法这个很难操作而且不推荐使用。 关联映射 实体类之间的关联映射以及表之间的关系是 ORM 的灵魂之处。对象间的关系的子集可以用下列四种方式解释。关联映射可以是单向的也可以是双向的。 映射类型 描述 Many-to-One 使用 Hibernate 映射多对一关系 One-to-One 使用 Hibernate 映射一对一关系 One-to-Many 使用 Hibernate 映射一对多关系 Many-to-Many 使用 Hibernate 映射多对多关系 组件映射 作为变量的一员实体类很可能和其它类具有相关关系。如果引用的类没有自己的生命周期并且完全依靠于拥有它的那个实体类的生命周期的话那么这个引用类因此就可以叫做组件类。 组件集合的映射很可能和正常集合的映射相似只会有很少的设置上的不同。我们可以在例子中看看这两种映射。 映射类型 描述 Component Mappings 类的映射对于作为变量的一员的另外的类具有参考作用 3. 简述Hibernate数据库标识与主键之间的关系 ? Hibernate采用对象标识符,也就是通常我们所说的OID来创建对象和数据库表里记录的对应关系,对象的OID和表里的主键对应,所以说OID是非常重要的,不应该让程序来给它赋值.数据库区分同一表的不同记录是用主键来区分.数据库中的主键最重要的3个基本要素就是不允许为null,不允许有重复值,主键永远不会改变.所以通常我们设计表都会设计主键的值为自动增加,没有业务逻辑含义的一组数字,当然针对每个数据库,设置的方法也不同.但是都非常简单.加一个属性就可以了. 而JAVA区分同一类的不同对象是用内存地址,在JAVA语言中判断两个对象的引用变量是否想相等,有以下两种比较方式.1)用运算符””比较内存地址,此外还可以用Object的equals方法也是按内存地址比较.2)比较两个对象的值是否相同,JAVA中的一些覆盖了Object类的equals方法实现比较合适.例如String和Date类,还有JAVA包装类.如果是String.equals(String)这种方式的比较就是比较这两个String的值的.如果是Object原是的equals方法就是比较地址了.这点很容易混淆. 通常,为了包装Hibernate的OID的唯一性和不可变性,由Hibernate或者底层数据库来给OID赋值比较合理.因此我们在编程的时候最好把持久化类的OID设置为private或者protected类型,这样可以防止JAVA程序随便更改OID.而OID的get方法我们还是要设置为public类型,这样方便我们读取. 在对象-关系映射文件里的 increment 代理主键,hibernate自动以递增的方式来生成标识符,每次增加1. identity 代理主键,由底层数据库生成标识符,前提就是底层的数据库支持自动增长的类型. sequence 代理主键,hibernate根据底层数据库生成的标识符,前提是底层数据库支持序列 hilo 代理主键,hibernate根据higg/low算法来生成的标识符,把特定表的字段作为high的值,默认选用hibernate_unique_key表的next_hi字段 native 代理主键,根据底层数据库对自动生成标识符的支持能力,还选择identity,sequence,或hilo. uuid.hex 代理主键,hibernate采用128位的UUID算法生成标识符,UUID算法能够在网络环境下生成唯一字符串标识符.不过字符串要比数据占用的空间多的多.所以不流行使用. assigned 适用于自然主键,由JAVA应用程序负责生成标识符,为了能让JAVA设置OID.不能吧setId方法设置为非公共类型了,这种方式也尽量避免使用. 4. 阐述对于Hibernate的理解一级和二级缓存的作用怎么使用缓存的 Hibernate是一个开发的对象关系映射框架ORM。它对JDBC进行了非常对象封装Hibernate允许程序员采用面向对象的方式来操作关系数据库。 Hibernate的优点 1、程序更加面向对象 2、提高了生产率 3、方便移植 4、无入侵性。 缺点 1、效率比JDBC略差 2、不适合批量操作 3、只能配置一种关联关系 Hibernate有四种查询方式 1、get、load方法根据id号查询对象。 2、Hibernate query language 3、标准查询语言 4、通过sql查询 Hibernage工作原理 1、配置hibernate对象关系映射文件、启动服务器 2、服务器通过实例化Configuration对象读取hibernate.cfg.xml文件的配置内容并根据相关的需求建好表以及表之间的映射关系。 3、通过实例化的Configuration对象建立SeesionFactory实例通过SessionFactory实例创建Session对象。 4、通过Seesion对象完成数据库的增删改查操作。 Hibernate中的状态转移 临时状态transient 1、不处于session缓存中 2、数据库中没有对象记录 java是如何进入临时状态的1、通过new语句创建一个对象时。2、刚调用session的delete方法时从seesion缓存中删除一个对象时。 持久化状态(persisted) 1、处于session缓存中 2、持久化对象数据库中没有对象记录 3、seesion在特定的时刻会保存两者同步 java如何进入持久化状态1、seesion的save()方法。2、seesion的load().get()方法返回的对象。3、seesion的find()方法返回的list集合中存放的对象。4、Session的update().save()方法。 流离状态detached 1、不再位于session缓存中 2、游离对象由持久化状态转变而来数据库中还没有相应记录。 java如何进入流离状态1、Session的close()。Session的evict()方法从缓存中删除一个对象。 Hibernate中的缓存主要有Session缓存一级缓存和SessionFactory缓存二级缓存一般由第三方提供。 5. 谈谈Hibernate与iBatis的区别哪个性能会更高一些重点 1、Hibernate偏向于对象的操作达到数据库相关操作的目的而ibatis更偏向于sql语句的优化。 2、Hibernate的使用的查询语句是自己的hql而ibatis则是标准的sql语句。 3、Hibernate相对复杂不易学习ibatis类似sql语句简单易学。 性能方面 1、如果系统数据处理量巨大性能要求极为苛刻时往往需要人工编写高性能的sql语句或存错过程此时ibatis具有更好的可控性因此性能优于Hibernate。 2、同样的需求下由于hibernate可以自动生成hql语句而ibatis需要手动写sql语句此时采用Hibernate的效率高于ibatis。 6.简述为什么要使用Hibernate 对JDBC访问数据库的代码做了封装大大简化了数据访问层繁琐的重复性代码。 .Hibernate是一个基于JDBC的主流持久化框架是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作 .Hibernate使用Java反射机制而不是字节码增强程序来实现透明性。 .Hibernate的性能非常好因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库从一对一到多对多的各种复杂关系。 7. 简述Hibernate的核心组件有哪些重点 Hibernate的核心组件包括 -Configuration用于构建Hibernate框架的配置对象包括Hibernate的配置信息和映射文件信息。 -SessionFactory用于创建和管理Hibernate的Session对象。 -SessionHibernate的核心接口代表着一次会话提供了持久化操作和事务管理的API。 -TransactionHibernate的事务接口提供了事务管理的API。 -Query和Criteria用于进行数据查询的API。 8. 简述Hibernate相比JDBC有什么优势重点 Hibernate 相对于 JDBC 的优点如下 1 清晰可读的代码使用 hibernate 有助于消除大量基于 JDBC API 的样板代码从而使代码看起来更清晰可读。 2 HQLHibernate Query Language Hibernate 提供的 HQL 更接近 Java本质上是面向对象的。这有助于减轻开发人员编写独立于数据库的查询的负担。在 JDBC 中情况并非如此。开发人员必须知道特定于数据库的代码。 3 事务管理 JDBC 不支持隐式事务管理。开发人员可以使用提交和回滚方法编写事务管理代码。而 Hibernate 隐式提供了此功能。 异常处理 Hibernate 包装 JDBC 异常并抛出未经检查的异常如 JDBCException 或 HibernateException。这与内置的事务管理系统一起帮助开发人员避免编写多个 try-catch 块来处理异常。在 JDBC 的情况下它抛出一个名为 SQLException 的已检查异常从而要求开发人员编写 try-catch 块来在编译时处理此异常。 4 特殊功能 Hibernate 支持 OOP 功能如继承、关联还支持集合。这些在 JDBC 中不可用 三 Java分布式服务框架——Dubbo 1. 简述什么是Dubbo Dubbo是一个分布式服务框架致力于提供高性能和透明化的RPC远程服务调用方案以及SOA服务治理方案。简单的说dubbo就是个服务框架如果没有分布式的需求其实是不需要用的只有在分布式的时候才有dubbo这样的分布式服务框架的需求并且本质上是个服务调用的东东说白了就是个远程服务调用的分布式框架告别Web Service模式中的WSdl以服务者与消费者的方式在dubbo上注册 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装包括多种线程模型序列化以及“请求-响应”模式的信息交换方式。 集群容错: 提供基于接口方法的透明远程过程调用包括多协议支持以及软负载均衡失败容错地址路由动态配置等集群支持。 自动发现: 基于注册中心目录服务使服务消费方能动态的查找服务提供方使地址透明使服务提供方可以平滑增加或减少机器。 2. 为什么要用Dubbo Dubbo是阿里巴巴开源的一款高性能、轻量级的Java RPC框架它主要解决了分布式服务治理的问题。使用Dubbo可以快速创建一个稳定、高效的服务远程调用框架。下面是为什么要用Dubbo的几个原因 分布式远程调用 随着业务的发展我们通常需要将应用系统分别部署在不同的机器上这时需要在不同的应用之间进行远程调用。Dubbo为服务提供者和服务消费者提供了高效的远程通讯能力提供了不同协议的支持和负载均衡等机制保证了远程调用的效率和稳定性。 服务治理 对于分布式系统来说必须解决服务治理的问题管理动态加入或退出的服务和避免服务的雪崩现象。Dubbo提供了注册中心、负载均衡、容错和路由等功能为服务提供了更完善的治理功能。 水平扩展 Dubbo对服务提供了良好的扩展性可以无缝地扩展业务功能和服务提供方的数量。同时通过服务分组、按权重自动Dubbo等负载均衡机制可以优化服务提供方的扩容策略保证了应用在不断扩展的同时能够保持系统的稳定性和性能。 易于集成 Dubbo为应用提供了完善的API和SPI支持Spring、Spring Boot等各种应用框架的集成。此外Dubbo还提供了REST及异步API等功能可以更加方便地进行系统集成。 由于Dubbo提供了全面的远程调用、服务治理、水平扩展以及集成方面的功能支持使得它成为了解决分布式系统中服务调用的重要框架是企业级应用开发必备的技术之一。 3. 简述Dubbo 和 Spring Cloud 有什么区别重点 SpringCloud与Dubbo的区别 两者都是现在主流的微服务框架但却存在不少差异 初始定位不同SpringCloud定位为微服务架构下的一站式解决方案Dubbo 是 SOA 时代的产物它的关注点主要在于服务的调用和治理 生态环境不同SpringCloud依托于Spring平台具备更加完善的生态体系而Dubbo一开始只是做RPC远程调用生态相对匮乏现在逐渐丰富起来。 调用方式SpringCloud是采用Http协议做远程调用接口一般是Rest风格比较灵活Dubbo是采用Dubbo协议接口一般是Java的Service接口格式固定。但调用时采用Netty的NIO方式性能较好。 组件差异比较多例如SpringCloud注册中心一般用Eureka而Dubbo用的是Zookeeper SpringCloud生态丰富功能完善更像是品牌机Dubbo则相对灵活可定制性强更像是组装机。相关资料 SpringCloudSpring公司开源的微服务框架SpirngCloud 定位为微服务架构下的一站式解决方案。 Dubbo阿里巴巴开源的RPC框架Dubbo 是 SOA 时代的产物它的关注点主要在于服务的调用流量分发、流量监控和熔断 4. 简述Dubbo都支持什么协议推荐用哪种重点 dubbo://推荐 rmi:// hessian:// http:// webservice:// thrift:// memcached:// redis:// rest:// 5. 解释Dubbo需要 Web 容器吗重点 Dubbo服务容器是一个standalone的启动程序因为后台服务不需要Tomcat或JBoss等Web容器的功能如果硬要用Web容器去加载服务提供方增加复杂性也浪费资源。 服务容器只是一个简单的Main方法并加载一个简单的Spring容器用于暴露服务。 服务容器的加载内容可以扩展内置了spring, jetty, log4j等加载可通过Container扩展点进行扩展参见Container Spring Container 自动加载META-INF/spring目录下的所有Spring配置。 6. 简述Dubbo内置了哪几种服务容器重点 Spring Container Jetty Container Log4j Container 7. 简述Dubbo里面有哪几种节点角色重点 Dubbo是一个分布式开发框架 Provider: 暴露服务的服务提供方。 Consumer: 调用远程服务的服务消费方。 Registry: 服务注册与发现的注册中心。 Monitor: 统计服务的调用次调和调用时间的监控中心。 Container: 服务运行容器。 8. 简述Dubbo默认使用什么注册中心 推荐使用 Zookeeper 作为注册中心还有 Redis、Multicast、Simple 注册中心但不推荐。 四 Java正则表达式 1. 简述什么是正则表达式Regular Expression ? 正则表达式就是一个验证字符串格式是否满足要求的字符串。 使用一个字符串匹配一组字符串,这个字符串就是正则表达式(模式) 2. 简述Java正则表达式字符类 a 字符a [abc] 匹配a、b、c [^abc] 任何字符除了 a、b 或 c否定 [a-zA-Z] a 到 z 或 A 到 Z两头的字母包括在内范围 [a-d[m-p]] a 到 d 或 m 到 p[a-dm-p]并集 [a-z[def]] d、e 或 f交集 [a-z[ ^bc]] a 到 z除了 b 和 c[ad-z]减去 [a-z[ ^m-p]] a 到 z而非 m 到 p[a-lq-z]减去 3. 简述Java正则表达式预定义字符类 重点 . 任意字符与行结束符可能匹配也可能不匹配 \d 数字[0-9] \w 单词字符[a-zA-Z_0-9] ^ 行开头 $ 行结尾 X? 一次或0次 X* 0次或多次包括1次 X 一次或多次 X{n} 恰好n次 X{n,} 至少n次 X{n,m} 至少n次不超过m次 4. 简述Java正则表达式重复类 重点 * 重复零次或更多次 重复一次或更多次 ? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次 五 Java日志 1. 简述Java常用的日志框架 1 Java Logging APIOracle—— Java默认的日志框架 2 Log4jApache——开源日志框架 3 LogbackLogback Project——开源项目被设计成Log4j版本1的后续版本 4 tinylogtinylog——轻量级开源logger 2. 简述Java日志输出级别 重点 java中⽇志级别有7 个级别 severe、Warning、info、config、fine、finer、finest。 默认情况只记录前三个级别。 另外可以使⽤log4j定义的8个级别的log (除去OFF和ALL可以说分为6个级别)优先级从高到低依次为 OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。 log4j规定了默认的几个级别trace 这里要说明一下 1级别之间是包含的关系意思是如果你设置日志级别是trace则大于等于这个级别的日志都会输出。 2基本上默认的级别没多大区别就是一个默认的设定。你可以通过它的API自己定义级别。你也可以随意调用这些方法不过你要在配置文件里面好好处理了否则就起不到日志的作用了而且也不易读相当于一个规范你要完全定义一套也可以不用没多大必要。 ALL最低等级的用于打开所有日志记录。 TRACE追踪 就是程序推进一下你就可以写个trace输出所以trace应该会特别多不过没关系我们可以设置最低日志级别不让他输出。 DEBUG 指出细粒度信息事件对调试应用程序是非常有帮助的主要用于开发过程中打印一些运行信息。 INFO 消息在粗粒度级别上突出强调应用程序的运行过程。打印一些你感兴趣的或者重要的信息这个可以用于生产环境中输出程序运行的一些重要信息但是不能滥用避免打印过多的日志。 WARN 表明会出现潜在错误的情形有些信息不是错误信息但是也要给程序员的一些提示。 ERROR 指出虽然发生错误事件但仍然不影响系统的继续运行。打印错误和异常信息如果不想输出太多的日志可以使用这个级别。 FATAL 指出每个严重的错误事件将会导致应用程序的退出。这个级别比较高了。重大错误这种级别你可以直接停止程序了。 OFF 最高等级的用于关闭所有日志记录。 3. 编写Java代码实现log4j1集成 重点 Apache的一个开放源代码项目通过使用Log4j我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等用户也可以控制每一条日志的输出格式通过定义每一条日志信息的级别用户能够更加细致地控制日志的生成过程。这些可以通过一个 配置文件来灵活地进行配置而不需要修改程序代码 导入maven dependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion1.2.17/version/dependency 在resources同级创建并设置log4j.properties \### 设置###log4j.rootLogger debug,stdout,D,E\### 输出信息到控制抬 ###log4j.appender.stdout org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target System.outlog4j.appender.stdout.layout org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n\### 输出DEBUG 级别以上的日志到E://logs/error.log ###log4j.appender.D org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File E://logs/log.loglog4j.appender.D.Append truelog4j.appender.D.Threshold DEBUGlog4j.appender.D.layout org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n\### 输出ERROR 级别以上的日志到E://logs/error.log ###log4j.appender.E org.apache.log4j.DailyRollingFileAppenderlog4j.appender.E.File E://logs/error.loglog4j.appender.E.Append truelog4j.appender.E.Threshold ERRORlog4j.appender.E.layout org.apache.log4j.PatternLayoutlog4j.appendeE.layout.ConversionPattern %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n设置日志内容import org.apache.log4j.Logger;public class TestLog4j {private static Logger logger Logger.getLogger(TestLog4j.class);public static void main(String[] args) {// 记录debug级别的信息logger.debug(This is debug message.);// 记录info级别的信息logger.info(This is info message.);// 记录error级别的信息logger.error(This is error message.);}} 输出结果 首先是控制台的信息 [DEBUG] 2021-06-23 12:00:46,717 method:com.middleware.test.log.TestLog4j.main(TestLog4j.java:11) This is debug message. [INFO ] 2021-06-23 12:00:46,719 method:com.middleware.test.log.TestLog4j.main(TestLog4j.java:13) This is info message. [ERROR] 2021-06-23 12:00:46,719 method:com.middleware.test.log.TestLog4j.main(TestLog4j.java:15) This is error message. 六 Java其他 1. 简述对大O符号(big-O notation)的理解 大O符号描述了当数据结构里面的元素增加的时候算法的规模或者是性能在最坏的场景下有多么好。 大O符号也可用来描述其他的行为比如内存消耗。因为集合类实际上是数据结构我们一般使用大O符号基于时间内存和性能来选择最好的实现。大O符号可以对大量数据的性能给出一个很好的说明。 同时大O符号表示一个程序运行时所需要的渐进时间复杂度上界。 其函数表示是 对于函数f(n),g(n),如果存在一个常数c使得f(n)c*g(n),则f(n)O(g(n)); 大O描述当数据结构中的元素增加时算法的规模和性能在最坏情景下有多好。 大O还可以描述其它行为比如内存消耗。因为集合类实际上是数据结构因此我们一般使用大O符号基于时间内存性能选择最好的实现。大O符号可以对大量数据性能给予一个很好的说明。 2. 简述Applet和Servlet有什么区别 Applet是运行在客户端主机的浏览器上的客户端Java程序。而Servlet是运行在web服务器上的服务端的组件。applet可以使用用户界面类而Servlet没有用户界面相反Servlet是等待客户端的HTTP请求然后为请求产生响应 3. 浏览器和Servlet通信使用的是什么协议 浏览器和Servlet通信使用的是HTTP协议 作用 规范了浏览器和服务器的数据交互 HTTP协议特点 简单快速客户向服务器请求服务时只需传送请求方法和路径。 请求方法常用的有 GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于 HTTP 协议简单使得 HTTP 服务器的程序规模小因而通信速度很快 灵活HTTP 允许传输任意类型的数据对象。正在传输的类型由Content-Type 加以标记。 无连接无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求并收到客户的应答后即断开连接。采用这种方式可以节省传输时间 无状态HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息则它必须重传这样可能导致每次连接传送的数据量增大。另一方面在服务器不需要先前信息时它的应答就较快。 支持 B/S 及 C/S 模式。 4.解释什么是JSP页面 JSP页面是一种包含了静态数据和JSP元素两种类型的文本的文本文档。静态数据可以用任何基于文本的格式来表示比如HTML或者XML。JSP是一种混合了静态内容和动态产生的内容的技术 JSP页面本质上是一个Servlet程序第一次访问JSP页面时(运行Tomcat服务器后在浏览器地址栏输入路径)Tomcat服务器会将此JSP页面翻译成为一个Java源文件并对其进行编译成为.class字节码文件(一个.java一个.class) 5. 阐述JSP请求是如何被处理的 浏览器首先要请求一个以.jsp扩展名结尾的页面发起JSP请求然后Web服务器读取这个请求使用JSP编译器把JSP页面转化成一个Servlet类。需要注意的是只有当第一次请求页面或者是JSP文件发生改变的时候JSP文件才会被编译然后服务器调用servlet类处理浏览器的请求。一旦请求执行结束servlet会把响应发送给客户端 总结 以上就是今天的内容~ 欢迎大家点赞收藏⭐转发 如有问题、建议请您在评论区留言哦。 最后转载请注明出处
http://www.sadfv.cn/news/156852/

相关文章:

  • 网站怎么添加流量锐酷网站建设教程
  • 网站建设专贵州网站建设服务平台
  • 扫码员在哪个网站可以做无极招工招聘信息
  • 怎么制作网站搜索窗口胶东国际机场建设有限公司网站
  • 如何优化网站tkd网站项目分析怎么做 方法有哪些
  • 怎样开发自己的app系统优化有什么用
  • 语言做网站西八里庄网站建设
  • 男女明星直接做的视频网站注册一个网站要多少钱
  • 小公司做网站的实力如何选网站服务器
  • 外贸网站如何传产品企业做网站用什么建站系统
  • 企业网站建设开发怎么做营销推广方案
  • 零售客户电商网站wordpress ss
  • 睢宁网站建设xzqjwl广州网络引流公司
  • 怎样查看网站关键词企业工商信息查询app
  • 做网站违法吗wordpress速度很慢
  • 工信部网站备案查通知wordpress产品
  • 青岛网站集约化管理平台可以做微信推送的网站
  • 福田公司门口网站seo诊断优化分析该怎么做
  • 贵阳网站制作企业杭州的网站建设
  • 广东网站建设系统百度推广怎么联系
  • 哈尔滨网站制作公司有哪些青岛网站建设商家
  • 台商区住房和建设网站wordpress 考试插件
  • c#网站开发+pdf做网站如何使用数据库
  • 评级网站怎么做郑州做营销型网站
  • 网站seo基础建设网站需要什么技术
  • 网站更新文章上海智能网站建设公司
  • dede 更新网站地图学校网站建设开题报告书
  • 绍兴网站建设方案书杭州网站建站公司
  • 百度蜘蛛站长服务平台番禺开发网站费用
  • 交互网站怎么做搭建网页视频教程