- 博客(33)
- 收藏
- 关注
原创 配置idea环境进行scala编程
点击左下角的设置,更改maven本地仓库的位置(默认在c盘用户目录下的.m2文件中,更改之后后面下载的文件都会在我们创建的仓库里)安装scala插件,点击左上角的file再点击settings,选择plugins,搜索scala。不加breakable抛出了一个异常,说明我们的breakable是用来捕获这个异常的。在d盘新建一个本地仓库用来存放下载的maven包,在里面创建如下两个文件。创建一个新项目,选择maven项目,不选择Scala项目。选择版本,与自己的配置对应。循环语句1 to 10,
2024-11-30 20:35:10
502
1
原创 springboot的简单应用
Controller类,由于项目是前后端分离开发的,所以我们需要解决跨域问题,否则游览器会拦截请求,这里简单的将本机的所有请求全部放行。我开始想到的是sql语句里面的连接,但三个连接查询出来的结果全都有问题,后面想到了上课学的association,但是assocaition适应于一对一的关系,这里明显是一对多的关系(一个菜品对应一个店铺,一个店铺对应多个菜品,数据比较极端),所以查资料找到了collection来处理这种一对多的关系。封装返回结果使用了大量的泛型的思想。勾选web和mabais框架。
2024-07-18 10:04:52
931
1
原创 Mybatis插入操作 主键自增 返回成功 但是数据库没有数据
MyBatis中的事务是指一系列数据库操作,这些操作要么全部执行成功,要么全部执行失败。因为采用的是声明式事务管理(在mybatis-config.xml文件里面配置的),使用的是jdbc的事务管理器,将事务提交给mybatis处理。源码如下,可以看到最后那个值默认是false,这个值决定是否自动提交事务,false就意味着不会自动提交,需要我们手动提交。ps:数据库的查询不需要提交事务,因为它不涉及数据的修改,也就不会影响事务的一致性原则,所以事务执行完毕后,我们手动设置一个事务提交即可。
2024-06-26 10:23:06
691
原创 MapReduce程序设计2
1、数据集stock-daily,包含A股近4000只股票的今年以来的日数据;数据集stock-daily-30d仅包含最近30个交易日数据,根据自己计算机性能选择。2、数据集stock-concept,包含A股近4000只股票所有的股票代码、名称和概念。数据来源:万德金融终端。
2024-06-23 16:19:29
797
原创 Type mismatch in key from map: expected org.apache.hadoop.io.Text, received org.apache.hadoop.io.Lon
这个报错是说Reduce要求输入的键是Text类型(由reduce方法参数指定),但是接收到的却是LongWritable类型。没有发现问题,再到创建job的run方法里面去看,也没找到问题。上网搜,可以在run方法里面主动设置输出的键和值的类型,上传到hadoop集群启动,还是报相同的错误,再检查代码发现原因是没有设置mapper类,设置了两次jar包的主类。说明作业提交之后,由于没有map类,切分后的数据直接交给reduce来处理,导致报了这个错。重新设置 一下即可。
2024-06-22 10:50:41
225
2
原创 Hadoop简单应用程序实例
Hadoop是一个分布式系统基础架构,主要用于大数据的存储和处理。它允许使用简单的编程模型跨集群处理和生成大数据集。Hadoop主要由HDFS(Hadoop Distributed FileSystem,分布式文件系统)和MapReduce编程模型两部分组成。
2024-06-20 08:41:52
1583
原创 Hadopp应用
Python必须要修改C:\Windows\System32\drivers\etc\hosts文件(要管理员权限才能修改),添加节点的ip和名称。1. 在IntelliJ IDEA或Eclipse环境中创建一个Maven项目,并使用HDFS的Java API操作HDFS。(2) 编辑pom.xml文件,引用必要的Hadoop和HDFS组件,注意Hadoop中的JDK版本与Windows中的版本保持一致。(3) 使用Java API编写代码并调试,将Windows中的一个文件上传至HDFS指定目录。
2024-06-16 22:09:26
419
原创 hadoop服务器启动后无法执行hdfs dfs命令
再使用vi编辑器查看(也可以用less或者more命令查看),往上翻到第一个java的报错,发现是img文件坏掉了导致namenode启动不了。然后删除掉hadoop文件下面的tmp文件和dfs文件(子目录也要删干净)。然后重新建dfs和tmp文件,dfs文件下有两个子目录。使用jps查看进程,发现namenode没有启动,然后再进入到Hadoop的相应目录,打开里面的logs文件。可能的原因:namenode死掉的原因可能是关虚拟机时没有stop-all.sh,而是直接把虚拟机关了,导致img出了问题。
2024-06-16 19:24:55
962
1
原创 Servlet和JDBC实现三层架构
1、降低了系统的性能。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码3、增加了代码量,增加了工作量4、降低耦合度,使各层开发人员能够只专注自己那一层使用tomcat服务器时,有时候idea不会报错,但是tomcat页面会报错,要注意查看tomcat的信息。
2024-06-14 21:59:15
1064
原创 Hadoop环境配置(一主二从)
使用远程连接工具(这里用的Putty)连接主机,ip地址就是虚拟机的IP地址,端口号为22,即提供ssh服务的端口号。删除node1和2的Hadooptools,从master上面重新复制(看最前面的主机名是哪个节点的操作)在hadoop目录下创建相应存放文件数据存放的文件夹,tmp、dfs、dfs/data、dfs/name。修改节点的ip地址,将IPPADDR修改为前面设置的(这里设置的是192.168.98.139)修改workers,删掉默认的localhost,换成自己的节点。
2024-05-25 17:02:25
1385
原创 servlet验证
xsi:schemaLocation: 指定与XML文档关联的XML Schema的位置。Servlet容器接受请求后通过反射找到对应的servlet并将request的内容交给它,之后再由其生成响应内容交给servlet容器返回给游览器。xmlns:xsi: 定义一个XML Schema实例(XSI)的命名空间前缀。Tomcat10使用的servlet的jar包是jakarta,要在pom.xml里面配置依赖,不然会游览器报500的错。xmlns:XML文档的默认命名空间。错误的账号和密码,请求重定向。
2024-05-24 12:33:27
472
1
原创 RHEL安装和管理软件
软件包应该下载这个Apache_OpenOffice_4.1.14_Linux_x86-64_install-rpm_zh-CN.tar.gz,这里下载错了。配置镜像地址,可以粘贴复制网上的地址。如果网络连接不成功,会出现未知错误的报错,此时检查网络并开启有线网络即可。使用wget安装该软件,需要加上--no-check-certificate。在官网上下载后复制粘贴到虚拟机即可,然后解压。然后make报错,需要安装相应插件。出现报错就用yum安装对应的插件。网站上找对应的最新版本下载。
2024-04-28 21:10:40
240
原创 RHEL本地存储管理:逻辑卷管理
错误原因:把分区挂载到目录上,而不是挂载到挂载点上,且user根本不是该目录下的文件,而是创建在主目录下的文件。使用lvextend 使更改生效,可以看到原来是17g,现在变为18.8g,说明扩展成功。报错原因,没有指定要操作的目标文件,通过.指定目标文件为当前文件。Rhel是扩展文件,后面是需要添加的文件,必须是分区才行。新建硬盘名为sdb,原来的第二块硬盘自动更名为sdc。文件修改了,但是可能没有及时上传,采用该命令更新。删除了其中一个文件,从36变成了35。多了一个文件,说明恢复成功。
2024-04-22 17:17:38
402
原创 RHEL运行系统配置及管理
第一个数字代表分钟,第二个是小时数,第三个代表日,第四个是月,第五个是星期几。使用ps命令查看进程信息,占用cpu最多的是图形化界面,kill后系统立即关掉。at命令设置时间是月份在前,日期在后,与crontab不同。-t: 终端号 显示终端进程上的进程信息。-g: 根据用户组ID排列显示进程信息。-U:根据进程所属用户名终止相应进程。-t:根据进程所在终端终止相应进程。-a: 显示当前终端下所有进程信息。-e: 显示系统中所有进程信息。-l: 以长格式显示进程的信息。-t:根据进程所在终端进行查找。
2024-04-22 17:09:41
387
原创 Linux文件系统管理
少打了一个字母,命令出错,nano也可以对文件进行编辑,但是nano相对于vim来说功能较少,且没有定制选项。直接使用swapon权限不够,使用chmod命令修改文件权限再swapon。badblocks:检测磁盘上的坏块。chown:修改文件或目录的所有者。chgrp:修改文件或目录的所属组。umask:设置文件的默认权限掩码。du:显示目录或文件占用的磁盘空间。chmod:修改文件或目录权限。df:显示文件系统的可用空间。fsck:检查和修复文件系统。fdisk:磁盘分区工具。mkfs:创建文件系统。
2024-04-22 16:40:27
407
原创 RHEL用户和组管理
创建/test目录,在此目录中任何用户都可以创建文件或目录,但只有用户自身和root用户可以删除用户所创建的文件或目录。权限分为读(r)、写(w)和执行(x)权限,分别表示对文件的读取、写入和执行操作。在Linux系统中,每个用户都有一个唯一的用户名,用于标识其在系统上的身份。每个用户都有一个关联的用户ID(UID),这是一个唯一的数字标识符。每个组都有一个关联的组ID(GID),这是一个唯一的数字标识符。每个文件和目录都有所有者、所属组和其他用户的权限。每个组都有一个唯一的组名,用于标识组。
2024-04-22 16:31:28
892
原创 RHEL常用 Linux命令操作
(17)删除文件 profile,用长格形式显示文件 lnsprofile 和 lnhprofile 的详细信息,比较文件 lnhprofile 的链接数的变化。(13)用 less 命令分屏查看文件 profile 的内容,注意练习 less 命令的各个子命令,如 b、p、q 等,并对then关键字查找。(12)用ls -l命令以长格形式列出当前目录下的所有文件,注意比较每个文件的长度和创建时间的不同。(20)删除文件lnsprofile,显示当前目录下的文件列表,回到上层目录。
2024-04-22 16:22:35
759
原创 Prim 算法与 Dijkstra 算法
prim算法是找到一种方案,使得所有的节点都能到达,这些所有路径加起来总和最短。让每一个节点将能到达的节点路径长度与假定的能达到该节点的最短路径比较,找到到每个节点的最短路径。dijkstra 算法是找到到当前节点最短的路径,通过对该路径上前置节点的最短路径的确定,逐步确定每一个节点的最短路径。
2023-06-05 17:28:06
136
原创 图的邻接矩阵的广度优先遍历和深度优先遍历
图的深度优先遍历和广度优先遍历也是采用栈和队列来实现的。深度优先是从当前节点出发,一个一个的寻找与当前节点相连的节点,等该条路径都走完,没有路相连节点了再返回上层指令,一层一层执行返回。广度优先遍历则是通过队列将与当前节点相连节点加入队列,再根据队列访问规则挨个访问。
2023-06-05 16:57:08
211
原创 哈夫曼树的应用
在创建文本文件时出现了一个小问题,即文本文件在创建时就已经有了后缀名,不需要再加一个后缀名。而我忽视了这一点,导致文件一直打不开。文本: The last leg of a journey marks the halfway point.
2023-05-16 13:16:10
107
原创 二叉树创建和遍历
二叉树是最简单的一种树,一个父节点最多只有两个子节点。二叉树的创建在这里使用的是层序遍历,即利用广度优先搜索的思想和队列的结构对每一层进行构建。先将根节点加入队列,对根节点的左右子树进行检索,若存在就加入队列,若不存在就为空指针。再重复这个流程,直到队列里所有元素都访问完。二叉树的遍历在这里使用的是前序,中序,后序三种遍历方式。前序遍历就是先打印根节点,再访问左子树并打印,访问到没有左子树的节点时判断是否有右子树,若无,返回上层指令判断有无右子树,若有则重复访问左子树的类似过程。
2023-05-03 23:49:07
108
原创 队列的链式储存结构
队列是一种先进先出的数据结构。在实现队列时,我们需要用到两个指针,即队列的头指针和尾指针。当进行插入操作时,直接将其插入到尾指针的后面,使其成为新的尾指针。在进行删除操作时,将头指针后面的节点删除即可。空队列的判断条件应为头尾指针是否相等。队列常用于多任务调度和网络请求等场景。
2023-04-24 23:41:41
95
原创 括号匹配问题
括号匹配问题是典型的栈的运用。遍历字符数组,遇到左边的括号就将其对应的右括号入栈,遇到右括号时判断是否与栈顶括号相同,若不是,则直接返回false,若是,则将栈顶元素出栈。在末尾判断是否栈中是否只有一个元素#。若是,则返回true,否则,返回false。
2023-04-24 23:30:47
75
原创 再谈汉诺塔(总结)
由于计算机在执行指令时,一次只能执行一条指令,所以计算机在执行指令时运用了栈结构。即先进栈的指令被压在栈底最后执行,后读取到的指令依次入栈。当下读取到执行指令时再执行栈顶的指令。所以当调用hanoi函数时,递归函数将前面的所有调用全部压栈,当最底层调用结束后,开始读取执行指令,从栈顶指令开始执行,将结果返回下一层函数。从递归函数打印的参数也能窥见一斑。
2023-04-22 23:44:05
104
原创 汉诺塔的递归处理方式
汉诺塔问题是递归思想的典型应用。因为当盘子个数大于一时,汉诺塔问题就能分解为规模更小的子问题,即要移动最下面的盘子,就是要先把上面的n-1个盘子移到第二根柱子上,再将最下面的盘子移动到最后一个柱子上去,再将n-1个盘子移动到最后一根柱子上去。可以得出递推方程f(n)=2f(n-1)+1.
2023-04-19 21:36:43
74
原创 顺序表总结
因为顺序表在插入与删除方面的弊端,所以在元素较多时我们使用线性表的链式存储结构。链式存储结构利用结构体,结构体中有该节点储存的数据与下一个节点的指针。这样在插入与删除时,不用移动后面的元素,只需改变指针与节点的关系即可。所谓一法通,百法明,只要能熟练掌握数据结构的逻辑储存与物理储存的关系,其他的数据结构就是在这个基础之上增加一点东西或是增加限制而已。学习顺序表,首先学习的是线性表的顺序储存结构,即用数组来存储数据。顺序表的两种实现方式各有优劣,在面对具体问题时要具体分析,选择更合适的实现方式。
2023-04-18 23:27:34
107
原创 静态链表的实现
早期的计算机语言由于没有指针,所以很难实现指针相关的链表结构。静态链表也就由此诞生。静态链表即用数组来代替指针的作用实现链表结构。用数组的下标来表示元素的指针,使用一个数组来表示分配空间是否成功。 动态链表申请和释放空间是使用malloc()和free()两个函数,而静态链表的这两个功能需要我们自己来实现。申请空间即循环遍历used数组,查找有无还未使用过的空间,如果有,则内存申请成功,反之,则申请失败。而释放空间是通过循环找到或是直接给出下标,将该下标used数组对应的值
2023-04-12 10:03:40
122
原创 多项式加法
当我们需要将多项式相加的时候,由于多项式具有参数与指数两个属性,所以使用数组较为麻烦,且指数跨度较大时,开辟的数组空间可能会浪费。基于此,我们在进行多项式加减的时候就会使用链表来储存项的系数与指数两个属性。使用链表进行多项式的加法其实就是对两个有序链表按照指数降幂排序的过程。但是又要考虑到在链表合并的过程中,由于系数互为相反数相加等于0的情况,此外还有什么时候来释放已经相加过的节点的内存的问题。该代码只能对已经排好序的多项式进行相加,若链表是无序的,需要有一个排序函数对链表进行按指数大小降幂排序的过程。
2023-04-10 19:51:53
124
1
原创 单链表的基本操作
总结:单链表因为使用指针来储存下一个节点的位置,从而大大减少了不必要的内存开销。但是由于链表不具备通过下标进行访问的能力,如果要访问后面的元素需要访问前面的所有元素 ,大大增加了时间的损耗。顺序表因为其能通过数组下标访问元素,故存取的效率高。但在插入和删除操作时因为需要移动大量元素而浪费时间,且当长度变化较大时容易造成空间的浪费。所以引入了线性表的链式储存结构即链表。链表的初始化,将头节点设为\0.给定元素在链表的位置,插入元素。从头节点开始遍历打印链表元素。
2023-03-29 22:29:46
88
原创 数据结构1
而数据之间会存在特定的逻辑联系,学习数据结构就是为了更好的认识和处理数据。数据结构分为物理结构和逻辑结构。物理结构即计算机在计算机内部的储存结构,储存结构又分为顺序储存结构和链式储存结构。其中顺序储存结构即用一整块的空间来储存数据,借用数据在存储器中的位置来表示数据的逻辑结构。链式储存结构是指用指针来进行下一个数据地址的存储,本级指针包含这个节点的数据和下个节点的地址,通过访问指针快速访问下一个节点,并且节点是使用时生成,不用时清空,从而节约了储存空间。数据之间的逻辑关系有线性表,栈,队列,树和图。
2023-03-22 23:49:32
78
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人