
java web
spring相关
haohao123nana
6年java web开发经验,2年android开发经验
-
转载 用户认证:基于jwt和session的区别和优缺点
背景知识:Authentication和Authorization的区别:Authentication:用户认证,指的是验证用户的身份,例如你希望以小A的身份登录,那么应用程序需要通过用户名和密码确认你真的是小A。Authorization:授权,指的是确认你的身份之后提供给你权限,例如用户小A可以修改数据,而用户小B只能阅读数据。由于http协议是无状态的,每一次请求都无状态。当一个用户通过用户名和密码登录了之后,他的下一个请求不会携带任何状态,应用程序无法知道他的身份,那就必须重新认证。因此我们2020-12-10 16:12:1312
0
-
原创 redis分布式锁终极代码
博主还有个用于大学生学习英语的项目。其中有个场景是老师和学生不能并发操作的。此时就要使用互斥锁去解决这个问题。因为我们的项目是一个nginx反代5个springboot jar包,所以不能使用synchronized或者Lock。博主选用了redis分布式锁来解决这个问题。但是网上关于redis分布式锁的设计多种多样,纷繁复杂,令人眼花缭乱。最后在参考网站各个大神的资料还有自己压测后,得出了下面的代码。部署上线后,未发现有问题。下面是代码请大家参考指正。redis锁工具代码 :package c2020-11-11 10:47:0727
0
-
原创 shiro redis获取在线人数超过1W时,造成redis慢查询问题
博主有个springboot项目有个获取在线人数的需求,session使用的是shiro、redis分布式存储。一开始直接用了 Collection sessions = redisSessionDAO.getActiveSessions();这个方法内部是使用了redis命令中的keys *。keys *命令的原理是扫描整个redis里面所有的key,然后根据通配符模糊查找出来,所以他的时间复杂度是O(N)。在匹配key少的话是没问题的。超过1w的情况下,查询时间能达到10S。因为redis是单线程的,2020-11-11 10:01:1496
0
-
原创 禁用cookie情况下,前端传递当前登录人信息给shiro
有个springboot项目,登录和权限采用shiro管理。某天前端开发人员突然说小程序页面里面无法把cookie 传递给后端, 导致服务器获取登录人信息空指针。百度了一圈不知道怎么搞,最后请教了老大,算是解决了。下面把解决方案记下来前端用问号传参方式传递sessionid后端重写shiro获取sessionid方法原来的 shiro配置DefaultWebSessionManager...2019-05-15 17:45:37723
1
-
原创 优秀博客收藏(不定期更新)
一、java集合,彻头彻尾理解源码 书呆子Rico https://blog.csdn.net/justloveyou_/article/details/62893086二、设计模式 左潇龙 http://www.cnblogs.com/zuoxiaolong/p/pattern1.html三、spring cloud 纯洁的微笑 http://www.ityouknow.com/...2018-08-24 15:59:18236
0
-
原创 大文件分片、并发上传,断点续传,秒传 第二弹
继上次大文件分块上传原理见:http://blog.csdn.net/haohao123nana/article/details/51279098,博主终于有时间来真正的代码实现它。关键部分前端用file.slice()分块前端用FileReader获取每一分块的md5值后端用MultipartFile接受分块文件后端用FileOutputStream拼装分块文件话不多说,直接上代码,我想2017-01-23 12:01:2522074
49
-
原创 spring大文件分块上传原理解析
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl2016-04-29 08:28:4810558
2
-
原创 大文件分块上传第三弹(分块并发上传)
继上次大文件分块上传原理第二弹见:http://blog.csdn.net/haohao123nana/article/details/54692669,有童靴说前端分片递归上传效率不高,我试了试前端并发上传。本地上传测试,700M的视频,用递归上传用了4分钟,并发上传用了3分钟,效果还不错后端文件跟第二弹的一样,前端html更改成并发上传分块了html<!DOCTYPE HTML><html>2017-08-17 18:23:223882
0
-
原创 公司遗留技术问题
公司遗留技术问题,有兴趣的可以共同探讨下1.即时通信功能(即时聊天), 例如K12项目中学生可以在观看同一视频时可发聊天消息,目前是前端找的插件实现的功能,信息不能保留。 2.网页缓存(前端调一次后端接口,产生一条sql语句,下次再请求相同的sql语句,直接从缓存中拿,不用请求数据库) 例如 对于网站经常被访问首页如何缓存,提高用户体验度。3.大文件上传,分块、断点续传使用什么技术实现4.网站站2017-09-27 17:26:05220
0
-
原创 阿里oss
最近两天没啥任务,把上个月调研的阿里oss的api封装了下,其中最重要的是文件上传,下面用阿里的一个图来表示下,好处自然是不言而喻,具体请看阿里oss官方文档从流程上,少了一步转发。从架构上来说,原来的上传都统一走网站服务器,上传量过大时,瓶颈在网站服务器,可能需要扩容网站服务器。采用表单上传后,上传都是直接从客户端发送到OSS。上传量过大时,压力都在OSS上,由OSS来保障服务质量。话不多说2016-05-03 16:16:513637
2
-
原创 七牛云云端压缩测试
按照文档提示,直接上最终的代码import com.qiniu.common.QiniuException;import com.qiniu.common.Zone;import com.qiniu.processing.OperationManager;import com.qiniu.storage.Configuration;import com.qiniu.util.Auth;im2017-04-20 08:27:551111
0
-
翻译 RabbitMQ java API中文翻译
java客户端api指导本指导覆盖了java客户端api,它不仅仅是一个教程,在不同的部分都是可用的。 此java客户端得到了下面三方的许可Apache Public License 2.0Mozilla Public LicenseGPL 2.0你可以通过查看javadoc文档来得到更多的信息。 此java客户端还附带一些命令行工具。 客户端api严格遵守AMQP-9-1协议的规范,2016-06-27 12:42:256630
0
-
转载 Spring MVC文件上传
Spring MVC为文件上传提供了直接的支持,这种支持是通过即插即用的MultipartResolver实现的。Spring使用Jakarta Commons FileUpload 技术实现了一个MultipartResolver实现类:CommonsMultipartResolver。Spring MVC上下文中默认没有装配MultipartResolver,因此默认情况下不能处理文件的上2016-04-28 17:04:06916
0