@PostConstruct使用
在项目中我们可以使用@PostConstruct去初始化一些操作 例如 1234567891011121314151617181920212223242526package com.ruben;import com.ruben.dao.MpUserMapper;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.PostConstruct;import javax.annotation.Resource;@SpringBootTestclass SimpleSpringbootApplicationTests { private String name; @PostConstruct public void init() { name = "ruben"; } @Test void test(...
js进行深拷贝
共夸不受污泥染,没有污泥哪有莲。——《赏荷》 对象深拷贝 123456789101112131415161718192021222324252627282930export function deepClone (data) { var type = getObjType(data) var obj if (type === 'array') { obj = [] } else if (type === 'object') { obj = {} } else { // 不再具有下一层次 return data } if (type === 'array') { for (var i = 0, len = data.length; i < len; i++) { data[i] = (function () { if (data...
debugのChrome篇
我来到这个世界为的是看太阳和蔚蓝色的田野。——巴尔蒙特 chrome中如何debug?我们可以打开chrome的控制台 找到我们的文件 然后在想要调试的地方打断点 然后执行到此处的时候就会触发调试 我们可以点击右侧的Step into next function call来执行下一步函数调用 可以点击Resume script execution放行到下个断点 然后Step over next function call则可以执行步过,执行到当前函数结尾 Step out of current function步出,则可以跳出我们当前执行的函数 Step和我们第一个Step into next function call差不多,都是执行下一步 Activate breakpoints则是禁用断点 最后一个Pause on exceptions则是在所有异常发生时暂停程序,开始调试 我们也可以直接在代码里右键,点击执行到当前代码 Call Stack区域可以查看我们当前函数以及它的调用者 甚至 调用者的调用者… 下方的Scope区域可以观测我们的参数,...
springboot使用异步任务
一个简单的异步任务在springboot中已经为我们封装好,这里我们可以直接在函数上加@Async注解即可使用 注意,我们要接收返回值的话,函数返回类型需要为Future 例如,我们这里使用异步任务和建造者模式去创建一个对象 123456789101112131415161718192021222324252627282930313233343536package com.ruben;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.scheduling.annotation.Async;import org.springframework.scheduling.annotation.AsyncResult;import java.util.concurrent.ExecutionException;import java.util.concurrent.Future;/** * @Cl...
@Transactional
事者,生于虑,成于务,失于傲。——管仲 如果想让该类或方法被事务支持,则可以加上@Transactional注解@Transactional有几个参数:value/transactionManager——是用来指定事务管理器,这个不太常用timeout——事务超时时间,为传播特性为PROPAGATION_REQUIRES_NEW和PROPAGATION_REQUIRED定制,创建新事务时旧事务的超时时间,出场率也不是特别高下面的则是常用的参数readOnly——是否为只读事务,如果为true时,进行查询操作效率会更高,但不能进行除查询外的操作,会报错rollbackFor/rollbackForClassName——指定需要回滚的异常noRollbackFor/noRollbackForClassName——指定不需要回滚的异常默认对编译异常不会滚 对非受检异常回滚,例如RuntimeException就会回滚事务 isolation——配置隔离级别事务丢失 回滚丢失——另一个事务回滚导致当前事务丢失 覆盖丢失——另一个事务提交导致当前事务丢失 ...
setInterval
坍圮的殿堂总还是庙,冷落的圣像依然是神。 在前端开发中我们或许想定时做一些操作 可以使用一个setInterval函数去做 123456// 定时控制台打印rubensetInterval(function () { console.log("ruben");}, 1000);// 定时控制台打印achao,注意这里是使用字符串形式写法setInterval('console.log("achao");', 1000); 可以打开控制台看到效果
springboot单元测试
每个圣人都有过去,每个罪人都有未来。 ――王尔德 我们在开发中经常会进行测试,如果是需要springboot环境,我们就可以使用spring-boot-starter-test 引入依赖 1234567891011<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </...
vue路由NavigationDuplicated错误
有志者,事竟成,破釜沉舟,百二秦关终属楚;苦心人,天不负,卧薪尝胆,三千越甲可吞吴。——蒲松龄 如果遇到了Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location异常 可以在router里配置一下 1234567891011121314151617181920import Vue from 'vue'import Router from 'vue-router'// 解决路由重复问题const originalPush = Router.prototype.pushRouter.prototype.push = function push(location) { return originalPush.call(this, location).catch(err => err)}Vue.use(Router)export default new Router({...
实用避免空指针的工具类
一星陨落,黯淡不了星空灿烂;一花凋零,荒芜不了整个春天。——巴尔扎克 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495package com.ruben.utils;import com.ruben.pojo.User;import org.thymeleaf.expression.Lists;import sun.reflect.misc.ReflectUtil;import java.math.BigDecimal;import java.util.ArrayList;import java.util.List;import java.util.Optional;import java.util.concurrent.atomic.AtomicReference;...
elementUI隐藏组件
追求使你充实,成功和失败都是伴奏。——史铁生 关于ElementUI相信大家只要看过我这篇博客,都能有一定的了解 今天聊聊ElementUI官方文档都找不到的一个隐藏组件 那便是滚动条el-scrollbar 我们在开发中可能会用到数据量稍微多一点点的情况 例如我这里写的一个v-for 123456789<div style="width: 20%"> <div v-for="(item, i) in tableData" :key="i"> <div v-text="item.name"></div> <div v-text="item.name"></div> <div v-text="item.name"></div> <div v-text="item.name"></div> &...
