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

八喜网站建设seo公司多少钱

八喜网站建设,seo公司多少钱,深圳专业定制建站公司,有限公司属于什么企业类型前言来自阿里巴巴内部面试宝典意外流出#xff01;面试宝典内容(JVMMybatisZookeeper)#xff0c;附答案解析MyBatis系列面试宝典1.MyBatis是什么#xff1f;Mybatis 是一个半 ORM(对象关系映射)框架#xff0c;它内部封装了 JDBC#xff0c;开发时只需要关注 SQL 语句本身…前言来自阿里巴巴内部面试宝典意外流出面试宝典内容(JVMMybatisZookeeper)附答案解析 MyBatis系列面试宝典1.MyBatis是什么Mybatis 是一个半 ORM(对象关系映射)框架它内部封装了 JDBC开发时只需要关注 SQL 语句本身不需要花费精力去处理加载驱动、创建连接、创建statement 等繁杂的过程。程序员直接编写原生态 sql可以严格控制 sql 执行性能灵活度高。MyBatis 可以使用 XML 或注解来配置和映射原生信息将 POJO 映射成数据库中的记录避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。2.Mybatis优缺点优点与传统的数据库访问技术相比ORM有以下优点基于SQL语句编程相当灵活不会对应用程序或者数据库的现有设计造成任何影响SQL写在XML里解除sql与程序代码的耦合便于统一管理提供XML标签支持编写动态SQL语句并可重用。与JDBC相比减少了50%以上的代码量消除了JDBC大量冗余的代码不需要手动开关连接。很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库所以只要JDBC支持的数据库MyBatis都支持)。提供映射标签支持对象与数据库的ORM字段关系映射提供对象关系映射标签支持对象关系组件维护。能够与Spring很好的集成缺点SQL语句的编写工作量较大尤其当字段多、关联表多时对开发人员编写SQL语句的功底有一定要求。3.MyBatis和Hibernate的适用场景?MyBatis专注于SQL本身是一个足够灵活的DAO层解决方案。对性能的要求很高或者需求变化较多的项目如互联网项目MyBatis将是不错的选择。开发难易程度和学习成本Hibernate 是重量级框架学习使用门槛高适合于需求相对稳定中小型的项目比如办公自动化系统MyBatis 是轻量级框架学习使用门槛低适合于需求变化频繁大型的项目比如互联网电子商务系统总结MyBatis 是一个小巧、方便、高效、简单、直接、半自动化的持久层框架Hibernate 是一个强大、方便、高效、复杂、间接、全自动化的持久层框架4.MyBatis的功能架构是怎样的我们把Mybatis的功能架构分为三层API接口层提供给外部使用的接口API开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。数据处理层负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。基础支撑层负责最基础的功能支撑包括连接管理、事务管理、配置加载和缓存处理这些都是共用的东西将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑5.Mybatis如何执行批量操作使用foreach标签foreach的主要用在构建in条件中它可以在SQL语句中进行迭代一个集合。foreach标签的属性主要有itemindexcollectionopenseparatorclose。item   表示集合中每一个元素进行迭代时的别名随便起的变量名index   指定一个名字用于表示在迭代过程中每次迭代到的位置不常用open   表示该语句以什么开始常用“(”separator 表示在每次进行迭代之间以什么符号作为分隔符常用“,”close   表示以什么结束常用“)”。在使用foreach的时候最关键的也是最容易出错的就是collection属性该属性是必须指定的但是在不同情况下该属性的值是不一样的主要有一下3种情况1. 如果传入的是单参数且参数类型是一个List的时候collection属性值为list2. 如果传入的是单参数且参数类型是一个array数组的时候collection的属性值为array3. 如果传入的参数是多个的时候我们就需要把它们封装成一个Map了当然单参数也可以封装成map实际上如果你在传入参数的时候在MyBatis里面也是会把它封装成一个Map的,map的key就是参数名所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key.具体用法如下 //推荐使用INSERT INTO emp(ename,gender,email,did)VALUES(#{emp.eName},#{emp.gender},#{emp.email},#{emp.dept.id})INSERT INTO emp(ename,gender,email,did)VALUES(#{emp.eName},#{emp.gender},#{emp.email},#{emp.dept.id})使用ExecutorType.BATCHMybatis内置的ExecutorType有3种默认为simple,该模式下它为每个语句的执行创建一个新的预处理语句单条提交sql而batch模式重复使用已经预处理的语句并且批量执行所有更新语句显然batch性能将更优 但batch模式也有自己的问题比如在Insert操作时在事务没有提交之前是没有办法获取到自增的id这在某型情形下是不符合业务要求的具体用法如下//批量保存方法测试//批量保存方法测试Testpublic void testBatch() throws IOException{SqlSessionFactory sqlSessionFactory getSqlSessionFactory();//可以执行批量操作的sqlSessionSqlSession openSession sqlSessionFactory.openSession(ExecutorType.BATCH);//批量保存执行前时间long start System.currentTimeMillis();try {EmployeeMapper mapper openSession.getMapper(EmployeeMapper.class);for (int i 0; i 1000; i) {mapper.addEmp(newEmployee(UUID.randomUUID().toString().substring(0, 5), b, 1));}openSession.commit();long end System.currentTimeMillis();//批量保存执行后的时间System.out.println(执行时长 (end - start));//批量 预编译sql一次》设置参数》10000次》执行1次 677//非批量 (预编译设置参数执行 )》10000次 1121} finally {openSession.close();}}mapper和mapper.xml如下public interface EmployeeMapper {//批量保存员工Long addEmp(Employee employee);}insert into employee(lastName,email,gender)values(#{lastName},#{email},#{gender})JVM系列面试宝典1.详解JVM内存模型思路 给面试官画一下JVM内存模型图并描述每个模块的定义作用以及可能会存在的问题如栈溢出等。我的答案JVM内存结构程序计数器当前线程所执行的字节码的行号指示器用于记录正在执行的虚拟机字节指令地址线程私有。Java虚拟栈存放基本数据类型、对象的引用、方法出口等线程私有。Native方法栈和虚拟栈相似只不过它服务于Native方法线程私有。Java堆java内存最大的一块所有对象实例、数组都存放在java堆GC回收的地方线程共享。方法区存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码数据等。(即永久带)回收目标主要是常量池的回收和类型的卸载各线程共享2.说说内存屏障内存屏障也叫内存栅栏是一种CPU指令用于控制特定条件下的重排序和内存可见性问题。LoadLoad屏障对于这样的语句Load1; LoadLoad; Load2在Load2及后续读取操作要读取的数据被访问前保证Load1要读取的数据被读取完毕。StoreStore屏障对于这样的语句Store1; StoreStore; Store2在Store2及后续写入操作执行前保证Store1的写入操作对其它处理器可见。LoadStore屏障对于这样的语句Load1; LoadStore; Store2在Store2及后续写入操作被刷出前保证Load1要读取的数据被读取完毕。StoreLoad屏障对于这样的语句Store1; StoreLoad; Load2在Load2及后续所有读取操作执行前保证Store1的写入对所有处理器可见。它的开销是四种屏障中最大的。 在大多数处理器的实现中这个屏障是个万能屏障兼具其它三种内存屏障的功能。3.happen-before原则单线程happen-before原则在同一个线程中书写在前面的操作happen-before后面的操作。锁的happen-before原则同一个锁的unlock操作happen-before此锁的lock操作。volatile的happen-before原则对一个volatile变量的写操作happen-before对此变量的任意操作(当然也包括写操作了)。happen-before的传递性原则如果A操作 happen-before B操作B操作happen-before C操作那么A操作happen-before C操作。线程启动的happen-before原则同一个线程的start方法happen-before此线程的其它方法。线程中断的happen-before原则 对线程interrupt方法的调用happen-before被中断线程的检测到中断发送的代码。线程终结的happen-before原则 线程中的所有操作都happen-before线程的终止检测。对象创建的happen-before原则 一个对象的初始化完成先于他的fifinalize方法调用。4.怎么打破双亲委派模型打破双亲委派机制则不仅要继承ClassLoader类还要重写loadClass和fifindClass方法。5.强引用、软引用、弱引用、虚引用的区别思路 先说一下四种引用的定义可以结合代码讲一下也可以扩展谈到ThreadLocalMap里弱引用用处。我的答案1)强引用我们平时new了一个对象就是强引用例如 Object obj new Object();即使在内存不足的情况下JVM宁愿抛出OutOfMemory错误也不会回收这种对象。2)软引用如果一个对象只具有软引用则内存空间足够垃圾回收器就不会回收它如果内存空间不足了就会回收这些对象的内存。SoftReference softRefnew SoftReference(str); // 软引用用处 软引用在实际中有重要的应用例如浏览器的后退按钮。按后退时这个后退时显示的网页内容是重新进行请求还是从缓存中取出呢这就要看具体的实现策略了。(1)如果一个网页在浏览结束时就进行内容的回收则按后退查看前面浏览过的页面时需要重新构建(2)如果将浏览过的网页存储到内存中会造成内存的大量浪费甚至会造成内存溢出如下代码Browser prev new Browser(); // 获取页面进行浏览SoftReference sr new SoftReference(prev); // 浏览完毕后置为软引用if(sr.get()!null){rev (Browser) sr.get(); // 还没有被回收器回收直接获取}else{prev new Browser(); // 由于内存吃紧所以对软引用的对象回收了sr new SoftReference(prev); // 重新构建}3)弱引用具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中一旦发现了只具有弱引用的对象不管当前内存空间足够与否都会回收它的内存。String strnew String(abc);WeakReference abcWeakRef new WeakReference(str);strnull;等价于str null;System.gc();4)虚引用如果一个对象仅持有虚引用那么它就和没有任何引用一样在任何时候都可能被垃圾回收器回收。虚引用主要用来跟踪对象被垃圾回收器回收的活动。 Zookeeper系列面试宝典1.Zookeeper 的 java 客户端都有哪些java 客户端zk 自带的 zkclient 及 Apache 开源的 Curator。2.说几个 zookeeper 常用的命令。常用命令ls get set create delete 等。3.Zookeeper 的典型应用场景Zookeeper 是一个典型的发布/订阅模式的分布式数据管理与协调框架开发人员可以使用它来进行分布式数据的发布和订阅。通过对 Zookeeper 中丰富的数据节点进行交叉使用配合 Watcher 事件通知机制可以非常方便的构建一系列分布式应用中年都会涉及的核心功能如(1)数据发布/订阅(2)负载均衡(3)命名服务(4)分布式协调/通知(5)集群管理(6)Master 选举(7)分布式锁(8)分布式队列4.负载均衡zk 的命名服务命名服务是指通过指定的名字来获取资源或者服务的地址利用 zk 创建一个全局的路径这个路径就可以作为一个名字指向集群中的集群提供的服务的地址或者一个远程的对象等等。5.集群支持动态添加机器吗其实就是水平扩容了Zookeeper 在这方面不太好。两种方式全部重启关闭所有 Zookeeper 服务修改配置之后启动。不影响之前客户端的会话。逐个重启在过半存活即可用的原则下一台机器重启不影响整个集群对外提供服务。这是比较常用的方式。3.5 版本开始支持动态扩容6.Zookeeper 下 Server 工作状态服务器具有四种状态分别是 LOOKING、FOLLOWING、LEADING、OBSERVING。(1)LOOKING寻 找 Leader 状态。当服务器处于该状态时它会认为当前集群中没有 Leader因此需要进入 Leader 选举状态。(2)FOLLOWING跟随者状态。表明当前服务器角色是 Follower。(3)LEADING领导者状态。表明当前服务器角色是 Leader。(4)OBSERVING观察者状态。表明当前服务器角色是 Observer。7.Chroot 特性3.2.0 版本后添加了 Chroot 特性该特性允许每个客户端为自己设置一个命名空间。如果一个客户端设置了 Chroot那么该客户端对服务器的任何操作都将会被限制在其自己的命名空间下。通过设置 Chroot能够将一个客户端应用于 Zookeeper 服务端的一颗子树相对应在那些多个应用公用一个 Zookeeper 进群的场景下对实现不同应用间的相互隔离非常有帮助。最后来自小编的福利上述面试题答案都整理成文档笔记。 也还整理了一些面试资料最新2020收集的一些大厂的面试真题(都整理成文档小部分截图)。资料获取方式关注小编转发文章私信【面试资料】获取下述资料。部分资料图片
http://www.zqtcl.cn/news/654422/

相关文章:

  • 网站界面设计策划书怎么做云匠网订单多吗
  • html教程 pdf网站建设优化兰州
  • 招聘网站可以同时做两份简历吗外贸网站示例
  • 黑链 对网站的影响企业融资计划书范本
  • 自己的简历怎么制作网站学院网站建设成效
  • 周口seo 网站郑州建站网站的公司
  • 网站布局模板北京装修大概多少钱一平方
  • 德阳网站建设ghxhwl风景网站模板
  • 昌邑网站建设拓者设计吧现代效果图
  • 学校网站建设成功案例网站开发需要学习哪些内容
  • 怎么让公司建设网站seo于刷网站点击
  • 网站建设合同严瑾建设网站宣传
  • 哪个网站做餐饮推广最好深圳市信任网站
  • 网站模板 整站源码广州网站vi设计报价
  • 百度速页建站wordpress审核插件
  • 怎么给网站wordpress专业的vi设计公司
  • 百度关键词在线优化寻找郑州网站优化公司
  • 网站建设适合什么单位网络推广员工作内容
  • 漂亮的网站维护页面wordpress加个微信登录
  • 网站设计是什么意思创建地址怎么弄
  • nas上建设网站文章网站哪里建设好
  • 消防网站模板广告设计专业需要学什么
  • 建设银行网站首页wordpress 登录函数
  • 做网站多长时间广州营销网站制作
  • 美团外卖网站开发建设网站如何写文案
  • 专门做画册封面的网站开发工程师网站开发工程师招聘
  • 广州市建设局网站自己做电影网站违法
  • 网站建设首选公司大丰专业做网站
  • 用dw怎么做网站辽宁省住房和城乡建设厅网站首页
  • 如何用微信小程序做网站2个网站做的链接怎么用一个域名