轻松掌握Langchain4j
一、快速入门普通maven项目1.创建maven工程2.引入依赖123456<!-- 这个依赖额外提供 OpenAI 模型调用能力 --><dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-open-ai</artifactId> <version>1.0.1</version></dependency>
3.构建聊天对象OpenAiChatModel因为Deepseek使用与OpenAi兼容的API格式,所以这里我创建了连接DeepSeek的模型
123456789101112131415public class App { public static void main(String[] args) { //1.构建openAiChatModel对象 OpenAiChatModel model = OpenAiChatMod ...
面经收集
杭州元启视界地址
27双非本 杭州某500人厂 一面(30min)_牛客网
1.什么是跨域问题?跨域问题就是指前端js请求后端接口时,浏览器会判断当前网页的url(这个是网页自身的url地址)和请求的服务器的url是否同源,如果协议、域名和端口有一个不同,那么浏览器就会判定为跨域请求并拦截。
2.如何解决跨域问题。我所知道的就两种方式,一种在后端解决,一种在前端解决。
1.配置CORS,也就是在服务器上设置相应的响应头。在java的spring中,可以通过创建WebMvcConfigurer对象,重写它的addCorsMappings方法,配置相应的请求域名、请求方式等内容,然后注册到spring容器中来解决。
2.前端的话可以通过反向代理的方式来解决,就是通过把请求转发给同源的代理服务器,然后由代理服务器代为转发给目标服务器,以绕过浏览器的同源策略检测。
正向代理(Forward Proxy)
反向代理(Reverse Proxy)
作用对象
代表 客户端 访问服务器
代表 服务器 接收客户端请求
客户端是否感知
客户端知道自己在用代理(如VPN)****
客户端不 ...
深入java集合
一、内容概览
二、算法复杂度要想深入学习集合的底层原理,就要先对复杂度的概念有个清晰的认知。
(1)时间复杂度时间复杂度表示了算法的执行时间与数据规模n之间的增长关系。
常见的时间复杂度:O(1)、O(n)、O(n^2)、O(logn)
速记口诀:常对幂指阶
(2)空间复杂度空间复杂度表示算法占用的额外存储空间和数据规模n之间的增长关系。
三、List1.ArrayList(1)数据结构ArrayList底层使用数组来存储数据的。数组是一种用连续的内存空间存储相同数据类型的线性数据结构。
(2)基础问题1.数组下标为什么从0开始这就涉及到了数组元素的内存地址的计算问题了。
寻址公式 :baseAddress + i * dataType,计算下标的内存地址速率高。
人话:基地址 + 索引下标 * 元素类型占用的空间大小
如果索引是从1开始,那么寻址公式就需要对(i-1),对于cpu来说,相当于多了一个减法指令。
2.查找的时间复杂度
随机(通过下标)查找的时间复杂度是O(1)
查找未知下标的元素的时间复杂度是O(n)
如果未知下标,但数组是排好序的,那么利用二分查找的时间复杂度是O( ...
开发常见问题汇总
一、项目环境搭建每次创建项目时,都要借鉴已有的项目依赖和配置文件进行创建,依赖用于什么功能的,以及配置文件作用于哪些依赖的,都云里雾里的。为此,写一个通用的环境搭建的博客就方便我创建新项目,需要引入什么常见依赖就看看这篇博客,顺便看看依赖之间的关系和配置文件的使用,(●’◡’●)。
1.1 SpringBoot依赖以maven创建的项目为例,仅需基础springboot父工程,然后引入启动器和测试依赖即可。
注意:springboot父工程定义了很多需要使用的依赖版本,故部分依赖版本号无需手动指定。
123456789101112131415161718<parent> <!--继承springboot父工程--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.0.5</version></par ...
面经记录
1.处女面-行觅科技初创型公司
时间:2025/6/12 20:00
(1)自我介绍
(2)个人学习项目选择的目的
(3)elasticsearch的搜索原理
(4)场景:订单如果要存储在elasticsearch中,那么订单状态字段适合用什么数据类型。——考察es的数据类型,但我忘了
(5)mysql的慢查询定位
(6)mysql中B+的实现和优缺点
(7)最左匹配原则
(8)mybatis的实现原理 ——学习过,但忘记了
(9)mybatis-plus和mybatis的区别,以及取舍,什么情况下适合用mp,什么情况不适合。
(10)linux中搜索日志的命令
(11)个人提问
总结:面试官很好,很热心为我解答不会的地方。但我回答的依托,说明了我的不足之处,需要举一反三,考虑技术的优缺点。挂了。
2.开斧市时间:2025/6/16 15:15
(1)vue熟悉吗 ——了解过
(2)讲讲阻塞队列
(3)讲讲CountDownLatch
(4)讲讲Spring的AOP,什么作用,底层实习(两种动态代理)
(5)Mysql中LEFT JOIN和RI ...
Java网络编程
Java网络编程一、基础知识IP:
用于标记计算机设备,是分配给上网设备的唯一标志。
有两种形式:IPv4和IPv6。
IPv4:
一共32位,分成四段表示。每段用十进制标志。
IPv6:
一共128位,分成八段表示,每段每四位编码成一个十六进制位表示,数之间用冒号分开。
示例:
12345678910//1.获取主机ipInetAddress localHost = InetAddress.getLocalHost();System.out.println(localHost.getHostName());System.out.println(localHost.getHostAddress());//2.获取域名ipInetAddress ip2 = InetAddress.getByName("www.zhihu.com");System.out.println(ip2.getHostName());System.out.println(ip2.getHostAddress());//ping www.zhihu.comSystem.out.print ...
Java深入学习
这篇文章用于记录Java基础知识相关的深入学习。包括了 动态代理、反射、JVM
一、动态代理篇首先先理清代理的概念,代理就是用来增强原对象功能的。通过代理,可以无侵入式的给对象增强其他功能。
代理长什么样?代理类里面就是对象要被代理的方法。
Java通过什么来保证代理的样子?通过接口保证的,被代理对象和代理都需要实现同一个接口,而这个接口里的方法就是要被代理的所有方法。
例子JDK动态代理被代理的原对象
123456789101112131415161718192021222324252627282930public class Star implements Star_Interface { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public Star() { & ...
项目面试准备
一、黑马点评1.项目介绍我做的这个项目主要就是模仿大众点评,是使用springboot开发的前后端分离的项目,实现了商户的搜索、点评,好友关注、动态推送以及优惠券秒杀等功能。其中使用了redis做数据缓存,提高数据的访问效率,以及利用redis实现分布式锁解决一人一单的问题。此外,还利用了RabbitMq异步的创建优惠券订单,提高抢票的相应速度。
2.项目中遇到的难点我认为项目中主要的难点在于优惠券秒杀这个功能的实现。首先这个需要考虑到库存超卖和一人一单问题,针对库存超卖问题,我使用的是乐观锁的思想,考虑到库存如果使用版本号来判断扣减库存是否成功的话,会出现库存充足的情况下依旧会抢券失败的情况。所以我最后没有使用版本号,而是在给扣减库存的sql语句加个where条件判断库存数量是否大于0。然后针对一人一单问题,因为数据库的一人一单判断和库存扣减操作是非原子性的,所以,我的解决方案是我一开始是给用户id放到常量池中,使用synchronized这个关键字获取到用户id的锁后进行相关的抢票校验代码。但后面考虑到在多个相同服务部署的情况下,锁无法跨服务感知,所以使用了redis来创建分布式锁 ...
黑马头条项目
有意义的亮点摘要后面总结
1.垂直分表
2.ElasticSearch
3.xxl-job 分布式任务调度框架
后端知识点总结
随心记
这篇用于随时记各类八股文,后面会详细拆分各个模块
一、Spring相关1.Spring框架中的单例bean是线程安全的吗?答:不是。首先,Spring中的单例bean是全局共享的。一般情况下,spring的bean中注入的都是无状态的对象(无状态指的是不会存储数据,即没有定义可修改的成员变量),所以不会有线程安全问题。但如果假设这个bean定义了可修改的成员变量,多个线程如果同时访问并修改这个成员变量时,可能会造成数据的不一致,这种情况可用使用多例或者加锁来解决。
知识点:无状态Bean(即没有可修改的成员变量)、有状态Bean
2.什么是AOP答:AOP的话,指的就是面向切面编程,简单说就是把一些业务逻辑中相同的代码抽取到一个独立模块中,通过动态代理的方式增强原方法,让业务逻辑更加简洁。
知识点:
JDK动态代理,被代理的对象必须实现一个接口
CGLIB动态代理,适用于被代理的对象没有实现接口的场景。
Spring AOP 默认使用JDK动态代理,但如果目标类没有实现接口,则会自动切换到CGLIB动态代理。
AOP的具体应用
事务处理
统一异常处理
日志记录
权限控制
资源 ...