一切福田,不離方寸,從心而覓,感無不通。

浅析VO、DTO、DO、PO的概念、区别和用处

VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。
DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。
DO(Domain Object):领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。
PO(Persistent Object):持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。

龙生   19 Jun 2023
View Details

Java中的Base64编码和解码

这篇文章将讨论使用纯 Java、Guava 和 Apache Commons 进行 Base64 编码和解码。 Base64 是一组类似的二进制到文本的编码方案,通过将其转换为 ASCII 字符串格式来表示二进制数据 radix-64 表示。每个 Base64 digit 正好代表 6 位数据,也就是说 3 个字节可以用 4 个 6 位来表示 Base64 位数。

龙生   19 Jun 2023
View Details

JAX-WS RI组件开发基于JAX-WS规范的WebService服务入门程序

你如果接触过最简单的webservice程序,你就会会知道,模拟一个客户端去调用服务端的服务,需要知道的参数有:
wsdl文件路径
提供webservice服务的服务接口源文件(.java)
服务接口实现类中@WebService注解上targetNamespace属性的值(wsdl文件中可以得知)
服务接口实现类中@WebService注解上serviceName属性的值(wsdl文件中可以得知)
因此,获取起来相对麻烦。

而JDK1.6自带了wsimport.exe工具,就是专门为了方便客户端获取服务端文件以及调用webservice服务的。
该工具位于JDK安装目录的lib目录下。

使用方法:
进入命令提示符界面
切换到JDK安装路径的lib目录下
输入wsimport, 回车,就可以看到该工具的参数,根据需要选择,通常是 -keep 表示保存文件 -s 保留源文件

格式:wsimport -keep -s 保留源文件的路径 wsdl文件路径

龙生   19 Jun 2023
View Details

设置、查看分支的上游

设置上游分支: 方式一(适用远程分支已存在): 用参数 -u 或 --set-upstream-to 设置上游 $ git branch --set-upstream-to=origin/<远程分支> <本地分支> 方式二(适用远程分支不存在): 上传本地分支到远程,同是把上传后的远程分支设置为本地分支的上游分支: git push set-upstream origin HEAD:<远程分支>  取消分支上游: $ git branch --unset-upstream 查看上游: 可以通过git status 、 git checkout <分支>、git branch -vv命令查看 如下图框中就是当前分支的上游。 from:https://blog.csdn.net/xjj1314/article/details/111269837

龙生   19 Jun 2023
View Details

spring boot 文件上传大小限制

错误信息 :   Spring Boot:The field file exceeds its maximum permitted size of 1048576 bytes.   解决方法一:在启动类添加如下代码: @Bean public MultipartConfigElement multipartConfigElement() {   MultipartConfigFactory factory = new MultipartConfigFactory();   //单个文件最大   factory.setMaxFileSize("10240KB"); //KB,MB   // 设置总上传数据总大小   factory.setMaxRequestSize("102400KB");   return factory.createMultipartConfig(); }   解决方法二:根据spring boot 版本不同在application文件添加不同的配置 Spring Boot 1.3 或之前的版本,配置: multipart.maxFileSize = 100Mb multipart.maxRequestSize=150Mb Spring Boot 1.4 版本后配置更改为:   spring.http.multipart.maxFileSize = 100Mb   spring.http.multipart.maxRequestSize = 150Mb Spring Boot 2.0 之后的版本配置修改为: 单位Mb改为MB了 spring.servlet.multipart.max-file-size = 100MB spring.servlet.multipart.max-request-size = 150MB     ************************************************************************************************** multipart.maxFileSize=10Mb是设置单个文件的大小, multipart.maxRequestSize=100Mb是设置单次请求的文件的总大小 如果是想要不限制文件上传的大小,那么就把两个值都设置为-1 ************************************************************************************************** *********注意:由于版本更新迭代快,如果以上的配置有误,请以Spring Boot的官方文档为准。*********   Spring Boot 各版本文档地址(比较齐全)  https://docs.spring.io/spring-boot/docs/      进入reference/html/目录就是了哈   **************************************************************************************************   from:https://www.cnblogs.com/liujf-a-mad-man/p/10775470.html

龙生   16 Jun 2023
View Details

解决springboot上传文件报错:The field XXX exceeds its maximum permitted size of 1048576 bytes

在使用springboot上传文件时后报错如下

  报错原因: 单个文件上传大小不能多于1MB 多个文件上传大小不能多于10MB springboot底层的源码简单解析

  解决办法:在properties或者yaml配置文件里自定义配置即可修改springboot文件上传最大限制,这里我在yaml里配置

  from:https://blog.csdn.net/happy488127311/article/details/120588972

龙生   16 Jun 2023
View Details

教你nginx跳转配置的四种方式

前言 最近工作用到了nginx,但是路由配置特殊,业务场景复杂,因此整理了集中nginx跳转的配置方式,如servername的正则,location的匹配顺序,rewrite和proxy的示例,相信总有一种满足你的需求。 一、配置server对应的域名 server name 为虚拟服务器的识别路径。因此不同的域名会通过请求头中的HOST字段,匹配到特定的server块,转发到对应的应用服务器中去。server_name匹配规则:后面可以跟多个域名,第1个是主域名 1.1、精确匹配 如下nginx配置

请求结果 curl http://my.test.com:8080 返回:I am mytest! curl http://test1.com:8080 返回:I am test1! 1.2、正则表达式 以*通配符开始的最长字符串,如下示例

以*通配符结束的最长字符串

通配符名字只可以在名字的起始处或结尾处包含一个星号,并且星号与其他字符之间用点分隔。所以,“my..com“都是非法的。 例如 :server_name my..com; 报以下错误: nginx: [emerg] invalid server name or wildcard "my.*.com" on 0.0.0.0:8080 匹配正则表达式

解释说明 ~: 表示大小写敏感的正则; ^:匹配字符串的开始; {.+}:换行符以外的任意自读重复一次活更多次; (): 分组与取值; :表示转义; serno:设置提取的变量; $:匹配字符串的结束; 请求结果

server_name的配置顺序是怎样的呢? 按照如下顺序匹配: 匹配顺序-> ->精确匹配 ->*在前的域名 ->*在后的域名 ->按文件中的顺序匹配 ->default server:第一个,listen指定default 二、配置location 2.1、Location 匹配规则:仅匹配URI,忽略参数

  匹配的正则符号如下: = 严格匹配。如果请求匹配这个location,那么将停止搜索并立即处理此请求 ~ 区分大小写匹配(可用正则表达式) ~* 不区分大小写匹配(可用正则表达式) !~ 区分大小写不匹配 !~* 不区分大小写不匹配 ^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式 2.2、举例

2.3、匹配顺序如下图 按照上面的规则配置了如下location

curl […]

龙生   12 Jun 2023
View Details

docker中curl ip报错curl: (56) Recv failure: Connection reset by peer,宿主机无法ping通docker容器

docker中curl ip报错curl: (56) Recv failure: Connection reset by peer,宿主机无法ping(或curl)通docker容器 在创建容器的时候,容器的端口号一定要按照默认端口号填写,而主机端口号可随意填写(只要不重复),比如要创建一个tomcat容器,其容器端口号就要是8080,例如像这样 : docker run -d -p 3344:8080 --name tomcat1 tomcat 完成后的端口内容是这样的 此时就可以通过 curl localhost:3321 成功访问到容器tomcat的网页 以上是正确示例 之前一直报错curl: (56) Recv failure: Connection reset by peer,就是因为容器端口号没有按默认的来填写。 以下是错误示例 docker run -d -p 3355:2021 --name tomcat2 tomcat 没有按默认端口号填写后的容器端口内容为 此时再curl localhost:3355 就会报错 因此,总结,在创建容器的时候一定要按照该容器的默认端口号来填写   from:https://blog.csdn.net/mymic/article/details/112706792

龙生   08 Jun 2023
View Details