- 博客(16)
- 收藏
- 关注
原创 Nacos配置中心和服务的注册发现
在上一篇中,我们已经把Nacos的集群搭建好了,那么既然已经搭建好了,就要在咱们的项目中去使用。Nacos既可以做配置中心,也可以做注册中心。我们先来看看在项目中如何使用Nacos做配置中心。Nacos配置中心在项目中使用Nacos做配置中心还是比较简单的,我们先创建SpringBoot项目,然后引入nacos-config的jar包,具体如下:<dependency> <groupId>com.alibaba.cloud</groupId> <
2020-11-13 15:25:35 993 1
原创 CSRF的原理与防御 | 你想不想来一次CSRF攻击?
CSRF是Cross Site Request Forgery的缩写,中文翻译过来是跨站请求伪造。这个漏洞往往能给用户带来巨大的损失,CSRF在等保安全检测中,也是一个非常重要的检测项。但是在我们的网站中,大部分都没有做CSRF的防御,小伙伴们想不想来一次CSRF攻击,体验一下做黑客感觉?如果想要做黑客,可要仔细的往下看哟~CSRF攻击的原理要想理解CSRF攻击的原理,我们从一个经典的案例出发...
2019-12-10 08:29:26 171
原创 数据库架构演变过程
背景在互联网初创时期,企业往往采用单体架构去搭建自己的应用系统,但是,随着企业的不断壮大,系统访问量不断随之上升,数据量也急剧增长。数据的存储是首先要解决的问题,在这个大数据时代,数据就是企业的命根子,数据库的单体架构很难满足数据的存储,这时,我们要对数据进行切分,数据的切分又分为垂直切分和水平切分。数据切分和数据库架构在数据切分之前,我们的所有业务都放在一个数据库中,比如:我们的用户业务,...
2019-10-31 16:55:52 871
原创 Spring Mobile——探测客户端设备和系统
今天闲来无事,浏览Spring的官方网站,发现了Spring Mobile项目,之前也看到过,还以为是针对手机端的项目,并没有细看。今天仔细看了一下,原来是可以探测请求端的设备和系统。比如是手机、平板、还是正常的PC网站。它是Spring MVC的扩展,主要的目的是简化手机web应用的开发。它的主要特点是:在服务端探测发起请求的设备,手机或平板等。管理站点,统计每个用户的偏好。根据请求设...
2018-11-02 16:21:05 339
原创 Zookeeper应用之——选举
请注意,此篇文章并不是介绍Zookeeper集群内部Leader的选举机制,而是应用程序使用Zookeeper作为选举。使用Zookeeper进行选举,主要用到了Znode的两个性质:临时节点(EPHEMERAL)序列化节点(SEQUENCE)每一个临时的序列化节点代表着一个客户端(client),也就是选民。主要的设计思路如下:首先,创建一个选举的节点,我们叫做/election。...
2018-11-02 16:20:35 148
原创 Zookeeper应用之——栅栏
栅栏(barrier)简介barrier的作用是所有的线程等待,知道某一时刻,锁释放,所有的线程同时执行。举一个生动的例子,比如跑步比赛,所有运动员都要在起跑线上等待,直到枪声响后,所有运动员同时起跑,冲向终点。在这个例子中,所有的运动员就是所有的线程,枪声是所有线程的共享锁,枪声一响,锁释放,所有线程同时执行。java的concurrent包中已经为我们提供了barrier的实现,它叫做...
2018-11-02 16:20:08 128
原创 Zuul 网关路由
路由是微服务架构中不可或缺的一部分,例如:/api/user映射到user服务,/api/shop映射到shop服务。Zuul是一个基于JVM的路由和服务端的负载均衡器。Zuul的规则引擎是用JVM语言写的,支持Java和Groovy。一、如何使用Zuul首先我们引入zuul的jar包,由于zuul要从注册中心寻找服务,所以也要引入eureka-client的jar包。<depend...
2018-11-02 16:19:32 290
原创 Redis分布式锁的try-with-resources实现
一、简介在当今这个时代,单体应用(standalone)已经很少了,java提供的synchronized已经不能满足需求,大家自然而然的想到了分布式锁。谈到分布式锁,比较流行的方法有3中:基于数据库实现的基于redis实现的基于zookeeper实现的今天我们重点说一下基于redis的分布式锁,redis分布式锁的实现我们可以参照redis的官方文档。实现Redis分布式锁的最...
2018-11-02 16:18:48 446
原创 初试JAVA 11
随着JAVA每半年发布一次新版本,前几天JAVA 11隆重登场。在JAVA 11中,增加了一些新的特性和api,同时也删除了一些特性和api,还有一些性能和垃圾回收的改进。作为一名一线的开发人员,JAVA 11给我们带来哪些便利之处呢?下面我们来体验一下。在Lambda表达式中使用var本地变量类型var是java 10提出的新概念,它可以从上下文中推断出本地变量的类型,从而提高代码可读性...
2018-11-02 08:24:57 116
原创 JAVA9模块化详解(二)——模块的使用
二、模块的使用各自的模块可以在模块工件中定义,要么就是在编译期或者运行期嵌入的环境中。为了提供可靠的配置和强健的封装性,在分块的模块系统中利用他们,必须确定它们的位置,然后决定他们如何关联彼此。2.1 模块的路径为了在确定在工件中定义的模块的位置,模块系统搜索模块的路径,它在主系统中定义。模块路径是一个序列,它的每一个元素要么是一个模块工件,要么是一个包含模块工件的目录。模块路径中的元素被第...
2018-11-02 08:23:58 790
原创 JAVA9模块化详解(一)——模块化的定义
前言java9已经出来有一段时间了,今天向大家介绍一下java9的一个重要特性——模块化。模块化系统的主要目的如下:更可靠的配置,通过制定明确的类的依赖关系代替以前那种易错的类路径(class-path)加载机制。强大的封装,允许一个组件声明它的公有类型(public)中,哪些可以被其他组件访问,哪些不可以。这些特性将有益于应用的开发者、类库的开发者和java se平台直接的或者间接地...
2018-11-02 08:23:15 3402
原创 nginx的基础应用(续)
一、简介上一篇文章我们介绍了nginx的基础应用,其中讲到了nginx作为代理服务器的使用,但是漏了一个重要的,也是使用非常普遍的特性——负载均衡。今天,我们将这段内容补上。通过多个实例进行负载均衡是一个比较常用的技术,它用来是资源利用最大化、提高通过率、降低延迟响应、确保容灾等。二、负载均衡的方法轮询——应用服务器间的请求按照轮询的方式分配;最小连接数——下一个请求将会分配给当前连接...
2018-11-02 08:22:26 95
原创 nginx的基础应用
一、简介今天我们将介绍一些nginx的简单应用,启动、停止nginx,重载nginx的配置,nginx配置文件的格式,如何配置nginx服务静态资源,如何配置nginx作为反向代理服务器。nginx有一个主进程和几个工作进程。主进程主要是读取和解析配置文件,以及保持工作进程工作;工作进程处理实际的请求。nginx利用基于事件的模型和运行的操作系统在工作进程之间有效地分配请求。工作进程的个数在配...
2018-10-31 15:29:07 102
原创 OAuth授权 | 看这篇就够了
背景上一篇我们介绍了单点登录(SSO),它能够实现多个系统的统一认证。今天我们来谈一谈近几年来非常流行的,大名鼎鼎的OAuth。它也能完成统一认证,而且还能做更多的事情。至于OAuth与SSO的区别,将在文章最后总结。如上图所示,用户通过浏览器(Browser)访问app1,他想用微信的账号直接登录,这样就免去了在app1系统的注册流程。这样的流程完全符合单点登录(SSO),但我们今天要...
2018-10-31 15:23:46 434
原创 单点登录(SSO)
背景在企业发展初期,企业使用的系统很少,通常一个或者两个,每个系统都有自己的登录模块,运营人员每天用自己的账号登录,很方便。但随着企业的发展,用到的系统随之增多,运营人员在操作不同的系统时,需要多次登录,而且每个系统的账号都不一样,这对于运营人员来说,很不方便。于是,就想到是不是可以在一个系统登录,其他系统就不用登录了呢?这就是单点登录要解决的问题。单点登录英文全称Single Sign ...
2018-10-31 15:23:08 351
原创 前后端分离 | 关于登录状态那些事
背景登录是一个网站最基础的功能。有人说它很简单,其实不然,登录逻辑很简单,但涉及知识点比较多,如:密码加密、cookie、session、token、JWT等。我们看一下传统的做法,前后端统一在一个服务中:如图所示,逻辑处理和页面放在一个服务中,用户输入用户名、密码后,后台服务在session中设置登录状态,和用户的一些基本信息,然后将响应(Response)返回到浏览器(Browse...
2018-10-31 15:22:12 4148
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人