BOSS项目基础知识点

BOSS项⽬基础知识点
1.什么是git,和svn的区别
git是⼀个分布式的版本控制系统,⼀般⽤于代码的版本控制,类似于svn,区别在于git可以在建⽴本地仓库,这样代码可以提交到本地,这样可以断⽹提交,可以查本地的代码提交历史记录。git有像github,码云这样的代码托管⽹站(我们项⽬就放在github上),下代码很⽅便。
2.什么是maven, maven中的依赖范围,依赖传递是什么意思
maven是⼀个软件项⽬管理⼯具,⼀般⽤它的配置⽂件pom来加载jar包,也可以⽤来编译⼯程发布⼯程
竹胁无我安装⼀个外包maven并整合到eclipse中,通过配置⽂件指定jar包的本地仓库,私服,和中央仓库,镜像等。
通过maven引⼊jar包,也通过maven将⼯程发布出去给其它⼯程引⽤。
依赖范围是⽤来控制打jar包的范围。
compile 编译、测试、运⾏
provided 编译、和测试有效
runtime:测试、运⾏有效。
test:只是测试有效,只在单元测试类中⽤。
依赖传递 就近原则
坐标
3.spring的原理,它是如何整合其它框架的
AOP(⾯向切⾯编程) 对指定的业务进⾏统⼀的增强,如事务处理,⽇志记录,性能统计,将这些代码从业务逻辑代码中抽取出来。
IOC(控制反转)DI(依赖注⼊)
(1)项⽬引⼊的bean对象不⽤我们从bean⼯⼚取,⽽是通过sring⾥的配置⽂件得到
(2)web层调service,service调dao都是通过加注解的⽅式,让spring注⼊进来,不⽤我们new出来
spring⼀般通过配置⽂件将其它框架整合进来,在配置⽂件中配置bean⼯⼚或模板和相关的属性,这样我们就不需要⾃⼰new出来bean⼯⼚⽽是由spring统⼀得到
4.什么是模型驱动,什么是领域驱动建模,有什么好处
模型驱动是使⽤javaBean对象来封装请求参数,在整个MVC流程中可以直接使⽤这个对象,⽤起来⽅便(对⽐属性驱动,对⽐servlet 中Parameter)
领域驱动建模是对业务对象的的抽取,就程序来说领域模型就是java⾥⾯的实体bean(domain),我们将这些实体bean抽取出来,通过maven配置引⼊,不同的⼯程就都可以使⽤这些模型。
5.什么是jpa,springdatajpa和hibernate之间的关系
jpa是sun公司定义的⼀套数据持久层的标准,是⼀种规范 hibernate是具体的技术实现 还有别的技术(Toplink等)但不流⾏了。类似于接⼝和实现类的关系
jpa定义的是⼀系列的接⼝和注解。Spring Data JPA 是在JPA规范的基础下提供了Repository层的实现
好处 ⽤jpa⽅式 开发者⾯向JPA规范的接⼝ 不必关注底层的JPA实现 哪种好⽤哪个 不⽤再去学习⼀套新的技术
减少学习成本。
6.⽤springdatajpa有什么好处,为什么
对于Oracle数据库,我们⾃⼰编写的dao 继承了jparepository接⼝ 在具体实⽤时由 sprinrg容器给我们注⼊进⼀个实现类, 使⽤springdatajpa抽象了具体的数据库操作,项⽬中⽤的redis,elasticsearch和ehcache都可以通过springdatajpa来操作
7.webservice是⼲什么的
webservice就是多项⽬,多平台之间进⾏⽅法调⽤的⼀种技术,现在⼯作中⽤cxf框架通过spring配置进项⽬来,⽤起来很简单的,只要在普通的服务上加上对应的注解就可以发布出去了。
webservice分成两种⽅式,⼀种是传统的基于sopa协议的⽅式,⼀种是rest的⽅式,传统的ws的⽅式不太常⽤了,我们项⽬中是⽤的就是rest的⽅式
谷正伦
8.webservice的两种实现⽅式rs和ws的区别
rs和ws的最主要的是rest是⽤的http协议,传统ws⽤的是soap协议,⼀般ws⽤的是xml格式⽽rs⽤的多是json格式,如果是完全基于restful风格,那么发布的服务就是⼀个资源,具体的增删改查⽅式是通过请求⽅式post,delete,put,get的⽅式来确定的。
rs更⽅便,更流⾏⼀些,因为它是返回json格式 访问服务的客户端只⽤通过⼯具webClient或者httpclient就可以访问了。
9.分页查询的参数,及查询后的数据是如何返回的
请求参数页码,每页记录数
返回总记录数和当前页数据记录 ⼀般返回的当前页数据是⼀个list集合, 我们要把list和总记录数封装到⼀个对象中返回前端页⾯
10.AngularJS的⼏个特性,什么是路由
MVC,(模仿后台框架的MVC Controller就是js代码,Model)
双向数据绑定(更新模型,视图会⾃动更新,更新视图,模型会⾃动更新)
模块化设计
官⽅提供的模块 ng、ngRoute
⽤户⾃定义的模块 dule(‘模块名’,[ ])
angularJs实现单页⾯多视图的页⾯跳转效果 类似于url跳转
11.什么是消息队列(mq) 消息服务器的应⽤场景和队列的两种⽅式
李小兵sy
消息队列中间件是分布式系统中的⼀种的组件,主要解决应⽤服务之间耦合,异步消息,流量削锋,等问题实现提⾼系统性能的⼀种架构
2、ActiveMQ 应⽤场景分析
1)⽤户注册,重点⽤户信息数据库保存,发短信、发邮件,增加业务处理复杂度,这时候⽤MQ,将发短信、发邮箱,通知MQ,由另外服务平台完成
2)搜索平台、缓存平台
计算机工程与设计查询数据,建⽴缓存、索引,不从数据库查询,从缓存或者索引库查询
当增加、修改,删除数据时,发送消息给MQ,缓存平台、索引平台从MQ获取到这个消息,更新缓存或者索引
1)Queue队列,⽣产者⽣产了⼀个消息,只能由⼀个消费者进⾏消费
2)Topic话题,⽣产者⽣产了⼀个消息,可以由多个消费者进⾏消费
12.什么是页⾯静态化,如何实现,有什么好处
Freemarker
将动态数据访问,⽣成为⼀个静态html页⾯,提⾼查询效率
页⾯静态化,其实就是将动态⽣成的jsp页⾯,变成静态的HTML页⾯,让⽤户直接访问。有⼀下⼏⽅⾯好处:
1,⾸先就是访问速度,不需要去访问数据库,或者缓存来获取哪些数据,浏览器直接加载渲染html页即可。所以可以⼤⼤的提⾼访问效率;
2,从⽹站优化来分析,搜索引擎更喜欢静态的⽹页,静态⽹页与动态⽹页相⽐,搜索引擎更喜欢静的,更便于抓取,搜索引擎SEO 排名更容易提⾼。
3,从安全⾓度讲,静态⽹页不宜遭到⿊客攻击,如果⿊客不知道你⽹站的后台、⽹站采⽤程序、数据库的地址,静态⽹页, 更不容易受到⿊客的攻击。
4,从⽹站稳定性来讲,如果程序、数据库出了问题,会直接影响⽹站的访问,⽽静态⽹页就避免了如此情况,不会因为程序等,⽽损失⽹站数据,影响正常打开,损失⽤户体验,影响⽹站信任度。
注意问题:
1,随着项⽬的扩⼤,静态html页⾯将会不断的增⼤,增多,所以要注意管理这些静态页⾯。例如路径的管理,及时更新的管理等等。
2,有些页⾯并不⼀定⾮要来静态化,但是为了避免地址暴露过多的信息,也可以⽤URL伪静态,使页⾯看起来就像静态页⾯⼀样,原理只是⼀个Filter。
13.Quartz是什么,应⽤场景
定时任务框架
⽤户解冻:⽐如⽤户在登录的时候,连续输错3次密码后,系统会将该⽤户冻结,不再允许该⽤户登录系统,等到了晚上零晨时分,再为所有被冻结的⽤户解冻,这样,⽤户在第⼆天⼜可以正常登录系统
抓取⽇志:⽐如需要在每天凌晨时候,分析⼀次前⼀天的⽇志信息
sheduler
job jobFactory
trigger
14.elasticserach是什么,原理, 如何使⽤,和lucene的关系
1、Lucene就是⼀套全⽂检索编程API,基于Lucene对数据建⽴索引,进⾏查询。
毒力岛
2、现代企业开发中,更常⽤的是solr搜索服务器和ElasticSearch搜索服务器。
主要概念
索引 ⽂档 ⽂档类型 映射
1)索引对象(数据存在哪?):存储数据的表结构,任何搜索数据,存放在索引对象上
2)映射(数据怎么存?):数据如何存放到索引对象上,需要有⼀个映射配置,数据类型、是否存储、是否分词…
3)⽂档(存什么数据?):⼀条数据记录,存在索引对象上
4)⽂档类型(数据有哪些类型?):⼀个索引对象,存放多种类型数据,数据⽤⽂档类型进⾏标识
编程步骤
1)建⽴索引对象
2)建⽴映射
3)存储数据【⽂档】
常见的dna提取方法及优缺点4)指定⽂档类型进⾏搜索数据【⽂档】
5)查询数据【⽂档】
15.缓存的原理,redis和ehcache的⽐较
缓存可以提⾼查询性能,对同⼀批数据进⾏多次查询时,第⼀次查询⾛数据库,查询数据后,将数据保存在内存中,第⼆次以后查询可以直接从内存获取数据,⽽不需要和数据库进⾏交互.
最简单的缓存实现可以⽤⼀个map实现,map的键存查询语句,map的值存对应查询到的数据。
ehcahe和redis的⽐较
ehcache直接在本机jvm虚拟机中缓存,速度快,效率⾼,本机速度⾃然是最快的,但重启web容器会⼀起消亡掉,只能当前web应⽤访问操作, 做缓存共享⿇烦,集分布式应⽤不⽅便。ehcahe可做hibernate的⼆级缓存。
redis是通过socket访问到缓存服务,效率⽐ecache低,⽐数据库要快很多,处理集和分布式缓存⽅便,有成熟的⽅案。
如果是单个应⽤或者对缓存访问要求很⾼的应⽤,⽤ehcache。如果是⼤型系统,存在缓存共享、分布式部署、缓存内容很⼤的,建议⽤redis。
ehcache也有缓存共享⽅案,不过是通过RMI或者Jgroup多播⽅式进⾏⼴播缓存通知更新,缓存共享复杂,维护不⽅便;简单的共享可以,但是涉及到缓存恢复,⼤数据缓存,则不合适。总之ehcache能⼲的活redis都能⼲,redis能⼲的,ehcache不⼀定。
16.权限控制的⼏种⽅式, Shiro如何实现权限控制
第⼀种:URL级别粗粒度权限控制(重点)
配置l的shiroFilter拦截 /*
在spring的applicationContext*.xml配置⽂件中配置同名的bean,配置filterChainDefinitions拦截控制规则
xxx.html*=anon(未登录可以访问)
xxx.html*=authc(必须登录才能访问)
xxx.html*=perms[权限](需要特定权限才能访问 )
xxx.html*=roles[⾓⾊](需要特定⾓⾊才能访问)
第⼆种:⽅法级别细粒度权限控制
在spring的applicationContext*.xml配置spring aop对spring管理bean对象开启shiro注解⽀持
@RequiresPermissions(权限) 需要特定权限才能访问
@RequiresRoles(⾓⾊) 需要特定⾓⾊才能访问
@RequiresAuthentication 需要认证才能访问
Shiro执⾏流程
应⽤程序—>Subject—>SecurityManager—>Realm—>安全数据
17.延迟加载是什么问题,如何解决
查询数据时当对象中有⼀对多的关联属性 当要在view层获取数据时⽐如将对象转化成json,由于session已关闭造成⽆法读取数据 要看实际业务需不需要展⽰多⽅数据
如果不需要直接加载
则在相关属性的get⽅法上加@JSON(serialize=false)注解
如果需要⽴即加载则有三种⽅式 效率由底到⾼
1 service中⼿动查询出来
2 加注解 @OneToMany(fetch=FetchType.EAGER)
3 配OpenEntityManagerInView filter
18.什么是报表,如何⽣成报表
报表就是数据的呈现,对于程序员来说就是复杂SQL查询语句,可以⽣成excel(poi)格式,pdf(ireport)格式或前端highcharts⽣成图表

本文发布于:2024-09-23 07:32:32,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/292693.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   缓存   访问   查询   配置   对象   静态
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议