自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王劭阳的博客

你的指尖,有改变世界的力量!

  • 博客(339)
  • 收藏
  • 关注

原创 技术分享-Jenkins

Jenkins是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建测试和部署等功能。中文官网:https://www.jenkins.io/zh/。

2023-12-19 15:12:22 949

原创 ElasticSearch笔记03-ElasticSearch环境

单台Elasticsearch服务器提供服务,往往都有最大的负载能力,超过这个阈值,服务器性能就会大大降低甚至不可用,所以生产环境中,一般都是运行在指定服务器集群中。配置服务器集群时,集群中结点数量没有限制,大于等于2个结点既可以看做是集群了,一般高性能及高可用方面来考虑结点数量都是3个以上。

2023-07-02 15:56:32 516

原创 ElasticSearch笔记02-ElasticSearch入门

ElasticSearch的,视频教程里用的Version是7.8.0,所以,我们也是用7.8.0版本的ElasticSearch。,然后搜索7.8.0版本即可。按照视频里讲的,下载了Windows版本的ElasticSearch,当然,生产环境肯定是Linux版本的。

2023-06-17 17:47:30 1486 2

原创 ElasticSearch笔记01-ElasticSearch概述

Elastic Stack的核心:Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为Elastic Stack的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。The Elastic Stack,包括Elasticsearch、Kibana、Beats和Logstash(也称为ELK Stack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。

2023-05-27 15:02:49 779

原创 JUC并发编程与源码分析笔记-目录

视频学习地址:尚硅谷JUC并发编程,感谢阳哥,投币支持,不过学到后面,前面的好多又忘了,还是学的不够深刻哇!

2023-05-25 23:53:45 705

原创 JUC并发编程与源码分析笔记14-ReentrantLock、ReentrantReadWriteLock、StampedLock讲解

无锁→独占锁→读写锁→邮戳锁无锁:读和写同时进行,会产生大量的错误数据。独占锁(synchronized,Lock接口,ReentrantLock):此时就将读、写线程进行了有序排列,每次只处理一个请求,不会产生数据错乱,保证了数据一致性读写锁(ReentrantReadWriteLock):读写互斥,读读共享,适用于读多写少的情况,不过会有写锁饥饿问题和锁降级问题邮戳锁(StampedLock)

2023-05-25 23:36:26 409

原创 JUC并发编程与源码分析笔记13-AbstractQueuedSynchronizer之AQS

SemaphoreAQS的同步状态state成员变量/*** state=0:可以操作* state>0:有线程占用阻塞→排队→队列=state变量+CLH双端队列。

2023-05-08 21:44:50 404

原创 JUC并发编程与源码分析笔记12-Synchronized与锁升级

在Java语言里面一个对象如果计算过哈希码,就应该一直保持该值不变(强烈推荐但不强制,因为用户可以重载hashCodc()方法按自己的意愿返回哈希码),否则很多依赖对象哈希码的API都可能存在出错风险。而作为绝大多数对象哈希码来源的Object::hashCode()方法,返回的是对象的一致性哈希码(ldentity Hash Code),这个值是能强制保证不变的,它通过在对象头中存储计算结果来保证第一次计算之后,再次调用该方法取到的哈希码值永远不会再发生改变。

2023-03-17 00:20:35 302

原创 JUC并发编程与源码分析笔记11-Java对象内存布局和对象头

在HotSpot虚拟机里,对象在堆内存中的存储布局可以划分为三个部分:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。

2023-03-05 12:05:25 466

原创 JUC并发编程与源码分析笔记10-聊聊ThreadLocal

i < 5;j ++) {System . out . println("总共:" + house . count);int count;count ++;} }i < 5;j ++) {System . out . println("总共:" + house . count);int count;count ++;} }i < 5;i ++) {

2023-03-04 11:30:45 350

原创 JUC并发编程与源码分析笔记09-原子类操作之十八罗汉增强

AtomicLong:线程安全,可允许一些性能损耗,要求高精度时使用,保证精度,性能代价,AtomicLong是多个线程对单个热点值value进行原子操作。LongAdder:需要在高并发下有较好的性能表现,对值精确度要求不高时候,可以使用,保证性能,精度代价,LongAdder是每个线程拥有自己的槽位,各个线程一般只对自己槽中的那个值进行CAS操作。场景:低并发下全局计算,AtomicLong能保证并发下计数的准确性,内部通过CAS来解决并发安全性问题。

2023-02-25 20:06:44 615

原创 JUC并发编程与源码分析笔记08-CAS

再次强调,由于CAS是一种系统原语,原语属于操作系统用语范畴,是由若干条指令组成的,用于完成某个功能的一个过程,并且原语的执行必须是连续的,在执行过程中不允许被中断,也就是说CAS是一条CPU的原子指令,不会造成所谓的数据不一致问题。一个线程获取到变量的值是A,它打算把变量的值改为B,不过这时候另一个线程优先级更高,提前将A改为了B,然后又将B改为了A,原始线程在进行CAS的时候,依然是成功的,但是原始线程并不知道,变量的值已经发生过变动,这可能就是有问题的。

2022-12-11 22:47:06 329

原创 JUC并发编程与源码分析笔记07-volatile与JMM

volatile可见性、禁重排、没有原子性。内存屏障︰是一种屏障指令,它使得CPU或编译器对屏障指令的前和后所发出的内存操作执行一个排序的约束,也叫内存栅栏或栅栏指令。volatile写之前的操作,都禁止重排序到volatile之后。volatile读之后的操作,都禁止重排序到volatile之前。volatile写之后volatile读,禁止重排序。

2022-12-11 17:51:09 463

原创 JUC并发编程与源码分析笔记06-Java内存模型之JMM

CPU的运行并不是直接操作内存而是先把内存里边的数据读到缓存,而内存的读和写操作的时候就会造成不一致的问题。JVM规范中试图定义一种Java内存模型(Java Memory Model,简称JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念并不真实存在它仅仅描述的是一组约定或规范,通过这组规范定义了程序中(尤其是多线程)各个变量的读写访问方式并决定一个线程

2022-12-04 22:21:26 362

原创 JUC并发编程与源码分析笔记05-LockSupport与线程中断

LockSupport是包下的一个类,可以理解成是对Lock类的扩展。在里有三个方法:、、。一个线程不应该由其他线程来强制中断或停止,而是应该山线程自己自行停止,自己来决定自己的命运。所以,,,都已经被废弃了。在Java中没有办法立即停止一条线程,然而停止线程却显得尤为重要,如取消一个耗时操作。因此,Java提供了一种用于停止线程的协商机制―—中断,也即中断标识协商机制。中断只是一种协作协商机制,Java没有给中断增加任何语法,中断的过程完全需要程序员自己实现。若要中断一个线程,你需要手动调用该线程的

2022-12-03 23:38:25 479

原创 JUC并发编程与源码分析笔记04-说说Java“锁”事

认为自己在使用数据时不会有别的线程修改数据或资源,所以不会添加锁。在Java中是通过使用无锁编程来实现,只是在更新数据的时候去判断,之前有没有别的线程更新了这个数据。如果这个数据没有被更新,当前线程将自己修改的数据成功写入。如果这个数据已经被其它线程更新,则根据不同的实现方式执行不同的操作,比如放弃修改、重试抢锁等等。适合读操作多的场景,不加锁的特点能够使其读操作的性能大幅提升。

2022-11-28 23:33:55 197

原创 JUC并发编程与源码分析笔记03-CompletableFuture

Future接口(FutureTask实现类)定义了操作异步任务执行的一些方法,如获取异步任务的执行结果、取消任务的执行、判断任务是否被取消、判断任务执行是否完毕等。找到,看到里面定义的方法,这些方法就是我们需要关注的方法。Future接口可以为主线程开一个分支任务,专门为主线程处理耗时和费力的复杂业务。Future是Java5新加的一个接口,它提供了一个异步并行计算的功能,如果主线程需要执行一个很耗时的计算任务,我们就可以通过Future把这个任务放到异步线程中执行,主线程继续处理其他任务或者先行结束

2022-11-27 21:56:28 268

原创 JUC并发编程与源码分析笔记02-线程基础知识复习

如果用户线程全部结束意味着程序需要完成的业务操作已经结束了,守护线程随着JVM一同结束工作,方法必须在start()之前设置,否则报异常。

2022-11-26 17:10:59 537

原创 JUC并发编程与源码分析笔记01-本课程前置知识及要求说明

课程使用IDEA来讲解,要求熟练使用IDEA相关操作。

2022-11-26 15:29:25 588

原创 Shiro笔记03-与Spring Boot整合

创建一个Maven工程添加配置文件添加application.yml配置文件,注意修改数据库的连接参数。添加启动类实现登录认证后端接口服务实现创建用户表,这个在Shiro笔记02-基本使用里有。创建实体类,使用Lombok插件简化代码。创建mapper、service、serviceImpl。自定义Realm编写配置类编写Controller启动服务,测试代码,首先把数据库里的密码改成md5加盐加密3次后的结果,浏览器访问:http://localhost:8080/login

2022-11-26 12:04:58 424

原创 Shiro笔记02-基本使用

Shiro默认的登录认证是不带加密的,如果想要实现加密认证需要自定义登录认证,自定义Realm继承并重写方法。目前,没有集成SpringBoot,所以,配置信息,还要在ini文件里写,我们自定义了Realm,就要告诉Shiro,使用自定义的Realm,这个配置是写在ini文件里的。还是要回到刚才的Demo.java。

2022-11-12 01:21:16 466

原创 Shiro笔记01-入门概述

Authentication:身份认证/登录,验证用户是不是拥有相应的身份Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能进行什么操作,如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境,也可以是Web环境的。

2022-11-06 18:22:52 87

原创 Hadoop笔记06-Hadoop-源码解析

模拟RPC客户端、服务端、通信协议的工作流程。先启动NNServer,此时服务端就监听8888端口,再启动HDFSClient,客户端向8888端口发送一个RPC请求,由服务端执行操作。当服务端启动后,可以使用jps命令查看到NNServer服务。...

2022-07-25 09:01:08 424

原创 Jenkins笔记05-基于KubernetesK8S构建Jenkins持续集成平台

Jenkins的Master-Slave分布式构建什么是Master-Slave分布式构建Jenkins的Master-Slave分布式构建,就是通过将构建过程分配到从属Slave结点上,从而减轻Master结点的压力,而且可以同时构建多个,有点类似负载均衡的概念。这节课要用到3台服务器:1台K8S-Master,2台K8S-Slave,提前准备出来,安装上Jenkins。如何实现Master-Slave分布式构建Manage Jenkins-Configure Global Security-A

2022-05-21 20:42:30 1296

原创 Jenkins笔记04-Jenkins+Docker+Spring Cloud微服务持续集成

资料有点多,放在云盘了,包括代码和SQL等。链接:https://pan.baidu.com/s/1-aAEhDP_OWvNH7dgbT2HPg提取码:pr5cJenkins+Docker+Spring Cloud微服务持续集成流程说明开发人员将代码提交到GitLab代码仓库Jenkins从GitLab拉取代码进行编译打包,构建成Docker镜像,将镜像上传到Harbor私有仓库Jenkins发送SSH远程命令,让生产服务器到Harbor私有仓库拉取镜像到本地,从而创建容器用户访问到容器

2022-05-21 20:41:08 649 1

原创 Jenkins笔记03-Jenkins构建Maven项目

Jenkins构建的项目类型介绍Jenkins中自动构建类型有很多,常用的有以下三种:自由风格软件项目(FreeStyle Project)Maven项目(Maven Project)流水线项目(Pipeline Project)每种类型都可以完成构建,只是在操作方式和灵活度上有所区别,实际使用的时候,根据需求和使用习惯选择,其中流水线项目的灵活度非常高。自由风格项目构建拉取代码在Jenkins里,新建一个FreeStyle Project。Source Code Management选

2022-05-21 20:40:27 3473

原创 Jenkins笔记02-Jenkins安装和持续集成环境配置

持续集成流程说明为了演示完整的步骤,我们需要准备服务器:代码托管服务器、持续集成服务器、测试服务器。首先,开发人员每天进行代码提交,提交到Git仓库然后,Jenkins作为持续集成工具,使用Git工具到Git仓库拉取代码到集成服务器,再配合JDK,Maven等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都重新再执行一次整个流程最后,Jenkins把生成的jar或war包分发到测试服务器或者生产服务器,测试人员或用户就可以访问应用GitLab代码托管服务安装Gi

2022-05-21 20:39:39 529

原创 Jenkins笔记01-持续集成及Jenkins介绍

软件开发生命周期软件开发生命周期叫SDLC(Software Development Life Cycle),集合了计划、开发、测试、部署过程。需求分析第一阶段,根据项目需求,团队执行一个可行性计划分析,项目需求是公司内部或者客户提出。这个阶段主要是收集信息,也可能对现有项目进行改善和做一个新项目,还要分析项目预算时间从哪方面收益和布局。设计第二阶段,系统架构和满意状态,要做成什么样子,实现什么功能,创建一个项目计划,可以用图表、布局设计、文案方式呈现。实现第三阶段,项目经理和开发人员配合,开

2022-05-21 20:38:41 243

原创 Jenkins笔记-目录

视频教程来源B站黑马程序员前面的教程还能跟上,后面接触到K8S,就跟不上了,一方面是听不懂,另一方面出了错也不知道怎么解决,所以最后听得比较被动。Jenkins笔记01-持续集成及Jenkins介绍Jenkins笔记02-Jenkins安装和持续集成环境配置Jenkins笔记03-Jenkins构建Maven项目Jenkins笔记04-Jenkins+Docker+Spring Cloud微服务持续集成Jenkins笔记05-基于KubernetesK8S构建Jenkins持续集成平台...

2022-05-21 20:37:39 201

原创 Hadoop笔记05-Hadoop-生产调优手册

HDFS-核心参数NameNode内存生产配置每个文件块大约占用150Byte。在Hadoop 2.x中,通过修改hadoop-env.sh文件:HADOOP_NAMENODE_OPTS=-Xmx3072m 来设置NameNode的内存。在Hadoop 3.x中,hadoop-env.sh中描述内存是动态分配的,有时候是不合适的,需要进行修改,修改hadoop-env.sh文件。经验参考:https://docs.cloudera.com/documentation/enterprise/6/re

2022-04-12 15:09:45 721

原创 Hadoop笔记04-Hadoop-Yarn

Yarn资源调度器Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。Yarn基础架构YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成。Yarn工作机制MapReduce程序提交到客户端所在结点YarnRunner向ResourceManager申请一个ApplicationResourceMa

2022-04-12 15:08:44 2667

原创 Hadoop笔记03-Hadoop-MapReduce

MapReduce概述MapReduce定义MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。MapReduce优缺点优点MapReduce易于编程只需要简单实现接口,就可以完成一个分布式程序,程序可以部署到大量廉价的PC机器上运行。良好的扩展性当计算机资源不足的时候,可以通过简单的增加机器的方式来提高

2022-04-11 23:30:04 525

原创 Hadoop笔记02-Hadoop-HDFS

HDFS概述HDFS产出背景及定义随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS只是分布式文件管理系统中的一种。HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。HDFS的使用场景:适合一次写入,多次读出的场景

2022-04-11 23:28:50 475

原创 Hadoop笔记01-Hadoop-入门

Hadoop概述Hadoop是什么Hadoop是一个由Apache基金会开发的分布式系统基础架构Hadoop主要解决:海量数据的存储、海量数据的分析计算广义来说,Hadoop是指Hadoop生态圈,还包括HBase、Hive等Hadoop发展历史Hadoop的创始人是Doug Cutting,为了实现与Google类似的全文搜索功能,他在Lucene框架基础上进行优化升级,查询引擎和索引引擎。Lucene模仿谷歌开发出了微型版Nutch。2003-2004年,Google开源部分GFS

2022-04-11 23:26:34 1459

原创 Vue笔记07-VueUI组件库

移动端常用UI组件库VantCube UIMint UIPC端常用UI组件库Element UIIView UI

2021-08-14 22:03:14 194

原创 Vue笔记06-VueRouter

路由简介Vue Router是Vue官方的路由管理器,专门实现SPA应用,即单页面应用。单页面应用的含义是,整个应用只有一个完整的页面,点击页面中的链接不会刷新整个页面,只会局部刷新,数据通过ajax请求获取,在页面局部刷新的时候,地址栏的url会跟着变化。一个路由就是一个key-value的映射关系,key为路径,value为function或component。路由分为前端路由和后端路由。前端路由:value为component,用于展示页面内容,浏览器路径改变的时候,对应的组件就会显示。后

2021-08-14 22:03:09 274

原创 Vue笔记05-Vuex

Vuex概念Vuex是在Vue中实现集中式状态(数据)管理的一个Vue插件,对Vue应用中多个组件的共享状态进行集中式的管理(读/写),可以实现组件间通信,适用于任意组件间通信。当多个组件依赖同一状态、不同组件行为需要变更同一状态的时候,需要使用Vuex,也就是用Vuex来管理公共的变量或者数据。案例首先引出一个案例,这个案例是单组件,不使用Vuex来完成的。有一个Count.vue组件,组件中有几个按钮和一个显示当前数据的区域,通过按钮修改当前值并重新显示。在App.vue中引入Count..

2021-08-14 22:03:02 172

原创 Vue笔记04-Vue中的Ajax

解决开发环境中Ajax跨域问题在使用jQuery的时候,前后端交互通常使用$.ajax,但是会存在跨域问题。在jQuery中,有大量操作DOM的方法,但是在Vue中,我们不会主动操作DOM,所以配合Vue使用的时候,大多使用axios,使用npm i axios进行安装。首先使用命令node server1.js和node server2.js启动两个本地服务。在axios中,使用代理的方式解决了跨域问题。通过Vue-CLI的devServer.proxy配置可以看到两种配置方式。需要手动创建vue.

2021-08-14 22:02:54 485

原创 Vue笔记03-使用Vue脚手架

初始化脚手架Vue脚手架是Vue官方提供的标准化开发工具,可以方便我们的开发任务。Vue的脚手架叫Vue CLI,CLI是command line interface的简称。要想使用Vue脚手架,需要全局安装@vue/cli,在安装之前,需要安装node.js。node.js下载地址设置淘宝镜像:npm config set registry https://registry.npm.taobao.org全局安装@vue/cli:npm install -g @vue/clicmd中跳转到需要创

2021-08-14 22:02:49 315

原创 Vue笔记02-Vue组件化编程

模块与组件、模块化与组件化在早期的前端开发中,HTML,CSS,JavaScript的引用关系是混乱的,给维护带来难度。Vue中有一个组件的概念:用来实现局部(特定)功能效果的代码集合。在Vue中,使用组件分为3步:定义组件、注册组件、使用组件。在定义组件的时候,使用Vue.extend(option)传入组件的配置,注意这里不要指定el,因为所有组件都被Vue实例对象管理,由实例对象中的el指明模板。组件中的data必须写成函数的形式,避免a组件修改data.x,影响到b组件中data.x的值。

2021-08-14 22:02:42 171

空空如也

空空如也

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

TA关注的人

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