Java实习生 工作总结(no.1)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40558766/article/details/88696563

正式上班第一天
2019.3.20
上午:
1.弄懂文档不懂的技术
2.把项目的流程整理出来

下午:
1.弄懂demo-app包名的含义
2.弄懂demo-web包名的含义
3.弄懂demo-common包名的含义
4.理解demo-app,demo-web以及demo-common包之间的关系
5.对比学校做的项目与公司项目的区别(从包上看)

1.文档里不懂的技术:

(1)memcached

​ 1)概念:memcached 是一套分布式的高速缓存系统。(将一些常用数据储存在缓存中,可以更快的拿到数据;减少与服务器的交互次数,减低对服务器的损耗。比如将行政区域名存储在缓存中,因为区域名(北京)是固定的,不需要没查找一次数据,就与服务器交互一次。)

​ 2)memcached 与redis的区别?(分八个方面比较)
​ a.性能:memcached性能高于redis

​ b.内存使用效率:只使用key-values存储,memcached内存利用率更高;但redis使用hash的key-values来做,利用率高于mwmched。

​ c.redis支持服务器端的数据操作

​ d.数据备份恢复:memcached挂掉后,数据不可恢复;redis数据丢失后可以通过aof恢复。*

​ e.数据存储:两者都是将数据放在内存中,memcached不支持持久化;redis将数据储存在硬盘上,支持数据的持久化。

​ f.Memcached默认使用Slab Allocation机制管理内存;Redis采用的是包装的mallc/free,相较于Memcached的内存管理方法来说,要简单很多。

​ g.Memcached本身并不支持分布式;Redis Cluster是一个实现了分布式且允许单点故障的Redis高级版本,它没有中心节点,具有线性可伸缩的功能。

​ h.Memcache支持多核多线程,Redis单线程操作。

(2)rabbitmq

​ 1)概念:RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件。(主要用于组件之间的解耦)

(3)RPC(Remote Procedure Call)

​ 1)概念:远程传输协议(相当于http协议)

(4)LB(负载均衡)

​ 1)概念:分摊到多个操作单元上进行执行。(比如游戏服务器场景,游戏上线后,每一个用户注册一次或者点击某个功能,都会与服务器交互一次。当一个用户进行一次交互,服务器能承受,但是当一千个甚至上万个用户同时进行操作,服务器就会崩溃。这个时候就需要使用多台服务器,将请求分给其他服务器,)

(5)web和app层

​ 1)概念:
web层–》控制器层,主要对外
app层–》数据层,内部实现

(6)Hessian(轻量级的RPC)

​ 1)概念:基于HTTP协议传输,使用Hessian二进制序列化,对于数据包比较大的情况比较友好。

(7)Restful

​ 1)概念:一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。

(8)Fedis( 前端开发集成解决方案)

​ 1)概念:fedis 是一个基于 gulp/gulp-plugins 的前端开发集成解决方案。

(9)postman

​ 接口调试工具(入门指南:https://www.jianshu.com/p/46d44c09d94c)

(10)Everything

​ voidtools开发的一款文件搜索工具。

2.门面模式

​ 定义:门面模式(Facade Pattern)也叫做外观模式,是一种比较常用的封装模式。

3.数据流程(编码相关)

数据流程:大方向web---->app
(1)web里数据流是从controller—>service

(2)app里数据流是从action—>manager—>service—>dao

(3)web到app是通过RPC里的hessian技术实现的。

4.demo-app包名的含义(与学校做的项目进行对比)

demo-app:数据层

(1)公司dto层相当于学校的vo(bean)层。

(2)service层和service.impl层:service是业务处理层接口,service.impl是业务处理的实现层。

(3)aspect层:拦截层,主要用来拦截包括但不限于指定包,注解下的方法,异步操作日志和缓存。

(4)config层:配置文件层,spring boot2的特性,用类的形式进行配置。

(5)manager层和manager.impl层:manager层也是业务处理层接口,manager.impl也是业务处理的实现层。

manager层与service层同为业务处理层,区别在于,manager可以由多个service组成,manager层是service层的更大一层,可以处理多个条件查询。举例:登录功能,登录成功后,既要显示个人信息(user表),也要显示权限(power表)。因为service层每一个方法只对应一个dao层里的方法,如果要service一个对应多个方法,dao层就要修改,dao是与数据库相关的,不可能修改dao,因此出现了manager层。对manager层的方法进行修改,只是修改了里面的service方法,不会对其他造成影响。

总结:manager层里的方法可有一对一,一对多的关系。service层里的方法只有一对一的关系。

5.demo-web包名的含义(与demo-app进行对比)

demo-web:控制器层

(1)exception层:异常处理层,包括自定义的异常

(2)controller层:web层的控制器,仅仅只做数据透传和返回

(3)service层与demo-app的service层的区别:demo-app的service层里写基本的增删改查方法,demo-web里的service写类似检查参数业务的方法。

6.demo-common包名的含义

demo-common里主要写一些可复用的代码,比如加密,支付功能以及工具包。

(1)annotation层:自定义注解层

(2)constant层:常量定义层

(3)dispatcher层:门面;举例医院,如果医生要求化验,病人必须首先划价,然后缴费,才可以到化验部门做化验。化验后再回到门诊室。会特别复杂,但在引入接待员后,病人只接触接待员,由接待员与各个部门打交道。接待员就是门面的体现。

7.总结

公司里做的项目与学校做的区别是特别大的:

1.所用技术:学校学的是很久之前用的;公司用的是目前比较流行,经过多次检验的,成熟的技术。

2.代码:公司会考虑代码复用性,会将大模块分成具体小模块来实现。

3.命名:公司里包,类的命名都有自己的规范,便于共同开发与后期维护。

4.架构:公司有专门的架构师,在开发前会对具体的业务场景提出解决方案,考虑目标需求的扩展。

小白第一天上班 ^^
一直无法理解整个项目的数据流程,问了之后,有种拨开云雾见青天的感觉。。。。
总结:遇到不会的,先自己找,找不到可以去问。但是公司技术大牛给的demo,看不懂,一定要去问。

猜你喜欢

转载自blog.csdn.net/qq_40558766/article/details/88696563