学习bigfile的记录

本文详细介绍了Oracle Big File Tablespace的概念、特点及创建、配置和调整的方法,包括如何建立Big File表空间、数据库默认Datafile类型的设置、通过altertablespace语句直接更改Big File表空间属性等关键步骤。

学习bigfile的记录,参考文档:

http://www.oracle-base.com/articles/10g/ImprovedVLDBSupport10g.php


bigfile表空间是针对大型数据库存储时db_files和maxdiatafiles数量不够用时使用的,一个数据库最多有64000个datafile,bigfile tablespace相对small tablespace有以下特点:

1.一个bigfile表空间只能有一个datafile
2.bigfile表空间的大小可以达不到4G个block,即8K的block一个bigfile可以达到32T,32K的block可达到128T大小。
3.bigfile的大小要受到OS的限制,所以建议放在ASM或支持striping或RAID的逻辑卷管理设备上。
4.可以直接用alter tablespace语句来修改bigfile的属性。
5.bigfile tablespace必须使用本地管理的ASSM。

由于我没有测试bigfile的环境,所以就直接用文档上的例子。

1.建立bigfile表空间

-- Valid statement.
CREATE BIGFILE TABLESPACE mybigtbs
DATAFILE '/u01/oracle/MYSID/mybigtbs01.dbf' SIZE 100G;

-- Valid statement.
CREATE BIGFILE TABLESPACE mybigtbs
DATAFILE '/u01/oracle/MYSID/mybigtbs01.dbf' SIZE 100G
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;

-- invalid statement.
CREATE BIGFILE TABLESPACE mybigtbs
DATAFILE '/u01/oracle/MYSID/mybigtbs01.dbf' SIZE 100G
EXTENT MANAGEMENT DICTIONARY
SEGMENT SPACE MANAGEMENT MANUAL;

2.数据库默认的datafile类型

ALTER DATABASE SET DEFAULT BIGFILE TABLESPACE;
ALTER DATABASE SET DEFAULT SMALLFILE TABLESPACE;

create tablespace语句会覆盖掉database的设定,可以通过dba_tablespace,user_tablespace,V$tablespace的bigfile

栏位是YES/NO来确定表空间的类型。

3.可以用alter tablespace来直接更改bigfile的属性,不用指定datafile子句

ALTER TABLESPACE mybigtbs RESIZE 100G;
ALTER TABLESPACE mybigtbs AUTOEXTEND ON NEXT 10G;

<think>嗯,用户这次的问题聚焦在后端开发需要掌握哪些具体技术,特别是会话管理、监听器、过滤器等核心组件。从用户引用的资料来看,ta应该正在系统学习JavaWeb开发,需要明确技术栈的优先级。 用户提到的Cookie/Session部分,引用[1]已经解释得很清楚:Cookie本质是服务端设置在客户端的“身份证”,通过Set-Cookie响应头实现。这里需要强调安全性——敏感数据绝不能存Cookie,比如用户余额或权限令牌。而引用[2]补充的Cookie修改方案很有意思,其实方案二(先查找再setValue)更符合工程实践,因为直接覆盖同名Cookie可能遇到路径不一致的问题。 监听器和过滤器(Listener & Filter)这块用户没直接引用资料,但它们是JavaWeb的“守门人”。比如用Filter实现全局编码转换: ```java public class EncodingFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { req.setCharacterEncoding("UTF-8"); // 解决中文乱码 chain.doFilter(req, res); } } ``` 这种基础能力属于后端必备技能,就像建筑的地基。 AJAX和JSON的引用虽然没出现,但必须重点说明。现代前后端分离架构中,后端开发者75%的工作都在设计JSON接口。比如Spring Boot里用@RestController返回JSON时,日期格式序列化这种细节都会影响前端体验。 ThreadLocal的线程隔离特性在Web开发中尤为关键。用户可能不知道,像Spring的事务管理就用ThreadLocal保存数据库连接,保证同一个线程内用同一个Connection。但要注意线程池场景下的内存泄漏风险。 文件上传下载(引用[4])提到按日期分目录存储,这很实用。不过还要补充断点续传的实现思路:通过HTTP的Range头实现分片传输,比如: ``` GET /bigfile.zip Range: bytes=1024-2047 ``` 最后关于用户隐含的“学习优先级”问题,可以这样排序:会话管理 > 过滤器 > JSON处理 > 文件操作 > 监听器 > ThreadLocal > AJAX原理。毕竟后端对AJAX只需理解交互机制,不必深究前端实现。</think>是的,后端开发**必须掌握**会话管理技术(Cookie/Session)、监听器、过滤器、JSON处理、AJAX原理、ThreadLocal及文件上传下载等核心知识。以下是具体分析: --- ### 一、必需掌握的核心技术 1. **Cookie & Session 会话管理** - **Cookie**:服务端创建并存储于客户端,用于身份跟踪(如登录状态)[^1] ```java // Java 创建Cookie Cookie cookie = new Cookie("user", "user123"); response.addCookie(cookie); // 通过响应头Set-Cookie发送到浏览器 ``` - **Session**:服务端存储用户会话数据(如购物车信息),依赖SessionID(通常存于Cookie) ```java // 存储Session request.getSession().setAttribute("cart", cartItems); // 读取Session List<Item> items = (List<Item>) request.getSession().getAttribute("cart"); ``` > **关键区别**:Cookie存客户端(易篡改),Session存服务端(更安全但消耗内存)[^1] 2. **过滤器(Filter) & 监听器(Listener)** | **组件** | 作用场景 | 示例 | |----------|--------------------------|-------------------------------| | 过滤器 | 请求预处理/响应后处理 | 权限验证、日志记录、编码转换 | | 监听器 | 监听Web应用生命周期事件 | Session创建销毁、请求初始化 | ```java // 过滤器示例:全局字符编码设置 public class EncodingFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { req.setCharacterEncoding("UTF-8"); chain.doFilter(req, res); // 传递给下一个过滤器 } } ``` 3. **JSON处理** - 前后端数据交换的标准格式(如RESTful API) - 后端需掌握序列化(对象→JSON)和反序列化(JSON→对象) ```java // Spring Boot中自动转换 @RestController public class UserController { @GetMapping("/user") public User getUser() { return new User("张三", 25); // 自动转为{"name":"张三","age":25} } } ``` 4. **AJAX原理** - 理解HTTP请求/响应机制(虽不需写前端代码,但需设计API支持AJAX调用) - 关键知识:RESTful设计、状态码(200/401/500)、CORS跨域处理[^3] 5. **ThreadLocal** - 解决多线程并发问题,为每个线程提供独立变量副本 - 典型应用: - 在同一个线程内共享数据库连接(避免传递Connection对象) - 用户权限信息传递(如Spring Security的SecurityContextHolder) ```java public class UserContext { private static ThreadLocal<User> currentUser = new ThreadLocal<>(); public static void setUser(User user) { currentUser.set(user); } public static User getUser() { return currentUser.get(); } } ``` 6. **文件上传下载** - **上传**:处理multipart/form-data请求,存储文件到指定路径(按日期分目录[^4]) ```java // Spring Boot接收文件 @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile file) { String dateDir = new SimpleDateFormat("yyyyMMdd").format(new Date()); Path path = Paths.get("/uploads/" + dateDir + "/" + file.getOriginalFilename()); Files.write(path, file.getBytes()); } ``` - **下载**:设置响应头`Content-Disposition: attachment`,流式传输文件数据 --- ### 二、为什么这些技术必需? | **技术** | 后端应用场景 | 不掌握的后果 | |----------------|----------------------------------|-------------------------------| | Cookie/Session | 用户认证、状态保持 | 无法实现登录功能/数据丢失 | | 过滤器 | 统一处理安全/日志/编码 | 代码冗余、维护困难 | | JSON | 前后端数据交互 | API无法被前端调用 | | 文件操作 | 用户头像上传/报表导出 | 关键业务功能缺失 | | ThreadLocal | 线程安全的数据传递 | 并发场景出现数据错乱 | > 引用[3]强调:**微服务架构下仍需会话管理**,但可能改用Token(JWT)替代Session[^3] --- ### 三、现代技术演进 1. **会话管理替代方案** - JWT(JSON Web Token)替代Session,更适合分布式系统 - Spring Session支持Redis集中存储Session 2. **文件存储优化** - 使用OSS(对象存储)替代本地磁盘,提升可靠性和扩展性 3. **过滤器升级** - Spring Cloud Gateway/Nginx实现网关级过滤(限流、鉴权)[^3] --- ### 四、学习建议 ```mermaid graph TD A[核心基础] --> B[Cookie/Session] A --> C[过滤器/监听器] A --> D[JSON处理] E[进阶技能] --> F[文件操作] E --> G[ThreadLocal] E --> H[AJAX原理] ``` > **优先级提示**:先掌握会话管理和过滤器(80%项目会用到),再学习文件操作等专项技能。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值