自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

KHOST的博客

记录自己的学习历程,大部分来自转载,如有侵权联系删除.......

  • 博客(73)
  • 资源 (3)
  • 收藏
  • 关注

原创 SpringBoot 整合Shiro实现动态权限加载更新+Session共享+单点登录

一.说明Shiro是一个安全框架,项目中主要用它做认证,授权,加密,以及用户的会话管理,虽然Shiro没有SpringSecurity功能更丰富,但是它轻量,简单,在项目中通常业务需求Shiro也都能胜任.二.项目环境 MyBatis-Plus版本: 3.1.0 SpringBoot版本:2.1.5 JDK版本:1.8 Shiro版本:1.4 ...

2019-08-30 14:08:31 173

原创 从一个例子入门Mysql储存过程

例子-- 秒杀执行存储过程DELIMITER $$ -- 将分隔符; 转换为 $$-- 定义存储过程-- 参数: in 输入参数; out 输出参数-- row_count():返回上一条修改类型sql(delete,insert,update)的影响行数-- row_count: 0:未修改数据; >0:表示修改的行数; <0:sql错误/未执行修改sqlCREAT...

2019-08-30 14:08:26 107

原创 如何使用SpringBoot封装自己的Starter

一.说明我们在使用SpringBoot的时候常常要引入一些Starter,例如spring-boot-starter-web,官方为我们提供了几乎所有的默认配置,很好的降低了使用框架时的复杂度。所以在用xxx-starter的时候,可以不用费心去写一些繁琐的配置文件,即使必要的配置在application.properties或application.yml中配置就可以了,当你实现了一个S...

2019-08-30 14:08:20 224

原创 序列化框架的选型和比对

序列化通信将对象转换为字节数组,方便在网络中进行对象的传输。在网络通信中,不同的计算机进行相互通信主要的方式就是将数据流从一台机器传输给另外一台计算机,常见的传输协议包括了TCP,UDP,HTTP等,网络io的方式主要包括有了aio,bio,nio三种方式。当客户端将需要请求的数据封装好了之后就需要进行转换为二进制格式再转换为流进行传输,当服务端接收到流之后再将数据解析为二进制格式的内容,...

2019-08-30 14:08:08 159

原创 Java8让Excel的读写变得更加简单高效

Apache POI在业务开发中我们经常会遇到Excel的导入导出,而Apache POI是Java开发者常用的API。【https://poi.apache.org/components/spreadsheet/index.html】GridExcelUniversal solution for reading and writing simply Excel based ...

2019-08-30 14:08:02 2030

原创 Spring Boot 静态资源处理

做web开发的时候,我们往往会有很多静态资源,如html、图片、css等。那如何向前端返回静态资源呢?以前做过web开发的同学应该知道,我们以前创建的web工程下面会有一个webapp的目录,我们只要把静态资源放在该目录下就可以直接访问。但是,基于Spring boot的工程并没有这个目录,那我们应该怎么处理?一、最笨的方式我们首先来分享一种最笨的办法,就是将静态资源通过流直接返回...

2019-08-29 19:23:58 229

原创 Spring Boot WebSocket从入门到放弃

在构建Spring boot项目时已经提供webSocket依赖的勾选。webSocket是TCP之上的一个非常薄的轻量级层 ,webSocket主要的应用场景离不开即时通讯与消息推送,但只要应用程序需要在浏览器和服务器之间来回发送消息,就可以使用webSocket来降低客户端流量与服务器的负载。下面将基于Spring boot实现一个非常简单的HelloWorld程序,用来熟...

2019-08-29 19:22:45 320 1

原创 盘点一下企业最常用的几个 Spring Boot Starter

Spring Boot 简介Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。Spring Boot让我们的Spri...

2019-08-29 19:22:06 227

转载 设计实现一个轻量的开放API网关

如何设计实现一个轻量的开放API网关.文章地址:https://blog.piaoruiqing.com/blog/2019/08/05/开放api网关实践/前言随着业务的发展, 所对接的第三方越来越多, 各个业务系统面临着同样一个问题:如何让第三方安全快速接入. 此时有一个集验签、鉴权、限流、降级等功能于一身的API网关服务变得尤为重要.接下来将分享如何设计实现一个轻量级...

2019-08-29 19:21:19 434

原创 8种方案解决重复提交问题

1.什么是幂等在我们编程中常见幂等 select查询天然幂等 delete删除也是幂等,删除同一个多次效果一样 update直接更新某个值的,幂等 update更新累加操作的,非幂等 insert非幂等操作,每次新增一条 2.产生原因由于重复点击或者网络重发 eg: 点击提交按钮两次; 点击刷新按钮; 使用浏览...

2019-08-29 19:18:08 490 1

原创 SpringBoot整合MyBatis-Plus3.1详细教程

一.说明Mybatis-Plus是一个Mybatis框架的增强插件,根据官方描述,MP只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑.并且只需简单配置,即可快速进行 CRUD 操作,从而节省大量时间.代码生成,分页,性能分析等功能一应俱全,最新已经更新到了3.1.1版本了,3.X系列支持lambda语法,让我在写条件构造的时候少了很多的"魔法值",从代码结构上更简洁了.二.项目...

2019-08-29 19:17:35 371

原创 全方位认识DNS(实践篇)

在从理论到实践,全方位认识DNS(理论篇)中我们基本了解了DNS的整个协议原理,但是可能还会有着下面的疑问:1:为什么我想申请的域名都没了?2:DNS 域名还要备案,这是为什么啊?3:如何将刚申请的域名绑定到自己的网站呢?4:怎么才能看到那些在背后默默给我解析的域名服务器呢?5:他们说用一个什么文件就可以访问好多好多不存在的网站,是真的吗?6:可信任的域名服务器是怎么...

2019-08-29 19:14:20 262

原创 为什么要加 final 关键字

在开发过程中,由于习惯的原因,我们可能对某种编程语言的一些特性习以为常,特别是只用一种语言作为日常开发的情况。但是当你使用超过一种语言进行开发的时候就会发现,虽然都是高级语言,但是它们之间很多特性都是不太相同的。现象描述在 Java 8 之前,匿名内部类在使用外部成员的时候,会报错并提示“Cannot refer to a non-final variable arg inside a...

2019-08-29 19:08:31 125

原创 枚举类来实现单例模式

前言这是设计模式的第一篇文章,我们从单例模式开始入手,单例模式是 Java 设计模式中最简单的一种,只需要一个类就能实现单例模式,但是,你可不能小看单例模式,虽然从设计上来说它比较简单,但是在实现当中你会遇到非常多的坑,所以,系好安全带,上车。单例模式的定义单例模式就是在程序运行中只实例化一次,创建一个全局唯一对象,有点像 Java 的静态变量,但是单例模式要优于静态变量,静态变量在程...

2019-08-29 19:07:27 363

原创 线程休眠只会用 Thread.sleep?

线程休眠是 Java 开发经常会用到的一个手段,就是让当前线程睡一会儿,睡醒之后再继续运行。咱大多数程序员,多线程虽然学得不好,但线程休眠,无人不知,无人不晓,也都会用,不就是用 Thread.sleep 方法嘛!而且还将它用到那么绝,之前不是还有人写过休眠排序算法和休眠取时间的算法,再来回味下这么脑洞大开的两个算法: 休眠排序算法 休眠取时间算法 笑过之后,当然,这不是咋...

2019-08-29 18:41:27 1242

转载 如何处理生产环境Tomcat的catalina.out日志?

# 前言随着每天业务的增长,Tomcat 的catalina.out日志 变得越来越大,占用磁盘空间不说。要查看某个时候的日志的时候,庞大的日志让你顿时无从下手,所以日志的切割的变得刻不容缓。而且,切割后的日志,还可以定期清理掉久远的日志。# Tomcat 日志分割我们采用日期形式切割catalina.out 日志,因此采用cronlog 软件切割。1、安装...

2019-08-27 13:35:59 508

转载 SpringBoot整合Netty(附源码)

前言本篇文章主要介绍的是SpringBoot整合Netty以及使用Protobuf进行数据传输的相关内容。Protobuf会简单的介绍下用法,至于Netty在之前的文章中已经简单的介绍过了,这里就不再过多细说了。Protobuf介绍protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java...

2019-08-27 13:35:54 1317

转载 Java 12 个语法糖

本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java 语法糖的同时,了解这些语法糖背后的原理语法糖语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便...

2019-08-27 13:35:50 166

转载 最常见的Git错误都有哪些,如何解决它们?

如果您曾经与许多开发者一起开发一个大项目,那么使用 Git 作为版本控制是一个最好的选择。不过 Git 很复杂,使用过程中经常会犯各种错误。在本文中,我将讨论程序员在使用 Git 时所犯的一些常见错误以及如何解决它们。拼写错误的最后提交消息经过几个小时的编码后,您的提交消息可能存在很多拼写错误,好在有一个简单的解决方案:git commit --amend该命令将打开您的...

2019-08-27 13:35:45 148

转载 五种I/O模型和Java NIO源码分析

最近在学习Java网络编程和Netty相关的知识,了解到Netty是NIO模式的网络框架,但是提供了不同的Channel来支持不同模式的网络通信处理,包括同步、异步、阻塞和非阻塞。学习要从基础开始,所以我们就要先了解一下相关的基础概念和Java原生的NIO。这里,就将最近我学习的知识总结一下,以供大家了解。 为了节约你的时间,本文主要内容如下: 异步,阻塞的概念 操作系统I/O的...

2019-08-27 13:35:41 212

转载 JVM优化之逃逸分析与分配消除

在这期文章中,我们将要深入介绍一下逃逸分析(escape analysis)技术,这是JVM最有意思的优化手段之一。逃逸分析是JVM的一项自动分析变量作用域的技术,它可以用来实现某些特殊的优化,后续我们也会分析下这些优化。在开始之前,你只需要掌握一些HotSpot JVM的基本工作原理就可以了。要了解逃逸分析背后的基本原理,我们先来看下这段有问题的C代码——当然这个是没法用Java来写的...

2019-08-27 13:35:36 151

转载 Lambda 表达式

1什么是Lambda?我们知道,对于一个Java变量,我们可以赋给其一个“值”。如果你想把“一块代码”赋给一个Java变量,应该怎么做呢?比如,我想把右边那块代码,赋给一个叫做aBlockOfCode的Java变量:在Java 8之前,这个是做不到的。但是Java 8问世之后,利用Lambda特性,就可以做到了。推荐:JDK8新特性之Lambda...

2019-08-27 13:35:31 109

转载 聊聊轻量级JavaWeb服务框架

概要: 框架"轻量"与否可以从两方面来看待: 1) 框架本身的体量 - 例如小 jar 无依赖的苗条框架; 2) 用户使用框架是否获得各种便利而无阻隔("隔" 的含义参考王国维先生的人间词话) 单单"轻量"二字不足以说明框架的特性和使用方式 一定要说"轻量", 老码农倾向与第二种 - 用户使用框架是否获得各种便利而无阻隔 为了"轻量"而刻意使框架苗条化有时候不足...

2019-08-27 13:35:26 1810

转载 Netty到底是个什么鬼?有没有简单的理解方式?

作者:lyowish 来源:http://1t.click/7RY# 从HTTP说起有了Netty,你可以实现自己的HTTP服务器,FTP服务器,UDP服务器,RPC服务器,WebSocket服务器,Redis的Proxy服务器,MySQL的Proxy服务器等等。我们回顾一下传统的HTTP服务器的原理如下:1、创建一个ServerSocket,监...

2019-08-26 08:57:11 159

原创 Redis 事件机制详解

Redis 采用事件驱动机制来处理大量的网络IO。它并没有使用 libevent 或者 libev 这样的成熟开源方案,而是自己实现一个非常简洁的事件驱动库 ae_event。Redis中的事件驱动库只关注网络IO,以及定时器。该事件库处理下面两类事件: 文件事件(file event):用于处理 Redis 服务器和客户端之间的网络IO。 时间事件(time eveat)...

2019-08-26 08:57:06 2552

转载 非常接地气的架构和分层方法

1、背景说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护...

2019-08-26 08:56:58 202

转载 MongoDB 是什么?看完你就知道了

1.MongoDB是什么?用一句话总结MongoDB是一款为web应用程序和互联网基础设施设计的数据库管理系统。没错MongoDB就是数据库,是NoSQL类型的数据库。2.为什么要使用MongoDB?(1)MongoDB提出的是文档、集合的概念,使用BSON(类JSON)作为其数据模型结构,其结构是面向对象的而不是二维表,存储一个用户在MongoDB中是这样子的。{...

2019-08-26 08:56:52 491

转载 Maven 教程之 pom.xml 详解

简介什么是 pom?POM 是 Project Object Model 的缩写,即项目对象模型。pom.xml 就是 maven 的配置文件,用以描述项目的各种信息。pom 配置一览<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSche...

2019-08-26 08:56:47 280

转载 Spring整合mybatis中的sqlSession是如何做到线程隔离的?

项目中常常使用mybatis配合spring进行数据库操作,但是我们知道,数据的操作是要求做到线程安全的,而且按照原来的jdbc的使用方式,每次操作完成之后都要将连接关闭,但是实际使用中我们并没有这么干。更让人疑惑的点是,spring中默认使用单例形式来加载bean,而往往我们也不会改变这种默认,所以,是所有线程共享数据连接?让我们来看看真相!自然是要个栗子的:我们来看下spr...

2019-08-26 08:56:40 137

原创 详细的 MySQL 规范

一、数据库命令规范所有数据库对象名称必须使用小写字母并用下划线分割所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)数据库对象的命名要能做到见名识意,并且最后不要超过32个字符临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果...

2019-08-26 08:56:34 100

原创 入门爬虫

爬虫三要素:抓取、分析、存储通过url进行网页的抓取,当我们请求一个网页时,先通过域名解析到对应的ip地址,然后向浏览器发送请求,建立历TCP链接,服务器返回网页的内容。再由浏览器对内容进行解析。01基础的抓取1urllib 在Python2.x中我们可以通过urllib 或者urllib2 进行网页抓取,但是再Python3.x 移除了urllib2。只...

2019-08-26 08:56:20 373

转载 Logback配置文件

通过阅读本篇文章将了解到 日志输出到文件并根据LEVEL级别将日志分类保存到不同文件 通过异步输出日志减少磁盘IO提高性能 异步输出日志的原理 配置文件logback-spring.xmlSpringBoot工程自带logback和slf4j的依赖,所以重点放在编写配置文件上,需要引入什么依赖,日志依赖冲突统统都不需要我们管了。logback框架会默认加载cl...

2019-08-26 08:56:16 2154

转载 Redis实用监控工具一览

Redis已经成为web应用开发不可或缺的一个组成部分,在项目中的应用越来越广泛,这篇文章就来讲讲那些关于Redis监控的那点事。redis-benchmark1.1 简介第一个就介绍一下,Redis自带的性能检测工具redis-benchmark, 该工具可以模拟 N 个客户端同时发出 Y 个请求。可以使用 redis-benchmark -h 来查看基准参数。1.2 命令格式:...

2019-08-26 08:56:10 788

转载 Maven 教程之 settings.xml 详解

简介settings.xml 有什么用?从 settings.xml 的文件名就可以看出,它是用来设置 maven 参数的配置文件。settings.xml 中包含类似本地仓储位置、修改远程仓储服务器、认证信息等配置。 settings.xml 是 maven 的全局配置文件。 pom.xml 文件是本地项目配置文件。 settings.xml 文件位置settin...

2019-08-25 11:49:26 252

转载 三步搞定Spring Boot 缓存

本次内容主要介绍基于Ehcache 3.0来快速实现Spring Boot应用程序的数据缓存功能。在Spring Boot应用程序中,我们可以通过Spring Caching来快速搞定数据缓存。接下来我们将介绍如何在三步之内搞定Spring Boot缓存。1. 创建一个Spring Boot工程并添加Maven依赖你所创建的Spring Boot应用程序的maven依赖文件至少应该是下面的...

2019-08-25 11:49:21 151

转载 IntelliJ IDEA 构建maven多模块工程项目(详细多图)

食用前须知本文以a b c 三个模块为例来搭建项目,以达到通俗易懂的初衷模块a —– 基模块,就是人们常说的parent模块b —– 其他模块都需要使用的一些工具,比如时间工具,json工具等模块c —– 项目主要的内容,一般为聚合工程先简单讲一下maven的一些特点1.继承这个可以理解为java中的继承类似,父类定义的东西,子类如果你想用就拿过来用就可以。...

2019-08-25 11:49:14 2206

转载 InnoDB一棵B+树可以存放多少行数据?

一个问题?InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛。在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4...

2019-08-25 11:49:09 176

原创 Java 服务端乱象大盘点

查尔斯·狄更斯在《双城记》中写道:“这是一个最好的时代,也是一个最坏的时代。”移动互联网的快速发展,出现了许多新机遇,很多创业者伺机而动;随着行业竞争加剧,互联网红利逐渐消失,很多创业公司九死一生。笔者在初创公司摸爬滚打数年,接触了各式各样的 Java 微服务架构,从中获得了一些优秀的理念,但也发现了一些不合理的现象。现在,笔者总结了一些创业公司存在的 Java 服务端乱象,并尝试性地给出了一...

2019-08-25 11:49:05 174

转载 单点登录原理与简单实现

一、单系统登录机制1、http无状态协议web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求...

2019-08-25 11:49:00 130

转载 开发必备的线程池执行流程图

本文适合: 曾了解过线程池却一直模模糊糊的人 了解得差不多却对某些点依然疑惑的 不适合: 完全没看过的,建议你先去看看其他基础文章 看过,却忘得差不多了,建议你先去回顾下 本文能给你的阅读回报 适合的读者,尽可能让你彻底明白常用的线程池的知识相关点 不适合的读者,能有个不错的概念,神童另谈 废话少说,我们开始。下图,皆可自行保存,常常阅之...

2019-08-25 11:48:55 174

winSCPPortable交互

十分好用的文件上传下载工具,在与自己的服务器交互的时候可以用这个软件进行文件互传,不管时win下的还是Linux下的都十分方便

2018-07-03

pdf阅读器_福昕

东西好用,体积小巧,使用方便,插座简单,打开快速.........................................................

2018-07-03

FSCapture.rar

可以截图录屏取色,像素尺,体积小巧功能强大携带方便........

2018-07-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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