
学习
文章平均质量分 70
湯神码
这个作者很懒,什么都没留下…
展开
-
@Async异步注解实战
一、应用场景同步: 同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果。异步: 异步调用则是只是发送了调用的指令,调用者无需等待被调用的方法完全执行完毕;而是继续执行下面的流程。例如, 在某个调用中,需要顺序调用 A, B, C三个过程方法;如他们都是同步调用,则需要将他们都顺序执行完毕之后,方算作过程执行完毕;如B为一个异步的调用方法,则在执行完A之后,调用B,并不等待B完成,而是执行开始调用C,待C执行完毕之后,就意味着这个过程执行完毕了。在Java中,一般在处理类似的场景之时,都是基于原创 2021-11-30 17:13:02 · 585 阅读 · 0 评论 -
Spring WebFlux 响应式Web框架
Spring WebFlux是随Spring 5推出的响应式Web框架。服务端技术栈Spring提供了完整的支持响应式的服务端技术栈。如上图所示,左侧为基于spring-webmvc的技术栈,右侧为基于spring-webflux的技术栈,Spring WebFlux是基于响应式流的,因此可以用来建立异步的、非阻塞的、事件驱动的服务。它采用Reactor作为首选的响应式流的实现库,不过也提供了对RxJava的支持。由于响应式编程的特性,Spring WebFlux和Reactor底层需要支持异转载 2021-03-22 22:25:04 · 1541 阅读 · 0 评论 -
深入理解java的反射机制
今天将从以下4方面来系统的学习一下java的反射机制:java反射是什么java反射(Reflection)底层实现原理java反射的简单演示java反射的应用场景1、java反射是什么首先大家应该先了解两个概念,编译期和运行期,编译期就是编译器帮你把源代码翻译成机器能识别的代码,比如编译器把java代码编译成jvm识别的字节码文件,而运行期指的是将可执行文件交给操作系统去执行,JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的转载 2020-11-22 09:48:52 · 199 阅读 · 0 评论 -
深入理解java动态代理的实现机制
今天将从以下5方面来系统的学习一下java动态代理的实现机制:什么是代理什么是静态代理什么是动态代理动态代理的实现机制动态代理的使用场景1、什么是代理相信大家都有购买过火车票或者机票的经历,有的人在携程买,有的在飞猪,也有的在微信上买等等,这里的携程飞猪微信也好都是受铁路部的委托代理售卖火车票,这里的携程飞猪就是代理类,铁路部就是委托类,这就是代理2、什么是静态代理所谓的静态代理就是在代码运行之前,代理类就已经存在,通常情况下, 静态代理中的代理类和委托类会实现同一接口或是派生自相同的转载 2020-11-22 09:38:13 · 206 阅读 · 0 评论 -
SpringBoot gzip压缩
SpringBoot gzip压缩在这个流量为王的互联网时代,流量就是金钱,而对于初创公司来讲,做到了海量的流量随之带来的就是一笔不小的流量费用,了解过CDN或者自己配置过nginx的同学可能都知道,他们都可以实现对应的gzip压缩,但那大部分都是基于一些静态文件的压缩,比如:jpg,png,html,css等,这个不是本文的重点,今天主要介绍的基于springboot的gzip压缩服务接口返回的response数据一、springboot的gzip压缩演示1、application.properti转载 2020-11-22 09:27:34 · 908 阅读 · 0 评论 -
深入理解java注解的实现原理
今天将从以下4个方面来系统的学习一下java注解什么是注解注解的用途注解使用演示注解的实现原理1、什么是注解注解也叫元数据,例如我们常见的@Override和@Deprecated,注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解一般常用的注解可以分为三类:一类是Java自带的标准注解,包括@Override(标明重写某个方法)、@Deprecated(标明某个类或方法过时)和@SuppressWarnings(标明要转载 2020-11-22 09:08:36 · 1146 阅读 · 0 评论 -
Linux less 命令
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。常用less命令打开日志文件less mylog.log定位到日志文件的最后一行:Shift + G往前一页一页翻页查看Ctrl + B向后搜索,?关键字全屏导航Ctrl + F - 向前移动一屏Ctrl + B - 向后移动一屏Ctrl + D - 向前移动半屏Ctrl + U - 向后移动半屏原创 2020-11-06 19:11:38 · 390 阅读 · 0 评论 -
Vue-cli 脚手架
vue-clivue-cli 官方提供的一个脚手架,用于快速生成一个 vue 的项目模板第一个 vue-cli 应用程序本节视频【视频】Vue 渐进式 JavaScript 框架-Vuecli-第一个 vuecli 应用程序什么是 vue-clivue-cli 官方提供的一个脚手架(预先定义好的目录结构及基础代码,咱们在创建 Maven 项目时可以选择创建一个骨架项目,这个骨架项目就是脚手架;可以参考我以前写的 LeeSite 项目骨架生成工具),用于快速生成一个 vue 的项目模板主要功转载 2020-06-10 11:39:21 · 220 阅读 · 0 评论 -
Vue-后端开发快速入门
Vue-后端开发快速入门一、Vue.js什么是 Vue本节视频【视频】Vue 渐进式 JavaScript 框架-Vue-MVVM 的实现者简介Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架,发布于 2014 年 2 月。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库(如:vue-router,vue-resource,vuex)或既有项目整合。MVVM 模式的实现者我们知道转载 2020-06-10 10:36:53 · 1824 阅读 · 0 评论 -
vue-router 路由库
vue-router 路由库一、第一个 vue-router 路由本节视频【视频】Vue 渐进式 JavaScript 框架-VueRouter-第一个路由概述Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。包含的功能有:嵌套的路由/视图表模块化的、基于组件的路由配置路由参数、查询、通配符基于 Vue.js 过渡系统的视图过渡效果细粒度的导航控制带有自动激活的 CSS class 的链接HTML5 历史转载 2020-06-10 09:17:32 · 611 阅读 · 0 评论 -
Dockerfile学习入门
一、带着问题学Dockerfile1、疑问我们都知道从远程仓库可以pull一个tomcat等镜像下来,然后docker run启动容器,然后docker exec -it 容器id /bin/bash进入容器,往webapps下仍我们的程序。等等这一系列操作,都需要人工一步步的去操作,那我问你:你没qa和生产环境的部署权限,你咋操作这些?这就需要将所有人工一步步操作的地方都写到Dockerfile文件里,然后将文件给到运维人员,他们build成镜像然后进行启动。2、举例比如:你要用tomcat部署一转载 2020-05-23 12:07:00 · 362 阅读 · 0 评论 -
Docker学习入门
一、历史演化1、演化史2、物理机时代2.1、图解一个物理机上安装操作系统,然后直接运行我们的软件。也就是说你电脑上直接跑了一个软件,并没有开虚拟机什么的,资源极其浪费。2.2、缺点部署慢成本高虚拟机都不开,直接上物理机部署应用,那成本能不高嘛资源浪费硬件资源没有合理利用不易迁移和增加机器每次迁移都要重新安装一模一样的运行环境等受限于硬件3、虚拟机时代3.1、图解一个物理机上虚拟化出来多个虚拟机,每个虚拟机上进行安装操作系统,然后在虚拟机上转载 2020-05-23 12:03:12 · 273 阅读 · 0 评论 -
Docker Compose 安装、卸载、MySQL实例
Docker Compose 安装、卸载、实例Compose 支持 Linux、macOS、Windows 10 三大平台。Compose 可以通过 Python 的包管理工具 pip 进行安装,也可以直接下载编译好的二进制文件使用,甚至能够直接在 Docker 容器中运行。前两种方式是传统方式,适合本地环境下安装使用;最后一种方式则不破坏系统环境,更适合云计算场景。Docker for Mac 、Docker for Windows 自带 docker-compose 二进制文件,安装 Docke原创 2020-05-23 01:10:22 · 1256 阅读 · 1 评论 -
EhCache-Java缓存框架
一 介绍EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认CacheProvider。Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。特性快速、简单多种缓存策略缓存数据有两级:内存和磁盘,因此无需担心容量问题缓存数据会在虚拟机重启的过程中写入磁盘可以通过转载 2020-05-13 17:23:00 · 231 阅读 · 0 评论 -
Java处理Exception的9个最佳实践
在Java中处理异常并不是一个简单的事情。不仅仅初学者很难理解,即使一些有经验的开发者也需要花费很多时间来思考如何处理异常,包括需要处理哪些异常,怎样处理等等。这也是绝大多数开发团队都会制定一些规则来规范对异常的处理的原因。而团队之间的这些规范往往是截然不同的。本文给出几个被很多团队使用的异常处理最佳实践。异常处理的 10 个最佳实践,这篇也推荐看下。1. 在Finally块中清理资源或者使用try-with-resource语句当使用类似InputStream这种需要使用后关闭的资源时,一个常见转载 2020-05-11 13:40:25 · 163 阅读 · 0 评论 -
Java-多Excel压缩zip文件导出
一、需求目标通过poi生成多个Excel文件需要把已生成的Excel文件压缩成ZIP文件支持客户客户端下载二、解决方案单线程生成Excel,单线程压缩文件多线程生成Excel,单线程压缩文件三、代码实例1、Excel工具类import java.awt.Color;import org.apache.poi.hssf.usermodel.HSSFCellStyle;...原创 2020-04-21 17:11:38 · 2360 阅读 · 1 评论 -
Nginx 极简教程
本项目是一个 Nginx 极简教程,目的在于帮助新手快速入门 Nginx。examples 目录中的示例模拟了工作中的一些常用实战场景,并且都可以通过脚本一键式启动,让您可以快速看到演示效果。一、Nginx 简介二、Nginx 入门三、Nginx 实战Http 反向代理Https 反向代理负载均衡网站有多个 webapp 的配置静态站点搭建文件服务器解决跨域四...转载 2020-05-06 14:28:39 · 257 阅读 · 0 评论 -
5分钟完成 Nginx 直播服务部署(直播 + 分流 + 画面水印)
前言最近帮朋友的公司部署了一套分流+水印的直播系统顺手打包成docker镜像,方便大家需要用到的时候开箱即用,不需要百度一些零碎的文章 也可做简单的直播服务,只需调整配置文件便可达到你的需求.需求:将直播流分流到两个云厂商的直播云,一个有水印,一个无水印。使用hls播放朋友需求的拓扑示意图:当前拓扑示意图(阿某云和腾讯云不方便放出推流和拉流地址,有兴趣的同学可以去申请玩一下)do...转载 2020-05-06 14:13:34 · 558 阅读 · 0 评论 -
Nginx+keepalived 实现高可用,防盗链及动静分离配置详解
一、Nginx Rewrite 规则1. Nginx rewrite规则Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好,提高收录量及排名等。语法:rewrite [flag]关键字 || 正则 || 替代内容 || flag标记Rewrite规则的flag标记主要有以下几种:last :相当于Apache里...转载 2020-05-06 13:58:27 · 294 阅读 · 0 评论 -
Nginx多策略流量分发
1、场景描述在实际生产环境中,流量分发有很多情况,下面主要讲讲以下两种流量分发场景:新版本上线,为了保证新版本稳定性,需要用线上的流量的引入,对新版本进行真实流量测试。如果新版本上线有问题,为降低影响范围,我们对流量的引入应该为从小到大的策略。现如今是移动端的时代,而移动端和pc端的设备的不同,需要对移动端和pc的流量进行不同的处理,同时可以针对两种设备的不同需求可以单独升级,可控性强,且...转载 2020-05-06 13:43:46 · 2384 阅读 · 0 评论 -
Nginx架构原理科普
Nginx(发音为“engine X”)是由俄罗斯人 Igor Sysoev 编写的一个免费的、开源的、高性能的 HTTP 服务器和反向代理,也是一个电子邮件(IMAP/POP3/SMTP)代理服务器,其特点是占有内存少,并发能力强。Nginx 因为它的稳定性、丰富的模块库、灵活的配置和较低的资源消耗而闻名 。目前 Nginx 已经被 F5 收购。Nginx由内核和一系列模块组成,内核提供web...转载 2020-05-06 14:31:44 · 182 阅读 · 0 评论 -
Nginx 使用场景介绍
一、前言本文只针对 Nginx 在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,毕竟只是我个人使用过和了解到过得。所以还请见谅,同时欢迎留言交流Nginx 能做什么反向代理负载均衡HTTP 服务器(包含动静分离)正向代理热启动以上就是我了解到的 Nginx 在不依赖第三方模块能处理的事情,下面详细说明每种功能怎么做二、...转载 2020-05-06 11:56:13 · 157 阅读 · 0 评论 -
Nginx学习入门
一、目录Nginx 简介及特点Nginx 应用场景Nginx 框架模型介绍Nginx 内部流程介绍Nginx 定制化模块开发Nginx 核心时间点模块介绍Nginx 分流模块介绍Nginx 动态 upstream 模块介绍Nginx query_upstrem 模块介绍Nginx query_conf 模块介绍Nginx 共享内存支持 Redis 协议模块介绍Nginx ...转载 2020-05-06 11:09:00 · 232 阅读 · 0 评论 -
SpringBoot工作常用注解总结
一、SpringBootcontroller层: 0、@Component @Component 泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。 1、@Controller @Controller 用来响应页面,表示当前的类为控制器。 2、@RestController @RestController 是@ResponseBody和@Contro...原创 2020-04-30 14:07:40 · 346 阅读 · 0 评论 -
Spring/SpringBoot常用注解总结
文章目录文章目录0.前言1. @SpringBootApplication2. Spring Bean 相关2.1. @Autowired2.2. Component,@Repository,@Service, @Controller2.3. @RestController2.4. @Scope2.5. Configuration3. 处理常见的 HTTP 请求类型...转载 2020-04-30 13:49:00 · 238 阅读 · 0 评论 -
Spring中@Transactional事务回滚(含实例具体解说,附源代码)
Spring中@Transactional事务回滚(含实例具体解说,附源代码)一、使用场景举例在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用。以下举个栗子:比方一个部门里面有非常多成员,这两者分别保存在部门表和成员表里面,在删除某个部门的时候,假设我们默认删除相应的成员。可是在运行的时候可能会出现这样的情况,我们先删除部门,再删除成员,可是部...转载 2020-04-30 11:50:30 · 730 阅读 · 0 评论 -
SpringBoot项目基础:统一校验,统一异常,统一响应,统一日志
一、前言一个后端接口大致分为四个部分组成:接口地址(url)、接口请求方式(get、post等)、请求数据(request)、响应数据(response)。如何构建这几个部分每个公司要求都不同,没有什么“一定是最好的”标准,但一个优秀的后端接口和一个糟糕的后端接口对比起来差异还是蛮大的,其中最重要的关键点就是看是否规范! 本文就一步一步演示如何构建起一个优秀的后端接口体系,体系构建好了自然就有了...转载 2020-04-27 16:14:56 · 1210 阅读 · 0 评论 -
SpringBoot项目基础:统一结果,统一校验,统一异常,统一日志
一、统一结果返回目前的前后端开发大部分数据的传输格式都是json,因此定义一个统一规范的数据格式有利于前后端的交互与UI的展示。1、统一结果的一般形式是否响应成功;响应状态码;状态码描述;响应数据其他标识符2、结果类枚举前三者可定义结果枚举,如:success,code,message@Getterpublic enum ResultCodeEnum { ...转载 2020-04-27 16:12:07 · 847 阅读 · 0 评论 -
RESTful API设计规范
RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。它的大原则容易把握,但是细节不容易做对。本文总结 RESTful 的设计细节,介绍如何设计出易于理解和使用的 API。一、URL设计1、动词+宾语RESTful的核心思想就是,客户端发出的数据+操作指令都是“动词+宾语”的结构,比如GET /articles这个命令,GET是动词,/articles是宾语,动词...转载 2020-04-27 14:33:29 · 181 阅读 · 0 评论 -
Kafka史上最全入门宝典
一、初识Kafka1、什么是 KafkaKafka 是由 Linkedin 公司开发的,它是一个分布式的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的基于发布订阅模式的消息引擎系统。2、Kafka 的基本术语**消息:**Kafka 中的数据单元被称为消息,也被称为记录,可以把它看作数据库表中某一行的记录。**批次:**为了提高效率, 消息会分批...转载 2020-04-27 09:35:04 · 639 阅读 · 0 评论 -
Zookeeper的基础概念
前言前面几篇以spring作为主题也是有些时日了,高并发分布式这个主题也挺大能说挺多东西的,也是再开了个坑,然后分P来慢慢跟进吧。 我和大部分人一样是一名学习者,不是布道者,更多的是自己的学习总结而不具有权威,进行总结,尽量让人看的简单是我的本意,然后有错则改,无则加勉是最好的,在此也希望大家共同进步。高并发分布式开发技术体系已然非常的庞大,从国内互联网企业使用情况,可发现RPC、Dubbo、...转载 2020-04-23 09:59:52 · 208 阅读 · 0 评论 -
MyBatis动态SQL常用的标签
作者:smile_lghttps://blog.youkuaiyun.com/smile_lg/article/details/712156191、用来循环容器的标签forEach,查看例子foreach元素的属性主要有item,index,collection,open,separator,close。item:集合中元素迭代时的别名,index:集合中元素迭代时的索引open:常用语wh...转载 2020-04-22 16:56:56 · 223 阅读 · 0 评论 -
Callable+ThreadPoolExecutor实现多线程并发并获得返回值
一、前言经常会遇到一些性能问题,比如调用某个接口,可能要循环调用100次,并且需要拿到每一次调用的返回结果,通常我们都是放在for循环中一次次的串行调用,这种方式可想而知道有多慢,那怎么解决这个问题呢?二、多线程为了解决以上问题,我使用的方式是多线程。多线程常规的有两种实现方式,即继承Tread类,实现Runnable接口,但是这两种实现方式,有一个共同的问题,就是没有返回值,对于我们来说,...转载 2020-04-21 14:17:26 · 968 阅读 · 0 评论 -
poi-Excel导入/导出工具类
一、POI导出报表要用到的包<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.13</version></dependency><depende...原创 2020-04-16 10:22:49 · 1233 阅读 · 1 评论 -
ForkJoin源码分析
一、什么是Fork/Join框架Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+2+。。+10...转载 2020-04-15 12:40:03 · 494 阅读 · 0 评论 -
ForkJoin深入理解
一、ForkJoinForkJoin是由JDK1.7后提供多线并发处理框架。ForkJoin的框架的基本思想是分而治之。什么是分而治之?分而治之就是将一个复杂的计算,按照设定的阈值进行分解成多个计算,然后将各个计算结果进行汇总。相应的ForkJoin将复杂的计算当做一个任务。而分解的多个计算则是当做一个子任务。二、ForkJoin的使用一、 创建Task使用ForkJoin框架,需要...转载 2020-04-15 12:08:33 · 245 阅读 · 0 评论 -
Fork/Join:JDK并发包-线程池-分而治之
1、Fork/Join简介1.1、分而治之一个非常有效地处理大量数据的方法。著名的MapReduce也是采取分而治之的思想。简单来说,就是如果你要处理1000个数据,但是你并不具备处理1000个数据的能力,那么你可以只处理其中的10个,然后分阶段处理100次,将100次的结果进行合并,那就是最终想要的对原始1000个数据的处理结果。1.2、Fork/Join框架Java中通过使用fork(...转载 2020-04-15 12:05:47 · 190 阅读 · 0 评论 -
Spring 为啥默认把bean设计成单例的?
Spring 为啥默认把bean设计成单例的?熟悉Spring开发的朋友都知道Spring提供了5种scope分别是singleton、prototype、request、session、global session。如下图是官方文档上的截图,感兴趣的朋友可以进去看看这五种分别有什么不同。今天要介绍的是这五种中的前两种,也是Spring最初提供的bean scope singleton 和 p...转载 2020-04-14 10:03:50 · 134 阅读 · 0 评论 -
项目结构约定及接口传参约定
项目结构约定及接口传参约定一、项目结构约定1、先看看阿里是怎么约定的我印象中,以前在看《阿里巴巴Java开发手册》时,好像有关于工程结构和应用分层相关的内容,于是我回翻了一下,果然有:它这里面讲的内容大概就是:关于一个正常的企业项目里一种通用的项目结构和代码层级划分的指导意见。按这本书上说的,一般分为如下几层:开放接口层终端显示层Web 层Service 层Manager ...转载 2020-04-13 14:54:43 · 376 阅读 · 0 评论 -
系统重构的道与术
代码重构一、重构原则1、何谓重构对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。另一种解释是:使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。2、为何重构改进软件设计:如果没有重构,程序的设计会逐渐变质,重构很像是在整理代码,你所做的就是让所有的东西回到应处的位置上。帮助找到bug:对代码进行重构,可以深入理解代码的作为...转载 2020-04-13 15:08:05 · 831 阅读 · 0 评论