Java EE

牛X!一个注解搞定接口防刷!

蹲街弑〆低调 提交于 2021-01-29 10:56:52
说明:使用了注解的方式进行对接口防刷的功能,非常高大上,本文章仅供参考。 技术要点:springboot的基本知识,redis基本操作。 首先是写一个注解类: import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.RUNTIME; /** * @author yhq * @date 2018/9/10 15:52 */ @Retention(RUNTIME) @Target(METHOD) public @interface AccessLimit { int seconds(); int maxCount(); boolean needLogin()default true; } 接着就是在Interceptor拦截器中实现: import com.alibaba.fastjson.JSON; import com.example.demo.action.AccessLimit; import com.example.demo.redis.RedisService;

为什么我们无法写出真正可重用的代码?

匆匆过客 提交于 2021-01-29 09:46:19
作者 | Daniel B. Markham 译者 | 王者 策划 | 万佳 为什么实现组件可重用性如此之难? 几周前,Uwe Friedrichsen 在他一篇博文中提出一个这样的问题: ……可重用性是软件的制胜法宝:每当一个新的架构范式出现,“可重用性”就成了是否采用该范式的一个核心考虑因素。业务通常会这样认为:“转向新范式在一开始需要多付出一些成本,但因为可重用,所以很快就会从中获得回报”……但简单地说,任何基于可重用的架构范式从来都不会像承诺的那样,而且承诺总是无法兑现…… 他例举了 CORBA、基于组件的架构、EJB、SOA 等例子,然后就问微服务是否会带来不一样的结果。 为什么可重用性的承诺总是无法兑现?为什么我们无法写出真正可重用的代码? 这些都是很好的例子,Friedrichsen 很好地解释了为什么实现可重用性是如此困难。然而,我相信,他忽略了关键的一点:经典的面向对象编程(OO)和纯函数式编程(FP)在可重用性方面会有截然不同的结果,因为它们基于不同的假设。 我们来做个实验,分别用 F# 和 C# 以 FP 和 OO 的方式来实现“FizzBuzz”游戏。 首先是 F#: let (|DivisibleBy|_|) by n = if n%by=0 then Some DivisibleBy else None let findMatch = function

Android+Java Web+MySQL实现登录注册

别说谁变了你拦得住时间么 提交于 2021-01-28 03:41:11
1 前言&概述 这篇文章是基于 此处文章 的更新,更新了一些技术栈,更加贴近实际需要,以及修复了若干的错误。 这是一个前端 Android +后端 Java/Kotlin 通过 Servelt 进行后台数据库( MySQL )交互的详细步骤以及源码实现,技术栈: Android 基础 原生 JDBC +原生 Servlet Tomcat + MySQL ( Docker ) 当然现在的很多 Java 后端开发都使用了 Spring Boot 而不是原生的 Servlet ,所以使用 Spring Boot 实现的可以笔者的 另一篇文章 。 尽管基于 Spring Boot 实现非常的简便,但是使用原生的 Servlet 更能理解底层的原理。另外本篇文章是偏基础向的教程,很多步骤都会比较详细而且附上了图,好了废话不说,正文开始。 2 环境 Android Studio 4.1.2 IntelliJ IDEA 2020.3 MySQL 8.0.23 Tomcat 10.0 Docker 20.10.1 服务器 CentOS 8.1.1911 3 环境准备 3.1 IDE 准备 官网安装 Android Studio + IDEA ,这部分就省略了。 3.2 MySQL 3.2.1 安装概述 这里的 MySQL 若无特殊说明指的是 MySQL Community 。 首先,在

前后端程序员工作简单概述

醉酒当歌 提交于 2021-01-27 22:37:30
前后端程序员工作简单概述 JAVA是一门后端语言,前端程序员有自己的一套,JAVA不是很偏向但帮助前后端的对接工作。 前端开发:前端的工作更多的是和用户”交流“。 上面的图片中菜单,图片,工具栏等等这些视觉内容,都是由浏览器解析、处理、渲染相关HTML、CSS、Java 文件后呈现而来。并通过建立框架,构建沉浸性的用户体验。 后端开发:要创建上面提到的图片背后功能实现的代码,能接受浏览器的请求,实现业务逻辑,访问数据库,用JSP生成HTML,然后发送给浏览器。为此后端程序员需要具有用于应用构建的服务器端语言,数据相关工具,PHP框架,版本控制工具。 来源: oschina 链接: https://my.oschina.net/u/4352624/blog/4926709

只需轻松点两下,人人都会设计的 Logo 图!

不羁的心 提交于 2021-01-27 09:39:20
大家周末好,今天跟大家分享一些我近期收藏的帮你制作Logo的几个网站,如大家有需要,可通过如下几个网站进行设计制作哦~ 好了,下面直接进入正题。 1.酷文本图形生成器 介绍:酷文本是一个免费的图形生成器,用于网页和其他任何你需要一个令人印象深刻的标志没有很多设计工作。只需选择您想要的图像类型。然后填写表格,您将拥有自己创建的自定义图像。 网址: https://cooltext.com/ 2.HipsterLogo 介绍:在线文艺大头贴制作工具是一个款可以让你在线制作一张富有文艺青年风格的大头贴,让你的社交网络中展示的头像与众不同,根据有文艺范,只要你发挥自己的创造力,绝对可以制作出一张即个性有彰显魅力的作品。 网址: https://www.hipsterlogogenerator.com/ 3.logodesign 介绍:专注于与徽标设计有关的任何事物。 网址: http://www.logodesign.org/ 4.logogenie 介绍:在五分钟内设计完美的徽标。 网址: https://www.logogenie.net/ 5.logaster 介绍:用 logaster 轻轻松松设计您的 Logo。 网址: https://www.logaster.cn/ 6.logogarden 介绍:标志设计只需几分钟,而不是几天。 网址: https://www

责任链设计模式

吃可爱长大的小学妹 提交于 2021-01-26 23:32:15
1、责任链模式是一种对象的行为模式 在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链 请求在这个链上传递,直到链上的某一个对象决定处理此请求 发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求 系统可以在不影响客户端的情况下动态地重新组织和分配责任 2、责任链模式的结构 抽象处理者角色 public abstract class Handler { /** * 持有后继的责任对象 */ protected Handler successor; /** * 示意处理请求的方法,虽然这个示意方法是没有传入参数的 * 但实际是可以传入参数的,根据具体需要来选择是否传递参数 */ public abstract void handleRequest(); /** * 取值方法 */ public Handler getSuccessor() { return successor; } /** * 赋值方法,设置后继的责任对象 */ public void setSuccessor(Handler successor) { this.successor = successor; } } 具体处理者角色 public class ConcreteHandler extends Handler { /** * 处理方法,调用此方法处理请求 */ @Override

URL静态化与搜索引擎的关系?

偶尔善良 提交于 2021-01-26 20:30:33
网站有静态页面和动态页面之分。 静态URL又称为静态页面,是一个固定的网址,不包含任何参数或代码,通常以“.html”“.htm”“.xml”“.shtml”为后缀的结尾。动态URL又称为动态页面,通常以“.asps”“.asp”“.jsp”“. php ”“.perl”“.cgi”等后缀结尾,在页面的URL中也会包含一些特殊符号,例如:“?”“&”“=”等等。 如今很多网站的功能都是通过数据库来实现的,页面由程序生成,而不是在服务器上以静态文件出现。很早以前,搜索引擎是无法抓取动态页面的内容,虽然现在抓取技术的不断提高,但是动态页面可能会产生无限循环和大量的重复页面,这样会降低搜索引擎造的好感度,容易删除百度信息。 1、无限循环动态页面 例如:飞机订票网站,提供根据时间查询机票信息的功能,网站在编写程序的时候,会使用万年历功能,如果搜索引擎一直跟踪上面的链接,就会不停的抓取下一个页面,从而陷入无尽的循环中,就像百度镜像一样,而每个页面并没有实际的变化,这样就会影响搜索引擎的抓取效率。 2、重复动态页面 重复动态页面是指相同的内容对应不同的动态链接。动态页面会产生重复页面链接,而搜索引擎对于这种情况也会重复抓取,这样会造成搜索引擎的资源浪费。如果是静态页面,就不会产生重复页面。 什么是URL静态化?就是通过技术手段将动态URL重写成静态URL,经过重写后,没有改变原来的页面内容

肝了3个晚上,大佬把基于ssm框架实现的视频电影系统写出来了

好久不见. 提交于 2021-01-26 18:00:16
项目介绍 本系统使用Spring+SpringMVC+MyBatis架构,数据库使用MySQL,共分为以下四大模块: 1、登录注册及用户管理 提供登录注册以及个人基本资料的修改查询 2、资源管理 管理员从后端添加电影资源并赋予资源的信息如名称、图片、时长、电影上映时间、评分、导演、演员、类型、地区等信息,发布成功在后端以及用户页面军可查看播放。 3、评论管理 在增加互动性且维护良好环境的同时,对用户评论内置了敏感词汇过滤。 4、收藏管理 用户可以将喜欢的电影添加到收藏中心,便于随时观看影片。 项目适用人群 正在做毕设的学生,或者需要项目实战练习的Java学习者 需要(Java学习资料+面试文档+电子书籍+开发工具+项目视频)可以加Java群:1142951706 开发环境: jdk 8 intellij idea tomcat 8.5.40 mysql 5.7 所用技术: Spring+SpringMVC+MyBatis layui jsp 项目访问地址 前端访问地址 http://localhost:8090/index 后台访问地址 http://localhost:8090/admin/index admin/admin 项目截图 首页 热门电影 电影详情 电影播放 后端-敏感词 后端-评价列表 后端-收藏列表 后端-用户列表 数据库配置 数据库配置信息 _#配置文件_

Maven最全教程,看了必懂,看了都说好!

梦想与她 提交于 2021-01-26 07:51:32
点击上方 " 程序员小乐 "关注公众号, 星标或置顶 一起 成长 每天凌晨00点00分, 第一时间与你相约 每日英文 There is a time in life that is full of uneasiness.We have no other choice but to face it. 生命中总有那么一段时光,充满不安,可是除了勇敢面对,我们别无选择。 每日掏心话 读到一段话:“礼貌和教养不只是干瘪单薄的客套,还有推己及人的周到和体谅。这考验的不止是情商,还有你的善良。” 来自: 啤酒大泡泡 | 责编:乐乐 链接 : cnblogs.com/hzg110/p/6936101.html 程序员小乐(ID:study_tech)第 655 次推文 图片来自网络 往日回顾: 面试问烂的 Spring AOP 原理、SpringMVC 过程 正文    目前所有的项目都在使用maven,可是一直没有时间去整理学习,这两天正好有时间,好好的整理一下。 一、为什么使用Maven这样的构建工具【why】 ① 一个项目就是一个工程 如果项目非常庞大,就不适合使用package来划分模块,最好是每一个模块对应一个工程,利于分工协作。借助于maven就可以将一个项目拆分成多个工程 ② 项目中使用jar包,需要“复制”、“粘贴”项目的lib中 同样的jar包重复的出现在不同的项目工程中