hhj

hhj

暂无个人简介
Golang后端
2025
南京工业职业技术大学

该用户非会员

会员专享项目教程/ 答疑等服务

我做了一个轻量级定时任务平台 ChronoFlow

vibecoding实战篇1--todo待办

后端服务线上部署

2025-05-09 Day 13 ✅ 今天做了: 完成云图库团队空间的空间成员权限校验 ⏰ 明天计划:完成团队空间模块 📚 学习到的知识点: Arrays.stream(ReflectUtil.getFields(object.getClass())) .map(field -> ReflectUtil.getFieldValue(object, field)) .allMatch(ObjectUtil::isEmpty) 其中 allMatch用于判断object对象的所有字段是否都为空

2025-05-07 Day 12 ✅ 今天做了: 在面试鸭上看了三道java后端场景面试题,分别是: 支付宝八折优惠事故 接口变慢了如何排查,导致接口变慢的原因 编写一段代码,使得这段代码必定会产生死锁,不能使用Thread.sleep() 实现了已知二叉搜索树的后序遍历,来还原二叉搜索树 ⏰ 明天计划:继续学习云图库 📚 今日感悟: 上班摸鱼的时间越来越少了

2025-05-06 Day 11 ✅ 今天做了: 完成了云图库的图片模块和空间模块 ⏰ 明天计划: 继续学习云图库后面的内容 📚 今日感悟: 虽然重新敲了一遍之前做的,但是还有很多地方需要看教程的文档,写的时候很晕。。

2025-05-04 Day 10 ✅ 今天做了: 改了一天的论文格式 ⏰ 明天计划: 完成云图库的图片管理和空间管理

30号的忘记写了,五一又玩了三天,补一下 2025-04-30 Day 9 ✅ 今天做了: 1.上午 自己写一遍云图库,用于复习忘记的没有掌握的知识点和技巧。 首先,搭建后端环境 编写用户注册: 首先用户输入账号和密码,判断账号和密码是否符合要求,如果符合要求就存到数据库中 用户登录 用户注销 获取当前登录的用户信息 开发创建、删除用户接口 📚 学习的知识点: 1、后端初始化项目时,配置模版使用 https://start.aliyun.com/ 作为源 2、application.yml中常见的配置项: server里面的 port, content-path, spring 里面的 datasource中的 driver-class-name、url、username、password 3、在启动类上加上@MapperScan("com.hhj.yunpicturespacebackend.mapper") mapperScan 的作用:扫描mapper包,为了让 Spring Boot 能够自动发现并注册这些 Mapper 接口,MyBatis会自动实现这些Mapper接口,从而让 MyBatis 能够正常操作数据库。 如果不加mapperScan,那就需要在 每一个 Mapper 接口 上单独加 @Mapper 注解 4、当枚举类的枚举值过多时,可以创建一个map来存储所有枚举值,可以加速查询 通过static{} 实现 5、对密码加密时,可以添加盐来混淆密码,这样更安全。DigestUtils中有MD5加密方法

2025-04-29 Day 8 ✅ 今天做了: 1、上午: 封装图片列表组件: 这个组件接受传入的图片列表,并展示 2.下午 完成了空间模块的前端开发, 由于之前的功能都是照着开发文档和视频敲的,有些功能还是不熟悉,打算自己重新做一遍,从0完成用户模块、图片模块、空间模块 ⏰ 明天计划:重写云图库 📚 学到的知识点: 1、梳理一下传参的方式 1)首先是路径传值 /addpicture?id=123,这种情况使用route.query?.id 来接受值 2)路由传值,在路由文件中定义path: '/picture/:id', props: true。 用props来接受id值。这种情况使用 const props = defineProps<{ id: string | number }>() 3)组件传值 在父组件中定义 <PictureList :dataList="dataList" :loading="loading" /> 在子组件中接收 //定义了父组件传递给当前组件的属性类型 interface Props { dataList: API.PictureVO[], loadint?: boolean } // withDefaults的第一个参数:defineProps 返回的对象,defineProps的类似是上面定义的Props // 第二个参数:一个包含默认值的对象 const props = withDefaults(defineProps<Props>(), { dataList: () => [], loading: false }) 2、为什么在script中要通过 props.title 和 props.description,来访问,在template中使用title就可以访问到了 - 在模板中直接访问 props: Vue 会自动将 props 绑定到模板的作用域中,所以你可以直接使用 title、description 等变量。 - 在 <script> 或 <script setup> 中访问 props: - 使用 <script setup> 时,defineProps 自动将 props 中的内容暴露给模板,因此你可以直接在模板中访问它们,而在 setup() 函数内部,你需要通过 props.title 来访问。 - 使用普通<script> 时,props 被挂载到组件实例上,所以需要通过 this.props 来访问。 3、e.stopPropagation(),用于阻止事件冒泡, 事件冒泡:当一个事件发生时,它首先会被触发的元素接收到,然后事件会“冒泡”到它的父元素、祖父元素,一直到最顶层的元素

2025-04-28 Day 7 ✅ 今天做了: 1.上午 由于昨天没有看空间模块的后端视频,直接跟着文档写的代码,上午决定看一遍视频,巩固一下。以后都是这样,先跟着文字教程走一边,再看视频。 2.下午 开发空间管理页面 开发创建空间页面 在页面添加左侧导航栏。用于显示我的空间 当点击我的空间时 判断用户是否已登录 若登录 判断该用户有没有创建空间 若创建 则跳转到空间详情页 若没有创建,则跳转到创建空间页面 若没登录 跳转到登录页面 固定顶部导航栏和左侧导航栏,使其滚动时固定不动 ⏰ 明天计划: 继续学习云图库 📚 学习到的知识点: 1、lambdaQuery方法是mp提供的快速构建sql语句的方法 2、@transactional 注解修饰在方法上时,会等该方法执行结束后才提交事务。 3、router.replace() 可以重定向页面,这样点击浏览器的后退按钮时,不会回到中间页。 4、router.afterEach可以监听路由变化,常用于高亮显示当前选中的菜单

下载 APP