- 博客(626)
- 资源 (11)
- 收藏
- 关注

原创 springai系列(二)从0开始搭建和接入azure-openai实现智能问答
之前使用openai的官网的api需要科学上网,但是我们可以使用其他的代理间接实现使用chatgpt的相关模型,解决这个问题。比如:本文使用azure openai来实现这个功能。开发框架是java的springai。这篇文章介绍了如何使用Azure OpenAI API在Java Spring Boot项目中实现ChatGPT功能。项目搭建。
2025-02-27 13:22:02
1185

原创 深入理解:设计模式中的七大设计原则
文章目录深入理解:设计模式中的七大原则一、单一原则二、开闭原则(目标)三、里氏代换原则(基础)四、依赖倒转原则(手段)五、接口隔离原则六、合成复用原则七、迪米特法则深入理解:设计模式中的七大原则一、单一原则概念理解: 1个类只负责一个功能领域中的相应职责。二、开闭原则(目标)概念理解: 抽象是开闭原则的关键。怎么做: 面向接口、抽象类机制编程三、里氏代换原则(基础)概念理解: 开闭原则的最重要实现方式之一;所有引用基类的地方必须能透明的使用其子类的对象).怎么做:1.设计时: 将父
2020-06-07 19:33:11
428
1

原创 springboot原理实战(1)--注解方式装配bean
文章目录1.Configurable2.@Beana.@bean注入b.通过工厂方式注入①官方提供,实现FactoryBean方式②自定义工厂方式3.初始化bean前后做一些事情:1)方式1:实现InitializingBean(初始化后触发), DisposableBean(销毁的时候触发)2)方式2:根据@Bean注解属性配置:3)方式3:@PostContruct4.组件注入方式①普通组件@...
2020-03-09 14:59:44
809

原创 数据结构-(1) -- 关于数据组织
文章目录官方定义--没有如何在书架上摆放书操作1:新书怎么插入操作2: 怎么找到某本指定的书官方定义–没有如何在书架上摆放书图书的摆放要使得2个相关操作方便实现:操作1:新书怎么插入操作2: 怎么找到某本指定的书...
2020-02-07 15:06:50
253

转载 java并发原理实战(16) --jdk8新增读写锁的升级—StampedLock
文章目录StampedLock有三种读/写模式:写、读、乐观读。写。独占锁读。共享锁乐观读。方法tryOptimisticRead()转换转载:https://blog.csdn.net/panweiwei1994/article/details/78824505StampedLock是JDK1.8新增的一个锁,是对读写锁ReentrantReadWriteLock的改进。前面已经学习了Ree...
2020-02-05 14:36:45
300

转载 java并发原理实战(15)-- jdk8新增LongAdder原子性操作类原理
LongAdder原理介绍接下来进行LongAdder代码简单分析介绍LongAdder类是JDK1.8新增的一个原子性操作类。AtomicLong通过CAS算法提供了非阻塞的原子性操作,相比受用阻塞算法的同步器来说性能已经很好了,但是JDK开发组并不满足于此,因为非常搞并发的请求下AtomicLong的性能是不能让人接受的。如下AtomicLong 的incrementAndGet的代码,...
2020-02-05 11:57:39
319

原创 java并发原理实战(14)--自己实现简易web服务器
简易web服务器0.web服务器知识储备1.简易web服务器-版本12.简易web服务器版本2-多线程版3.简易web服务器版本3-访问图片资源3.简易web服务器版本3-访问外链地址测试简易web服务器-版本4-连接池版0.web服务器知识储备web服务器知识储备,了解网络编程,其实就是java的socket。如果实现网络请求,也就是服务端能够接收客户端的请求,然后服务端再对客户端进行响应。...
2020-02-04 21:17:22
387

转载 java并发原理实战(13)--线程池和Executors
线程池一. 线程池简介1. 线程池的概念:2. 线程池的工作机制3. 使用线程池的原因:二. 5种常见的线程池详解1. 线程池的返回值ExecutorService简介:2. 具体的5种常用的线程池实现如下:(返回值都是ExecutorService)①Executors.newCacheThreadPool():② Executors.newFixedThreadPool(int n):③Exe...
2020-02-04 20:09:42
294

转载 java并发原理实战(12)--同步并发容器
文章目录1.fork/join框架示例代码:2.同步容器和并发容器①同步容器:②并发容器ConcurrentHashMapCopyOnWriteArrayListCopyOnWriteArraySetBlockingQueueLinkedBlockingQueueArrayBlockingQueueDelayQueueLinkedTransferQueueSynchronousQueue1.fo...
2020-02-04 12:53:01
291

原创 java并发原理实战(11)--线程间通信
线程间通信1.线程间通信之wait notify2.通过生产者和消费者理解等待唤醒机制3. condition的使用4.简易连接池实现①wait notifyAll方式②lock condition方式5.线程之间的通信--join① 使用案例:②原理6.ThreadLocal原理和使用使用原理7.并发工具类:等待多线程完成的CountDownLatch案例: 对一个文本中的所有数字并行求和8.并...
2020-02-02 14:51:50
376

原创 java并发原理实战(10)--AQS 和公平锁分析
文章目录AQSAQS底层使用了模板方法模式ReentrantLock锁的实现分析公平锁和非公平锁公平锁FairSync非公平锁NonfairSyncReentrantLock等待队列中元素的唤醒线程安全性问题总结AQSAQS原理AQS:AbstractQuenedSynchronizer抽象的队列式同步器。是除了java自带的synchronized关键字之外的锁机制。AQS的全称为(Ab...
2020-01-29 13:12:29
537

原创 java并发原理实战(9)--手动实现一个可重入锁
文章目录自定义个锁测试:线程安全测试:是否可重入自定义个锁import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;public class MyLock implements Lock { pr...
2020-01-27 20:45:04
305

原创 java并发原理实战(8)-- lock接口使用和认识
文章目录lock接口lock的使用lock的本质ReentrantLock的调用过程锁实现(加锁)Sync.nonfairTryAcquireAbstractQueuedSynchronizer.addWaiterAbstractQueuedSynchronizer.acquireQueued解锁Lock VS Synchronizedlock接口lock的使用lock的方法:l...
2020-01-27 11:04:09
318

原创 java并发原理实战(7) -- 原子类使用和原理理解
原子类使用和原理理解使用原子类AtomicInteger原理使用原子更新基本类型原子更新数组原子更新抽象类型原子更新字段public class Sequence { private int value; public int getNext() { return value++; } public static void main...
2020-01-26 18:44:35
235

原创 java并发原理实战(6) -- volatile的原理理解
文章目录volatile原理理解引子volatile的原理:lock指令什么时候使用volatilevolatile原理理解引子看一段代码:public class Demo { private int a= 1; public int getA() { return a; } public void setA(int a) { ...
2020-01-26 14:30:57
335

原创 java并发原理实战(5)--线程安全性问题和synchronized原理理解
线程安全性问题一、活跃性问题死锁饥饿活锁转载地址: <https://my.oschina.net/HuoQibin/blog/1808106>1.死锁:经典例子:“哲学家进餐”问题。死锁的解决:可以看到在jconsole中,可以用这个工具检测死锁问题:2.饥饿:当线程无法访问它所需要的资源而不能继续执行时,就发生了饥饿现象。引发饥饿最常见的资源就是CPU时...
2020-01-23 16:38:34
385

原创 进阶设计模式(6) -- 抽象工厂模式
文章目录抽象工厂模式一、初识抽象工厂模式二、体会抽象工厂三、理解抽象工厂模式四、定义可扩展的工厂五、理解抽象工厂六、思考抽象工厂模式抽象工厂模式一、初识抽象工厂模式代码:https://github.com/hufanglei/daily-code/tree/abstract-factory-example1二、体会抽象工厂[外链图片转存失败,源站可能有防盗链机制,建议将图片保...
2020-01-18 22:08:58
208

原创 java并发原理实战(4) -- 线程的创建方式
文章目录创建线程1.继承thread2.实现runnable接口:3.匿名内部类的方式:①重写thead类+匿名内部类②实现runnable+匿名内部类③实现runnable+重写thead类+匿名内部类4.创建既有返回值和异常的线程5.定时器timer5.线程池6. spring的多线程方式7.使用lambd表达式创建线程1.继承thread执行流程:客户端调用start()方法--...
2020-01-18 11:43:11
318

原创 java并发原理实战(3) -- 线程的中断和初始化
线程的中断和初始化1.多线程中start和run方法的区别?2.Thread.currentThread()与this的区别3.后台进程setDaemon有啥用4.线程的中断①暴力停止stop(不建议使用)为啥不推荐:②通过中断标志中断(推荐)③中断线程推荐写法:使用三个反人类的方法+抛出异常方方式5.暂停线程(不推荐使用)①独占资源:②不同步6.线程初始化1.多线程中start和run方法的区...
2020-01-17 14:28:44
268

原创 java并发原理实战(2)--线程的状态和切换
文章目录高效并发1.join的理解2.sleep的理解3.wait的理解4.线程状态5.线程状态转换①、 新建--->可运行--->被终止② 新建--->可运行--->被阻塞--->可运行--->被终止③ 新建--->可运行--->等待--->可运行--->被终止1. Object.wait()2. java.util.concurren...
2020-01-15 22:05:28
467

原创 java并发原理实战(1) -- 聊聊并发
聊聊并发①并发学习的阶段:②为什么要学习并发编程③并发的缺点④线程安全性问题⑤多线程与并发之间的联系和区别⑤线程与进程的联系⑥多线程一定快吗?①并发学习的阶段:•熟练掌握API,能够完成并发编程•熟读API源码,掌握其原理•理解Java虚拟机的内存模型•操作系统对并发的支持②为什么要学习并发编程•1.发挥多处理的强大能力•2.建模的简单性•3.异步事件的简化处理•4.响应更加灵...
2020-01-15 15:26:49
320

原创 进阶设计模式(5) -- 工厂方法模式
文章目录工厂方法模式一、初识工厂方法模式二、体会工厂方法模式三、理解工厂方法模式工厂方法功能实现和参数化工厂模式与IOC、DI平行类的结构工厂方法模式的优缺点四、思考工厂方法模式的本质与简单工厂的关系何时使用工厂方法模式工厂方法模式一、初识工厂方法模式二、体会工厂方法模式三、理解工厂方法模式工厂方法功能实现和参数化工厂模式与IOC、DI平行类的结构工厂方法...
2020-01-13 21:25:25
440

原创 jvm(16) -- 虚拟机字节码执行引擎(运行时栈帧结构)
文章目录虚拟机字节码执行引擎一、运行时栈帧结构1.局部变量表①局部变量表必须赋初始值②如何存储和占用内存大小③slot可以复用2.操作数栈①定义和工作过程②操作数栈共享区域3.动态链接4.方法返回地址两种退出方式5.附加信息虚拟机字节码执行引擎一、运行时栈帧结构1.局部变量表①局部变量表必须赋初始值②如何存储和占用内存大小使用slot存储,根据数据类型有使用1个slot的类型,...
2020-01-13 13:44:39
280

原创 jvm(15) -- 类加载器
文章目录类加载器类加载器分类自定义类加载器双亲委派模型类加载器类加载器分类自定义类加载器步骤:自定义个类加载器代码:public class ClassLoaderDemo { public static void main(String[] args) throws Exception { ClassLoader myLoader = new ...
2020-01-12 22:56:20
145

原创 jvm(14) -- 类加载的过程
文章目录类加载的过程1. 类加载的过程①加载加载源:②验证③准备④解析⑤初始化类加载的过程1. 类加载的过程①加载加载源:②验证主要是语义验证。主要是执行流:顺序,选择,循环流③准备④解析⑤初始化public class DeamThread { static class Hello{ static...
2020-01-11 23:11:25
265

原创 进阶设计模式(4) -- 单例模式
1.初始单例模式2.体会单例模式## 3.理解单例模式4.思考单例模式以上内容都摘自《研磨设计模式》,代码可以翻阅这本书。完
2020-01-06 22:40:35
207

原创 jvm(13) -- 字节码指令
字节码指令字节码指令1.字节码指令简介2.字节码与数据类型3.加载和存储指令实操:4.运算指令实操:5.类型转换指令实例:6.对象创建与访问指令实操:7.操作数栈管理指令8.控制转移指令实操:9.方法调用指令和返回指令实操10.异常处理指令实操11.同步指令实操:字节码指令1.字节码指令简介2.字节码与数据类型 在Java虚拟机的指令集中,大多数的指令都包含了其操作所对应的...
2020-01-06 22:13:24
268

原创 jvm(12) -- class文件结构
class文件结构1.class文件结构概述无符号数**表**2.class文件设计理念以及意义3.魔数4.class文件的版本号**5.常量池**6.访问标志7.类索引8.字段表集合9.方法表集合10.属性表集合实操:参考博客: https://blog.csdn.net/wowwilliam0/article/details/813836761.class文件结构概述无符号数属于基本...
2020-01-06 22:11:46
211

原创 jvm(11) -- 虚拟机调试工具
文章目录虚拟机调试工具命令行工具1.jps①jps -q 只显示进程号②jps -m③ jps -l④jps -v2.Jstatjstat 用法示例一:-class示例二: -compiler示例三: -gc示例四: -gccapacity示例五:-gcmetacapacity示例六: -gcnew示例七: -gcnewcapacity示例八: -gcold示例九:-gcoldcapacity...
2020-01-02 14:47:52
943
1

原创 进阶设计模式(3) -- 适配器模式
文章目录适配器模式1.初识适配器模式2.体会适配器模式3.理解适配器模式4.思考适配器模式适配器模式1.初识适配器模式2.体会适配器模式3.理解适配器模式4.思考适配器模式参考《研磨设计模式》完...
2020-01-01 21:32:42
318

原创 jvm(10) -- 内存分配策略
四、内存分配策略0.概述1.内存分配优先进入eden区域-verbose:gc -XX:+PrintGCDetails -XX:+UseSerialGCjava -version多核,2个G以上的cpu都认为是server vm。操作1:操作2:说明大对象直接在老年代分配内存。操作3:设置vm参数:-verbose:gc-XX:+PrintGCDet...
2019-12-31 15:00:51
329

原创 jvm(9) -- cms收集器、G1收集器
文章目录3.Cms①、特点②、应用场景③、设置参数④、CMS收集器运作过程⑤、CMS收集器3个明显的缺点(A)对CPU资源非常敏感(B)无法处理浮动垃圾,可能出现"Concurrent Mode Failure"失败(C)产生大量内存碎片4.G1①、特点(A)、并行与并发(B)、分代收集,收集范围包括新生代和老年代(C)、结合多种垃圾收集算法,空间整合,不产生碎片(D)、可预测的停顿:低停顿的同时...
2019-12-31 10:18:51
368

原创 进阶设计模式(2) -- 外观模式
文章目录1.初识外观模式2.体会外观模式3.理解外观模式4.思考外观模式1.初识外观模式2.体会外观模式3.理解外观模式4.思考外观模式完
2019-12-30 23:15:12
248

原创 jvm(8) -- Serial收集器、ParNew收集器、Parallel Scavenge收集器
文章目录1.Serial收集器①特点②、应用场景③、设置参数④Stop TheWorld说明2.ParNew收集器①特点②应用场景③设置参数④为什么只有ParNew能与CMS收集器配合3.Parallel Scavenge收集器①特点②应用场景③设置参数④吞吐量与收集器关注点说明(A)、吞吐量(Throughput)(B)、垃圾收集器期望的目标(关注点)(1)、停顿时间(2)、吞吐量(3)、覆盖区...
2019-12-30 14:53:08
1205
1

原创 jvm(7) -- 如何回收垃圾对象、回收算法策略
文章目录标记-清除算法①、标记 -清除算法a.效率问题b.空间问题②.复制算法深入理解:堆内存使用的复制算法场景:新生代中③.标记-整理算法④分代收集算法标记-清除算法①、标记 -清除算法“标记-清除”(Mark-Sweep)算法,如它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。之所以说它是最基础的收集算法,是因为后续...
2019-12-30 11:41:45
362

原创 jvm(6) -- 如何判定对象为垃圾对象(是否存活)
文章目录1、引用计数算法(Reference Counting)2、可达性分析算法(GC Roots Analysis):3.finalize()方法最终判定对象是否存活1).第一次标记并进行一次筛选。2).第二次标记转载 https://blog.csdn.net/anyway8090/article/details/94297020堆中几乎存放着Java世界中所有的对象实例,垃圾收集器...
2019-12-30 10:46:32
215

转载 进阶设计模式(1) -- 简单工厂模式转载好文章
转载: https://www.cnblogs.com/kubixuesheng/p/10344427.html
2019-12-30 08:51:18
152

原创 jvm(5) -- 对象的访问定位
文章目录句柄访问直接指针对比文章来自:链接:https://www.jianshu.com/p/4ca9dae303c8建立对象是为了使用对象,我们的Java程序需要通过栈上的reference数据来操作堆上的具体对象。由于reference类型在Java虚拟机规范中只规定了一个指向对象的引用,并没有定义这个引用应该通过何种方式定位,访问堆中的对象的具体位置,所以对象访问方式也取决于虚拟机...
2019-12-29 23:25:56
234

原创 jvm(4) -- java对象的结构
文章目录Header(对象头)1、自身运行时的数据(Mark Word)2、类型指针(Class Metadata Address)二、InstanceData三、Padding为什么需要padding?来自:https://blog.csdn.net/itcats_cn/article/details/80949112java对象的结构是由Header对象头、InstanceData、Pa...
2019-12-29 22:58:50
347
springai系列(二)从0开始搭建和接入azure openai实现智能问答的demo
2025-02-27
展示了如何在Java项目中使用Spring AI框架调用DeepSeek API,包括项目配置、代码实现实例 https://editor.csdn.net/md/?articleId=1458943
2025-02-27
sentinel-dashboard-1.7.0.zip
2020-04-13
sonar的环境搭建.pdf
2019-08-04
tomcat9 tar.tz压缩包
2018-11-12
log4j-1.2.11
2014-10-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人