Java
Vector线程安全问题
背景 在韩顺平的Java课程中,有一个坦克大战练习项目,其中有这样一个功能需求:敌人坦克自动发射多个子弹,检测子弹是否击中我方坦克。视频中使用的是Vector存储这个子弹队列。 代码实现 对于这一部分,我的实现代码是: 代码报错 在运行过程中,在检测我方坦克是否被打中的代码部分抛出了这样的错误: 分析 GPT的回答: 虽然Vector 在 Java 中确实是线程安全的。它通过在所有修改操作(
JVM系列1:深入分析Java虚拟机堆和栈及OutOfMemory异常产生原因
JVM系列1:深入分析Java虚拟机堆和栈及OutOfMemory异常产生原因 前言 JVM系列文章如无特殊说明,一些特性均是基于Hot Spot虚拟机和JDK1.8版本讲述。 下面这张图我想对于每个学习Java的人来说再熟悉不过了,这就是整个JDK的关系图: 从上图我们可以看到,Java Virtual Machine位于最底层,所有的Java应用都是基于JVM来运行的,所以
Java中反射的机制
反射 目录反射反射的概念反射的作用反射的原理直接使用类使用反射总结什么情况下使用反射反射的优缺点反射是否真的会让你的程序性能降低? 反射的概念 反射(Reflection)是 Java 的一种特性,它可以让程序在运行时获取自身的信息,并且动态地操作类或对象的属性、方法和构造器等。通过反射功能,可以让我们在不知道具体类名的情况下,依然能够实例化对象,调用方法以及设置属性。 反射的作用 反射的作用有
SpringMVC静态资源处理
基本使用 只需要实现WebMvcConfigurer接口,重写其中的addResourceHandlers方法即可。 其中路径遵循Ant Match语法规则,资源位置(resourceLocations)遵循Spring Resource路径语法,内部会将字符串转成Resource实例。 简要介绍Ant Match语法 ?:匹配单个字符 *:匹配零个或者多个字符 ******:匹配零
Java String.valueOf 和 toString的区别
String.valueOf() 和 toString() 都是 Java 中用于获取字符串表示的方法,但它们的使用场景和实现方式有所不同。以下是它们之间的主要区别: 1. 方法来源 String.valueOf(Object obj): 是 String 类的静态方法,接受一个对象作为参数。 如果传入的对象为 null,它会返回字符串 "null"。 toString(): 是 O
高可用之限流-03-Semaphore 信号量做限流
限流系列 开源组件 rate-limit: 限流 高可用之限流-01-入门介绍 高可用之限流-02-如何设计限流框架 高可用之限流-03-Semaphore 信号量做限流 高可用之限流-04-fixed window 固定窗口 高可用之限流-05-slide window 滑动窗口 高可用之限流-06-slide window 滑动窗口 sentinel 源码 高可用之限流-07-token bu
Nacos服务注册与发现
1.基本原理概述 在微服务调用过程中主要是两个角色一个是服务的消费者,一个是服务的提供者 服务提供者:提供接口供其它微服务访问 服务消费者:调用其它微服务提供的接口 大型微服务项目中,服务提供者的数量会非常多,为了管理这些服务,就需要注册中心来对这些服务进行一个统一管理,服务消费者,服务提供者,注册中心三者关系: 1.服务消费者先把自己的服务放在注册中心统一进行管理 2.服务消费者在需要
代码随想录算法训练营 | 完全背包,518. 零钱兑换 II,377. 组合总和 Ⅳ,70. 爬楼梯 (进阶)
完全背包 题目链接:完全背包 文档讲解︰代码随想录(programmercarl.com) 视频讲解︰完全背包 日期:2024-10-11 想法:dp数组设置思路跟01背包一样,不同在遍历上,完全背包遍历背包大小是从weight[i]开始的(背包空间小于weight[i]就没有意义,不用考虑,直接用之前的对应数值就行了),从前往后遍历就能够是重复使用物品i的效果。 Java代码如下: 518.
Day14--while循环
Day14--while循环 三种循环结构。 while 循环、do...while 循环、for 循环。 在 Java5 中引入了一种主要用于数组的增强型 for 循环。 while循环 while 是最基本的循环,它的结构为: 只要布尔表达式为 true,循环就会一直执行下去。 我们大多数情况是会让循环停止下来的,我们需要个让表达式失效的方式来结束循环。 少部分情况需要循环一直执行,比如服务
Nacos服务注册与发现的原理
服务注册和发现 1.注册中心原理 在微服务远程调用的过程中,包括两个角色: ● 服务提供者:提供接口供其它微服务访问,比如item-service ● 服务消费者:调用其它微服务提供的接口,比如cart-service 在大型微服务项目中,服务提供者的数量会非常多,为了管理这些服务就引入了注册中心的概念。注册中心、服务提供者、服务消费者三者间关系如下: 流程如下: ● 服务启动时就会注册自己的服
2024前端高频面试题之二
1.JavaScript中的数据类型?存储上的差别? 基本类型 number string bool undefined等 。 引用类型 object。包含 array,object,func。 存储差异:基础类型存在栈内存,引用类型存储堆内存。 存储的差异引出了浅拷贝和深拷贝等问题,浅拷贝是一个表面的复制品,原本的值和复制的值相互影响,深拷贝深层拷贝了一份堆内存的值,相互独立。 2.如何理解D
Spring事务 - 事务传播机制
Spring事务 - 事务传播机制 概要 在Java的Spring框架中,事务管理是保证应用数据一致性和可靠性的关键。Spring提供了灵活的事务传播机制,它定义了事务边界,以及在嵌套方法调用时如何处理事务。 事务的传播机制,顾名思义就是多个事务方法之间调用,事务如何在这些方法之间传播。 &nb
基于大型语言模型爬虫项目Crawl4AI介绍
Crawl4AI是一款专为大型语言模型(LLMs)和AI应用设计的开源网页爬虫和数据提取工具。最近挺火的开源AI网络爬虫工具:Crawl4AI 可以直接用于大语言模型和AI应用。性能超快,还能输出适合大语言模型的格式,比如JSON、清理过的HTML和markdown。它还支持同时爬取多个网址,能提取所有媒体标签(图片、音频、视频),以及所有内外部链
BOM和DOM介绍、Window对象、Window子对象
【一】BOM和DOM介绍 【1】什么是DOM/BOM 文档对象模型(Document Object Model, 简称 DOM) 浏览器对象模型(Browser Object Model, 简称 BOM) 是 JavaScript 与网页内容及浏览器环境进行交互的两种核心概念。 【2】DOM (1)概述 文档对象模型(DOM)是一个编程接口,它以树状结构来表示 HTML 或 XML 文档。
函数、匿名,箭头函数、对象、内置方法(日期和时间)、JSON对象,正则对象、Math对象
【一】函数 【1】函数的语法格式 【2】函数的调用 函数名 + () 函数调用时,会立即执行,代码体里面的代码 可以多次调用,每次调用是独立不相关的 函数的执行跟定义位置无关,只与调用的位置有关。 【3】函数的分类 (1)无参函数 (2)有参函数 【4】函数的参数 函数的阐述可以没有,可以是多个,多个参数之间用逗号分隔 函数的参数根据书写位置的不同,名称也不同 (1)形式参数 是
Nuxt.js 应用中的 kit:compatibility 事件钩子详解
title: Nuxt.js 应用中的 kit:compatibility 事件钩子详解 date: 2024/10/11 updated: 2024/10/11 author: cmdragon excerpt: kit:compatibility 是处理浏览器兼容性问题的有效工具。正如本篇文章中所述,合理地利用这一钩子可以提升用户体验,并确保应用在不同环境中都能稳定运行。 categor
CS439: Introduction to Data Science
CS439: Introduction to Data Science all 2024Problem Set 1 Due: 11:59pm Friday, October 11, 2024 Late Policy: The homework is due on 10/11 (Friday) at 11:59pm. We will release the solutionsof the home
不要慌,FastGPT 告诉我这是技术性调整,利好大 A!
一觉醒来,股市又变天了,到处一片哀嚎,我看了下前几天牛市的赚钱名单,咱们公众号的粉丝没有一个在里面,说实话很失望,希望大家多做些有意义的事情,而不是整天虚度光阴。一个个平时看着都挺厉害,也没赚到钱,我很失望。 你们什么时候才能起飞?我都替你们着急 如果你对自己的技术没有绝对的自信,就不要频繁操作,拿好不动,最终你就能跑赢绝大多数人。 崩管市场和政策怎么变,一定是利好大A的,拿好别动!这话不是我说
计数器 CountDownLatch
CountDownLatch Semaphore 更加适合用于控制对有限资源的访问,特别是当你需要允许一定数量的线程同时访问资源时 CountDownLatch 更加适合用于协调多个线程的完成状态,确保在某些操作完成后再执行后续操作 它用于协调多个线程的执行,使得某些操作必须等到其他操作完成后才能继续进行,常用方法如下 用法示例 原理 state 初始设置了值,当主线程调用 await()
循环计数器/循环栅栏/循环屏障 CyclicBarrier
CyclicBarrier 和 CountDownLatch 有点类似,主要区别是 CyclicBarrier 可以重用,常用方法如下: await() 底层是让 state - 1,达到栅栏的线程数量足够时,state 会重置,这样来体现可重用的。CountDown 不会重置 state 如果要使用线程池,线程池数量要和 CyclicBarrier 计数器一致 用法示例1 用法示例2 执行两
信号量 Semaphore
Semaphore Semaphore 更加适合用于控制对有限资源的访问,特别是当你需要允许一定数量的线程同时访问资源时 CountDownLatch 更加适合用于协调多个线程的完成状态,确保在某些操作完成后再执行后续操作 它用于控制对共享资源的访问,通过维护一个许可的计数器来限制同时访问某个资源的线程数量,常用方法如下 用法示例 原理 创建 Semaphore 实例 同 Reentran
GUI 800 打印预览dump
3376098 - 使用 FEATURE_NOT_SUPPORTED 的 RAISE_EXCEPTION 转储在从假脱机到 SP01 的打印预览时发生 - SAP for Me URE_NOT_SUPPORTED 的 RAISE_EXCEPTION 转储在从假脱机到 SP01 的打印预览时发生 SAP Knowledge Base Artic
Android & iOS 使用 ARMS 用户体验监控(RUM)的最佳实践
作者:元泊 引言 背景信息 随着移动互联网技术的持续演进与全民互联网时代的深入,用户在 Android、iOS 应用程序、小程序、H5 游戏及网页等多元化平台上的交互时长显著增长。这一趋势加剧了用户体验(UX)场景的复杂性,并对跨设备及多样网络环境下的性能监控提出了更高要求。在此背景下,深度剖析用户来源、浏览轨迹、驻留时长、访问速度性能,以及遭遇的任何体验障碍,不仅是解锁每位用户行为深层次需求的关
[Java/Spring] 深入理解 : Spring ApplicationContext
[Java/Spring] 深入理解 : Spring ApplicationContext 1 概述 : ApplicationContext 简介 应用场景 CASE : 基于 ApplicationContextAware 接口,在程序启动时 获取 ApplicationContext 2 源码分析 ApplicationContext AbstractApplicationContex
微服务对接沙箱支付宝支付,并实现回调数据修改
在前文中,我们完成了vip题目与权限的设计,于是自然而然的引出了我们怎么成为vip这个问题,传统的c端系统以及游戏,往往采用对接支付接口的方式,本文选取了对接支付宝接口的形式进行支付并获取vip权限。 扫码付款的接入流程 支付宝支付的逻辑过程 支付成功后的消息回调 有了此处基础上,通过研究支付宝沙箱支付原内容,我们可以很好的上手 进入支付宝
算法-动态规划-子序列
子序列问题 是 动态规划 解决的经典问题。 1. 最长递增子序列 (LeetCode 300) 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 思路: dp[i]表示以nums[i]为结尾的最长子序列的长度 用j遍历0至i-1的元素,如果nums[i] > nums[j],则dp[i] = Math.max(dp[i], dp[j]+1)(可以用nums[i]追加在之前
JAVA类加载器是从本地
JAVA类加载器是从本地 一、概述1、作用类加载器是JVM执行类加载机制的前提。ClassLoader的作用:ClassLoader是Java的核心组件,所有的Class都是由ClassLoader进行加载的,ClassLoader负责通过各种方式将Class信息的二进制数据流读入JVM内部,转换为一个与目标类对应的java.lang.Class对象实例。然后交给Java虚拟机进行链接、初始化等操