JAVA项目实战过程中踩坑总结一
目录
一、服务器部署到linux,无法访问?
二、部署tomcat到linux服务器主要几点需要配置重点
三、 实体类注解
四、Idea常用快捷键
五、Linux从其他服务器下载负责文件到本地
六、热部署
七、接口返回空处理
八、linux清空一个文件
九、linux 系统参数设置
十、docker
十一、java 工具开发使用爱迪尔2021
十二、JS时间自动刷新
一、服务器部署到linux,无法访问?
查看防火墙状态是否开启,如果开启,关闭防火墙。
systemctl status firewalld 查看状态
firewall-cmd --state
# 开启service firewalld start# 重启service firewalld restart# 关闭service firewalld stop
firewall-cmd --list-all 查看防火墙规则
二、部署tomcat到linux服务器主要几点需要配置重点
2.1、修改tomcat 目录下bin/catalina.sh
2.2、修改server.xml开启 关闭 端口
三、 实体类注解
swagger实体字段说明 @ApiModelProperty(value = "文件类型文件类型:1:生活 2:动物 3:儿童用品 4、节日祝福 6 酒类 7 表情包")
返回字段格式化 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
为空不返回 @JsonInclude(JsonInclude.Include.NON_NULL)
四、Idea常用快捷键
ctrl+shift+L 代码格式化
双击shift 搜索
五、Linux从其他服务器下载负责文件到本地
scp -r root@172.16.61.168:/usr/local/eureka /usr/local/
六、热部署
<!-- 修改后立即生效,热部署 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
七、接口返回空处理
我们先来讨论
listUser()
这个接口,我经常看到如下实现:
public List<User> listUser(){ List<User> userList = userListRepostity.selectByExample(new UserExample()); if(CollectionUtils.isEmpty(userList)){//spring util工具类 return null; } return userList;
}
这段代码返回是null,从我多年的开发经验来讲,对于集合这样返回值,最好不要返回null,因为如果返回了null,会给调用者带来很多麻烦。你将会把这种调用风险交给调用者来控制。
如果调用者是一个谨慎的人,他会进行是否为null的条件判断。如果他并非谨慎,或者他是一个面向接口编程的狂热分子(当然,面向接口编程是正确的方向),他会按照自己的理解去调用接口,而不进行是否为null的条件判断,如果这样的话,是非常危险的,它很有可能出现空指针异常!
根据墨菲定律来判断: “很有可能出现的问题,在将来一定会出现!”
基于此,我们将它进行优化:
public List<User> listUser(){ List<User> userList = userListRepostity.selectByExample(new UserExample()); if(CollectionUtils.isEmpty(userList)){ return Lists.newArrayList();//guava类库提供的方式 } return userList;
}
对于接口(List listUser())
,它一定会返回List,即使没有数据,它仍然会返回List(集合中没有任何元素);
通过以上的修改,我们成功的避免了有可能发生的空指针异常,这样的写法更安全!
其他方法
public Optional<User> getOptional(Integer id){ return Optional.ofNullable(userRepository.selectByPrimaryKey(id));
}
public interface UserSearchService{ /** * 根据用户id获取用户信息 * @param id 用户id * @return 用户实体 * @exception UserNotFoundException */ User get(@NotNull Integer id); /** * 根据用户id获取用户信息 * @param id 用户id * @return 用户实体,此实体有可能是缺省值 */ Optional<User> getOptional(@NotNull Integer id);
}
public interface UserSearchService{ /** * 根据用户id获取用户信息 * @param id 用户id * @return 用户实体 * @exception UserNotFoundException */ @CheckForNull User get(@NonNull Integer id); /** * 根据用户id获取用户信息 * @param id 用户id * @return 用户实体,此实体有可能是缺省值 */ Optional<User> getOptional(@NonNull Integer id);
}
八、linux清空一个文件
cat /dev/null > 文件名称
cp /dev/null 文件名称
九、linux 系统参数设置
echo $CXJG_HOST
修改环境变量
vim /etc/profile
重启生效
source /etc/profile
修改host文件
cat /etc/hosts
查询端口是否占用
netstat -anp | grep 端口
如果占用
kill -9 线程号
十、docker
下载安装:curl -s https://get.docker.com|sh
启动:service docker start
查看是否成功:docker version
拉取镜像:docker pull 镜像名称
查询是否拉取成功:docker images
运行docker:docker run hello-world
后台运行 docker run -d xxx
查询帮助命令 docker exec --help
十一、java 工具开发使用爱迪尔2021
1-关闭
2-下载压缩包(需要评论说明 “”需要爱迪尔2021“”)
3-解压到桌面
4-双击ok
5-启动
6-关闭自动更新 file-setting
打开settings 去掉
至此已成功
十二、JS时间自动刷新
<script>setInterval(time,1000) //定时器function time(){ //定义方法 timelet time = new Date(); //实例化日期对象let year=time.getFullYear()+"年" //获取年let month=time.getMonth()+1+"月" //获取月let day=time.getDate()+"日" //获取日let h=time.getHours()+':' //获取时let m=time.getMinutes()+":" //获取分let s=time.getSeconds() //获取秒if(s<10){ //判定秒 是否小于10秒s="0"+time.getSeconds() //小于是 在其前加0 01,02,03...}if(time.getMinutes()<10){ //判定分 是否小于10分m="0"+time.getMinutes()+":" //小于是 在其前加0 01,02,03...}document.getElementById("nowDate").innerHTML='当前时间:'+year+month+day+h+m+s //显示当前时间} </script>
持续关注,持续更新中。。。。
JAVA项目实战过程中踩坑总结一相关推荐
- 关于以太坊智能合约在项目实战过程中的设计及经验总结(1)
此文已由作者苏州授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验 1.智能合约的概述 近几年,区块链概念的大风吹遍了全球各地,有的人觉得这是一个大风口,有的人觉得他是个泡沫.众所 ...
- 安装vagant、Orachel virtual box和homestead过程中踩坑
安装vagant.Orachel virtual box和homestead过程中踩坑 主要参考安装过程 1.virtual box中的错误 2.ssh问题提示time out 3.vagrant u ...
- 程序员面试总结:如何避免面试过程中踩坑,那些不为人知的HR潜台词
背景介绍 由于公司裁员,所以最近一直忙着刷题,改简历,投简历,面试.面试了很多家,但是效果差强人意.先声明本人不是大神,只是一个年龄溢出的老程序员,喜欢搞技术但不擅总结(这是病,立个flag从今以后坚 ...
- vue3+vite+ts项目集成科大讯飞语音识别(项目搭建过程以及踩坑记录)
- Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子
Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子 目录 Python打包工具Pyintealler打包py文件为windows exe文件过程 ...
- Centos7+mysql57+python3安装过程中踩过的坑
Centos7+mysql57+python3安装过程中踩过的坑 说明: 为了练习Django项目,准备在虚拟机中安装Centos7+mysql57+python3.在windows环境下通过Navi ...
- JAVA项目实战开发电商项目案例(十)订单与支付模块
文章目录 1项目架构 2项目采用技术 3订单与支付模块功能演示 4如何开发支付宝的支付模块以及订单模块 4.1首先需要编写前端页面以及JS文件 4.2其次需要编写JAVA后台接口 4.3支付模块分析 ...
- java项目实战应用知识概括
java项目实战应用知识概括 Jasypt 加密 ICU4J Idea插件 BI商业智能 Google验证码Kaptcha 数据脱敏 QRCode二维码 邮件发送与接收 富文本与Markdown Ja ...
- 为Jupyter notebook配置R kernel过程及踩坑记录
为Jupyter notebook配置R kernel过程及踩坑记录 注意:本文为作者安装过程及折腾的过程,内容比较冗杂,如果读者想直接创建一个属于自己的子环境则参考: 如下文章: anaconda下 ...
最新文章
- python链接mysql 判断是否成功_【初学python】使用python连接mysql数据查询结果并显示...
- Nginx的配置实例(反向代理实例 )
- C++连接MySQL(Windows)
- 基于SSM的Java Web应用开发原理初探
- 康佳如何做“加法”?
- win7u盘修复计算机教程视频,钻研U盘修复工具使用教程
- java实现光盘摆渡_一种光盘摆渡机的制作方法
- 杨华杰 清华大学计算机,软件工程课程设计机票预订系统【参考】.doc
- Solidworks二次开发平台 --- RyS.SwWorks [2015-09-18更新]
- GoLang 抽奖系统 设计
- 有水印的图片简直不要太尬!教你去水印,以后精美图片统统拿走!
- 炼乳可以做什么 炼乳的多种食用方法
- threejs全景图片展示
- 软件测试需要学习些什么技能
- 服务器做系统怎么规划,如何做系统容量规划 | 知行天下
- android 滚轮控件
- DNS抗压集群服务器部署、远程加密更新DNS、花生壳(DDNS)--动态域名解析功能实现
- 1182. 旅游航道(tarjan算法)
- JS屏蔽某地区(城市)访问网站
- JavaSE-环境安装配置
热门文章
- 解决:dockerd: failed to start daemon: Devices cgroup isn‘t mounted
- 字符串题目:重新排列字符串
- windows启动引导管理
- (三)大话深度学习编译器中的自动调优·Empirical Search
- [USACO Oct08] 挖水井题解
- 企业远程高清会议平台视频会议系统在手机端使用的必备要求有哪些?
- bugkuCTF——猫片(安恒)
- 【特纳斯电子】基于单片机的智能风扇-开题报告
- upfst是什么函数C语言,一种基于KF和STUPF组合滤波的SINS大方位失准角初始对准方法技术...
- 5亿微博用户信息泄露背后:BTC与暗网数据的纠缠