自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 初探 Quartz 任务执行框架

Quartz Demo搭建1、导入依赖的jar包:<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz --><dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0<

2021-02-21 22:32:17 143

原创 Java NIO学习

JavaNIO关于缓冲和阻塞内核缓冲与进程缓冲区用户程序进行IO的读写,基本上会用到read&write两大系统调用。read系统调用,并不是把数据直接从物理设备,读数据到内存。write系统调用,也不是直接把数据,写入到物理设备。read系统调用,是把数据从内核缓冲区复制到进程缓冲区;而write系统调用,是把数据从进程缓冲区复制到内核缓冲区。等待缓冲区达到一定数量的时候,再进行IO的调用,提升性能。至于什么时候读取和存储则由内核来决定,用户程序不需要关心。这个两个系统调用,都不负责数据

2021-02-07 21:08:59 112 1

原创 本地开发连接虚拟机Apollo报错记录

问题描述:这段时间在学习 Apollo 配置中心,所以在自己的虚拟机上通过 Docker 部署了一套 Apollo 环境。根据 Apollo 官网的步骤一步步进行下来都没有什么问题,Docker 上的 Java 客户端的 Demo 程序也可以运行。但是在自己本地的 IDEA 里跑的 Spring Boot 代码从 Apollo 配置中心获取在线配置的时候启动报错,报错信息如下:2021-01-31 22:19:30.481 INFO 4724 --- [ main] c.l.l.

2021-01-31 23:03:34 3724 3

原创 Nginx中Location和路由过程的理解

一、路由–Location的使用1、Location语法规则语法规则: location [=|~|~*|^~] /uri/ {… }首先匹配 =,其次匹配^~,其次是按文件中顺序的正则匹配,最后是交给 /通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。符号含义== 开头表示精确匹配^~^~开头表示uri以某个常规字符串开头,理解为匹配 url路径即可(禁止正则匹配)。~~ 开头表示区分大小写的正则匹配~*~* 开头表示不区分大小写的正则匹

2021-01-24 21:58:53 605

原创 Istio实现灰度发布

系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例

2021-01-17 23:20:13 941

原创 Istio部署示例项目及发布

Istio部署示例项目及发布目录Istio部署示例项目及发布Bookinfo体系结构部署应用程序安装步骤确定入口IP和端口删除bookinfo项目遇到的问题参考链接Istio部署完环境之后就可以进行示例项目bookinfo的部署以及发布。该应用程序显示有关书籍的信息,类似于在线书籍商店的单个目录条目。页面上显示的是书籍说明,书籍详细信息(ISBN,页数等)以及一些书籍评论。Bookinfo应用程序分为四个单独的微服务:productpage。该productpage微服务调用details和rev

2021-01-10 23:48:51 648

原创 Service Mesh 学习笔记

Service Mesh 笔记没有任何一种技术可以完美的解决软件开发中的出现的问题。出现的原因:微服务变得越来越多,越来越离散,交互也越来越多,为了解决微服务中的网络通信问题的痛点进行路由、流量控制,进行流量的转移系统的弹性能力,当系统出现故障,通过熔断、超时、重试提升系统的可靠性以及健壮性网络安全的问题,进行网络授权、进行身份认证服务的可视化,服务的可观测性,通过服务可视化的方式查看整个服务的状态、系统的资源使用情况定义所谓Service Mesh,就是一个用来进行请求转发的基础设施层,它

2021-01-03 22:14:48 272 3

原创 Kubernetes学习笔记

Kubernetes学习笔记对最近学习的一些 K8S 的一些知识点做的整理和总结。文章目录Kubernetes学习笔记Kubernetes基本概念和术语MasterNodePodLabel(标签)Replication ControllerDeploymentService(服务)外部系统访问 ServiceVolume( 存储卷 )Horizontal Pod AutoscalerKubernetes基本概念和术语Kubernetes 中的大部分概念如 Node Pod Replicatio

2020-12-27 21:26:45 203

原创 Swagger2——常用注解复习总结

Swagger-UISwagger-UI是HTML, Javascript, CSS的一个集合,可以动态地根据注解生成在线API文档。1、常用注解@Api:用于修饰Controller类,生成Controller相关文档信息@ApiModel()用于类 ;对类进行说明,表示一个返回响应数据的信息value–表示对象名description–描述@ApiModelProperty:用于修饰实体类的属性,当实体类是请求参数或返回结果时,直接生成相关文档信息@ApiOperat

2020-12-20 21:43:20 213

原创 Redis学习笔记

1.Redis简介Redis 是完全开源免费的,遵守BSD协议,是性能极高的nosql数据库,Key-Value 数据库,并提供多种语言的 API的非关系型数据库。Redis读的速度能达到110000次/s,写的速度能达到81000次/s 。Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。丰富的数据类型:有五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。Redis的所

2020-12-14 00:02:07 131

原创 前后端分离项目网关鉴权的实现——基于axios和SpringCloud Gateway

1.开发登录接口2.处理Token过期网关过滤器处理token过期,返回415状态码@Slf4j@Componentpublic class AuthFilter implements GlobalFilter { @Autowired private JwtUtils jwtUtil; @Autowired private JwtConfig jwtConfig; @Autowired private ObjectMapper objectMapper; priv

2020-12-06 22:56:56 521

原创 SpringCloud学习总结(二)——SpringCloud Gateway总结

Spring Cloud Gateway网关Gatewaty是在Spring生态系统之上构建的API网关服务,基于Spring5,Spring Boot2和Project Reactor等技术。Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能。例如:熔断、限流、重试等。1. Spring Cloud Gateway具有如下特性基于Spring Framework5,Project Reactor和Spring Boot2.0进行构建;动态路由:能够匹配

2020-11-29 18:15:58 219

原创 SpringCloud学习总结(一)——微服务基础、服务间通信及服务降级

SpringCloud 学习总结(一)一、初识微服务二、Eureka注册中心1. Spring Cloud Eureka:服务注册与发现2. Eureka简介3. 搭建Eureka注册中心4. 运行SpringCloud应用5. 搭建Eureka客户端6. 注册中心高可用7. 运行Eureka注册中心集群8. Eureka注册认证9. 术语解释10. Eureka常用配置三、Spring Cloud Zuul:API网关服务创建网关服务四、Spring Cloud Ribbon:微服务通信1. Ribbo

2020-11-22 22:09:19 307 1

原创 新手教程系列——SpringBoot基础

SpringBoot基础目录SpringBoot基础1. 初始化项目2. 配置文件3. 项目目录结构4. 编写项目代码1. 初始化项目从SpringBoot官网下载初始化项目:https://start.spring.io/,选择自己需要添加的依赖,下载到本地即可。从idea中新建:create new project —>Spring Initializr,然后选择自己需要的依赖即可。手工搭建一个SpringBoot项目:新建maven工程—>手工在pom文件里写入基本的相关依赖。

2020-11-16 00:16:16 119

原创 前端框架学习——VueX 的学习

VueX 的学习VueX解决了多个父子组件之间进行状态改变以及数据传递的问题,通过使用Vuex将多个组件频繁使用的值放入一个公共的 “容器” 中,间接的简化了组件间状态管理的问题。在具有VueX的Vue项目中,我们只需要把这些值定义在VueX中,就可以在整个Vue项目的组件中使用。在项目中安装vuexnpm i vuex -sindex.js中的内容import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)//创建VueX对象c

2020-11-09 00:36:10 101

原创 学习前端项目踩过的坑——记录下来

一些必要的步骤进行前端项目的学习新建项目npm -y initnpm i nrm -D(如果出现nrm包下载不下来的问题需要修改npm的远程仓库地址://设置淘宝源npm config set registry https://registry.npm.taobao.org//设置公司的源npm config set registry http://127.0.0.1:4873//查看源,可以看到设置过的所有的源npm config get registry)安装完之后可以到 项

2020-11-02 01:15:34 149

原创 Java虚拟机——JVM执行方法调用原理总结

重载与重写在 Java 程序里,如果同一个类中出现多个名字相同,并且参数类型相同的方法,那么它无法通过编译。也就是说,在正常情况下,如果我们想要在同一个类中定义名字相同的方法,那么它们的参数类型必须不同。这些方法之间的关系,我们称之为重载。重载的方法在编译过程中即可完成识别。具体到每一个方法调用,Java 编译器会根据所传入参数的声明类型(注意与实际类型区分)来选取重载方法。选取的过程共分为三个阶段:在不考虑对基本类型自动装拆箱(auto-boxing,auto-unboxing),以及可变长参数的

2020-10-25 22:26:31 220

原创 《深入理解Java虚拟机:JVM高级特性与最佳实践》第三版 第2.1-3.3章节学习笔记

一、Java内存区域与内存溢出异常Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。其中程序计数器、虚拟机栈和本地方法栈是线程私有的隔离数据区;方法区和Java堆区是由所有线程共享的数据区。程序计数器:是一块较小的内存空间,如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是本地(Native)方法,这个计数器值则应为空。当处理器执行指令时,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程

2020-10-18 19:53:33 99 1

原创 《Java并发编程实战》第15、16章学习笔记

一、原子变量与非阻塞同步机制当线程在锁上发生竞争时,智能的jvm不一定会直接挂起线程,而是根据对所持有时间的长短来判断是使此线程挂起还是自旋等待。原子变量提供了与volatile类型变量相同的内存语义,此外还支持原子的更新操作。与锁相比,volatile变量是一种更轻量级的同步机制,因为在使用这些变量时不会发生上下文或线程调度等操作。独占锁是一种悲观的锁实现技术,它假设最坏的情况,并且只有在确保其他线程不会造成干扰的情况下才能执行。对于细粒度的操作,还有一种乐观的方法,会更加高效:借助冲突检查机

2020-10-11 21:32:49 79

原创 《Java并发编程实战》第14章学习笔记

构建自定义的同步工具在自定义的同步工具类中,要避免使用轮询和休眠实现方法的阻塞。使用轮询等待方法操作并重试时,这种方法称为忙等待或自旋等待,此时会消耗大量的CPU时间;// 如果缓存在很长的一段时间里都为空且一直不发生变化,这种机制会造成大量的cpu时钟周期的浪费。public V take(){ while(true){ try{ if(!buffer.isEmpty()){ V item = buffer.take

2020-10-08 22:58:53 104

原创 《Java并发编程实战》第13章学习笔记

一、显式锁ReentrantLock实现了Lock接口,并提供了与synchronized相同的互斥性和内存可见性。在获取和释放ReentrantLock时,有着与进入同步代码块相同的内存语义,并且也提供了可重入的加锁语义。创建ReentrantLock机制的需求:内置锁无法中断一个正在等待获取锁的线程(有可能造成死锁)、无法在请求获取一个锁时无限的等待下去、内置锁必须在获取该锁的代码块中才能释放所以无法实现非阻塞结构的加锁规则。使用ReentrantLock的标准形式必须在finally

2020-09-27 21:52:23 102

原创 《Java并发编程实战》第10、11章学习笔记

一、避免活跃性危险避免产生死锁可以通过限制获取锁的顺序,如果所有线程都以固定的舒徐来获得锁,那么在程序中就可以避免产生顺序死锁的问题。在协作对象之间发生死锁时,往往由于持有锁的当前对象调用了某个外部方法,在这个外部方法中需要获取其他锁,从而产生在协作对象中获取相同两种锁时顺序不同的问题,导致死锁。开放调用:将方法级别的同步缩减到代码块中(临界区)级别的同步。在程序中应当尽量使用开放调用,开放调用更易于对程序进行死锁分析。资源死锁有两种形式:资源获取顺序导致的死锁和线程饥饿死锁。例

2020-09-20 21:51:19 80

原创 《Java并发编程实战》第8章学习笔记

第六周学习心得一、线程池的使用在线程池的使用过程中,任务与任务的执行策略中存在有隐性的耦合,不同类型的任务需要规定不同的执行策略。依赖性任务:提交给线程池的任务需要依赖其他的任务才能执行,需要对任务的执行策略(线程池的大小、配置参数)进行约束,否则将产生活跃性问题。使用线程封闭机制的任务:将对象资源封闭在单线程的任务线程中执行时,不需要保证对象资源是线程安全的,所以如果将Executor从单线程环境改为线程池环境将会失去线程安全性。对响应时间敏感的任务:对响应时间敏感的任务应当放入线程数量适

2020-09-13 23:13:01 91

原创 《Java并发编程实战》第6、7章学习笔记

第五周学习心得本周进行了《Java并发编程实战》第6、7章的学习,第6章主要通过围绕任务执行来设计应用程序,侧重于对Executor的使用。第7章主要讲了任务、线程和服务的取消与关闭操作带来的潜在问题以及如何避免这些问题。任务执行——针对Executor的使用在设计多线程应用程序时,需要明确任务的边界以及选择合理的任务执行策略,以便于更好的进行线程代码的独立编写。大多数服务器应用程序都提供了一种自然的任务边界选择方式:以用户请求为任务边界。无限制创建线程的不足:线程生命周期的开销非常高

2020-09-06 22:50:06 87

原创 《Java并发编程实战》第4、5章学习笔记

本周进行了《Java并发编程实战》第4、5章的学习,这部分的知识更加侧重于并发编程的思想。对象的组合对象的状态:由对象中的所有所有域以及域中所有被引用对象的域组成。状态空间:即对象中所有状态的可能的取值。状态空间越小,就越容易判断线程的状态。其中final类型的域的状态只有唯一的一个,所以尽量使用final类型的变量。不可变条件:用来判断状态的变化是否是有效的,也就是在多线程环境中对变量的各种条件约束。例如:在多线程环境中,变量的变化不能小于0且不能大于100,修改变量前需要参考之前的值

2020-08-30 22:49:32 92

原创 《Java并发编程实战》1-3章学习笔记

第三周学习心得synchronized 关键字获取的内置锁是同一线程范围内的可重入锁:在一个同步方法中调用同一synchronized关键字修饰的同步方法是可重入的。锁重入的特殊例子:当子类重写父类的synchronized方法,然后调用父类中的方法时,此时获取的锁为子类实例对象上的锁,该对象锁关联的计数器加一。联想到之前的一个问题:super.getClass().getName()获取的是子类的类名的问题。子类中的super和this关键字指向的其实都是子类的实例对象(实际运行时的对象

2020-08-23 18:06:01 98

原创 《Java核心技术:卷Ⅰ》第3章到第6章学习问题记录

第一周学习心得本周的安排任务为《Java核心技术:卷Ⅰ》的第3章、第4章、第5章和第6章的内容。学习的容侧重于Java的基础,以下几个知识点是本次查漏补缺中收集到的。Unicode和Java中的char类型的关系:char 类型是一 个采用 UTF-16 编码表示 Unicode 码点的代码单元。Arrays类的相关API的使用。非静态方法的隐式参数((this)是出现在方法名前的类对象的引用,静态方法没有this隐式参数。局部变量不会自动初始化,会报错,类变量会自动初始化。子类的方法不能访问

2020-08-10 01:10:45 88

原创 JAVA NIO的学习笔记

JAVA NIO的相关学习笔记关于缓冲和阻塞内核缓冲区与进程缓冲区阻塞与非阻塞关于NIOJava NIO概念的理解IO多路复用技术关于Reactor模式Reactor模式在Nio中的实现方式Reactor的单线程模式和使用工作者线程池的区别关于缓冲和阻塞JavaNIO的概念理解中对于缓冲和阻塞两个相关的概念理解需要透彻一点才能在以后的学习中不懵。内核缓冲区与进程缓冲区用户程序进行IO的读写,基本上会用到read&write两大系统调用。read系统调用,并不是把数据直接从物理设备,读数据到内

2020-08-02 16:29:40 130

空空如也

空空如也

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

TA关注的人

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