周先生丶的博客

学一学,记一记

解读SpringMVC源码

自从Struts2彻底退出江湖之后,Spring MVC已经成为了表现层框架的扛把子。今天,我们就来窥探一下它的世界。 本文围绕Spring MVC的前端控制器DispatcherServlet展开,先介绍了它的类继承关系和初始化方法,然后介绍Spring MVC的九大组件和运行流程,最后带领大...

2019-01-20 16:48:08

阅读数:41

评论数:0

利用Aspect/Javassist/动态代理/Lombok等方式省略Controller的参数校验结果处理代码

开发过程中,后台的参数校验是必不可少的,所以经常会看到类似下面这样的代码 这样写并没有什么错,还挺工整的,只是看起来不是很优雅而已。 那么有什么办法可以省去这么繁琐的工作呢? 当然,利用自定义注解和Spring AOP可以做到,参考我的另一篇博客:利用自定义注解和Aspect实现方法参数...

2019-01-19 00:46:26

阅读数:82

评论数:0

负载均衡算法

不管是Nginx从集群中选出一台提供访问的服务器,还是RPC框架(Dubbo,Spring Cloud等)的消费者从注册中心提供的列表中选出一台提供者,都涉及到负载均衡。 下面介绍几种常见的负载均衡算法,包括轮询法、随机法、客户端地址哈希法、加权轮询法、加权随机法,然后讲解一下Dubbo的随机法...

2019-01-16 23:36:34

阅读数:96

评论数:0

互联网的安全算法和摘要、签名认证

本文主要总结一些互联网的安全算法和摘要、签名认证,内容来自《大型分布式网站架构设计与实践》。 一、常用的安全算法 常用的安全算法主要包括摘要算法、对称加密算法、非对称加密算法、信息编码等。 1、数字摘要 数字摘要也称为消息摘要,它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Ha...

2019-01-16 13:21:20

阅读数:116

评论数:0

Spring Boot的条件注解总结

Spring Boot的条件注解位于org.springframework.boot.autoconfigure.condition包下,其对应的处理类在它上面的Conditional注解里声明。 Spring Boot的条件注解 注解 处理类 说明 ConditionalOn...

2019-01-13 23:15:09

阅读数:55

评论数:0

自己动手写RPC框架

在上一篇博客中,介绍了RPC的主要概念和实现原理,然后基于TCP协议实现了一个非常简单的RPC小案例(点此回顾)。 现在,自我挑战一下,动手写一个RPC框架。 高能预警:本文涉及到的知识点如下 Spring Boot2:起步依赖、自动配置,让应用开发变得简单 Spring的Java Bea...

2019-01-13 02:08:02

阅读数:282

评论数:0

使用Java8并行流出现的数据库事务问题

今天,在做一个功能的时候,写到了大概类似下面这种代码 // 批量取消 @Transactional public void batchCancel(Long studyId) { // 1、根据学习id查询到所有的预约id List<Long&am...

2019-01-12 16:22:38

阅读数:19

评论数:0

初识RPC

一、应用的架构演进 更详细的相关内容介绍,请参考大型网站的架构。 单一应用架构:管理部署简单,无法支撑复杂的业务体系。 垂直应用架构:解决了单一应用架构面临的扩容问题,不同系统之间存在重叠的业务。 分布式应用结构:核心部分抽取出来作为单独的系统对外提供服务,达成业务之间的相互复用。 应...

2019-01-07 23:18:02

阅读数:470

评论数:0

Netty入门

Netty 5用户指南中文版 前言 1、传统IO编程 在学习Java基础的网络编程时,我们写过这样的代码 // 在10086端口启动服务监听 ServerSocket ss = new ServerSocket(10086); System.out.println...

2019-01-07 00:02:03

阅读数:270

评论数:0

Java8新特性

Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。 Java8 新增了非常多的特性,比如 ...

2019-01-06 20:14:02

阅读数:533

评论数:0

Java NIO

一、Java NIO简介 Java NIO(New IO,或称Non Blocking IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。N...

2019-01-06 16:46:21

阅读数:496

评论数:0

Dubbo服务调用过程

之前介绍了Dubbo的整体架构,现在我们来说一下Dubbo的调用过程。 直奔主题,先看一下官方的说明 节点角色说明: Provider: 暴露服务的服务提供方。 Consumer: 调用远程服务的服务消费方。 Registry: 服务注册与发现的注册中心。 Monitor: 统计服...

2019-01-05 22:30:47

阅读数:29

评论数:0

利用自定义注解和Aspect实现方法参数的非空校验

日常开发过程中,最常见的异常莫过于NullPointerException,相信大家都对它恨之入骨吧。我也是。 空指针异常出现的原因有以下几种: 调用 null 对象的实例方法。 访问或修改 null 对象的字段。 如果一个数组为null,试图用属性length获得其长...

2019-01-02 23:42:46

阅读数:698

评论数:0

Java8新特性——反射获取方法参数名(附开发工具开启方法)

参考:https://blog.csdn.net/f641385712/article/details/81291273 参考:http://www.mamicode.com/info-detail-2162647.html 方法的参数名,在很多时候我们是需要反射得到的。但是在java8之前,...

2019-01-02 20:25:45

阅读数:46

评论数:0

Spring-Boot2整合Dubbo

最近Dubbo又重新开始了维护,并且提供了和Spring-Boot整合的Dubbo-Starter。作为Dubbo的忠实使用者,真的是感动啊!这不,赶紧搭建个小Demo来爽了一把。 一、项目结构 我们一共搭建3个模块,common模块定义了服务提供者和服务消费者都需要使用的实体类和服务接口,p...

2019-01-02 13:23:50

阅读数:403

评论数:0

Dubbo的介绍和架构

一、前言 随着互联网的发展,网站应用的规模不断扩大,软件架构也在不断演进(上一篇博客有更详细的介绍点此传送)。 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。 此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。 垂直应用...

2019-01-01 16:38:44

阅读数:3172

评论数:0

大型网站的架构

一、大型网站的软件系统的特点 高并发,大流量 高可用 海量数据 用户分布广泛,网络情况复杂 安全环境恶劣 需求快速变更,发布频繁 渐进式发展 二、大型网站的架构演化发展历程 1、初始阶段的网站架构 最开始网站的应用程序、数据库、文件等所有的资源都在一台服务器上。最典型的就是LAM...

2019-01-01 13:28:14

阅读数:4467

评论数:3

基于ZooKeeper实现分布式锁(公平和非公平两种形式)

关于ZooKeeper,上一篇博客有更详细的介绍(传送门)。 一、分布式锁 在同一个jvm进程中时,可以使用JUC提供的一些锁来解决多个线程竞争同一个共享资源时候的线程安全问题,但是当多个不同机器上的不同jvm进程共同竞争同一个共享资源时候,juc包的锁就无能无力了,这时候就需要分布式锁了。 ...

2018-12-31 21:54:19

阅读数:409

评论数:0

ZooKeeper的主要功能和原理

本文转自:https://blog.csdn.net/weijifeng_/article/details/79775738 一 、Zookeeper功能简介 ZooKeeper是一个开源的分布式协调服务,由雅虎创建,是Google Chubby的开源实现。分布式应用程序可以基于ZooKeep...

2018-12-31 20:46:01

阅读数:58

评论数:0

字节码操纵技术——Javassist

一、背景 编程语言有静态语言和动态语言之分,例如:C、C++、Java等属于静态语言,JavaScript、Ruby、Python等属于动态语言。 动态语言的灵活性非常高,遗憾的是,至今为止,作为Java程序员的我尚未享受到动态编程的乐趣。 不过,Java也逐步提供了一些有限的动态编程机制,...

2018-12-30 19:00:58

阅读数:660

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭