Java
StringBuffer和StringBuilder
StringBuffer 操作字符串的方法加了 synchronized 关键字进行了同步,主要是考虑到多线程环境下的安全问题,所以如果在非多线程环境下,执行效率就会比较低 StringBuilder 除了类名不同,方法没有加 synchronized,基本上完全一样 StringBuilder的toString() StringBuilder的append() S
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语言判断与循环; 阅读《构建之法》一,二章。
什么是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:很可能把超出程
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