java面试篇 4.9
目录
mybatis:
1、mybatis的执行流程
2、mybatis是否支持延迟加载?
当我们需要去开启全局的懒加载时:
3、mybatis的一级和二级缓存
微服务
1、springcloud五大组件有哪些
2、服务注册和发现是什么意思?springcloud如何实现服务注册发现的?
3、负载均衡时如何实现的?
ribbon的负载均衡策略有哪些?
编辑
4、什么是服务雪崩,怎么解决这个问题?
5、你们的微服务是怎么监控的?
6、微服务限流
7、分布式系统理论
8、分布式事务的解决方案
线程安全
1、synchronized关键字的底层原理
2、synchronized底层原理进阶
3、你谈谈JMM(java的内存模型)
4、CAS你知道吗
线程池
1、线程池的核心参数和执行原理?编辑编辑
2、线程池中有哪些常见的阻塞队列?
3、如何确定核心线程数?
4、线程池的种类有哪些?(executors不建议用)
5、为什么不建议使用executors创建线程池?
6、线程池的使用场景?
1、countDownLatch
编辑
2、数据汇总
3、异步调用
7、如何控制某个方法允许并发访问线程的数量?
一些其他问题:
1.Springboot如何解决跨域问题?
方法一:使用@CrossOrigin注解
1. 作用于方法
2. 作用于类
方法二:配置WebMvcConfigurer实现跨域
说明
方法三:使用CorsFilter实现跨域
示例代码
方法四:使用CorsConfigurationSource实现跨域
示例代码
方法选择建议
2、mybatis的二级缓存的Serializable接口怎么实现?
实体类实现 Serializable 接口
3、线程的原子性指的是什么
原子性的关键点
常见的原子操作
如何保证原子性
原子性的重要性
总结
mybatis:
1、mybatis的执行流程
1、读取mybatis-config.xml文件确定连接的是什么数据库,扫描的是哪些Mapper文件。
2、创建一个sqlsessionFactory会话工厂,它可以创建多个sqlsession会话,包含了执行SQL语句的方法
3、执行器是真正操作数据库接口的,并且维护一些缓存
4、MapperedStatement对象会封装某些信息,比如Mapper映射文件的名称、映射文件的哪个方法、执行的SQL语句、数据库返回的结果
5、将java传来的参数类型转化为数据库支持的数据类型。执行完后要转为java类型。
2、mybatis是否支持延迟加载?
立即查询:
延迟加载:
当我们不需要获取订单信息,系统不会执行查询订单信息的SQL语句。
当我们需要去开启全局的懒加载时:
<setting name="lazyLoadingEnabled" value ="true"/>
原理:创建一个代理对象
3、mybatis的一级和二级缓存
作用于同一个session的意思就是,通过同一个session执行的方法。
添加<cache/>标签。
两个查询语句只会执行一个SQL语句(同一个Mapper文件的方法):
3的意思是第一个sqlsession结束才能将一级缓存转移到二级缓存。
微服务
1、springcloud五大组件有哪些
配置中心写在springcloud.config文件中。
zuul被淘汰了。
2、服务注册和发现是什么意思?springcloud如何实现服务注册发现的?
ap是高可用模式,cp是强一致模式。
3、负载均衡时如何实现的?
ribbon的负载均衡策略有哪些?
4、什么是服务雪崩,怎么解决这个问题?
一个服务的所有连接数是确定的,当服务A向服务D发送请求失败时,连接并不会被释放,A持续向D发送请求会占满A的最大连接数,故而A无法再提供服务,A发生了宕机,而这是一个链式的崩溃过程。
解决方法:
服务降级
服务熔断
服务降级是针对接口,当服务的某个方法不可用时,我们对该接口的方法进行降级,它会直接返回错误而不占用连接,而仅仅是部分方法不可用不需要关闭整个服务,当请求失败率达到50%以上则触发熔断,整个服务会被关闭,进入熔断机制。熔断针对的是整个服务不可用。
5、你们的微服务是怎么监控的?
解决如下四个问题。
6、微服务限流
漏桶算法指的就是以固定速率漏出请求,超出桶容限的请求等待或抛弃。漏桶的请求数量更加平滑。
漏桶它的请求数是可以波动的,因为令牌数量可以累计,如果某一时间请求数很大会拿走大量的令牌。默认使用Redis存储令牌桶,所以需要在网关的配置文件中配置Redis连接。
7、分布式系统理论
要么是cp要么是ap
8、分布式事务的解决方案
线程安全
1、synchronized关键字的底层原理
汇编执行流程:
2、synchronized底层原理进阶
对象的对象头中存有Markword,Markword会存有monitor的地址,从而关联对象锁和monitor。
重量级锁:
轻量级锁的执行流程:
1、创建一个线程以后,线程里面会生成一个lock Record,里面的Object reference会指向对象锁,lock recode地址00存储锁地址然后与对象锁的marokword进行内容交换,那么对象锁的markword就会从无锁的状态转为轻量级锁(如果多个线程竞争一个对象锁,会升级为重量级锁),而tread-0中就会存储对象锁的原本内容,比如hashcode这些。
2、如果线程1执行中调用了线程2,则称之为锁重录,锁重录不是两个线程竞争对象锁,它仍然是一个线程,所以用轻量级锁即可。
3、发生锁重录后,线程Thread-0会再创建一个lock record,里面的lockrecord地址00会再与对象锁发生CAS连接,但是不发生交换,里面的内容为Null。
4、当线程逐渐执行完时,为lock record地址00为null的先执行完并被删除,CAS不会发生交换。而最后不为null的Lock Record会先与对象锁发生CAS交换,Markword部分再次变为无锁状态。然后LockRecord被删除,线程执行完。
偏向锁:
3、你谈谈JMM(java的内存模型)
4、CAS你知道吗
自旋的意思就是重新拉一份旧数据进行执行,保证线程的原子性。
线程池
1、线程池的核心参数和执行原理?

具体实现:
2、线程池中有哪些常见的阻塞队列?
3、如何确定核心线程数?
开发时一般都是io密集型任务。
4、线程池的种类有哪些?(executors不建议用)
具体实现:会提供一个延迟执行的效果。
5、为什么不建议使用executors创建线程池?
6、线程池的使用场景?
1、countDownLatch
具体实现:
真实案例:
1、设置好countDownLatch(总页数),每一个线程完成一个页面数据的导入,只有循环执行完总页数大小的线程数量才能导入完所有的数据。
2、每一页数据导入到es的任务是提交给线程池执行。
2、数据汇总
具体实现:
串行执行:
并行执行:
3、异步调用
搜索记录的保存。
@ASync注解
7、如何控制某个方法允许并发访问线程的数量?
控制一个方法内最多使用的线程数量。
一些其他问题:
1.Springboot如何解决跨域问题?
方法一:使用@CrossOrigin
注解
@CrossOrigin
注解是Spring框架提供的一个非常便捷的方式来解决跨域问题,它可以直接作用于Controller类或方法上。
1. 作用于方法
在具体的Controller方法上添加@CrossOrigin
注解,仅对该方法生效。
@RestController
@RequestMapping("/api")
public class MyController {@GetMapping("/test")@CrossOriginpublic String test() {return "Hello, CrossOrigin!";}
}
这样,只有/api/test
接口允许跨域请求。
2. 作用于类
将@CrossOrigin
注解添加到Controller类上,该类中的所有方法都将允许跨域。
@RestController
@RequestMapping("/api")
@CrossOrigin
public class MyController {@GetMapping("/test1")public String test1() {return "Hello, CrossOrigin!";}@GetMapping("/test2")public String test2() {return "Hello, CrossOrigin!";}
}
这种方式适合整个Controller类中的所有接口都需要跨域的情况。
方法二:配置WebMvcConfigurer
实现跨域
通过实现WebMvcConfigurer
接口并重写addCorsMappings
方法,可以全局配置跨域规则。
@Configuration
public class GlobalCorsConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {// 配置跨域规则registry.addMapping("/**") // 允许跨域的路径.allowedOrigins("*") // 允许跨域的来源,*表示所有.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 允许的请求方法.allowedHeaders("*") // 允许的请求头.allowCredentials(true) // 是否允许发送Cookie.maxAge(3600); // 预检请求的有效期}
}
说明
-
allowedOrigins
:允许哪些来源进行跨域请求,*
表示允许所有来源。 -
allowedMethods
:允许哪些HTTP方法进行跨域请求,如GET
、POST
等。 -
allowedHeaders
:允许哪些请求头。 -
allowCredentials
:是否允许发送Cookie和HTTP认证信息。如果设置为true
,则allowedOrigins
不能为*
,必须指定具体来源。 -
maxAge
:预检请求的有效期,单位为秒。
方法三:使用CorsFilter
实现跨域
通过自定义CorsFilter
来实现跨域,这种方式更加灵活,可以对请求进行更细粒度的控制。
示例代码
@Component
public class MyCorsFilter implements Filter {@Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {HttpServletResponse response = (HttpServletResponse) res;HttpServletRequest request = (HttpServletRequest) req;// 设置允许的来源response.setHeader("Access-Control-Allow-Origin", "*");// 设置允许的请求头response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me");// 设置允许的请求方法response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");// 设置是否允许发送Cookieresponse.setHeader("Access-Control-Allow-Credentials", "true");// 设置预检请求的有效期response.setHeader("Access-Control-Max-Age", "3600");// 如果是OPTIONS请求,直接返回if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {response.setStatus(HttpServletResponse.SC_OK);} else {chain.doFilter(req, res);}}@Overridepublic void init(FilterConfig filterConfig) {}@Overridepublic void destroy() {}
}
方法四:使用CorsConfigurationSource
实现跨域
通过实现CorsConfigurationSource
接口,可以动态地为不同的请求路径配置不同的跨域规则。
示例代码
@Configuration
public class CorsConfig {@Beanpublic CorsConfigurationSource corsConfigurationSource() {CorsConfiguration configuration = new CorsConfiguration();configuration.setAllowedOrigins(Arrays.asList("*")); // 允许的来源configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE", "OPTIONS")); // 允许的请求方法configuration.setAllowedHeaders(Arrays.asList("*")); // 允许的请求头configuration.setAllowCredentials(true); // 是否允许发送Cookieconfiguration.setMaxAge(3600L); // 预检请求的有效期UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();source.registerCorsConfiguration("/**", configuration); // 配置路径return source;}
}
方法选择建议
-
如果只需要为个别接口或Controller类解决跨域问题,可以使用
@CrossOrigin
注解。 -
如果需要全局配置跨域规则,推荐使用
WebMvcConfigurer
或CorsConfigurationSource
。 -
如果需要更细粒度的控制,例如动态调整跨域规则,可以使用
CorsFilter
或CorsConfigurationSource
。
根据实际需求选择合适的方法即可。
2、mybatis的二级缓存的Serializable接口怎么实现?
实体类实现 Serializable
接口
首先,定义一个实体类并实现 Serializable
接口。例如,定义一个 User
类:
import java.io.Serializable;public class User implements Serializable {private static final long serialVersionUID = 1L;//看来最主要的就是这句话private Long id;private String name;private String email;// Getters and Setterspublic Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", email='" + email + '\'' +'}';}
}
二级缓存配置参数说明
eviction:指定缓存回收策略,可选值有:
FIFO(先进先出)
LRU(最近最少使用)
SOFT(软引用)
WEAK(弱引用)
flushInterval:缓存刷新间隔时间(毫秒),默认不刷新。
size:缓存的最大对象数。
readOnly:是否只读。如果设置为 true,则缓存的对象是只读的,不能被修改;如果设置为 false,则缓存的对象可以被修改。
3、线程的原子性指的是什么
线程的原子性(Atomicity)是指在多线程环境中,一个操作或一系列操作要么全部完成,要么全部不完成,不会出现部分完成的情况。换句话说,原子操作在执行过程中不会被其他线程中断。
原子性的关键点
-
不可分割性:
-
原子操作是不可分割的,不会在操作的中间被其他线程打断。
-
例如,一个线程正在执行某个原子操作时,其他线程无法插入执行,必须等待该操作完成。
-
-
线程安全性:
-
原子操作通常用于解决多线程环境下的线程安全问题。
-
如果多个线程同时访问和修改共享资源,原子操作可以确保操作的完整性,避免数据不一致。
-
常见的原子操作
-
单个变量的读写操作:
-
对于基本数据类型(如
int
、long
、double
等),单个变量的读写操作通常是原子的。 -
例如,
x = 10
是一个原子操作。
-
-
复合操作:
-
一些复合操作(如
x++
、x += 10
)在多线程环境下可能不是原子的。 -
例如,
x++
实际上包括三个步骤:读取x
的值、加 1、写回x
的值。如果多个线程同时执行x++
,可能会导致数据竞争(Race Condition)。
-
如何保证原子性
-
使用同步机制:
-
javasynchronized
关键字:在 Java 中,synchronized
可以确保多个线程不会同时进入同步代码块。复制
public class Counter {private int count = 0;public synchronized void increment() {count++;}public synchronized int getCount() {return count;} }
-
javaReentrantLock
:ReentrantLock
提供了比synchronized
更灵活的锁机制。复制
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;public class Counter {private final Lock lock = new ReentrantLock();private int count = 0;public void increment() {lock.lock();try {count++;} finally {lock.unlock();}}public int getCount() {lock.lock();try {return count;} finally {lock.unlock();}} }
-
-
使用原子类:
-
Java 提供了
javajava.util.concurrent.atomic
包,其中包含一系列原子类(如AtomicInteger
、AtomicLong
、AtomicReference
等)。复制
import java.util.concurrent.atomic.AtomicInteger;public class Counter {private final AtomicInteger count = new AtomicInteger(0);public void increment() {count.incrementAndGet();}public int getCount() {return count.get();} }
-
-
使用
volatile
关键字:-
volatile
修饰的变量可以保证可见性,但不能保证复合操作的原子性。 -
例如,
javavolatile
可以确保多个线程看到变量的最新值,但x++
仍然不是原子操作。复制
public class Counter {private volatile int count = 0;public void increment() {count++; // 不是原子操作}public int getCount() {return count;} }
-
原子性的重要性
-
避免数据竞争:在多线程环境下,原子性可以避免多个线程同时修改共享资源导致的数据不一致问题。
-
保证线程安全:通过原子操作,可以确保程序的正确性和稳定性。
总结
原子性是多线程编程中的一个重要概念,它确保操作的不可分割性和完整性。通过使用同步机制(如 synchronized
、ReentrantLock
)、原子类(如 AtomicInteger
)或 volatile
关键字,可以实现原子操作,从而保证线程安全。
相关文章:
java面试篇 4.9
目录 mybatis: 1、mybatis的执行流程 2、mybatis是否支持延迟加载? 当我们需要去开启全局的懒加载时: 3、mybatis的一级和二级缓存 微服务 1、springcloud五大组件有哪些 2、服务注册和发现是什么意思?springcloud如何实现…...
子函数嵌套的意义——以“颜色排序”为例(Python)
多一层缩进精减参数传递,参数少平铺书代码写更佳。 笔记模板由python脚本于2025-04-16 11:52:53创建,本篇笔记适合喜欢子函数嵌套结构代码形式的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值:在于输出思考与经验,而不仅…...
Python深度学习实现验证码识别全攻略
放在前面 Python深度学习实现验证码识别全攻略 Python深度学习实现验证码识别全攻略 在网络安全领域,验证码作为人机区分的关键防线,广泛应用于登录、注册等场景。随着技术演进,验证码样式愈发复杂,传统识别手段力不从心&#…...
【Linux】su、su-、sudo、sudo -i、sudo su - 命令有什么区别?分别适用什么场景?
目录 su su- sudo sudo -i sudo su - /etc/sudoers su 该命令将启动非登录shell,即虽然以该用户身份启动shell,但使用的是原始用户的环境设置。普通用户账户运行 su 命令切换到另一用户账户,需提供要切换的账户的密码。root用户&…...
算法-同余原理
在计算n个数相加或者相乘再取余时,中间结果可能会溢出导致结果错误,这时可以使用同余原理 一、同余原理 ①加法同余 (a[1] a[2] ... a[n])% m > (a[1] % m a[2] % m ... a[n] % m) % m ② 乘法同余 (…...
深入理解卷积神经网络(CNN):从原理到实践
引言 卷积神经网络(Convolutional Neural Networks, CNN)是深度学习领域最具影响力的架构之一,尤其在计算机视觉任务中表现出色。自2012年AlexNet在ImageNet竞赛中一战成名以来,CNN不断演进,推动着图像识别、医疗影像分析、自动驾驶等领域的快…...
深度学习常见模块实现001
文章目录 1.学习目的2.常见模块使用与实现2.1 ResNet18实现2.2 SeNet模块2.3 CBAM模块 1.学习目的 深度学习在图像处理这块,很多模块已经成型,并没有很多新的东西,更多的是不同的模块堆叠,所以需要我们不断总结,动手实…...
Python实现贪吃蛇三
上篇文章Python实现贪吃蛇一,实现了一个贪吃蛇的基础版本。后面第二篇文章Python实现贪吃蛇二修改了一些不足,但最近发现还有两点需要优化: 1、生成食物的时候有概率和记分牌重合 2、游戏缺少暂停功能 先看生成食物的时候有概率和记分牌重合的…...
windows server C# IIS部署
1、添加IIS功能 windows server 2012、windows server 2016、windows server 2019 说明:自带的是.net 4.5 不需要安装.net 3.5 尽量使用 windows server 2019、2016高版本,低版本会出现需要打补丁的问题 2、打开IIS 3、打开iis应用池 .net 4.5 4、添…...
LLM小白自学笔记:1.两种指令微调
一、LoRA 简单来说,LoRA不直接调整个大模型的全部参数(那样太费资源),而是在模型的某些层(通常是注意力层)加个“旁路”——两个小的矩阵(低秩矩阵)。训练时只更新这俩小矩阵&#x…...
杰弗里·辛顿:深度学习教父
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 杰弗里辛顿:当坚持遇见突破,AI迎来新纪元 一、人物简介 杰弗…...
RHCE 第一次作业
一.定义延迟任务 1.安装邮件服务 [roothaiou ~]# yum install s-nail -y 2.配置邮件服务 [roothaiou ~]# vim /etc/mail.rc 3.测试邮件服务 [roothaiou ~]# echo 88888888 | mail -v -s Passion 13571532874163.com 4.设置定时任务 [roothaiou ~]# crontab -e 二.时间同步…...
库洛游戏一面+二面
目录 一面 1. ArrayList和LinkedList的区别,就是我在插入和删除的时候他们在时间复杂度上有什么区别 2. hashmap在java的底层是怎么实现的 3. 红黑树的实现原理 4. 红黑树的特点 5. 为什么红黑树比链表查询速度快 6. 在java中字符串的操作方式有几种 7. Stri…...
基于多模态深度学习的亚急性脊髓联合变性全流程预测与个性化管理技术方案
目录 技术方案文档1. 数据收集与预处理模块2. 多模态预测模型构建3. 术前风险评估系统4. 术中实时监测系统5. 术后并发症预测与护理6. 统计分析与验证模块7. 健康教育系统技术实现说明技术方案文档 1. 数据收集与预处理模块 功能:构建数据管道,清洗并整合多源数据 伪代码示…...
蓝桥杯日期的题型
做题思路 一般分为3个步骤,首先要定义一个结构体来存储月份的天数,第一循环日期,第二判断日期是否为闰年,第三就是题目求什么 结构体 static int[] ds{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 判断是否闰年的函数 public static void f(int m,int d){//被4整…...
【树形dp题解】dfs的巧妙应用
【树形dp题解】dfs的巧妙应用 [P2986 USACO10MAR] Great Cow Gathering G - 洛谷 题目大意: Bessie 正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会。当然,她会选择最方便的地点来举办这次集会。 每个奶牛居住在 N N …...
《AI大模型应知应会100篇》第20篇:大模型伦理准则与监管趋势
第20篇:大模型伦理准则与监管趋势 摘要 随着人工智能(AI)技术的飞速发展,尤其是大模型(如GPT、PaLM等)在自然语言处理、图像生成等领域的广泛应用,AI伦理问题和监管挑战日益凸显。本文将梳理当…...
线上教学平台(vue+springboot+ssm+mysql)含文档+PPT
线上教学平台(vuespringbootssmmysql)含文档PPT 该系统是一个在线教学平台,主要分为管理员和学员两个角色;管理员界面包含首页、交流中心、学员管理、资料类型管理、学习资料管理、交流论坛、我的收藏管理、留言板管理、考试管理…...
Being-0:具有视觉-语言模型和模块化技能的人形机器人智体
25年3月来自北大、北京智源和 BeingBeyond 的论文“Being-0: A Humanoid Robotic Agent with Vision-Language Models and Modular Skills”。 构建能够在现实世界具身任务中达到人类水平表现的自主机器人智体,是人形机器人研究的终极目标。近期,基于基…...
Fiddler 进行断点测试:调试网络请求
目录 一、什么是断点测试? 二、Fiddler 的断点功能 三、如何在 Fiddler 中设置断点? 步骤 1:启动 Fiddler 步骤 2:启用断点 步骤 3:捕获请求 步骤 4:修改请求或响应 四、案例:模拟登录失…...
决策树:ID3,C4.5,CART树总结
树模型总结 决策树部分重点关注分叉的指标,多叉还是单叉,处理离散还是连续值,剪枝方法,以及回归还是分类 一、决策树 ID3(Iterative Dichotomiser 3) 、C4.5、CART决策树 ID3:确定分类规则判别指标、寻找能够最快速降低信息熵的方…...
DDS信号发生器设计
一、基本概述 1.1 DDS简介 DDS信号发生器即直接数字频率合成(Direct Digital Frequency Synthesis,简称DDS)是一种利用数字技术生成信号的方法。它通过数字信号处理技术,将数字信号转换为模拟信号,从而生成高质量的正…...
23黑马产品经理Day01
今天过了一遍23黑马产品经理的基础视频 问题思考维度 抓住核心用户 为什么需要抓住核心用户? 主要原因:用户越来越细分,保持市场竞争力,产品开发推广更聚焦 做产品为什么要了解用户:了解用户的付费点,…...
18-21源码剖析——Mybatis整体架构设计、核心组件调用关系、源码环境搭建
学习视频资料来源:https://www.bilibili.com/video/BV1R14y1W7yS 文章目录 1. 架构设计2. 核心组件及调用关系3. 源码环境搭建3.1 测试类3.2 实体类3.3 核心配置文件3.4 映射配置文件3.5 遇到的问题 1. 架构设计 Mybatis整体架构分为4层: 接口层&#…...
东方潮流亮相广州益民艺术馆|朋克编码“艺术家潮玩”系列开幕引爆热潮
4月15日,由我的宇宙旗下公司朋克编码携“艺术家潮玩”系列亮相广州白云益民艺术馆,标志着其全国文化推广计划正式启航。本次展览围绕“潮玩艺术东方文化”展开,融合传统文化与当代潮流,以年轻化方式赋能中国文化出海。 展览现场潮…...
充电宝项目:规则引擎Drools学习
文章目录 规则引擎 Drools1 问题2 规则引擎概述2.1 规则引擎2.2 使用规则引擎的优势2.3 规则引擎应用场景2.4 Drools介绍 3 Drools入门案例3.1 创建springboot项目 引入依赖3.2 添加Drools配置类3.4 创建实体类Order3.5 orderScore.drl3.6 编写测试类 4 Drools基础语法4.1 规则…...
C++零基础实践教程 文件输入输出
模块八:文件输入输出 (数据持久化) 在之前的模块中,我们学习了如何使用程序处理数据。然而,当程序结束运行时,这些数据通常会丢失。数据持久化 (Data Persistence) 指的是将程序中的数据存储到非易失性存储介质(如硬盘…...
SpringAI+DeepSeek大模型应用开发——1 AI概述
AI领域常用词汇 LLM(LargeLanguage Model,大语言模型) 能理解和生成自然语言的巨型AI模型,通过海量文本训练。例子:GPT-4、Claude、DeepSeek、文心一言、通义干问。 G(Generative)生成式: 根据上…...
数据中台进化史:从概念萌芽到价值变现的蜕变之路
在数字化转型的浪潮中,数据中台已成为企业驾驭数据、驱动业务创新的关键力量。回顾数据中台的发展历程,犹如一场从混沌到有序、从萌芽到成熟的精彩蜕变,它由湖仓一体、数据治理平台、数据服务平台三大核心要素逐步构建而成,每一个…...
【Java学习笔记】运算符
运算符 运算符的类型 算数运算符 赋值运算符 关系运算符(比较哦啊运算符) 逻辑运算符 三元运算符 位运算符(需要二进制基础) 一、算数运算符 运算符计算范例结果正号77-负号b11; -b-11加法9918-减法10-82*乘法7*856/除法9…...
【python】OpenCV—Tracking(10.6)—People Counting
文章目录 1、功能描述2、代码实现3、效果展示4、完整代码5、涉及到的库函数6、参考来自 更多有趣的代码示例,可参考【Programming】 1、功能描述 借助 opencv-python,用 SSD 人形检测模型和质心跟踪方法实现对人群的计数 基于质心的跟踪可以参考 【pyt…...
JavaSE学习(前端初体验)
文章目录 前言一、准备环境二、创建站点(创建一个文件夹)三、将站点部署到编写器中四、VScode实用小设置五、案例展示 前言 首先了解前端三件套:HTML、CSS、JS HTML:超文本标记语言、框架层、描述数据的; CSS…...
智慧城市像一张无形大网,如何紧密连接你我他?
智慧城市作为复杂巨系统,其核心在于通过技术创新构建无缝连接的网络,使物理空间与数字空间深度融合。这张"无形大网"由物联网感知层、城市数据中台、人工智能中枢、数字服务入口和安全信任机制五大支柱编织而成,正在重塑城市运行规…...
Linux常用命令
一、history 用于显示历史命令。 history 10显示最近10条历史命令。!200使用第200行的指令。history -c清空历史记录。 二、pwd 用于显示当前绝对路径。 pwd显示当前绝对路径。 三、ls 用于以行的形式显示当前文件夹下所有内容。 ls -a显示所有内容,包括隐藏文…...
【AI】SpringAI 第二弹:接入 DeepSeek 官方服务
一、接入 DeepSeek 官方服务 通过一个简单的案例演示接入 DeepSeek 实现简单的问答功能 1.添加依赖 <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-openai</artifactId> </dependency> 2…...
QT的信号槽的直接触发,队列触发,自动触发
在Qt中,信号槽机制是一个非常强大的特性,它用于实现对象之间的通信。除了默认的直接触发方式之外,Qt还提供了队列触发等不同的触发方式。 1. 直接触发(Direct Connection) 直接触发是最常见的连接方式,信…...
typescript html input无法输入解决办法
input里加上这个: onkeydown:(e: KeyboardEvent) > {e.stopPropagation();...
工厂能耗系统智能化解决方案 —— 安科瑞企业能源管控平台
安科瑞顾强 政策背景与“双碳”战略驱动 2025年《政府工作报告》明确提出“单位国内生产总值能耗降低3%左右”的目标,要求通过产业结构升级(如高耗能行业技术革新或转型)、能源结构优化(提高非化石能源占比)及数字化…...
栅格数据处理
一、栅格数据的引入与基本操作 (一)加载栅格数据 在 ArcPy 中,栅格数据可以通过 arcpy.Raster 类来加载。例如,如果你有一个存储在本地路径下的栅格数据文件(如 GeoTIFF 格式),可以这样加载&a…...
C语言文件操作
本文重点: 什么是文件 文件名 文件类型 文件缓冲区 文件指针 文件的打开和关闭 文件的顺序读写 文件的随机读写 文件结束的判定 什么是文件 磁盘上的文件是文件。 但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件 程序文件 包括源程序文…...
毛笔书体检测-hog+svm python opencv源码
链接:https://pan.baidu.com/s/1l-bw8zR9psv1HycmMqQBqQ?pwd2ibp 提取码:2ibp --来自百度网盘超级会员V2的分享 1、毛笔字检测运行流程 如果解压文件发现乱码,可以下载Bandizip 解压文件 数据集在百度网盘里面 将文件名字改成images c…...
基于YOLOV11的道路坑洼分析系统
基于YOLOV11的道路坑洼分析系统 【包含内容】 【一】项目提供完整源代码及详细注释 【二】系统设计思路与实现说明 【三】图形化界面与实时检测统计可视化功能 【技术栈】 ①:系统环境:Windows/MacOS/Linux多平台支持,推荐NVIDIA GPU加速 ②…...
【系统搭建】DPDK安装配置与helloworld运行
一,安装相关依赖 1. 安装依赖 sudo apt update && sudo apt install -y \build-essential libnuma-dev meson ninja-build pciutils#安装Python3与PIP3 sudo apt install python3-pip2. 升级 pip 和 setuptools sudo apt install python3-pip python3-de…...
Distortion, Animation Raymarching
这节课的主要目的是对uv进行操作,实现一些动画的效果,实际就是采样的动画 struct texDistort {float2 texScale(float2 uv, float2 scale){float2 texScale (uv - 0.5) * scale 0.5;return texScale;}float2 texRotate(float2 uv, float angle){float…...
架构风格(高软59)
系列文章目录 架构风格 文章目录 系列文章目录前言一、架构风格定义?二、架构风格分类总结 前言 本节讲明架构风格知识点。 一、架构风格定义? 二、架构风格分类 总结 就是高软笔记,大佬请略过!...
免费使用RooCode + Boomerang AI + Gemini 2.5 Pro开发套件
若您正在寻找利用免费AI工具简化应用开发的方法,这份指南将为您揭开惊喜。 我们将详解如何免费整合RooCode、Boomerang AI智能代理与Google Gemini 2.5 Pro API,在Visual Studio Code中实现自动化编程加速。 这套方案能让您在几分钟内从创意跃迁至可运行原型。 套件构成与…...
《MAmmoTH2: Scaling Instructions from the Web》全文翻译
《MAmmoTH2: Scaling Instructions from the Web》 MAmmoTH2:从网络规模化采集指令数据 摘要 指令调优提升了大语言模型(LLM)的推理能力,其中数据质量和规模化是关键因素。大多数指令调优数据来源于人工众包或GPT-4蒸馏。我们提…...
解决Ubuntu终端命令不能补全的问题
使用命令: sudo vi /etc/bash.bashr 把框出的部分取消注释,取消后截图如下,保存退出: 使用命令env -i bash --noprofile --norc, 进行测试,查看tab自动补全是否可以使用。 tab键可正常使用, env -i bash …...
知识图谱与其它知识库的关系
知识图谱与其它知识库的关系 知识图谱与传统知识库:解构数据连接的哲学知识图谱的商业价值:连接带来的革命选择知识图谱还是传统数据库?一个实用指南 知识图谱的出现,正在改变了我们组织和理解信息的方式。 这种技术不仅仅是一种数…...
STM32基础教程——DMA+ADC多通道
目录 前言 编辑 技术实现 连线图 代码实现 技术要点 实验结果 问题记录 前言 DMA(Direct Memory Access)直接存储器存取,用来提供在外设和存储器 之间或者存储器和存储器之间的高速数据传输。无需CPU干预,数据可以通过DMA快速地移动࿰…...