自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【智能家居】苹果Siri控制米家设备,在Linux上安装HomeAssistant桥接HomeKit与Xiaomi Miot Auto

记录米家接入HomeKit的过程与过程中遇到的问题。

2023-12-25 09:39:36 1810 2

原创 【Java】深入理解i++、++i

Java虚拟机的栈帧(局部变量表、操作数栈、动态链接、方法返回地址)Java虚拟机字节码指令,iconst_、istore_、iload_、iinc ,

2023-12-20 11:38:49 788

原创 【Spring】SpringAop给所有Service增加日志

SpringAop给所有Service增加日志。

2023-12-15 14:21:47 446

原创 【数据库】@Transactional用法详解

总结 1、确保注解生效 2、代码异常被生效的注解抓到时,才会回滚 3、回滚时,会回滚注解下面的所有内容

2023-12-13 16:35:32 500

原创 【问题记录】Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found

Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class java.io.ByteArrayInputStream and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS

2023-10-09 11:32:46 690

原创 【问题记录】org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

今天一个同事问我一个问题,记录一下。研究了老半天,后来才发现,如图。从文件夹里看,就明白了。

2023-08-17 11:15:48 62

原创 【OpenAI】当人工智能遇到道德困境问题(铁轨选择问题),它会怎么回复?

一条铁轨上,五个小孩在玩耍,而一辆火车即将撞上他们,这时你就在铁轨转轴拉杆的旁边,你可以选择拉下拉杆,让火车开向另一条铁轨,但是,另一条铁轨上,有一个铁轨工人正在休息。你会怎么选?

2023-08-11 17:00:59 669

原创 【OpenAI】AI写代码,idea插件、vscode插件

试了下AI自动写代码,在idea和vscode的插件市场能搜到五花八门的AI插件,感觉还可以的两个。aiXcoder和Tabnine。

2023-08-04 13:37:38 903

原创 【线程】wait()+notifyAll()实现多个线程交替遍历,输出ABCABC

实际会有这样的场景吗?下面举几个例子1、假设在一个食堂,有很多人在排队打饭,每个人需要完成以下步骤:先拿餐具,然后拿菜,再拿饭,最后付钱。2、多线程下载器。当我们下载一个大文件时,可以使用多个线程同时从不同的服务器上下载文件的不同部分,然后将这些部分合并成一个完整的文件。通过多个线程交替遍历不同的服务器,可以提高下载速度,加快文件的下载过程。3、医院的门诊、机场的登机口、超市的收银台等等。

2023-08-03 16:06:43 1333

原创 【网络|TCP】三次握手、四次握手

TCP是一种面向连接的可靠的传输协议,建立和断开TCP连接时需要进行握手的过程。其中,TCP的连接建立需要进行三次握手,而连接断开则需要进行四次握手。

2023-08-03 11:04:34 715

原创 【Java】HashMap线程安全问题与解决方式

假设有一个大仓库,里面存放着很多商品。如果只有一个锁来保护整个仓库,那么每次只能有一个工人进入仓库,其他工人需要等待。为了提高效率,将大仓库分成多个小仓库(锁分段技术中的Segment),每个小仓库都有自己的锁。每个工人只需要获取自己所在的小仓库的锁,就可以独立地进入小仓库取出商品进行处理。这样,多个工人可以同时进入不同的小仓库,互不干扰,提高了并发度和效率。HashMap是非线程安全的,可以使用SynchronizedMap、ConcurrentHashMap。

2023-08-02 10:09:49 913

原创 【数据结构|二叉树遍历】递归与非递归实现前序遍历、中序遍历、后序遍历

前序遍历(Preorder Traversal): 前序遍历的顺序是先访问根节点,然后按照先左后右的顺序访问子节点。对于上面的二叉树,前序遍历的结果是:4 -> 2 -> 1 -> 3 -> 6 -> 5 -> 7。中序遍历(Inorder Traversal): 中序遍历的顺序是按照先左后根再右的顺序访问子节点。对于上面的二叉树,中序遍历的结果是:1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7。

2023-08-02 09:34:43 676

原创 【数据结构】二叉树、二叉搜索树、平衡二叉树、红黑树、B树、B+树

二叉树(Binary Tree):每个节点最多有两个子节点(左子节点和右子节点),没有限制节点的顺序。特点是简单直观,易于实现,但查找效率较低。二叉搜索树(Binary Search Tree,BST):在二叉树的基础上,左子节点的值小于等于父节点的值,右子节点的值大于等于父节点的值。特点是插入、删除和查找的平均时间复杂度为O(log n),但如果树不平衡,可能会退化为链表,时间复杂度为O(n)。

2023-08-01 10:10:01 656

原创 【Java】String类为什么是final的

面试时被问到,String为什么是final的?至于String为什么是final的,如下。面试官:回家等通知!

2023-07-31 15:25:09 90

原创 【数据库】事务四个特性、脏读、不可重复度、幻读、事务隔离级别

需要注意的是,随着隔离级别的提高,事务的并发性能可能会下降,因为更严格的隔离级别需要更多的锁和资源管理。因此,在选择事务隔离级别时,需要权衡一致性和性能之间的关系,并根据实际业务需求和安全性要求进行选择。

2023-07-31 13:36:54 243

原创 【Java】详解volatile和synchronized关键字

都是Java中用于控制并发的关键字,但是它们的使用场景和原理是不同的。操作不是原子性的,所以最后输出的结果可能小于2000。操作的原子性,所以最后输出的结果为2000。方法并不是线程安全的,因为。在上述示例中,尽管使用了。方法是线程安全的,因为。在上述示例中,使用了。

2023-07-31 10:47:18 597

原创 【设计模式|行为型】访问者模式(Visitor Pattern)

具体的实现中,抽象访问者接口可以定义访问文件夹和文件的方法,具体访问者类可以实现这些方法来完成不同的操作。抽象元素接口可以定义接受访问者的方法,具体元素类可以实现这个方法并把访问者传递给具体元素的子元素,以便它们也能接受访问者的访问。在软件开发中,有时需要对一个复杂的对象结构中的各个元素进行不同的操作,例如,计算对象结构中元素的总和、对每个元素进行特定的处理等。访问者模式通过将操作封装在一个访问者类中,使得可以在不改变对象结构的情况下,对对象结构中的每个元素应用不同的操作。然后,实现具体的访问者类。

2023-07-27 08:16:07 64

原创 【设计模式|行为型】职责链模式(Chain of Responsibility Pattern)

职责链模式是一种行为型设计模式,它允许多个对象在处理请求时,每个对象都有机会处理请求,从而避免了请求发送者和接收者之间的直接耦合。通过将处理请求的对象按照其处理能力的顺序连接成一条链,请求将沿着链传递,直到有一个对象能够处理它。在职责链模式中,通常使用一个抽象处理者(Handler)来定义处理请求的方法。每个具体的处理者类都实现了这个抽象处理者,并包含一个指向下一个处理者的引用。当请求到达一个处理者时,它可以选择处理请求或将它传递给下一个处理者。这样,请求将依次通过每个处理者,直到有一个处理者能够处理它。

2023-07-27 08:15:54 158

原创 【设计模式|行为型】中介者模式(Mediator Pattern)

中介者模式(Mediator Pattern)是一种行为型设计模式,它通过封装一系列对象之间的交互方式,使这些对象能够互相通信而不需要直接相互引用。中介者模式通过集中控制对象的交互,使得对象之间的耦合度降低,同时也提高了系统的可维护性和可扩展性。

2023-07-26 16:45:15 361

原创 【设计模式|行为型】状态模式(State Pattern)

假设要做个电梯控制系统。电梯可以处于不同的状态:已开门:只能关门操作已关门:可以开门,可以上升,可以下降开门中:不可做任何操作关门中:不可做任何操作上升中:不可做任何操作下降中:不可做任何操作这时可以使用状态模式。

2023-07-26 16:35:54 759

原创 【设计模式|行为型】备忘录模式(Memento Pattern)

备忘录模式是一种行为型设计模式,通过捕获一个对象的内部状态,并在该对象之外保存这个状态,以便在需要时恢复对象到原先的状态。和。备忘录模式的核心思想是将对象的状态保存在一个独立的对象中,以便以后恢复。通过使用备忘录模式,我们可以轻松地实现对象状态的保存和恢复,同时也提高了系统的可维护性和扩展性。

2023-07-26 16:32:27 296

原创 【设计模式|行为型】命令模式(Command Pattern)

命令模式(Command Pattern)是一种行为设计模式,它将请求封装为一个对象,以便在不同的请求者和接收者之间进行解耦、参数化和操作的队列化。命令模式允许你将具体的请求封装为对象,这些对象之间彼此独立,并且可以用不同的请求对客户端进行参数化。

2023-07-26 16:20:58 629

原创 【设计模式|结构型】享元模式(Flyweight Pattern)

假设我们有一个围棋游戏,棋盘上有很多棋子,每个棋子都有自己的位置和颜色。如果每个棋子都创建一个对象,那么内存占用会很大。而使用享元模式,我们可以共享相同颜色的棋子对象,只需记录它们的位置,从而减少内存占用。

2023-07-26 16:14:04 140

原创 【设计模式|结构型】代理模式(Proxy Pattern)

假设你家里有一个保姆,你不想让保姆直接接触你的贵重物品,但是你需要让保姆帮你照顾这些物品。这时,你可以使用一个代理来解决这个问题。

2023-07-26 15:17:21 412

原创 【Java】详解Jdk8 Optional

Java 8 引入了 Optional 类,它是一个容器对象,可以包含一个非空对象或者为空。Optional 类的目的是为了解决空指针异常的问题,使代码更加健壮和优雅。

2023-07-26 14:23:17 55

原创 【设计模式|行为型】解释器模式(Interpreter Pattern)

解释器模式是一种行为型设计模式,它定义了一种语言文法,并解释执行该语言中的句子。该模式通过将语法解析过程分离为解释器类的层次结构来实现。

2023-07-26 10:00:46 101

原创 【设计模式|结构型】外观模式(Facade Pattern)

外观模式就像是一家快餐店的服务员。当你去快餐店点餐时,服务员会告诉你今天的特色菜、套餐、饮料等等,然后你只需要告诉服务员你想要什么,服务员就会帮你把所有食物和饮料都准备好,最后一起送到你的桌子上。在这个例子中,服务员就是外观模式,他隐藏了所有的复杂操作和细节,只提供了一个简单的接口,让顾客可以轻松地点餐。同样地,外观模式也隐藏了系统的复杂性,提供了一个简单的接口,让客户端可以方便地使用系统中的功能。

2023-07-26 09:00:59 219

原创 【设计模式|结构型】组合模式(Composite Pattern)

假设我们要设计一个餐厅菜单系统,菜单可以包含单个菜品和菜单套餐。每个菜品有自己的名称、价格和描述,而菜单套餐可以包含多个菜品和其他菜单套餐。这时可以使用组合模式来设计这个餐厅菜单系统。

2023-07-26 08:56:29 422

原创 【Java】详解JDK静态代理、动态代理

JDK静态代理和动态代理都是代理模式的实现方式,它们都可以在不改变目标对象的情况下,对目标对象进行扩展或增强。

2023-07-24 17:04:49 130

原创 【设计模式|结构型】桥接模式(Bridge Pattern)

假设我们有一个汽车制造公司,该公司可以生产多种型号的汽车,例如轿车、SUV和卡车。同时,公司也提供了多种颜色的汽车,例如红色、蓝色和黑色。后续还会可能会增加车型或者增加颜色。这时,可以使用桥接模式。

2023-07-24 16:27:24 172

原创 【设计模式|行为型】迭代器模式(Iterator Pattern)

迭代器模式是一种行为型设计模式,它允许客户端通过一个逐个访问集合元素的接口来访问一个聚合对象中的每个元素,而不需要直接暴露该对象的内部表示方式。迭代器模式将遍历逻辑与聚合对象分离,使得这两部分可以独立地变化,从而使设计更加灵活。迭代器模式包含两个核心角色:迭代器和聚合对象。迭代器是一个对象,它实现了访问聚合对象中元素的接口。迭代器具有两个基本的操作:访问下一个元素和判断是否还有下一个元素。聚合对象是若干个元素的集合,它通常提供一个工厂方法,用于返回它的迭代器。

2023-07-24 14:40:59 92

原创 【设计模式|行为型】模板方法模式(Template Method Pattern)

详细介绍模板方法模式(Template Method Pattern),并说明优缺点与使用场景模板方法模式是一种行为设计模式,它定义了一个算法的骨架,将一些步骤的实现延迟到子类中。在模板方法模式中,一个抽象类公开定义了执行它的方法的方式/顺序,并将一些步骤的具体实现委托给子类。模板方法模式是一种典型的通过继承来实现代码复用的设计模式,它遵循了开闭原则,即抽象类定义了算法的骨架,而具体步骤的实现可以在子类中灵活变化。

2023-07-24 14:22:37 183

原创 【设计模式|行为型】策略模式(Strategy Pattern)

策略模式(Strategy Pattern)是一种行为型设计模式,它定义了算法族(一组算法),分别封装起来,使它们之间可以互相替换,而且算法的变化可以独立于使用它的客户端。DiscountStrategy 是策略接口,PercentageDiscountStrategy 和 FixedAmountDiscountStrategy 是具体的策略实现类,Client 是客户端代码,用来指定折扣策略。2、举例实际应用中的场景实例: 一个常见的场景就是商场打折活动,不同的活动有不同的折扣策略。

2023-07-24 11:25:00 176

原创 【设计模式|行为型】观察者模式(Observer Pattern)

详细介绍观察者模式(Observer Pattern),并说明优缺点与使用场景: 观察者模式是一种行为型设计模式,它定义了对象之间的一种一对多的依赖关系,使得当一个对象的状态发生变化时,所有依赖它的对象都会自动收到通知并更新。该模式包含两个核心角色:被观察者(Subject)和观察者(Observer)。被观察者维护了一个观察者列表,提供了订阅、取消订阅、通知等方法。当被观察者的状态变化时,会遍历观察者列表,并逐个调用观察者的更新方法。

2023-07-24 11:16:37 240

原创 【后端工具】往表里合并数据工具方法,通过BatchSql实现MergeData

A系统的数据往B系统同步,订单主表、订单子表,一对多的关系。当订单发生修改,在同步子表数据的时候,如果子表数据多了或者少了的情况,逻辑是 1、表里多的数据,删掉(本文示例做的是物理删除,可根据需求进行修改) 2、表里少的数据,插入 3、相同的数据,更新为了方便使用,写了个共通的方法,需要的供参考

2023-07-21 10:59:17 113 1

原创 【设计模式|结构型】装饰器模式(Decorator Pattern)

假设你有一个咖啡店,你的基本咖啡是黑咖啡。然而,你希望能够为客户提供添加额外配料(如牛奶、糖、巧克力等)的选项,而不需要为每种配料创建一个新的咖啡类。这时,你可以使用装饰器模式来实现。

2023-07-20 16:58:36 45

原创 【设计模式|结构型】适配器模式(Adapter Pattern)

假设你有一个美国制造的电子设备,它的插头是美国标准的两脚插头(Type A插头),而你想在中国使用它,但中国的电源插座是中国标准的三脚插座(Type I插座)。这两种插头标准是不兼容的,无法直接连接。这时,你需要一个适配器来解决这个问题。

2023-07-20 15:16:03 59

原创 【设计模式|创建型】原型模式(Prototype Pattern)

假设我们有一个游戏中的敌人类 Enemy,每个敌人都有一个独特的外观和属性。在游戏中,敌人的数量可能非常多,而且每个敌人的创建过程可能比较复杂。这时,我们可以使用原型模式来创建敌人对象。

2023-07-20 13:19:25 50

原创 【设计模式|创建型】建造者模式(Builder Pattern)

假设我们要建造一座房子,这个房子有很多不同的部分,比如墙壁、地板、屋顶等等。我们可以使用建造者模式来创建这座房子。首先,我们定义一个房子类 House,它有一些属性,比如墙壁、地板和屋顶。然后,我们创建一个建造者类 HouseBuilder,它有一些方法用于构建房子的不同部分。最后,我们创建一个指挥者类 HouseDirector,它负责指导建造者如何构建房子。

2023-07-20 13:14:32 43

原创 【设计模式|创建型】抽象工厂模式(Abstract Factory Pattern)

假设我们正在开发一个游戏,游戏中有不同种类的武器,包括剑、魔杖和弓箭。每种武器都有不同的攻击方法和特殊效果。我们可以使用抽象工厂模式来创建不同类型的武器。

2023-07-20 09:23:18 49

空空如也

空空如也

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

TA关注的人

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