自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王劭阳的博客

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

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

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

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

2022-12-11 22:47:06 212

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

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

2022-12-11 17:51:09 323

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

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

2022-12-04 22:21:26 275

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

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

2022-12-03 23:38:25 382

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

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

2022-11-28 23:33:55 105

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

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

2022-11-27 21:56:28 114

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

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

2022-11-26 17:10:59 424

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

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

2022-11-26 15:29:25 400

原创 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 319

原创 Shiro笔记02-基本使用

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

2022-11-12 01:21:16 325

原创 Shiro笔记01-入门概述

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

2022-11-06 18:22:52 16

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

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

2022-07-25 09:01:08 131

原创 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 564

原创 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 255

原创 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 964

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

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

2022-05-21 20:39:39 260

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

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

2022-05-21 20:38:41 98

原创 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 139

原创 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 478

原创 Hadoop笔记04-Hadoop-Yarn

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

2022-04-12 15:08:44 1655

原创 Hadoop笔记03-Hadoop-MapReduce

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

2022-04-11 23:30:04 396

原创 Hadoop笔记02-Hadoop-HDFS

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

2022-04-11 23:28:50 270

原创 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 1241

原创 Vue笔记07-VueUI组件库

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

2021-08-14 22:03:14 128

原创 Vue笔记06-VueRouter

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

2021-08-14 22:03:09 80

原创 Vue笔记05-Vuex

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

2021-08-14 22:03:02 98

原创 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 207

原创 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 205

原创 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 95

原创 Vue笔记01-Vue核心

Vue简介Vue是一个可以动态构建用户界面的渐进式前端框架,在设计上参考了MVVM模式,代码简洁体积小,运行效率快,适合移动/PC端开发,作者是尤雨溪。Vue中文官网Vue借鉴了Angular的模板和数据绑定技术,借鉴了React的组件化和虚拟DOM技术。Vue还有一些周边库:Vue-cli、Vue-resource、Vue-router等。初识Vue要想使用Vue,最简单的方式是直接用script标签引入Vue.js,可以通过cdn引入,也可以通过本地引入。要想让Vue工作起来,就需要有一个

2021-08-14 22:02:35 198

原创 Vue笔记-目录

视频教程来自B站尚硅谷,分为Vue2和Vue3两部分。Vue2Vue笔记01-Vue核心Vue笔记02-Vue组件化编程Vue笔记03-使用Vue脚手架Vue笔记04-Vue中的AjaxVue笔记05-VuexVue笔记06-VueRouterVue笔记07-VueUI组件库Vue3

2021-08-14 22:02:08 58

原创 ZooKeeper笔记04-ZooKeeper实战

分布式安装部署客户端命令行操作API应用案例实战

2021-06-28 08:40:23 118 1

原创 ZooKeeper笔记03-ZooKeeper内部原理

选举机制ZooKeeper的选举机制:集群中,半数以上机器存活,集群才能正常工作。在集群还没有选出leader之前,myid小的服务器会给myid大的服务器投票,直到选出leader,此时集群开始正常工作。选出leader后,之前的服务器状态由looking变更为following状态,这些服务器的身份是follower。首先,我们在ZooKeeper的配置文件中,指定集群中ZooKeeper的数量,这里以集群中包括5个ZooKeeper为例来分析下选举过程。依次启动1,2,3,4,5这5台服务器的Z

2021-06-28 08:40:15 67

原创 ZooKeeper笔记02-ZooKeeper安装

本地模式安装部署因为ZooKeeper底层是Java代码,所以需要先安装JDK,之后将刚才下载好的apache-zookeeper-3.6.3-bin.tar.gz发送到服务器上,解压到指定目录。接下来修改配置文件。启动ZooKeeper服务端和客户端。配置参数解读tickTime=2000:通信心跳数,ZooKeeper服务器与客户端心跳时间,单位毫秒。ZooKeeper使用的基本时间,服务器之间或客户端与服务器之间,用于维持心跳的时间间隔,每个tickTime就会发送一次心跳,单位

2021-06-28 08:40:07 106

原创 ZooKeeper笔记01-ZooKeeper入门

概述ZooKeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。ZooKeeper字面意思:动物园管理员,把服务器比作是动物,它作为一个管理者的身份,监控着从它上面注册过的服务,客户端可以通过ZooKeeper来了解服务的运行情况。从设计模式来看,ZooKeeper是一个基于观察者模式的分布式服务管理框架,负责存储和管理数据,接收注册和观察,一旦数据状态发生变化,ZooKeeper就会通知在Zookeeper上注册过的观察者做出相应的反应。所以说,ZooKeeper=文件系统

2021-06-28 08:39:57 86

原创 ZooKeeper笔记-目录

视频教程地址:https://www.bilibili.com/video/BV1PW411r7iP来源:尚硅谷。非常感谢尚硅谷!学了一遍,顺便整理出来的笔记,以后回看方便,算是入个门,使用的版本是ZooKeeper 3.6.3,和视频教程里不同,所以在客户端命令里会有不同。如果有疑问,欢迎一起讨论。ZooKeeper笔记01-ZooKeeper入门ZooKeeper笔记02-ZooKeeper安装ZooKeeper笔记03-ZooKeeper内部原理ZooKeeper笔记04-ZooKee

2021-06-28 08:39:42 90

原创 VMware Workstation 16 Pro最小化安装CentOS 7

这里使用的是CentOS-7-x86_64-Minimal.iso镜像,VMware Workstation 16 Pro虚拟机。创建新的虚拟机选择“自定义(高级)”虚拟机兼容性,保持默认即可选择“稍后安装操作系统”选择操作系统版本,这里安装CentOS 7给虚拟机命名,修改虚拟机的存储位置根据自己电脑CPU的情况,选择处理器数量,保证虚拟机的处理器内核总数不超过物理机的CPU内核总数内存分配,这里分1G,后期可以改网络类型选择NATI/O控制器类型选择默认的LSI

2021-06-20 19:49:51 521 1

原创 Shell笔记6-Shell工具

cutsedawksort

2021-06-16 00:49:29 33

原创 Shell笔记5-read读取控制台输入、函数

read读取控制台输入基本语法read (选项) (参数)选项:-p:指定读取的提示信息-t:指定读取等待时间参数:读取的值存放到参数处的变量里例子在控制台提示,10秒内输入name,输入name并输出。#!/bin/bashread -t 10 -p "Enter name in 10 seconds,name=" nameecho $name如果没有-t参数,会一直等待。函数系统函数basenamebasename [string / pathname] [suffi

2021-06-16 00:49:18 65

原创 Shell笔记4-Shell流程控制

if基本语法:if [ condition ];then codefi或者if [ condition ] then codefi注意事项[ condition ],中括号和condition之间必须有空格,if后要有空格。例子输入一个数字,如果是1,输出one,如果是2,输出two,如果是其他,什么都不输出。#!/bin/bashif [ $1 -eq '1' ];then echo 'one'elif [ $1 -eq '2' ];then echo 'two

2021-06-16 00:49:08 21

空空如也

空空如也

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

TA关注的人

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