git是一个优秀的代码版本管理工具,其主要由三个部分组成:
.git(Windows)
文件夹中,因此误删可能会遗失。远程仓库可实现云上代码托管。提交到远程仓库必须经过本地仓库,无法从工作空间直接提交。提交(Commit)
:提交是Git中最基本的操作之一,它表示对代码库的一个修改或一组修改的快照。每次提交都包含一个唯一的哈希值,以及作者、日期和提交消息等元数据。分支(Branch)
:分支是基于某个特定提交的可编辑的代码路径。主分支(通常是master或main)是项目的主要开发线,而其他分支可以用于开发新功能、修复错误或进行实验性工作。分支的合并(Merge)是将一个分支的更改合并到另一个分支的过程。远程仓库(Remote Repository)
:远程仓库是位于网络上的Git代码库,通常托管在服务提供商(如GitHub、GitLab或Bitbucket)上。开发者可以从远程仓库拉取(Pull)代码,也可以推送(Push)本地更改到远程仓库。工作区(Working Directory)
:工作区是指开发者正在编辑和修改文件的地方。Git监视工作区中的文件,并记录其中的更改。索引(Index)
:索引也称为暂存区(Staging Area),是一个缓冲区,用于准备提交的更改。在执行提交之前,开发者可以将要提交的更改添加到索引中。撤销更改(Undoing Changes)
:Git提供了多种方式来撤销更改,包括使用git reset命令回滚提交、使用git checkout命令恢复单个文件或文件夹的特定版本,以及使用git revert命令创建一个新的提交来撤销之前的更改。标签(Tag)
:标签是用于标记代码库中重要的版本或里程碑的指针。与分支不同,标签通常用于标识特定的提交,而不是用于开发新功能或进行更改。application.yml
或者bootstrap.yml
java@RunWith(SpringRunner.class)
@SpringBootTest
public class ClientTest {
}
application.yml
application-dev.yml
application-local.yml
或者
bootstrap.yml
bootstrap-dev.yml
bootstrap-local.yml
java//指定local文件的配置
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties = {"spring.profiles.active=local"})
public class ClientTest {
}
xml <dependency>
<groupId>org.java-websocket</groupId>
<artifactId>Java-WebSocket</artifactId>
<version>1.5.3</version> <!-- 使用最新版本 -->
</dependency>
目的是项目启动的时候自动去连接webSocket地址
javaimport com.lhw.WsRobClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
import java.net.URI;
import java.net.URISyntaxException;
@Configuration
public class WebSocketConfig {
@Value("${websocket.url}")
private String url;
@Bean
public WsRobClient wsClient() throws URISyntaxException {
WsRobClient client=new WsRobClient(new URI(url));
client.connect();
return client;
}
}
WebSocketServer的目的是为了实时推送数据到客户端,才使用webSocket的双全工的方式
spring简单实现有两种方式
在Spring框架中配置WebSocket服务器时,您可以选择使用WebSocketConfigurer接口或者通过@ServerEndpoint注解配合ServerEndpointExporter bean来配置WebSocket端点。这两种方式各有优缺点,适用于不同的场景。
优点:
缺点:
学习曲线: 需要熟悉Spring WebSocket的配置和使用方式。
优点:
缺点:
然而,如果您的项目比较简单,或者您更熟悉Java EE WebSocket API的标准实现方式,并且不需要与Spring框架进行深度集成,那么使用@ServerEndpoint注解和ServerEndpointExporter也是一种可行的选择。
springBoot项目需要引入spring的webSocket依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>
配置类
java
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter(){
return new ServerEndpointExporter();
}
}
前端获取不到header里面的文件名 后端代码
java
try (OutputStream outputStream = res.getOutputStream()) {
res.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode((String) fileList.get(0).get("fileName"), "utf-8"));
res.setHeader("Content-Type", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
// 将字节数组写入输出流
outputStream.write((byte[]) fileList.get(0).get("bytes"));
// 刷新输出流,确保所有数据都被发送出去
outputStream.flush();
} catch (IOException e) {
// 异常处理
throw new SystemException(500, "导出word文件失败!");
}
加上
java res.setHeader("Access-Control-Expose-Headers", "Content-Disposition");