![](https://img-blog.csdnimg.cn/direct/d2342288aa124ded8fdeced7c14516fc.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
V哥原创技术栈
文章平均质量分 84
专注分享Java技术干货,包括多线程、JVM、Spring Boot、Spring Cloud、Intellij IDEA、Dubbo、Zookeeper、Redis、架构设计、微服务、消息队列、Git、面试题、最新动态、项目经验、鸿蒙开发等。
威哥爱编程(马剑威)
华为开发者专家(HDE)、CSDN博客专家、阿里云开发者社区专家博主、Java畅销书作者、TiDB开发者官方认证讲师
展开
-
Linux环境下配置jdk、Tomcat和Mysql详解
要在Linux系统中配置JDK、Tomcat和MySQL,是完成项目部署的首要步骤,为了方便初学者在项目部署时更加快捷,V 哥整理了 JDK,Tomcat,MySQL的环境配置,方便参考。原创 2024-08-23 10:42:17 · 463 阅读 · 0 评论 -
Tomcat的配置文件中有哪些关键的配置项,它们分别有什么作用?
如果您需要对所有请求应用自定义过滤器,可以在下配置-- 主机配置 --> -- 主机配置 --> -- 主机配置 --> -- 主机配置 --> -- 主机配置 --> -- 主机配置 -->原创 2024-08-23 10:28:03 · 285 阅读 · 0 评论 -
用Zipkin在分布式系统追踪收集和查看时间数据
Zipkin是一个开源的分布式追踪系统,它帮助收集、存储和展示实时的数据,以便于定位微服务架构中的延迟问题。以下是Zipkin的核心组件和工作流程的介绍,以及如何在Java中使用Spring Cloud Sleuth与Zipkin集成的案例。原创 2024-08-22 11:32:05 · 403 阅读 · 0 评论 -
MinIO的分布式系统是如何确保数据一致性的?
版本向量是一种并发控制机制,用于在分布式系统中追踪数据副本之间的因果关系。每个节点维护一个向量,其中包含它所知道的其他所有节点的最新版本号。MinIO具备完善的监控和日志功能,帮助用户实时了解系统的运行状态和性能表现,及时发现并解决数据一致性问题。MinIO与Kubernetes集成也不错,可以在Kubernetes环境中部署和管理MinIO,实现容器化和微服务架构下的数据存储和管理需求。原创 2024-08-22 11:08:12 · 834 阅读 · 0 评论 -
Vue状态管理库Pinia详解
首先,你需要从 Pinia 导入函数,并使用它来定义一个新的Store。users: [] // 初始状态是一个空数组}),getters: {// 一个 getter 函数,返回数组中的用户数量},actions: {// 一个 action 函数,用于添加用户})使用定义一个新的 Store,传入一个唯一的 ID 和一个配置对象。items: [] // 购物车初始状态为空数组}),getters: {// 计算属性,返回购物车中商品的总数量},actions: {原创 2024-08-21 11:08:20 · 1089 阅读 · 0 评论 -
为什么用Vite框架?来看它的核心组件案例详解
除了以上这些,Vite 还对 Vue 3 和 React 17+ 的官方支持,允许开发者使用这些前端框架进行开发。Vite 内置了对 TypeScript 的支持,无需额外配置即可使用 TypeScript 开发。Vite能够处理 CSS 文件和各种静态资源,包括图片、字体等,并支持 CSS 预处理器。Vite 能够生成 Sourcemap,方便开发者在浏览器中调试源代码。Vite 支持在构建过程中注入环境变量,使得配置更加灵活。原创 2024-08-21 11:00:21 · 1018 阅读 · 0 评论 -
用到爽,Markdown 语法一览表
定义列表在标准的Markdown中不被支持,但在一些变体中可以使用。项目1: 定义1项目2: 定义2。原创 2024-08-20 09:24:30 · 453 阅读 · 0 评论 -
WebSocket的应用场景与案例解析
WebSocket的实现原理相对简单,通过在HTTP协议中添加Upgrade头部来告知服务器需要升级协议。如果服务器支持WebSocket协议,则返回101状态码表示协议升级成功,之后客户端和服务器就可以通过WebSocket协议进行实时通信。实时性高:WebSocket可以实现实时通信,传输数据的延迟更低。减少网络带宽使用:通过建立持久化连接,减少了HTTP协议中每次请求和响应所需的网络带宽。双向通信:支持全双工通信,客户端和服务器可以同时发送和接收数据。跨域支持:支持跨域通信。原创 2024-08-20 09:18:43 · 482 阅读 · 0 评论 -
【推荐】总Stars超30k+的Java项目快速开发平台
一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适的。于是利用空闲休息时间开始自己写了一套后台系统。如此有了若依。她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。性别男,若依是给女儿取的名字(寓意:你若不离不弃,我必生死相依)。若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。原创 2024-08-19 09:34:37 · 451 阅读 · 0 评论 -
LevelDB 使用指南
LevelDB 是一个高性能的键值存储库,由 Google 开发。原创 2024-08-19 09:33:21 · 352 阅读 · 0 评论 -
Android架构组件:MVVM模式的实战应用
在Android开发中,MVVM模式可以通过使用架构组件如LiveData、ViewModel和DataBinding来实现。以上是个小案例,通过这些步骤,你可以在Android应用中实现MVVM模式,从而提高代码的可维护性、可测试性和模块化。ViewModel的生命周期与Activity或Fragment不同,它可以在Activity或Fragment重建时保持数据。Repository层作为Model和ViewModel之间的中间层,可以进一步抽象数据源,例如网络和本地数据库。原创 2024-08-16 11:14:33 · 270 阅读 · 0 评论 -
ECMAScript性能优化技巧与陷阱
性能优化是一个持续的过程,需要根据具体情况进行权衡和测试。使用新的 JavaScript 开发工具和性能分析工具,可以帮助你识别瓶颈并应用合适的优化策略。欢迎关注【威哥爱编程】一起并肩升级打怪。原创 2024-08-15 17:05:08 · 652 阅读 · 0 评论 -
初探 Rust 语言与环境搭建
起源:Rust 语言最初由 Mozilla 研究员 Graydon Hoare 于 2006 年开始设计,并于 2009 年首次公开。开发:Rust 是 Mozilla 实验室的一个项目,目的是创建一种能够保证内存安全同时又不牺牲性能的系统编程语言。发布:Rust 1.0 稳定版于 2015 年发布,标志着语言的成熟和稳定。原创 2024-08-15 10:51:44 · 763 阅读 · 0 评论 -
【Npm】使用教程
Npm(Node Package Manager)是一个JavaScript编程语言的包管理器,用于Node.js。它允许用户安装、共享和管理具有重复使用价值的代码,这些代码通常被称为“包”。以下是V哥整理的使用Npm的使用教程,收藏起来以备急用之需原创 2024-08-14 11:51:51 · 1106 阅读 · 0 评论 -
秒开WebView?Android性能优化全攻略
在Android开发中,实现WebView的秒开体验可以通过一系列性能优化策略来显著提升WebView的加载速度和用户体验。:预加载WebView可以在应用启动时提前初始化,例如加载一个空白页(“about:blank”),以减少首次加载页面的时间。延迟加载非首屏必需的操作,如后台网络请求,可以减少首屏加载时间。:并行请求可以在加载H5页面时,同时由Native端发起请求获取模板文件和动态数据,实现并行请求,减少总耗时。拦截请求可以通过自定义WebViewClient并重写。原创 2024-08-14 10:44:34 · 998 阅读 · 0 评论 -
什么是依赖倒置原则
依赖倒置原则的核心思想是高层策略性业务规则不应该依赖于低层的具体实现细节,而两者都应该依赖于抽象。依赖倒置原则是实现开闭原则(Open/Closed Principle)的基础,即软件实体应该对扩展开放,对修改关闭。通过依赖倒置,我们可以更容易地扩展系统功能,而不需要修改现有的代码。:系统中的抽象层(高层模块)不应当依赖于具体实现(低层模块),而是两者都应该依赖于抽象(如接口或抽象类)。:具体的实现应该依赖于抽象,这样在不修改抽象层代码的情况下,可以替换或修改具体的实现。这就体现了依赖倒置原则的精神。原创 2024-08-14 10:27:31 · 230 阅读 · 0 评论 -
Linux系统性能调优技巧
Linux系统性能调优是一个复杂的过程,涉及多个方面,包括CPU、内存、磁盘I/O和网络性能等。逐步调整参数,并监控其对系统性能的影响。分析进程行为,找出热点函数,确定瓶颈根源。性能调优是一个持续的过程,需要根据系统的实际运行情况不断调整和优化。确认内存瓶颈,进一步分析内存使用、分配、泄漏及缓存,找出问题来源。确认I/O来源,分析文件系统和磁盘使用率、缓存及进程I/O。:禁用不必要的服务,优化服务配置,以适应实际工作负载。找出内存使用最高的进程,以及使用。分析程序性能,找出瓶颈,使用。原创 2024-08-13 10:45:20 · 218 阅读 · 0 评论 -
深入理解Base64的用法和原理
Base64 编码使用 64 个可打印的 ASCII 字符来表示数据。这些字符包括大写字母A-Z(26 个)、小写字母a-z(26 个,但在标准 Base64 中通常使用大写)、数字0-9(10 个)、加号和斜杠。此外,为了支持 URL 和文件名,还有一个变种使用代替和代替。与编码表一样,解码表依赖于 Base64 字符集,包括大写字母A-Z、小写字母a-z(在标准 Base64 中通常不使用)、数字0-9、加号和斜杠。对于 URL 安全的 Base64,使用代替和代替。Java 的Base64。原创 2024-08-13 10:21:34 · 1489 阅读 · 0 评论 -
90%的人没用过的超读写能力、低延迟和高吞吐量的一款NoSQL
接下来,我们定义一个方法来模拟写入点击数据。// ... 客户端初始化代码 ... public void simulateAdClick(String user_id , String ad_id , long click_time) {// 定义写策略 WritePolicy writePolicy = new WritePolicy();// 定义键 Key key = new Key("ad_clicks" , "user_" + user_id , ad_id);原创 2024-08-12 10:19:17 · 275 阅读 · 0 评论 -
通过JUnit源码分析学习编程的奇技淫巧
自定义Runner允许开发者定义自己的测试运行逻辑。以下是创建自定义Runner实现Runner接口:创建一个类实现Runner接口,并实现run方法和方法。@Override// 返回测试描述@Override// 自定义测试运行逻辑使用@RunWith注解:在测试类上使用@RunWith注解来指定使用自定义的Runner。// 测试方法...TestRule接口允许开发者插入测试方法执行前后的逻辑。以下是创建自定义TestRule实现TestRule接口:创建一个类实现。原创 2024-08-12 10:17:40 · 345 阅读 · 0 评论 -
Guava 源码中7种设计模式的实现分析
以上是 V 哥在学习 Guava 源码中总结的7个设计模式的实现分析,欢迎关注威哥爱编程,做自己的技术,让别人去卷吧。原创 2024-08-09 10:12:05 · 1638 阅读 · 0 评论 -
在 MongoDB 中,如何配置副本集以实现读写分离?
通过上述这些机制,MongoDB 副本集能够自动确保成员之间的数据同步,同时提供高可用性和数据冗余。然而,为了确保副本集的健康和性能,请定期的监控和维护是必要的,汇报完毕。上面就是实现 MongoDB 副本集的读写分离的案例,从而提高应用的性能和可扩展性。定期检查副本集的状态和性能,确保副本集正常工作,并且数据在所有成员之间保持同步。在应用配置中,使用包含所有副本集成员地址的连接字符串来连接到副本集。配置可以根据需要调整,以确保写操作的持久性和一致性。这将初始化一个新的副本集。需要替换为实际的副本集信息。原创 2024-08-07 11:04:06 · 728 阅读 · 0 评论 -
分布式事务Seata的4种模式详解
1. AT 模式:这是一种无侵入的分布式事务解决方案。用户只需关注自己的业务 SQL,Seata 框架会自动生成事务的二阶段提交和回滚操作。在一阶段,Seata 会拦截业务 SQL,解析 SQL 语义,找到要更新的业务数据,并保存快照数据和行锁。二阶段如果是提交,Seata 只需清理数据;如果是回滚,则用快照数据还原业务数据。2. TCC 模式:TCC(Try-Confirm-Cancel)模式需要用户根据自己的业务场景实现 Try、Confirm 和 Cancel 三个操作。原创 2024-08-07 09:39:01 · 950 阅读 · 0 评论 -
关于java单例中使用使用volatile写双重检验锁如何实现及详细介绍
双重检查锁定:这个方法首先在不同步的情况下检查实例是否已经被创建,这是为了减少获取实例时的同步开销。如果实例不存在,那么代码进入同步块,再次检查实例是否被创建。这样可以确保即使多个线程同时到达同步块,也只有一个线程能够创建实例。volatile关键字:在Java内存模型中,volatile关键字确保变量的读写操作对所有线程都是可见的,并且禁止指令重排序。在上述代码中,instance变量被声明为volatile,这意味着每次访问instance时都会从主内存中读取其值,而不是从线程的工作内存中读取。原创 2024-08-06 10:12:16 · 375 阅读 · 0 评论 -
尝鲜 HarmonyOS NEXT 开发环境搭建
申请好 HarmonyOS NEXT的开发套件白名单后,就可以下载最的开发套件了,最新的开发工具更新时间是2024-06-17,DevEcoStudio5.0-API12-x86-402。下载后是这样的:我用的是 MAC PRO,所以下载的是 MAC 版,这里有个小坑,如果MAC 版本过低(11以下)模拟器无法使用。我当时是10.xx 版本,一直没有升级,没办法,心里不想升级,为了用上,升了吧。原创 2024-08-06 08:54:30 · 493 阅读 · 0 评论 -
Java中各种O(po,do,vo,dto等) 是不是人为增加系统复杂度?
V哥觉得,虽然引入这些概念可能会在一开始增加一些学习成本和设计工作,但从长远来看,它们为构建大型、复杂的系统提供了清晰的结构和强大的工具,有助于提高整个系统的质量和可维护性。所以啊,Java就是为复杂业务场景而生,这也遵循了事物的规律,简单的业务就用简单的方法复杂的业务就得细化,要不然不得乱成一锅粥。:将业务逻辑、数据持久化、数据展示等不同的关注点分离开来,有助于降低模块间的耦合度,提高代码的可读性和可维护性。:随着系统的发展,清晰的数据模型和层次分离可以降低维护成本,提高系统的可维护性。原创 2024-08-05 10:35:09 · 307 阅读 · 0 评论 -
Java RMI技术详解与案例分析
首先,定义一个远程接口,它将被各个分行实现以提供银行服务。Remote;最后V哥要提醒一下,在实际的银行系统中,当然还需要考虑安全性、事务性、持久性以及错误处理等多方面的因素,RMI的网络通信也需要在安全的网络环境下进行,以防止数据泄露或被篡改。你在应用中是怎么使用 RMI 的,欢迎关注威哥爱编程,一起交流一下哈。原创 2024-08-05 09:50:35 · 1246 阅读 · 0 评论 -
Python与c,JAVA相比,最大的问题在哪?
初学者在学习时,都在纠结学啥好,关于Python、C和Java是三种非常流行的编程语言,进入了选择困难症,那是因为你要先了解它们各自有独特的优势和劣势,再让自己有更好的选择。每种语言都有其优势和劣势,选择哪种语言取决于项目需求、性能要求、开发团队的熟悉度以及特定领域的标准实践。原创 2024-08-02 10:43:07 · 421 阅读 · 0 评论 -
怎么理解rpc,既然有http请求了为啥还要用rpc?
在RPC中,Netty常用于实现底层的网络通信,提供高吞吐量和低延迟的远程过程调用,这在需要高性能网络传输的场景中尤为重要。Dubbo不仅支持服务的注册、发现和调用,还提供了负载均衡、故障转移、容错和集群等特性,确保了系统的稳定性和可扩展性。最后小结一下,RPC框架通过提供高效的网络通信、跨语言支持、服务发现与负载均衡等特性,在构建高可靠性和高性能的分布式系统中发挥了关键作用。尽管HTTP请求可以用于客户端与服务器之间的通信,但它们通常用于请求静态数据或简单的API调用,而不是复杂的服务调用。原创 2024-08-02 10:18:42 · 330 阅读 · 0 评论 -
【技术栈导航】一般的java项目后台都有什么技术?
请注意,这个表格只是一个大致的指导,实际的学习路线可能会根据个人的兴趣、项目需求和职业发展方向有所不同。此外,随着技术的不断发展,新的工具和框架可能会出现,而一些旧的技术可能会被淘汰。因此,持续学习和适应变化是技术专家的重要特质。随着技术的发展,新的工具和框架也在不断涌现,但上述列表提供了一个较为全面的Java后台开发技术概览。学习Java的技术路线可以按照不同的阶段进行划分,从基础到高级,逐步深入。Java项目后台通常使用多种技术来构建一个功能齐全、安全、可维护的应用程序。原创 2024-08-01 09:44:58 · 633 阅读 · 0 评论 -
spring为什么使用三级缓存而不是两级?
Spring框架中的三级缓存主要用于解决循环依赖问题,特别是在单例Bean的创建过程中。下面V哥会解释为什么Spring需要三级缓存,而不是仅仅使用两级。:存储已经完全初始化好的单例Bean。当一个Bean被成功创建并注入到其他Bean中后,它会被放入一级缓存中。:存储已经完成了BeanNameAware、BeanFactoryAware等Aware接口的回调,但是还没有完全初始化的Bean。这个缓存主要用于存放早期引用的Bean,这些Bean在完成属性填充和初始化方法调用之前,就可以被其他Bean引用。原创 2024-08-01 09:37:27 · 536 阅读 · 0 评论 -
Python与c,JAVA相比,最大的问题在哪?
Python、C和Java是三种非常流行的编程语言,它们各自有独特的优势和劣势。每种语言都有其优势和劣势,选择哪种语言取决于项目需求、性能要求、开发团队的熟悉度以及特定领域的标准实践。原创 2024-07-31 17:48:49 · 643 阅读 · 0 评论 -
SpringApplicationRunListener能用来做什么?
以上是本文的全部内容了,掌握好SpringApplicationRunListener监听器,赶紧用起来吧,欢迎关注威哥爱编程,一个一个击破知识点,离高手更进一步。原创 2024-07-31 17:17:04 · 987 阅读 · 0 评论 -
Java 反射机制与Spring框架的那点事
框架开发:许多框架如 Spring 使用反射来实现依赖注入、AOP(面向切面编程)等核心功能。动态代理:通过反射可以创建动态代理,用于实现方法拦截、日志记录、事务管理等功能。单元测试:在进行单元测试时,反射可以用来访问和修改私有成员,以便测试通常无法直接访问的内部逻辑。插件系统:应用程序可以利用反射动态加载和使用插件,从而扩展应用程序的功能。配置文件解析:反射可以用于将配置文件中的设置映射到程序中的类和对象上。对象序列化和反序列化。原创 2024-07-31 11:16:48 · 351 阅读 · 0 评论 -
ArkTS 和仓颉的特性对比与案例
就像前面的介绍,两个语言各有千秋,根据业务场景选择合适的,才是最好的,欢迎关注威哥爱编程,成长路上一起并肩前行。原创 2024-07-31 10:02:34 · 1020 阅读 · 2 评论 -
快速了解详细讲一下MySQL的存储引擎
MySQL的存储引擎是数据库中用于表数据存储和管理的组件。不同的存储引擎提供了不同的功能、优化和特性,使得用户可以根据应用需求选择合适的存储引擎。原创 2024-07-30 14:47:33 · 274 阅读 · 0 评论 -
mysql 的ReLog和BinLog区别
MySQL中的重做日志(Redo Log)和二进制日志(Binary Log)是两种重要的日志系统,它们在数据库的事务处理、恢复和复制中扮演着关键角色。log_bin理解这两种日志的区别对于数据库的维护和管理至关重要,它们共同确保了数据库的稳定性和可靠性。原创 2024-07-30 14:44:46 · 377 阅读 · 0 评论 -
MySQL日志的8种类型详解,你都知道吗?
理解 MySQL日志类型,将有助于你分析问题和优化,相信这篇文章会对你有益,不是你不会,是你没有这么清晰的了解过这些内容,关注威哥爱编程,一起奔向技术小能手。原创 2024-07-30 11:55:54 · 457 阅读 · 0 评论 -
吃透 JVM 诊断方法与工具使用
在实际工作中,我们还需要监控系统资源,比如监控CPU、内存、磁盘I/O和网络等系统资源的使用情况,以确定是否是系统资源限制导致的问题。平时也可以阅读和理解JVM规范,V 哥推荐一本 JAVA程序员人手一本的书《JAVA虚拟机规范》,强烈建议好好读一下哦。如果本文内容对你有帮助,麻烦一键三连加关注,程序员路上,我们一起搀扶前行。原创 2024-07-30 11:54:15 · 825 阅读 · 0 评论 -
【读源码】Netty框架Future模式源码深度剖析
Netty 的 Future 模式提供了一种强大的方式来处理异步操作,使得网络编程更加高效和灵活。通过理解其实现和使用方式,可以更好地利用 Netty 构建高性能的网络应用。如果你需要更深入的源码分析,建议直接查看 Netty 的官方文档和源码。原创 2024-07-29 09:51:49 · 573 阅读 · 0 评论