远离996之神技能:泣血经验,每天过一遍

1 背景

虽然经历了数不清日夜的加班加点,然而开发技能与收入却都还在原地踏步。觉醒吧,势必日复一日的单调生活中闯出一条血路。
尽管成功学不在少数,但真正适合自己的却很少。以下内容均为经验之谈,如果对大家有所帮助,请不吝点赞。

2 技术方面

2.1 坚决不抛5xx响应码

无论是前端、测试还是领导,只要看到接口报500之类的异常,第一个想法就是把这个接口的开发打一顿。尽管从规范来讲,接口存在异常确实应该抛出500。但是为了不背锅,请将500响应修改为200。实在给出提示信息,请使用自定义响应码。
使用@exceptionHandler注解统一处理异常,并将@ResponseStatus值设为200。具体代码如下所示:

@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    @ExceptionHandler(value = {Exception.class})
    @ResponseStatus(value = HttpStatus.OK)
    @ResponseBody
    public Object defaultHandler(HttpServletResponse response,Exception e) throws JsonProcessingException {
        log.error(e.getMessage(),e);
        response.setContentType("application/json;charset=UTF-8");
        if(e instanceof PSQLException
                || e instanceof PersistenceException
                || e instanceof MyBatisSystemException
                || e instanceof BadSqlGrammarException){
            return  ResultObject.exception(1,"内部错误:数据库操作失败");
        }
        if(e instanceof HttpHostConnectException
                || e instanceof RetryableException){
            return ResultObject.exception(1,"连接失败:请检查第三方系统接入状态");
        }
        return ResultObject.exception(1,"未知错误,请联系管理员");
    }
}

2.2 版本问题

只要是在做开发,毫无疑问都会遇到版本大坑。这里的话,只能说给出两点比较实用的建议。

2.2.1 拒绝引入重复依赖

为什么要提到这一点?无他,被坑过。举个例子:

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
            <version>2.3.4.RELEASE</version>
        </dependency>
          <dependency>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
            <version>3.6.5</version>
        </dependency>

表面上没什么问题,但是一运行起来就会报错 找不到相关类。仔细看一下依赖关系就会发现spring-boot-starter-amqp里面已经包含了amqp-client,也就是说前者依赖于后者。然后呢?你又引入了一个独立版本的amqp-client将前者内部的依赖的amqp-client覆盖掉了,导致前者实际运行报错。
在这里插入图片描述

就这样一个简单的东西,很多人包括一些讲师也重复在犯错,实在是不应该。
正确的做法是,只引入必须的依赖。

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
            <version>2.3.4.RELEASE</version>
        </dependency>

2.2.2 固定版本,构建starter

实际开发过程中最好是固定依赖版本,等真正出了问题再升级版本。而固定版本一个比较好用的办法,就是构建自定义starter。

2.2.2.1 构建步骤
  1. 新建springboot项目,引入依赖

    <dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-autoconfigure</artifactId>
    </dependency>
    <dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-configuration-processor</artifactId>
    		<optional>true</optional>
    </dependency>
    
  2. 新建properties包,里面设置自定义配置

    @ConfigurationProperties(value = "datasource.config")
    public class DataSourceProperties {
    
    	private String prefix;
    	private String suffix;
    	private String enable;
    	
    	public String getEnable() {
       	 return enable;
    	}
    
    	public void setEnable(String enable) {
       	 this.enable = enable;
    	}
    
    	public String getPrefix() {
        	return prefix;
    	}
    
    	public void setPrefix(String prefix) {
       	 this.prefix = prefix;
    	}
    
    	public String getSuffix() {
       	 return suffix;
     	}
    
    	public void setSuffix(String suffix) {
       	 this.suffix = suffix;
    	 }
    }
    
  3. 新建META-INF,添加properties里面的文件到factory.properties中

    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
    xyz.yq56.sdk.config.DataSourceConfig,\
    xyz.yq56.sdk.config.Swagger2Config
    
  4. maven中install即可,然后其他项目可以通过坐标直接引入

2.2.2.2 使用:引入依赖即可
  • starter项目结构
    在这里插入图片描述
  1. 使用方法
    在这里插入图片描述

3 学习方面

3.1 有关顺序

对应Java开发而言,学习资料遍地都是。单纯b站上面的教学视频,就已经消化不过来。然而人的时间和精力却是有限的,那么问题来了?到底先学什么后学什么。
以本人经验来说,务必事先研究工作中常用的技术栈。比如说,工作中你经常打交道的是ES和Kafka,那么就优先学习这两个。优点有如下几点:

  1. 常用技术栈的坑更容易遇到,提前研究它就不怕踩坑
  2. 实践机会多,学起来更容易,也更有成就感

3.2 有关方法

多年学习经验,当然不能一出校门就抛诸脑后。总结起来,有这么几点:

  1. 考核不能少:对学校记忆最深的,肯定有考试这一项。考核有助于了解自己的状态,确定增长方向
  2. 结果导向:学习的时候,就该想到这东西要怎么输出出来。无论学什么东西,最终一定要体现在项目中
  3. 迭代总结:勤写博客,定期迭代博客。
  4. 教学视频优先于书籍:书籍尽管比较严谨,但是对于知识吸收很不友好。视频所见即所得,能快速构建技术与结果之间的联系,是一种更好的学习方式。推荐有视频,则先学视频。视频没有的,再从书籍中吸收

3.3 有关时间

时间问题无法回避,也是很多人放弃学习的最常用借口之一。出了校门之后,整段的学习时间的确是非常难得。但是时间挤挤总是有的,通勤过程中就可以反复对自己提问,加深技术理解。

4 关注招聘

尽管你最近不想跳槽,也请你关注招聘信息。从招聘要求,我们可以很快的得知该学些什么。另外,也需要频繁的更新简历。只有在更新简历的时候,你才能明白过去的日子到底有没有荒废。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值