自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 资源 (7)
  • 收藏
  • 关注

原创 java 面试宝典

1.类的加载过程:一个类的加载到执行总共两个过程,编译和执行,编译就是把我们的java文件编译成.class字节码文件,执行就是把.class加载进内存并解析生成对象的过程主要阶段有5个 加载 连接 初始化 使用 销毁加载 通过类加载器(双亲委派机制)将class文件加载到内存中去连接 分为 验证 准备 解析三个阶段 验证就是验证字节码是否符合文件规范(文件格式,元数据,字节码,符号引用),准备阶段主要是为变量分配内存并赋初值,解析就是将常量池的符号引用替换为直接引用初始化 执行类构造

2022-02-21 00:07:13 1139 1

原创 bio nio aio

1.bio同步阻塞,就是客户端与服务没发送一个通信就需要创建一个线程完成实现原理:bio 几个关键词acceptor监听客户端与服务端的每个请求,就是典型的一问一答模式,客户数量增多就需要频繁的创建和销毁线程,给服务器造成巨大的压力,后期呢改成用线程池的模式,bio 通信呢主要是通过socket,socketserver,实现通行2.nio 同步非阻塞客户端和服务端之间通过通道建立通信,nio可以在channal中实现读写通能,然后将这些通道注册到多路复用器上(selector),selector通过

2022-02-19 22:58:46 227

原创 redisson分布式锁,分布式事物

redis 分布式锁加锁机制如果一个客户需要加锁,且客户端面对的是一个redis集群,则客户端会根据hash值获取一台机器来进行加锁,会发送一大段lua脚本进行执行,保证代码的原子性(首先判断锁是否存在,添加一个锁到redis中,最后设置过期时间)锁互斥机制当第二个客户端来访问的时候通过判断发现锁已经存在,则判断当前客户端是否存在,显然是不存在的,客户端二则进入while循环阶段,尝试加锁watch dog 自动延时机制默认的锁的生存时间为30秒,如果超过30秒,客户端1还想拥有当前锁

2022-02-16 16:59:30 1063

原创 AQS原理及使用

AQS简介aqs的全称AbstractQueuedSynchronizer,抽象队列同步器AQS 核心原理核心变量state,是int类型代表加锁的一个状态还有一个变量记录当前加锁的线程,线程运行,通过cas操作,来修改state状态,state加1,操作线程设置为当前线程,每次都会判断操作线程是否是当前线程,如果是就加1 不是就继续等待,重入锁(state=2)假如说其他线程来访问发现已经加锁了 ,则放入队列中等待执行,(所以aqs还有个关键变量是消息队列,来存放加锁失败的对象)操作完成就会

2022-02-16 14:44:25 231

原创 Atomic原子类及底层原理

Atomic简介在多线程同时操作一个变量的时候,类似++这种方式,用锁就显得大材小用了,所以用到了atomic原子类,可以保证在多线程的情况下,安全高性能的执行程序更新变量,atomic原子类的底层不是传统意义上的锁机制,而是无锁化的cas机制,CAS 全称compare and set 比较后再设置简单理解就是多线程操作的情况下先获取一个值,看谁先发起cas操作,判断时候和获取的时候值一样 如果一样就修改值,如果不一样就重新获取再进行修改jdk1.8之前内就是通过cas机制不断地循环判断,这样在并

2022-02-16 14:23:55 1172

原创 volatile作用及原理

1.背景在java的内存模型中,每个线程都有自己的工作内存,同时还共享一个主内存。假如说有两个线程要读取同一个变量的时候,首先需要把值放到自己工作内存中,这样执行的时候就可以直接使用缓存值了 不需要读取主内存中的值了,但是这样有一个问题就是多线程的时候,其中一个线程修改了值之后无法同步到其他线程中,所以需要修改之后刷到主内存中去,这就是可见性volatile关键字:可见性:1.当线程1修改了变量之后会强制刷新主内存中的值,2.如果有其他线程有使用这个变量,就会强制让其他线程工作内存中的这个值时效

2022-02-16 13:58:23 182

原创 设计模式(单例模式)

1.基础式单例模式(线程不安全)public class Singleton { private static Singleton singleton; public Singleton() { } public static Singleton getInstance() { if (singleton == null) { singleton = new Singleton(); } retur

2022-02-14 16:07:55 132

原创 java多线程实现顺序执行

1.使用线程的join方法 public static void main(String[] args) { final Thread t1 = new Thread(new Runnable() { @Override public void run() { System.out.println("起床"); } }); final Thread t2

2022-02-14 15:07:45 1822

原创 springmvc执行定时任务失败问题

@EnableScheduling与@Scheduled是配套使用的只使用@Scheduled无法执行定时任务在springmvc中使用定时任务需要在任务类上加@service等注解,保证在启动的时候被扫描到在类上添加@EnableScheduling@Service@EnableSchedulingpublic class CESHI {然后在使用的类上加@Scheduled注解 @Scheduled(cron = "${primary.worker.cron}") @Pos

2021-11-17 10:01:09 1048

原创 redis详解

redis 数据库支持的类型1.string:键值对2.list:队列3.set:可重复队列4.hash:类似map5.zset:有序集合6.hyperloglog:统计基数7.geo:地图镜像8.pub/sub:消息订阅,消费redis持久化方式aof 持久化是以日志的方式记录服务器增删改操作,是通过追加的方式实现的,aof持久化有三种策略 每秒 每次 不记录 这样效率会有点影响,恢复数据的时候慢。rdb 指定时间内将内存中的数据写入磁盘,优势是在数据备份方面是一个非常不错的选择

2021-08-20 10:31:28 129

原创 springboot集成easyExcel

1.excel的上传下载,我们调用普通的解析excel的jar包比较复杂而且使用非常不方便,集成easyexcel之后在 springboot中如鱼得水,开发时长大大缩短时间集成首先导入maven包<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <versio

2021-08-20 10:27:39 714

原创 腾讯地图自定义覆盖物vue

1.在vue中使用腾讯地图并添加水波纹覆盖物2.首先需要创建覆盖物// 自定义水波纹覆盖物export default class 水波纹覆盖物 extends TMap.DOMOverlay { constructor(options) { super(options); } // 初始化:获取配置参数 onInit({ position, 引用的图标, id, } = {}) { Object.assign(this, { posi

2021-08-17 18:14:30 1600

原创 vue+腾讯地图标记弹框

腾讯地图添加自定义标记首先要加载腾讯地图 var center = new TMap.LatLng(39.984104, 116.307503);//设置中心点坐标 //初始化地图 var map = new TMap.Map("container", { center: center });然后创建事件 var markerLayer = new TMap.MultiMarker({ i

2021-08-05 16:46:34 1979 1

原创 vs code 格式化 换行问题

vs code 经常格式化后 出现多行问题 ,一个标签好几行 太影响编辑了修改vs code的设置 在设置中找到注释掉原先的新加入配置信息{"vetur.format.defaultFormatter.html": "js-beautify-html", "emmet.includeLanguages": { "wxml": "html" }, "minapp-vscode.disableAutoConfig": true, "explorer.conf

2021-06-22 11:28:57 1187

原创 设计模式(模板模式)

模板模式个人的理解在java中的使用场景更适合于一个固定模式的加载流程,定义一个模式,流程固定,通过抽象类方式 通过继承来不同的实现,例如加载配置文件,加载的流程是一样的 只是具体的实现不同上代码package com.jvm.模板模式;public class Main1 { public static void main(String[] args) { 架构类型 aa=new 用户(); aa.jiazai(); }}package

2021-06-21 10:03:51 113

原创 设计模式(策略模式)

策略模式和工厂模式很相似,但是确实有不同的地方,从我的理解看工厂模式一切都是封装好的,只能调用,策略模式更倾向通过当前状况去创建不同的类处理策略模式一种行为模式首先需要一个接口和工厂模式一样,举个例子刘备去江东,诸葛亮给力三个精囊妙计,package com.jvm.策略模式;public interface 策略模式 { void handler(String name);}package com.jvm.策略模式;public class 锦囊1 implements 策略模

2021-06-18 18:41:07 216

原创 设计模式(抽象工厂模式)

抽象工厂模式介绍及应用场景抽象工厂模式从个人理解上来说适应的场景就是我们所做的事情有相同的也有不同的地方,例如:造飞机,造火车,造汽车相同的地方我们都可以造轮子,车身,但是造飞机得造跑道,造机翼,造火车得造铁轨,汽车得造铁轨,造汽车就要汽车工厂,造火车需要火车工厂,造飞机需要飞机制造厂,...

2021-06-18 16:10:17 203

原创 相似实体类赋值

我们经常会遇到实体类赋值的情况,尤其是两个实体类有很多相似的变量,如果想传递参数一般只能 通过get set方法一个个赋值在springframework提供了赋值的工具类 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <

2021-06-15 14:52:07 908

原创 设计模式(工厂模式)

1.工厂模式简介纯粹个人理解,工厂模式更适合使用在 同一类型的东西,都有自己独特的数据,例如:车辆(大巴,小轿车,货车)车辆由轮子,车身,车座,发动机组成,但是不同车的轮子,车身,发动机时不一样的,所以我们就可以使用工厂模式来生产不同的车型。首先我们先定义一个能实现造车的接口,接口的方法有 造轮子,造车身,造车座,造发动机package com.jvm;public interface 造车接口 { void 造轮子(); void 造车身(); void 造车座();

2021-06-10 20:18:49 796

转载 如何保持长时间高效学习

高效学习不是靠天赋,而是拼技术,正如现代运动员的训练成绩和培训思路密切相关。非洲运动员在非洲与美国训练水平大相径庭导致成绩天壤之别,差别在与科学方法。高效学习两大训练内容:1,体力与精神力 2,学习科目与难度一,体力与精神力体力部分:大脑是人体最耗能的器官。 学习是体力活,与身体全身肌肉能量相连。长跑可锻炼长效学习能力,偏有氧训练。长时间学习(5小时以上)血糖波动大状态将不稳定,需要尽可能少吃多餐。推荐:零食+东方树叶纤维素与蛋白质相对于淀粉消化慢,是食物首选。同时应该避免糖分

2021-06-10 18:18:56 919

原创 布隆过滤器

布隆过滤器在好多地方用的到,例如大量数据去重操作,redis中的防止击穿等。布隆过滤器的优点是占用空间少,缺点是有可能会有重复数据,所以在绝对严谨的重复判断操作情况下 简单的布隆过滤器是无法使用的,而且无法进行删除操作,因为里面保存的是hashcode码 并不是具体数据,下面将通过java实现简单的布隆过滤器package com.jvm;import java.util.BitSet;public class BlooFilter { private static final int C

2021-06-08 18:55:06 826

原创 springboot+netty 服务端

搭建服务端启动类在springboot中利用netty替换tomcat,关闭tomcat与banner。添加扫描注解 import org.springframework.boot.Banner;import org.springframework.boot.WebApplicationType;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.

2021-06-07 14:47:20 1535

原创 mysql事物

事物的四种特性(ACID)1.原子性事物是数据库的逻辑最小单位,要么都执行,要么都不执行2.一致性事物执行的结果必须从一个一致性状态到另一个一致性状态,如果数据库只包含事物提交成功后结果,就保持了数据的一致性,如果中途某一阶段提交失败,事物就不是一致性了3.隔离性事物之间是相互隔离的,互不影响4.持续性事物提交之后,数据库数据就永久性保存,对后面的事物执行不产生影响事物的四种隔离级别1.读取未提交数据所有事物可以看到其他事物未提交的执行结果,也就是读取未提交的数据(脏读)2.读取提交

2021-06-07 14:34:46 851

原创 jvm运行原理及垃圾回收

Java代码编译是由Java源码编译器来完成,流程图如下所示:Java字节码的执行是由JVM执行引擎来完成,流程图如下所示这部分比较复杂,涉及特别底层的执行过程,不在此做出解释,一个.java文件到.class文件,到jvm加载类的一个过程。类的加载过程加载类加载阶段就是由类加载器负责根据一个类的全限定名来读取此类的二进制字节流到JVM内部,并存储在运行时内存区的方法区,然后将其转换为一个与目标类型对应的java.lang.Class对象实例,简单理解就是查找class文件并加载方法区。

2021-05-31 15:30:55 1108 1

原创 vs code界面设置

1.主题设置现在用one dark pro2.修改目录结构的缩进,现在目录结构缩进很不明显

2021-05-27 09:48:15 2067

原创 Visual Studio Code 中创建并运行vue项目

安装前先配置vue的原型环境node.js下载安装就可以了 ,默认安装就没问题,会自动配置好环境变量安装vue的脚手架,vue-cli1.安装Visual Studio Code 软件2.可以社会语言为中文3.安装完成之后 电脑重新建一个文件夹存放vue项目4. 按住啊 ctrl+shift+~ 启动命令行工具在命令行中输入vue init webpack test输入命令行之后可能会出现一个问题需要打开输入命令查看get-ExecutionPolicy,显示Restricte

2021-05-26 17:09:44 4357 11

原创 链表增删查(数据结构)

链表的添加 头插法 尾插法 ,某个字段前 后添加元素,删除元素package com.jvm;import lombok.ToString;@ToStringpublic class LinkList<T extends Comparable<T>> { private Node<T> head; private int size; public LinkList() { this.head = new Node&

2021-05-26 15:51:42 1055

原创 字典树的实现与应用

字典树概念字典树(TrieTree),又称单词查找树或键树。字典树的基本特性,根节点是不包含信息的,根节点到叶子节点之间的信息连接起来就是数据的所有信息,每个节点子节点的信息时不一样的。2.字典树java实现先定义每个节点package com.jvm;import lombok.Data;import java.util.Arrays;import java.util.HashMap;import java.util.Map;@Datapublic class DictT.

2021-05-24 10:32:27 1332

原创 java锁的概念

悲观锁 / 乐观锁悲观锁是当并发操作数据的时候为了防止自己在编辑数据的时候别人也在修改数据就会对操作的对象加锁,个人理解悲观是因为不管是否有其他线程在修改此数据都会加锁,其缺点是造成性能的损耗乐观锁是当并发操作的时候并不会直接对操作数据加锁,不管其他线程是否在操作当前数据都不会加锁,而是在提交数据的时候发现数据被修改了通过重试的方式来提交数据。公平锁 / 非公平锁公平锁自然是遵循FIFO(先进先出)原则的,先到的线程会优先获取资源,后到的会进行排队等待,而非公平锁是不遵循这个原则。重入..

2021-05-20 11:44:30 1085

原创 java线程池详解(源码)

为什么推荐用ThreadPoolExecutor创建线程池,而不用默认提供的四种线程池FixedThreadPool 和 SingleThreadPool:允许的请求队列长度为 Integer.MAX_VALUE,可能会堆积大量的请求,从而导致 OOM。CachedThreadPool 和 ScheduledThreadPool:允许的创建线程数量为 Integer.MAX_VALUE,可能会创建大量的线程,从而导致 OOM。所以建议用ThreadPoolExecutor创建线程池,用.

2021-05-19 18:45:14 1124

原创 Hashmap源码详解

1.通常我们会Map map=new HashMap();查看new的时候hashmap源码:构造一个空的hashmap 负载因子为0.75 初始容量为16 ,负载因为为什么是0.75 按我理解其实就是从统计学上得到的一个比较通用的参数,初始容量为什么是16在下面说 /** * Constructs an empty <tt>HashMap</tt> with the default initial capacity * (16) a.

2021-05-18 18:41:17 1055

原创 MYSQL 索引

1.什么是索引索引是对数据库表中一列或多列的值进行排序的一种结构。索引可以提高mysql的检索速度2.什么是一级索引简单理解就是索引和数据存储在同一个b+树的叶子节点上3.什么是二级索引简单理解就是b+树的叶子节点上存储的是索引和主键的(一级索引)先通过二级索引找到主键 ,再通过主键的索引找到存储的数据4.b+树5.b树6.mysql存储引擎mysql有好多搜索引擎,但常用的为innodb与myisam1)InnoDB支持事务,MyISAM不支持,这一点是非常之重要。事务是一种高级的

2021-05-17 18:38:32 1043

原创 磁盘基础知识

操作系统的作用操作系统的作用是什么,它是为了确定物理内存和虚拟内存的映射关系,结合一个程序的编译模式,最终确定虚拟地址空间的大小范围等,说简单点,就是虚拟内存和物理内存的管理都是操作系统来进行的,而且能有效的解决我们前面说到的内存占用问题,防止其他程序占用我们使用的这片物理内存空间,这就是我们说到内存空间的隔离。就是合理的管理空间。1.分页操作系统使用虚拟内存 来映射到物理内存,相对对磁盘,内存的大小有限而且价格昂贵,所以数据一般持久化到磁盘上,虚拟内存,物理内存,磁盘都是用分页作为最小单位,一般分页

2021-05-17 16:54:42 1096

原创 JVM 双亲委派模型

从虚拟机的角度来讲只有两种加载器一种是启动类加载器,另一种是其他类的加载器,但是他也是继承启动类加载器的从java来讲有三种加载器启动(Bootstrap)类加载器:启动类加载器是用本地代码实现的类加载器,它负责将JAVA_HOME/lib下面的核心类库或-Xbootclasspath选项指定的jar包等虚拟机识别的类库加载到内存中。由于启动类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用。具体可由启动类加载器加载到的路径可通过System.getProperty(“sun.bo

2021-05-12 17:16:41 1042

原创 为什么要重写hashCode()方法和equals()方法

1.首先我们看下object源码中如何定义hashcode与equals方法的public native int hashCode();public boolean equals(Object obj) { return (this == obj); }Object类中的hashCode()方法,用的是native关键字修饰,说明这个方法是个原生函数,也就说这个方法的实现不是用java语言实现的,是使用c/c++实现的,并且被编译成了DLL,由java去调用,jdk源码中不

2021-05-12 17:00:36 1362 3

原创 java算法(3)

1.给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。public int[] plusOne(int[] digits) { int base=1; for (int i = digits.length - 1; i >= 0; i--) { int num=digits[i]+base; digits[i]=num%10; base=num/10;

2021-04-07 16:46:34 1024

原创 java 算法(二)

1.回文数class Solution { public boolean isPalindrome(int x) { if (x == 0) return true; if (x < 0|| x % 10 == 0) return false; int fanzhuan = 0; while (x > fanzhuan) { fanzhuan = fanzhuan * 10 +

2021-03-30 11:44:24 1077

原创 分布式架构dubbo与springcloud

#分布式架构dubbo与springcloud##dubbodubbo 是一个高性能Java RPC 框架,Zookeeper作为Dubbo服务的注册中心,利用Zookeeper进行服务注册和订阅服务。####RPC是什么Remote Procedure Call,远程过程调用是计算机的一种通信协议,它不只一种应用层协议,包括rmi,hessian,http,webservice,thrift,memcached,redis.rest等协议。RPC框架包含4个核心的组件,分别是Client ,Se

2021-03-30 11:14:38 1194

转载 编程五大常用算法

1、递归与分治递归算法:直接或者间接不断反复调用自身来达到解决问题的方法。这就要求原始问题可以分解成相同问题的子问题。示例:阶乘、斐波纳契数列、汉诺塔问题斐波纳契数列:又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F1=1,F2=1,Fn=F(n-1)+F(n-2)(n>2,n∈N*))。分治算法:待解决复杂的问题能够简化为几个若干个小规模相同的问题,然后逐步划分,达到易于解决的程度。1、将原问题分解为

2021-03-17 17:25:30 6592

原创 java 算法题(1)

public static void main(String[] args) { //给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 int target = 12; int[] aa = {3, 6, 4, 8, 22}; for (int i = 0; i < aa.length; i++) { int base = ta..

2021-03-15 18:12:26 1119 1

设计模式(抽象工厂模式).zip

抽象工厂简单实现,工厂的工厂

2021-06-18

redis-window安装包+redis可视化工具.rar

redis-window安装包+redis可视化工具

2019-11-29

elasticsearch_elasticsearch-head_nodejs.rar.rar

elasticsearch,及elasticsearch-head ,nodejs 安装包 经过安装部署显示没有问题 ,特此上传整套资源

2019-10-25

kafka整套安装文件.rar

kafka 与zookeeper的安装包 还有kafka的可视化工具kafkatool_64bit 安装文档在博客中

2019-10-23

Bootstrap+Table.zip

Bootstrap+Table的所有相关插件

2019-10-23

Eclipse主题插件

Eclipse主题插件

2017-05-04

python对于eclipse插件

2017-05-04

空空如也

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

TA关注的人

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