- 博客(49)
- 问答 (2)
- 收藏
- 关注
原创 编译原理之词法分析-语法分析-中间代码生成
编译原理之词法分析-语法分析-中间代码生成,采用解释器模式来模拟编译的关键步骤:词法分析、语法分析、中间代码生成
2024-03-10 18:44:47 924
原创 Java小型操作系统模拟(采用策略模式结合反射进行搭建,支持一些简单的命令)
主要是为了学习Java反射的知识,以及对操作系统的一些概念进行回顾,搭建了一个小型的操作系统,包括基本的一些命令,如:clear、help、cd、mkdir、ls等;经过测试发现,上面两个系统在初始化加载类时有一些小问题,因为在实际使用时都是执行class文件,而在IDEA里面的执行是以Java文件为路径的,需要进行一些简单的小修改,当前这个阶段主要以IDEA里面的运行为主,后面再对路径和初始化逻辑进行一些调整,来保证兼容性。同样加载指定目录下携带注解的策略子类,或者加载目录及其子目录的所有符合条件的类。
2023-07-30 20:19:28 528
原创 Spring boot+vue模拟RBAC权限管理
RBAC(Role-based access control)模型,基于角色的访问权限控制,将权限赋予角色,同时针对角色进行用户权限的分配,是一种较容易实现和理解的权限管理模型它包含0、1、2、3一共四种模型,最简单和容易理解的即是本文章要介绍的0级模型,由五张表组成基本的结构:用户表、角色表、菜单表、用户角色表、角色菜单表(权限表)实际上要形成较为细粒度和合理的权限管理,需要设计的内容还有很多,本文只采用简单的拦截器来模拟权限管理的效果。
2023-07-15 12:48:17 326 1
原创 基于canvas的绘图小工具
支持选择颜色和形状,包括矩形、圆形、三角形的边框和填充形式,还可以拖拽和撤销等。待完成,目前只是1.0版本,也稍微复习了一下JavaScript面向对象的使用。
2023-04-02 18:05:46 73
原创 Vue的插槽的使用
这个插槽的使用情况是数据不由使用者传入,而是在组件中被写好了,然后使用者需要拿到这个数据;可以想象这样一个场景,在表格中你需要显示一些额外内容,然后这个额外内容和每行的数据有关,此时你如何简单的拿到每行的数据呢,这个作用域插槽可以比较好的帮助你。数据放好了,通过 :row=“item” 传给调用者,调用者通过 scope.row 即可获取到对象属性值。形成组件,供别人使用,但是数据结构之类的内容不固定,可以动态传入。这里需要采用 v-slot,在Vue3中,slot被弃用了。复习一下组件间传值的使用。
2023-04-01 20:00:10 30
原创 图形化二叉树(只能用VS运行)及构造字符串的哈夫曼树并图形化展示
(1)得到各字符出现的频率。(2)将出现的频率转化为列表并排序,每次选取最小的权值组成一颗新的二叉树,将新的二叉树加入到列表中,将原来的两颗二叉树删除;重复这个过程,直到只剩下最后一棵二叉树,即为根节点。测试效果(还可以再进行调整,修改为采用类来写更合适一些,且可以考虑添加上宽度和高度设置)(3)输出二叉树的路径,按照左边为0,右边为1,直到叶子节点才表示一个编码。采用EasyX绘图,采用扩展二叉树的前序序列还原二叉树。
2023-03-29 13:27:19 116
原创 中序和前序或后序序列还原二叉树
已知:可以通过中序遍历与前序遍历或中序遍历与后序遍历还原一颗二叉树;但并未研究为何前序与后序不能还原,且还原出来的情况会有许多种。
2023-03-27 19:14:49 123
原创 马踏棋盘--骑士周游问题的解决
采用的是递归及回溯;实际这是深度优先搜索(DFS)的应用场景,这里可以通过贪心算法优化一部分答案生成的效率;但如果要生成所有的答案时,还是需要很多时间的。
2023-03-24 22:47:49 62
原创 C++利用栈求解中缀表达式的值
相较于小括号的版本遇到的主要的问题是负号的判断,其余的都只是简单的添加一些语句与修改数据类型和调用函数而已(实际有点难考虑,我设计为负号需要在小括号内使用,且紧靠左边,例如(-3*5) => -15 )在只有 +、-、*、/ 运算,这个运算规则是很容易理解的。首先是最基础的只有 +、-、*、/ 功能的版本(实际再加 % ^ 运算都是一样的),并没有添加 (、) 进行运算限制。这次会在遇到左括号时进行入栈,然后在遇到右括号时进行左括号的出栈,达到先算括号里面的功能。
2023-03-24 22:46:01 62
原创 八皇后问题的递归解决
采用递归及回溯实现;理解在 check 函数的递归调用处有难度;学习来自 哔哩哔哩Java数据结构 韩顺平老师的讲解;这里的回溯实际体现在循环里面。
2023-03-24 22:45:53 24
原创 学生管理系统(各语言版:C、C++、Java、C#、python、JavaScript、TypeScript、Scala、Go、Kotlin)
学生管理系统(各语言版:C、C++、Java、C#、python、JavaScript、TypeScript、Scala、Go、Kotlin)
2023-02-01 18:49:25 181
原创 Springboot的文件上传与下载
通过 public void addResourceHandlers(ResourceHandlerRegistry registry) 实现路径映射。WebConfig.java (分系统来配置了路径映射,以及对请求的IP,及请求类型进行了限定)文件上传实现了,文件下载是非常简单的,只需要通过浏览器即可下载成功;采用Vue编写,结合Element-ui-plus的上传组件实现。server.js ,其余静态文件放在static文件夹下即可。PathConfig.java (配置常量类)
2022-11-24 13:11:36 37
原创 Java网络编程
客户端,则对上传的文件名进行校验,及按顺序读出下载结果及下载的文件的字节数组。构造器进行数据报的指定发送。FileUtils.java (设置了方法传递的最大字节数组大小为64KB,这是Java底层设计的,这里进行了限制,防止出现数据错误;客户端向服务器端发送数据,并接收来自服务器端的数据,服务器端接收来自客户端的数据并向客户端发送一次数据。服务器端(设置好文件名的字节大小,在客户端进行了检验,当文件名过长,会提示不支持)在服务器端进行了文件名,下载结果,默认图片,默认文件夹的设置,方便统一。
2022-11-13 20:29:31 41
原创 Java反射篇
以int 类型返回修饰符,默认是0,public是1,private是2,protected是4,static是8,final是16;分别是 代码阶段的forName、class类阶段的 类.class 、 运行阶段的 对象.getClass、以及类加载阶段通过类加载器获得。不管是基本数据类型,还是抽象数据类型,枚举或者接口,注解或是void,都有 class 对象。加载阶段的工作:将类的 class 文件读入内存,并创建Class对象,此过程由类加载器完成。类的加载分 三个阶段:加载、连接、初始化;
2022-11-13 20:29:16 28
原创 Java坦克大战设计
paint 函数调用的的时机为 初始化、最大最小化、窗口大小发生变化,以及 repaint 方法被调用。让 MyPanel 实现 KeyListener 接口,并且在 JFrame 里面添加监听。顺带把枚举类型的使用进行了简单介绍,也可以采用 jdk自带的 KeyEvent 类。还可以设置画笔的颜色、字体,以及绘制图片。继承 JPanel 类。
2022-11-13 20:29:11 29
空空如也
jsp在SpringMVC框架中手动设置域对象失效的场景
2024-02-23
关于Vue组件属性被共用情况的解决办法
2024-02-05
vue的在线编辑器综测导航部分的CSShover效果宽度不满意,希望撑满
2023-07-20
设计实现基于树表的堆排序算法
2023-04-25
关于论坛系统的防止XSS攻击的问题
2023-04-19
关于C语言写入结构体时无法写入map的问题
2023-04-06
CSS动画的重复播放及保持原效果
2023-03-27
C#局域网通信--如何打开端口让另一台电脑能够加入并访问该端口呢
2021-12-18
python如何每次读两个汉字,读取字符,为了实验,无法读取两个字符(自然语言处理)
2021-10-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人