后端框架
文章平均质量分 90
还是转转
这个作者很懒,什么都没留下…
展开
-
在Spring中注入动态代理Bean
下面仿照Mapper的实现原理来自定义注解和代理工厂,实现自定义注入动态代理Bean。Class原创 2024-04-28 18:05:26 · 1648 阅读 · 4 评论 -
深入理解Spring Security
在理解Spring Security之前,需要先理解清楚和这几个概念。Authentication即认证,一般就是身份校验,比如最常见的用户名和密码校验。在一些简单的应用中,可能只需要认证就够了。但是大部分应用还有权限的概念。比如一个购物网站,普通用户输入用户名和密码之后,拥有浏览、购物、评论等权限。商家通过自己的用户名和密码登录之后,拥有查看销售数据、上传商品、设置商品价格等权限。网站管理员通过用户名和密码登录之后,拥有管理商家、设置网站营销活动等权限。所有的用户都需要登录,这就是身份认证。原创 2024-03-22 16:43:24 · 727 阅读 · 0 评论 -
认识和理解OCID
当你的用户需要访问服务器上受保护资源的时候,例如用户订单数据,用户购物车等,需要携带id_token。id_token是用户的身份标识,就像身份证一样。id_token是一个JWT Token。如果请求没有携带id_token,或者携带的id_token不合法,则表示本次请求认证不通过。你为其他人提供身份服务,其他应用需要从你的服务器获取用户信息。比如github提供身份服务,其他应用可以向github索要用户的信息,完成用户在他们平台的注册,即三方登录。原创 2024-02-29 15:44:02 · 1303 阅读 · 0 评论 -
过滤器执行顺序问题分析
最近碰到了一个关于过滤器的奇怪的问题。原创 2023-11-09 15:17:33 · 291 阅读 · 0 评论 -
Pod的内存使用率很高的问题分析
JVM并不会主动将未使用的内存归还给操作系统。原创 2023-09-25 17:57:30 · 3084 阅读 · 0 评论 -
从hibernate并发更新报错问题说起
Hibernate是JPA的实现,SpringDataJpa是在JPA的基础上封装的,主要是降低使用JPA的复杂性。原创 2023-06-05 16:24:49 · 991 阅读 · 0 评论 -
Hibernate懒加载问题
Hibernate懒加载获取到的是代理对象,只包含id。只要在实际使用时才会触发真正的数据库操作。原创 2023-02-14 11:43:28 · 252 阅读 · 0 评论 -
Maven生命周期和插件
maven的生命周期就是对所有的构建过程就行抽象和统一。maven从大量项目和构建工具中总结了一套高度完善的、易扩展的生命周期。这个生命周期包含项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有的构建步骤。Maven的生命周期是抽象的,其实际行为都是由插件来完成。转载 2022-11-23 17:57:42 · 267 阅读 · 0 评论 -
payara micro开发指南
微服务与payara在Java世界内部,Spring框架已成为微服务开发的事实上的标准,通过诸如Spring Boot和Spring Data之类的库,该框架易于使用,并且可以进行高效且大部分情况下轻松进行开发。但是,近年来也出现了许多其他的框架,声称可以缩短Java应用程序的启动时间并减少其内存占用。下面将进行简单介绍。Spring为了解决早期Java Enterprise的复杂性,Spring于2003年应运而生。Spring核心是依赖注入(DI)和面向切面编程(AOP),后来衍生出易于使用的S原创 2021-09-09 22:43:38 · 2028 阅读 · 0 评论 -
gRpc指南
本文翻译自官网。原文:https://grpc.io/docs/languages/java/quickstart/快速开始下面通过一个简单的样例,让你快速上手基于java的gRpc的使用。前置条件JDK7以上版本获取示例代码示例代码是grpc-java的一部分。从github仓库下载gprc代码压缩文件并解压,或者直接克隆代码:$ git clone -b v1.40.0 https://github.com/grpc/grpc-java进入示例代码路径:$ cd gprc-ja翻译 2021-08-26 23:13:20 · 447 阅读 · 0 评论 -
Dubbo原理与实践(2)
Dubbo是阿里开源的的rpc框架,现已成为Apache的顶级项目。Dubbo在国内的大公司中使用较多,具有良好的服务治理能力。在阿里停止维护一段时间后,2017年又重新开始维护,2.x的最新版本为2.7版本。2021年Dubbo更新到了3.0版本,相对于2.x版本,有了巨大的变化。博主将通过两篇文章分别对dubbo2和dubbo3进行简单的介绍,本文主要介绍dubbo3的变化。架构dubbo3服务发现dubbo3 与 dubbo2 的服务发现配置是完全一致的,不需要改动什么内容。但就实现原理上原创 2021-08-19 21:54:22 · 2395 阅读 · 0 评论 -
Dubbo原理与实践(1)
基本介绍Dubbo是阿里开源的的rpc框架,现已成为Apache的顶级项目。Dubbo在国内的大公司中使用较多,具有良好的服务治理能力。在阿里停止维护一段时间后,2017年又重新开始维护,2.x的最新版本为2.7版本。2021年Dubbo更新到了3.0版本,相对于2.x版本,有了巨大的变化。如无特殊说明,本文将以2.7版本为基础。架构dubbo架构如下图所示:节点角色说明Provider,暴露服务的服务提供方Consumer,调用远程服务的服务消费方Registry,服务注册与发现的注册原创 2021-07-21 23:25:01 · 214 阅读 · 0 评论 -
SpringCloud之Ribbon
在前文1.3章节中介绍过,使用SpringCloud的ribbon作为客户端负载均衡非常简单,只需要两步操作即可:1.注册消费者;2.通过调用被@LoadBalanced注解修饰的RestTemplate来实现面向服务的接口调用。为什么使用被@LoadBalanced注解修饰的RestTemplate发起调用就能实现ribbon客户端负载均衡呢?本文将结合源码进行详细解释。LoadBalancerAutoConfiguration在LoadBalanced注解的注释里面有这么一句话:Annotat原创 2021-07-27 00:51:45 · 106 阅读 · 0 评论 -
SpringCloud之Zuul
在SpringCloud基础的第5章节中介绍过SpringCloud的Zuul的使用。Zuul的原理是什么?本文将结合源码进行详细解释。在前文介绍Zuul的使用时,有以下几个步骤:在入口类上开启@EnableZuulProxy注解。在配置文件中创建请求地址和服务名的映射。创建一个过滤器类,继承ZuulFilter,来对转发的请求进行统一处理,如权限校验。Zuul执行流程ZuulControllerZuulController 是请求的入口,它继承于ServletWrappingContr原创 2021-07-27 16:05:10 · 2487 阅读 · 0 评论 -
SpringBoot自动装配原理解析
SpringBoot的一大优势就是省去了很多的配置,当SpringBoot启动的时候,在内部进行了自动装配的工作,使得开发人员无需配置或者只需要很少的配置就能直接开发业务。SpringBootApplication注解SpringBoot项目主函数入口的注解为SpringBootApplication,其定义如下:@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBo原创 2021-07-09 22:56:36 · 154 阅读 · 1 评论 -
基于token的登陆验证机制
常用的登录验证机制包括session和token。session简介做过Web开发的程序员应该对Session都比较熟悉,Session是一块保存在服务器端的内存空间,一般用于保存用户的会话信息。用户通过用户名和密码登陆成功之后,服务器端程序会在服务器端开辟一块Session内存空间并将用户的信息存入这块空间,同时服务器会在cookie中写入一个Session_id的值,这个值用于标识这个内存空间。下次用户再来访问的话会带着这个cookie中的session_id,服务器拿着这个id去寻找对应的se原创 2021-04-12 23:39:45 · 1540 阅读 · 0 评论 -
tornado之多进程服务
tornado多进程开启在前文中简单介绍过tornado的基本使用。tornado默认启动的是单进程,启动方式如下:if __name__ == "__main__": application = tornado.web.Application([(r"/", MainHandler)]) # application.listen(8888) server = HTTPServer(application) server.listen(8888) tornado.原创 2020-06-09 20:40:12 · 2432 阅读 · 0 评论 -
Spring Bean的生命周期和Spring容器
Spring Bean的生命周期众所周知,Spring中的bean由Spring容器负责管理,包括对象的整个生命周期:创建、装配、销毁。具体的生命周期通过下图可以描述:说明如下:Spring实例化一个bean,默认是单例的。Spring对bean进行依赖注入。如果bean实现了BeanNameAware接口,则将bean的id传给setBeanNameAware方法。如果bean实现了BeanFactoryAware接口,则将beanFactory实例传给setBeanFactory方法。原创 2020-06-01 21:23:21 · 672 阅读 · 0 评论 -
过滤器使用与bean注入
1 web.xml中各元素启动顺序在项目启动时,监听器listener最先初始化,然后是过滤器filter,最后是servlet。Spring监听器在启动时会读取spring配置文件,进行spring容器的初始化。springMVC的dispatcherServlet初始化时会读取springMVC的配置文件,进行springMVC容器的初始化。Spring容器初始化时会实例化各个bean。(个人原创 2017-08-04 15:24:42 · 5908 阅读 · 1 评论 -
前端参数请求和后端参数接受
参数请求与接收HTTP协议中定义了很多与服务端交互的方法,其中最基本的有四种,分别是GET,POST,PUT,DELETE,对应增删改查四种操作,最常用的是GET和POST。请求头类型Content-Type主要有:application/x-www-form-urlencoded,multipart/form-data和application/json。其中application/x...原创 2018-08-06 22:09:33 · 15444 阅读 · 0 评论 -
读书笔记:大型分布式网站架构设计与实践(3)
3 互联网安全架构随着移动物联网的兴起,以及Restful和Web Service等技术的大规模使用,HTTP协议因其使用方便以跨平台的特性,在Web开发和SOA领域得到了广泛应用,但其所涵盖的信息,大都是未经加密的明文,信息获取门槛的降低,也为应用架构的安全性与稳定性带来了挑战。本章一共分为六个小节,分别介绍了常见的Web攻击手段,常用的安全算法,摘要认证,签名认证,Https协议和OAut...原创 2018-10-12 15:52:08 · 229 阅读 · 0 评论 -
Hystrix-介绍与使用(下)
上篇中对hystrix的隔离和熔断作了基本的介绍,本文将说明Hystrix在项目中的实际使用。在开发中很多时候需要调用第三方接口或依赖,而第三方接口或依赖的响应时间是无法被调用方控制的。如果调用方发出大量的请求而长时间无响应,很可能会导致大量线程资源在阻塞中,拖垮服务器的性能。因此在调用第三方接口或依赖时使用hystrix进行隔离和熔断是有必要的。注解使用最常用的方式就是通过Hystrix注...原创 2018-09-29 16:28:48 · 1999 阅读 · 1 评论 -
读书笔记:大型分布式网站架构设计与实践(2)
2 分布式系统基础设施一个大型、成熟的分布式系统的背后,往往会涉及众多的支撑系统,也即所谓的分布式系统的基础设施,如第一章介绍过的分布式协作及配置管理系统Zookeeper,还有本章将要介绍的分布式缓存系统、持久化存储系统、分布式消息系统、搜索引擎,另外还有CDN系统、负载均衡系统、运维自动化系统等等。本章一共分为四个小节,分别介绍了分布式缓存,持久化存储,分布式消息系统和垂直化搜索引擎。2...原创 2018-09-30 18:50:39 · 513 阅读 · 0 评论 -
读书笔记:大型分布式网站架构设计与实践(1)
原计划花一年半时间看完十二本书,目录如下:(1)大型分布式网站架构设计与实践(陈康贤,电子工业出版社) (2)大型网站系统与Java中间件实践(曾宪杰,电子工业出版社) (3)Java并发编程实战(童云兰等译,机械工业出版社) (4)Java并发编程的艺术(方腾飞,机械工业出版社) (5)深入理解Java虚拟机(机械工业出版社) (6)Effective Java中文版(机械工业出版...原创 2018-09-14 17:02:34 · 375 阅读 · 0 评论 -
Thrift基础
Thrift是Facebook开源的一款rpc调用框架,提供给Apache之后叫做Apache Thrift。它是一种高效的、支持多种编程语言的远程服务调用框架。本文将以python和java为例来介绍thrift的开发和使用。1 简介Thrift中有几个重要的概念,下面将依次次介绍。TransportTransport是网络读写(socket,http)的抽象,用于和其他thrift...原创 2019-06-23 22:43:51 · 474 阅读 · 0 评论 -
线程池处理高并发请求
背景:本系统会在每个月特定时间接收上游系统发起的大量请求并进行处理,并将处理结果通过主动回调或提供查询接口的方式反馈给上游系统。原创 2018-06-01 18:35:54 · 8107 阅读 · 1 评论 -
SpringCloud基础(4)
6 服务注册中心Consul前文中介绍了Spring Cloud的核心组件,包括服务注册与发现组件Eureka,熔断器Hystrix,配置中心Spring Cloud Config和服务网关Zuul。在前文的基础上进行工作。先将Spring Cloud的版本进行升级:将pom.xml中的parent模块版本升级为1.5.4.RELEASE,同时将spring-cloud-dependencies组件原创 2017-09-21 18:50:19 · 324 阅读 · 0 评论 -
跨域请求不被允许
public class CorsFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse原创 2017-09-15 19:03:55 · 2109 阅读 · 0 评论 -
SpringCloud基础(0)
Spring Cloud是一系列框架的有序集合,是一个分布式系统基础设施的解决方案。利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。原创 2017-09-13 10:56:06 · 350 阅读 · 0 评论 -
SpringBoot基础(2)
10.数据源Jdbc连接数据库 在pom中添加依赖: mysql mysql-connector-java o原创 2017-08-31 16:09:53 · 306 阅读 · 1 评论 -
Spring集成Quartz
Spring集成Quartz有两种方法:JobDetailBeanMethodInvokeJobDetailFactoryBean在集成quartz之前有两个包是必须要引入的:<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version > 4.3.原创 2017-06-29 17:53:59 · 235 阅读 · 0 评论 -
从properties文件和数据库读取配置项
在《@Value值注入及配置文件组件扫描方式》这篇blog中,说过从properties文件读取配置项,然后通过@Value进行注入时需要注意的问题。实际上,有时候不光从properties文件中读取配置项,还要从数据库中读取配置项。从数据库中读取配置项可以通过PropertyPlaceholderConfigurer的子类来实现。 假设数据源配置在spring-datasource-local.原创 2017-08-11 11:44:48 · 1229 阅读 · 0 评论 -
事务与aop
事务配置AOP的基本概念就不说了,其作用是为了将一组操作提取出来,在必要的时候再将其插入到代码中去。提取出来的一组操作就是一个aop切面组件,事务是aop最常用的场景之一,严格上说是声明式事务。事务分为编程式事务和声明式事务。编程式事务指通过编码方式实现事务,管理使用TransactionTemplate,优点是灵活性更强,事务的粒度可以控制到语句级别。但缺点是对代码的侵入性较强。声明式事务是建立在原创 2017-07-24 20:26:53 · 1804 阅读 · 0 评论 -
Spring Boot中的参数校验
在软件开发中,通常需要对参数进行校验,比如某些参数不能为空,而且不光前端要校验,后端也要校验。那么后端在哪里校验参数?是在控制层还是service层?参数校验有多种实现方式,采用哪一种校验方式呢? 一般来说,把无业务语义的校验放在action层,用validation做校验,比如数据类型,是否为空,数据长度、格式等,有业务语义的校验放在service层。当然实际中往往并没有那么清晰,当校验足够简单时原创 2017-07-18 23:20:19 · 2338 阅读 · 1 评论 -
Maven项目通过配置文件读取证书问题
Maven项目通过配置文件读取证书问题在《Httpclient工具方法》这篇文中,通过@Value注入SSL证书文件的路径和密码,因为Spring的注入是在初始化bean的时候注入的,在类初始化的时候只有默认值,所以使用static静态块进行初始化则根本就读不到注入进来的值。后来使用了@PostConstruct注解来进行初始化,该注解表示在bean实例化之后执行此方法。 为什么要将证书路径和密码原创 2017-06-26 16:33:09 · 3268 阅读 · 0 评论 -
@Value值注入及配置文件组件扫描方式
spring配置文件对应的是父容器,springMVC配置文件产生的是子容器,前者一般配置数据源,事务,注解等,当然还可以进一步将一些配置细化到其他xml中;后者一般配置控制层相关的,如静态资源,视图解析器等。系统启动的时候,先初始化父容器,然后初始化子容器。这里会涉及一个问题,如果配置组件扫描时都配置全组件扫描,就会导致service组件会被扫描两次,造成事务无法处理。所以最好在springMVC原创 2017-05-22 23:08:00 · 2517 阅读 · 2 评论 -
SpringCloud基础(1)
1 服务注册中心、提供者和消费者 1.1创建服务注册中心。 创建一个maven工程,在pom.xml中引入依赖的内容:<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.原创 2017-09-12 18:57:15 · 332 阅读 · 0 评论 -
SpringCloud基础(2)
参考: http://blog.didispace.com/springcloud3/,http://blog.didispace.com/springcloud4/,http://blog.didispace.com/springcloud7/2 断路器在微服务架构中,存在着多个微服务,彼此之间可能存在依赖关系,当某个单元出现故障或者网络不通时,就会因为依赖关系形成故障蔓延,最终导致整个系统的瘫原创 2017-09-18 19:21:42 · 713 阅读 · 0 评论 -
SpringCloud基础(3)
4 消息总线在前面的配置中心篇中讲到过,可以通过消息总线刷新配置的更新。Spring Cloud Bus除了支持RabbitMQ的自动化配置之外,还支持现在被广泛应用的Kafka。下面将通过Kafka实现消息总线的功能。4.1 Kafka简介Kafka是一个由LinkedIn开发的分布式消息系统,于2011年初开源,现由Apache维护和开发。Kafka使用Scala实现,被用作LinedIn的活动原创 2017-09-21 13:47:36 · 577 阅读 · 0 评论 -
Mybatis根据数据库表自动生成实体类和xml映射文件
环境:maven+idea。1. 需要的jar包基本的spring和mybatis依赖包就不说了,在pom文件的build-&gt;plugins节点下需要添加(两个依赖包也可以直接添加到pom的依赖里面去,这里是为了直接通过maven的插件来生成。如果不是使用maven,可按照参考资料1来进行):&lt;plugin&gt; &lt;groupId&gt;org.mybati...原创 2018-03-22 20:05:06 · 8383 阅读 · 4 评论