自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 后端架构技术浅论

探讨K8s与spring cloud。

2023-11-30 16:36:16 84

原创 定时邮件发送【spring boot】

邮件发送可以根据实际情况,选择发送简单邮件、发送带附件的邮件以及发送模板邮件,这里要实现的功能较为简单,所以只需要创建一个邮件发送工具类,并实现简单邮件发送方法即可。文件10-30中,sendSimpleEmail()方法用于发送简单邮件,需要接收发送地址、邮件标题和邮件内容,使用JavaMailSenderimpl实例的send(SimpleMailMessage simpleMessage)方法直接对简单邮件进行发送。")”注解指定了在每月1日中午12点调用邮件发送任务发送邮件。

2023-03-20 17:37:56 408

原创 用户登录控制【spring boot 整合spring security】

在前面几个功能的演示过程中,都需要预先使用Spring Security提供的默认登录页面和默认登录用户user登录认证后才可以进行页面访问和功能演示。因为在Security默认拦截机制下,如果登录用户发送无权限的请求,则会跳转到Security默认提供的403错误页面,所以这里选择通过AccessExceptionHandler()方法控制程序跳转到自定义的错误页面。文件10-29中,使用JDBC身份认证的方式实现了自定义用户认证,此时重启项目进行访问,则只需要输入数据库中已有的用户信息就可以登录认证。

2023-03-20 16:52:08 454

原创 文章详情查看【spring boot】

上述代码中,定义了查询文章的请求路径为“/article/{id}”,先查询出对应的文章信息,然后对文章的评论信息进行查询封装,同时更新了文章的点击量统计信息。进行文章查询功能实现时,还包括对文章对应的评论信息进行查询,因此,虽然前面已经编写了文章类Article和文章统计类Statistic对应的接口文件,还要补充编写评论类Comment对应的接口文件。打开文章业务接口文件IArticleService,首先在该接口文件中编写一个根据文章id查询文章详情的接口方法,示例代码如下。

2023-03-18 15:57:20 187

原创 文章删除功能的实现【spring boot】

文件10-26中,前端页面显示的数据主要通过Ajax请求获取的,并且在Ajax请求中通过携带CSRF Token信息验证请求。在article_list.html文件中处理展示文章列表和删除文章请求的前端页面功能,具体如文件10-26所示。上述代码中,文章的删除操作包括删除Redis缓存中的数据、删除文章的统计数据以及删除文章的评论数据。需要说明的是,文章成功删除后,之前储存在Redis中的文章数据也会被删除。根据文章删除的需求,实现博客文章的删除功能。(2)编写Service层接口实现类方法。

2023-03-18 15:49:41 425

原创 文章修改功能的实现【spring boot】

上述代码中,editArticle()方法用于处理向文章修改页面跳转的逻辑,该方法通过获取指定文章id,跳转到对应文章的编辑页面;modifyArticle()方法用于处理文章编辑操作,处理成功后,会跳转到文章管理列表页面。在后台管理控制类AdminController中定义两个方法,分别用于处理跳转到文章修改了页面和保存修改文章的操作,具体代码如下所示;上述代码中,先对文章进行了更新处理,然后有调用了RedisTemplate删除了指定id的文章缓存信息。(2)编写Service层接口实现类方法。

2023-03-18 15:31:05 420

原创 文章发布功能的实现【spring boot】

上述代码的主要作用是对文章编辑过程中的字段信息进行逻辑判断,然后根据要处理的业务(文章发布还是文章修改)选择性的向后台提交请求,最后在文章发布处理成功后执行 window.location.href = '/admin/article'请求获取最新文章并跳转到“文章管理”面板所在的列表页面(AdminController示例中新增的向文章管理列表跳转的方法中展示了文章管理列表页面地址为back/article_list)。下面我们根据上述分析文章发布页面的效果,实现博客系统的文章发布功能。

2023-03-18 15:11:28 1103

原创 系统后台数据展示

后台首页展示的内容包括最新的文章信息,评论信息以及统计的文章和评论的数据量,这些数据的业务处理已经在SiteServiceimpl中实现了,这里直接在Controller中处理前端页面的请求。文件10-24中,核心内容是使用th:*相关属性获取后台封装在Request域中的最新文章信息、最新评论信息和相关统计数据,并展示在页面上。文件10-23中,后台首页展示的方法index()针对“/admin”和“/admin/index”的GET请求进行首页数据展示。单击前端首页左上角的【后台管理】进入后台首页。

2023-03-18 13:50:02 466

原创 每日一个java算法小分享【089设置RAR压缩包密码】

本实例仅仅是完成了设置RAR压缩包的密码,并没有在解压文件时实现对密码的进行验证的功能,例如压缩文件的密码为“mrsoft”,解压时,当输入“123”时,被压缩的文件依然会被释放到指定文件夹下。本实例通过RAR的命令把用户选定的资源文件压缩为RAR压缩包并支持密码设置功能,设置密码以后只有通过合法的密码才能解压这个RAR压缩包。这个命令是把当前文件夹中的所有文件压缩成名称为“资料.rar”的压缩文件,同时设置该压缩文件的密码为“mrsoft”本实例在RARA命令的基础上实现了图形化操作的加密程序。

2023-03-18 11:55:06 267

原创 文章详情查看功能的实现【spring boot】

上述代码中,定义了查询文章的请求路径为“/article/{id}”,先查询出对应的文章信息,然后对文章的评论信息进行查询封装,同时更新了文章的点击量统计信息。进行文章查询功能实现时,还包括对文章对应的评论信息进行查询,因此,虽然前面已经编写了文章类Article和文章统计类Statistic对应的接口文件,还要补充编写评论类Comment对应的接口文件。打开文章业务接口文件IArticleService,首先在该接口文件中编写一个根据文章id查询文章详情的接口方法,示例代码如下。

2023-03-18 11:27:06 451

原创 文章评论管理功能的实现【spring boot】

上述代码中,在CommentServiceImpl的评论发布方法中,先进行了评论数据发布操作,然后调用统计类接口文件staticMapper的相关方法对文章评论信息数量进行了统计更新。打开client文件夹中的comments.html文件,实现前端页面评论展示的实现,文章评论页面comments.html的核心代码如文件10-21所示。实现查看文章详情时,评论类Comments操作数据库的Mapper接口文件已经编好了,这里直接从Service业务层处理评论管理的相关业务。说明文章评论管理成功实现。

2023-03-18 11:22:22 1590 1

原创 Static方法的使用

如果使用public修饰某个类中的static方法,那么访问这个方法时,既可以使用“类名.方法名”的方式访问,又可以使用“对象.方法名”的方式访问。而没有static修饰的成员变量,则需要首先由类实例化对象,再通过对象访问该成员变量才可以。从上面的例子,不难发现:使得static修饰的方法成为类的方法,使用时通过“类名.方法名”的方式就可以方便的使用了,相当于定义了一个全局的函数(只要导入该类所在的包即可)。所以,相应的,非静态方法则还是要通过实例化对象,再通过“对象.方法名”的方式访问了。

2023-03-16 20:41:20 909

原创 每日一个java算法小分享【029监视JVM的内存状态】

每个java应用程序都有一个Runtime类的实例,使应用程序能够与运行的环境相连接。可以通过getRuntime()方法获取当前运行时间。Runtime类的常用方法如下所示;对于已经实现一定功能的程序,在优化时主要从两个方面考虑,即执行任务所消耗的时间和程序运行时所使用的内存。本实例将编写一个程序来动态显示虚拟机的内存变化。freeMemory()和totalMemory()的返回值是long型,表示内存的字节数。

2023-03-16 20:20:30 68

原创 每日一个java算法小分享【010人民币大写数字转换】

中国工商银行的汇款页面的第三步填写款项信息时,就实现了人民币金额大小写转换功能。本实例实现了小写金额到大写金额的转换。分别将整数部分与小数部分转换为大写方式,并插入单位(亿,万,仟......)将数字格式化,如果存在小数部分,将其转换为3位小数。组合转换后整数部分与小数部分的写法。

2023-03-16 20:05:14 125

原创 每日一个java算法小分享【005用动态数组保存学生姓名】

其中,ArrayList集合可以看作为动态数组,它突破普通数组固定长度的限制,可以随时向数组中添加和移除元素,这将使数组更加灵活。本实例通过ArrayList集合类实例向程序动态添加与删除学生姓名的功能,所以数据都保存在ArrayList集合的实例中。add()方法可以把任意类型的元素添加到List集合的尾部。remove()方法可以移除集合中的指定元素。1.element:要添加到集合中的任意类型的元素值或对象。1.object:要从集合中移除的对象。2.返回值:是否成功添加元素。

2023-03-16 19:54:25 295

原创 每日一个java算法小分享【081向properties中写入数据】

Properties属性文件是以key,value的形式保存数据,在key与value之间有一个“”=“”相连。如果通过手动的方法相属性文件写数据,可能会出现格式上的问题,本实例实现一个小工具,通过在窗体中输入内容,可实现向属性文件中写数据。本实例实现设置Properties属性文件的值,使用的时Properties类的setProperty()方法。2.value:key值对应的value值。2.comments:对属性列表的描述信息。1.key:要置于属性列表中的键。

2023-03-14 15:42:25 216 1

原创 每日一个java算法小分享【080重新合并分割后的文件】

实例079中介绍了如何实现将较大的文件进行分割,分割后的文件是不能运行的,如果想要运行分割后的文件,就需要通过程序对相应的文件进行重新合并。本实例实现文件合并,仍然是通过文件字节输入/输出流。在进行文件合并时,需要将要进行合并的所有文件全部读取之后。

2023-03-14 15:25:48 69

原创 每日一个java算法小分享【079文件分割】

实现本实例的关键是通过输入流读取要分割的文件,再分别从流中读取相应的字节数,将其写入到以tem为后缀的文件中。通过FileInputStream类的read()方法可实现读取文件。大文件在传输时不方便,为了便于携带,很多软件都提供了将大文件分割的功能。本实例就是将较大的文件分割成若干个小文件,但是分割后的文件不能作为单独的文件运行。在使用read()方法读取字节时,都会抛出IOException异常,因此在使用该方法读取字节时,要处理该异常。

2023-03-14 15:13:01 162

原创 每日一个java算法小分享【077合并多个txt文件】

本实例实现的文件合并主要通过FileInputStream类读取文件,通过FileOutputStream类向文件中写入内容,在对文件进行读取的过程中,本实例应用了FileInputStream类的avail able()方法,来获取有效的字节数。可以通过FileInputStream类对象调用该方法。该方法的返回值是可以从输入流中读取的字节数。通过IO流可以实现文件的合并,当然可以对任意格式的文件进行合并,本实例以txt文件为例。该方法抛出IO异常,在调用该方法时,要通过try语句处理异常。

2023-03-14 14:57:41 352

原创 每日一个java算法小分享【076逆序输出数组信息】

每天分享一个小算法,每天进步一点点

2023-03-14 14:34:56 33

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除