摘要: 1、为了可以使用自定义sql 2、sonar可以提供预检,直接预检测sql语法比脚本测试代码要简单 3、国内mybatis的社区活跃度比几个其他框架都要活跃 4、可操控性和细粒度要更高,学习代价也低 阅读全文
posted @ 2023-08-24 14:11 时间羚羊 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 通常来说,比较规范的写法和定义: 1、公用方法,尤其是业务上的公用方法是不做参数校验的,由调用方校验参数,因为公用方法通常简短且正确性要有保障,导致出错的原因通常是外部导致的,所以参数校验和日志的打印由调用方去写。 2、公用方法对于参数进行操作以后,那么还是会打印一些日志的,比如调用第三方接口之类的 阅读全文
posted @ 2023-08-24 14:09 时间羚羊 阅读(22) 评论(0) 推荐(0) 编辑
摘要: clone是一个native的方法,是直接拷贝一个对象的副本放到新的内存,不会调用构造方法给属性赋值,所以比new更快,同时这也是浅拷贝。我们也可以调用clone方法之后,再对属性进行重新赋值完成深拷贝。 适用场景:构造方法复杂,属性较多,属性值是大字段,结构层次比较深都适用 阅读全文
posted @ 2023-08-19 15:11 时间羚羊 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 1、eden和survivor不够时触发young gc 2、老年代不够,触发full gc、mix gc、 3、元数据区不够 触发full gc 4、system.gc()但是具体执行时机是无法确定的,通常sleep一下让出cpu,增加gc概率 阅读全文
posted @ 2023-08-17 18:57 时间羚羊 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 因为相同字符串在常量池,容易获取相同对象锁,造成阻塞 阅读全文
posted @ 2023-08-17 18:34 时间羚羊 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 1、同类方法调用,因为同类方法调用时是未增强的方法 2、异常被捕获 阅读全文
posted @ 2023-08-17 18:31 时间羚羊 阅读(6) 评论(0) 推荐(0) 编辑
摘要: public int gcd (int a, int b) { int mode = a % b; if(mode == 0) { return b; } return gcd(b, mode); } 阅读全文
posted @ 2023-07-26 14:08 时间羚羊 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 数据范围:1 \leq n \leq 401≤n≤40要求:时间复杂度:O(n)O(n) ,空间复杂度: O(1)O(1)示例1输入:2返回值:2说明:青蛙要跳上两级台阶有 阅读全文
posted @ 2023-07-26 10:55 时间羚羊 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 事务是一组操作,有四个特性(acid),原子性(一起成功,一起失败)、一致性(事务的执行结果符合串行执行的结果)、隔离性(事务之间互不影响)、持久性(要有持久存储数据的介质)。 一般任何包含事务操作的软件,操作日志有很重要的保证功能,通常数据写入和日志写入是多个线程执行的,如果数据写入时出错,可以通 阅读全文
posted @ 2023-07-24 09:33 时间羚羊 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 有时候根据不同的要求,算法的目的可能是计算特定值,也可能是返回某个要求的全部可能的值。 递归就是完全不去控制执行过程的一种算法,如果返回全部可能的值,就极大可能重复执行之前的已有操作。 动态规划则是利用一种数据结构,通常可能是列表,保存中间运行的值,减少已经执行的运算,或者根据列表内容剔除将要执行的 阅读全文
posted @ 2023-07-23 08:12 时间羚羊 阅读(208) 评论(0) 推荐(0) 编辑