WebService与Socket的区别(两种通信的方式) (1) Socket是基于TCP/IP的传输层协议。 Webservice是基于HTTP协议传输数据,http是基于tcp的应用层协议。 Webservice采用了基于http的soap协议传输数据。 (2)Socket接口通过流传输,不支持面向对象。 Webservice 接口支持面向对象,最终webservice将对象进行序列化后通过流传输。 Webservice采用soap协议进行通信,不需专门针对数据流的发送和接收进行处理,是一种跨平台的面向对象远程调用技术。 (3)Socket适用于高性能大数据的传输,传输的数据需要手动处理,socket通信的接口协议需要自定义。
String、StringBuffer、StringBuilder之间的区别 String:字符长度是固定的。 StringBuffer/StringBuilder:字符长度是可变的。 StringBuffer:安全的,但效率较低一些。 StringBuilder:不安全的,但效率较高一些。 StringBuffer和StringBuilder兼容。
与Equals的区别 A: a:基本类型 比较的是基本类型的值 b:引用类型 比较的是引用类型的地址值 B:equals() 只能比较引用类型。 默认比较地址值。
servlet的生命周期 实例化: Server容器Tomcat创建Servlet; 初始化: 该容器调用init()方法,调用1次; 请求处理: 如果请求Servlet,则容器调用service()方法,调用多次; 服务终止: 销毁实例之前调用destroy()方法,调用1次.
简述List、Set、Map集合的区别 List 有序(存入和取出的顺序一致),元素可重复 Set 无序的 元素唯一 Map中的每一个元素包含一个键对象和值对象,它们成对出现。键对象不能重复,值对象可以重复。
重载和重写的区别 方法重写: 子类中出现和父类中一模一样的方法声明的方法。 方法重载: 同一个类中,出现方法名相同,参数列表不同的方法。 跟返回值无关。 重载可以改变返回值类型,因为他跟返回值无关。
Jsp的四大作用域和九大内置对象 对象名 对应的类型 功能描述 request HttpServletRequest 请求域, 代表请求对象 response HttpServletResponse 代表响应对象 out JspWriter 代表有缓存的打印流对象 session HttpSession 会话域, 会话对象 application ServletContext 上下文域, 上下文对象 config ServletConfig 配置对象 exception Throwable 异常对象 page this 当前的Servlet对象 pageContext PageContext 页面域, 代表当前的页面上下文
JDBC、Hibernate的区别 从层次上看,JDBC是较底层的持久层操作方式,而Hibernate和MyBatis都是在JDBC的基础上进行了封装使其更加方便程序员对持久层的操作。 从功能上看,JDBC就是简单的建立数据库连接,然后创建statement,将sql语句传给statement去执行,如果是有返回结果的查询语句,会将查询结果放到ResultSet对象中,通过对ResultSet对象的遍历操作来获取数据;Hibernate是将数据库中的数据表映射为持久层的java对象,实现数据表的完整性控制;MyBatis是将sql语句中的输入参数和输出参数映射为java对象,放弃了对数据表的完整性控制,但是获得了更灵活和响应性能更快的优势。 从使用上看,如果进行底层编程,而且对性能要求极高的话,应该采用JDBC的方式;如果要对数据库进行完整性控制的话建议使用Hibernate;如果要灵活使用sql语句的话建议采用MyBatis框架。
线程池,线程的创建,同步 线程池: 一个用来创建和管理线程对象的容器。 多线程有两种实现,分别是: 1,继承Thread类 自定义类继承Thread类,在类中重写run()方法,测试类中创建自定义类对象,并调用start()方法. 2,实现Runnable接口 自定义类实现Runnable接口,重写run()方法,测试类中创建自定义对象. 创建Thread对象,把自定义对象作为构造参数传递。调用Thread类的start()方法。 线程同步方式: 1.synchronized. 2.给指定的对象加锁.
什么是事务?事务的特性 在一个业务操作中,要么所有的SQL语句全部执行成功,要么回滚全部失败 原子性: 一个事务里面sql不可分离,要么一起执行成功,要么一起失败。 一致性: 一个事务可以让数据库从一个一致性到另一个一致性。例如:转账前后总额不变的 隔离性: 多个事务的并发操作应该相互隔离. 持久性: 一个事务一旦提交(commit),永久保存下来。
谈一下& 和&&的区别 &:有false则false &&:和&的结果一样,但是具有短路效果。左边有false,右边不执行。
阐述 final、finally、finalize 的区别 final:是最终的意思,用于修饰类、变量、和方法。修饰类的时候,类是最终类,不可以被继承。 修饰变量的时候,变量为常量,不可以被改变。修饰方法的时候,方法不能被重写。 finally:是异常处理的一部分,它里面的代码永远会执行(前提:jvm没退出),一般用于释放资源。 finalize:是object类的一个方法,用于垃圾处理。
JSP 和 Servlet 区别 JSP在静态HTML内容中嵌入Java代码,Java代码被动态执行后生成HTML内容 Servlet在Java代码中通过HttpServletResponse对象动态输出HTML内容
java的基本数据类型有哪些 byte short int long double float char boolean
转发重定向的区别 转发在服务器端完成的;重定向是在客户端完成的 转发的速度快;重定向速度慢 转发的是同一次请求;重定向是两次不同请求 转发不会执行转发后的代码;重定向会执行重定向之后的代码 转发地址栏没有变化;重定向地址栏有变化 转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成
Mysql支持的数据类型有哪些 数值数据类型、日期/时间类型、字符串类型
Oracle跟mysql分页的区别 Oracle 分页 (利用自带的rownum) 计算参数为 开始序号(startNum) , 结束序号 (endNum) 例如:查询第20行到第30行的数据 select * from(select rownum id, t_customer.* from t_customer where rownum <= 30 )where id >= 20; MySQL 分页 (利用LIMIT关键字) 计算参数为 开始序号(startNum),要查的总条数 (totalNum) 例如:取数据库中的前10行数据 select * from t_customer limit 0,9;
java常用的设计模式有哪些 MVC是一个很常用的程序开发设计模式, M-Model(模型):封装应用程序的状态; V-View(视图):表示用户界面; C-Controller(控制器):对用户的输入作出反应,创建并设置模型。
如何确保接口的安全性 专线、限定IP、参数校验、md5、加密。
cookie和session的区别 一、cookie与session的区别 cookie保存在客户端,未设置存储时间的cookie为会话cookie保存在浏览器的进程开辟的内存中,当浏览器关闭后会话cookie也会被删除;设置了存储时间的cookie保存在用户设备的磁盘中直到过期。 session保存在服务器端,存储在IIS的进程开辟的内存中。用于保存用户数据 二、cookie与session的联系 当服务器端生成一个session时就会向客户端发送一个cookie保存在客户端,这个cookie保存的是session的sessionId。这样才能保证客户端发起请求后客户端已经登录的用户能够与服务器端成千上万的session中准确匹配到已经保存了该用户信息的session,同时也能够确保不同页面之间传值时的正确匹配。
TCP和UDP区别 TCP协议特点 面向连接的协议 通过三次握手建立连接。 通过四次挥手断开连接 发送数据大小没有限制 基于IO流传输数据。 因为面向连接,是可靠协议但速度慢。 UDP协议特点 面向无连接。 只管发送不确认对方是否收到。 发送的数据大小限制在64k 基于数据报传输数据。 因为面向无连接协议,是不可靠协议但速度快。
200,404,500,304状态码分别表示什么 200 服务器响应成功 302 实现页面跳转的状态码 304 使用浏览器的缓存 404 找不到指定的资源 500 服务器内部出错
数据库优化方案 建立索引 数据库优化第一步就是建立合理的索引,这也是最初级的优化,也是DBA常用的优化方案!MySql索引类型有:普通索引,主键索引,唯一索引,组合索引! 优化SQL语句 从业务角度,优化SQL语句;这里给大家分享一个例子,查询三个小时内,未处理的订单;使用一条SQL语句的效率要远远低于使用18条SQL语句,每条SQL语句搜取10分钟; 优化表结构 能用小字段类型,就尽量用小字段类型;如能用short,就不要用int;能用数字类型,就不要用字符串类型,举个例子,一般的订单号都是数字,很少有字母的。 拆分表 表的拆分一般分为横向拆分和纵向拆分,横向拆分不改变表结构,重复多建立几张表。这种优化方式类似于上文提到的SQL语句优化的例子;另一种是纵向拆分,两个表通过字段相关联。 分库 分库是数据库优化的一种较高级手段,实际上是横向分表的衍生;一般需要有中间件或者客户端做一些工作实现,这里给大家推荐两个分库的代码:一个是mycat,基于阿里coba开源的数据库中间件,很容易实现分库分表、主从切换功能。另一个当当网开源的一个库 sharding-jdbc
谈谈你对mvc的理解? MVC是Model—View—Controler的简称。即模型—视图—控制器。MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。 MVC中的模型、视图、控制器它们分别担负着不同的任务。 视图: 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。视图不进行任何业务逻辑处理。 模型: 模型表示业务数据和业务处理。相当于JavaBean。一个模型能为多个视图提供数据。这提高了应用程序的重用性 控制器: 当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型去处理请求。 然后根据处理的结果调用相应的视图来显示处理的结果。 MVC的处理过程:首先控制器接受用户的请求,调用相应的模型来进行业务处理,并返回数据给控制器。控制器调用相应的视图来显示处理的结果。并通过视图呈现给用户。 如在项目中要对应MVC的话:View 对应项目中Jsp,Controler对应Action,Model 对应service+dao层的业务逻辑和持久层的操作。
谈谈你对spring的理解 ① spring框架是一个开源而轻量级的框架,是一个IOC和AOP容器 ② spring的核心就是控制反转(IOC)和面向切面编程(AOP) ③ 控制反转(IOC):是面向对象编程中的一种设计原则,用来降低程序代码之间的耦合度,使整个程序体系结构更加灵活,与此同时将类的创建和依赖关系写在配置文件里,由配置文件注入,达到松耦合的效果。 与此同时IOC也称为DI(依赖注入),依赖注入是一种开发模式;依赖注入提倡使用接口编程;依赖注入使得可以开发各个组件,然后根据组件之间的依赖关系注入组装。 ④ spring的注入方式:A:使用构造器注入:主要采用构造函数和构造器来进行注入 B:setter方法注入:是容器通过调用无参构造器或无参static 工厂方法实列化bean之后,调用该bean的setter方法, 即实现了基于setter的依赖注入 ⑤ 面向切面编程(AOP)将安全,事务等于程序逻辑相对独立的功能抽取出来,利用Spring的配置文件将这些功能插进去,实现了按照切面编程,提高了复用性;最主要的作用:可以在不修改源代码的情况下,给目标方法动态添加功能 ⑥ spring优点:a:低侵入式设计,独立于各种应用服务器 b:依赖注入特点性将组件关系透明化,降低耦合度 c:与第三方框架具有良好的整合效果
说一下你对nginx理解 nginx.conf 的文件里,从 nginx 的配置指令作用域来讲,我们分为 5 个作用域块,分别是: 全局作用域块 event 作用域块 http 指令作用域块 server 指令作用域块 location 指令作用域块
说一下权限关联表关系和对应的表中字段?删除角色的时候有没有限制?是物理删除么? 用户表:用户的具体信息,比如名字年龄 角色表:当前系统拥有的角色,比如管理员 权限表:角色可能的所有权限,比如删除,修改 角色权限表:关联角色表和权限表 用户角色表:这个可以作为用户表中的一个字段,当然作为一个表也行,就是关联用户表跟角色表
fastdfs中上传一个文件,主要涉及以下几个步骤: 1)上传连接请求,客户端会向tracker server发出上传文件的请求 2)tracker收到请求后,返回storage server的ip和端口 3)客户端连接storage,并且上传文件 4)文件上传完成后,storage返回路径信息
说一下你对Jquery的理解 最本质的区别就是js是一种语言,而jQuery是基于该语言的一种框架。
你对js熟悉吗?说一下js常用的函数有哪些 js都知道是网页脚本语言,类似java是一种开发常用语言; 得到表单中元素的名称和值:document.getElementById(“表单中元素的ID号”).name(或value) JS中的值类型:String,Number,Boolean,Null,Object,Function JS中的字符型转换成数值型:parseInt(),parseFloat() 输出语句:document.write(""); JS中的注释为// 弹出提示信息:window.alert(“字符”); 弹出确认框:window.confirm(); 弹出输入提示框:window.prompt(); 指定当前显示链接的位置:window.location.href=“URL”
js的常用对象有哪些 1.string对象 常用方法: charAt():返回在指定位置的字符。 charCodeAt():返回在指定的位置的字符的 Unicode 编码。 concat():连接字符串。 fromCharCode():从字符编码创建一个字符串。 String indexOf():检索字符串,返回字符串出现的位置,如果没有找到,返回-1。 lastIndexOf():从后向前搜索字符串,返回字符串出现的位置,如果没有找到,返回-1 。 split():把字符串分割为字符串数组。 substr():从起始索引号提取字符串中指定数目的字符。 substring():提取字符串中两个指定的索引号之间的字符。 toLowerCase():把字符串转换为小写。 toUpperCase():把字符串转换为大写。 2.Math对象: 3.Date对象:
jQuery怎么获取值
redis和mysql中的事务有什么区别 MySQL: begin:显式地开启一个事务; commit:提交事务,将对数据库进行的所有修改变成为永久性的; rollback:结束用户的事务,并撤销正在进行的所有未提交的修改; Redis: multi:标记事务的开始; exec:执行事务的commands队列; discard:结束事务,并清除commands队列;
项目中前后端是否分离,你们系统返回的通常都是什么数据类型。 json(利用fastjson转换成json系统返回)
hibernate核心的API有哪些 Configuration接口:配置Hibernate,根启动Hibernate,创建SessionFactory对象。 SessionFactory接口:初始化Hibernate,充当数据存储源的代理,创建Session对象。 Session接口:负责保存、更新、删除、加载和查询对象。 Transaction接口:管理事务。 Query和Criteria接口:执行数据库查询。
数据库内数据太庞大,读取数据速度太慢,有没有解决方法? 1.建立多张表; 2.sql语句调优,这个影响不会很大,关键还是数据库的性能影响最大。 3.提高代码的质量。 4.加强数据库服务器设备的配置。
说下Java的面向对象 封装 继承 多态 抽象
说一下商品管理模块的业务以及涉及的技术 商品模块里面用到fastDFS来上传图片, 还有用到spu和sku进行商品类型参数设置
项目共有多少张表?所做模块用到多少张表?表与表之间的关系? 项目共有17张表 所做权限模块用到了5张表 用户表:用户的具体信息,比如名字年龄 角色表:当前系统拥有的角色,比如管理员 权限表:角色可能的所有权限,比如删除,修改 角色权限表:关联角色表和权限表 用户角色表:这个可以作为用户表中的一个字段,当然作为一个表也行,就是关联用户表跟角色表
数据库索引是什么? 一个索引是存储的表中一个特定列的值数据结构(最常见的是B-Tree)。索引是在表的列上创建。所以,要记住的关键点是索引包含一个表中列的值,并且这些值存储在一个数据结构中。请记住记住这一点:索引是一种数据结构 。 什么样的数据结构可以作为索引? B-Tree 是最常用的用于索引的数据结构。因为它们是时间复杂度低, 查找、删除、插入操作都可以可以在对数时间内完成。另外一个重要原因存储在B-Tree中的数据是有序的。数据库管理系统(RDBMS)通常决定索引应该用哪些数据结构。但是,在某些情况下,你在创建索引时可以指定索引要使用的数据结构。
dubbo的原理 初始化过程细节: 第一步,就是将服务装载容器中,然后准备注册服务。和spring中启动过程类似,spring启动时,将bean装载进容器中的时候,首先要解析bean。所以dubbo也是先读配置文件解析服务/暴露服务/引用服务
dubbo框架zookeeper注册中心挂了,调用服务会报错吗? 是因为启动dubbo时,消费者会从zk拉取注册的生产者的地址接口等数据,缓存在本地。每次调用时,按照本地存储的地址进行调用,并且: 注册中心对等集群,任意一台宕掉后,会自动切换到另一台; 注册中心全部宕掉,服务提供者和消费者仍可以通过本地缓存通讯; 服务提供者无状态,任一台 宕机后,不影响使用; 服务提供者全部宕机,服务消费者会无法使用,并无限次重连等待服务者恢复.
分布式与集群的联系和区别
分布式是指将不同的业务分布到不同的地方。而集群是指将几台服务器集中在一起,实在同一个业务。分布式的每一个节点,都可以用来做集群。而集群不一定就是分布式了 例如:互联网上访问的人多了,就可以做一个集群,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将任务交给哪台去完成。 而分布式,从狭义上理解,也与集群差不多,但是它的组织比较松散,不像集群,有一定组织性,一台服务器宕了,其他的服务器可以顶上来。分布式的每一个节点,都完成不同的业务,一个节点宕了,这个业务就不可访问了。在项目开发过程中如何进行测试?压力测试如何做 运维测试, 大概是2000人并发率
利用分布式可以解决高并发, 利用dubbo把一个大的业务层分成多个小的业务层 集群实现高可用, 6个服务器, 容错机制, 主从关系
分布式锁一般有三种实现方式:
基于关系数据库乐观锁基于 Redis 的分布式锁基于 ZooKeeper 的分布式锁基于关系数据库乐观锁 基于关系数据库实现分布式锁主要利用数据库的锁机制,通常使用乐观锁。但是由于高 并发场景下 RDBMS 的 IO 开销太大,所以一般不适用与大型、高并发项目。 使用 redis 实现分布式锁 主要基于 redis 中的 setnx 命令,当 key 不存在时,才能在 redis 中将 key 添加成功,利 用该属性可以实现分布式锁,并且 redis 对于 key 有失效时间,可以控制当某个客户端加锁 成功之后挂掉,导致阻塞的问题。 使用Zookeeper实现分布式锁 多个客户端在 Zookeeper 上创建一个相同的临时节点,因为临时节点只能允许一个客户 端创建成功,那么只要任意一个客户端创建节点成功,它就成功获取到锁,当释放锁后,其 他客户端同样创建 Zookeeper 节点。zk 可以设置会话超时时间,用于自动释放锁,避免死锁。