admin 管理员组

文章数量: 887021


2023年12月24日发(作者:三相异步电机多少钱一台)

BOS项目技术点总结

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:只是测试有效,只在单元测试类中用。

依赖传递 就近原则

坐标

的原理,它是如何整合其它框架的

AOP(面向切面编程) 对指定的业务进行统一的增强,如事务处理,日志记录,性能统计,将这些代码从业务逻辑代码中抽取出来。

IOC(控制反转)DI(依赖注入)

(1)项目引入的bean对象不用我们从bean工厂取,而是通过sring里的配置文件得到

(2)web层调service,service调dao都是通过加注解的方式,让spring注入进来,不用我们new出来

spring一般通过配置文件将其它框架整合进来,在配置文件中配置bean工厂或模板和相关的属性,这样我们就不需要自己new出来bean工厂而是由spring统一得到

4.什么是模型驱动,什么是领域驱动建模,有什么好处

模型驱动是使用javaBean对象来封装请求参数,在整个MVC流程中可以直接使用这个对象,用起来方便(对比属性驱动,对比servlet中ameter)

领域驱动建模是对业务对象的的抽取,就程序来说领域模型就是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来操作

vice是干什么的

webservice就是多项目,多平台之间进行方法调用的一种技术,现在工作中用cxf框架通过spring配置进项目来,用起来很简单的,只要在普通的服务上加上对应的注解就可以发布出去了。

webservice分成两种方式,一种是传统的基于sopa协议的方式,一种是rest的方式,传统的ws的方式不太常用了,我们项目中是用的就是rest的方式

vice的两种实现方式rs和ws的区别

rs和ws的最主要的是rest是用的http协议,传统ws用的是soap协议,一般ws用的是xml格式而rs用的多是json格式,如果是完全基于restful风格,那么发布的服务就是一个资源,具体的增删改查方式是通过请求方式post,delete,put,get的方式来确定的。

rs更方便,更流行一些,因为它是返回json格式 访问服务的客户端只用通过工具webClient或者httpclient就可以访问了。

9.分页查询的参数,及查询后的数据是如何返回的

请求参数页码,每页记录数

返回总记录数和当前页数据记录 一般返回的当前页数据是一个list集合, 我们要把list和总记录数封装到一个对象中返回前端页面

rJS的几个特性,什么是路由

MVC,(模仿后台框架的MVC Controller就是js代码,Model)

双向数据绑定(更新模型,视图会自动更新,更新视图,模型会自动更新)

模块化设计

官方提供的模块 ng、ngRoute

用户自定义的模块 (‘模块名’,[ ])

angularJs实现单页面多视图的页面跳转效果 类似于url跳转

11.什么是消息队列(mq) 消息服务器的应用场景和队列的两种方式

消息队列中间件是分布式系统中的一种的组件,主要解决应用服务之间耦合,异步消息,流量削锋,等问题实现提高系统性能的一种架构

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。

是什么,应用场景

定时任务框架

用户解冻:比如用户在登录的时候,连续输错3次密码后,系统会将该用户冻结,不再允许该用户登录系统,等到了晚上零晨时分,再为所有被冻结的用户解冻,这样,用户在第二天又可以正常登录系统

抓取日志:比如需要在每天凌晨时候,分析一次前一天的日志信息

sheduler

job jobFactory

trigger

cserach是什么,原理, 如何使用,和lucene的关系

1、Lucene就是一套全文检索编程API,基于Lucene对数据建立索引,进行查询。

2、现代企业开发中,更常用的是solr搜索服务器和ElasticSearch搜索服务器。

主要概念

索引 文档 文档类型 映射

1)索引对象(数据存在哪?):存储数据的表结构,任何搜索数据,存放在索引对象上

2)映射(数据怎么存?):数据如何存放到索引对象上,需要有一个映射配置,数据类型、是否存储、是否分词…

3)文档(存什么数据?):一条数据记录,存在索引对象上

4)文档类型(数据有哪些类型?):一个索引对象,存放多种类

型数据,数据用文档类型进行标识

编程步骤

1)建立索引对象

2)建立映射

3)存储数据【文档】

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级别粗粒度权限控制(重点)

配置的shiroFilter拦截 /*

在spring的applicationContext*.xml配置文件中配置同名的bean,配置filterChainDefinitions拦截控制规则

*=anon(未登录可以访问)

*=authc(必须登录才能访问)

*=perms[权限](需要特定权限才能访问 )

*=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=)

3 配OpenEntityManagerInView filter

18.什么是报表,如何生成报表

报表就是数据的呈现,对于程序员来说就是复杂SQL查询语句,可以生成excel(poi)格式,pdf(ireport)格式或前端highcharts生成图表


本文标签: 数据 缓存 静态 访问 页面