编程小知识
Java -@NotEmpty、@NotBlank、@NotNull 三种区别
@NotEmpty
用在集合类上面 加了@NotEmpty的String类、Collection、Map、数组,是不能为null或者长度为0的(String Collection Map的isEmpty()方法)
@NotBlank
只用于String,不能为null且trim()之后size>0
@NotNull
用在基本类型上,如Integer、Double。用在集合数组时,不能为null,但可以为empty,没有Size的约束(size = 0)
if(string.IsNullOrEmpty(licencePlate.Trim()))
Java -关于po bo vo pojo dao 概念:
1、PO(bean,entity)等命名:
persistant object持久对象,数据库表中的记录在java对象中的显示状态
最形象的理解就是一个PO就是数据库中的一条记录。
好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。
2 、BO(service,manager,business等命名):
主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。
形象描述为一个对象的形为和动作,当然也有涉及到基它对象的一些形为和动作。比如处理一个人的业务逻辑,有睡觉,吃饭,工作,上班等等形为还有可能和别人发关系的形为。
这样处理业务逻辑时,我们就可以针对BO去处理。
3、VO(from也有此写法) :
value object值对象
主要体现在视图的对象,对于一个WEB页面将整个页面的属性封装成一个对象。然后用一个VO对象在控制层与视图层进行传输交换。
4、pojo:
POJO有一些private的 参数 作为对象的属性。然后针对每个 参数 定义了get和set方法作为访问的接口
POJO是一个简单的普通的Java对象,它不包含业务逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。
- 一个POJO持久化以后就是PO 。
- 直接用它传递、传递过程中就是DTO
- 直接用来对应表示层就是VO
5、DTO
DTO(Data Transfer Object,数据传送对象)是解决这个问题的比较好的方式。DTO是一个普通的Java类,它封装了要传送的批量的数据。当客户端需要读取服务器端的数据的时候,服务器端将数据封装在DTO中,这样客户端就可以在一个网络调用中获得它需要的所有数据。
PO、BO、VO、DTO、POJO、DAO的区别:
**(一)**PO
persistant object持久对象
最形象的理解就是一个PO就是数据库中的一条记录。
好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。
(二) BO****:
business object业务对象
主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。
比如一个简历,有教育经历、工作经历、社会 关系等等。
我们可以把教育经历对应一个PO,工作经历对应一个PO,社会 关系对应一个PO。
建立一个对应简历的BO对象处理简历,每个BO包含这些PO。
这样处理业务逻辑时,我们就可以针对BO去处理。
(三) VO :
value object值对象
ViewObject表现层对象
主要对应界面显示的数据对象。对于一个WEB页面,或者SWT、SWING的一个界面,用一个VO对象对应整个界面的值。
(四) DTO :
Data Transfer Object数据传输对象
主要用于远程调用等需要大量传输对象的地方。
比如我们一张表有100个字段,那么对应的PO就有100个属性。
但是我们界面上只要显示10个字段,
客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,
这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO
(五) POJO :
plain ordinary java object 简单java对象
个人感觉POJO是最常见最多变的对象,是一个中间对象,也是我们最常打交道的对象。
一个POJO持久化以后就是PO
直接用它传递、传递过程中就是DTO
直接用来对应表示层就是,所以一个pojo可能有三种变黄
JavaBean
基本解释:
1、JavaBean是公共Java类,但是为了编辑工具识别,需要满足至少三个条件:
- 有一个public默认构造器(例如无参构造器,)
- 属性使用public 的get,set方法访问,也就是说设置成private,同时get,set方法与属性名的大小也需要对应。例如属性name,get方法就要写成,public String getName(){},N大写。
- 需要序列化,实现Serializable 接口,用于实现bean的持久性。
(1)包命名:全部字母小写。
(2)类命名:每个单词首字母大写。
(3)属性名:第一个单词全部小写,之后每个单词首字母大写。
(4)方法名:与属性命名方法相同。
(5)常量名:全部字母大写。
Druid
1、什么是druid?
Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。Druid是阿里巴巴开发的号称为监控而生的数据库连接池!
2、Druid的组成部分:
它包括四个部分:
2、Druid是一个JDBC组件,它包括三个部分:
1、基于Filter-Chain模式的插件体系。
2、 DruidDataSource 高效可管理的数据库连接池。
3、SQLParser
3、Druid的功能
1、替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。
2、可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。
3、数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。
4、SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。
5、扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。
Druid: 1、充当数据库连接池。 2、可以监控数据库访问性能 3、获得SQL执行日志
4、配置详解:
5、配置Druid
1、 properties 文件配置:
1 | #sqlserver配置文件 |
2、java 读取文件配置
1 | static DruidDataSource druidplugin; |
3、连接池关闭操作:
1 | /** |
6、spring配置连接、监控数据等
(3条消息) DRUID 连接池的使用、配置详解肖朋伟-CSDN博客druid连接池详解
7、配置依赖导入:
1 | <druid.version>1.1.5</druid.version> |
Swagger-文档API学习
Swagger文档API学习–API注解 | 妃子笑 (shengouqiang.cn)Swagger文档API学习–API注解 | 妃子笑 (shengouqiang.cn)
Guava学习
(37条消息) Guava学习入门_过往记忆大数据-CSDN博客
Guava学习之ArrayListMultimap
https://iteblog.blog.csdn.net/article/details/12062457