美码师,老码农一枚,唯美食与技术不能辜负,欢迎交流及打扰!
背景 在日常开发时,我们常常需要 在SpringBoot 应用启动时执行某一段逻辑,如下面的场景: 获取一些当前环境的配置或变量 向数据库写入一些初始数据 连接某些第三方系统,确认对方可以工作.. 在实现这些功能时,我们可能会遇到一些"坑"。
[TOC] 一、聊聊 WebSocket 从HTML5技术流行至今,WebSocket已经有非常广泛的应用: 在线游戏,提供实时的操作交互体验 社交平台,与好友实时的私信对话 新闻动态,获得感兴趣的主题信息推送 ... 这些场景,都需要服务器能主动实时的给浏览器或客户端推送消息,注意关键词是主动,还有实时!而在HTML5一统江湖之前,由于HTTP在推送场景下的"薄弱",我们需要借助一些复杂或者非标准的手段来实现。
SpringBoot 整合 PostGreSQL 一、PostGreSQL简介 PostGreSQL是一个功能强大的开源对象关系数据库管理系统(ORDBMS),号称世界上最先进的开源关系型数据库经过长达15年以上的积极开发和不断改进,PostGreSQL已在可靠性、稳定性、数据一致性等获得了很大的提升。
关于 H2 H2 数据库是一个纯 Java 实现的开源的嵌入式数据库,笔者第一次使用时还是在多年前的一个客户端项目中。当时就觉得这个数据库很方便,如果你希望你的应用程序能"自带数据库,随处运行”,那么H2是个不错的选择。
[TOC] 前言 在谈SpringBoot 2.x 之前,先来聊点别的: 首先是Java 语言,这门长期占据编程语言排行榜首位的语言到底有什么魔力?大家的看法是多种多样的,比如: 面向对象设计,使用简单,可以很快速的入门; 开源生态做得好,很多可重用的组件,拿来即用; 跨平台,高性能,是做后台开发的首选 还有一种观点很有意思:这是命好,每当人们觉得 Java 不行了的时候,总会有英雄横刀救美.. 其中,主要说的是: ":最初 Java 开发出来不知道有什么用的时候,发现可以用 Applet 在网页上做动画。
简介 前面的文章中,我们介绍了如何在SpringBoot 中使用MongoDB的一些常用技巧。那么,与使用其他数据库如 MySQL 一样,我们应该怎么来做MongoDB的单元测试呢? 使用内嵌数据库的好处是不需要依赖于一个外部环境,如果每一次跑单元测试都需要依赖一个稳定的外部环境,那么这样的测试是极不稳定的。
一、关于 MongoDB MongoDB 目前非常流行,在最近的DB-Engine排名中居第5位,仅次于传统的关系型数据库如 Oracle、Mysql。 然而在非关系型数据库领域,MongoDB已经持续成为佼佼者一段时间了,这与 MongoDB的一些优势存在一定关系: 无模式(Schema).
[TOC] 一、背景 在 补习系列(3)-springboot 几种scope 一文中,笔者介绍过 Session的部分,如下: 对于服务器而言,Session 通常是存储在本地的,比如Tomcat 默认将Session 存储在内存(ConcurrentHashMap)中。
一、简介 在 [补习系列(A3)-springboot redis 与发布订阅]() 一文中,我们介绍了使用 Redis 实现消息订阅发布的机制,并且给出了一个真实用例。然而,绝大多数场景下 Redis 是作为缓存被使用的(这是其主要优势)。
[TOC] 一、邮件协议 在谈谈代码之前,先来了解下邮件的基本协议。 电子邮件协议是基于TCP层定义的,主要有下面几个: SMTP协议SMTP 是 Simple Mail Transfer Protocol 的简称,即简单邮件传输协议,是发送协议。
简介 大多数的应用程序都离不开定时器,通常在程序启动时、运行期间会需要执行一些特殊的处理任务。比如资源初始化、数据统计等等,SpringBoot 作为一个灵活的框架,有许多方式可以实现定时器或异步任务。
目标 了解 单元测试的背景 了解如何 利用 springboot 实现接口的测试 了解如何 利用 mokito 做代码的 mock 一、About 单元测试 单元测试其实是一种廉价的技术,是由开发者创建运行测试代码,用于对程序模块(软件设计的最小单位)进行正确性检验的一种做法。
简介 AOP(面向切面编程)常用于解决系统中的一些耦合问题,是一种编程的模式通过将一些通用逻辑抽取为公共模块,由容器来进行调用,以达到模块间隔离的效果。其还有一个别名,叫面向关注点编程,把系统中的核心业务逻辑称为核心关注点,而一些通用的非核心逻辑划分为横切关注点 AOP常用于... 日志记录你需要为你的Web应用程序实现访问日志记录,却又不想在所有接口中一个个进行打点。
SpringBoot 整合Shiro,基于starter自动装配,老司机提供的最完整实例
一、目标 了解 Restful 是什么,基本概念及风格; 能使用SpringBoot 实现一套基础的 Restful 风格接口; 利用Swagger 生成清晰的接口文档。 二、Restful 入门 什么是REST 摘自百科的定义:REST即表述性状态转移(英文:Representational State Transfer,简称REST)是Roy Fielding博士(HTTP规范主要贡献者)在2000年的论文中提出来的一种软件架构风格。
对于几种常见的入参方式,了解如何进行校验以及该如何处理错误消息; 了解springboot 内置的参数异常类型,并能利用拦截器实现自定义处理; 能实现简单的自定义校验规则
一、背景介绍 最近微服务架构火的不行,但本质上也只是风口上的一个热点词汇。作为笔者的经验来说,想要应用一个新的架构需要带来的变革成本是非常高的。 尽管如此,目前还是有许多企业踏上了服务化改造的道路,这其中则免不了"旧改"的各种繁杂事。
目标 了解HTTP 请求/响应头及常见的属性; 了解如何使用SpringBoot处理头信息 ; 了解如何使用SpringBoot处理Cookie ; 学会如何对 Session 进行读写; 了解如何在不同请求间传递 flash参数 一、Http 头信息 HTTP 头(Header)是一种附加内容,独立于请求内容和响应内容。
目标 了解http常见的mime类型定义; 如何使用springboot 处理json请求及响应; 如何使用springboot 处理 xml请求及响应; http参数的获取及文件上传下载; 如何获得原始请求的字节流; 6.了解springboot 如何实现内容转换; 一、关于MIME MIME的全称是Multipurpose Internet Mail Extensions,即多用途互联网邮件扩展,尽管读起来有些拗口,但大多数人可能都知道, 这是HTTP协议中用来定义文档性质及格式的标准。
安装软件(opensuse) opensuse 通过zypper可以方便的进行软件管理,类似centos的yum 软件。 命令参考 软件包操作 搜索软件 zypper search package 安装软件 zypper install package 安装某个版本的软件包 zypper ins...
目录 前言 一、基础结构 二、添加代码 三、应用配置 四、日志配置 五、打包部署 小结 前言 springboot 最近火的不行,目前几乎已经是 spring 家族最耀眼的项目了。抛开微服务、技术社区这些推广因素不说,框架本身的确有非常多的优点。
目录 springboot-maven插件 1. 项目打包Jar 2. 项目完整构建 3. 本地包依赖 参考文档 springboot-maven插件 springboot-maven插件 repackage目标声明 Requires a Maven project to be executed.
[TOC] checkstyle checkstyle 用于对代码风格进行检查checkstyle-maven插件操作示例 mvn clean compile checkstyle:checkstyle 输出(target/site/checkstyle.
前言 接触 mongodb 已经有一段时间了,从一开始的不了解,到现在已慢慢适应这个nosql领域的佼佼者,还是经历了不少波折。 在进行数据库选型的时候,许多人总是喜欢拿 mongodb和mysql、oracle做比较,并总结出一套非常详尽的分析结果。
一、架构简介 目标 单机搭建mongodb分布式集群(副本集 + 分片集群),演示mongodb分布式集群的安装部署、简单操作。 说明 在同一个vm启动由两个分片组成的分布式集群,每个分片都是一个PSS(Primary-Secondary-Secondary)模式的数据副本集; Config副本集采用PSS(Primary-Secondary-Secondary)模式。
[TOC] 一、简介 MongoDB目前3大核心优势:『灵活模式』+ 『高可用性』 + 『可扩展性』,通过json文档来实现灵活模式,通过复制集来保证高可用,通过Sharded cluster来保证可扩展性。
一、简介 Mongodb复制集由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点。 Mongodb Driver(客户端)的所有数据都写入Primary,Secondary从Primary同步写入的数据,以保持复制集内所有成员存储相同的数据集,实现数据的高可用。
简介 针对Redis 实现性能监控的几种方法 一、使用info命令 命令说明 127.0.0.1:6380> info # Server redis_version:3.2.11 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:41a708998db14d05 redis_mode:standalone os:Linux 3.
背景 mongodb 提供了类sql的数据查询及操作方式,同时也包含了聚合操作、索引等多个机制; 按以往的经验,不当的库表操作或索引模式往往会造成许多问题,如查询操作缓慢、数据库吞吐量低下、CPU或磁盘IO飙升等问题。
列举mongodb监控的常用命令 1.监控统计 mongostat 可用于查看当前QPS/内存使用/连接数,以及多个shard的压力分布 命令参考 ./mongostat --port 27071 -u admin -p xxx --authenticationDatabase=admin --d...
简介 列举操作系统级监控常用的几个方法,建议收藏使用 CPU top 命令可用于监控系统整体负载,包括cpu、内存使用等,能够实时显示系统中各个进程的资源占用状况 输出样例 top - 19:37:41 up 192 days, 9:14, 1 user, load average: 0.
目录 一、Mongodb 的权限管理 二、鉴权方式 三、内部鉴权 四、数据库角色 五、相关操作 六、常见问题 七、扩展阅读 一、Mongodb 的权限管理 认识权限管理,说明主要概念及关系 与大多数数据库一样,Mongodb同样提供了一套权限管理机制。
一、文件编码 PEM (Privacy Enhancement Message),定义见 RFC1421 是一种基于 base64 的编码格式,常见于 linux/unix 下的证书编码 结构组成 == {header} body {tail}示例 -----BEGIN PUBLIC KEY----...
一、JMeter官网 下载地址http://jmeter.apache.org/download_jmeter.cgi Jmeter wikihttps://wiki.apache.org/jmeter 二、概念 ElapsedTime 消耗时间,与ResponseTime/SampleTime一致...
mongo单节点环境安装(linux) 安装包 下载地址: (https://www.mongodb.com/download-center) 用户权限/目录 创建 dbuser用户 groupadd dbgroup useradd dbuser -m -d /home/dbuser...
Californium 源码分析 1. Californium 项目简介 Californium 是一款基于Java实现的Coap技术框架,该项目实现了Coap协议的各种请求响应定义,支持CON/NON不同的可靠性传输模式。
一、DTLS -PSK PSK 是DTLS 定义的密钥交换方案之一,相对于公钥证书方案(如 ECDHA_RSA) 来说,其具备更加轻量化、高效的优点; 而目前 PSK方案应用也比较广泛。 关于DTLS协议可以看看前面的文章 DTLS要点解析 本次通过模拟的DTLS程序,对DTLS-PSK 握手流程进行抓包分析,以期加深对协议本身的理解。
一、DTLS DTLS 是指 Datagram Transport Level Security,即数据报安全传输协议; 其提供了UDP 传输场景下的安全解决方案,能防止消息被窃听、篡改、身份冒充等问题。
需求背景 jul 指的是java.util.logging,是 java 内置的日志模块,目前流行的Java日志组件还包括 jcl(common-logging)、slf4j/log4j/logback 等等 不同日志框架的定位和特性都存在差异,如 jcl、slf4j 提供的是日志门面(api)定义,log4j、logback则侧重于实现。
SSL/TLS 早已不是陌生的词汇,然而其原理及细则却不是太容易记住。本文将试图通过一些简单图示呈现其流程原理,希望读者有所收获。 一、相关版本 Version Source Description Browser Support SSL v2.
一、概述 cryptosystem密码学系统分为私钥系统及公钥系统。 私钥系统:指加解密双方事先做了私有信息约定,采用对称密钥算法; 公钥系统:指发送方用公开凭证对数据进行加密后传输,接收方使用私有凭证进行解密,采用非对称密钥算法; 对称加密分类 流加密(stream cipher),加密和解密双方使用相同伪随机加密数据流,一般都是逐位异或或者随机置换数据内容,常见的流加密算法如RC4。
编解码算法 1. Hex 编码 将二进制数据按16进制转换为字符串,1字节=2个字符,编码后体积为2倍。 2. Base64 由MIME规范定义的编码算法,其将3个字节(24位)编码为4个字符。 字符集包括64个,可表示6二进制位的数据,因此一个字符对应一组6bit的数据。
rabbitmq 重复确认导致消息丢失 背景 rabbitmq 在应用场景中,大多采用工作队列 work-queue的模式。 在一个常见的工作队列模式中,消费者 worker 将不断的轮询从队列中拉取最新消息,当队列负载压力增大时允许添加多个worker 进行处理。
keytool 简介 keytool 是java 用于管理密钥和证书的工具,官方文档其功能包括: 创建并管理密钥 创建并管理证书 作为CA 为证书授权 导入导出证书 主要格式keytool 采用 keystore 文件来存储密钥及证书,其中可包括私钥、信任证书;keystor...
一直使用 maven默认仓库,maven 的下载速度一直不快不慢;最近换了网络,maven秒变蜗牛,换了阿里云的镜像,瞬间飞快。 配置文件 ${USER_HOME}/.m2/settings.xml: 设置阿里云镜像 alimaven aliyun maven http://maven.
Ivy 是一个依赖管理工具,直观感受是其跟maven 的作用差不多;但这两个其实是不同的工具: maven 是面向整个项目的工程管理及构建工具;ivy 仅作为依赖管理工具,与ant 高度集成。 需要了解更多不同,可看看这里:http://ant.apache.org/ivy/m2comparison.html 几年前了解到这东西,也是因为 play! 框架内置的依赖使用它进行依赖管理,但至今国内仍然以maven 作为主流依赖管理工具,看来还是先入为主的问题。
一、关于证书 数字证书是一种认证机制。简单点说,它代表了一种由权威机构颁发授权的安全标志。 由来 在以前,传统网站采用HTTP协议进行数据传输,所有的数据几乎都用的明文,很容易发生隐私泄露。为了解决安全问题,大家开始考虑采用加解密的方案,于是乎诞生了公钥加密(非对称加解密)及签名算法。
一、openssl 简介 openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用、健壮、功能完备的工具套件,用以支持SSL/TLS 协议的实现。官网:https://www.openssl.