<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Lin_SkySea的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Lin_SkySea</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Lin_SkySea]]></copyright><item><title><![CDATA[Java与Python的不同之处]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/121907281</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/121907281</guid><author>Lin_SkySea</author><pubDate>Tue, 14 Dec 2021 19:37:35 +0800</pubDate><description><![CDATA[1，数据类型 有差异

java 8种基本数据类型（布尔），还有包装类型

Python为数字number，布尔

2，语句构成不同

2,1Python没有了大括号，没有了语句结束标志性分号。没有了小括【目前只是注意到判断语句的小括号没了】

例如下面为java的判断语句

if（xxx）{

print（）
}

例如下面的为Python的语句

if  xxx ：

print（）；

2,2  Python讲究的是格式【缩进】，...]]></description><category></category></item><item><title><![CDATA[端口占用杀进程操作流程]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/120569913</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/120569913</guid><author>Lin_SkySea</author><pubDate>Thu, 30 Sep 2021 17:16:16 +0800</pubDate><description><![CDATA[cmd 电脑输入命令netstat -aon|findstr "8080"

8080位对应的端口号，即为查询占用8080端口进程的pid。

netstat -ano命令是查询所有的

拿到pid，就可以打开任务管理器，然后详细信息，pid排序，好到对应pid，结束进程或者程序即可。
...]]></description><category></category></item><item><title><![CDATA[打包部署项目]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/120502983</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/120502983</guid><author>Lin_SkySea</author><pubDate>Mon, 27 Sep 2021 10:20:39 +0800</pubDate><description><![CDATA[闲着没事记点小笔机，最近年老了，，记忆有时候短路。

首先要知道打包部署可以采用jar，war还有其他的，目前这两种很常见

在maven里install项目，会得到jar包，

控制台会提示jar包位置。

也就是xxx.jar

然后cmd到命令行控制台，

输入对应jar路径的盘符， 如 D：【注意不要加cd，无效的，又不是Linux系统】

然后输入路径进入到对应路径。

再java -jar jar包名称【注意之间的空格】就OK了。


...]]></description><category></category></item><item><title><![CDATA[linux常用相关命令记录下]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119958316</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119958316</guid><author>Lin_SkySea</author><pubDate>Fri, 27 Aug 2021 18:05:27 +0800</pubDate><description><![CDATA[================创建目录=====================

mkdir dir1 创建一个叫做 'dir1' 的目录'
mkdir dir1 dir2 同时创建两个目录

=================删除文件/文件夹============

rm -f file1 删除一个叫做 'file1' 的文件'
rmdir dir1 删除一个叫做 'dir1' 的目录'
rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容

=============...]]></description><category></category></item><item><title><![CDATA[对于取名规范问题]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119827000</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119827000</guid><author>Lin_SkySea</author><pubDate>Fri, 20 Aug 2021 16:46:21 +0800</pubDate><description><![CDATA[controller的名字应该见名知意。而不必要和service名字完全一样。比如service是add,update等等，但是具体业务为了描述更清楚可以在controller取名更贴切业务逻辑而非代码常见的add,update这样的常见名。

不要太长，长度适度，一定长度idea也显示不了的，而且搜索有时候会报错，总之名字不要太长。也不要太短，要能表述清楚的情况下尽可能短。

一定用英文单词命名，不能中文，最基本操作，加强版就是：单词要符合对应描述，比如工厂用factory，要用company就不太合适。]]></description><category></category></item><item><title><![CDATA[Ambiguous mapping. Cannot map ‘uploadController‘ method]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119803157</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119803157</guid><author>Lin_SkySea</author><pubDate>Thu, 19 Aug 2021 15:30:24 +0800</pubDate><description><![CDATA[翻译后：

模糊映射。无法映射“上传控制器”方法

然后周边还报了bean已经示例过了，创建错误等等。。。

总之这次是方法差不多相同，名字忘记换了，{方法名之前就换了，路径名忘更改}。@RequestMapping（"/xxx"）里的xxx参数相同了。导致了虚拟机不知道要执行哪个，所以提示：

模糊映射，没毛病。
...]]></description><category></category></item><item><title><![CDATA[文件防重复上传]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119801582</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119801582</guid><author>Lin_SkySea</author><pubDate>Thu, 19 Aug 2021 14:44:13 +0800</pubDate><description><![CDATA[对文件的字节加密，下面采取的是md5算法​​​​，作用;不是按名字记录内容是否重复而是按内容。
​​​String md5 = DigestUtils.md5Hex(file.getBytes());
]]></description><category></category></item><item><title><![CDATA[获取文件名，文件后缀名]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119801108</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119801108</guid><author>Lin_SkySea</author><pubDate>Thu, 19 Aug 2021 14:29:52 +0800</pubDate><description><![CDATA[//该文件为mutilpart文件
String filename = file.getOriginalFilename();

//获取文件名    
String caselsh = filename.substring(0,filename.lastIndexOf("."));

//获取文件名后缀
String suffix = filename.substring(filename.lastIndexOf(".")+1);
...]]></description><category></category></item><item><title><![CDATA[撤回与前进快捷键]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119787825</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119787825</guid><author>Lin_SkySea</author><pubDate>Wed, 18 Aug 2021 19:55:07 +0800</pubDate><description><![CDATA[ctrl +z是撤回，常用操作。

Ctrl+shift+z 是前进，，删多了也可以回滚下代码。这个容易忘记，记住。。。
]]></description><category></category></item><item><title><![CDATA[gitlab查看提交代码已审计详情]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119785564</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119785564</guid><author>Lin_SkySea</author><pubDate>Wed, 18 Aug 2021 17:42:23 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[操作日志的注解]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119783314</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119783314</guid><author>Lin_SkySea</author><pubDate>Wed, 18 Aug 2021 16:54:55 +0800</pubDate><description><![CDATA[类似的元注解也可以这样写
什么是元注解？那就是注解的注解，也就是对注解的解释。比如下面target就算。
/**
 * 操作日志注解
 */
@Target({ElementType.METHOD})  //代表作用在方法上
@Retention(RetentionPolicy.RUNTIME) //作用时间，运行期间
@Documented
public @interface OperationLog {
    String module() default "";
    String descri.]]></description><category></category></item><item><title><![CDATA[Navicat插入更新造数据操作]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119773742</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119773742</guid><author>Lin_SkySea</author><pubDate>Wed, 18 Aug 2021 10:07:23 +0800</pubDate><description><![CDATA[只需要配好表，写一条数据，迅速按下面操作复制SQL出去，到新建查询粘贴。

粘贴后，去掉id【id自增】，然后，改下除id的唯一字段，如果没有这种除id有唯一字段的情况更爽快了，。直接复制后去掉id，然后多粘贴几个，一下执行好几个，批量新增假数据很方便。

当然，也可以采用脚本批量写数据了。暂时脚本方式没资料哦。




...]]></description><category></category></item><item><title><![CDATA[时间转换时间戳毫秒数转公用日期]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119765083</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119765083</guid><author>Lin_SkySea</author><pubDate>Tue, 17 Aug 2021 20:21:32 +0800</pubDate><description><![CDATA[在DTO里，需要加如下注解@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")才可以转成功时间，否则日期解析不了。
注：需要计算日期时，需要日期字段时，才可用，不需要，不用管。另外可以使用数据库记录时间，设置创建时间默认记录，更改内容默认更新时间，很方便。这里说的，其他按文章已经有提到。
@ApiModelProperty(value = "更新时间", required = true)
@JsonFormat(timezone..]]></description><category></category></item><item><title><![CDATA[关于流程状态该不该传]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119757354</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119757354</guid><author>Lin_SkySea</author><pubDate>Tue, 17 Aug 2021 15:12:06 +0800</pubDate><description><![CDATA[最好不要传。

对于状态不要传给前端，而需要通过id或者业务id，编号啥的更改状态。就一个id就行，不会让前台知道流程有哪些状态。而是用不同接口区分操作，然后设置状态。（或者设置另一个与数据库无关的状态接口类来完成业务标识？比如数据库status换成DTO里的type，type是纯业务的而不和status强关联）
...]]></description><category></category></item><item><title><![CDATA[@Valid注解的作用]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119750061</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119750061</guid><author>Lin_SkySea</author><pubDate>Tue, 17 Aug 2021 10:09:37 +0800</pubDate><description><![CDATA[用了校验requestbody里DTO的参数，使@NotNull,@NotEmpty生效。不写就不生效了，就需要自己在代码里用StringUtils.isEmpty等等判空判null。
]]></description><category></category></item><item><title><![CDATA[@RequestBody注解忘加导致空指针]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119749806</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119749806</guid><author>Lin_SkySea</author><pubDate>Tue, 17 Aug 2021 10:05:31 +0800</pubDate><description><![CDATA[直接controller开始拿req的参数都是null。请求都是带了参数的。路径也没有问题。

必传参数都有，同时检查了数据库字段和实体以及RequestBody参数是对应的，没有名字错误或者没传或者数据库设置了不为null，以上检查都没问题。就是单纯少了这个注解导致空指针。而且 是开始就为null。第一行代码都没走，（出去方法那一行），而就错在那一行注解@RequestBody没写。
...]]></description><category></category></item><item><title><![CDATA[一个较完整的DTO包含哪些内容【自用向】]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119736162</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119736162</guid><author>Lin_SkySea</author><pubDate>Mon, 16 Aug 2021 16:40:55 +0800</pubDate><description><![CDATA[相当于直接传参数，用DTO的方式，前端可以很清晰知道需要传的参数，以及是否必传。
DTO是属于实体类的。
1，类上注解@Data。用了lombook就省去setget，无参有参构造等等。



2，字段注解
@ApiModelProperty(value = "名称", required = true)
@Size(max = 64)
@NotEmpty
private Integer textId;

非空，非null判断，大小限制，一定程度都是为了提高安全性，不至于随便一个垃圾请求也需要消耗服务器资源.]]></description><category></category></item><item><title><![CDATA[判空在DTO或者service里]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119673930</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119673930</guid><author>Lin_SkySea</author><pubDate>Fri, 13 Aug 2021 13:58:44 +0800</pubDate><description><![CDATA[在dto或者叫Req（也就是requestBody里）

如果已经用了注解@NotNull 或者@NotEmpty 对请求参数字段限制，那么在service实现类里（当然controller里一样也行）就不需要用如下代码


CommonUtils.isNull(req.getRemarkId());

StringUtis.isEmpty()之类的。

判空。如果没写，就需要。



另外注意，对于增删改查共用DTO时，就在代码里判空，而不在DTO里写，DTO就写required=false而不是TR..]]></description><category></category></item><item><title><![CDATA[Mybatisplus常用方法记录【实际用的不是所谓网上常用的】]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119638009</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119638009</guid><author>Lin_SkySea</author><pubDate>Thu, 12 Aug 2021 10:58:13 +0800</pubDate><description><![CDATA[友情提示：括号内代表对应内容不是参数名称，省略写了参数类型。后续内容持续更新中。

1，updateById(entity);根据主键更新数据。

注意事项：对于有逻辑id更改数据的，记得先查询一下主键id再用这个方法更新数据。或者直接用update（entity，updateWrapper）。

2，updateById(entity，updateWrapper);根据实体参数更新数据。
...]]></description><category></category></item><item><title><![CDATA[常数值接口优化鼠标划入显示含义]]></title><link>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119635795</link><guid>https://blog.youkuaiyun.com/Lin_SkySea/article/details/119635795</guid><author>Lin_SkySea</author><pubDate>Thu, 12 Aug 2021 10:14:57 +0800</pubDate><description><![CDATA[普通写法，只能点进来才知道参数解释。

public interface Status{

   /*1，草稿*/
   int STATUS_DRAFT = 1;
   /*2，审核中*/
   int STATUS_CHECK = 2;

 }

这种注释写法可以在调用参数时，鼠标划入即可看到参数的解释，非常方便不用单独进入雷利查看描述了。
对编写代码速度替身不少。

public interface Status{
   
   /**
    * 草稿
    */
   int STATUS_..]]></description><category></category></item></channel></rss>