- 博客(34)
- 收藏
- 关注
原创 设计模式——模板方法
1)模板方法模式(Template Method Pattem),又叫模板模式(Template Patern),在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。2)简单说,模板方法模式 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变。个算法的结构,就可以重定义该算法的某些特定步骤。3)这种类型的设计模式属于行为型模式。
2024-04-18 09:35:20 516
原创 设计模式——代理模式
首先创建一个接口,不仅教师类需要实现,代理类也需要实现,但是注意的是,代理类实现的时候,是使用的教师类的教书方法。因为是静态代理,所以就是教师代理类,要是换一个需要代理的类,就不能实现了。使用一个proxyFactory,传入一个Target目标对象,动态生成对应的目标代理对象。需要使用一个代理类来代理教师,将教师类聚合到代理类里面。例子:有一个教师类,教师类有一个教书方法。首先需要一个目标对象类的接口。目标对象类实现这个接口。
2024-04-17 12:04:01 733
原创 单例设计模式
所谓单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例。Runtime类就是一个典型的单例设计模式单例模式有8种实现方法3. 懒汉式(线程不安全)4. 懒汉式(同步方法,线程安全)5. 懒汉式(同步代码块,线程不安全)
2024-04-11 19:42:34 559
原创 0-1背包问题
递推公式:dp[i][j] = Math.max(dp[i-1][j],dp[i-1][j-weight[i]]+vaule[i])初始化:for(weight[0]–>bagsize) 赋值为value[0] (也就是先在背包中放一个物品0)dp[i][j]:背包最大承重为j的时候,从0-i个物品中任意选取物品能得到的最大价值。for(i=1 --> 物品个数)需要明确的是:i和j的含义。
2024-04-11 16:45:34 336
原创 力扣刷题-整数拆分343
优化:j的取值,可以从 j(1–>i-1) 优化到 (1–>1/2) ,因为相乘的两个数肯定要比较接近才会使得结果更大。
2024-04-07 09:44:26 291
原创 图中的边关系和节点关系之间的转换
在relation数组中记录的是从一个节点到一个节点,前面的就叫做from,后面的就叫做to,因此每次添加进节点关系的数组的时候,from就是数组索引,to就是需要加入的值。也就是graph.get(from).add(to)。因为需要对graph不停进行增加,所以数组采用List<List>。如果输出不指定int[][]还是List<List> ,后面这一段转换可以不要。
2024-03-22 09:44:38 275
原创 力扣刷题-砖墙题554
一个思想流程就是,使用哈希表统计所有右边缝出现的次数,然后统计这些右边缝哪个出现的多,需要注意的是,右边缝不能包含最右边的边缝,所以在循环内层列表的时候,不能计算最后一块砖的长度。这题一开始没有想到思路,一开始还想着用枚举法做/笑哭。后来看了题解,原来就是哈希表的题目呀。
2024-03-21 09:53:39 264
原创 力扣刷题——两两交换链表的节点:24题
然后cur指针后移,交换下两个节点,需要使得pre指向cur的前一个,因此使pre先指向cur。cur.next为空,说明后面只有一个节点了,一个节点就不需要交换了。循环的次数:cur且cur.next为空。cur为空,说明整个链表都已经两两交换了。
2024-01-11 13:31:01 348 1
原创 力扣刷题--设计链表707
先找到最后一个节点:也就是cur的遍历次数:for(int i = 0;i < size;i++)再进行插入。i < size;
2024-01-11 10:07:56 932
原创 力扣刷题--左叶子之和 404题
3、单层递归逻辑:对于一个节点,先处理得到左子树的所有左叶子节点之和,也就是递归调用在节点的左孩子(sumOfLeftLeaves(node.left)),再得到右子树的所有左叶子节点之和,也就是递归调用在节点的右孩子(sumOfLeftLeaves(root.right)),然后再处理自己,是否有左叶子节点可以相加,然后左叶子节点总和就是这3个数值相加。1、递归的参数和返回值:参数就是需要处理的节点,返回值就是计算得到的左叶子节点之和。2、递归的终止条件:当要处理的节点是空的话,就返回0。
2024-01-07 11:34:15 374 1
原创 力扣刷题--对称二叉树
1、递归函数的参数和返回值:参数:两个比较的节点返回值:布尔类型,是否是对称的2、递归终止条件:a、如果两个比较节点为空,则返回trueb、如果两个节点又一个为空,则返回false,c、如果两个节点的数值不相同,则返回false,d、剩下就是两个节点数值相同,数值相同就需要继续向下判断3、单层递归的逻辑:如果两个数值相同,则要分别进行比较内侧和外侧是否对称,返回内侧和外侧的与值// 比较二叉树外侧是否对称:传入的是左节点的左孩子,右节点的右孩子。
2024-01-06 20:37:17 317 1
原创 力扣刷题——删除链表的倒数第N个节点19题
首先自己的想法:由于链表不可以直接得到链表长度,因此需要先遍历一遍,得到链表长度,再通过长度减去n得到需要删除节点的位置:力扣是可以过的,但是这样需要遍历链表2遍,因此可以改进。
2024-01-05 21:11:08 354 1
原创 力扣刷题-翻转链表206题
因此解决方法:使pre.next先指向空,再让cur.next=pre,这样就不会出现链表中发现循环的错误了。按照双指针法编写代码,如下代码,结果运行的时候报错了。
2024-01-05 20:01:22 314 1
原创 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingExce
Springboot + Mybatis中进行条件查询时候报错EmpMapper中代码如下:Test中的代码然后报错如下:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘name’ not found. Available parameters are [arg3, arg2, arg1, arg0, param3,
2024-01-05 09:50:23 406 1
原创 二叉树的遍历-递归法和迭代法
而在中序中,访问了中节点,也只是把它压入栈,需要再访问它的左孩子,直到它的左孩子都处理完,都弹出了栈,加入result中,那么它才可以被弹出加入result中。刚刚的先序遍历最后的结果是中左右 如果改变左右节点的入栈顺序 就会变成 中右左 再反转这个结果 就是 左右中。后序遍历顺序:左 右 中 入栈顺序:中 左 右 出栈顺序:中-右-左。因此可以看出,中序遍历中,节点的访问和处理不是同时进行的。先序和后序都是访问中节点 就将它弹出加入result中了。遍历顺序:中 左 右 入栈顺序 中 右 左。
2024-01-04 14:26:19 308 1
原创 解决亚马逊评论数据集中商品元数据集下载不了的问题
亚马逊商品元数据集下载,2023上半年还可以通过链接直接下载,最近下载却发现404了,离谱!量子纠缠了好几天,终于给我下载下来啦!先进入https://nijianmo.github.io/amazon/index.html。在该页面找到你要下载的metadata包,点击即可下载啦~点击这个链接,跳转到如下页面,注意这里的网址和上面不一样。然后会跳转到如下页面,如下填写后,提交表单。找到需要下载的metadata包,点击它。
2024-01-01 22:43:28 491
原创 控制反转和依赖注入
为什么需要?假使修改了EmpServiceA实现类的名称,那么这个地方也就需要进行修改,因此这是高耦合的。同理,Service层调用Dao层也是高耦合的,为了实现低耦合,现在使用一个IOC容器,将Service层和Dao层的实现类放入容器管理,需要的时候取出。那么代码就改成了但是这样会出现空指针异常,因此还需要依赖注入。也就是在 private EmpService empService注入运行时,依赖的对象。
2024-01-01 13:02:48 339
原创 分层解耦--三层架构
上一个例子中的 接收请求、数据访问(也就是从emp.xml中获取员工信息)、数据的处理(也就是将gender=1的转换成男 将gender=2的转换成女) 这些操作全都写在了EmpController一个类中。这不符合高内聚低耦合的规则为了实现高内聚低耦合(三层架构)要将其中1、加载并解析xml文件写入Dao层将2、对数据进行转换处理写入Service层3、接收请求、响应数据留在Controller层。
2024-01-01 12:37:18 355
原创 springboot响应案例
打开postman软件输入路径http://localhost:8080/listEmp。controller包下面存放这操作程序,处理页面接收到的数据,并返回前端页面。运行SpringbootWebQuickstart1Application。pojo包下面存放实体类,比如员工类,用于将数据打包成一个员工类。utils包下面存放工具类,比如解析XML文件类。resources/static下面存放前端代码。resources下面存放的是项目需要的资源。在vue中的钩子函数中的路径是这个。
2023-12-31 10:53:27 817 1
原创 个人初次尝试SpringBoot踩的一些坑
由于Spring官网截至2023年11月只维护3.x.x版本,因此这个地方如果使用的还是start.spring.io,则下面的Java只能选择17或者21。这个时候,要么你的JDK就是17,要么你就需要修改为如图所示的start.aliyun.com,阿里云维护2.x.x版本,这时候你就可以发现下面的Java可以选择11啦~按理说,再启动SpringbootWebQuickstart01Application,程序就可以运行了,但是我们来看看结果。后来发现,自动生成这个文件夹,也需要删除。
2023-12-28 22:15:14 362 1
原创 ATM系统
Account类return userName + (sex == '男'?"先生" : "女士");return sex;ATM类(操作类)//ctrl + alt + t 自动调出循环 System . out . println("=====欢迎进入ATM系统====");System . out . println("1、用户登录");System . out . println("2、用户开户");
2023-11-04 20:31:54 37
原创 MapReduce实践编程-Kmeans(使用eclipse)
实验数据选取自美国zillow房地产评估2017年房产数据,选取其中的经纬度信息进行聚类操作,方便可视化。KMeans算法作为一种划分式的聚类算法,利用MapReduce进行实现的主要难点在于满足KMeans每次迭代划分过程的中间结果保存。2、Mapper中读取数据文件中的每条数据并与中心点进行距离计算,输出key为最近的中心点序号。(可以设置为2,运行时间短一点)4、判断停机条件,不满足则复制新的中心文件到原中心文件,重复2,3步骤。3、Reducer中进行归并,计算新的中心点,存入新的中心文件。
2023-10-31 14:15:39 317
原创 使用eclipse实现MapReduce实践编程---统计不同手机号的用户使用的总流量
根据用户手机上网的行为记录,基于 MapReduce编程模型设计程序统计不同手机号的用户使用的总流量。
2023-10-30 10:36:10 751 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人