后端
mybatis plus的查询语句
1 | User user = userMapper.selectOne(new QueryWrapper <User>().lambda().eq(User::getId, id)); |
复制值
1 | BeanUtils.copyProperties(原对象, 新对象, "忽略字段"); //只要属性匹配,源类和目标类不必匹配,甚至可以相互派生 |
时间
获取当前时间
1 | //new Date() 得到Date类型 |
关于时间的转换
1、LocalDateTime可以做日期的加减很方便
2、OffsetDateTime计算00:00:00及23:59:59很方便
1 | //Date转LocalDateTime |
两个List集合求交集、并集和差集
1 | public static void main(String[] args) { |
list赋值问题
如果使用了赋值方式,如 list1 = list0 ,然后 list1.retainAll(list2) 或者 list1.removeAll(list2)其实list0的值也变化了。因为lis1和list0指向了同一个地址
1 | List<String> s1 = new ArrayList<>(Arrays.asList("a,b,c,d,e,f,g,h".split(","))); |
而如果使用 List
1 | List<String> s1 = new ArrayList<>(Arrays.asList("a,b,c,d,e,f,g,h".split(","))); |
我们在使用 removeAll() 方法时,有时候会遇到报错或者失效的情形,比如List中是一个一个对象类,且没有重写过equals和hashCode方法,就会带来这种不相等的情况,从而导致失效
addAll
arraycopy
clone
Arrays.copyOf
for
前后端接口
传递参数
GET
1 | 前端: |
POST
1 | 前端: |
发送post请求的工具方法
1 | public static String sendPost(String url, String data) { |
发送GET请求的工具方法
1 | public static String doGet(String url) throws IOException { |
获取请求者ip的工具方法
1 | public static String getIpAddr(HttpServletRequest request) { |
正则
对非法字符校验
1 | if(new RegExp("[^a-zA-Z0-9\_\u4e00-\u9fa5]","i").test(this.name)){ |
手机号的正则表达式
1 | /^[1][3-9][0-9]{9}$/ |
前端
localStorage
创建缓存:localStorage.setItem('userInfo', userInfo);
读取缓存:localStorage.getItem('doEdit', this.doEdit);
清除所有缓存:localStorage.clear();
清楚指定缓存:localStorage.removeItem('userinfo');
用ES6的类来封装,写一个function给localStorage设置过期时间:
引入这个class可以参考:https://blog.csdn.net/zgh0711/article/details/80432609
本质就是写一个js文件,然后main.js中import ,将它挂载到 vue 对象的原型上
1 | //先 import 引入 |
在组件中可以直接调用相应的方法
1 | this.storage.setItem({ |
写好的class:
1 | export class storage{ |
修改密码
修改mysql
登录到mysql mysql -uroot -p原密码
–>
本地密码:set password for root@'localhost' = password('新密码');
远程连接密码:set password for root@'%' = password('新密码');
修改redis
找到redis.conf配置文件 –>requirepass 新密码
–>重启redis
修改linux服务器
以root身份登录 –> passwd root
–>输入新密码 –>确认密码 –> 新密码重新登录