自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (4)
  • 收藏
  • 关注

原创 代码重构分享

快速浏览30秒,能否读懂一个大概意思。

2023-10-31 15:59:57 135

原创 jvm问题排查

命令查询资源信息top:显示系统整体资源使用情况vmstat:监控内存和 CPUiostat:监控 IO 使用netstat:监控网络使用。

2023-05-28 11:21:01 813

原创 JAVA知识体系

java知识体系

2022-12-06 09:59:29 2085

原创 面试问题整理

目录如果项目急需上线怎么办当用户变多时,系统如何拆分(AKF)如果项目急需上线怎么办加班加人、加资源功能排优先级,保证重要的能用,后期迭代当用户变多时,系统如何拆分(AKF)x:水平拆分,集群部署y:业务拆分,根据功能模块进行拆分z:数据拆分,根据数据的种类进行拆分(行业、地区)...

2021-11-18 16:10:54 121

原创 java代码证明CPU乱序执行

JAVA证明CPU乱序执行

2021-11-18 11:20:35 595

原创 mybatis 开启批量提交

## 当我们在开发中,需要多次update或者insert,但是又想提高效率,这时可以用批量提交的方式。批量提交最常见的就是在mapper中使用foforeach

2021-06-07 11:43:28 1121

原创 如何提升QPS

网络减少网络开销(减少服务间调用,redis、mysql等访问)让服务能力对等(例如eureka url顺序打乱)使用短url,短请求参数实时数据改为长连接(不要使用轮询)合并多个请求为一个请求cpu能使用异步就使用异步能用多线程就用多线程使用mq进行流量削峰多的数据,分批次访问mysql、redis、tomcat增加 最大连接数内存使用缓存(减少操作数据库)磁盘sql优化、索引优化...

2021-04-11 19:17:02 278

原创 eureka相关

eureka优化及注意事项服务少时,应该关闭自我保护注册中心两台一下,相互写对方url,如果配置三台及以上,需要把另外的url全部写上注册中心url打乱写,因为在实际注册时,会按照填写的顺序进行注册缩短服务剔除时间、发现时间、拉取时间、心跳时间以及集群间同步间隔时间关闭服务时,先停止服务,在手动进行下线eureka一般默认配置为3台,如果配置修改默认配置eureka cap中满足哪些,为什么cap中不满足c,原因如下:eureka中的三级缓存(registry、readWrite

2021-04-11 18:53:07 74

原创 多线程与高并发

对象创建过程class loading:加载class到内存class linking:建立关联(1.校验格式 2.关联对象 3.初始化默认值)class initializing: 静态变量初始化申请内存成员变量赋默认值调用构造方法(1.成员变量顺序赋初值2. 执行构造方法语句)普通对象构成对象头 markword(8字节)class pointer:class类指针(不启动压缩8个字节,启动压缩4个字节)实例数据(String类型不启动压缩8个字节,启动压缩4个字节)padd

2021-04-08 16:27:45 185 4

原创 动态代理除了cglib还了解哪些

asm(cglib底层实现,使用了责任链+观察者模式,主要类ClassReader, ClassWriter)instrument(类拦截功能,可以直接修改class二进制,java agent,idea破解就是用的这个)

2021-04-05 16:56:37 116

原创 多线程的创建方式

多线程的几种实现方式常用方法:这里是引用方法一:继承Thread类创建一个继承于Thread类的子类;重写Thread类的run()方法;创建Thread子类的对象;通过对象调用start()方法;案例一package ThreadDemo;public class MainThread {public static void main(String[] args) {DemoThread mt = new DemoThread();mt.start();new DemoSlee

2021-04-05 16:27:38 45

原创 对象引用强软弱虚

1. 强引用普通new 对象就是使用强引用2. 软引用当内存不足时,软引用会被回收3. 弱引用只要遇到垃圾回收,就会被回收掉4. 虚引用如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。...

2021-04-05 16:23:27 91

原创 DCL单例是否需要加volatile,为什么

为什么需要加,为什么因为cpu是乱序执行的,如果不加,在多线程情况下,会得到半初始化的对象volatile是如何实现的字节码层面:ACC_VOLATILEjvm层面:使用内存屏障LoadLoad屏障:对于这样的语句Load1; LoadLoad; Load2,在Load2及后续读取操作要读取的数据被访问前,保证Load1要读取的数据被读取完毕。StoreStore屏障:对于这样的语句Store1; StoreStore; Store2,在Store2及后续写入操作执行前,保证Stor

2021-04-05 15:10:23 218 1

原创 java对象创建过程

class loading先将class字节码文件加载到内存中class linking建立关联verification: 对加载进来得二进制进行校验preparation: 静态变量设默认值resolution: 解析,将字符串代表的引用进行关联替换class initializing: 类初始化,静态变量设置初始值,执行静态语句块申请对象内存成员变量赋默认值调用构造方法成员变量顺序赋值执行构造方法语句...

2021-04-05 14:55:03 59

原创 GC相关整理

目录什么是垃圾如何定位垃圾常见的垃圾回收算法对象分配过程jvm常见垃圾回收器垃圾收集器跟内存大小的关系什么是垃圾没有任何引用所指向的对象就是垃圾如何定位垃圾引用记数跟可达算法常见的垃圾回收算法标记清除:从根对象开始标记,之后将未标记的对象进行清理,适用于存活对象叫多的情况缺点:扫描两次,效率偏低拷贝算法:开辟一块内存,将存活对象顺序拷贝到新开辟的内存中,适用于存活对象较少的情况。优点:只扫描一次,效率较高,不会产生碎片缺点:空间浪费,需要移动对象。标记压缩:标记的同时进行移动,

2021-04-05 10:49:40 95 2

原创 mysql优化

目录数据类型优化主键的选择字符集的选择适当拆分适当的数据冗余索引优化sql语句优化数据类型优化尽量使用可以正确存储数据的最小数据类型更小的数据类型通常更快,因为它们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期更少,但是要确保没有低估需要存储的值的范围,如果无法确认哪个数据类型,就选择你认为不会超过范围的最小类型整型比字符操作代价更低因为字符集和校对规则使字符比较比整型比较更复杂经常查询的列,应该尽量避免使用有null如果查询中包含可为NULL的列,对mysql来说很难优化,因

2021-04-03 23:37:27 71

原创 B树跟B+树的区别

B树每个节点都存储key和data,所有节点组成这棵树,并且叶子节点指针为null,当数据量大时,会导致树深度比较深B+树非叶子节点存放key,叶子节点存放data

2021-04-03 17:51:19 53

原创 InnoDB锁

共享/排它锁(Shared and Exclusive Locks)按照兼容性来分类,InnoDB有共享锁和排它锁两种行级锁。共享锁(S):又称读锁。允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。排他锁(X):又称写锁。允许获取排他锁的事务更新数据,阻止其他事务取得相同的数据集共享读锁和排他写锁。若

2021-04-03 17:09:17 111

原创 事务的四个特性及隔离级别

原子性(A):一个事务中的操作,要么全部成功,要么全部失败一致性©:数据库总是从一个一致性的状态转换到另外一个一致性的状态隔离性(I):一个事务的修改在最终提交前,对其他事务是不可见的持久性(D):一旦事务提交,所做的修改就会永久保存到数据库中...

2021-04-03 13:52:37 83

原创 mysql名词解释

名词解释回表基于非主键索引的查询需要先扫描一遍B+树查询出主键id,然后根据主键再次进行扫描,最终返回查询出的数据覆盖索引在搜索的叶子节点中如果能获取到查询的所有列数据,无需回表的过程称之为索引覆盖最左匹配在一个表中,如果有组合索引,那么组合索引在进行查询的时候,遵循最左匹配,即必须要匹配到第一个列之后,才能匹配第二个列索引下推数据筛选的过程下移到存储引擎层来完成,而不是在server层完成...

2021-04-03 13:36:49 323

原创 mysql存储引擎对比

名称存储位置数据结构事务全文索引行锁外键索引类型数据文件后缀MyISAM磁盘B+树不支持支持不支持不支持非聚簇frm是表定义文件,ibd是数据文件InnoDB磁盘B+树支持5.6后支持支持支持聚簇frm是表定义文件,myd是数据文件,myi是索引文件memory内存hash...

2021-04-03 13:12:41 66

原创 如何提高QPS

能用多线程就用多线程增加连接数(mysql/redis/tomcat)服务无状态,便于横向扩展让服务能力对等(eureka的url打乱顺序)减少响应时间使用缓存

2021-04-03 09:40:00 257

原创 如何估算线程数

线程数=cpu可用核数/(1-阻塞系数)io密集型接近1 cpu密集型接近0

2021-04-03 00:14:18 191

原创 mysql相关

变量大小能小则小尽量使用类型匹配的进行存储,例如,日期类型能用整形的情况下,绝不使用字符串如果可以避免的情况下,尽量不存储null如果字符串长度波动小,并且小于255以内,应该首选char修改数据类型,会导致锁表,所以慎用如果存储的字符串固定(例如 男/女) 用枚举代替字符串存储,数据库底层会采用1-2个字节进行存储适当的冗余,以空间换时间适当的拆分,将一些不常用的字段,拆分到另外一张表中,当需要用到这张表的数据时,进行关联查询使用到索引时,采用索引全匹配/索引最左匹配/索引前缀匹配( .

2021-03-19 19:59:55 68

原创 java 如何在类实例化后,保证其不可变

如何保证一个类在初始化完毕后,其所有参数不可变,即在创建时做一些校验,降低代码的错误性,在该类初始化完毕后,所有属性不可再做修改我们可以使用以下方式来解决public class NutritionFacts { // require private final int servingSize; // require private final int servings; private final int calories; private final

2021-01-02 20:18:47 243

原创 java 如何防止类被实例化

我们在写代码过程中,常常会定义一些工具类,这些类的所有方法都是静态的,所以这些类的实例化是没有必要的,那么如何保证这些类不被实例化呢方法1:将该类定义成抽象类这种方式虽然能避免该类不能被创建实例,但是他的子类可以创建对象方法2:将该类的构造方法私有化这种方式正常情况下,不能new对象,但是,可以通过java反射,来创建对象,所以该方式也不可行方式3:在方法2的基础上,在私有构造方法中,抛出异常public class UntilityClass { private UntilityClas

2021-01-02 18:31:25 2960

原创 mac 安装brew

控制台输入/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

2020-12-25 11:45:10 381

原创 linux学习02

挂载概念为什么需要挂载,因为文件系统不能被用户直接使用。需要有一个特定的入口,windows系统中的入口被称之为盘符,linux系统中的入口被称为目录。将文件系统和目录(盘符)结合的动作,叫做挂载。挂载的意义就是为了读取系统文件中的内容命令#挂载mount [文件系统] [目录]#例 mount /dev/cdrom /cd-rom#卸载(卸载命令后面跟着的目录时已经被文件系统使用的目录)umount [目录]远程拷贝从本地拷贝数据到远程的服务器:scp [-r] {pat

2020-11-20 17:57:46 680

原创 linux系统学习01

查看本机ip地址ifconfig配置网卡随服务器启动而启动vi /etc/sysconfig/network-scripts/ifcfg-eth0命令解释vilinux系统自带的文本编辑器etclinux系统中所有配置文件默认存放目录sysconfig系统配置文件的存放目录network-scripts网络配置文件的存放目录ifcfg-eth0具体网卡配置文件打开配置文件之后,按i进入编辑模式将ONBOOT=no改为yes按esc

2020-11-19 15:24:44 111

原创 vue整合echarts,动态改变宽高

npm引入npm install echarts --savemain.js中添加import echarts from “echarts”Vue.prototype.$echarts = echartsecharts.vue<template> <div :id="id" :style="{width: width, height: height}"></div></template><script> // 引入

2020-10-19 16:53:56 2787 1

原创 vue props传入render函数,实现动态组件嵌套

本文基础是已经了解render函数的使用方式,如果您还不了解render是什么,请阅读vue官方-渲染函数 & JSX任何一个功能都离不开需求,所以先上图,公司要求做这样一个页面从图里可以看出来其实外边框是一样的,只不过位置跟大小还有里面的内容是不一样的,所以想到能不能把外边的边框单独抽出来,里面单独渲染封装的组件代码如下:<template> <div :style="boxSizeStyle"> <div class="dataAll .

2020-10-19 16:30:50 4245

原创 指定总和、随机生成给定长度的随机数

public static void main(String[] args) { int count = 20000; List<Integer> list = new ArrayList<>(); createNumList(list, 20, count); System.out.println(list); } public static void createNumList(List<I.

2020-09-04 15:56:01 438

转载 如何服务器部署多个tomcat,session冲突问题

当同一台服务器,部署多个tomcat时,由于sessioncookie默认是一样的,所以会导致登录这个系统,另一个系统就需要重新登录解决办法打开server.xml,host标签中加入<Context path="" docBase="ROOT" sessionCookieName=”projectname”></Context>属性说明path属性指的是项目的名称,如果是直接访问URL,这里就填写空;docBase属性指的项目的名称,可以自定义也可以为ROOT,那就指

2020-07-17 18:49:14 591

原创 vue 整合富文本编辑器vue-tinymce

vue引入npm install @packy-tang/vue-tinymcenpm install tinymce复制文件夹复制node_modules下tinymce到src/assets下(如果有public,也可以选择public)复制完这个文件夹,这个插件就可以删除了npm uninstall tinymce下载语言包官方链接选择Chinese (China) 进行下载assets/tinymce中新建目录langs,将语言包zh_CN.js放到该文件夹下ind

2020-07-15 18:57:06 1756

原创 vue 使用math.js 精确计算加减乘除方法

npm引入npm install mathjs --save在main.js中引入let math = require('mathjs')Vue.prototype.$math = math创建工具类并定义方法创建utils.jslet $math = require('mathjs');export const math = { add() { return comp('add', arguments) }, subtract() { return comp

2020-07-13 16:26:27 9602

原创 java mail使用IO流发送附件

需求通过ftp获取文件输入流,将该输入流直接作为邮件附件发送。实现方式网上找了半天都没有合适的答案,之前有写过上传附件的方法,查看后发现,上传本地附件需要依赖FileDataSource,这个类继承了DataSource接口,所以突发奇想,能不能自己写一个类,继承这个接口,这样的话就可以实现接口定义package javax.activation;import java.io.IOException;import java.io.InputStream;import java.io.Out

2020-07-10 16:35:55 1938 4

vue echarts(2020/10/22更新)

echarts作为vue组件进行使用,可实现一个页面加载多个echarts实例,互不冲突。页面大小变动自适应。文章链接:https://blog.csdn.net/qq_35134375/article/details/109164031

2020-10-22

tinymce整合vue

tinymce整合vue代码,实现视频自定义上传、图片自定义上传功能。整合文档可参考:https://blog.csdn.net/qq_35134375/article/details/107366909

2020-10-21

tinymce编辑器内预览视频

解决tinymce编辑器内不能预览视频,替换tinymce/plugins/media/plugin.min.js即可。因为默认富文本编辑器内是一个img标签,并不能播放。

2020-10-21

vue props传入render函数,实现动态组件嵌套

使用vue的render函数实现组件之间动态嵌套功能。文章链接:https://blog.csdn.net/qq_35134375/article/details/109159574

2020-10-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除