Sunfy Blog

Life is diligent, no pains, no gains.
Viewed Times
Visitors In Total

更优雅的发HTTP请求(RestTemplate)

Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。

RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。 我之前的HTTP开发是......

如何从容应对复杂性

软件的复杂性,是一个很泛的概念。但是一直都是开发过程中的一个难题,本文旨在探讨如何去从容应对复杂性。

一 软件的熵增、构造定律1 熵增定律熵的概念最早起源于物理学,热力学第二定律(又称“熵增定律”),表明了在自然过程中,一个孤立的系统总是从最初的集中、有序的排列状态,趋向于分散、混乱和无序;当熵......

高并发Redis缓存那些事儿

Redis缓存常见问题及相应问题的解决方案 缓存穿透查询一个根本不存在的数据, 缓存层和存储层都不会命中, 通常出于容错的考虑, 如果从存储层查不到数据则不写入缓存层。缓存穿透将导致不存在的数据每次请求都要到存储层去查询, 失去了缓存保护后端存储的意义。 基本原因 自身业务代码或者数据出现问题。 一些恶意攻击、 爬虫等造成大量空命中。 解决方案1、缓存空对象 12345678910111......

LRU缓存算法的实现

一种常见的页面置换算法

LRULRU(Least Recently Used)是一种常见的页面置换算法,在计算中,所有的文件操作都要放在内存中进行,然而计算机内存大小是固定的,所以我们不可能把所有的文件都加载到内存,因......
LRU

CAS操作分析

Compare And Swap,比较并交换

CASCAS(Compare And Swap,比较并交换),通常值的是一种原子操作,针对一个变量,首先比较它的内存值与某个期望值是否相同,如果相同就给它赋值另一个值。正所谓比较并交换。 if......

深入理解 Java SPI机制

一种服务发现机制,自动加载文件里所定义的类。

SPI ,全称为 Service Provider Interface,是一种服务发现机制。在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类......
SPI

docker-compose 启动容器

docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。 docker-compose 是什么docker-compose 是一个用来把 docker 自动化的东西。有了 docker-compose 你可以把所有繁复的 docker 操作全都一条命令,自动化的完成。 为什么要用 docker-compose,他解决了什么用通俗的语言......

Spring推断构造方法

一个构造方法|多个构造方法

Spring推断构造方法 Spring中的一个bean,需要实例化得到一个对象,而实例化就需要用到构造方法。 一个构造方法一般情况下,一个类只有一个构造方法: 要么是无参的构造方法 要么是有......

MySQL微信表情包特殊字符问题

在微信登录功能使用MySQL数据库时,存在表情包特殊字符无法写入问题

问题描述微信用户昵称问题存在特殊字符时,无法保存。因为utf8只能保存三个字节,但是微信表情很多都是四个字节,故无法保存。 解决方式将微信字符集由utf8 设置为 utf8mb4 mysql字符......

BIO-NIO-AIO 模型

常见IO模型; BIO(Blocking IO) NIO(Non Blocking IO) AIO(NIO 2.0) ...
IO

jenkins的docker容器如何装配jdk maven和git

jenkins的docker容器如何装配jdk maven和git jenkins/jenkins:lts 容器安装这些工具,其实 jenkins 镜像中已经包含了jdk,我们只不过把容器中这些工具的路径找出来,配置下路径即可,所以有如下两种方式: 方式一(推荐)先进入 jenkins 的容器中 docker exec -it jenkins容器id /bin/bash jdk然后通过ech......

MQ入门和RabbitMQ基础

MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。 MQ的优势 应用解耦 提高系统容错性和可维护性 异步提速 提升用户体验和系统吞吐量 削峰填谷 提高系统稳定性 MQ的劣势 系统可用性降低 系统引入的外部依赖越多,系统稳定性越差。一旦 MQ 宕机,就会对业务造成影响。 系统复杂度提高 MQ 的加入大大增加了......
MQ

Docker 搭建 Jenkins 实现自动部署

Docker 搭建 Jenkins 实现自动部署 自动化部署(持续集成 / CI + 持续交付 / CD)不仅可以提升开发效率,让程序员更专注产品与业务的开发,还可以节省很多运维成本以及提升运维效率。其中,Jenkins 是自动化部署中最流行的工具,尤其是 Docker+Jenkins 的完美搭配,每个程序员都应该掌握这两个工具的使用。 环境配置操作系统:CentOS Linux relea......

Netty入门示例及核心功能了解

Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。 1、官网简介 Netty是一个NIO客户端服务器框架,可快速轻松地开发网络应用程序,例如协议服务器和客户端。它极大地简化和简化了网络编程,例如TCP和UDP套接字服务器。Netty 对 JDK 自带的 NIO 的 API 进行了良好的封装,解决了NIO 的类库和 API 繁杂, 使用麻烦: 需要......

shiro入门基础教程

shiro授权框架,个人理解主要适合单体应用,分布式应用和微服务架构模式下需要改造重新实现一些功能才能使用。 基础环境 maven依赖 123456789<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring-boot-starter&l......

java设计模式之访问者模式

在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。 介绍意图:主要将数据结构与数据操作分离。 主要解决:稳定的数据结构和易变的操作耦合问题。 何时使用:需要对一个对象结构中的对象......

java设计模式之迭代器模式

迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。 迭代器模式属于行为型模式。 介绍意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。 主要解决:不同的方式来遍历整个整合对象。 何时使用:遍历一个聚合对象。 如何解决:把在元素之间游走的责任交......

java设计模式之状态模式

在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。 介绍意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。 主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。 何时使用:代......