自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sjw_night的博客

拉不近的远距离,解不开的未知数

  • 博客(31)
  • 资源 (6)
  • 收藏
  • 关注

原创 k8s集群搭建记录(1.21.5版本)

整个搭建过程参考自这里使用kubeadm安装kubernetes_v1.21.x,整个过程还是很顺利地,虽然过程中踩了一点坑。对于上文中的搭建过程,存在一个小坑,搭建教程虽然安装了containerd,但是对于后面一直存在问题,所以最好先安装docker然后再使用安装教程。安装docker:若你需要卸载docker,则你需要卸载的服务包括:docker、docker-common、docker-selinux、docker-engine。卸载命令:yum remove docker docker-com

2021-11-05 18:10:21 679

原创 CDH 集成Flink记录

对于CDH集成Flink在网上找了一下博文,有的给出了官方的链接,好像点进去都失效了。然后通过尝试制作parcel包的方式来集成到CDH的方式成功了,过程也比较简单,特此记录一下。首先感谢flink-parcel作者,接下来讲诉制作过程。1.首先下载相关项目到服务器,然后修改flink-parcel.propertiesgit clone https://github.com/pkeropen/flink-parcel.gitcd flink-parcelflink-parcel.propert

2021-09-07 14:56:01 591

原创 Azkaban 部署注意事项

1.打包:./gradlew clean build2.修改配置文件:位置在conf下面的azkaban.properties3.部署:主要部署azkaban-web-server(页面操作),azkaban-exec-server(具体的exec),部署时注意要先部署azkaban-exec-server,部署成功之后需要修改数据库中exectors表中的对应实例active字段为1激活该exectors,否则会报:azkaban.executor.ExecutorManagerException:

2021-07-27 19:00:28 226

原创 metabase 打包避坑

版本1.39.4,运行打包脚本bin/build,总是报:message “-M (没有那个文件或目录)”,于是我就纳闷了,看docs上说运行就可以了,难道docs写错了?后来到github上面去看iss,结果看到了一个关于开发者更改了ci,于是在就去ci里面看了一下。- name: Install Clojure CLI run: | curl -O https://download.clojure.org/install/linux-install-1.10.1.708.s

2021-06-28 17:08:58 352

原创 Java AQS 原理解析

AQS全称AbstractQueuedSynchronizer(同步器),Lock接口的实现基本都是通过聚合一个同步器的字类来完成线程访问控制。队列同步器AbstractQueuedSynchronizer(以下简称同步器),是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获 取线程的排队工作,并发包的作者(Doug Lea)期望它能够成为实现大部分同步需求的基础。接下来基于ReentrantLock类来解析AQS的实现原理Lock lo

2021-05-20 09:50:51 237

原创 Elasticsearch集群搭建

elasticsearch集群搭建,版本为7.10基本启动命令bin/elasticsearch -d -ppid => -d后台运行 -p将pid存放在pid文件中pkill -F pid 根据pid文件将程序停止基本配置项解析:1.先下载elasticsearch包,解压,新加用户(elasticsearch不允许使用root启动)创建elastic用户useradd elastic# 设置用户密码passwd elastic# 切换到elastic用户su elasti

2021-04-20 16:36:52 141

原创 MySQL 通信协议分析(一)(附带java实现)

学习canal源码的时候看到了有关mysql通信协议的部分,这篇文章在此记录一下。MySQL通信协议可以总结为:两阶段四种类型六种包。两阶段指的是client与server交互存在两个阶段,第一节点则为握手认证阶段。第二阶段:认证结束之后就轮到了命令执行阶段。交互阶段握手认证阶段为客户端与服务器建立连接后进行,交互过程如下(前面的tcp三次握手的过程不做阐述):服务器 -> 客户端:握手初始化消息客户端 -> 服务器:登陆认证消息服务器 -> 客户端:认证结果消息当clie

2021-04-14 15:42:24 1703

原创 elastic-job源码分析(四)Leader选举

对于一个分布式系统来说,为了保证数据的一致性,通常会选择一个主节点执行数据的写入,然后从节点同步主节点数据,elastic-job同样是一个道理。首先看一下主节点的选举代码public void registerStartUpInfo(final boolean enabled) { listenerManager.startAllListeners(); // leader选举 leaderService.electLeader(); s

2021-03-15 18:48:10 554

原创 Java 线程

在说多线程的时候,总会想起来以前读书的时候有那么一句话:进程是cpu资源分配的最小单位,线程是cpu调度的最小单位。至于进程和线程的关系本文不作分析。主要分析一下线程。线程状态分析在JVM中,把线程分为几种不同的状态,比如线程创建完毕后的new 状态,还有调用了start方法后线程进入Runnable状态,Runnable状态的线程会被放到JVM的科运行线程队列中等待获取CPU的执行权,此外JVM按照现成的优先级及时间分片,轮询的方式来执行Runnable状态的线程。当线程进入start的代码段,开.

2021-03-10 17:49:09 60

原创 elastic-job源码分析(三)作业分片

关于作业分片,首先先看下有哪些地方会促使作业进行分片public void init() { // 1.将配置更新到注册中心 LiteJobConfiguration liteJobConfigFromRegCenter = schedulerFacade.updateJobConfiguration(liteJobConfig); // 2.缓存当前作业分片数到本地 JobRegistry.getInstance().setCurrentS

2021-03-05 17:27:55 277

原创 elastic-job源码分析(二)任务调度

前一节分析了一下elastic的启动过程,接下来看一下它的调度过程。elastic-job的调度引擎是基于quartz,也就是说调度这一块都是quartz来负责,elastic-job则在上层逻辑进行处理。在实例化JobSchedulerController时,创建JobDetailprivate JobDetail createJobDetail(final String jobClass) { // 使用LiteJob类作为中间类,协调elastic和quartz JobDetai

2021-03-05 15:04:27 241 1

原创 elastic-job源码分析(一)启动过程

elastic-job版本 2.1.5,由于master分支使用的式curator5.x,支持zookeeper需要3.6.x,对3.5和3.4支持不是好,所以采用了较低版本的elastic-job源码进行解析elastic-job启动分析:elastic-job配置的一个核心类JobScheduler(本文只讲述SimpleJob类型作业), 直接看该类的init方法public void init() { // 1.将配置更新到注册中心 LiteJobConfigu

2021-03-04 17:13:01 420 1

原创 Clojure语法之函数

匿名函数一下用一个生成set的匿名函数来说明一下匿名函数的定义:(fn [x y] ;包含参数的vector (println "making a set ") ;函数体 #{x y} ) ;返回值表达式所以匿名函数的调用方式((fn [x y] (println "makding a set") #{x y}) 2 4)使用def和defn生成具名函数使用def生成具有名称的函数:(def make-set (fn [x y] (print

2021-01-05 20:34:23 159

原创 Clojure 环境配置

各环境下环境搭建macbrew install clojurelinuxcurl -O https://download.clojure.org/install/linux-install-1.10.1.483.sh这里要注意的是下载完之后要进行赋权才能执行:chmod +x linux-install-1.10.1.483.shsudo ./linux-install-1.10.1.483.shwindows官方地址:https://github.com/clojure/tools.de

2020-12-25 11:16:18 609

原创 简说Java NIO

什么是NIO有的人喜欢称作New I/O,原因相对于原来的I/O方式属于新增I/O。也有人称为Non-block I/O(非阻塞I/O),NIO的目标也是让Java拥有非阻塞的I/O,所以就叫它非阻塞的I/O,吼吼。基本概念缓冲区(Buffer)在面向流的I/O中,可以将数据直接写入,或者读到Stream中。在NIO库中,所有数据都是用缓冲区来处理,在读取数据时直接读到缓冲区,在写入数据时,直接写到缓冲区。...

2020-08-05 09:37:42 103

原创 RocketMq源码分析(二)消息发送

消息发送的三种方式前面说到了NameServer的启动过程,这次来说一下消息是如何发送的。消息发送的方式有三种:同步、异步、单向。1)同步:发送者向MQ执行发送消息API,同步等待,直到消息服务器返回发送结果。2) 异步:发送者向MQ执行发送消息API时,指定消息发送成功的回调函数,然后调用发送消息API成功后直接返回,消息发送线程不阻塞,消息发送成功或者失败都是在另一个新的线程中执行。3)单向:消息发送者向MQ执行发送消息API时,直接返回。不等待消息发送结果,也不注册回调函数,成不成功我不管,我

2020-07-27 09:25:10 241

原创 聊一聊什么是Java SPI

什么是SPIA service is a well-known set of interfaces and (usually abstract)classes. A service provider is a specific implementation of a service.The classes in a provider typically implement the interfaces and subclass the classes defined in the service its

2020-07-18 10:35:39 88

原创 RocketMq源码分析(一)NameServer

在讲NameServer之前先了解一个概念——服务发现,可以把一个服务查找另一个服务的过程叫做服务发现。但是如何查找呢?又要说到另一个词注册中心,由于服务的双方都是不固定的,我不在乎过程中是谁服务,我只在乎最后拿到的结果是我想要的。注册中心就是干这个的,首先一个服务想要调用另一个服务第一步需要拿到可获取的服务列表,然后根据一定的负载均衡算法,指定给一个服务。注册中心就是这样一个地方,服务提供者们将自己在注册中心注册,说我们可以提供服务,然后呢,消费者就去挑了一个,理解成一个菜市场也不为过。好了,说正题,最.

2020-07-14 12:33:29 128

原创 简说java虚拟机类加载

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2020-07-08 21:07:23 162

原创 docker

dockerDocker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。与java设计的思想类似。docker三个概念镜像容器仓库docker镜像docker相当于一个完整的root文件系统,Docker 镜像是一个特殊的文件系统,除了提供...

2018-11-30 11:05:23 80

原创 git基本命令

初始化仓库在想要初始化的的文件夹中运行git init即可,该命令会在仓库中生成.git文件夹添加文件:git add readme.txt添加目录下所有文件git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支,没有被add的文件的修改不会被提交到仓库,也就是git跟踪的是修改而非...

2018-09-10 09:30:47 3003

原创 linux文件属性与权限管理

文件的权限管理很重要,那么如何改变文件的属性与权限呢?就需要要到下面的三个命令:chgrp :改变文件所属群组,change group的简写chown :改变文件拥有者,change owner的简写chmod :改变文件的权限, SUID, SGID, SBIT等等的特性1.改变文件所属群组:chgrp [-R] 将要所属的群组 filename,-R参数是对一个目录下的所有文...

2018-06-19 12:19:19 302

原创 linux tar命令的使用

tar命令上次的压缩命令大多只能对单一的文件进行压缩,对目录却无能为力,虽然 gzip, bzip2, xz 也能够针对目录来进行压缩不过, 这几个指令对目录的压缩指的是“将目录内的所有文件 “分别” 进行压缩”的动作。在Windows 的系统,可以使用类似 WinRAR 这一类的压缩软件来将好多数据“包成一个文件”的样式。不过在linux中,也存在将很多个文件,目录打包成一个大文件,也就是打...

2018-06-15 17:41:15 1347

原创 简单说单例模式

单例模式定义:单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。通俗地说,使用单例模式确保一个类从始至终只被new一次,也就是只产生一个对象。那么就该思考了,怎么样才能让一个类只被new一次呢?那我们先回忆如何产生一个对象,java对象的产生都是通过构造函数,所以呢思...

2018-06-11 19:39:22 283

原创 Java集合之Collection与Map

java中的集合之Collection与Map接口集合:存储数据的容器数组与集合的不同:数组长度固定,集合长度不固定数组只能存放相同类型的数据,集合可以存放不同类型的数据数组可以存放简单数据类型,和类类型的数据,集合只能存放类类型的数据集合框架:java中用来表示集合,和操作集合的所有类库的统称集合的分类可以分为Collection和Map两种,Collection中存...

2018-06-06 20:52:56 2957 3

原创 观察者模式

设计模式-观察者模式定义:在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。 更直观的说可以叫做发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到。两个角色: 被观察者:内部状态发生改变时,向观察者发出通知观察者:收取被观察者的通知应用场景:基于消息发布订阅模式的应用 ...

2018-06-01 14:36:53 364

原创 关于IIS配置失败 无法访问元数据库问题

工欲善其事必先利其器,在学习一项新事物的时候,我想没有比安装环境以及配置更难得了。下面是我在学习Asp.net时遇到的问题:IIS配置失败 无法访问元数据库 以及没有权限访问IIS,看到这个问题肯定是找度娘解决,可是经过一番搜寻就是没有一个能够解决问题的。失败的访问都有:修改注册表,修改文件权限等一堆,挨个试过之后就是没用。小样你还能翻天咋地!!!在windows上遇到问题解决时无非是:重启系统重...

2018-04-19 23:26:41 1342

原创 android 底部弹出菜单

好久没写笔记了,好不容易今天有空,就分享一下android底部弹出菜单的效果,使用popupwindow类似实现的

2017-03-26 19:36:34 3611 2

原创 java swing小游戏-贪吃蛇大冒险

之前在网上看到很多人在在找贪吃蛇源码,难道今天比较闲就动手写了一个小项目现在分享给大家。 游戏源码获取方式1:游戏源码 首先下面看一下效果图: 小蛇每吃一个食物就会长长一点,当碰到自身或者墙壁游戏就结束了。 用法: 要点: 1. 图形的绘制 2. 贪吃蛇的移动 3. 食物的随机分布 4. 碰撞检测 5. 死亡检测

2017-03-04 20:15:10 1129

原创 用AlertDialog实现程序退出提示

AlertDialog实现用户退出提示框当用户使用android应用在操作过程中不小心碰到返回键,程序就关闭了。如果有什么重要的数据那就比较糟了。如果在应用点击返回时加一个提示框就会避免这样的问题了。 本次就是使用AlertDialog来实现点击返回弹出提示框效果。

2017-03-01 18:59:12 1224

原创 弹出菜单 PopupMenu 的使用

这次是一个弹出菜单,当点击按钮或者文字时,在下方弹出一个菜单。PopupMenu是在android sdk3.0版本以后加入了一个特殊效果。他可以在任何一个View显示。

2017-02-28 14:06:04 3089 1

java实现多线程下载代码

java实现多线程下载,控制台实时输出下载进度,对于学习多线程与网络有一定的帮助

2018-06-22

java实现多级目录查找图片

把指定目录下(包含子目录)的所有图片查找出来,复制到另一个指定目录下

2018-06-07

java实现多级目录文件遍历及计数

java实现多级目录的遍历及技术,作为javaIO流学习的练手作品

2018-06-07

java实现多级文件夹的复制

用java实现的多级文件夹的复制,可用于文件复制的复制与备份

2018-06-07

冒泡排序java实现

java实现冒泡排序,冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

2018-05-28

java小项目 贪吃蛇源码

这是一个用java swing写的贪吃蛇,涉及到的技术有碰撞检测,死亡检测,定时器

2017-03-04

空空如也

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

TA关注的人

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