1.CMU15445 (Spring 2023) Project #1 - Buffer Pool
2.Spring Boot框架下实现Excel服务端导入导出
3.SpringBoot从入门到精通(四)SpringBoot接口权限控制
4.SpringBoot从入门到精通(十七)SpringBoot Actuator
5.英语句型结构万能公式
CMU15445 (Spring 2023) Project #1 - Buffer Pool
-- 五四青年节hh 近期专注于算法学习,源码今日抽空完成 Project1 的公式第一部分,即 LRU-K 置换策略。源码虽然整体并不复杂,公式但在执行过程中仍遇到了一些挑战,源码颇感费解。公式冬瓜盟源码 -- 全部完成,源码但遇到一个难以解决的公式 bug,耗费了一整天的源码时间。导致最后一个测试无法通过,公式原因在于写回页面与 pincount 协调不当。源码因此,公式最后两部分的源码正确性无法保证。面试在即,公式为避免影响备考,源码暂且搁置后续工作,待有空闲时再进行调试。 -- 华为笔试通过、综合测评完成,希望结果能满意。dartfuture源码详解今日成功定位 bug。 -- 补充 task2 部分答案你可能需要知道的
论文无需阅读,LeetCode 提供相关练习。三个 TaskTask #1 - LRU-K 替换策略
关键在于理解题意与临界情况的应对。LRU-K 用于记录、更新与删除页面,其历史链表长度代表页面出现次数。当历史链表长度小于等于 K 时,表示最多记录最后 K 次出现。若超过 K 次,则删除链表头部,并将新时间戳加入尾部。历史链表应由小到大排列时间戳。 K-Distance 计算方法:若页面出现次数小于 K,则 K-Distance 无穷大;若出现次数大于等于 K,则 K-Distance 对应历史链表头部的时间戳。 相比 LRU,LRU-K 能更有效地抵抗数据洪流,通过统计出现次数,thinkp编辑源码避免低效。 驱逐策略:优先驱逐 K-Distance 无穷大的页面;若无,考虑 K-Distance 有限的页面,驱逐 K-Distance 最小者。若多个页面 K-Distance 均为无穷大,采用 FIFO(先进先出)策略进行驱逐。 官方文档建议:多个 K-Distance 无穷大的页面,采用 FIFO 进行驱逐,但在代码实现中使用 LRU。实际测试表明,应用 FIFO 进行驱逐更合适。性能与实现
预期插入、删除等操作快速,但 LRU-K 的复杂度不如 LRU。网上做法使用两个链表维护页面,时间复杂度为 [公式]。我的实现使用链表与红黑树,实现 [公式] 的插入与删除。对 set 的旅游界面源码更新,最初尝试通过取地址更新,但发现 set 的排序不随更新变化,更正为删除后更新与插入。 小根堆时间复杂度为 [公式],但遍历次数大于等于 K 的页面不适用于小根堆。 实现细节:课程未公开代码,提供数据结构帮助理解。推荐使用 std::list 而非 std::list。使用 frame_id_t 时避免使用红黑树,以免涉及权限问题。使用 std::scoped_lock 或 std::lock_guard 保证线程安全。Task #2 - 缓存管理器
缓存管理器实质为数据库内存部分,其结构与实现相对简单。注意 pages_ 维护页面,使用 frame_id 作为索引。理解 pin_count 表示页面使用者数量,为 0 时可驱逐页面。is_dirty 标记页面是否已修改,需要考虑何时更新。influxdb 源码开发在 unpinpage 时,不修改脏位状态。确保完成 pin_count、is_dirty 的更新与页面写入至 replacer_。Task #3 - 页管理器
实现 RAII 管理页面,代码量不多,但存在潜在错误。确保移动赋值时处理自赋值与旧值处理、移动后对象完全失效、drop 后析构函数无作用等问题。 总结:虽然遇到了 bug,但 LRU-K 算法的高效性能使得排名较高,/。后续有机会将进一步优化。Spring Boot框架下实现Excel服务端导入导出
Spring Boot框架下实现Excel服务端导入导出,旨在简化新Spring应用的初始搭建与开发过程。通过特定配置,开发人员能省略样板化的配置工作。本文将指导读者在Spring Boot框架中集成SpreadJS,实现Excel服务端的导入与导出功能。
SpreadJS,一款纯前端控件,不受任何框架限制,可与各种框架自由集成,提供类似Excel的电子表格功能,包括公式计算、图表、在线导入导出和数据透视表等。借助SpreadJS,应用程序具备“在线Excel”的能力。
在IDEA中搭建SpringBoot项目,首先安装Spring Initializr插件。创建项目时选择合适的Java SDK和Group Id、Artifact Id,设置版本、项目类型、语言、打包方式以及项目名称。配置完成后,项目结构清晰,便于后续操作。
前端配置,选择SpreadJS组件。在index.html文件中引入相关CSS与JS引用,并创建SpreadJS的DOM对象。在JS中初始化SpreadJS和ExcelIO对象,通过按钮点击触发服务端的导入与导出操作。导入时,将服务端文件以文件流形式传输至前端,通过ExcelIO将结果呈现至SpreadJS中。导出时,将内容导出成Excel的blob流,并保存至服务器端。
后端配置,创建控制器和相关逻辑,处理服务端导入与导出方法。导入时接收文件路径和response对象,将流写入response的outputStream中。导出时接收文件名称和blob文件流,通过transferTo方法在指定目录下保存文件。
测试运行,启动项目,访问主页面。点击导入按钮,从服务器端下载指定的Excel文件并打开,进行操作修改后点击导出按钮。检查服务器端的导出路径,发现文件存在,用Excel打开后发现修改内容无误。至此,Spring Boot框架下实现Excel服务端导入导出完成。
拓展阅读:探索React、Spring Boot、Quartz结合实现Excel报表自动化、电子表格购物车实现、纯前端类Excel表格控件SpreadJS构建企业现金流量表等应用案例。
SpringBoot从入门到精通(四)SpringBoot接口权限控制
欢迎大家点点关注,可以最先收到定期更新的 SpringBoot 以及 Java 编程相关知识文章。
这几天突然有个想法,帮助那些刚毕业的大学生以及新入门的朋友来学习SpringBoot,写一系列的SpringBoot,今天先写第四篇,SpringBoot接口权限控制,分别是 SpringBoot2.X 和 SpringBoot3.X 的不同版本的配置。
一、pom文件增加引用
(一)SpringBoot2.X版本的 SpringSecurity 配置
在pom.xml文件中的之间增加以下内容,引入SpringBoot的security来控制接口访问权限
保存后弹出,点击Import Changes引入新的jar包内容
在 resources 目录中 application.yaml文件
(二)SpringBoot 3.X版本的 SpringSecurity 配置
由于这次是独立建立的 module ,与原有项目不依赖,因此直接配置独立的 pom.xml
保存后弹出,点击Import Changes引入新的jar包内容
在 resources 目录增加application.yaml文件
二、增加SpringSecurity配置类
(一)SpringBoot2.X版本的 SpringSecurity 代码配置
新增WebSecurityConfig.java类,配置basicauth账号密码aaa/bbb,/helloWorld接口不需要权限即可访问,/helloWorld1接口需要通过basicauth权限验证
(二)SpringBoot 3.X版本的 SpringSecurity 代码配置
新增SecurityConfig.java类,配置basicauth账号密码aaa/bbb,/helloWorld接口不需要权限即可访问,其他接口均需要通过basicauth权限验证
增加DemoController.java测试类,其中可以通过注解@PreAuthorize("hasAuthority('ADMIN')") 来配置权限验证,和WebSecurityConfig.java的配置效果相同,可以只配置一种方式即可,不配置的也就是不验证权限或者以WebSecurityConfig.java的配置为准的意思。
三、通过postman测试接口权限
(一)SpringBoot2.X版本的 SpringSecurity 测试
重启服务完毕后,通过postman调用接口ing. 4) We have lived in the city for ten years. 2.英语万能句子结构
Subject (主语) + Link. V(系动词) + Predicate(表语)这种句型主要用来表示主语的特点、身份等。
2024-11-30 11:56
2024-11-30 11:45
2024-11-30 11:37
2024-11-30 11:35
2024-11-30 11:13
2024-11-30 10:16