自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java中volatile特性和作用

变量的读写有内存屏障(memory barriers)的保护,确保了可见性和指令重排的限制,但它并不保证复合操作的原子性。关键字是 Java 中用于处理多线程内存可见性问题的一种机制,但它有局限性,不能替代锁机制来处理更复杂的同步问题。变量可以提供线程安全的基本保证,但它不能替代锁(synchronized)的更复杂的同步需求。是 Java 中的一个关键字,用于声明一个变量在多线程环境中的内存语义。变量的值时,新值对其他线程立即可见。不能保证对一个复合操作的原子性,也不能保证多个变量的原子性。

2024-07-21 21:30:38 322

原创 面试题:ConcurrentHashMap的put方法执行过程,执行逻辑是什么?ConcurrentHashMap中的Node节点是什么?(jdk1.8)

如果节点已经存在,并且它的哈希值、键值与要插入的键值相匹配,那么直接返回旧值。扩容过程中,旧的哈希表将被复制到一个新的更大的哈希表中,同时新的键值对也会被插入到新的哈希表中。:首先,使用键(key)的哈希值计算出在哈希表中的索引位置,然后尝试定位到对应的 Node 节点。关键字修饰,以确保在多线程环境下对该字段的修改能够立即对其他线程可见,从而保证内存的可见性。的基本存储单元,它通过继承和字段设计,实现了线程安全的键值对存储和哈希表的高效操作。方法返回与新插入键关联的旧值,如果之前没有这个键的值,则返回。

2024-07-21 21:25:56 536

原创 面试题:为什么说HashMap是线程不安全的?有什么解决方法?

如果线程 A 首先执行,它将键 1 与 “ValueA” 关联。然后,线程 B 执行并尝试将相同的键 1 与 “ValueB” 关联。当 HashMap 需要扩容时,它会创建一个新的内部数组并重新分配现有的键值对。线程尝试读取该值,它可能会得到 “Updated” 或 “Initial”,这取决于线程的执行顺序和 JVM 的内存模型。如果多个线程尝试填充这个 HashMap 并触发扩容,可能会导致键值对的丢失或不正确的映射。当迭代 HashMap 时,如果其他线程修改了 HashMap,迭代器可能会抛出。

2024-07-20 21:13:32 724

原创 面试题:Java中堆内存和栈内存的区别,缓存数据是把数据放到哪里

在Java中,堆内存(Heap)和栈内存(Stack)是两种不同类型的内存区域。它们各自扮演着不同的角色,并具有不同的特性。

2024-07-20 20:53:01 392

原创 HttpHeaders类详解,这一篇就够了

在Java中,`HttpHeaders` 是一个用于表示HTTP请求或响应头的类,它属于 `java.net.http` 包,从Java 11开始引入。这个类提供了一种方便的方式来操作HTTP消息头,包括添加、删除和获取头字段的值。

2024-07-20 17:06:21 827

原创 面试题 HashMap中key的存储索引是怎么计算的

为了减少哈希冲突并使哈希值分布更均匀,JDK 1.8对哈希值进行了一些额外处理,即通过一个位运算将高位的哈希值混合到低位。哈希值计算出来之后,接下来需要将哈希值映射到数组的索引位置。通过上述步骤和代码,我们可以看到HashMap在JDK 1.8中是如何计算键的索引值的。的结果相当于取哈希值的低几位,这样可以确保索引值在0到n-1之间。假设数组的长度是2的幂(HashMap的容量总是2的幂),则。操作是按位与运算,它能确保计算出来的索引值在数组的范围内。的二进制表示将是全1,比如容量为16时,

2024-07-17 20:37:37 231 1

原创 HashMap默认加载因子是多少?为什么要设置成这个值?

加载因子的值越高,哈希表的填充程度越大,意味着哈希表的性能可能会降低,因为更多的哈希冲突可能导致查找、插入和删除操作的效率降低。这意味着,当哈希表的实际存储的键值对数量达到其容量的75%时,会触发扩容操作。扩容操作会创建一个新的哈希表,其容量通常是原始容量的两倍,并将原始哈希表中的所有键值对重新散列到新的哈希表中。例如,如果加载因子设置为0.75,而哈希表的容量为100,则当哈希表中的元素数量达到75时,就会进行Rehash。加载因子越小,哈希表的容量越大,元素的分布就越稀疏,哈希冲突的可能性就越小。

2024-07-17 20:24:12 437

原创 图论板子(最短路,最小生成树,拓扑图)

【代码】图论板子(最短路,最小生成树,拓扑图)

2024-05-31 15:11:54 104

原创 vue简答题

指令主要包括内置命令和自定义命令,内置命令指的是vue中自带的命令,而自定义命令指的是有用户自己定义的指令。router.push():push()方法会向历史记录中添加一个新的记录,以编程方式导航到一个新的URL,当用户单机浏览器后退按钮时,会回到之前的URL。当需要频繁切换某个元素的显示或隐藏属性的时候,使用v-show会更加节省性能上的开销,如果只需要切换一次的时候,使用v-if更合理。私有自定义指令指的是在组件内部定义的指令,私有自定义指令指的是在组件内部定义,在定义的组件内部使用的指令。

2024-05-29 00:19:43 273

原创 vue期末复习选择题5

1. 有如下组件代码: <template> <input type="text" v-model.number="count"> <p>{{count}}乘以2的值为:{{plus}}</p></template><script setup> import { ref,computed} from 'vue' const count = ref(1) const plus =____

2024-05-24 22:36:53 583

原创 vue期末复习选择题4

这个指令用于设置元素的文本内容,它会将指定的数据作为纯文本插入到元素中。它不会实现双向数据绑定,因为它只能将数据从组件实例渲染到 DOM,而不能反向将用户输入的数据同步到组件实例中。等表单元素上,实现用户输入数据的同步更新到 Vue 实例中,并且将 Vue 实例中的数据变化同步更新到表单元素中。:这是 Vue 中用于插值的语法,用于将数据输出到文本内容中。:指令用于将数据作为 HTML 插入到元素中,但它并不适用于绑定元素的。符号通常用于绑定事件处理程序,而不是用于绑定元素的属性。

2024-05-24 22:36:13 763

原创 vue期末复习选择题3

河南科技大学</p>B.<p @click="show">河南科技大学</p>C.<p v-on:click="show">河南科技大学</p>D.<p v-on:mouseenter="show">河南科技大学</p>NOTE]事件名应该是,而不是。Vue中使用或来绑定事件,然后接着事件名即可,不需要加。A.<p v-text="msg+'你好'"></p>B.C.D.<p>{{msg+"你好"}}

2024-05-24 22:35:01 763

原创 vue复习选择题2

1. 下面哪一个方法可以实现判断元素的class属性是否含有pp样式? (A)A. hasClass(“pp”)B. is(“pp”)C. attr(“class”,“pp”)D. toggleClass(“pp”)[!NOTE]当涉及到在 jQuery 中判断元素的类属性时,下面是各个选项的作用:A. hasClass("pp"): 这个方法用于检查匹配的元素集合中的每个元素是否具有指定的类名。如果其中至少一个元素含有指定的类名,则返回 true;否则返回 false。在这种情况下,h

2024-05-24 22:34:10 528

原创 vue期末复习选择题1

1. 下面哪一项描述是错误的?(B)A.$("ul li:gt(5):not(:last)")选取ul标记里面索引值大于5且不是最后一个的li元素B.$("div").find("span")选取div元素的子元素spanC.$("div.showmore > a")选取class属性值为showmore的div元素的子元素aD. $("ul li").filter(":contains('佳能'),:contains('尼康'),:contains('奥林巴斯')")选取文本包含佳能或尼康

2024-05-24 22:33:08 814

原创 Dubbo简介及基本作用

Dubbo 是一个高性能、轻量级的开源Java RPC框架。它提供了一套完整的服务治理方案,包括服务的提供、服务的发现、负载均衡、流量调度、服务监控等功能。Dubbo主要用于构建高效的微服务架构,主要面向企业中大型的分布式系统。

2024-04-03 08:00:00 324

原创 MySQL、Redis 和 Zookeeper 实现分布式锁方法及优缺点

MySQL、Redis 和 Zookeeper 都可以用来实现分布式锁,每种技术都有其特定的实现方法以及各自的优缺点。

2024-04-02 20:27:06 1092

原创 CAP定理之一致性、可用性和分区容错性

在CAP定理中,强一致性意味着任何时刻,所有的数据副本都必须是一样的。换句话说,如果系统需要保证分区容错性(而现实世界中的分布式系统通常必须要保证),那么系统必须在一致性和可用性之间做出权衡。:在分区发生时,系统仍然会响应请求,但不能保证数据的即时一致性,允许在不同节点上出现临时的数据副本不一致的情况。:在分区发生时,系统可能拒绝或延迟响应请求,以保证数据的一致性,直到网络分区问题解决。在实际应用中,根据具体场景的需求,开发者会选择不同的方案来平衡一致性和可用性。

2024-04-02 20:20:41 393

原创 分布式简介

分布式系统(Distributed System)是由一组相互独立的计算机通过网络连接和协作组成的系统。这些计算机共同工作,对于用户来说,它们就像是单个一致的系统。分布式系统的设计使得计算资源可以被共享,工作可以并行处理,从而提高效率和可靠性。

2024-03-21 22:12:09 683

原创 Java实战开发之springboot3整合swagger基本设置

创建一个返回值为OpenAPI的方法并返回一个新创建的OpenAPI对象。.contact():设置作者基本信息如姓名邮箱链接地址等。上一篇讲到了如何配置以及导入依赖,需要的小伙伴可以看看。现在讲讲springboot3中如何设置文档的基本信息。.description():设置文档综述。添加@Configuration注解。创建一个swagger信息配置类。.title():设置文档标题。.version():设置版本。

2024-03-21 21:29:28 504

原创 Java实战开发之swagger配置及访问

Swagger 是一个流行的开源框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。它可以让开发者和用户更方便地理解和使用 API。Swagger 通过定义 RESTful API 的规范(使用 YAML 或 JSON 格式)来实现这些功能。这些规范称为 OpenAPI 规范(之前称为 Swagger 规范)。Swagger 的主要特点包括:自动生成 API 文档:通过分析代码中的注解,Swagger 自动生成清晰、易读的 API 文档,包括 API 的路径、参数、响应等详细信息。

2024-03-21 21:02:44 1105

原创 很好的话题,使我的AI旋转

ai来分析ai能不能取代程序员,简直太有趣了(笑)

2024-03-20 15:36:03 532

原创 Java实战开发之Apache HttpClient

HttpClient允许Java应用程序与HTTP服务器进行交互,支持执行GET、POST、PUT、DELETE等各种HTTP方法,处理cookies、HTTP状态管理、重定向、认证等复杂特性,并且可以自定义请求和响应头信息,设置超时时间,以及处理各种不同类型的HTTP实体内容。功能丰富:提供了全面的HTTP协议支持,包括HTTP/1.0、HTTP/1.1以及部分HTTP/2特性,能够处理HTTPS(SSL/TLS)连接,支持代理服务器和隧道。

2024-03-20 15:18:17 657

原创 Java项目开发之fastjson详解

它主要用于 Java 对象与 JSON 数据格式之间的转换,提供了简单易用的 API 来实现序列化(Java 对象转 JSON 字符串)和反序列化(JSON 字符串转 Java 对象)操作。高性能:Fastjson 在处理速度和内存消耗方面表现优异,相较于其他 JSON 库如 Gson 和 Jackson,Fastjson 在许多场景下提供了更快的处理速度。易用性:Fastjson 提供了简洁的 API,方便开发者快速实现 JSON 与 Java 对象之间的转换。

2024-03-20 13:07:39 445

原创 Cookie和JWT的区别

Cookies是一种更传统的技术,通常用于跟踪用户的会话状态。它们在客户端存储,具有较长的生命周期,并可以通过HttpOnly标志提高安全性。JWT是一种较新的技术,提供了一种更灵活、紧凑且跨域兼容的身份验证方法。它们在客户端存储,具有较短的生命周期,并通过签名确保安全性。Cookies和JSON Web Tokens(JWT)是两种常用于Web应用程序中管理用户身份验证和会话信息的技术。尽管它们都可以用于跟踪用户身份,但它们在存储位置、结构和安全性方面存在一些关键差异。

2024-03-06 15:04:06 454

原创 跳坑日志之微信小程序开发——真机调试背景颜色不显示问题和页面无法下滑问题

如果你也遇到了在真机环境下background-color属性不显示而开发者工具中这个属性显示的情况,不妨去检查一下你的app.json文件中,renderer属性值是不是为skyline。如果是的话,改成webview就行了。同样的如果你的页面无法下滑,而且你在.json下"设置disableScroll":false 报错(),没错还是这么改也能改过来。

2024-01-11 17:02:39 887 2

原创 手搓MyBatis框架(原理讲解)

你在学完MyBatis框架后会不会觉得很神奇,为什么我改一个配置文件就可以让程序识别和执行不同的sql语句操作数据库?SqlSessionFactoryBuilder,SqlSessionFactory和SqlSession对象到底是怎样执行的?如果你有这些问题看就完事了没错,现在要做的就是手搓mybatis框架底层,简易版还原mybatis框架的执行原理

2023-11-10 17:38:19 205 5

原创 java.io.IOException: Couldn‘t copy [路径1] to [路径2] 问题

项目文件夹\out\artifacts\gfs_war_exploded\WEB-INF\lib。有个同名的文件夹,把文件夹删掉再把jar包复制到路径2就可以了。第一个路径就是jar包所在路径,路径2,往里一找好家伙。复制路径1的jar包到路径2,删除路径2同名文件夹。开始我以为是有其他程序占了我的jar包进程。于是就把这两个路径复制看了下。

2023-10-08 10:37:22 1096

原创 Java中Hashset存储原理底层深挖

HashSet添加元素会调用HashMap的添加方法值作为key,一个空对象作为value而HashMap用hash计算的出元素的hash值并放在对应的数组索引上,如果hash冲突了就在下面挂一个链表。如果找到了同一个元素就把新加入的元素值赋给旧元素。当这条链表长度大于8时 ,这条链表自动转换成红黑树存储

2023-09-20 13:18:41 167 3

原创 Java下部笔记

很全的Java下笔记,确定不来看看吗

2023-09-15 12:19:47 182 2

原创 vue入门及小项目小便签条

框架:是一个半成品软件,是一套可重用的,通用的,软件基础代码模型。在el命中标签内部及子类的属性中设置data中的值,即可在该标签内部 显示该属性ps:可以进行字符串的拼接。通常用一个变量表示该值,再用一个方法控制 该值,再将该方法绑定一个事件。v-bind为HTML标签绑定属性值,如设置href,css样式等。设置元素的属性eg:src,title,class。根据表达式的真假,切换元素的显示和隐藏。根据表达式的真假,切换元素的显示状态。

2023-09-15 11:18:39 180

原创 Java ArrayList扩容底层原理深挖

今儿咱来看看ArrayList是怎么扩容的,底层是什么样的先说结论1.利用空参构造创建集合时,在底层创建一个默认长度为0的数组。2.添加第一个元素时,底层会创建一个新的长度为10的数组,要是存不下,就创建一个能正好存下的数组。3.这个数组存满时,会扩容1.5倍创建新数组,并把旧数组拷贝到新数组中。4.如果一次添加多个元素,1.5倍还放不下,则新创建的数组的长度以实际为准,并把旧数组拷贝到新数组中。

2023-05-27 13:37:31 936

原创 Java中单列集合使用迭代器遍历详解

讲透Java用迭代器遍历单列集合,透析底层。不来看看吗客官?(笑)

2023-05-26 18:44:47 789

原创 Java包装类 这一篇就够了

Java中包装类(Wrapper Class)是Java为了解决八种基本数据类型不是面向对象的问题而设计的一种类,它们可以将基本数据类型转换为相应的对象装类就是把基本数据类型的对象形式。自动拆箱(包装类直接转化为基本数据类型):可以直接 Integer i = new Integer(123) int i2 = i;2.使用静态方法valueOf来创建包装类对象 eg:Integer i = Integer.valueOf(123);3.包装类可以自动装箱 eg:Integer i2 = 10;

2023-05-23 09:59:42 364

原创 MySQL基础篇汇总(笔记很全的哦)

mysql基础篇哦,sql语法。sql语句,函数,约束,多表查询,事务

2023-05-17 12:49:59 437 2

原创 Java上笔记汇总

目录一.面向对象 二.常用API总结引用数据类型存储的是地址值new出来的东西存在堆内存中方法存在栈内存中,且方法的调用以栈类型结算如何定义类:public class 类名{1.成员变量(代表属性,一般是名词)2.成员方法(代表属性,一般是动词)3.构造器4.代码块5.内部类}你的girlfriend是一个类,你可以new出不同的girlfriend就是对象 就是根据girlfriend来创建出新的不同的对象。比如说你幻想的girlfriend有眼睛鼻子嘴巴等特征(l类),而你可以

2023-05-14 00:21:32 393

原创 Java笔记3

子类构造方法第一句默认是:super(),不写也存在,且必须写在第一行,想使用父类有参构造,必须手动构造。访问权限子类必须大于等于父类,返回值类型子类必须小于等于父类只有被添加到虚方法表中的方法才能被重写。多态的好处:使用父类型作为参数,可以接收所有子类对象,便于体现多态的扩展性与便利。a.show()编译时看左边父类中有没有这个方法,有编译成功,无编译失败。继承体系中子类出现一样的方法声明,就称为子类这个方法的重写。原因:调用成员方法时,编译看左边,运行看右边。

2023-03-05 12:03:29 511

原创 学生管理系统登录界面(java版)

用户名先判断长短的合法性,再判断唯一性,唯一性用 use.get(i).getUsername().equals(username)判断,用for循环把每一个用户的用户名get出来再和新起的比较,一样就让他换一个。我的学生管理系统已经写好了,可是总感觉少点东西怎么办,诶,登录界面他来了!最后一步,忘记密码怎么办,当然是先翻用户名再翻手机号和身份证了,判断的时候还是用链式编程了。既然功能不同,输入1,2,3对应到不同的值,那就要搬出我那万能的switch了!​ 最为一位可以是数字,也可以是大写X或小写x。

2023-02-28 23:05:33 8029 3

原创 学生管理系统(Java版)

进来首先判断输入的id是否之前有过,就像武林高手不能有同一个绰号,如果之前有过就让他从新添加,判断是否相同就用list.get(i).getId().equals(id)就行了。如果输错id怎么办呢?很简单,在for循环的过程中如果发现id相同,直接删除跑路了,那没跑路说明就没有你提供的id!接着考虑用什么盛装对应的学生信息,如果用数组的话不确定有多少个学生信息,所以集合ArrayList是最好的选择。然后就是界面了很简单,想做成什么样式的就做成什么什么样式的,我就做成了百晓生,啊不,丁小喜的兵器谱(笑)

2023-02-26 22:03:52 279

原创 java笔记2

float类型的数据在定义浮点型数据时,必须在后面加上f或F;double类型的数据在定义时可以在后面加上d或D,也。基本数据类型比的是数据值 因为在串池里可以复用,故用了同一个地址值。replace("要替换的数字","用来替换的数字") 替换字符串。stb进行了(有变量参与)拼接即相当于在堆里new了一个新地址。substring(数字,数字) 截取字符串 包左不包右。数据能不写死就不写死,eg:arr[3];答案是false,因为str记录的是串池里的地址。而引用数据类型比较的是地址值故不相等。

2023-02-25 21:28:21 321

原创 文字格斗游戏

注意是调用attack方法者攻击另一个人的血量,所以把被攻击者传进去,用this攻击role的参数。哈,我的第一个java项目,听一遍了以后自己敲出来很有成就感。材料by:黑马程序员。

2023-02-18 23:41:29 83

空空如也

空空如也

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

TA关注的人

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