自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 收藏
  • 关注

原创 eureka注册中心做了哪些事情/原理?

eureka client默认通过json的数据格式从eureka server获取注册表的信息,并将这份信息缓存在内存中,然后eureka client自己在对数据做处理找到自己要调用的服务信息,这个注册表信息每30秒更新一次;eureka client默认会每30秒向eureka server发送一次心跳来进行服务续约,通过这一行动来表示自己没有出现故障;eureka client在关闭的时候回向eureka server发送下线请求,从而将该eureka client在注册表中剔除;

2024-02-23 00:43:32 741 2

原创 Spring Cloud和dubbo有什么区别?

1.dubbo有很多不全面的方面,需要继承很多东西,例如日志,监控,追踪等等,但是Spring Boot自己都自带了。2.Dubbo使用了第三方的ZooKeeper作为其底层的注册中心,实现服务的注册; SpringCloud使用Spring Cloud Netflix Eureka实现注册中心;3.服务网关: Dubbo没有本身的实现,只能通过其他第三方技术的整合; SpringCloud有Zuul路由网关。...

2022-01-18 19:09:53 2219

原创 ConcurrentHashMap,HashMap和Hashtable?

ConcurrentHashMap是线程安全的,并且效率也不低,因为它是对每个线程都分别加锁,不是对整个加一个大的锁,它的锁是加在segment上的。HashMap是线程不安全的,可以存储null值,但是只能有一个null键,因为它是继承map的所以也是键值对存储,它的存储长度默认是16,每次扩容为原来的2倍,并在java8以后对HashMap有了更深一步的提升,它在解决哈希冲突时,当链表长度大于等于8时将转换成红黑树,当链表长度小于等于6时再转换成链表,中间有一个7是因为避免频繁的在链表和红黑树之间

2022-01-13 16:09:43 312

原创 synchronized的底层实现原理

底层使用指令码方式来控制锁的,映射成字节码指令就是增加来两个指令:monitorenter和monitorexit。当线程执行遇到monitorenter指令时会尝试获取内置锁,如果获取锁则锁计数器+1,如果没有获取锁则阻塞;当遇到monitorexit指令时锁计数器-1,如果计数器为0则释放锁。...

2022-01-05 14:44:51 314

转载 Spring mvc的执行流程:

1.用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;2.DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回;3.DispatcherServlet 根据获得的Handler,选择一个合适的Ha...

2021-12-30 13:58:03 210

原创 如何优化数据库?

1.查询的时候尽量使用字段名不要写*;2.删除表中所有数据的时候不要使用Delete from 表名,要使用 truncate table 表名;3.使用join关联表的时候最多不要超过3个表关联;4.在使用in的时候集合中的数据最好不要超过200条;5.在设置表的时候,尽量设置字段不为null,除非这个字段有必须为null;6.使用索引的方式;7.分库分表。...

2021-12-29 17:56:17 334

原创 ArrayList为什么线程不安全?

ArrayList 底层基于数据实现的,是一个动态的数组,容量自动增长;尽量扩容时,会将老的数组的内容重新拷贝一份到新的数组中,每次扩充为原来长度的1.5倍。它在使用add方法时会执行两个步骤:1.将元素放在当前位置;2.将数组下标+1;为什么线程不安全?假设现在有两个线程,线程A和线程B,当他们两个同时执行add()方法的时候,线程A先将自己的当前数据存到下标0的位置,(只执行了一步)然后线程A就会被停止操作,由线程B进行存储,线程B也将自己的当前数据也存储到了下标0...

2021-12-28 19:32:02 2356

原创 数据库引擎

引擎(常用的两个)默认使用的是:innodb(现在用的)myisam(前几年用的)Myisam的优点:查询快,节约空间;innoDB的优点:安全性高,支持事务的处理,支持多表的操作。区别: Myisam InnoDB 事务 不支持 支持数据行锁定 不支持(有表锁) ...

2021-12-27 14:32:51 304

原创 自定义注解的使用流程:

1.先使用元注解@Target定义这个自定义注解的作用域 2.在使用元注解@Retention定义这个自定义注解在什么时候运行 3.然后写一个@interface MyAnnotation{} 4.在{}中定义注解参数的就好了。...

2021-12-26 13:16:37 412

原创 事务的执行流程:

首先说一下 事务有两种执行方式,一种是自动提交(默认的提交方式,里面有两个值0关闭,1开启(默认set aotucommit -1)),一种是手动提交;我们在写事务的时候要先将提交方式改为手动提交,然后提交以后有两个结果,分别是回滚和提交事务,回滚代表有异常,提交事务表示执行正常。...

2021-12-25 09:30:49 1522

原创 数据库的隔离性所带来的问题

<1.脏读:一个事务读取到了另一个事务未提交的数据;场景:假如有三个用户A B CA:500 B:0 C:300现在A和C同时给B转账200 块钱但是呢因为事务的隔离性所以A给B转账不能和C给B转账相互干扰 然后出现的问题叫脏读;<2.不可重复读:在一个事务内读取表中数据的时候,两次读取到的数据不一致;场景:假如有三个用户A B CA:500 B:0 C:300第一次在读取这三个数据的时候 A:500 B:0 C:300第二次又读取这三个数据的时候 A:500...

2021-12-23 15:03:47 777

原创 事务的原则:

ACID原则,也就是四大特性:原子性,一致性 ,持久性,隔离性原子性:要么都成功,要么都失败;一致性:操作前后数据的完整性保持一致;持久性:一旦提交就不可逆,会持久化到数据库中;隔离性:就是多个用户同时访问数据库时,数据库会给每一个用户开启一个事务,事务直接不会被干扰。...

2021-12-22 10:20:54 537

原创 线程的生命周期

线程是一个动态执行的过程,它也有一个从产生到死亡的过程。 五个状态 新建状态 就绪状态 运行状态 堵塞状态 死亡状态 新建状态:使用new关键字和Thread类或者子类建立一个线程对象后,它会一直保持这种状态,直到程序运行到start()方法才会进入就绪状态; 就绪状态:就绪状态的线程处于就绪的队列中,要等待JVM里线程的调度器的调度;如果就绪状态的线程获取到了cup的资源,就可以执行run()方法,这时候就进入了运行状态; 运行状...

2021-12-21 09:36:07 79

原创 Oracle数据库的数据类型

常用的数据类型有:一.数值类型number: 在Oracle中取消了在mysql中的int类型,使用number代替,如果你在创建数据库表的时候使用了int类型会自动转换成number类型,并且Oracle没有这个”auto_increment”属性,所以它没法像MySQL般在表内定义自增主键。但是,Oracle里的序列(SEQUENCE),可间接实现自增主键的作用;number有两个参数:number(m,n):m用来表示有几位有效数字最大是38位,n表示小数点以后可以有几位,多出..

2021-12-18 15:59:40 15377

原创 Oracle数据库中为什么不全用VARCHAR2类型

1.VARCHAR2虽然比CHAR节省空间,但是假如一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(RowMigration)现象,而这会造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些;2.还有就是当我们存储已知固定长度的数据时,比如:手机号(11位)、身份证号码(18位)等,可以考虑使用 char。因为,在查询数据时,对于 char 类型字段,是全字符整体匹配;而 varchar2 是一个字符一个.

2021-12-16 22:55:05 1008

原创 十进制的数在内容中是怎么存储的

是以二进制补码的形式。

2021-12-15 19:27:02 436

原创 Oracle数据中的number数据类型

首先说一下在Oracle中并不存在int数据类型,如果你在创建Oracle数据库表的时候设置了INT类型会自动转成number类型的。number类型呢会有限制:number(m,n) 其中m表示的是最大有效位数为1-38位,而n表示小数点以后的有效位数;例如:number(5,2)则代表最大值为:99999,现在输入一个数是523.523,则数据库会自动截取为523.52。...

2021-12-14 09:53:55 4759

原创 为什么在hashMap中重写equals()要先重写hashCode()

hashMap底层是一个链表散列的结构,也就是数组和链表的组合,在hashMap中put的时候要先判断一下数组的长度是否为空,如果为空的话就要先进行扩容,如何存到相应的位置;如果数组长度不为空,那么就代表数组中原来有值,那就要对key的hashCode进行重新计算,如果数组中已经存在的key的值的hashCode没有和当前key的HashCode相同的话,就把当前的key存到数组中hashCode当对应的位置,如果hashCode有相同,就用equals()去比较内容一样不一样,一样的话就覆...

2021-12-13 20:10:35 490

原创 shell脚本99乘法表

2021-12-11 17:32:02 301

原创 let,var和const的不同

let:只在声明的作用域下有效;var:不管在代码哪里声明了,全局通用一个;const:声明的变量,不能被重新赋值。

2021-12-10 16:04:07 530

原创 static和final的区别

static:是静态的意思;final:是最后的意思;区别:1.final可以修饰类,方法和变量,但是static只能修饰方法和变量;2.final可以修饰全局变量和局部变量,但是static只能修饰全局变量,不能修饰局部变量;3.final不可以修饰代码块,但是static可以修饰代码块。...

2021-12-09 17:59:02 5855 3

原创 shell脚本的运算符

同其他语言一样,shell也有自己的运算符: 1. 算数运算符 2. 关系(比较)运算符 3. 逻辑运算符 4. 字符串运算符 5. 文件测试运算符1. 算数运算符2. 关系(比较)运算符3. 逻辑运算符4. 字符串运算符5. 文件测试运算符...

2021-12-08 21:54:23 171

原创 Annotation processing is not supported for module cycles. Please ensure that all modules from cycle

这个是因为你在两个模块中相互依赖了 ,让程序觉得你循环依赖了,去掉其中一个依赖就好了。

2021-12-07 17:06:34 1877

原创 sql语句多表连查

连表查寻有多种形式,其中如果是开发人员的话用的最多的应该是join on所以我今天就拿join on 来举个例子首先我先创建五张表好了表已经创建好了 那么就使用join on 查询就好了下面是sql语句就是利用表与表之间的关联字段去查询下面是查询结果...

2021-12-04 13:47:52 188

原创 linux的基本操作命令

man表示需要执行什么手册页ls会列举出当前工作目录的内容cd 目录/文件夹切换到目标目录或者文件夹(只能进入当前目录下的文件夹里面)pwd显示当前工作目录mkdir 目录/文件夹用于新建一个新目录vi 文件名.txt创建一个文本echo 文件名.txtecho 'i love u' >a.txt 如果没有这个文件则自动创建。如果有这个文件,那么新内容代替原来的内容。echo 'i love u' >>a.txt 如果没有这个文件则创建。...

2021-12-03 20:05:01 97

原创 在SpringBoot中怎么使用controller实现页面之间的跳转

在SpringBoot中页面之间是不能直接相互跳转的,比如我们之前使用的location.href方法,使用它在boot中不能直接跳转页面了,那么要怎么去解决这个问题呢。 首先配置静态文件存放的地方spring.web.resources.static-locations: classpath:/static/存在static下面然后写一个index页面 里面写一个a标签然后在后台也写一个login接口让点击这个标签以后就可以跳到指定的页面这里我让它跳到main...

2021-12-02 21:23:10 4296

原创 百度地图的接口调用

首先自己先申请一个调用需要用到的ak;然后就可以开始调用了;ak填上自己申请的ak;下面是主代码:这个就好了,下面就是运行结果:

2021-11-30 14:12:04 363

原创 冒泡排序来啦

不管是学习java基础进行测试,还是工作面试的笔试题,有一个内容都是比较重要的,那就是冒泡排序:关注阿祥一起进步啊

2021-11-30 00:06:00 147

原创 SQL语句如果要求给定的顺序要怎么去写

一般的会让我们按照升序或者降序排序 那就直接order by 字段名 asc/desc 就可以了;但是有时候也会要求我们按照某种给定的顺序来排序,这时候就需要用到一个属性field具体怎么用呢 看例子:假如现在有一个fruit 表现在要求结果按梨、葡萄、西瓜、橘子、柠檬、苹果、香蕉的顺序排序select * from fruit order byfield(tname,'梨','葡萄','西瓜','橘子','柠檬','苹果','香蕉') ASC就可以了。如果帮助...

2021-11-26 19:10:22 751

原创 BIO、NIO、AIO的关系

BIO是同步阻塞式IO,是传统的IO,优点是:使用简单方便;NIO是同步非阻塞式IO,是传统IO的升级,服务器和用户通过通道通信,实现了多路复用;AIO是异步非阻塞式IO,是NIO的升级,也叫做NIO2,异步IO的操作基于事件和回调机制。...

2021-11-25 14:28:42 206

原创 使用java将数据导入excel表格中

1.使用创建一个工作簿;2.获取表中的页;3.从页中获取行;4.从行中获取表格;5.在表中添加数据;6.写一个输出流;7.将数据传入表格。Cell cell0 = row.createCell(0);从这里可以看出下标从0开始。写完执行代码就可以导出数据到excel中了...

2021-11-24 18:48:37 2567

原创 HTML中src和href的区别

href是Hypertext Reference的缩写,代表的是超文本链接,用来建立当前标签和文本的链接;src是source的缩写,表示引用,即把文档嵌入到当前的标签中。关注阿祥一起学习啊。

2021-11-22 12:55:43 482

原创 腾讯云的手机验证码发送

我们需要三个步骤:1.随机生成一个验证码;2.写腾讯云发送验证码的流程。3.写一个主方法去调用即可。首先我们就要写一个生成验证码的方法:这里的参数是你要设置验证码的长度为多少。然后我们再去写腾讯云发送验证码的流程。这里的参数是要发送到验证码的手机号和生成的验证码。最后写一个主方法去调用即可。这里在主方法中填入手机号和生成的验证码的位数就好了。希望有用的小伙伴,可以关注点赞一下,一起进步!...

2021-11-21 15:13:57 495

原创 Spring中的相关知识点

Spring:是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器(框架)。IOC:控制反转;什么是IOC? Inversion of Control的简称,即“控制反转”,不是什么技术,而是一种设计思想。IOC理解: IOC意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。谁控制谁,怎么控制? 由IOC容器来专门创建这些对象,并由IOC来控制对象和外部资源的创建和获取,实现由IoC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找。为什么是反转,什...

2021-11-20 18:36:11 99

原创 在类 中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args)

出现这个异常的时候如果说你是写有main方法的话很大可能就是没保存写的代码就去执行程序了,Ctrl+S保存一下就好了。希望可以帮助大家,点赞关注一下我大家一起学习。

2021-11-18 09:13:28 2286 2

原创 在写项目时怎么样可以有效的防止重复提交

我在这里整理了四种方式: 1.禁掉提交按钮,也就是说当表单被提交后,在js中将按钮设置成disable;虽然可以有效的防止重复提交,但是用户如果禁止了js,就没办法防止重复提交了; 2.Post--Redirect--Get模式,在点击提交以后就会对页面进行重定向,转到提交成功后的页面,这样就可以防止按F5重复提交; 3.在session中存一个特殊的标识,当表单页面被请求时,生成一个字符标识串,放在session中,并存在表单的隐藏域中,接受处理...

2021-11-17 09:02:47 949

原创 JSP的三大指令

Page:用于针对当前页面指令;Include:用于指定如何包含另一个页面;Talib:用于定义和指定自定义标签。大家一起努力学习!

2021-11-16 08:30:46 109

原创 session 的工作原理

首先 先说session是存储在服务器上的一个值;每次用户在登录完成之后,服务器就会给该用户创建一个与之对应的session id,然后把该session id 发送给用户,咋样用户每次访问浏览器的时候就会对比这个session id 去服务器中找到对应的session id,然后就可以正常工作了。用户登录账户------》服务器给用户创建session id,并发送给用户------》用户接收session id,访问浏览器的时候找到服务器中对应的session id ------...

2021-11-15 20:05:46 120

原创 线程的五大状态和运行流程

五大状态分别为:创建状态----就绪状态---运行状态----阻塞状态-----死亡状态;流程:第一步:先用new 创建一个线程 这时候就是创建状态;第二步:我们没有使用这个线程,他就在等待被执行,这个时候是就绪状态;第三步:我们使用了start()方法去执行这个线程,这时就是运行状态;第四步:比如我们使用sleep()方法让他休息一下,这个时候就算是阻塞状态;第五步:线程任务完成,死亡了。这是我对线程的理解,希望对大家有用,点赞关注,学习更好开发知识。..

2021-11-13 15:24:33 1272

原创 在MyBatis中#{}和${}的区别,写MyBatis语句要注意什么

#{}代表相当于是一个占位符;${}代表是直接拼接;尤其是在拼接列名的时候一定要用${}直接拼接不然使用#{}会在获得的值加上一个单引号,SQL语句就报错了。例如:希望能对大家有帮助。...

2021-11-12 21:15:41 268

空空如也

空空如也

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

TA关注的人

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