- 博客(33)
- 资源 (1)
- 收藏
- 关注

原创 Rust 入门之闭包(Closures)
Rust 的闭包closures)是可以保存在变量中或作为参数传递给其他函数的匿名函数。你可以在一个地方创建闭包,然后在不同的上下文中执行闭包运算。不同于函数,闭包允许捕获其被定义时所在作用域中的值。有这样一个示例,我们的 T 恤公司偶尔会向邮件列表中的某位成员赠送一件限量版的独家 T 恤作为促销。邮件列表中的成员可以选择将他们的喜爱的颜色添加到个人信息中。如果被选中的成员设置了喜爱的颜色,他们将获得那个颜色的 T 恤。如果他没有设置喜爱的颜色,他们会获赠公司当前库存最多的颜色的款式。
2025-03-21 14:49:54
808

原创 git restore 和 git restore --staged 的区别
表示将在工作空间但是不在暂存区的文件撤销更改示例:之前已经将 zhw-free-demo/src/main/resources/application.yml 和 zhw-free-demo/src/main/resources/logback-spring.xml 两个文件使用 命令添加到了暂存区,.gitignore 文件是修改过,但没有 的文件(不在暂存区)。使用 命令后,使用 查看文件状态,发现.gitignore 文件的更改被撤销了。作用是将暂存区的文件从暂存区撤出,但不会更改文件示例
2020-02-22 22:51:02
68513
9
原创 Rust学习之实现命令行小工具minigrep(一)
通过开发一个在指定文件中查询某个特定字符串命的令行小工具进一步学习和巩固Rust基础。已同步自建源码已上传。
2025-03-16 16:39:00
977
原创 聊聊Java的SPI机制
SPI全称Service Provider Interface,翻译过来就是服务提供者接口。调用方提供接口声明,服务提供方对接口进行实现,提供服务的一种机制,服务提供方往往是第三方或者是外部扩展。下面是一段类的注释:翻译:服务提供者是对某一服务的具体实现。在服务提供者中的类一般会实现服务所定义的接口,并继承服务本身定义的类。服务提供者可以通过扩展的方式安装到Java平台的实现中,也就是说,将jar文件放置到标准的扩展目录之一。
2025-03-01 23:45:52
857
原创 简单概述Executors提供的几种线程池
Executors 是一个工厂类,提供了一些创建线程池的方法,这里详细梳理一下大家最常使用的4个方法。:只有一个线程的线程池,任务是顺序执行,适用于一个一个任务执行的场景:拥有固定线程数的线程池,如果没有任务执行,那么线程会一直等待,适用执行长期的任务。:线程池里有很多线程需要同时执行,60s内复用,适用执行很多短期异步的小程序或者负载较轻的服务
2025-01-13 11:14:27
786
原创 微服务设计(第2版)读书笔记
微服务(microservice)是基于业务领域建模的,可独立发布的服务。它会把业务内聚的功能封装起来,并通过网络供其他服务访问。将这样的服务组合起来构建出更复杂的系统。
2024-12-20 17:03:15
579
原创 Rust 所有权机制
所有权ownership)是 Rust 用于如何管理内存的一组规则。所有程序都必须管理其运行时使用计算机内存的方式。一些语言中具有垃圾回收机制,在程序运行时有规律地寻找不再使用的内存;在另一些语言中,程序员必须亲自分配和释放内存。Rust 则选择了第三种方式:通过所有权系统管理内存,编译器在编译时会根据一系列的规则进行检查。如果违反了任何这些规则,程序都不能编译。在运行时,所有权系统的任何功能都不会减慢程序。
2024-11-12 09:29:35
869
原创 Java线程池知识点梳理
线程在系统中创建的成本是相对比较高的,所以使用”池化“的思想,设计线程池,有大量任务需要执行时,可以直接从线程池中使用已经创建好的线程直接去执行。减少线程的创建和销毁带来的开销,线程池通过工作队列和线程管理来实现高效的任务执行。使用少量的线程数满足最大的吞吐量。线程池的主要组成部分包括。线程池的设计有助于优化多线程程序的性能和资源利用,同时简化了线程的管理和复用的复杂性。
2024-10-19 10:35:48
965
原创 本机运行Nacos容器每次都要重新创建容器,该怎么办?
但是,我在公司正常运行但是回家后启动容器时,却会发生Nacos无法启动成功的问题,日志显示的如此眼熟,Nacos初次使用时经常遇到的无法连接数据库的异常又出现了。我的Mysql数据库是在本机安装的,Docker容器运行Nacos使用宿主机IP连接Mysql数据库,宿主机IP发生变化了,容器自然连不上了。每次电脑换个网络连接,想启动容器还要修改连接数据库的IP地址,重新执行创建容器的命令,这太不优雅了,怎么办呢?命令,容器Nacos正常启动,可以访问了。就是指hostname,思路来了,何不在。
2024-10-19 10:33:47
514
原创 MAC M1 配置 Git SSH
折腾了一个小时多,最终查阅git官方帮助文档帮我从坑中爬了出来。总结一下处理过程中的要点。生成ssh key,将公钥配置到github账户中。本地的git config --global 配置邮箱要和生成的ssh key 指定的邮箱一致。确保ssh key 是否添加到了本机ssh服务中。生成的公钥私钥文件权限要可以读写。
2024-05-09 17:27:26
736
原创 大模型RAG应用与LangChain4初探
LLM可以加载从众多数据源检索到的信息,这些检索到的信息被加载到上下文窗口中,并用于 LLM 输出生成,这一过程通常称为检索增强生成(RAG)。RAG 是 LLM 应用程序开发中最重要的概念之一,因为它是一种向 LLM 传递外部信息的简便方法,在需要事实回忆的问题上,它比更复杂的微调更有优势。低成本:与重新训练或微调整个LLM相比,RAG通常只需要对检索机制和融合机制进行微调,大大降低了计算成本和时间。高效性:通过在生成过程中引入相关的外部信息,RAG可以显著提高LLM在特定领域的准确性。灵活性。
2024-05-09 17:19:02
1291
原创 Spring 源码分析-简单示例带你了解BeanFactoryPostProcessor
BeanFactoryPostProcessor 是 Spring针对BeanFactory做的扩展,可以对bean的定义(配置元数据进行处理)。也就是说SpringIoc容器允许BeanFactoryPostProcessor 在容器实际实例化任何其他的bean之前读取配置元数据,并有可能修改它。也就是说,我们根据我们的需要对 进行修改。这是一个《Spring源码深度解析》书中的示例,实现一个BeanFactoryPostProcessor,来修改bean中定义的特定属性值,实现一个“屏蔽” 效果。..
2022-07-06 09:13:37
335
原创 leetcode-无重复字符的最长子串
leetcode-无重复字符的最长子串题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是
2021-07-03 23:40:39
181
1
原创 当try、catch、finally遇到return
基本概念try – 用于监听。将要被监听的代码(可能抛出异常的代码)放在try语句块之内,当try语句块内发生异常时,异常就被抛出。**catch – 用于捕获异常。**catch用来捕获try语句块中发生的异常。**finally – finally语句块总是会被执行。**它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。执行语句说明只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使.
2021-03-28 18:34:06
319
1
原创 SpringBoot 整合 RabbitMQ 修改序列化方式
SpringBoot 整合 RabbitMQ 修改序列化方式1. 添加maven依赖我们可以搭建一个springboot的maven聚合工程,其中两个module,一个作为mq的生产者,一个作为mq的消费者。除了其他基本依赖歪还需要以下 spring-boot-starter-amq依赖。 <dependency> <groupId>org.springframework.boot</groupId>
2021-01-24 11:36:55
2416
原创 [Sping] Spring 源码分析之从单例缓存中获取单例Bean
单例 bean 的加载是首先要从单例缓存中获取,如果缓存中没有才会进行bean 的加载。这里我们分析从缓存获取bean的过程。在 AbstractBeanFactory 当中的doGetBean() 方法中首先从单例bean缓存中获取beanObject sharedInstance = getSingleton(beanName);继续跟踪源码到了 DefaultSingletonBeanRegistry 中的 getSingleton() 方法,如下:/** * Return the (r
2020-11-30 15:01:12
154
原创 [Sping] Spring 源码分析之 Bean 的加载
Bean的加载过程分析ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");Students s = (Students) ctx.getBean("stu2");我们调用 getBean() 的
2020-11-28 16:27:53
101
原创 leetcode 有序数组的平方
leetcode 有序数组的平方解题思路:递增顺序排列的数组,负数一定在左侧,正数一定在右侧。使用双指针法,两个指针分别指向下标 0 和 下标 length -1 ,每次比较两个下标对应的平方,将较大的结果逆序放入结果集合中import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.List;import java.util.stream.Collector
2020-11-03 10:36:29
270
原创 使用Java8的stream api 将集合中的对象的某个属性,和对象中子集的属性追加到一个集合中
将集合中的对象的某个属性,和对象中子集的属性追加到一个集合中public static void main(String[] args) { List<Stu> list = new ArrayList<>(); List teaList = new ArrayList(); teaList.add(new Teacher("a")); teaList.add(new Teacher("b")); t
2020-11-03 09:45:47
3400
原创 Spring源码之 obtainFreshBeanFactory
在spring IOC容器启动过程中,需要先去初始化beanFctory,这就是obtainFreshBeanFactory 方法
2020-03-22 14:59:47
420
原创 Docker运行nginx镜像
运行nginx镜像List item从镜像中心拉取镜像docker pull nginxdocker imagesREPOSITORY TAG IMAGE ID CREATED SIZE...
2020-01-04 22:59:40
348
原创 Docker入门 ,Windows10 环境下安装Docker for Docker客户端
什么是DockerDocker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。Docker 应用场景We...
2019-12-25 20:42:48
420
原创 PL/SQL程序(一)
什么是PL/SQLPL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。是面向过程的语言。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL 只有 Oracl
2017-03-10 00:57:47
527
原创 总结struts2文件上传
struts2文件上传总结struts2文件上传的代码编写 使用struts2标签提示上传文件提示信息配置自己的提示信息
2016-11-23 15:26:24
301
原创 Spring中使用xml配置bean的细节
Spring中使用xml配置bean的细节在xml文件中使用bean节点配置bean,bean的属性id在IOC容器中必须是唯一的。<bean id="helloWorld" class="com.test.spring.beans.HelloWorld"> <property name="name" value="Spring"></property></bean>依赖注入有三种
2016-07-18 17:45:37
21174
转载 十六进制转八进制
package com.one;/* * 问题描述 给定n个十六进制正整数,输出它们对应的八进制数。 输入格式 输入的第一行为一个正整数n (1<=n<=10)。 接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式 输出n行,每行为输入对应的八进制正整数。 注意 输入的十六进制数不会有前导0,比
2015-02-01 13:34:41
378
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人