SpringBoot常用注解
SpringBoot常用注解
SpringBoot框架提供了丰富的注解,极大地简化了应用开发。本文将SpringBoot常用注解按功能分组,并提供详细说明和使用示例。
一、核心注解
1. @SpringBootApplication
这是SpringBoot应用的核心注解,标记在主类上,表明这是一个SpringBoot应用的入口。它是一个组合注解,相当于同时使用了以下三个注解:
@Configuration
:允许在Spring上下文中注册额外的bean或导入其他配置类@EnableAutoConfiguration
:启用SpringBoot的自动配置机制@ComponentScan
:扫描被@Component
及其派生注解(如@Service
、@Controller
等)标记的bean
处理类: SpringBootApplicationAnnotationBeanPostProcessor
类处理
示例代码:
@SpringBootApplicationpublic class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}}
二、Spring Bean相关注解
1. @Component
通用的注解,标识一个类为Spring组件。如果一个Bean不知道属于哪个层,可以使用@Component
注解标注。
处理类: ComponentScanAnnotationParser
类处理
示例代码:
@Componentpublic class MyComponent {// ...}
2. @Repository
对应持久层即Dao层,主要用于数据库相关操作。
处理类: RepositoryComponentProvider
类处理
示例代码:
@Repositorypublic class UserRepository {// 数据库操作方法public User findById(Long id) {// ...}}
3. @Service
对应服务层,主要涉及一些复杂的业务逻辑,需要用到Dao层。
处理类: ServiceAnnotationBeanPostProcessor
类处理
示例代码:
@Servicepublic class UserService {@Autowiredprivate UserRepository userRepository;public User getUserById(Long id) {return userRepository.findById(id);}}
4. @Controller
对应Spring MVC控制层,主要用于接收用户请求并调用Service层返回数据给前端页面。
处理类: RequestMappingHandlerMapping
类处理
示例代码:
@Controller@RequestMapping("/users")public class UserController {@Autowiredprivate UserService userService;@GetMapping("/{id}")public String getUser(@PathVariable Long id, Model model) {model.addAttribute("user", userService.getUserById(id));return "userDetail";}}
5. @RestController
@RestController
注解是@Controller
和@ResponseBody
的组合,表示这是个控制器bean,并且将函数的返回值直接填入HTTP响应体中,是REST风格的控制器。
处理类: RequestMappingHandlerMapping
类处理
示例代码:
@RestController@RequestMapping("/api/users")public class UserApiController {@Autowiredprivate UserService userService;@GetMapping("/{id}")public User getUser(@PathVariable Long id) {return userService.getUserById(id);}}
6. @Autowired
自动导入对象到类中,被注入进的类同样要被Spring容器管理。
处理类: AutowiredAnnotationBeanPostProcessor
类处理
示例代码:
@Servicepublic class UserService {@Autowiredprivate UserRepository userRepository;// 使用构造函数注入(推荐方式)private final RoleService roleService;@Autowiredpublic UserService(RoleService roleService) {this.roleService = roleService;}}
7. @Scope
声明Spring Bean的作用域。
处理类: ScopeMetadataResolver
类处理
示例代码:
@Component@Scope("prototype")public class PrototypeBean {// 每次请求都会创建一个新的bean实例}@Component@Scope("singleton")public class SingletonBean {// 默认作用域,整个应用中只创建一个bean实例}
常见的作用域:
- singleton:默认作用域,单例模式,整个应用中只创建一个bean实例
- prototype:每次请求都会创建一个新的bean实例
- request:每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效
- session:每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP session内有效
8. @Configuration
标识一个类为配置类,可以使用@Bean
注解来定义bean。
处理类: ConfigurationClassPostProcessor
类处理
示例代码:
@Configurationpublic class AppConfig {@Beanpublic TransferService transferService() {return new TransferServiceImpl();}}
9. 条件注解
@Conditional
基础条件注解,根据满足某一特定条件创建一个特定的Bean。
处理类: ConditionEvaluator
类处理
示例代码:
@Configurationpublic class AppConfig {@Bean@Conditional(WindowsCondition.class)public WindowsService windowsService() {return new WindowsServiceImpl();}}public class WindowsCondition implements Condition {@Overridepublic boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {Environment env = context.getEnvironment();return env.getProperty("os.name").toLowerCase().contains("windows");}}
@ConditionalOnBean
仅当指定的Bean存在于BeanFactory中时,才会创建这个Bean。
处理类: OnBeanCondition
类处理
示例代码:
@Configurationpublic class AppConfig {@Bean@ConditionalOnBean(DataSource.class)public JdbcTemplate jdbcTemplate(DataSource dataSource) {return new JdbcTemplate(dataSource);}}
@ConditionalOnMissingBean
仅当指定的Bean不存在于BeanFactory中时,才会创建这个Bean。
处理类: OnBeanCondition
类处理
示例代码:
@Configurationpublic class AppConfig {@Bean@ConditionalOnMissingBeanpublic DataSource defaultDataSource() {// 只有在没有其他DataSource Bean时才创建默认数据源return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).build();}}
@ConditionalOnClass
仅当指定的类存在于类路径上时,才会创建这个Bean。
处理类: OnClassCondition
类处理
示例代码:
@Configurationpublic class AppConfig {@Bean@ConditionalOnClass(name = "org.springframework.data.redis.core.RedisTemplate")public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {// 只有当Redis相关类在类路径上时才创建RedisTemplateRedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(connectionFactory);return template;}}
@ConditionalOnMissingClass
仅当指定的类不存在于类路径上时,才会创建这个Bean。
处理类: OnClassCondition
类处理
示例代码:
@Configurationpublic class AppConfig {@Bean@ConditionalOnMissingClass("com.mysql.jdbc.Driver")public DataSource h2DataSource() {// 只有当MySQL驱动不在类路径上时才创建H2数据源return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).build();}}
@ConditionalOnProperty
仅当指定的属性具有指定的值时,才会创建这个Bean。
处理类: OnPropertyCondition
类处理
示例代码:
@Configurationpublic class AppConfig {@Bean@ConditionalOnProperty(name = "app.cache.enabled", havingValue = "true")public CacheManager cacheManager() {// 只有当app.cache.enabled=true时才创建缓存管理器return new ConcurrentMapCacheManager();}}
@ConditionalOnWebApplication
仅当当前应用是Web应用时,才会创建这个Bean。
处理类: OnWebApplicationCondition
类处理
示例代码:
@Configurationpublic class WebConfig {@Bean@ConditionalOnWebApplicationpublic FilterRegistrationBean<CorsFilter> corsFilter() {// 只有在Web应用中才创建CORS过滤器FilterRegistrationBean<CorsFilter> bean = new FilterRegistrationBean<>();bean.setFilter(new CorsFilter());bean.setOrder(Ordered.HIGHEST_PRECEDENCE);return bean;}}
@ConditionalOnNotWebApplication
仅当当前应用不是Web应用时,才会创建这个Bean。
处理类: OnWebApplicationCondition
类处理
示例代码:
@Configurationpublic class BatchConfig {@Bean@ConditionalOnNotWebApplicationpublic JobLauncher batchJobLauncher() {// 只有在非Web应用中才创建批处理作业启动器SimpleJobLauncher jobLauncher = new SimpleJobLauncher();// 配置作业启动器return jobLauncher;}}
三、HTTP请求处理相关注解
1. @RequestMapping
用于映射Web请求,包括访问路径和参数。
处理类: RequestMappingHandlerMapping
类处理
示例代码:
@RestControllerpublic class UserController {@RequestMapping(value = "/users", method = RequestMethod.GET)public List<User> getAllUsers() {// 返回所有用户}}
2. HTTP方法特定注解
Spring提供了一系列针对HTTP方法的简化注解:
@GetMapping
等价于@RequestMapping(method = RequestMethod.GET)
处理类: RequestMappingHandlerMapping
类处理
示例代码:
@GetMapping("/users")public List<User> getAllUsers() {// 处理GET请求}
@PostMapping
等价于@RequestMapping(method = RequestMethod.POST)
处理类: RequestMappingHandlerMapping
类处理
示例代码:
@PostMapping("/users")public ResponseEntity<User> createUser(@RequestBody User user) {// 处理POST请求,创建用户}
@PutMapping
等价于@RequestMapping(method = RequestMethod.PUT)
处理类: RequestMappingHandlerMapping
类处理
示例代码:
@PutMapping("/users/{id}")public ResponseEntity<User> updateUser(@PathVariable Long id, @RequestBody User user) {// 处理PUT请求,更新用户}
@DeleteMapping
等价于@RequestMapping(method = RequestMethod.DELETE)
处理类: RequestMappingHandlerMapping
类处理
示例代码:
@DeleteMapping("/users/{id}")public ResponseEntity<Void> deleteUser(@PathVariable Long id) {// 处理DELETE请求,删除用户}
@PatchMapping
等价于@RequestMapping(method = RequestMethod.PATCH)
处理类: RequestMappingHandlerMapping
类处理
示例代码:
@PatchMapping("/users/{id}")public ResponseEntity<User> partialUpdateUser(@PathVariable Long id, @RequestBody Map<String, Object> updates) {// 处理PATCH请求,部分更新用户}
四、参数绑定注解
1. @PathVariable
用于获取URL路径中的参数。
处理类: PathVariableMethodArgumentResolver
类处理
示例代码:
@GetMapping("/users/{id}")public User getUser(@PathVariable("id") Long userId) {// 获取路径中的id参数}
2. @RequestParam
用于获取查询参数。
处理类: RequestParamMethodArgumentResolver
类处理
示例代码:
@GetMapping("/users")public List<User> getUsersByRole(@RequestParam(value = "role", required = false) String role) {// 获取查询参数role的值}
3. @RequestBody
用于读取请求体中的JSON数据并自动绑定到Java对象。
处理类: RequestResponseBodyMethodProcessor
类处理
示例代码:
@PostMapping("/users")public User createUser(@RequestBody User user) {// user对象会自动从请求体的JSON数据映射而来return userService.save(user);}
4. @RequestHeader
用于获取请求头信息。
处理类: RequestHeaderMethodArgumentResolver
类处理
示例代码:
@GetMapping("/greeting")public String greeting(@RequestHeader("User-Agent") String userAgent) {// 获取请求头中的User-Agent信息return "Your User-Agent is: " + userAgent;}
五、配置属性注解
1. @Value
用于获取配置文件中的属性值。
处理类: AutowiredAnnotationBeanPostProcessor
类处理
示例代码:
@Componentpublic class AppProperties {@Value("${app.name}")private String appName;@Value("${app.description}")private String appDescription;}
2. @ConfigurationProperties
用于将配置文件中的属性批量注入到Java对象中。
处理类: ConfigurationPropertiesBindingPostProcessor
类处理
示例代码:
@Component@ConfigurationProperties(prefix = "app")public class AppProperties {private String name;private String description;private List<String> servers;// getters and setters}
对应的配置文件:
app:name: MyAppdescription: My awesome applicationservers:- dev.example.com- prod.example.com
3. @PropertySource
用于指定加载特定的属性文件。
处理类: PropertySourcesPlaceholderConfigurer
类处理
示例代码:
@Component@PropertySource("classpath:custom.properties")public class CustomProperties {@Value("${custom.property}")private String customProperty;}
六、异常处理注解
1. @ControllerAdvice
全局异常处理和应用到所有@RequestMapping方法。
处理类: ControllerAdviceBean
类处理
示例代码:
@ControllerAdvicepublic class GlobalExceptionHandler {@ExceptionHandler(UserNotFoundException.class)public ResponseEntity<ErrorResponse> handleUserNotFoundException(UserNotFoundException ex) {ErrorResponse error = new ErrorResponse("USER_NOT_FOUND", ex.getMessage());return new ResponseEntity<>(error, HttpStatus.NOT_FOUND);}}
2. @ExceptionHandler
用于处理特定异常。
处理类: ExceptionHandlerExceptionResolver
类处理
示例代码:
@RestControllerpublic class UserController {@ExceptionHandler(UserNotFoundException.class)public ResponseEntity<ErrorResponse> handleUserNotFoundException(UserNotFoundException ex) {// 处理UserNotFoundException异常return new ResponseEntity<>(new ErrorResponse(ex.getMessage()), HttpStatus.NOT_FOUND);}}
七、事务注解
@Transactional
用于声明事务。
处理类: TransactionInterceptor
类处理
示例代码:
@Servicepublic class UserService {@Transactionalpublic void createUserWithRoles(User user, List<Role> roles) {userRepository.save(user);roleRepository.saveAll(roles);}@Transactional(rollbackFor = Exception.class)public void updateUser(User user) {// 发生任何异常都回滚事务}}
八、缓存注解
1. @Cacheable
标记方法的结果需要被缓存。
处理类: CacheInterceptor
类处理
示例代码:
@Servicepublic class UserService {@Cacheable(value = "users", key = "#id")public User getUserById(Long id) {// 如果缓存中有数据,则不会执行此方法return userRepository.findById(id).orElse(null);}}
2. @CacheEvict
标记要清除缓存的方法。
处理类: CacheInterceptor
类处理
示例代码:
@Servicepublic class UserService {@CacheEvict(value = "users", key = "#user.id")public void updateUser(User user) {userRepository.save(user);}@CacheEvict(value = "users", allEntries = true)public void clearAllUsersCache() {// 清除users缓存中的所有条目}}
3. @CachePut
更新缓存而不干扰方法执行。
处理类: CacheInterceptor
类处理
示例代码:
@Servicepublic class UserService {@CachePut(value = "users", key = "#user.id")public User updateUserDetails(User user) {// 方法始终会被执行,然后结果被放入缓存return userRepository.save(user);}}
九、测试相关注解
1. @SpringBootTest
用于SpringBoot集成测试。
处理类: SpringBootTestContextBootstrapper
类处理
示例代码:
@SpringBootTestpublic class UserServiceIntegrationTest {@Autowiredprivate UserService userService;@Testpublic void testGetUserById() {User user = userService.getUserById(1L);assertNotNull(user);assertEquals("admin", user.getUsername());}}
2. @MockBean
创建并注入一个Mockito mock。
处理类: MockitoPostProcessor
类处理
示例代码:
@SpringBootTestpublic class UserServiceTest {@MockBeanprivate UserRepository userRepository;@Autowiredprivate UserService userService;@Testpublic void testGetUserById() {User mockUser = new User(1L, "admin");when(userRepository.findById(1L)).thenReturn(Optional.of(mockUser));User user = userService.getUserById(1L);assertEquals("admin", user.getUsername());}}
十、安全相关注解
1. @EnableWebSecurity
启用Spring Security的Web安全支持。
处理类: WebSecurityConfiguration
类处理
示例代码:
@Configuration@EnableWebSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/public/**").permitAll().anyRequest().authenticated().and().formLogin();}}
2. @PreAuthorize
方法执行前进行权限检查。
处理类: AuthorizationAttributeSourceAdvisor
类处理
示例代码:
@Servicepublic class UserService {@PreAuthorize("hasRole('ADMIN')")public List<User> getAllUsers() {// 只有ADMIN角色的用户才能访问return userRepository.findAll();}}
十一、JPA相关注解
1. @Entity
标记类为JPA实体。
处理类: EntityManagerFactoryBuilderImpl
类处理
示例代码:
@Entitypublic class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String username;private String email;// getters and setters}
2. @Repository
标记接口为JPA Repository。
处理类: JpaRepositoriesRegistrar
类处理
示例代码:
@Repositorypublic interface UserRepository extends JpaRepository<User, Long> {List<User> findByUsername(String username);@Query("SELECT u FROM User u WHERE u.email LIKE %:domain%")List<User> findByEmailDomain(@Param("domain") String domain);}
十二、JSON处理注解
1. @JsonIgnore
在序列化过程中忽略某个属性。
处理类: JacksonAnnotationIntrospector
类处理
示例代码:
public class User {private Long id;private String username;@JsonIgnoreprivate String password; // 在JSON响应中不会包含此字段}
2. @JsonFormat
格式化日期或时间字段。
处理类: JacksonAnnotationIntrospector
类处理
示例代码:
public class User {private Long id;private String username;@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private LocalDateTime createdAt;}
十三、AOP相关注解
1. @Aspect
标记一个类为切面,包含通知(Advice)和切点(Pointcut)。
处理类: AnnotationAwareAspectJAutoProxyCreator
类处理
示例代码:
@Aspect@Componentpublic class LoggingAspect {// 切面实现}
2. @Pointcut
定义切点表达式,指定在哪些方法上应用通知。
处理类: AspectJExpressionPointcut
类处理
示例代码:
@Aspect@Componentpublic class LoggingAspect {@Pointcut("execution(* com.example.service.*.*(..))")public void serviceMethods() {}@Before("serviceMethods()")public void logBefore(JoinPoint joinPoint) {// 在服务方法执行前记录日志}}
3. @Before
前置通知,在目标方法执行前执行。
处理类: AspectJMethodBeforeAdvice
类处理
示例代码:
@Aspect@Componentpublic class LoggingAspect {@Before("execution(* com.example.service.*.*(..))")public void logBefore(JoinPoint joinPoint) {String methodName = joinPoint.getSignature().getName();System.out.println("Before method: " + methodName);}}
4. @After
后置通知,在目标方法执行后执行(无论是否抛出异常)。
处理类: AspectJAfterAdvice
类处理
示例代码:
@Aspect@Componentpublic class LoggingAspect {@After("execution(* com.example.service.*.*(..))")public void logAfter(JoinPoint joinPoint) {String methodName = joinPoint.getSignature().getName();System.out.println("After method: " + methodName);}}
5. @AfterReturning
返回通知,在目标方法成功执行并返回结果后执行。
处理类: AspectJAfterReturningAdvice
类处理
示例代码:
@Aspect@Componentpublic class LoggingAspect {@AfterReturning(pointcut = "execution(* com.example.service.*.*(..))", returning = "result")public void logAfterReturning(JoinPoint joinPoint, Object result) {String methodName = joinPoint.getSignature().getName();System.out.println("Method " + methodName + " returned: " + result);}}
6. @AfterThrowing
异常通知,在目标方法抛出异常后执行。
处理类: AspectJAfterThrowingAdvice
类处理
示例代码:
@Aspect@Componentpublic class LoggingAspect {@AfterThrowing(pointcut = "execution(* com.example.service.*.*(..))", throwing = "ex")public void logAfterThrowing(JoinPoint joinPoint, Exception ex) {String methodName = joinPoint.getSignature().getName();System.out.println("Method " + methodName + " threw exception: " + ex.getMessage());}}
7. @Around
环绕通知,可以在目标方法执行前后自定义行为,甚至可以决定是否执行目标方法。
处理类: AspectJAroundAdvice
类处理
示例代码:
@Aspect@Componentpublic class PerformanceMonitoringAspect {@Around("execution(* com.example.service.*.*(..))")public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {long startTime = System.currentTimeMillis();Object result = joinPoint.proceed(); // 执行目标方法long endTime = System.currentTimeMillis();String methodName = joinPoint.getSignature().getName();System.out.println("Method " + methodName + " executed in " + (endTime - startTime) + "ms");return result;}}
8. @EnableAspectJAutoProxy
启用AspectJ自动代理,通常在配置类上使用。
处理类: AspectJAutoProxyRegistrar
类处理
示例代码:
@Configuration@EnableAspectJAutoProxypublic class AppConfig {// 配置}
其他常用注解
- Lombokt常用注解
- Spring常用参数校验注解
相关文章:
SpringBoot常用注解
SpringBoot常用注解 SpringBoot框架提供了丰富的注解,极大地简化了应用开发。本文将SpringBoot常用注解按功能分组,并提供详细说明和使用示例。 一、核心注解 1. SpringBootApplication 这是SpringBoot应用的核心注解,标记在主类上&#…...
Vim 编辑器复制文件所有内容
Vim 编辑器复制文件所有内容 在 Vim 的可视化模式下复制所有内容,可以通过以下步骤完成: 方法 1:可视化模式全选复制 进入可视化模式 按下 V(大写 V)进入 行可视化模式。 全选内容 依次按下 gg(跳转到文件…...
MySQL 安全传输
Doris 开启 SSL 功能需要配置 CA 密钥证书和 Server 端密钥证书,如需开启双向认证,还需生成 Client 端密钥证书: 默认的 CA 密钥证书文件位于Doris/fe/mysql_ssl_default_certificate/ca_certificate.p12,默认密码为doris…...
【速览】数据库
一、课程性质和特点 数据库系统原理是高等教育自学考试计算机信息管理专业(独立本科段)、计算机网络专业(独立本科段)、计算机及应用专业(独立本科段)、计算机通信工程专业(独立本科段)考试计划的一门专业基础课。本课程的设置目的是为了使应考者掌握数据库系统的基本原理、方法…...
MySQL 中利用 mysql.help_topic 实现行转列的深入剖析
MySQL 中利用 mysql.help_topic 实现行转列的深入剖析 在数据库操作中,我们常常会遇到数据格式转换的需求。其中,行转列是一种常见的数据处理任务,它能将数据从一种便于存储的行结构,转换为更便于分析和展示的列结构。在 MySQL 数…...
学习使用smartengine
1、开源地址 smartengine的地址 GitCode - 全球开发者的开源社区,开源代码托管平台 2、如何基于这个开源的框架实现自己的业务定制 参考一些文章: 探索BPMN—工作流技术的理论与实践|得物技术...
鸿蒙保姆级教学
鸿蒙(HarmonyOS)是华为推出的一款面向全场景的分布式操作系统,支持手机、平板、智能穿戴、智能家居、车载设备等多种设备。鸿蒙系统的核心特点是分布式架构、一次开发多端部署和高性能。以下是从入门到大神级别的鸿蒙开发深度分析,…...
HW华为流程管理体系精髓提炼华为流程运营体系(124页PPT)(文末有下载方式)
资料解读:HW华为流程管理体系精髓提炼华为流程运营体系(124页PPT) 详细资料请看本解读文章的最后内容。 华为作为全球领先的科技公司,其流程管理体系的构建与运营是其成功的关键之一。本文将从华为流程管理体系的核心理念、构建…...
What a code!
要在前后两个图表之间连接对应的坐标轴刻度点,可以通过在父部件中绘制线条来实现。以下是具体步骤和代码实现: 步骤说明 重写paintEvent函数:在Bigraph的paintEvent中绘制连接线。获取刻度值列表:根据每个坐标轴的最小值、最大值…...
Qt开发中的常见问题与解决方案
目录 1.Qt中大资源文件的处理 2.中文URL编码问题 3.编译器类型、版本与操作系统的判断 4.Qt版本与构建套件位数的判断 5.QWidget样式表不起作用的解决方案 6.动态改变弹簧的拉伸策略 7.文件操作的性能优化 8.自定义心跳包与TCP保活机制 9.Qt平台插件加载失败问题 10.…...
蓝桥杯嵌入式赛道复习笔记3(lcd与led引脚冲突问题)
直接上干货 1.在初始化lcd之前要关闭锁存器 切记一定要开启PD2的引脚,否则白搭 2.在用到的lcd函数要加 uint16_t temp GPIOC->ODR;GPIOC->ODR temp;例如...
【cf】交换
交换数组中元素,逆序对数1,所以逆序对奇偶性发生改变 D. Swap Dilemma https://www.cnblogs.com/pure4knowledge/p/18292578这个写的太好了 任意交换两个数,会使序列的逆序对数加减一个奇数。 所以如果两个序列,初始逆序对数的奇…...
anythingLLM之stream-chat传参
1、 接口地址 /v1/workspace/{slug}/stream-chat POST请求 {"message": "根据以下事件信息找出今天发生的事件有哪几个[{\"事件所在桩号\":\"K1045900\",\"事件发生位置(经纬度值)\":\"114.149…...
友思特应用 | 行业首创:基于深度学习视觉平台的AI驱动轮胎检测自动化
导读 全球领先的轮胎制造商 NEXEN TIRE 在其轮胎生产检测过程中使用了基于友思特伙伴Neurocle开发的AI深度学习视觉平台,实现缺陷检测率高达99.96%,是该行业首个使用AI平台技术推动缺陷检测自动化流程的企业。 将AI应用从轮胎开发扩展到制造过程 2024年…...
Python 变量的定义与使用:从基础到高级
Python 变量的定义与使用:从基础到高级 在 Python 中,变量是程序中最基本的概念之一。变量用于存储数据,并在程序运行过程中随时访问和修改这些数据。理解变量的定义和使用是学习 Python 编程的第一步。 1. 变量的定义 1.1 什么是变量? 变量是程序中用于存储数据的容器。…...
Linux 系统性能调优
概述 在日常运维和架构优化中,Linux 性能调优是提高系统稳定性和运行效率的重要手段。本文结合工作经验,总结了 Linux 服务器常见的优化技巧,涵盖 CPU、内存、磁盘 I/O、网络等多个方面,帮助大家在不同场景下快速定位和优化系统性…...
蓝桥杯备考:奶牛晒衣服
这道题第一眼想用贪心做,1 2 3 我们可以让最多的3用烘干机1秒就能完成,那么是不是我们每次都给湿度最大的衣服用烘干机呢?我们试试哈,比如[5,8],每秒晒干1我们给8衣服一直用烘干机是需要4秒的,4秒后8这个…...
英伟达“AI 超级碗”开幕
Nvidia的AI和机器人技术进展 2025年03月19日 | AI日报  欢迎各位人工智能爱好者。 Nvidia的CEO Jensen Huang刚刚拉开了他的“AI超级碗”,并发表了关于该公司最新芯片、…...
Java使用FFmpegFrameGrabber进行视频拆帧,结合Thumbnails压缩图片保存到文件夹
引入依赖 <dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.17</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ja…...
KVM安全模块生产环境配置与优化指南
KVM安全模块生产环境配置与优化指南 一、引言 在当今复杂多变的网络安全环境下,生产环境中KVM(Kernel-based Virtual Machine)的安全配置显得尤为重要。本指南旨在详细阐述KVM安全模块的配置方法,结合强制访问控制(M…...
如何设计一个 RPC 框架?需要考虑哪些点?
设计一个完整的 RPC 框架需要覆盖以下核心模块及关键技术点: 一、核心架构模块 模块功能与实现要点服务注册与发现使用 Zookeeper/Nacos 等实现服务地址动态注册与订阅,支持心跳检测和节点变更通知网络通信层基于 Netty 或 gRPC 的 HTTP/2 实现异步非阻…...
dify+deepseek联网搜索:免费开源搜索引擎Searxng使用(让你的大模型也拥有联网的功能)
docker安装SearXng 项目地址:https://github.com/searxng/searxng-docker 第一步 git clone下来 git clone https://github.com/searxng/searxng-docker.git第二步 进入 searxng-docker目录中修改docker-compose.yaml(直接复制粘贴) cd searxng-dockerdocker-compose.yaml …...
主流的Java生态下权限管理框架
在当今国内互联网行业中,主流的Java生态下权限管理框架主要分为三类: 通用权限框架(含认证和权限)权限细粒度控制框架(专注资源访问)企业级安全认证和权限框架(更完善的安全功能) &…...
dijkstra算法——47. 参加科学大会
卡码网:47. 参加科学大会https://kamacoder.com/problempage.php?pid=1047 题目描述 小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。 小明的起点是第一个车站,终点是最后一个车站。然而,途中的各个车站之间的道路状况、交通拥堵程度以…...
LAC拨号的L2TP VPN实验
目录 一.拓扑信息 二.需求分析 三.详细配置信息 1.基础信息配置 服务器: 2.建立PPPOE 3.建立L2TP隧道 4.安全策略 四.测试 一.拓扑信息 二.需求分析 一.基础信息配置(IP和安全区域) 二.建立PPPOE连接 是FW1和FW2之间的配置&#…...
天梯赛 PTAL2-009 抢红包
很简单的一道模拟题,使用map统计每个用户的钱数和红包数,最后在使用结构体存储,重载小于号,sort排序即可。 #include <bits/stdc.h> using namespace std; #define endl \n #define int long long typedef long long ll; c…...
信息学奥赛一本通 1831:【03NOIP提高组】神经网络 | 洛谷 P1038 [NOIP 2003 提高组] 神经网络
【题目链接】 ybt 1831:【03NOIP提高组】神经网络 洛谷 P1038 [NOIP 2003 提高组] 神经网络 【题目考点】 1. 图论:拓扑排序,有向无环图动规 【解题思路】 神经网络是一个有向无环图,输入层神经元是入度为0的顶点,…...
如何切换node版本
在Linux或MacOS系统中,切换Node.js版本通常可以通过nvm(Node Version Manager)工具来实现。nvm允许你在不同的Node.js版本之间轻松切换,而无需重新安装或配置。 安装nvm 使用curl命令安装nvm(适用于大多数Linux发行版…...
前端样式库推广——TailwindCss
官方网址: https://tailwindcss.com/docs/installation/using-vite 中文官方文档:https://www.tailwindcss.cn/ github地址:tailwindcss 正在使用tailwindcss的网站:https://tailwindcss.com/showcase 一看github,竟然…...
【前端 vue 或者麦克风,智能语音识别和播放功能】
前端 vue 或者麦克风,智能语音识别和播放功能 1. 终端安装 npm install recordrtc2.引入 import RecordRTC from recordrtc3.html(根据自己业务更改) <div class"Page"><el-form ref"mainFormRef" class&qu…...
Java基础编程练习第34题-正则表达式
在Java里,正则表达式是一种强大的文本处理工具,它可以用于字符串的搜索、替换、分割和校验等操作。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。Java通过java.util.regex包提供了对正则表达式的支持。 以下是正则表达式在Jav…...
Java+Html实现前后端客服聊天
文章目录 核心组件网络通信层事件调度层服务编排层 Spring实现客服聊天技术方案对比WebScoket建立连接用户上线实现指定用户私聊群聊离线 SpringBootWebSocketHtmljQuery实现客服聊天1. 目录结构2. 配置类3. 实体类、service、controller4. ChatWebSocketHandler消息处理5.前端…...
基于Spring Boot的冷链物流系统的设计与实现的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
《线程池:Linux平台编译线程池动态库发生的死锁问题》
关于如何编译动态库可以移步《Linux:动态库动态链接与静态库静态链接》-CSDN博客 我们写的线程池代码是闭源的,未来想提供给别人使用,只需要提供so库和头文件即可。 系统默认库文件路径为: usr/lib usr/loacl/lib 系统默认头文件…...
鸿蒙NEXT项目实战-百得知识库03
代码仓地址,大家记得点个star IbestKnowTeach: 百得知识库基于鸿蒙NEXT稳定版实现的一款企业级开发项目案例。 本案例涉及到多个鸿蒙相关技术知识点: 1、布局 2、配置文件 3、组件的封装和使用 4、路由的使用 5、请求响应拦截器的封装 6、位置服务 7、三…...
sql server数据迁移,springboot搭建开发环境遇到的问题及解决方案
最近搭建springboot项目开发环境,数据库连的是sql server,遇到许多问题在此记录一下。 1、sql server安装教程 参考:https://www.bilibili.com/opus/944736210624970769 2、sql server导出、导入数据库 参考:https://blog.csd…...
Sensodrive机器人力控关节模组SensoJoint在海洋垃圾清理机器人中的拓展应用
海洋污染已成为全球性的环境挑战,其中海底垃圾的清理尤为困难。据研究,海洋中约有2600万至6600万吨垃圾,超过90%沉积在海底。传统上,潜水员收集海底垃圾不仅成本高昂,而且充满风险。为解决这一问题,欧盟资助…...
matrix-breakout-2-morpheus 靶机----练习攻略 【仅获取shell】
【此练习仅做到反弹shell】 1.靶机下载地址 https://download.vulnhub.com/matrix-breakout/matrix-breakout-2-morpheus.ova 2. 打开靶机,kali使用nmap扫描同C段的主机 找到靶机ip 确保靶机和kali网卡均为NAT模式 先查看kali的ip nmap 192.168.182.1/24 …...
吴恩达机器学习笔记复盘(八)多元线性回归的梯度下降
简介 梯度下降是多元线性回归的主流优化方法,具有普适性和可扩展性,而标准方程法适用于特定场景。实际应用中需结合特征工程和参数调优提升模型性能。本篇不复盘参数调优。 1.多元线性回归模型 多元线性回归模型假设因变量 与多个自变量 之间存在线性…...
SAP-ABAP: 采购申请创建(PR)BAPI_PR_CREATE 技术指南-详解
BAPI_PR_CREATE 技术指南 用途:通过 RFC 接口创建 SAP 采购申请(PR),支持自动化集成与批量处理。 一、功能概览 类别说明核心功能创建标准采购申请、预留转采购申请,支持多行项目及账户分配。集成场景与 MRP 系统、外…...
Python:单继承方法的重写
继承:让类和类之间转变为父子关系,子类默认继承父类的属性和方法 单继承: class Person:def eat(self):print("eat")def sing(self):print("sing") class Girl(Person):pass#占位符,代码里面类下面不写任何东…...
Cursor解锁Claude Max,助力AI编程新突破!
Cursor 最新推出的 Claude Max 模型,以其卓越的性能和创新的能力,正在重新定义我们对 AI 辅助编程的认知。这款搭载 Claude3.7 大脑的超级模型,不仅具备超强智能,还凭借一系列技术突破,向传统 AI 编程工具发起了挑战。…...
Datawhale coze-ai-assistant 笔记4
课程地址: 第 6 章 应用 - 飞书云文档https://zxdwhda-share.feishu.cn/wiki/Gi9aw4EDTiXxcekUWebcEtmUnb4 应用 AI…...
【基于深度学习的验证码识别】---- part3数据加载、模型等API介绍(2)
四、模型 模型的定义 在机器学习和深度学习中,模型 可以定义为: 一个数学函数或算法,能够从输入数据中提取特征并生成输出。通过训练过程,模型能够学习数据中的规律(如分类、回归、聚类等)。训练完成后&…...
留 言 板
书单 作者:郦波 《五百年来王阳明》 《郦波评说曾国藩家训》《最是人间留不住》《一天一生》 作者:曾仕强 《论语的生活智慧》 《曾仕强详解道德经 道经》 作者: [何勇,陈晓峰著] 《Greenplum企业应用实战 》 作者 Mark G. Sobel…...
3.18练习
BUUCTF练习day2 [GXYCTF2019]Ping Ping Ping ping题有点熟悉的命令注入,使用 127.0.0.1;ls可以得到当前目录的文件名 cat一下flag.php,发现不行 过滤了空格,那我们有什么方法绕过呢 <(重定向符号)${IFS}$IFS$9%09(tab键) 试一试发现过…...
Redis哨兵模式-黑马学习笔记
redis哨兵模式 1.哨兵主要的作用 用于监控主节点的健康情况 如果主节点挂掉立马选择一个从节点顶上去 2.监控的机制 如何监控呢? sentinel基于心跳机制检测主节点的状态 每个1秒向集群发送ping (三体中逻辑用来威胁三体人的心跳检测) 如…...
Linkreate wordpressAI插件 24小时自动生成原创图文,新增从百度、必应搜索引擎自动获取相关下拉关键词
Linkreate wordpressAI插件核心功能亮点 文章生成与优化 自动化文章生成:利用 AI 技术,根据关键词生成高质量文章。 支持指定长度和要求,异步生成不阻塞操作。 且 AI 可自动生成精准的 tag 标签,利于 SEO 优化。 批量生成文章…...
《AI赋能云原生区块链,引领供应链溯源革新》
在数字化浪潮席卷全球的当下,供应链管理领域正经历着深刻变革。云原生区块链凭借其去中心化、不可篡改等特性,为供应链溯源带来了前所未有的透明度与可靠性。而AI的融入,更如虎添翼,以强大的智能分析和决策能力,为云原…...
基于单片机的多功能热水器设计(论文+源码)
1系统方案设计 基于单片机的多功能热水器系统,其系统框图如图2.1所示。主要采用了DS18B20温度传感器,HC-SR04超声波模块,STC89C52单片机,液晶,继电器等来构成整个系统。硬件上主要通过温度传感器进行水温的检测&am…...