- 博客(14)
- 资源 (30)
- 收藏
- 关注
原创 最牛逼的 Java 日志框架,还不学习。。。
最牛逼的 Java 日志框架,性能无敌,横扫所有对手…Logback 算是JAVA 里一个老牌的日志框架,从06年开始第一个版本,迭代至今也十几年了。不过logback最近一个稳定版本还停留在 2017 年,好几年都没有更新;logback的兄弟 slf4j 最近一个稳定版也是2017年,有点凉凉的意思。而且 logback的异步性能实在拉跨,功能简陋,配置又繁琐,远不及Apache 的新一代日志框架 - Log4j目前来看,Log4j2 就是王者,其他日志框架都不是对手Log4j2简介Apach
2021-11-02 17:28:51 177
原创 Apifox强大的API
取代Swagger + Postman ,Apifox 功能更强大!作为开软件开发从业者,API 调试是必不可少的一项技能,在这方面 Postman 做的非常出色。但是在整个软件开发过程中,API 调试只是其中的一部分,还有很多事情 Postman 无法完成,或者无法高效完成,比如:API 文档定义、API Mock、API 自动化测试等等。Apifox 就是为了解决这个问题而生的。一、接口管理现状1、常用解决方案使用 Swagger 管理 API 文档使用 Postman 调试 API使用 R
2021-11-02 16:32:23 2266 1
原创 集合看这一篇就够了
⼀、Collection集合集合的概念概念:集合是java中提供的⼀种容器,可以⽤来存储多个数据。数组:存储⼀组相同数据类型的数据结构。局限:定⻓集合:动态存放多个对象。动态:集合的⼤⼩随着存储的数据量⽽改变。多个:0-多个数据对象:存储类的实例。基本数据类型—>包装类对象。集合框架Collection 常⽤功能⽅法描述boolean add(Object obj)添加⼀个对象数据boolean addAll(Collection c)将⼀个集合中
2021-09-22 10:46:38 129
原创 接口和抽象类的区别
相同点:都存在抽象方法;不能创建对象,不能实例化。可以作为引用类型。具备Object类中所定义的方法。不同点:所有属性都是公开静态常量,隐式使用public static final修饰。所有方法都是公开抽象方法,隐式使用public abstract修饰。没有构造方法、动态代码块、静态代码块。接口的好处接口的出现降低了耦合性设计与实现完全分离,更容易更换具体实现。更容易搭建程序框架。...
2021-09-22 09:45:31 60
原创 final关键字
词意:终结的,最终的,最后的。final可修饰的内容:类(最终类)方法(最终方法)变量(最终变量)final修饰类:此类不能被继承。String、Math、System均为final修饰的类,不能被继承。final修饰方法:此方法不能被覆盖。意为最终方法,不支持子类以覆盖的形式修改。final修饰变量:此变量值不能被改变(常量)。所有final修饰的变量只能赋值一次,值不允许改变。final修饰基本类型:值不可变final修饰引用类型:地址不可变静态常量不再提
2021-09-22 09:42:51 78
原创 方法重写和重载
重写:关键字:override概念:继承关系中,子类将父类已有的方法重新实现,叫做方法的重写。规则:A:继承关系中。B:子类重写的方法的声明,必须和父类一致。方法的返回值(注意点:子类重写的方法的返回类型可以是父类方法返回类型的子类),参数列表,方法名。C:子类重写方法的访问权限,不能比父类更加严格。D:重写的方法,不能抛出比父类更大的异常。重载关键字:overload概念:一个方法,因为参数不同,执行的具体的方法也不同。规则:A:同一个类中。B:
2021-09-22 09:40:44 78
原创 静态方法和静态代码块
静态方法形成了静态方法。属于类而不再属于对象了,应该由类来访问,但是对象也可以访问。普通的方法由对象调用。静态方法中:只能访问属于类,不能访问属于对象。A:访问静态属性B:访问静态方法C:不能直接访问非静态属性D:不能直接访问非静态方法非静态方法中:属于类,属于对象都可以访问A:访问静态属性B:访问静态方法C:访问非静态属性D:访问非静态方法静态代码块代码块,就是一块代码。使用{}包裹起来的。普通代码块:{}包裹起来一段代码。注意作用域。
2021-09-22 09:38:36 573 1
原创 super关键字和this关键字的区别
super关键字子类对象的创建过程:子类的构造方法中,默认先调用父类的无参构造方法。如果没有显示的调用,那么隐含着super()。super关键字:可以访问父类的属性可以访问父类的方法指代父类的构造方法, 如果有多个,靠参数来区分。要在第一行。this关键字:作为本类的对象,访问本类的属性。如果在继承中,本类没有这个属性,那么再找父类中。访问本类的方法可以指代本类的构造方法:this()。要在第一行。...
2021-09-22 09:36:07 112
原创 i++和++i的区别:
i++和++i的区别:变量在独立运算时, 前 ++ 和 后 ++ 没有区别 。和其他变量放在一起, 前 ++ 和 后 ++ 就产生了不同。i++,给i加1,但是i++的值是i本身。(先计算,后加1)++i,给i加1,但是++i的值是i+1了。(先加1,后计算)...
2021-09-22 09:33:34 71
原创 代码优化细节
代码优化规范吴红斌代码优化 ,一个很重要的细节。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的。代码
2021-09-18 10:55:06 170
原创 死信队列
死信队列什么是死信队列一般来说,producer将消息投递到queue中,consumer从queue取出消息进行消费,但某些时候由于特定的原因导致queue中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信(Dead Letter),所有的死信都会放到死信队列中。“死信”消息会被RabbitMQ进行特殊处理,如果配置了死信队列信息,那么该消息将会被丢进死信队列中,如果没有配置,则该消息将会被丢弃。消费者消费消息 1)正常消费–>手动ack–>MQ从队列中删除消息
2020-11-18 10:12:47 20047 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人