当前位置: 首页 > news >正文

SpringBoot学习笔记下

文章目录

  • 1 接口架构风格 —RESTful
      • 1.1 REST
      • 1.2 在页面中或者ajax中,支持put,delete请求
  • 2 Spring Boot 集成 Redis
    • 2.1 redis起步依赖
    • 2.2 对比 StringRedisTemplate 和 RedisTemplate
  • 3 SpringBoot集成Dubbo
    • 3.1 看 SpringBoot继承Dubbo的文档
    • 3.2 公共项目
    • 7.3 提供者
    • 7.4消费者
  • 注解总结

1 接口架构风格 —RESTful

接口: API(Application Programming Interface,应用程序接口)是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。 用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。

接口(API): 可以指访问servlet, controller的url, 调用其他程序的函数

架构风格: api组织方式(样子)
就是一个传统的: http://localhost:8080/myboot/addStudent?name=lisi&age=26
在地址上提供了 访问的资源名称addStudent, 在其后使用了get方式传递参数。

1.1 REST

RESTful架构风格

  1. REST : (Representational State Transfer , 中文: 表现层状态转移)。

    REST:是一种接口的架构风格和设计的理念,不是标准。

    优点: 更简洁,更有层次

    表现层状态转移:

     表现层就是视图层, 显示资源的, 通过视图页面,jsp等等显示操作资源的结果。状态: 资源变化转移: 资源可以变化的。 资源能创建,new状态,  资源创建后可以查询资源, 能看到资源的内容,这个资源内容 ,可以被修改, 修改后资源和之前的不一样。  
    
  2. REST中的要素:

    用REST表示资源和对资源的操作。 在互联网中,表示一个资源或者一个操作。

    资源使用url表示的, 在互联网, 使用的图片,视频, 文本,网页等等都是资源。

    资源是用名词表示。

    对资源:

     查询资源: 看,通过url找到资源。 创建资源: 添加资源更新资源:更新资源 ,编辑删除资源: 去除
    

    资源使用url表示,通过名词表示资源。

    在url中,使用名词表示资源, 以及访问资源的信息, 在url中,使用“ / " 分隔对资源的信息

    http://localhost:8080/myboot/student/1001

    使用http中的动作(请求方式), 表示对资源的操作(CURD)

    GET: 查询资源 – sql select

     处理单个资源: 用他的单数方式http://localhost:8080/myboot/student/1001http://localhost:8080/myboot/student/1001/1处理多个资源:使用复数形式http://localhost:8080/myboot/students/1001/1002
    

    POST: 创建资源 – sql insert

     http://localhost:8080/myboot/student在post请求中传递数据
    
    <form action="http://localhost:8080/myboot/student" method="post">姓名:<input type="text" name="name" />年龄:<input type="text" name="age" /></form>
    

    PUT: 更新资源 – sql update

    <form action="http://localhost:8080/myboot/student/1" method="post">姓名:<input type="text" name="name" />年龄:<input type="text" name="age" /><input type="hidden" name="_method" value="PUT" />
    </form>
    

    DELETE: 删除资源 – sql delete

    <a href="http://localhost:8080/myboot/student/1">删除1的数据</a>
    

    需要的分页, 排序等参数,依然放在 url的后面, 例如

     http://localhost:8080/myboot/students?page=1&pageSize=20
    
  3. 一句话说明REST:

    使用url表示资源 ,使用http动作操作资源。

  4. 注解

    @PathVariable : 从url中获取数据

    @GetMapping: 支持的get请求方式,
    等同于 @RequestMapping( method=RequestMethod.GET)

    @PostMapping: 支持post请求方式 ,
    等同于 @RequestMapping( method=RequestMethod.POST)

    @PutMapping: 支持put请求方式,
    等同于 @RequestMapping( method=RequestMethod.PUT)

    @DeleteMapping: 支持delete请求方式
    等同于@RequestMapping(method=RequestMethod.DELETE)

    @RestController: 复合注解, 是@Controller 和@ResponseBody组合。
    在类的上面使用 @RestController , 表示当前类者的所有方法都加入了 @ResponseBody

1.2 在页面中或者ajax中,支持put,delete请求

在SpringMVC中 有一个过滤器, 支持post请求转为put ,delete

过滤器: org.springframework.web.filter.HiddenHttpMethodFilter

作用: 把请求中的post请求转为 put , delete

实现步骤:

  1. application.properties(yml) : 开启使用 HiddenHttpMethodFilter 过滤器

    # 启用支持put、delete
    spring.mvc.hiddenmethod.filter.enabled=true
    
  2. 在请求页面中,包含 _method参数, 他的值是 put, delete , 发起这个请求使用的post方式

    <form action="student/test" method="post"><input type="hidden" name="_method" value="put">
    </form>
    

2 Spring Boot 集成 Redis

Redis : 一个NoSQL数据库, 常用作 缓存使用 (cache)

Redis的数据类型: string , hash ,set ,zset , list

Redis是一个中间件: 是一个独立的服务器。

java中著名的客户端: Jedis , lettuce , Redisson

Spring,SpringBoot中有 一个RedisTemplate(StringRedisTemplate) ,处理和redis交互

2.1 redis起步依赖

RedisTemplate 使用的 lettuce 客户端库

<!--redis起步依赖: 直接在项目中使用RedisTemplate(StringRedisTemplate)-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
data-redis使用的   lettuce 客户端库在程序中使用RedisTemplate类的方法 操作redis数据, 实际就是调用的lettuce 客户端的中的方法

2.2 对比 StringRedisTemplate 和 RedisTemplate

StringRedisTemplate : 把k,v 都是作为String处理, 使用的是String的序列化 , 可读性好

RedisTemplate : 把k,v 经过了序列化存到redis。 k,v 是序列化的内容, 不能直接识别.默认使用的jdk序列化

序列化:把对象转化为可传输的字节序列过程称为序列化。

反序列化:把字节序列还原为对象的过程称为反序列化。

为什么需要序列化
序列化最终的目的是为了对象可以跨平台存储,和进行网络传输。而我们进行跨平台存储和网络传输的方式就是IO,而我们的IO支持的数据格式就是字节数组。我们必须在把对象转成字节数组的时候就制定一种规则(序列化),那么我们从IO流里面读出数据的时候再以这种规则把对象还原回来(反序列化)。

什么情况下需要序列化
通过上面我想你已经知道了凡是需要进行“跨平台存储”和”网络传输”的数据,都需要进行序列化。

本质上存储和网络传输 都需要经过 把一个对象状态保存成一种跨平台识别的字节格式,然后其他的平台才可以通过字节信息解析还原对象信息。

序列化的方式

序列化只是一种拆装组装对象的规则,那么这种规则肯定也可能有多种多样,比如现在常见的序列化方式有:

JDK(不支持跨语言)、JSON、XML、Hessian、Kryo(不支持跨语言)、Thrift、Protofbuff、

java的序列化: 把java对象转为byte[], 二进制数据

json序列化:json序列化功能将对象转换为 JSON 格式或从 JSON 格式转换对象。例如把一个Student对象转换为JSON字符串{“name”:“李四”, “age”:29} ),反序列化(将JSON字符串 {“name”:“李四”, “age”:29} 转换为Student对象)
Student( name=zs, age=20) ---- { “name”:“zs”, “age”:20 }

设置key或者value的序列化方式

// 使用RedisTemplate ,在存取值之前,设置序列化
// 设置 key 使用String的序列化
redisTemplate.setKeySerializer( new StringRedisSerializer());// 设置 value 的序列化
redisTemplate.setValueSerializer( new StringRedisSerializer());redisTemplate.opsForValue().set(k,v);

3 SpringBoot集成Dubbo

3.1 看 SpringBoot继承Dubbo的文档

https://github.com/apache/dubbo-spring-boot-project/blob/master/README_CN.md

3.2 公共项目

独立的maven项目: 定义了接口和数据类

public class Student implements Serializable {private static final long serialVersionUID = 1901229007746699151L;private Integer id;private String name;private Integer age;// set、get、toString方法
}
public interface StudentService {Student queryStudent(Integer id);
}

7.3 提供者

创建SpringBoot项目

1) pom.xml

<dependencies><!--加入公共项目的gav--><dependency><groupId>com.yrgdcx</groupId><artifactId>yrgdcx-interface-api</artifactId><version>1.0.0</version></dependency><!--dubbo依赖--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.8</version></dependency><!--zookeeper依赖--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-zookeeper</artifactId><version>2.7.8</version><type>pom</type><exclusions><!-- 排除log4j依赖 --><exclusion><artifactId>slf4j-log4j12</artifactId><groupId>org.slf4j</groupId></exclusion></exclusions></dependency>
</dependencies>

2)实现接口

/*** 使用dubbo中的注解暴露服务* @Component 可以不用加*/
@DubboService(interfaceClass = StudentService.class,version = "1.0",timeout = 5000)
public class StudentServiceImpl implements StudentService {@Overridepublic Student queryStudent(Integer id) {Student student  = new Student();if( 1001 == id){student.setId(1001);student.setName("------1001-张三");student.setAge(20);} else if(1002  == id){student.setId(1002);student.setName("#######1002-李四");student.setAge(22);}return student;}
}

3)application.properties

#配置服务名称 dubbo:application name="名称"
spring.application.name=studentservice-provider#配置扫描的包, 扫描的@DubboService
dubbo.scan.base-packages=com.yrgdcx.service#配置dubbo协议
#dubbo.protocol.name=dubbo
#dubbo.protocol.port=20881#注册中心
dubbo.registry.address=zookeeper://localhost:2181

4)在启动类的上面

@SpringBootApplication
@EnableDubbo
public class ProviderApplication {public static void main(String[] args) {SpringApplication.run(ProviderApplication.class, args);}
}

7.4消费者

创建SpringBoot项目

1) pom.xml

<dependencies><!--加入公共项目的gav--><dependency><groupId>com.yrgdcx</groupId><artifactId>yrgdcx-interface-api</artifactId><version>1.0.0</version></dependency><!--dubbo依赖--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.8</version></dependency><!--zookeeper依赖--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-zookeeper</artifactId><version>2.7.8</version><type>pom</type><exclusions><!-- 排除log4j依赖 --><exclusion><artifactId>slf4j-log4j12</artifactId><groupId>org.slf4j</groupId></exclusion></exclusions></dependency>
</dependencies>
  1. 创建了Controller
@RestController
public class DubboController {/*** 引用远程服务, 把创建好的代理对象,注入给studentService*///@DubboReference(interfaceClass = StudentService.class,version = "1.0")/*** 没有使用interfaceClass,默认的就是 引用类型的 数据类型*/@DubboReference(version = "1.0")private StudentService studentService;@GetMapping("/query")public String queryStudent(Integer id){Student student   = studentService.queryStudent(id);return "调用远程接口,获取对象:"+student;}
}

3)application.properties

#指定服务名称
spring.application.name=consumer-application
#指定注册中心
dubbo.registry.address=zookeeper://localhost:2181

注解总结

Spring + SpringMVC + SpringBoot

创建对象的:
@Controller: 放在类的上面,创建控制器对象,注入到容器中
@RestController: 放在类的上面,创建控制器对象,注入到容器中。作用:复合注解是@Controller , @ResponseBody, 使用这个注解类的,里面的控制器方法的返回值                   都是数据@Service : 放在业务层的实现类上面,创建service对象,注入到容器
@Repository : 放在dao层的实现类上面,创建dao对象,放入到容器。 没有使用这个注解,是因为现在使用MyBatis框               架,  dao对象是MyBatis通过代理生成的。 不需要使用@Repository、 所以没有使用。
@Component:  放在类的上面,创建此类的对象,放入到容器中。 赋值的:
@Value : 简单类型的赋值, 例如 在属性的上面使用@Value("李四") private String name还可以使用@Value,获取配置文件者的数据(properties或yml)。 @Value("${server.port}") private Integer port@Autowired: 引用类型赋值自动注入的,支持byName, byType. 默认是byType 。 放在属性的上面,也可以放在构造             方法的上面。 推荐是放在构造方法的上面
@Qualifer:  给引用类型赋值,使用byName方式。   @Autowird, @Qualifer都是Spring框架提供的。@Resource : 来自jdk中的定义, javax.annotation。 实现引用类型的自动注入, 支持byName, byType.默认是byName, 如果byName失败, 再使用byType注入。 在属性上面使用其他:
@Configuration : 放在类的上面,表示这是个配置类,相当于xml配置文件@Bean:放在方法的上面, 把方法的返回值对象,注入到spring容器中。@ImportResource : 加载其他的xml配置文件, 把文件中的对象注入到spring容器中@PropertySource : 读取其他的properties属性配置文件@ComponentScan: 扫描器 ,指定包名,扫描注解的@ResponseBody: 放在方法的上面,表示方法的返回值是数据, 不是视图
@RequestBody : 把请求体中的数据,读取出来, 转为java对象使用。@ControllerAdvice:  控制器增强, 放在类的上面, 表示此类提供了方法,可以对controller增强功能。@ExceptionHandler : 处理异常的,放在方法的上面@Transcational :  处理事务的, 放在service实现类的public方法上面, 表示此方法有事务SpringBoot中使用的注解@SpringBootApplication : 放在启动类上面, 包含了@SpringBootConfiguration@EnableAutoConfiguration@ComponentScanMyBatis相关的注解@Mapper : 放在类的上面 , 让MyBatis找到接口, 创建他的代理对象    
@MapperScan :放在主类的上面 , 指定扫描的包, 把这个包中的所有接口都创建代理对象。 对象注入到容器中
@Param : 放在dao接口的方法的形参前面, 作为命名参数使用的。Dubbo注解
@DubboService: 在提供者端使用的,暴露服务的, 放在接口的实现类上面
@DubboReference:  在消费者端使用的, 引用远程服务, 放在属性上面使用。
@EnableDubbo : 放在主类上面, 表示当前引用启用Dubbo功能。

相关文章:

12.Netty入门案例

1.引入Netty依赖 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.39.Final</version></dependency> 2.服务端 public class HelloServer {public static void main(String[] arg…...

Python入门教程(二)

Python语言基础 pyc 文件 执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。Python为编译型语言,代码编译得到字节码,再通过虚拟机执行字节码转换成机器码,最后由CPU执行。…...

winform植物大战僵尸

winform植物大战僵尸 植物大战僵尸源码 半成品 需要的拿去学习 登陆注册选择关卡 向日葵 豌豆射手 双枪豌豆射手 项目获取&#xff1a; 项目获取&#xff1a;typora: typora/img (gitee.com) 备用项目获取链接1&#xff1a;yifeiyixiang/kamo: 源码下载 (github.com) 备用…...

Android studio 新版本 NewUI toolbar显示快捷按钮

新版本的Android studio 启用新的界面&#xff0c;以前许多快捷按键位置有变化 文章目录 设置始终显示主菜单设置ToolBar快捷按钮显示设置右下角显示分支 设置始终显示主菜单 原本要点击左上角几个横向才显示的菜单 设置始终显示&#xff0c;View -> Appearance -> Main…...

docker的一些命令 以及dockerFile语法

文件夹重新命名mv node-v14.18.1-linux-x64 node-v14.18.1 dokcer 命令 将linux的文件复制到docker容器里面 docker cp /usr/local/node-v14.18.1/ 8ec26052dfad:/usr/local/node-v14.18.1 将docker容器里面的文件复制到linux docker container cp ng…...

vue3中vue页面向组件传值(组件的引入)

1 // vue页面的操作2 // vue页面中引入组件;组件放入components文件夹中3 import pension from "@/components/CarWenShidu/echart.vue";4 import pensionshidu from "@/components/CarWenShidu/echartshidu.vue";5 6 // 向组件中传值 handleMethod 通过d…...

SpringBoot学习笔记下

文章目录1 接口架构风格 —RESTful1.1 REST1.2 在页面中或者ajax中&#xff0c;支持put&#xff0c;delete请求2 Spring Boot 集成 Redis2.1 redis起步依赖2.2 对比 StringRedisTemplate 和 RedisTemplate3 SpringBoot集成Dubbo3.1 看 SpringBoot继承Dubbo的文档3.2 公共项目7.…...

小米12/12S/13Pro手机MIUI14系统小黄鸟(HttpCanary)CA证书无法注入问题

很多用户获取ROOT是为了抓包&#xff0c;这里一般常常依赖一款名叫HttpCanary的软件&#xff0c;因软件 图标是一只小鸟&#xff0c;我们经常叫他小黄鸟。从日常使用上来看&#xff0c;黄鸟确实有抓包获取数据等 功能&#xff0c;也在多个手机上实践成功&#xff0c;网上相关教…...

SpringCloud学习笔记(四)Docker

一、Docker如何解决依赖的兼容问题 将应用的libs&#xff08;函数库&#xff09;、Deps&#xff08;依赖&#xff09;、配置与应用一起打包&#xff0c;形成可移植镜像Docker应用运行在容器中&#xff0c;使用沙箱机制&#xff0c;相互隔离 二、Dokcer如何解决开发、测试、生…...

SAP 批量修改 工艺路线 和 BOM

1、在运维的过程中经常会遇到用户需要批量更改组件&#xff0c;或者是批量更改数量&#xff0c;还是组件里面的一些标识&#xff0c;当处理这些批量数据处理的业务时&#xff0c;BOM的批量更改一个想到的就是CS20&#xff0c;但是CS20当BOM需要替换的时候就不是很适用。新增的组…...

基于OpenTelemetry实现可观测性-Part 4 Collector

译注&#xff1a;这是一个系列&#xff0c;共分成6部分&#xff0c;这是第4部分。翻译自&#xff1a;https://trstringer.com/otel-part4-collector/在上一篇博文中&#xff0c;我们讨论了如何使用 SDK 和追踪器提供者从进程获取遥测数据。存在很多不同类型的导出器&#xff0c…...

STM32学习(十二)

软件定时原理 使用纯软件&#xff08;CPU死等&#xff09;的方式实现定时&#xff08;延时&#xff09;功能。 不精准&#xff1a;函数调用压栈进栈需要耗费额外的时间&#xff1b;流水线使得程序执行时间不确定。CPU死等。 定时器定时原理 使用精准的时基&#xff0c;通过…...

Python毕业设计推荐

今天给大家推荐4个基于python的毕业设计/课程设计 1 网上商城系统 这是一个基于pythonvue开发的商城网站&#xff0c;平台采用B/S结构&#xff0c;后端采用主流的Python语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 前台功能…...

组装式交付-云巧 知多少

组装式交付-云巧 知多少组装式交付背景云巧什么是云巧呢&#xff1f;云巧的优势丰富的组件&#xff0c;提升代码复用全面的集成方式&#xff0c;支持模块化组装云原生标准&#xff0c;预集成阿里云产品云巧的构成云巧组件云巧资产市场云巧生态云巧工坊总结组装式交付背景 一直…...

「解析」牛客网-华为机考企业真题 41-60

又是一年春招时&#xff0c;有幸收到华为自动驾驶算法岗&#xff0c;之前刷题不多&#xff0c;在此汇总下牛客网的真题&#xff0c;主要采用Python编写&#xff0c;个人觉得语言只是实现工具而已&#xff0c;并不是很关键&#xff0c;Python简洁易懂&#xff0c;更加适合算法工…...

RPA机器人在信息化管理、报告生成实现自动化成为生态环境局新宠

随着人们对环境和自然资源的保护意识逐渐增强&#xff0c;我国在环保领域的投入力度也越来越大。然而&#xff0c;环境保护任务的繁重与复杂&#xff0c;也意味着环保执法机关需要更加高效、精准的手段来完成任务。这时&#xff0c;“机器人流程自动化”&#xff08;简称RPA&am…...

关于线程池你了解些什么?

前言学习线程池的思维导图线程池是什么?它有什么用?虽然线程比进程更轻量级,但是每个进程所占的资源空间是有限,如果我们频繁创建和销毁线程也会消耗很多CPU资源,那么我们该如何解决这个问题呢?官方解释:线程池是一种多线程处理形式,其处理过程可以将多个任务添加到阻塞队列…...

基于MATLAB编程的萤火虫改进帝国竞争算法求解多目标优化,FA-ICA目标寻优

目录 背影 帝国竞争 基本定义 优点 萤火虫原理 改进思路 基于萤火虫改进帝国竞争多目标求解 代码 结果分析 展望 背影 多目标多参数优化是常遇到的优化问题,有很多传统算法可以求解,比如fiminmax,fmincon等,但是都容易陷入局部最优,本文用帝国竞争优化萤火虫算法进行多目…...

低代码开发:助力企业高效实现数字转型的一大利器

随着互联网、移动互联网、物联网等技术的迅速普及和应用&#xff0c;数字经济时代的到来&#xff0c;人们的生产、消费和生活方式都发生了巨大的变化&#xff0c;而传统企业也面临着巨大的挑战和机遇。 在数字经济时代&#xff0c;数据成为一种重要的生产要素。数据成为一种重要…...

centos7安装mysql并添加密码

网上找的教程有的是不能用&#xff0c;有的是改密码有问题&#xff0c;下面这个教程亲测可用 #安装wget,wget是Linux中的一个下载文件的工具 yum -y install wget #使用wget下载文件 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-com…...

大数据未来发展怎么样?

就目前情况来看&#xff0c;大数据行业前景不错薪资待遇好&#xff0c;也有越来越多的人选择大数据行业&#xff0c;各大名企对于大数据人才需求不断上涨。 大数据从业领域很宽广&#xff0c;不管是科技领域还是食品产业&#xff0c;零售业等都是需要大数据人才进行大数据的处…...

图书管理系统(考试样品)

一、执行下面的sql CREATE DATABASE bms CHARACTER SET utf8mb4;USE bms;DROP TABLE IF EXISTS tb_book;CREATE TABLE tb_book (id INT NOT NULL AUTO_INCREMENT,name VARCHAR(20) NOT NULL,desc TEXT ,type_id INT DEFAULT NULL,PRIMARY KEY (id) ) ; INSERT INTO tb_book VA…...

树与二叉树(图示超详解哦)

这里写目录标题引言树与二叉树树的概念及结构树的表示二叉树特殊的二叉树二叉树的性质二叉树的表示顺序结构链式结构总结引言 在前面的一段时间里&#xff0c;我们学习了顺序表、链表、栈、队列的知识。其实这些顺序结构都是线性的&#xff0c;它们的逻辑结构都是一条线穿起来…...

【vue3】数据绑定,动态渲染class与style

数据绑定的一个常见需求场景是操纵元素的 CSS class 列表和内联样式&#xff08;style&#xff09;。因为 class 和 style 都是 attribute&#xff0c;我们可以和其他 attribute 一样使用 v-bind 将它们和动态的字符串绑定。但是&#xff0c;在处理比较复杂的绑定时&#xff0c…...

axios使用

参考地址&#xff1a;https://github.com/axios/axios html CDN <script src"https://cdn.jsdelivr.net/npm/axios1.1.2/dist/axios.min.js"></script>或者 <script src"https://unpkg.com/axios1.1.2/dist/axios.min.js"></scrip…...

countup.js 数字动画

countup.js 数字动画1. 安装2. 参数3. Vue组件封装3.1 组件代码3.2 调用方式1. 安装 npm i countup.js2. 参数 项目Valuetargetstring, HTMLElement ,HTMLInputElement - id of html element, input, svg text element, or DOM element reference where counting occursendV…...

10个问题带你全面理解Linux性能优化

1. 为什么面试官喜欢考察性能优化问题&#xff1f; 面试官考察性能优化问题的目的可能并不是要你设计一个性能很高的系统&#xff0c;而是为了全方位考察一个面试者的知识背景和实践能力。 1) 性能优化涉及的知识面既需要深度&#xff0c;同时又需要一定的广度 从深度上来说…...

php使用yield处理大数据文件

1.概述 yield和return有点像&#xff0c;它是一个生成器&#xff0c;对PHP应用的性能有非常大的影响&#xff0c; 只有在调用的时候才会执行&#xff0c;并不产生多余的值&#xff0c;比如读取一个很大的文件或者计算大量的数据时&#xff0c;如果直接读取很有可能内存就爆了&a…...

数据更新 | CnOpenData法拍房数据

法拍房数据 一、数据简介 法拍房&#xff0c;即“法院拍卖房产”&#xff0c;是被法院强制执行拍卖的房屋 。当债务人&#xff08;业主&#xff09;无力履行借款合约或无法清偿债务时&#xff0c;而被债权人经司法程序向法院申请强制执行&#xff0c;将债务人名下房屋拍卖&…...

(一)kafka从入门到精通之初识kafka

一、发布订阅系统 在学习kafka之前&#xff0c;我们先来看看什么是发布订阅系统。 概念 数据的发送者不会直接把消息发送给接收者&#xff0c;这是发布与订阅消息系统的一个特点。发布者以某种方式对消息进行分类&#xff0c;接受者订阅它们&#xff0c;以便接受特定类型的消…...

stata17中double类型与float类型的区别(变量的存储格式和显示格式、数值运算出错、转换数值格式、字符型数据转换为数值型数据)

double类型与float类型区别 参考&#xff1a;变量的存储格式和显示格式 数值运算出错 因为营业总收入和其他业务收入都是字符型数据&#xff0c;所以使用real函数将其转换为数值型数据。 gen 主营业务收入 real(营业总收入)-real(其他业务收入)结果如下图所示&#xff1a;计…...

【JVS低代码配置平台】基于树形字典的纯配置实现左树右表

左树右表是我们在业务管理系统中常见的业务形态&#xff0c;如下图所示&#xff0c;树形结构用于多层级的数据的展示&#xff0c;列表页作为对应数据的横向行级展现。 实现树形的配置有两种模式&#xff0c;一种是根据树形字典配置&#xff08;简单导入即可&#xff09;&#x…...

Spring Boot实现Redis同数据源动态切换DB | Spring Cloud 31

一、前言 在某些业务场景下&#xff0c;需要多访问同一Redis数据源下的不同DB。 在Redis中默认提供了16个数据库&#xff08;序号0-15&#xff09;&#xff0c;默认Redis使用的是db 0。 此章节基于spring-boot-starter-data-redis模块&#xff0c;实现了Redis同数据源动态切换…...

[技术经理]02 什么是技术经理?

目录01什么是技术经理02总结01什么是技术经理 什么是技术经理&#xff1f; 我用一句话概括为&#xff1a;专业技术团队的管理者。 技术经理&#xff0c;是一种管理职位&#xff0c;通常是在软件开发、互联网等科技公司或技术团队中担任。 技术经理的职责&#xff0c;**是管理…...

油炸食品的最佳用油:米糠油

摘要&#xff1a;本文详细介绍了米糠油作为最佳油炸用油的各种特点&#xff0c;但更重要的是建议采用真空油炸方法&#xff0c;更能发挥米糠油的优势。 油炸食品是我们日常生活中常见的美味&#xff0c;人们普遍的共识是“油炸食品虽然好吃&#xff0c;但不适合多吃”&#xff…...

【C++】queue和priority_queue的成员函数和非成员函数

目录 1. queue 1.1 queue的成员函数 1.1.1 构造函数 1.1.2 判空 1.1.3 大小 1.1.4 队头 1.1.5 队尾 1.1.6 入队 1.1.7 emplace 1.1.8 出队 1.1.9 交换 1.2 queue的非成员函数 1.2.1 关系运算符重载 1.2.2 交换 2. priority_queue 2.1 priority_queue的成员函数…...

韩长赋在第七届杭州全球企业家论坛开幕式上讲话

今天我们相聚在美丽的西子湖畔&#xff0c;隆重举办“第七届杭州全球企业家论坛暨中国消费品博览会”&#xff0c;旨在凝聚发展力量&#xff0c;共创合作未来。 今年是全面贯彻落实党的二十大精神的开局之年&#xff0c;是全面建设社会主义现代化国家&#xff0c;加快建设农业强…...

webpack+nginx开启gzip压缩部署项目

首先在服务器安装nginx sudo apt update sudo apt install nginx 安装完毕后将前端项目打包 webpack.output.publicPath里配置资源基础路径 资源打包出来就是/publicPath开头 1.http://www.xxx.com/ publicPath: / 2.http://www.xxx.com/web publicPath: /web/ 尾巴多加个/…...

coco 2017数据集 类别提取并转换为yolo数据集

coco 2017数据集提取和转换本次分割的动物数据集 4G一. coco2017数据集结构标注文件解析二. 提取需要的类别重新封装成coco数据集&#xff08;这里以动物类别为例&#xff09;三. 转换为yolo 数据集本次分割的动物数据集 4G https://download.csdn.net/download/qq_26696715/8…...

jdk线程池技术

jdk线程池ThreadPoolExecutor的7个参数 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler) {if (corePoolSize &l…...

keepalived+nginx 双机热备搭建

keepalivednginx 双机热备搭建一、准备工作1.1 准备两台centos7.91.2 nginx 与 keepalived软件 双机安装1.3 ip分配1.4 修改主机名1.5 关闭selinux&#xff08;双机执行&#xff09;1.6 修改hosts&#xff08;双机执行&#xff09;二、安装keepalived2.1 执行一下命令安装keepa…...

【云原生】容器编排技术Docker Compose

为什么需要Docker ComposeDocker Compose介绍Docker Compose安装Docker Compose版本介绍Docker Compose基本命令介绍Docker Compose实战Docker Compose Yml文件介绍总结为什么需要Docker Compose Docker帮助我们解决服务的打包安装的问题&#xff0c;随着而来的问题就是服务过…...

String、StringBuilder、StringBuffer的四大区别解析

面试官问&#xff1a;String、StringBuilder、StringBuffer有什么区别么&#xff1f; 这个问题是个高频问题&#xff0c;所以今天从源码上进行深度刨析他们的区别。 如何回答&#xff1a; 从四个点出发&#xff1a; 1、可变/不可变类 String是不可变类。他被被final修饰&…...

【C#进阶】C# 匿名方法

序号系列文章18【C#进阶】C# 事件19【C#进阶】C# 集合类20【C#进阶】C# 泛型文章目录前言1、什么是匿名方法&#xff1f;2、delegate 运算符3、Lambda 表达式3.1、Lambda 表达式的自然类型3.2、Lambda 表达式的显示返回类型4、关于匿名方法的总结结语前言 &#x1f4fa; hello大…...

C++并发编程之二 在线程间共享数据

文章目录1.1 互斥锁&#xff08;mutex&#xff09;保护共享数据1.1.1 std::mutex 的成员函数 std::mutex::lock() 和std::mutex::unlock() (不推荐使用)1.1.2 使用std::lock_guard保护共享数据1.1.3 使用std::unique_lock保护共享数据1.2 保护共享数据的其他方式1.2.1 初始化过…...

FL Studio和Cubase哪个容易一些 FL Studio和Cubase修音哪个好

FL Studio和Cubase哪个容易一些&#xff1f;FL Studio是很适合新手使用的宿主软件。FL Studio和Cubase修音哪个好&#xff1f;FL Studio和Cubase在修音方面各有千秋。 一、FL Studio和Cubase哪个容易一些 FL Studio是很适合新手上手的宿主软件&#xff0c;这得益于FL Studio独…...

限定学校|在站博士后省公派新加坡国立大学从事博后研究

Y博士为国内在站博士后&#xff0c;我们向其推荐了人社部博管办国外博士后派出项目及所在省的相关项目&#xff0c;最终助其获得新加坡国立大学的博士后邀请函&#xff0c;鉴于该导师名列全球高被引科学家榜单&#xff0c;顺利获批省国际培养博士后资助项目&#xff0c;如期出国…...

信息技术最全总结(备考教资)

信息技术 备考教资信息技术知识点总结&#xff0c;欢迎收藏&#xff01;需要xmind和备考书籍的可以评论区留言。 第一部分-学科专业知识 第一章-信息技术基础知识 信息与信息技术概述 信息概述 信息的定义 信息本身不是实体信息是通过文字、数字、图像、图形、声音、视频等方…...

spring5(三):IOC操作Bean管理(基于xml方式)

IOC操作Bean管理&#xff08;基于xml方式&#xff09;前言一、基于 xml 方式创建对象二、基于 xml 方式注入属性1. 使用 set 方法进行属性注入2. 使用有参数构造进行属性注入3. p 名称空间注入简化操作&#xff08;了解&#xff09;三、xml 注入其它类型属性1. 字面量2. 注入属…...

Vue的快速上手

一、创建一个 Vue 应用 前提条件 熟悉命令行已安装 16.0 或更高版本的 Node.js在本篇中&#xff0c;我们将介绍如何在本地搭建 Vue 单页应用。创建的项目将使用基于 Vite 的构建设置&#xff0c;并允许我们使用 Vue 的单文件组件 (SFC)。 确保你安装了最新版本的 Node.js&…...

通过ELK+kafka采集微服务日志

在springboot微服务中采集日志推送kafka背景整体流程图快速搭建kafkazk开发环境通过logback记录日志到kafka快速搭建ELK环境Kibana查看&#xff0c;统计日志背景 在分布式的项目中&#xff0c;各功能模块产生的日志比较分散&#xff0c;同时为满足性能要求&#xff0c;同一个微…...

开启新航路,拓尔思发力AIGC市场 | 爱分析调研

2022年&#xff0c;随着AI聊天机器人GhatGPT在世界范围内持续火爆&#xff0c;极具创意、表现力、个性化且能快速迭代的AIGC技术成功破圈&#xff0c;成为全民讨论热点。 AIGC是指在确定主题下&#xff0c;由算法模型自动生成内容&#xff0c;包括单模态内容如文本、图像、音频…...

01-死磕QNX someip

1. vsomeip3.1.20版本 环境配置 export COMMONAPI_CONFIG/etc/commonapi.ini export LD_LIBRARY_PATH/sdcard/someip:$LD_LIBRARY_PATH export VSOMEIP_CONFIGURATION/etc/vsomeip-service.json export VSOMEIP_APPLICATION_NAMEHelloWorldSomeIPService sysctl -w net.ine…...

OTFS输入输出关系

目录 1. OTFS输入输出关系的矩阵表示 1.1 OTFS&#xff1a;矩阵表示 1.2 OTFS发射机的实现 1.2.1 传统的OTFS调制 ISFFT 海森堡变换 1.2.2 基于IDZT的OTFS调制 1.3 OTFS接收机的实现 1.3.1 传统的OTFS解调 维格纳变换 SFFT 1.3.2 基于DZT的OTFS解调 Appendix-Matlab C…...

Java的抽象类和接口

目录 一 、抽象类 1、抽象类概念 2、抽象类语法 3、抽象类特性 4、抽象类的作用 二、接口 1、接口的概念 2、语法规则 3、接口使用 4、接口特性 5、实现多个接口 6、接口间的继承 7、抽象类和接口的区别 8、接口使用实例 9、Clonable 接口和深拷贝 三、Object类…...

作为一个女测试员是什么样的体验?

面试时极度紧张&#xff0c;语无伦次&#xff0c;觉得肯定没戏&#xff0c;最后却拿到高薪offer。 工作之后我听同事们讲&#xff0c;测试总监面试官并没打算要我&#xff0c;但身边的人都问他&#xff1a; 那个小姐姐什么时候来报道&#xff1f;... 于是在众人的期待的目光…...

文件上传结合springboot

目录 前台页面 后台接口 文件上传总结 前端页面三要素 服务端接收文件 前台页面 <form action"/upload" method"post" enctype"mutipart/form-data"> 姓名<imput type"text" name"username"><br> 年…...

下一代自动化,国外厂商如何通过生成性AI重塑RPA?

企业自动化的未来趋势是什么&#xff1f;科技巨头们普遍认为&#xff0c;由生成性AI驱动的AI Agent将成为下一个重大发展方向。尽管“AI Agent”这一术语尚无统一定义&#xff0c;但它通常指的是那些能够根据指令通过模拟人类互动&#xff0c;在软件和网络平台上执行复杂任务的…...

CSS font-weight字重数值及对应的字重描述词语

1、以下是一些常见的 font-weight 数值及其对应的描述词语&#xff1a; 100 - Thin (细)200 - Extra Light (超细)300 - Light (细)400 - Normal (正常)500 - Medium (中等)600 - Semi Bold (半粗)700 - Bold (粗)800 - Extra Bold (超粗)900 - Black (极粗) 2、此外&#xf…...

[淘宝销量]—采集分析—实例参考▶

[干货] 本文爬取淘宝的搜索结果&#xff0c;包含标题、价格、原价、店铺、月销量字段。将结果保存成csv格式&#xff0c;并作简单分析。以手机为例。【淘宝销量】 用到的python库&#xff1a;selenium、urllib、pyquery、pandas。 1.爬取页面分析 1.1 获取URL 打开淘宝&am…...

【Osek网络管理测试】[TG4_TC4]tWaitBusSleep

🙋‍♂️ 【Osek网络管理测试】系列💁‍♂️点击跳转 文章目录 1.环境搭建2.测试目的3.测试步骤4.预期结果5.测试结果1.环境搭建 硬件:VN1630 软件:CANoe 2.测试目的 验证DUT的tWBS时间参数是否符合NM标准 本处规定tWBS在[1350ms,1650ms]范围内符合要求 3.测试步骤…...

男人圣经 10

男人圣经 10 行业基因 你在对行业、客户群体、事情、核心优势上的高感知力 行业基因 你在对行业、客户群体、事情、核心优势上的高感知力 灵性&#xff0c;我感觉是对人、对事情、对行业的感知力&#xff0c;这就是你的天赋程度。 比如情圣&#xff0c;他比女人更懂自己&am…...

如何自定义Markdown中插入图片的位置

工作中常常需要在VsCode下写Markdown笔记&#xff0c;在写笔记的过程中不免需要插入图片。  Markdown中插入笔记的操作往往是比较繁琐的&#xff0c;比如&#xff1a;在文档中引用本地某个文件夹下的图片&#xff0c;首先需要你先保存图片到本地路径&#xff0c;然后需要你在文…...

OpenVoiceV2本地部署教程,苹果MacOs部署流程,声音响度统一,文字转语音,TTS

最近OpenVoice项目更新了V2版本&#xff0c;新的模型对于中文推理更加友好&#xff0c;音色也得到了一定的提升&#xff0c;本次分享一下如何在苹果的MacOs系统中本地部署OpenVoice的V2版本。 首先下载OpenVoiceV2的压缩包&#xff1a; OpenVoiceV2-for-mac代码和模型 https:…...

pyqt5实现帮助文档功能

一般稍微复杂的软件都有帮助文档&#xff0c;用来引导用户慢慢熟悉软件功能&#xff0c;介绍软件的使用细节&#xff0c;今天我也想在分析软件中添加这个功能&#xff0c;实现帮助文档功能其实有几种方式&#xff0c;一种是只实现一个超链接功能&#xff0c;然后把文档做在线上…...

iframe的替代方案有吗?做页面嵌套界面套娃

UIOTOS可以了解下&#xff0c;uiotos.net&#xff0c;通过连线来代替脚本逻辑开发&#xff0c;复杂的交互界面&#xff0c;通过页面嵌套轻松解决&#xff0c;是个很新颖的思路&#xff0c;前端零代码&#xff01; 蓝图连线尤其是独创的页面嵌套和属性继承技术&#xff0c;好家…...

大数据SQL面试题每日一题系列:现有用户登录记录表,请查询出用户连续三天登录所有的数据记录

之后会不定期更新每日一题sql系列。 SQL面试题每日一题系列内容均来自于网络以及实际使用情况收集&#xff0c;如与各大厂面试题有雷同&#xff0c;纯属巧合。 1.题目 问题&#xff1a;以下为多个用户每日登录记录数据&#xff0c;已经按照用户登录日期进行了去重处理&#…...

中国M2总量是两个美国,意味着什么

中国人民银行公布数据&#xff1a;2月末&#xff0c;我国广义货币(M2)余额299.56万亿元&#xff0c;同比增长8.7%。 2000年末我国M2仅13万亿元&#xff0c;2013年3月达到100万亿元&#xff1b;2020年1月突破200万亿元&#xff1b;2024年2月接近300万亿元&#xff0c; 与美欧日…...