自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(126)
  • 收藏
  • 关注

原创 【刷力扣】23. 合并 K 个升序链表(dummy节点技巧 + 分治思维 + 优先队列)

一棵由k个元素组成的完全二叉树,其树高为logk。没必要一次性将所有node都加入优先队列。我们这里用到的优先队列,本质是。

2024-06-15 22:50:29 738 1

原创 对中介者模式的理解

第一行包括一个整数N,表示用户的数量(1 <= N <= 100) 第二行是N个用户,比如User1 User2 User3,用空格分隔 第三行开始,每行包含两个字符串,表示消息的发出者和消息内容,用空格分隔。小明正在设计一个简单的多人聊天室系统,有多个用户和一个聊天室中介者,用户通过中介者进行聊天,请你帮他完成这个系统的设计。对于每个用户,输出一行,包含该用户收到的所有消息内容。

2024-05-13 22:50:16 863

原创 对命令模式的理解

【代码】对命令模式的理解。

2024-05-03 17:01:03 1403

原创 对策略模式的理解

接下来的 N 行,每行输入两个整数,第一个整数M( 0 < M < 400) 表示商品的价格, 第二个整数表示优惠策略,1表示九折优惠策略,2表示满减优惠策略。小明家的超市推出了不同的购物优惠策略,你可以根据自己的需求选择不同的优惠方式。请你设计一个购物优惠系统,用户输入商品的原价和选择的优惠策略编号,系统输出计算后的价格。输入的第一行是一个整数 N(1 ≤ N ≤ 20),表示需要计算优惠的次数。每行输出一个数字,表示优惠后商品的价格。个人觉得这种方式更灵活。

2024-04-26 22:44:20 1477

原创 对观察者模式的理解

小明所在的学校有一个时钟(主题),每到整点时,它就会通知所有的学生(观察者)当前的时间,请你使用观察者模式实现这个时钟通知系统。发布者状态(数据)变化后,通知订阅者(Subscriber)/观察者。输入的第一行是一个整数 N(1 ≤ N ≤ 20),表示学生的数量。接下来的 N 行,每行包含一个字符串,表示学生的姓名。对于每一次时钟更新,输出每个学生的姓名和当前的时间。主题状态(数据)变化后,通知订阅了该主题的观察者。最后一行是一个整数,表示时钟更新的次数。打开文件 or 保存文件。

2024-04-21 21:35:22 901

原创 对享元模式的理解

享元模式只有一个目的: 减少内存消耗。如果程序没有遇到内存容量不足的问题, 则可以暂时忽略该模式。当然了也有其他称呼:缓存、Cache、Flyweight。我理解:享元,共享元数据。

2024-04-20 21:37:49 435

原创 对组合模式的理解

接下来的 N 行,每行描述一个部门或员工的信息。部门的信息格式为 D 部门名称,员工的信息格式为 E 员工名称,其中 D 或 E 表示部门或员工。请你设计一个组合模式来管理这些部门和员工,实现对公司组织结构的统一操作。部门和员工都具有一个通用的接口,可以获取他们的名称以及展示公司组织结构。第一行是一个整数 N(1 <= N <= 100),表示后面有 N 行输入。小明所在的公司内部有多个部门,每个部门下可能有不同的子部门或者员工。输出公司的组织结构,展示每个部门下的子部门和员工。显然,这并不是正确的实现。

2024-04-20 20:10:24 1063

原创 对桥接模式的理解

实际开发中,我们希望Spring帮我们组织好bean,我们拿来就用即可。装饰器模式,是同一接口(同一抽象)的组合。桥接模式,是不同接口(不同抽象)的组合。

2024-04-16 22:57:23 464

原创 对外观模式的理解

每个设备都有独立的开关密码,分别用数字1、2和3表示。即输入1时,空调关闭,输入2时,台灯关闭,输入3时,电视机关闭,当输入为4时,表示要关闭所有设备。请你使用外观模式编写程序来描述电源总开关的操作。接下来的 N 行,每行包含一个数字,表示对应设备的开关操作(1表示关闭空调,2表示关闭台灯,3表示关闭电视机,4表示关闭所有设备)。输出关闭所有设备后的状态,当输入的数字不在1-4范围内时,输出Invalid device code.第一行是一个整数 N(1 <= N <= 100),表示后面有 N 行输入。

2024-04-15 23:16:57 763

原创 AI来了,Spring还会远吗?(Spring AI初体验)

下载好JDK 17,在上图的JDK中不一定能看到。此时,选add JDK:选。接触过各种llm的api就知道,那叫一个千奇百怪。

2024-04-14 23:04:37 900

原创 正确使用@RequestMapping(包含属性详解)

服务端报错:Resolved [org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation]为啥把这个属性放到最后?并不是last but not least,而是这个属性真不重要。默认情况下:请求头的Accept为。

2024-04-14 21:27:43 1923

原创 对装饰器模式的理解

破罐子破摔,世界是熵增的…

2024-04-13 21:57:50 1270

原创 怎么“访问”Spring容器管理的bean?

一种方式:注入依赖【告知容器,我需要某个bean】正确使用@Resource正确使用@Autowired另一种方式:注入容器,直接“访问”容器中的bean。

2024-04-11 23:14:55 438

原创 Bean的生命周期(正确使用bean创建后和销毁前的钩子)

实际开发中,极少会同时使用三套方法。目前觉得注解真是不错的语法。

2024-04-11 21:54:06 808

原创 正确使用@Autowired

Spring框架两大核心特性:IoC容器(对开发者来说,就是希望Spring帮助注入依赖) + AOP因此,熟练使用Spring框架之一便是熟练使用依赖注入。之前介绍了“正确使用@Resource”,本文重点介绍“正确使用@Autowired”

2024-04-07 20:38:48 1428

原创 对代理模式的理解

在【对AOP的理解】中,提到过代理模式。本篇文章进一步谈谈我对代理模式的理解。@Slf4j@Service@Resource@Override@Resource...UserService是接口,有两个实现类,Spring不知道到底要注入哪个bean,因此报错了。

2024-04-06 23:43:30 647

原创 正确使用@Resource

如果@Resource注解中指定了name属性,那么Spring只会根据name属性的值去找bean,找不到则报错。如果@Resource注解没有指定name属性,那么会根据字段名或setter方法推断一个默认名字。如果根据默认名字找到了bean,那就注入这个bean。如果根据默认名字找不到bean,那就降级为根据类型去找bean。如果还找不到,那就报错。

2024-04-06 21:15:52 1000

原创 Free MyBatis Tool插件的进阶使用指南(消灭dao层的繁琐编码)

目录零、起因一、怎么使用Free MyBatis Tool插件?1 基本使用2 进阶使用(搞清楚Options的用法)2.1 概览2.2 详述2.2.0 Options(一项都不勾选)2.2.1 Use-Lombok【消除UserDO中的getter和setter代码】2.2.2 Comment(实体注释)【和“2.2.1”相比,没任何变化...】2.2.3 Use-Schema(使用Schema前缀)【和“2.2.1”相比,没任何变化...】2.2.4 Overwrite-Java【和“2.2.1”相比,

2024-04-04 21:08:42 1353

原创 通义灵码/Baidu Comate真能取代程序员吗?

【代码】通义灵码/Baidu Comate真能取代程序员吗?

2024-04-04 16:46:05 1185

原创 让我们一起搞懂:数据库的悲观锁和乐观锁

后端开发少不了操作数据库的表(也就是CRUD boy~)。在多线程环境下,线程A和线程B同时修改同一张表的同一条记录,会导致错误。例如,对于库存Stock表:idquantity1Widget1用户A和用户B几乎同时访问网站,并决定购买"Widget"商品。用户A的请求被线程A处理,线程A读取到"Widget"的库存数量为1。同时,用户B的请求被线程B处理,线程B也读取到"Widget"的库存数量为1。线程A开始处理用户A的购买请求,减少库存数量,即。

2024-03-31 18:07:01 834

原创 用Optional取代null

【代码】用Optional取代null。

2024-03-30 17:01:46 923

原创 对AOP的理解

跟着廖雪峰老师,实现:对计算方法执行的耗时。@Service@Overridetry {@Aspect@Componenttry {中的xxx和要一一对应。/***/

2024-03-27 22:56:11 1030

原创 如何配置元数据?(如何使用Spring容器)

当然了,本质是@Component这个注解。例如:@Service这个注解也包含@Component。

2024-03-24 17:15:09 965

原创 对适配器模式的理解

如果fits()方法不变,那么就得将SquarePeg适配成RoundPeg。接口A:RoundHole::fits。数据A:RoundPeg。

2024-03-23 21:23:16 664

原创 对原型模式的理解

如User的ak字段。

2024-03-23 19:29:57 633

原创 如何高效测试Mybatis?(xxxMapper)

【代码】如何高效测试Mybatis?

2024-03-17 22:50:28 1077

原创 Java访问数据库(重点:SpringBoot整合Mybatis)

为啥需要这两个?通过mybatis官方文档就知道了,需要一个配置文件和一堆映射文件。为啥key是mybatis.config-location和mybatis.mapper-locations?

2024-03-17 19:57:20 1124

原创 对建造者模式的理解

山地车使用的是Aluminum Frame(铝制车架)和 Knobby Tires(可抓地轮胎),公路车使用的是 Carbon Frame (碳车架)和 Slim Tries。小明家新开了一家自行车工厂,用于使用自行车配件(车架 frame 和车轮 tires )进行组装定制不同的自行车,包括山地车和公路车。现在它收到了一笔订单,要求定制一批自行车,请你使用【建造者模式】告诉小明这笔订单需要使用那些自行车配置吧。接下来的 N 行,每行输入一个字符串,字符串表示客户的自行车需求。

2024-03-15 22:35:47 693

原创 对抽象工厂模式的理解

小明家新开了两个工厂用来生产家具,一个生产现代风格的沙发和椅子,一个生产古典风格的沙发和椅子,现在工厂收到了一笔订单,请你帮他设计一个系统,描述订单需要生产家具的信息。接下来的 N 行,每行输入一个字符串,字符串表示家具的类型。家具类型分为 “modern” 和 “classical” 两种。对于应用层,需要操作按钮和复选框,前提是获取对应的对象。而不同操作系统,返回的对象应该不同。输入的第一行是一个整数 N(1 ≤ N ≤ 100),表示订单的数量。对于每笔订单,输出字符串表示该订单需要生产家具的信息。

2024-03-03 19:10:12 891

原创 对简单工厂模式、工厂方法模式的思考

接下来的 N 行,每行输入一个字符串和一个整数,字符串表示积木的类型。积木类型分为 “Circle” 和 “Square” 两种。整数表示该积木生产的数量。小明家有两个工厂,一个用于生产圆形积木,一个用于生产方形积木,请你帮他设计一个积木工厂系统,记录积木生产的信息。输入的第一行是一个整数 N(1 ≤ N ≤ 100),表示生产的次数。对于每个积木,输出一行字符串表示该积木的信息。多线程场景下,不能用HashMap。

2024-03-03 14:32:12 797

原创 对单例模式的饿汉式、懒汉式的思考

单例模式是指一个类在JVM中只有一个实例。在类加载的时候就创建好了实例。创建实例延迟到使用该实例前。

2024-03-02 22:39:15 676

原创 认识并使用HttpLoggingInterceptor

从调试和监控HTTP调用的角度,我会选日志级别BODY。这其实对应的就是请求/响应的三部分。

2024-02-17 22:06:59 1671

原创 解决IDEA的Project无法正常显示的问题

IDEA提示“The imported module settings are stored in the internal storage due to the new fast Maven import.You can change that behavior in Maven Import Settings.”,这表示“,旨在提高项目导入和同步的速度。这通过减少不必要的重新计算和资源消耗来实现,特别是对于大型项目而言,这一改进可以显著提高效率。这种变化可能影响到项目设置的共享和版本控制。

2024-02-17 16:34:07 1508

原创 基于cpolar实现微信公众号访问本地服务

免费套餐,随机公网地址,24小时内会随机变化,不利于长期远程访问。我replay没效果…而且,我还是习惯在apifox发起请求。咱先跟着cpolar官方教程学一下怎么使用cpolar。点击“提交”后,本地服务就能收到请求了!前提:已经安装Homebrew。更正:“China Top”改为“因此,必须先启动本地服务!

2024-02-04 23:10:46 754

原创 macOS的设置与常用软件(含IntelliJ IDEA 2023.3.2 Ultimate安装,SIP的关闭与开启)

开箱新mbp~,装好“IntelliJ IDEA 2023.3.2 Ultimate”后,就不再更新了。

2024-02-03 18:54:14 1499

原创 认识并使用OkHttp3

实际开发中,难免有“发送Http请求并处理响应”的技术诉求。那么,在Java的世界中,如何发送Http请求并处理响应呢?// HTTP client单例.Builder().build();OkHttp的拦截器也要学习下~

2024-01-28 21:56:40 1219

原创 如何在云服务上通过docker部署服务?

Docker引入了一个名为buildx的实验性功能,它支持跨平台构建,这意味着可以在一个平台(例如macOS)上为另一个平台(例如linux/x86_64)构建Docker镜像。(2)注意:由于Namespace为forrest0721,因此,docker build时,也要写成forrest0721/chatgpt-api。买云服务器的时候,咱选择过OS,但咱还是通过命令行的方式再查看下。(3)构建适用于linux/x86_64平台的Docker镜像。(1)创建一个新的构建器实例。

2024-01-25 23:32:46 1632

原创 解决docker desktop 登录不上账号的问题

比较蛋疼的是,Proxifier是一个收费软件,试用31天后,就要收费了…之后还得想别的办法,但思路都是类似的,要依赖魔法。

2024-01-23 23:48:56 5171 2

原创 如何购买并使用阿里云的云服务器?

> 阿里云ECS11月销量王 99元/年 😃。

2024-01-22 23:36:32 390

原创 使用Dockerfile来构建服务的镜像,并部署在容器中

3)当运行 Docker 容器时,可以通过 -e 参数来覆盖这个环境变量的值,例如:docker run -e PARAMS=“arg1 arg2 arg3” your-image-name。2)ln 是 Linux 系统中用于创建符号链接(symbolic link)的命令,-s 表示创建软链接,-n 表示如果目标文件已存在,直接覆盖,-f 表示强制执行。“-c”:这是传递给 sh 的一个选项,表示后面的字符串是一个需要被 sh 执行的命令。很显然,这不是中国时区,因此,为了保险起见,

2024-01-21 20:42:28 968

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除