陈志军

物来顺应,未来不迎,当时不杂,既过不恋


  • 首页

  • 分类

  • 归档

  • 标签

  • 搜索

ops 操作手册

发表于 2019-12-01 | 阅读次数

给命令行增加快捷操作提示符

1
2
3
source <(kubectl completion bash) # setup autocomplete in bash into the current shell, bash-completion package should be installed first.echo "source <(kubectl completion bash)" >> ~/.bashrc # add autocomplete permanently to your bash shell.
alias k=kubectl
complete -F __start_kubectl k
阅读全文 »

基础排序算法

发表于 2019-09-13 | 分类于 数据结构与算法 | 阅读次数

基础排序算法2

归并排序

归并排序的意义是将利用递归的思想,将一个大问题解决为可重复求解的小问题,最后合并这些小问题得出结果。
归并是直接数组对半分,分成两个子数组。然后对两个子数组再进行排序求解。

阅读全文 »

基础排序算法

发表于 2019-09-10 | 分类于 数据结构与算法 | 阅读次数

基础排序算法

每次一看算法就是,嗯,看懂了,每次自己写代码就是,嗯?这怎么写?? 本文将自己理解的冒泡排序,插入排序,选择排序三种做一个总结。

阅读全文 »

数据结构单链表的一些简单操作

发表于 2019-09-09 | 分类于 数据结构与算法 | 阅读次数

数据结构单链表的一些简单操作

Node的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

public class Node<T> {
private Node nextNode;
private T v;

public Node(T v) {
this.v = v;
}

public Node() {
}

public Node(Node nextNode, T v) {
this.nextNode = nextNode;
this.v = v;
}

public Node getNextNode() {
return nextNode;
}

public void setNextNode(Node nextNode) {
this.nextNode = nextNode;
}

public T getV() {
return v;
}

public void setV(T v) {
this.v = v;
}

public void printAllNode() {//我这里是有一个headNode不做数据存储
Node tmpN = this;
while (tmpN.getNextNode() != null) {
System.out.print(tmpN.getNextNode().getV());
System.out.print((tmpN.getNextNode().getNextNode() == null ? "" : ","));
tmpN = tmpN.getNextNode();
}
}
}

阅读全文 »

shell 相关基本操作

发表于 2019-09-07 | 分类于 Linux | 阅读次数

shell 相关基本操作

shell 基础

shell中的脚本通常就是控制台中的语句,将这些语句结合到一个文件中,就组成了脚本。脚本的第一行通常是#!/bin/bash开通,这行的作用是指定用哪个shell。可以cat /etc/shells查看当前操作系统支持哪些shell。

在控制台中我们使用 ; 隔开多条语句,在shell脚本中则是一行命令独立一行。通常我们会以*.sh结尾来作为一个脚本名称,另外会将其权限设置为可执行权限:chmod u+x *.sh。

阅读全文 »

golang 并发基础(二)

发表于 2019-08-25 | 分类于 并发 | 阅读次数

golang 并发基础(二)

上一篇简单介绍了并发与并行,goroutine实际工作的原理示意图,现在我们来看下golang是怎么处理并发中竞争状态的。

竞争状态:如果两个或多个goroutine在没有同步的情况下对同一个资源进行读写操作,就处于相互竞争的状态,称为竞争状态。对一个共享资源的操作必须是原子化的,即同一时刻只能由一个goroutine对共享资源进行读和写操作。

阅读全文 »

golang 并发基础(一)

发表于 2019-08-25 | 分类于 并发 | 阅读次数

golang 并发基础(一)

golang 在语言的语法和运行时方面内置了对并发的支持。在了解golang的并发之前,我们先看一下操作系统的两个概念:线程和进程。你应该知道,在系统中运行一个程序,其实就是启动了一个进程,而要运行起来,对外来说肯定是需要资源的,比如cpu,内存空间,文件句柄,线程等等..每个进程至少有一个线程,每个进程的初始线程被称为主线程。了解到这些,你大概可以类比一下,比如你创建一个项目,肯定要有main方法(主线程),你的项目中可能还有不同的业务逻辑,这个时候就可以让主进程创建多个线程去运行求结果。线程可以共享进程的空间。另外我们要知道,cpu的执行方式是轮询时间分片的,也就是可能这个线程有10ms的cpu执行时间,所以如果是单核cpu,就是每个线程执行一会,抢占式执行。并发(concurrency)不是并行(parallelism)。并行是在相同的时候让不同的代码都能在不同的处理器上执行,也就是同时做很多事情。并发是指同时管理很多事情,这些事情可能只做了一半就被暂停去做别的事情了。

阅读全文 »

过去一段时间遇到的一些问题

发表于 2019-08-17 | 分类于 随笔 | 阅读次数

随笔-过去一段时间遇到的一些问题

阅读全文 »

jenkins-docker-plugin-error

发表于 2019-07-24 | 阅读次数

Jenkins Docker 模块无法切换Registry credentials

问题产生,一次公司Jenkins迁移过程中,发现一个问题,dockers模块选择不同用户的 Registry credentials 但就是无法推送到私有仓库上去。

2019-07-24-18-28-43

像上图一样,选择了用户,deployop 或者其它,但是Jenkins push的时候就是报没有权限:

2019-07-24-18-30-05

就算我选的的是harbor的admin账号也没用。

后来想到jenkins的机器我是都手动执行过docker login的,不知道会不会有影响,于是手动去机器上docker build –> docker push 发现结果一样。也是没有权限。然后用docker login harbor.xxx.com 查看当前用户却不是admin账户,这就有点奇怪了,我当时在jenkins模块docker中选的就是admin啊。为什么docker 还是用之前的权限较小的账户了?然后我在~/.docker/config.json 查看到确实有两个账户,这个可以说明其实Docker 模块的Registry credentials其实际是起到了作用的。应该是我们一开始使用了docker login 所以造成了有”默认账户”。jenkins应该就是使用了默认账户才导致这个问题的。

2019-07-24-18-35-44

解决的方式很简单,一个是删除~/.docker这个文件夹;一个是使用docker logout harbor.xxx.com就可以了。再用Jenkins构建的时候就可以看到该文件内容:

2019-07-24-18-39-09

如果你是删除了~/.docker文件夹,然后重启docker,那么你再次构建的时候应该会看到~/.docker文件夹变空了。但是在用户目录多出一个~/.dockercfg文件。里面的内容和config.json一致。如果你是使用docker logout,那么就还是会在~/.docker/config.json文件中看到你每次选择的用户。

2019-07-24-18-43-39

ps 如果想在jenkins启动的时候就指定其工作目录,可以这样设置export JENKINS_HOME=/data/jenkins/.jenkins

golang 基础入门 - 数据类型

发表于 2019-07-14 | 分类于 Go | 阅读次数

golang 基础入门 - 数据类型

任何一门语句都会有它的基本关键字和数据类型。golang的数据类型大致分为三种:基本类型,引用类型,结构体。

2019-07-14-23-35-07

类型的一些细节可以参考:官网

1…345…18

180 日志
41 分类
70 标签
RSS
GitHub GitEE
推荐阅读
  • 陈志军的个人站
© 2017 - 2023 陈志军
由 Hexo 强力驱动
主题 - NexT.Muse