Java

StringBuffer和StringBuilder

StringBuffer 操作字符串的方法加了 synchronized 关键字进行了同步,主要是考虑到多线程环境下的安全问题,所以如果在非多线程环境下,执行效率就会比较低 StringBuilder 除了类名不同,方法没有加 synchronized,基本上完全一样 StringBuilder的toString() StringBuilder的append() S

intern

当调用 intern() 方法时,如果字符串池中已经存在相同内容的字符串,则返回字符串池中的引用;否则,将该字符串添加到字符串池中,并返回对字符串池中的新引用。可以确保所有具有相同内容的字符串共享相同的内存空间 对于任意两个字符串 s 和 t,当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。 当编译器遇到 + 号这个操

字符串源码

String类的声明 比较字符串内容 char 数组优化为 byte 数组 Java 9 以前,String 是用 char 型数组实现的,之后改成了 byte 型数组实现,并增加了 coder 来表示编码。这样做的好处是在 Latin1 字符(一种单字节字符集)为主的程序里,可以把 String 占用的内存减少一半。 从 char[] 到 byte[],最主要的目的是节省字符串占

commons cli 基本使用

参考资料 Apache Commons CLI:构建命令行应用的利器 学习Apache Commons CLI 官网: https://commons.apache.org/proper/commons-cli/ 一个入门 Hello World pom java 效果

ReentrantLock 简单使用

摘自:《Java 编程的逻辑》 Java 并发包中的提供了显式锁,它可以解决 synchronized 的一些限制。 Java 并发包中的显式锁接口和类位于包 java.util.concurrent.locks 下,主要接口和类有: ❑ 锁接口 Lock,主要实现类是 ReentrantLock; ❑ 读写锁接口 ReadWriteLock,主要实现类是 ReentrantReadWrite

如何在Spring Cloud中实现Nacos客户端登录密码加密

背景 公司规范要求配置文件里不能出现明文的密码。最近项目引入了Nacos作为服务的配置中心,使用的是spring-cloud-starter-alibaba-nacos-config这个包。 基本的bootstrap.yaml配置如下: 那么如何将spring.cloud.nacos.config.password换为公司内部加密算法加密后的密码呢? 研究 打开spring-cloud-star

7.13暑期生活记录

本周在B站学习《黑马程序员java零基础》java入门1-16节及基础1-24节; 完成通过cmd打开QQ并配置环境变量; 完成JDK安装并配置好环境变量输出HelloWorld; 学会java基础原理知识;下载安装eclipse学会基本使用方法;学习java语言判断与循环; 阅读《构建之法》一,二章。

第二周进度总结

(1)本周做了什么,花在学习上多长时间,花在代码时间上多长时间,花在解决问题用了多长时间。 本周完成了yarn集群和hive数据库的部署 使用的命令如下 su - aaacd /export/server/hadoop/etc/hadoop/llvim mapred-env.shexport JAVA_HOME=/export/server/jdkexport HADOOP_JOB_HISTORY

什么是Spring?如何使用它

什么是Spring? 来自百度百科 Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。 从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 Spring最初的出现是为了解决EJB臃肿的设计,以及难以测试等问题。 Spring为简化开发

82. 删除排序链表中的重复元素 II

82. 删除排序链表中的重复元素 II 是一个有序链表 错误代码 这段代码的目的是删除单链表中的所有重复元素,但是它只能删除连续且相邻的重复元素,并且存在一个逻辑错误。错误在于当发现重复元素时,代码没有保持当前节点不变以继续检查后续是否还有重复元素,而是直接移动到了下一个节点。这会导致在一系列连续重复元素中,只删除了第一个重复元素后的一个元素,而不是删除所有重复的元素。 例如,对于链表 1 -&

Neo4j:图数据库的革命性力量

Neo4j 首席技术官 @prathle 撰写了一篇出色的博文,总结最近围绕 GraphRAG 的热议、我们从一年来帮助用户使用知识图谱 + LLM 构建系统中学到的东西,以及我们认为该领域的发展方向。Neo4j一时间又大火起来,本文将带你快速入门这神奇的数据库。 前言 Neo4j是一款符合ACID标准的图数据库,能处理当今世界中极为复杂的关系数据。由Emil Ifram于2007年创建,使用J

naocs 作为服务注册与发现和配置中心

下载和安装 国内的软件,去官网下就行了,下载好后到其 bin 目录执行命令 startup.cmd -m standalone 服务就会启动 浏览器访问,能访问到 nacos 界面 注册服务 工程导入依赖 启动类加注解 配置文件 启动服务,刷新 nacos 页面,就能看到我们的服务了

算法奇论——LIS 与打牌有关?看 LIS 的二分搜索解法

《算法奇论》的第一篇文章啦~~ 《算法奇论》是作者开创的新的一个专栏,专门收录各种有关于计算机算法学的奇闻异事,欢迎阅读。 由于本人仅 14 岁,知识、经验可能不足,再加上本文进度比较赶,本文可能有勘误或错别字、拼写错误,还请发现者在评论区指出,作者一定在看到评论后第一时间更正,谢谢! 同篇文章的其他位置: 洛谷:https://www.luogu.com/article/m6ue8vne 知乎

Java第二周学习总结

深入Java基础语法 本周,我进一步理解Java中的基本数据类型和引用数据类型。学会了如何根据需求选择合适的数据类型。掌握了算术运算符、关系运算符、逻辑运算符以及位运算符的使用,能够编写简单的表达式进行计算和条件判断。 并深入学习了if-else、switch-case、for、while、do-while等控制流语句,能够编写具有逻辑分支和循环结构的程序。 2.深入理解面向对象编程 本周的重点

Fancybox: 号称世界上最流行的灯箱脚本!这款“花盒”为什么与众不同?

今天要分享的是一个灯箱脚本库:Fancybox。最近了不起刚好用到它。这里就和大家分享下。 简介 Fancybox 是终极的 JavaScript 灯箱替代品,为多媒体显示中的优质用户体验设定了标准。支持图像、视频、地图、内联内容、iframe 和任何其他 HTML 内容。 此外,Fancybox 很容易集成到任何 JavaScript 框架中。详情可以参见官方文档中关于 React、Vue 和

ArrayDeque

ArrayDeque 又实现了 Deque 接口(Deque 又实现了 Queue 接口) Deque与Queue相对应的接口 Queue Method Equivalent Deque Method 说明 add(e) addLast(e) 向队尾插入元素,失败则抛出异常 offer(e) offerLast(e) 向队尾插入元素,失败则返回false remov

Comparator和Comparable

Comparable 实现了 Comparable 接口,重写 compareTo() 方法,就可以按照自己制定的规则将由它创建的对象进行比较 Comparator ArrayList的sort源码 使用选择 一个类实现了 Comparable 接口,意味着该类的对象可以直接进行比较(排序),但比较(排序)的方式只有一种,很单一。 一个类如果想要保持原样,又需要进行不同方

for-each循环陷阱

for-each删除元素报错 remove 的时候触发执行了 checkForComodification 方法,该方法对 modCount 和 expectedModCount 进行了比较,发现两者不等,就抛出了 ConcurrentModificationException 异常。 ArrayList重写了Iterable的iterator方法 fail-fast 是一种

Iterator和Iterable

Java遍历List有三种方式 Iterator源码 它对 Iterable 的每个元素执行给定操作,具体指定的操作需要自己写Consumer接口通过accept方法回调出来。 List 的关系图谱中并没有直接使用 Iterator,而是使用 Iterable 做了过渡 ArrayList重写了Iterable的iterator方法 Map 就没办法直接使用 for-each

PriorityQueue

PriorityQueue 是 Java 中的一个基于优先级堆的优先队列实现,它能够在 O(log n) 的时间复杂度内实现元素的插入和删除操作,并且能够自动维护队列中元素的优先级顺序。 add()和 offer() 前者在插入失败时抛出异常,后则则会返回false 新加入的元素都是先插入到堆的末尾,也就是堆的最右下角,然后开始向上调整到合适的位置 element()和 pee

20个异常处理的最佳实践

尽量不要 catch RuntimeException,比如 NullPointerException、IndexOutOfBoundsException 等等,应该用预检查的方式来规避。 尽量使用 try-with-resource 来关闭资源:禁止在 try 块中直接关闭资源,因为一旦 close() 之前发生了异常,那么资源就无法关闭 不要捕获 Throwable:很可能把超出程

异常处理全面解析

checked和unchecked异常 checked 异常(检查型异常)在源代码里必须显式地捕获或者抛出,否则编译器会提示你进行相应的操作;而 unchecked 异常(非检查型异常)就是所谓的运行时异常,通常是可以通过编码进行规避的,并不需要显式地捕获或者抛出。 NoClassDefFoundError:程序在编译时可以找到所依赖的类,但是在运行时找不到指定的类文件,导致抛出该错误;

代码初始化块

代码初始化块 类实例化的时候执行代码初始化块; 实际上,代码初始化块是放在构造方法中执行的,只不过比较靠前; 代码初始化块里的执行顺序是从前到后的。 静态初始化块在类加载时执行,只会执行一次,并且优先于实例初始化块和构造方法的执行;实例初始化块在每次创建对象时执行,在构造方法之前执行。

不可变类

不可变类 一个类的对象在通过构造方法创建后如果状态不会再被改变,那么它就是一个不可变(immutable)类。它的所有成员变量的赋值仅在构造方法中完成,不会提供任何 setter 方法供外部类去修改。 不可变类String 1)常量池的需要 字符串常量池是 Java 堆内存中一个特殊的存储区域,当创建一个 String 对象时,假如此字符串在常量池中不存在,那么就创建一个;假如已经存,就不会再

封装、继承和多态

封装 1、良好的封装能够减少耦合。 2、类内部的结构可以自由修改。 3、可以对成员进行更精确的控制。 4、隐藏信息,实现细节。 继承 Java 有三种实现多继承效果的方式,分别是内部类、多层继承和实现接口。 父类的构造方法不能被继承 子类的构造过程必须调用其父类的构造方法:Java 虚拟机构造子类对象前会先构造父类对象,父类对象构造完成之后再来构造子类特有的属性,这被称为内存叠加。

Vue 3 后端错误消息处理范例

1. 错误消息格式 前后端消息传递时,我们可以通过 json 的 errors 字段传递错误信息,一个比较好的格式范例为: errors 中,字段名代表出错位置(如果是输入框的话,对应错误要显示在框下面),内容为一个数组,每个字符串代表一个错误。 2. 处理函数 可以新建一个 composables 文件夹,以存储各个 components 中共用的逻辑,例如错误消息处理。这里在 composa

代码随想录刷题day 11 | **150. 逆波兰表达式求值** **239. 滑动窗口最大值** **347.前 K 个高频元素**

[150. 逆波兰表达式求值](https://leetcode.cn/problems/reverse-string/) 使用栈即可,遍历token数组,遇到运算符就弹栈,取出两个数做运算然后压栈。遇到数字就压栈。最终栈中剩余的唯一数字就是结果。 239. 滑动窗口最大值 这里先给出Java中双端队列Deque的用法 https://blog.csdn.net/weixin_47772522/

Java中的CountDownLatch详解

Java中的CountDownLatch详解 大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 一、什么是CountDownLatch? CountDownLatch 是Java并发包中的一个工具类,用于实现线程间的等待。它允许一个或多个线程等待其他线程完成操作,然后再继续执行。CountDownLatch 的主要方法是 await() 和 countDown(),分

Java中的CyclicBarrier详解

Java中的CyclicBarrier详解 大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 一、CyclicBarrier简介 CyclicBarrier 是Java并发包中的一个工具类,用于实现多线程任务分解成多个阶段并行执行的场景。它允许一组线程互相等待,直到所有线程都达到某个公共屏障点(barrier),然后才能继续执行。 二、CyclicBarrier的基本

nodejs微信支付安全证书下载,亲测有效

微信支付是目前非常流行的支付方式之一,很多开发者在集成微信支付时需要下载并使用微信支付的安全证书。本文将详细介绍如何在Node.js环境中下载微信支付安全证书,并提供一个亲测有效的示例代码。 前置条件 在开始之前,请确保你已经具备以下条件: 已注册微信支付商户,并获得商户号和API密钥。 已安装Node.js环境。 步骤一:安装所需的Node.js模块 首先,我们需要安装一些必要的Node.j

<<  <  291  292  293  294  295  296  297  298  299  300  301  >  >>