• Java高级特性——注解:注解实现Excel导出功能

    注解是 Java 的一个高级特性,Spring 更是以注解为基础,发展出一套“注解驱动编程”。这听起来高大上,但毕竟是框架的事,我们也能用好注解吗?的确,我们很少有机会自己写注解,导致我们搞不清楚注解是怎么回事,更别提用好注解了。既然这样,我们就从具体的工作出发,开发一个 Excel 导出功能。我相信,你在搞懂这个例子后,就能明白注解是怎么个用法。Excel 导出-需求拆解在后...

    Java 2020年12月01日 1123 0
  • 手写一个注解实现接口单位时间内的访问频率的拦截器

    目标相信大家都听过接口安全,接口限流等这些词语,那么本篇文章就是从最基本的问题开始,带大家手写一个控制接口单位时间内访问频率的demo。好了,下面开始上代码。环境+依赖spring boot工程就不在此搭建了,小编直接贴出核心依赖 <dependency> <groupId>org.springframework.boot</groupId&...

    Java 2020年11月30日 1212 0
  • php8正式发布了, PHP

    php8正式发布了,

    PHP8包含了许多新功能和优化,性能得到了进一步的提升,具体可参考官方原文介绍如下:Named arguments RFCPHP 7htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);PHP 8htmlspecialchars($string, double_encode: false);Spe...

    PHP 2020年11月28日 2214 0
  • 移动端UI一致性解决方案

    外卖UI一致性项目是外卖UI设计团队与研发团队共建的项目,目的是改善用户端体验的一致性,提升多技术方案间组件的通用性和复用率,降低整体视觉改版带来的研发成本。外卖技术团队通过在实践中不断总结经验,开发了一套完整的UI一致性解决方案,目前已经取得了一些成果,本文系实践经验分享。1. 背景1.1 行业现状与问题很多技术同学都知道,移动端往往比较侧重业务开发,这会导致人员规模不断扩大...

    Android 2020年11月27日 1622 0
  • PHP 8.0将于明天感恩节发布 加入JIT编译器支持 性能提升10% PHP

    PHP 8.0将于明天感恩节发布 加入JIT编译器支持 性能提升10%

    PHP 8.0 计划于明天美国感恩节发布。PHP 8.0 在加入了 JIT 编译器支持后引入了很多新的语言功能。PHP 8.0 是去年 PHP 7.4 版本之后又一次重大版本更迭,除了 JIT 编译器之外,该重大版本更新中还引入了大量改进。PHP 8.0 值得关注的改进包括● PHP 8.0 引入了备受期待的 Just In Time (JIT) 编译器,能够进一步提高 PHP...

    PHP 2020年11月26日 1597 0
  • SpringBoot2 整合OAuth2实现统一认证

    关于OAuth2不做介绍了,网络太多了。环境:2.2.11.RELEASE + OAuth2 + Redisredis用来实现token的存储。pom.xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-...

    Java 2020年11月25日 1482 0
  • SpringBoot2 整合 OAuth2 资源认证(保护)

    接着上一篇:SpringBoot2 整合OAuth2实现统一认证上一篇整合介绍了OAuth2的认证服务,接下来利用认证服务提供的token来包含我们的资源。环境:2.2.11.RELEASE + OAuth2 + Redispom.xml<dependency> <groupId>org.springframework.boot</group...

    Java 2020年11月25日 2431 0
  • JVM整体结构、执行流程以及2种架构模型

    JVM整体结构HotSpot VM 是目前市面上高性能虚拟机的代表作之一。方法区和堆:多线程共享虚拟机栈、本地方法栈、程序计数器:每个线程独有一份执行引擎:包含三部分:解释器,及时编译器(后端编译器),垃圾回收器它采用解释器与即时编译器并存的架构。在今天,Java 程序的运行性能早已脱胎换骨,已经达到了可以和 C/C++ 程序一较高下的地步。Java 代码执行流程只是能生成被 ...

    Java 2020年11月23日 1107 0
  • 工作流Activiti流程图各元素之任务单元介绍

    在工作流Activiti的使用中,任务是不可或缺的元素,通过各种任务,来完成作业系统中各个环节的执行,任务分为用户任务、脚本任务、Java服务任务、邮件任务、手工任务、业务规则任务、调用活动(子流程)任务,下面就一一介绍。一、用户任务用户任务用来设置必须由人员完成的工作。 当流程执行到用户任务,会创建一个新任务, 并把这个新任务加入到分配人或群组的任务列表中。二、脚本任务脚本...

    Java 2020年11月23日 2250 0
  • 自己动手编写一个Mybatis插件:Mybatis脱敏插件

    1. 前言在日常开发中,身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。否则容易造成个人隐私泄露,客户资料泄露,给不法分子可乘之机。但是数据脱敏不是把敏感信息隐藏起来,而是看起来像真的一样,实际上不能是真的。我以前的公司就因为不重视脱敏,一名员工在离职的时候通过后台的导出功能导出了核心的客户资料卖给了竞品,给公司造成了重大的损失。当然这里有数据管理的原因,但是脱敏仍...

    Java 2020年11月22日 1321 0
  • PHP微服务实践——手把手教你搭建PHP微服务 PHP

    PHP微服务实践——手把手教你搭建PHP微服务

    简介由于公司项目的发展,现在有SaaS架构的B2B、B2C项目,且项目提供的功能多而杂;并且有大部分功能是重复的。虽然,并发不大,但是从维护和开发的角度讲,开发和维护一套的成本要小很多;所以自己在业余时间探索PHP的微服务架构。基础知识普及:1、hyerf:https://hyperf.wiki/2.0/#/2、consul:https://www.consul.io/3、sw...

    PHP 2020年11月22日 2112 0
  • SpringBoot+shiro+mybatis实现权限登录

    SpringBoot+shiro+mybatis+Thymeleaf实现权限登录系统记录一下,学习shiro的一个小Demo:1.首先是底层数据库:-- ---------------------------- -- Table structure for role -- ---------------------------- CREATE TABLE `role` ( ...

    Java 2020年11月21日 1261 0
  • SpringBoot RabbitMQ消息可靠发送与接收

    环境: springboot2.2.11.RELEASE + RabbitMQ3.7.4RabbitMQ在以下情况会出现消息的丢失:交换机、队列、消息未持久化,mq重启后会出现消息丢失。生产者发出的消息第一步是投递到交换机,这一步可能因为网络原因导致失败。消息正常投递到交换机后,通过路由key路由到队列的时候出现失败。(没有符合的队列)代码层面,配置层面,考虑不全导致消息丢失。...

    Java 2020年11月19日 1651 0
  • Spring Security登录优雅集成图形验证码

    前言在SpringSecurity的默认登录支持组件formLogin中没有提供图形验证码的支持,目前大多数的方案都是通过新增Filter来实现。filter的方式可以实现功能,但是没有优雅的解决, 需要重新维护一套和登录相关的url,例如:loginProccessUrl,loginFailUrl,loginSuccessUrl,从软件设计角度来讲功能没有内聚。下面为大家介绍...

    Java 2020年11月19日 2320 0
  • PHP的另一个高效缓存扩展:Yac

    之前的文章中我们已经学习过一个 PHP 自带的扩展缓存 Apc ,今天我们来学习另一个缓存扩展:Yac 。什么是 Yac从名字其实就能看出,这又是鸟哥大神的作品。毕竟是 PHP 的核心开发人员,他的作品每次都不会让我们失望。鸟哥可以说是我们中国程序员的骄傲,他在 PHP 界有举足轻重的地位,大家可以自己搜索一下他的博客,虽说更新频率不高,但每篇文章都值得我们学习。Yac 是一个...

    PHP 2020年11月19日 1497 0
  • SpringBoot开发自己的Starter

    SpringBoot starter机制SpringBoot中的starter是一种非常重要的机制,能够抛弃以前繁杂的配置,将其统一集成进starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理,需要配置各种信息的困扰。SpringBoot会自动通过class...

    Java 2020年11月19日 1490 0
  • Spring Boot 优雅地实现接口参数校验

    今天继续为大家分享在工作中如何优雅的校验接口的参数的合法性以及如何统一处理接口返回的json格式。每个字都是干货,原创不易,分享不易。validation主要是校验用户提交的数据的合法性,比如是否为空,密码是否符合规则,邮箱格式是否正确等等,校验框架比较多,用的比较多的是hibernate-validator, 也支持国际化,也可以自定义校验类型的注解,这里只是简单地演示校验框...

    Java 2020年11月18日 1396 0
  • Spring Boot如何利用AOP巧妙记录操作日志?

    本篇要点简要回顾SpringAOP的相关知识点:关键术语,通知类型,切入点表达式等等。介绍SpringBoot快速启动测试AOP,巧妙打印日志信息。简单回顾SpringAOP的相关知识点SpringAOP的相关的知识点包括源码解析,为了加深印象,这边再做一个简短的回顾:1、AOP关键术语切面(Aspect):也就是我们定义的专注于提供辅助功能的模块,比如安全管理,日志信息等。连...

    Java 2020年11月18日 1859 0
  • 工作流Activiti初体验及在数据库中生成的表

    工作流Activiti内置了一些表,一共是28张,在我们项目启动的时候会在我们配置的数据库中创建这些表,下面就搭建一个小demo,去look一下Activiti生产的这些表。首先到Spring的官网,找到生成模板工程的地方(https://start.spring.io/),生成项目模板:把生成的模板工程,导入到开发工具中,这里以eclipse为例,导入的项目如下:在pom.x...

    Java 2020年11月16日 1384 0
  • Eureka+负载均衡+Hystrix+网关,我全给你讲清楚

    一、 网站的架构相信大家应该都经历过一个普通地网站发展成大型网站过程中的一种较为典型的架构演变历程。因为这是你在大学期间的必修课,就是搭建一个简单的网站,说不定你的毕业实际就是一个什么管理系统,对吧,这就是最初的网站搭建,但是当你踏入工作岗位之后或者随着你学习内容的扩展和深入,一个项目中会由多个子项目构成,但是一旦有了多个子项目,比如把淘宝网的订单系统和会员系统分开来看,就回产...

    Java 2020年11月15日 1340 0
  • Spring框架是怎么解决Bean之间的循环依赖的

    在我们的开发中,会不可避免的遇到Bean之间循环依赖的,所谓循环依赖,就是两个或者两个以上的Bean互相持有对方,这样在程序运行调用中,会出现这种循环依赖的现象,假设是两个Bean,当程序调用Bean A时,Bean A中依赖Bean B,在Bean A中调用Bean B时,Bean B中又依赖了Bean A,这样就形成了循环依赖,如下图:先从一个小例子来说明,使用Sprin...

    Java 2020年11月14日 1164 0
  • RabbitMQ分布式系统的应用

    由于之前做的项目中需要在多个节点之间可靠地通信,所以废弃了之前使用的Redis pub/sub(因为集群有单点问题,且有诸多限制),改用了RabbitMQ。使用期间得到不少收获,也踩了不少坑,所以在此分享下心得。怎么保证可靠性的?RabbitMQ提供了几种特性,牺牲了一点性能代价,提供了可靠性的保证。持久化当RabbitMQ退出时,默认会将消息和队列都清除,所以需要在第一次声明...

    Java 2020年11月14日 1114 0
  • shiro中setUnauthorizedUrl不起作用或setUnauthorizedUrl无效

    SpringBoot中集成Shiro的时候, 配置setUnauthorizedUrl("/notPermit")了,但是不起作用,只会在控制台打印UnauthorizedException异常信息:原因: Shiro源码中是这样做的: private void applyUnauthorizedUrlIfNecessary(Filter filter) { St...

    Java 2020年11月13日 2482 0
  • Shiro权限框架中获取当前登录用户的权限和角色信息

    在项目中需要获取当前登录用户的权限,并传递给前端。 1、在自定义的realm中,把userPermissions当做参数注册到session里面 @Override public AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { SimpleAuthoriz...

    Java 2020年11月13日 8902 0
  • springboot+shiro中使用 @RequiresPermissions和@RequiresRoles注解无效的解决方法(亲测有效)

    最近在使用shiro框架的时候,出现了@RequiresPermissions和@RequiresRoles无效的情况,经过查阅大佬的博客,记录一下解决方法。 在ShiroConfig中加入一下代码即可。 /** * 开启shiro aop注解支持. * 使用代理方式;所以需要开启代码支持; */ @Bean public Lifecyc...

    Java 2020年11月13日 6217 0
  • 基于JWT规范实现的认证微服务

    目录:一、微服务介绍二、随之而来的认证和授权问题三、项目架构通信四、用于签名以及验证的公钥和私钥令牌五、项目数据库同步问题一、微服务介绍微服务日渐流行,几乎所有流行语言都提供了两种框架实现,一是面向Web开发的大型框架,一是面向小型应用的微框架。轻量级框架作为微服务架构来说,是个好的选择。微服务架构有很多优势,诸如高可维护性,独立部署等等。微服务架构让我们可以针对特定语言选择最...

    Java 2020年11月13日 1327 0
  • PHPKafka 1.0 发布,支持全部 50 个 API PHP

    PHPKafka 1.0 发布,支持全部 50 个 API

    简介PHP Kafka 客户端,支持 PHP-FPM、Swoole 环境使用。通讯协议的结构基于 Java 版本中的 JSON 文件生成,这可能是有史以来支持消息类型最多的 PHP Kafka 客户端,支持全部 50 个 API。目前已实现消息的生成及消费,本组件仍处于开发及测试阶段。功能特性支持全部 50 个 API消息压缩支持 (gzip、snappy、lz4、zstd)P...

    PHP 2020年11月12日 1598 0
  • Java 里使用 long 类型的数据一定要在数值后面加上 “L”

    整形默认值为int,如果定义long 必须要加L来区分,浮点型默认值为double双精度,定义单精度float要加F来区分。

    Java 2020年11月12日 2839 0
  • 从0 开始手写一个 RPC 框架,大多数都不清楚的技术

    之前在 RPC 框架底层到底什么原理得知了RPC(远程过程调用)简单来说就是调用远程的服务就像调用本地方法一样,其中用到的知识有序列化和反序列化、动态代理、网络传输、动态加载、反射这些知识点。发现这些知识都了解一些。所以就想着试试自己实现一个简单的RPC框架,即巩固了基础的知识,也能更加深入的了解RPC原理。当然一个完整的RPC框架包含了许多的功能,例如服务的发现与治理,网关等...

    Java 2020年11月12日 938 0
  • 分布式定时任务调度框架实践

    分布式任务调度框架几乎是每个大型应用必备的工具,本文介绍了任务调度框架使用的需求背景和痛点,对业界普遍使用的开源分布式任务调度框架的使用进行了探究实践,并分析了这几种框架的优劣势和对自身业务的思考。一、业务背景1.1 为什么需要使用定时任务调度(1)时间驱动处理场景:整点发送优惠券,每天更新收益,每天刷新标签数据和人群数据。(2)批量处理数据:按月批量统计报表数据,批量更新短信...

    Java 2020年11月12日 1116 0