MySQL调优

  1. 选择最合适的字段属性:类型、长度、是否允许NULL等;尽量把字段设为not null;

  2. 要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

  3. 应尽量避免在 where ⼦句中对字段进行行 null 值判断、使⽤用!= 或 <> 操作符,否则将导致引擎放弃使⽤用索引⽽而进⾏行行全表扫描

阅读更多   2019/11/17 posted in  MySQL&MariaDB

ClassNotFoundException和NoClassDefFoundError的区别

ClassNotFoundException NoClassDefFoundError
从java.lang.Exception继承,是一个Exception类型 从java.lang.Error继承,是一个Error类型
当动态加载Class的时候找不到类会抛出该异常 当编译成功以后执行过程中Class找不到导致抛出该错误
一般在执行Class.forName()、ClassLoader.loadClass()或ClassLoader.findSystemClass()的时候抛出 由JVM的运行时系统抛出
2019/11/5 posted in  Java

Java 7中HashMap和HashTable中对于hash的实现,我们来做个简单的总结

HashMap默认的初始化大小为16,之后每次扩充为原来的2倍。
HashTable默认的初始大小为11,之后每次扩充为原来的2n+1。

阅读更多   2019/10/22 posted in  Java

JMM

JVM将内存划分为五大块:

  • 堆 (进城内所有线程共享)
  • 方法区(进程内所有线程共享)
  • 虚拟机栈(每个线程独立)
  • native本地方法栈(每个线程独立)
  • pc计数器(每个线程独立)
阅读更多   2019/10/10 posted in  Java

JVM

栈,就是说的虚拟机栈或者说是虚拟机栈中局部变量表部分,局部变量表存放了编译期可知的各种基本数据类型,对象引用
本地方法栈与虚拟机栈发挥作用非常相似,
堆,Java堆是虚拟机所管理的内存中最大的一块,被所有线程共享,存放对象实例
Java堆是垃圾收集器管理的主要区域
方法区,与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息丶常量丶静态变量丶即时编译器编译后的代码等数据,是堆的一个逻辑部分

栈管运行,堆管存储

2019/9/30 posted in  Java

xxl-job简约安装与使用

XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。

下载源码

通过命令

git clone https://github.com/xuxueli/xxl-job/

阅读更多   2019/9/2 posted in  SpringBoot

Spring Boot Admin

Spring Boot Admin 是一个管理和监控 Spring Boot 应用程序的开源软件。每个应用都认为是一个客户端,通过HTTP或者使用注册中心注册到 Admin server中进行展示,Spring Boot Admin UI 部分使用 AngularJs 将数据展示在前端。
Spring Boot Admin 是一个针对spring-boot 的 actuator 接口进行UI美化封装的监控工具。他可以:在列表中浏览所有被监控 spring-boot项目的基本信息,详细的Health信息、内存信息、JVM信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等,还可以直接修改logger的level。

阅读更多   2019/8/7 posted in  SpringBoot

微服务中,服务熔断和服务降级的区别

相同点

  1. 目的很一致,都是从可用性可靠性着想,为防止系统的整体缓慢甚至崩溃,采用的技术手段;
  2. 最终表现类似,对于两者来说,最终让用户体验到的是某些功能暂时不可达或不可用;
  3. 粒度一般都是服务级别,当然,业界也有不少更细粒度的做法,比如做到数据持久层(允许查询,不允许增删改);
  4. 自治性要求很高,熔断模式一般都是服务基于策略的自动触发,降级虽说可人工干预,但在微服务架构下,完全靠人显然不可能,开关预置、配置中心都是必要手段
阅读更多   2019/7/31 posted in  SpringCloud

解决vue-router动态添加路由router.addRoutes()方法不更新路由的问题

在router.addRoutes()方法之前,添加

router.options.routes=accessRoutes

片段代码如下:

          // generate accessible routes map based on roles
          // await store.dispatch('user/generateRoutes')
          const accessRoutes = await store.dispatch('user/generateRoutes',{ root: true })
          router.options.routes=accessRoutes
          console.log(accessRoutes)

          // dynamically add accessible routes
          router.addRoutes(accessRoutes)
2019/7/24 posted in  Vue

Vue项目权限

vue项目实现动态路由的方式大体可分为两种:

  1. 前端这边把路由写好,登录的时候根据用户的角色权限来动态展示路由,(前端控制路由),vue-element-admin就是这么玩的
  2. 后台传来当前用户对应权限的路由表,前端通过调接口拿到后处理(后端处理路由)
    这两种方法各有优点,效果都能实现
2019/7/18 posted in  Vue