- 博客(56)
- 收藏
- 关注
原创 通过char[]获得字符串new String(chars) || chars.toString() || String.valueOf(chars)对比
今天刷Leecode49. 字母异位词分组,遇到一个通过char[]获得字符串的问题,记录一下new String(chars) || chars.toString() || String.valueOf(chars)三者返回值的区别!题目如下图所示我的思路:遍历字符数组中的每个字符串str;首先将字符串通过toCharArray()转换为char[]数组;然后对char[]进行排序;再将排好序的char[]转换为字符串string;将返回的字符砖string作为map的key,如果key
2021-04-16 22:10:18
1197
原创 EasyExcel读写Excel文件
1. Excel导入导出的应用场景1、数据导入:减轻录入工作量2、数据导出:统计信息归档3、数据传输:异构系统之间数据传输2. EasyExcel简介2.1 EasyExcel特点Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单、节省内存著称。EasyE
2021-03-11 16:56:54
386
原创 上传文件到阿里云OSS
1.对象存储OSS为了解决海量数据存储与弹性扩容,在项目中我们采用云存储的解决方案- 阿里云OSS。1.1 开通“对象存储OSS”服务(1)申请阿里云账号(2)实名认证(3)开通“对象存储OSS”服务(4)进入管理控制台1.2 创建Bucket创建好Bucket如下:2.Java操作OSS实现上传2.1 创建Maven项目2.2 在pom中引入OSS依赖 <dependencies> <!--aliyunOSS-->
2021-03-11 16:30:22
529
原创 RabbitMQ知识点梳理
1. 什么是MQMQ(Message Quene) : 即 消息队列、 消息中间件 ,通过典型的 生产者和消费者模型,生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,轻松的实现系统间解耦。它通过利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。2.RabbitMQ官网下载地址: https://www.rabbitmq.com/download.html2.1 we
2021-03-10 20:54:16
380
原创 Redis知识点总结--4
Redis知识点总结–1Redis知识点总结–2Redis知识点总结–38.集群Redis Cluster是Redis的分布式解决方案,在3.0版本正式推出,有效地解决了Redis分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时,可以采用Cluster架构方案达到负载均衡的目的。之前、Redis分布式方案一般有两种:① 客户端分区方案,优点是分区逻辑可控,缺点是需要自己处理数据路由、高可用、故障转移等问题;② 代理方案,优点是简化客户端分布式逻辑和升级维护便利,缺点是加重架构部署复杂度和性能
2021-03-08 20:23:00
295
原创 Redis知识点总结--3
Redis知识点总结–1Redis知识点总结–27.哨兵7.1 主从复制的问题Redis的主从复制模式可以将主节点的数据改变同步给从节点,这样从节点就可以起到两个作用:第一,作为主节点的一个备份,一旦主节点出了故障不可达的情况,从节点可以作为后备“顶”上来,并且保证数据尽量不丢失(主从复制是最终一致性)。第二,从节点可以扩展主节点的读能力,一旦主节点不能支撑住大并发量的读操作,从节点可以在一定程度上帮助主节点分担读压力。但是主从复制也带来了以下问题:① 一旦主节点出现故障,需要手动将一个从节点晋
2021-03-08 08:21:33
228
2
原创 Redis知识点总结--2
Redis知识点总结–14.持久化4.1 RDBRDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。4.1.1 触发机制手动触发分别对应save和bgsave命令:save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较大的实例会造成长时间的阻塞,线上环境不建议使用。bgsave命令:Redis进程执行fork操作创建子线程,RDB持久化过程由子进程负责,完成后自动结束。阻塞只发生在fork阶段,一般时间很短。除了执行命令
2021-03-06 17:15:04
147
原创 Redis知识点总结--1
1.概念1.1 单线程架构1.1.1 Redis是用了单线程架构和I/O多路复用模型来实现高新能的内存数据库服务1.1.2 为什么单线程还能这么快:① 纯内存访问,Redis将所有数据放在内存中,内存的响应时长大约为100纳秒,这是Redis达到每秒万级别访问的重要基础;② 非阻塞I/O,Redis使用epoll作为I/O多路复用技术的实现,再加上Redis自身的事件处理模型将epoll中的连接、读写、关闭都转换为事件,不在网络I/O上浪费过多时间;③ 单线程避免了线程切换和竞态产生的消耗。1
2021-03-05 17:28:10
166
原创 个人中心项目--页面/用户浏览量统计模块(一)
1.功能模块构思1.1描述:我们经常可以看见每条新闻或者文章都会有一个浏览量统计标记,近的说,CSDN的每条博客不也有一个文章浏览量统计嘛,所以也想着为项目加一个这个功能,说来这个功能也没什么难的,在需要统计的页面加一个计数器然后存在数据库对应字段不就好了。但是,这样真的就是最好的办法嘛?频繁的数据库IO,对于我们自己玩的项目貌似没什么,但是一切需要考虑长远,万一你的项目之后发达了,数千万的访问量,你这样做频繁IO数据库肯定是不太友善的。所以我们需要构思一个合理的解决办法。其实,这部分也很容易想到,那就
2020-07-26 21:03:26
905
原创 个人中心项目--朋友圈模块(五)
1.描述:这部分功能主要是提供用户自己发表的动态删除以及自己发的评论删除操作,牵涉内容量很少,可以看做是功能优化。2.效果展示:3.思路:这部分逻辑主要是在前端,即在页面加载时,遍历显示每条动态时,做一个判断,当动态或评论拥有者(即谁发的动态或评论)的id等于登录用户的id时,增加删除按钮:关键是要给每一条动态或者评论div赋唯一标识id,这个字段是准确删除该信息的保障,可以考虑通过动态的id和评论的id组合成唯一标识:4.代码:4.1 html:function deleteDyn
2020-06-20 10:49:48
479
原创 个人中心项目--朋友圈模块(四)
1.描述:这部分主要是实现评论的功能,代码量很少,而且简单,主要是前端页面的一些布局优化等。2.效果展示:点击comment按钮,显示评论框:点击发表评论,提交后台并刷当前页面,这里优化了一下,刷新网页后先前浏览位置不变,点击comment按钮旁边的小按钮,显示评论信息框:3.代码:3.1Mapper和Service:只是一个comment表插入操作,就不截图了。3.2 Controller:id为登录用户的id标识,即我的id字段;toId是动态对应的id;mycomment即评
2020-06-19 20:02:03
296
原创 个人中心项目--朋友圈模块(三)
1.描述:这部分功能主要是实现发表一条动态并在朋友圈显示的功能。2.效果展示:3.思路:上图是动态对应的数据库表单,我们每次发动态时,可选的有动态的文字部分或者是图片部分,而时间就是当前时间,own_id通过获取当前登录的用户信息获取。图片在数据库存储方式选择图片地址拼接方式,中间使用逗号隔开(当然,还可以选择更特殊一点的标记符号,因为我在测试过程中发现,有的图片地址中就含有逗号,这样,我们在从数据库取出来图片字段进行字符串切割时,会把这个图片地址切成多份,那么在页面肯定会显示找不到图片的
2020-06-19 11:02:47
351
原创 个人中心项目--朋友圈模块(二)
1.描述这部分主要是解决个人中心项目–朋友圈模块(一)中遗留的问题,即:修改的代码主要是前端的逻辑,在js部分新加了两个map集合,用于判断每条动态的点赞或是取消点赞的状态,主要思路是给每个按钮都维护一个状态变量timeNumun,而不是(一)中一组按钮维护一个timeNumun而出现状态混乱问题:2.具体代码:2.1 动态添加或取消点赞用户名:<div class="collapse" th:id="collapseExample+${dynamics.dynamic.id}">
2020-06-18 09:47:39
283
原创 个人中心项目--朋友圈模块(一)
1.描述:朋友圈模块主要是在时间轴模块基础上,增加点赞,取消点赞,评论和删除评论的功能,当然,时间轴只是展示自己发的动态,而朋友圈则是展示所有人的动态。第一阶段主要实现了点赞和取消点赞以及显示点赞的用户名功能。2.效果展示:3.思路:进入朋友圈页面时,从数据库查询所有动态以及对应的发动态的用户信息,对应的点赞信息,评论信息等,将每个动态以及它对应的这些信息封装为一个动态扩展类,之后所有动态以集合形式传给页面,前端页面拿到这些信息进行拆箱遍历,在对应的地方显示对应的信息。当然,对我点过赞的动态和没
2020-06-17 17:29:19
596
原创 个人中心项目--关于request,session,application
1.问题发现:最近开始为项目中类似QQ聊天功能模块做准备,实现多用户在线聊天等功能就需要多个用户来访问服务器,今天突然想到,我是把登录用户信息放到session中的,那我如果多用户访问,那岂不是前一个用户的信息会被后一个用户所顶替调,毕竟都存在了session中,主要是key都是叫“user”。我还上网查了相关的问题:我试了一下,在同一个浏览器打开,的确信息只能是最后登录的一个用户的信息,前一个的用户登录信息总是被后一个所顶掉。然后我就看评论中说把session的key改成动态的,然后我也试了一下,我
2020-06-15 17:09:36
239
原创 个人中心项目--时间轴模块(二)
更新的内容:这部分内容主要是对昨天的时间轴模块作了一点点前端的优化:由上图可以看出,评论弹出界面相比昨天的美观许多,有昨天的弹出框便成了隐藏伸缩框,界面更加平滑。主要修改的前端代码部分如下:<div class="col-lg-6"> <div class="mb-4"> <p> <button style="margin-right: 15px" class="btn btn-outline-danger
2020-06-13 17:36:46
290
原创 个人中心项目--时间轴模块(一)
1.模块功能描述:在个人资料页面,有一个时间轴模块,该模块类似查看微信朋友圈自己发表动态的历史记录。涵盖动态发表时间,发表的内容,图片,点赞数量,评论数量以及评论的内容等。阶段性效果如下:点击评论,弹出评论信息框(位置有些问题,之后在修改一下):2.建表:1.动态表单:2.评论表单:3.点赞表单:4.用户表单:3.Mapper层:关于动态的三张表的mapper和model我都是通过逆向工程生成的,当然也可以自己写,我把我的逆向工程挂在这里,按需提取:链接:https://pa
2020-06-12 20:59:30
696
原创 个人中心项目--登录记住我功能
在完成controller中登陆认证方法后,记住我功能其实只是在html页面增加两个操作cookie的函数就可以实现了,很简单:代码流程:1.首先我们query.cookie.js来操作cookie,所以需要先去下载一下。这里也可下载:链接:https://pan.baidu.com/s/1KB5L5c-RHqZaFSTIa4LGTg提取码:9nbw2.先来看页面登录表单: <form class="form-horizontal mt-3 form-material" id="login
2020-06-11 20:38:06
606
原创 个人中心项目--登陆拦截器问题
问题发现:当用户未登陆时,访问个人中心主页等界面时,请求应该被拦截,并转发到登录界面,之前在 培训教育系统项目中也做过这块功能,现在通过springboot开发这个项目时,拦截器配置不在配置文件中配置了,虽然做过,但多少实现步骤发生了一些变化,所以也遇到了一些问题。现在虽然这块功能实现了,但是通过其他办法解决的,还有一个疑惑还未解决。具体项目:这是工程目录:配置一个拦截器组件,这里我只重写了预处理方法:@Componentpublic class loginInterceptor implem
2020-06-10 21:13:09
201
原创 个人中心项目--存放用户登陆信息供页面显示之Model和Session选择
问题发现:在项目中,当用户登录后,会将通过数据库查询到的用户信息存放到model中,以提供给html页面相关信息的显示。今天突然发现,model只能在Controller中这个使用到它的方法的返回页面使用,其他html页面是无法使用这个model中的信息的。项目具体:这是一个登录方法,根据输入的用户名和密码查询数据库后,将查到的非空用户信息放到model中,然后提供给返回的main.html页面相关信息展示:/** * 登录 * @param username * @param passwor
2020-06-10 20:42:55
640
原创 VS2019连接mysql8.0数据库
1.首先准备好VS2019以及mysql数据库,两者都可以去官网下载,我们直接描述连接过程。2.连接:第一步:打开mysql的安装目录,我本地的安装目录如下:(注意是否有include和lib文件夹)第二步:打开VS2019,新建一个空工程。第三步:右击工程名,打开属性页:第四步:打开VC++目录,在包含目录中,将mysql安装文件中的include文件的路径添加到这里:第五步:还是在属性页上,打开C/C++,选择常规,和上一步一样,在附加包含目录中将mysql文件中的include文件路
2020-05-26 15:09:41
7569
5
原创 浅谈单例模式
一.介绍单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。即采取一定方法保证在整个软件系统中,某个类只能存在一个实例对象,并且该类只提供一个取得其对象实例的方法,这个方法是静态的。简而言之:1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。主要目的是保证一个类仅有一个实例,并提供一个访问它的全局访问点。用到单例模式创建的类一般是一个全局使用而
2020-05-24 16:44:08
169
原创 培训教育系统阶段性效果展示
1.如果在未登录的情况下直接访问后台系统的其他页面,会直接跳转登录界面,并提醒未登录,请先登录:当然,当用户名或密码错误,会给出相应提示:2.登录成功后,来到后台控制主页面:3.用户管理模块修改界面:添加界面:修改界面:提供了信息回显功能离职:添加:该模块提供了基本的用户增删改查功能,支持批量删除和用户名模糊查询功能。分页功能未用现成的分页插件,而是用分页对象结合前段代码实现,当在第一页或者最后一页时,前一页或后一页按钮自动隐藏。4.员工管理模块员工模块除了提供简单
2020-05-19 22:20:40
335
原创 培训教育系统记录总结 -- 登录拦截器
Spring Web MVC 的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理。1. 登录拦截器package com.luckySheep.edu.interceptor;import org.springframework.web.servlet.HandlerInterceptor;import org.springframewor...
2020-04-30 21:19:45
184
原创 培训教育系统记录总结 -- 分页操作前后端代码实现
1.分页对象:public class PageBean<T> { private int totalCount;//总记录数 private int totalPage;//总页码 private List<T> list;//每页数据 private int currentPage;//当前页码 private int row...
2020-04-29 19:09:21
186
原创 异常:java.lang.NumberFormatException: For input string: " 1212"
在做用户批量删除时,后台通过:String[] userChecks = request.getParameterValues("userCheck");来获取jsp页面表单提交的所有选中id,getParameterValues返回的是字符串数组,而dao层是通过Integer类型的id去删除对应的数据,所以需要转换数据类型: for (String userCheck : ...
2020-04-28 22:02:29
437
原创 培训教育系统记录总结 -- ajax请求处理成功却不进入success
1.项目中功能描述:1.1 在操作列表中点击删除符号:1.2 弹出提示框后,点击确认则删除对应的一行,并刷新页面;点击取消则不做任何操作:2.项目中功能代码实现:2.1 前台页面:<a title="删除" href="javascript:;"onclick="member_del(this,'${user.id}')"style="text-decoration:none"...
2020-04-28 17:47:50
200
原创 培训教育系统记录总结 --普通表单提交之后,关闭弹窗并且刷新父页面
问题:弹窗通过layer插件打开的情况下,采用普通方式提交表单后,弹窗无法关闭,而且当手动关闭弹窗后,父页面没有刷新数据。解决:这种情况下,可以尝试通过在弹窗页面的jsp中加入以下代码来解决上述问题: <% if ((String)request.getAttribute("info") == "success") { %> <script&...
2020-04-28 10:14:48
163
原创 培训教育系统记录总结--mybatis逆向工程
1.概念mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码如创建实体类,映射文件等,可以让程序员将更多的精力放在繁杂的业务逻辑上,而不是关注在sql语句的编写。企业实际开发中,常用的逆向工程方式:由数据库的表生成java代码。2.逆向工程2.1 依赖包下载:逆向工程依赖.<dependency> <groupId>org.my...
2020-04-25 10:16:50
209
原创 RabbitMQ学习总结(一)启动服务闪退
可能原因:1.erang版本不兼容2.电脑用户名是中文名3.RabbitMQ安装目录有空格或者中文电脑用户名是中文名解决办法:不管中文用户名,设置软连接,绕过中文名的目录1.管理员运行cmd进入RabbitMQ安装目录2.rabbitmq-service.bat remove3.set RABBITMQ_BASE=D:\rabbitmq_server\data(自定义一个目录)4...
2020-03-30 23:24:32
1968
1
原创 JDK动态代理为什么必须针对接口
1.JDK动态代理为什么必须针对接口?由于java的单继承,动态生成的代理类已经继承了Proxy类的,就不能再继承其他的类,所以只能靠实现被代理类的接口的形式,故JDK的动态代理必须有接口。2.为何调用代理类的方法就会自动进入InvocationHandler 的 invoke()方法呢?因为在动态代理类的定义中,构造函数是含参的构造,参数就是invocationHandler 实例,而每一...
2020-03-29 21:51:00
1105
原创 Caused by: java.lang.NoClassDefFoundError: org/springframework/aop/TargetSource解决方法
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [beans2.xml]; nested exception is java.lang.NoClassDefFoundError: org...
2020-03-27 16:33:19
2634
原创 贴吧小项目总结(struts+hibernate)
一、项目架构分析Web: struts2ServiceDao: hibernate二、构建项目2.1 创建工程:2.1.1 导入静态页面,放在WEB-INF下,并且将后缀名改为jsp:2.1.2 将jsp标签头加入到修改后的静态页面中:<%@ page contentType="text/html;charset=UTF-8" language="java" %>...
2020-03-25 12:06:50
264
原创 Eigen库下载安装并配置到VS
1.简介:Eigen是一个高层次的C ++库,有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法。Eigen适用范围广,支持包括固定大小、任意大小的所有矩阵操作,甚至是稀疏矩阵;支持所有标准的数值类型,并且可以扩展为自定义的数值类型;支持多种矩阵分解及其几何特征的求解;它不支持的模块生态系统 [2] 提供了许多专门的功能,如非线性优化,矩阵功能,多项式解算器,快速傅立叶变换等。Eig...
2020-03-19 15:29:00
16043
4
原创 IDEA中第一个Struts项目学习总结
1.概念: Struts2是Apache发行的MVC开源框架。注意:它只是表现层web(MVC)框架。2.Struts2开发包下载.3.项目步骤第一步:创建Web工程创建一个Web工程,名为day01_struts2_demo01。(选中Tomcat)第二步:导jar包在工程的WEB-INF目录下创建一个lib文件夹,把下载的Struts中apps里的struts2-blan...
2020-03-13 23:09:32
257
原创 黑马旅游网学习总结
1.技术选型三层架构:1.1 Web层 a)Servlet:前端控制器 b)html:视图 c)Filter:过滤器 d)BeanUtils:数据封装 e)Jackson:json序列化工具1.2 Service层 f)Javamail:java发送邮件工具 g)Redis:nosql内存数据库 h)Jedis:java的redis客户端1.3 Dao层 i)Mysq...
2020-03-13 18:13:01
1215
原创 黑马旅游网Bug总结(一)
Bug1:java.lang.NullPointerException: inStream parameter is null at java.base/java.util.Objects.requireNonNull(Objects.java:246) at java.base/java.util.Properties.load(Properties.java:403) at cn.it...
2020-03-10 20:53:39
1952
4
原创 解决jquery中blur()事件引起的登录网页先触发失去焦点事件
先看原来代码: //校验用户名 function checkUsername() { alert("检验用户名"); return true; } function checkPassword() { alert("检验密码"); return false; } $(function () { //当表单提交时,调用所...
2020-03-09 23:32:16
1011
3
原创 IDEA里Maven中使用tomcat:run出现错误org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
1.pom.xml文件是正常,编译不存在jar包冲突首先确保maven中的Tomcat的jar包和本地Tomcat的jar包不冲突,只要在IDEA工程的pom.xml文件中,为导入maven的Tomcat的jar包设置作用范围,即使它们只在编译过程中起作用,而在运行过程中,还是用本地Tomcat的jar包:在jar包不冲突的前提下,运行Tomcat:run依然报错,错误信息如下:以下是浏览...
2020-03-07 22:26:17
1348
2
原创 BeanPropertyRowMapper注意事项
query过程都可以进行数据类型自动转换,而且不仅仅按标准命名,还可以支持下划线分隔后拼接成驼峰式字符完全轻量级.Spring 2.5 提供了一个便利的RowMapper实现-----BeanPropertyRowMapper,它可自动将一行数据映射到指定类的实例中。例如:属性名称(gprice)匹配到同名列或带下划线的同名列(G_Price)。如果某个属性不匹配则返回属性值为Null;/...
2020-03-04 16:37:58
436
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人