ZhiguoXue_IT
求真至善,登崇俊良,有信心,一直在,一直在追求高光时刻
展开
-
java中锁的使用-实战
在实际的业务中,为了保证线程安全,会进行对一些逻辑进行加锁,保证当前只有一个线程在操作。在代码中,我们经常使用两种方式进行加锁,来保证线程安全。一种是synchronized关键字,另一种是ReentrantLock加锁。写这一份的博客,就是为了记录下锁的基本使用,也算是基础积累,方便在之后的工作中,能够安全的使用到。原创 2023-11-23 23:54:45 · 601 阅读 · 0 评论 -
Spring中的接口使用
在我们的项目中,经常会使用一些注解,注解带给我们代码简洁,本质是用于在代码中添加元数据信息,从而实现更加灵活、高效和可维护的代码结构。原创 2023-08-12 16:58:59 · 447 阅读 · 0 评论 -
ConcurrentHashmap1.7和1.8的差别
分段锁(Segment-Based Locking)是一种并发编程中用于提高性能的策略,特别适用于需要高并发访问的数据结构,如哈希表。它的基本思想是将一个大的数据结构分成多个小的部分,每个部分都有自己的锁,从而允许多个线程同时访问不同的部分,减少了竞争和阻塞。在分段锁的实现中,每个段内部维护一部分数据,并有一个对应的锁来保护这部分数据的并发访问。这样,不同的线程可以同时访问不同的段,而不会相互阻塞。分段锁可以显著提高并发性能,因为只有在同一个段内的数据访问才会发生竞争。原创 2023-08-06 11:18:08 · 281 阅读 · 0 评论 -
Dubbo中使用netty
netty在Dubbo中的使用,主要集中在网络通信上,高性能、轻量级的开源java的RPC框架,提供三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。1、魔数标识符(四个字节),用于区分不同的协议。2、消息标志(一个字节),用于表示消息类型,如调用请求、调用结果、异常等。3、状态标志(一个字节),用于表示消息状态,如成功、失败等。4、消息ID(8个字节),用于标识消息的唯一性,在异步调用场景下用于匹配请求和响应。5、消息长度(四个字节),用于表示消息体的长度。6、原创 2023-08-05 16:34:56 · 447 阅读 · 0 评论 -
synchronized的底层实现原理
synchronized 是 Java 中用于实现线程同步的关键字。它的底层原理涉及到对象头、Monitor(监视器)和内存屏障等概念。原创 2023-08-05 16:15:29 · 298 阅读 · 0 评论 -
计算机中的AQS
Abstract Queue Service (AQS)就是AbstractQueuedSynchronizer抽象类,AQS其实就是JUC包下的一个基类,JUC下的很多内容都是基于AQS实现了部分功能,比如ReentrantLock、ThreadPoolExecutor、阻塞队列、CountDownLatch、Semaphore、CyclicBarrier等都是基于AQS实现的。首先AQS中提供了一个由volatile修饰,并且采用CAS方式修改的int类型的state变量。原创 2023-07-29 18:13:44 · 165 阅读 · 0 评论 -
线程池的分类-以及使用心得
线程池在日常工作中经常使用,并发执行任务,线程管理,线程调度。原创 2023-07-06 00:18:46 · 194 阅读 · 0 评论 -
浅聊一下java中的八股文
工作了也快三年了,无论是之前参加校招面试,还是参加社招面试,其实都离不开围绕以后端为中心得一些技术考察点,现在业界内都称为八股文,我个人对八股文的认识,更喜欢结合工作中遇到的问题来讲,也就是能把八股文用到实际的工作中来进行深入。原创 2023-06-22 11:30:02 · 276 阅读 · 0 评论 -
长链接-WebSocket
马上工作了三年,回想起这三年的工作,和别的部门进行数据交互,一种是通过rpc接口,另一种是通过http接口,获取到自己想要的数据,或者给出自己的数据。在电商的业务场景中,通过设置调用的超时时间来满足一些调用比较慢的服务,所涉及的都是单相工通信。在IM的服务中,有多种业务场景需要客户端和服务端建立长链接,比如说语音转文字,客户端一直在输入语音,客户端和服务端保持通信,一直进行语音转化为文字,这个过程可能持续的时间会很长,此时现有的http协议已经无法满足需求,需要Websocket长链接协议进行解决。原创 2023-05-21 12:18:32 · 1049 阅读 · 0 评论 -
Hashmap和线程安全的ConcurrentHashMap源代码
【代码】Hashmap和线程安全的ConcurrentHashMap源代码。原创 2023-05-14 11:17:05 · 94 阅读 · 0 评论 -
后端工程师面试实战及解决
伴随着业界内后端求职越来越卷的现象,经历了一次面试,得出的面试经验。原创 2023-05-13 09:27:29 · 574 阅读 · 0 评论 -
JVM细入了解,模块
从事java工作两年多了,一直是java代码,java的核心是jvm,再次研究下jvm的核心模块。原创 2023-04-27 23:30:00 · 290 阅读 · 0 评论 -
分布式ID原理以及实践应用
在日常业务开发的时候,我们经常需要随机生成一个id,保证生成的id不重复,来进行区分。有些是需要生成递增的id,原创 2023-04-18 23:53:37 · 500 阅读 · 0 评论 -
CompletableFuture学习及实践应用
CompletableFuture并发任务多线程进行管理,CompletableFuture是一种非常灵活和高效的异步编程工具,它的内部实现是基于链表、锁、线程池和异步调用的概念。它可以用来处理复杂的异步任务和多个任务之间的依赖关系,让程序的并发执行更加高效和简单。原创 2023-04-05 11:43:38 · 490 阅读 · 2 评论 -
JVM的了解与学习
虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。java虚拟机有自己完善的硬体结构,如处理器、堆栈、寄存器等,还有相应的指令系统。java虚拟机屏蔽了与具体操作系统平台相关的信息,使得java程序只需生成在java虚拟机上运行的目标代码。JVM就是解析和运行java程序的。JVM用来解析和运行java程序的。根据类名找到文件,并且读取文件构造解析,将内容读取到内存中去,并且构造相应的类对象,这个过程叫做加载。原创 2023-03-08 22:41:02 · 356 阅读 · 0 评论 -
HashMap理解
无论在日常工作中,还是平时在编程算法题中,HashMap都是经常使用的数据结构,今天这篇论文主要围绕以Hashmap为主题,探索其特性和原理技术。原创 2023-02-23 21:28:14 · 115 阅读 · 0 评论 -
多线程-线程池的七个核心参数
线程池在日常工作中经常使用并发编程,线程池是必不可少的。原创 2023-02-23 21:29:05 · 718 阅读 · 0 评论 -
日常工作中常用的linux或者别的指令
2.查看docker正在运行的容器。1.查看docker的镜像命令。3.docker启动容器。4.进入容器内部的命令。原创 2023-01-12 23:14:04 · 66 阅读 · 0 评论 -
Elasticsearch一些点探索
如果你负担得起,SSD 是一个好的选择。当然在某些情况下,存在Memory Buffer和Filesystem Cache的数据可能会丢失,ES是通过translog的机制来保证可靠性的,其实现机制是接收到请求后,同时会写到translog中,只有当Filesystem中的数据写入到磁盘中时,才会被清除掉,这个过程叫做flush;在flush过程中,内存中的缓冲将被清除,内容被写入到一个新段,段的fsync将创建一个新的提交点,并将内容刷新到磁盘,旧的translog被删除并开始一个新的translog。原创 2022-12-21 15:59:01 · 250 阅读 · 1 评论 -
Docker学习
1)四套环境,环境配置十分麻烦,每一个机器都要部署环境2)发布一个环境(jar + (redis mysql jdk es)),项目能不能带上环境安装打包3)java – jar(环境) —打包项目带上环境(镜像) —(Docker仓库,商店)—下载我们发布的镜像—直接运行即可4)Docker思想来自集装箱jre—多个应用—原来都是交叉的隔离:Docker核心思想,每个箱子都是隔离的、5)14年,Docker1.0发布,Docker基于Go语言开发。原创 2022-12-02 00:18:32 · 341 阅读 · 0 评论 -
mysql数据库索引的深度理解及使用
本文是对mysql数据库的索引理解,结合自己在实际的工作中,对索引的认识以及实践,得出的一些好的结论。方便工程师进行学习原理,以及避免许多自己踩过的坑。原创 2022-09-18 12:22:56 · 280 阅读 · 0 评论 -
Redis开发经验使用规范
Redis是我们最常用的缓存中间件,因为redis是基于内存存储的数据,所以在读写性能比mysql高,可以适当弥补mysql的读性能的不足。原创 2022-09-11 00:11:13 · 152 阅读 · 0 评论 -
java中级工程师面试题三期
梳理出一些高级面试题及答案,方便同学们统一整理出标准答案。原创 2022-08-22 23:00:38 · 175 阅读 · 0 评论 -
mybatis深入理解
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。............原创 2022-08-17 23:48:53 · 280 阅读 · 0 评论 -
工作中经常用到的linux指令及基础知识
java基本技术栈用到的命令原创 2022-07-24 08:36:45 · 86 阅读 · 0 评论 -
java的过滤器和拦截器的区别与实际应用
java的过滤器和拦截器的区别与实际应用技术原理技术原理-细讲一技术原理-细讲二技术原理-细讲三技术在实际项目的应用应用一:项目应用一应用二:项目应用二原创 2022-07-23 16:38:23 · 370 阅读 · 0 评论 -
java高级工程师BAT面试题
1)Spring Boot中的Starter答:Starter组件是SpringBoot中四大核心功能特性之一,除此之外Spring Boot里面还有自动装配,以及Actuator监控等这样一些特性。SpringBoot都是为了让开发者在开发基于Spring生态下的企业级应用的时候,只需要关注业务逻辑,减少对配置和外部环境的依赖。其中Starter组件作用有几个,第一是以功能为维度,来维护对应jar包的版本依赖的,那么开发者就不需要关心这些2)如何区分Spring事务和分布式事务的使用以及两个事务之间的关原创 2022-06-20 23:10:37 · 94 阅读 · 0 评论 -
shardingsphere5.1.1实现上亿数据分表
1)Apache ShardingSphere是一个开源生态系统,由一组分布式数据库中间件解决方案组成,2)Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3种独立产品。他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、云原生等各种多样化的应用场景。3)ShardingSphere定义自己为中间件,而不是全新的数据库。作为许多企业的基石,关系数据库仍然占据着巨大的市场份额。shardingsphere版本:5.原创 2022-06-14 12:36:09 · 692 阅读 · 0 评论 -
Redisson的理解与应用
在之前的项目中分布式锁和限流是基于redis进行的,分布式锁基于setnx和expire命令实现,也可以基于lua脚本实现。限流是采用固定时间窗算法进行的。Redisson是一个在Redis的基础上实现的Java驻内存数据网格。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。Redisson的宗旨是促进使用者对Redis的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。Redisson和jedis以及lettuce一样都是redis客户端,只不过Redisson功能更原创 2022-06-04 18:38:52 · 489 阅读 · 0 评论 -
JAVA多线程的关键字
结合自己的学习,谈java多线程关键字的出现的原因及各种关键字的作用原创 2020-07-15 10:13:09 · 890 阅读 · 0 评论 -
java多线程,虚拟机以及之间相关性理解
通过查阅书籍,自己对java多线程,虚拟机的理解,以及他们之间的关系见解原创 2020-07-11 23:02:40 · 328 阅读 · 1 评论 -
JDK1.7到1.8过渡
通过查找文献和相关资料,总结和学习java的1.8版本的新特性,和java的1.7版本进行对比,总结学习原创 2020-07-07 10:23:30 · 150 阅读 · 0 评论 -
hashmap原理
一Hashmap原理1)Hashmap的数据结构哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。当链表长度超过8时,链表转换为红黑树。2)Hashmap的工作原理HashMap底层是hash数组和单向链表实现,数组中的每个元素都是链表,由Node内部类(实现Map.Entry<K,V>接口)实现,HashMap通过put&get方法存储和获取。存储对象时,将K/V键值传给put()方法:①、调用hash(K)方法计算K的hash值,然后结合数组长度,计算得数组下原创 2022-05-10 22:35:43 · 216 阅读 · 0 评论 -
java中高级工程师面试题一期
归类一:Spring相关面试知识点二:Java相关面试知识点1)jvm如何判断一个对象可以被回收?答:重要的是判断该对象是否被使用,只要未被使用就可以被回收。里面有两种算法实现。第一个是引用计数器,为每一个对象添加一个引用计数器,简单三:数据库相关面试知识点......原创 2022-05-17 19:25:30 · 220 阅读 · 0 评论 -
token的理解及使用
token1token的概念1.1token产生的原因客户端频繁地向服务端请求数据,服务端频繁地查询地到数据库查询用户名和密码进行对比,判断是否相等,在这样的背景下,token就会产生。1.2token的定义Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。1.3使用token的目的Token的目的是为了减轻服务器的压力,减少频繁的查原创 2022-05-15 23:39:33 · 1127 阅读 · 0 评论 -
动态规划算法
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2022-04-30 18:49:40 · 3798 阅读 · 0 评论