- 博客(31)
- 资源 (1)
- 收藏
- 关注
转载 GPG加密解密流程
一、什么是GPG要了解什么是GPG,就要先了解PGP。1991年,程序员Phil Zimmermann为了避开政府监视,开发了加密软件PGP。这个软件非常好用,迅速流传开来,成了许多程序员的必备工具。但是,它是商业软件,不能自由使用。所以,自由软件基金会决定,开发一个PGP的替代品,取名为GnuPG。这就是GPG的由来。GPG有许多用途,本文主要介绍文件加密。至于邮件的加密,不同的邮件客户端有不同的设置,请参考Ubuntu网站的介绍。本文的使用环境为Linux命令行。如果掌握了命令行,
2021-07-15 22:16:54
4648
原创 kubernetes应用访问、授权、调度、Helm、存储快速理解
k8s所有的访问需要经过API Server。一、ServiceAccount对于命名空间内的pod用于访问k8s API而设计,创建命名空间时自动创建一个default的serviceAccount。命名空间内的pod的创建会自动将spec.serviceAccount设置为default。主要总结为,每个pod被创建的时候默认拥有default serviceAccount的权限,默认的serviceAccount只能访问本命名空间的资源,而若是想跨命名空间访问必须再建立Pod的时候指定某个命名
2020-12-04 15:08:47
395
原创 Kubernetes学习之路(二)K8S操作需求
创建K8s应用[root@linux-node1 ~]#kubectl run net-test --image=alpine --replicas=2 sleep 36000 #创建名称为net-test的应用,镜像指定为alpine,副本数为2个deployment.apps "net-test" created[root@linux-node1 ~]#kubectl get pod -o wide #查看pod的状态信息,此时是API Server从etcd中读取这些数据NAME
2020-11-23 18:02:45
211
转载 Kubernetes学习之路1-概念
1.基本概念ClusterK8s集群,包含Master节点,Node节点。MasterMaster是k8s集群中主节点,负责应用访问调度,可集群部署,运行多个Master。NodeNode归属于Master管理的节点,负责监控汇报容器状态,并根据Master要求管理容器生命周期。Pod容器组,可设置标签,K8s运行管理最小单元,一个容器组中运行一个或多个相关联的容器,各个容器之间共享一个网络中的namespace,可通过localhost进行通信,且共享存储。contr.
2020-11-23 15:39:56
97
原创 JAVA学习---------多态
乐器与乐符的关系package polymorphisn.music;public enum Note { MIDDLE_C, C_SHARP, B_FLAT;}/////////////////////////////package polymorphisn.music;import static net.mindview.util.Print.*;class ...
2020-01-09 19:07:03
130
原创 牛客66题(8)跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。假设有1阶有1种方法;假设有2阶有2种方法;假设有3阶有(2,1),(1,2),(1,1,1)3种方法;假设有4阶(1,1,1,1)(2,1,1)(1,2,1)(1,1,2)(2,2)5种方法:假设有n阶,要求解方法F(n),最后结束的方式有两种,1种是跳两阶到...
2018-11-24 11:20:18
137
原创 史上思路最清晰的快速排序C++
template<class Type>int partition(SqList<Type>& List,int low,int high){ ElementType<Type>elem=List.elem[low];//以数组的第一个数作为基准数 Type pivotkey=elem.key;//基准数赋值 int i=l...
2018-11-23 11:49:56
162
原创 牛客66题(7)斐波那契数列
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39;斐波那契数列特征为除第一项与第二项外其余项均为前两项的和。class Solution {public: int Fibonacci(int n) { if(n==0) { return 0; ...
2018-11-23 11:49:00
192
原创 牛客66题(6)旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。class Solution {public: int minNumberInRotateArray(vec...
2018-11-23 11:48:16
107
原创 牛客66题(5)用两个栈来实现一个队列
class Solution{public: void push(int node) { stack1.push(node); } int pop() { int a; if(stack2.empty()){ while(!stack1.empty()) { stack...
2018-11-23 11:47:34
93
原创 牛客66题(4)重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Definition for binary tree * struct TreeNode { * int val; * T...
2018-11-23 11:46:52
192
原创 牛客66题(3)从尾到头打印链表
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。思路:很简单,设置一个栈,遍历链表将链表依次压栈,最后依次弹出。class Solution {public: vector<int> printListFromTailToHead(ListNode* head) { vector<int>v; if(hea...
2018-11-23 11:46:08
90
原创 牛客66题(2)替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。class Solution {public: void replaceSpace(char *str,int length) { if (str==NULL||length<0) return; ...
2018-11-23 11:45:23
135
原创 牛客66题(1)二维数组查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution {public: bool Find(int target, vector<vector<int> > array) { ...
2018-11-23 11:44:33
228
转载 SQL注入攻击原理与几种防御方式
一、SQL注入简介SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库。二、SQL注入攻击的总体思路 1.寻找到SQL注入的位置2.判断服务器类型和后台数据库类型3.针对不同的服务器和数据库特点进行SQL注入攻击三、SQL注入攻击实例 比如在一个登录界面,要求输入...
2018-11-23 11:37:16
7922
转载 牛客错题
执行下面的程序时,假设用户输入为1□22□333,则ch1、ch2和ch3的值为()。 1 2 char ch1,ch2,ch3; scanf("%1c%2c%3c",&ch1,&ch2,&ch3); 【解释】当格式控制符是%nc,空格和转义字符均作为有效字符被输入,将把n个字符中的第一个字符赋值给相...
2018-11-14 10:45:27
877
转载 则sizeof(struct test )的值
https://www.nowcoder.com/test/question/done?tid=19976256&qid=112524#summary若有下面的说明和定义: 1 2 3 4 5 6 struct test { int ml; char m2; float m3; union ...
2018-11-13 10:55:49
2387
转载 首个重复字符
https://www.nowcoder.com/practice/dab59997905b4459a42587fece8a75f4?tpId=49&tqId=29279&rp=1&ru=/activity/oj&qru=/ta/2016test/question-ranking
2018-07-18 19:05:11
180
原创 C++学习之浮点数的整型数次方
点击打开链接class Solution {public: double Power(double base, int exponent) { double sum=1.0; if(exponent>0){ for(int i=1;i<=exponent;i++) sum*=base; }...
2018-05-23 21:59:11
1004
转载 C++学习之统计二进制数据1的个数
点击打开链接链接:https://www.nowcoder.com/questionTerminal/8ee967e43c2c4ec193b040ea7fbb10b8来源:牛客网如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。其余所有位将不会受到影响。 举个...
2018-05-23 21:34:07
3027
转载 C++学习(二)
点击打开链接CA* pa = &c;这句话是父类指针指向子类对象,调用pa->f1()时,因为父类中的f1()是虚函数,所以将发生动态绑定,调用子类CB中的f1()函数,先输出CB::f1()在CB类的f1()函数中,调用非虚函数f2(),但因为其父类CA中的f2()函数并不是virtual函数,所以将调用CB类中的f2()函数,输出CB::f2()。如果将CA类中的f2()改成虚函...
2018-05-21 19:22:33
146
转载 C++学习
点击打开链接char*p1="hello";char*p2="world";char*p3="a piece of cake";char*str[]={p1,p2,p3};printf("%c",*(str[0]+1));str[0] 为p1 p1指向的是"hello" p1指针+1 前进一位指向字符e。最后输出e...
2018-05-21 18:59:21
91
原创 指针与常成员常指针
指针的类型与其所指向的对象类型必须一致,,例外就是允许令一个指向常量的指针指向非常量对象double dval=3.14;const double *cptr=&pi;cptr=&dval;总结,常指针可以指向常量或变量,但常量就只能用常指针来指向。 int *const cur=&err;//代表指针cur是常指针只能指向err不能改变指向。但err值可以改变。const...
2018-05-12 14:31:57
196
原创 关于const用法,常对象
常对象中数据成员为常变量且需要有初值,例:Time const t1(12,34,46);这样数据就不能被修改,定义形式:类名 const 对象[实参表列];或者const 类名 对象名[实参表列];如上例中有 t1.gettime();是不对的。如何访问常对象中的数据?需将成员函数申明为const即可,如void gettime() const;即可,可访问,但不允许修改常对象中的值。cons...
2018-05-07 17:12:41
393
转载 C++中为什么要将析构函数定义成虚函数
派生类的成员由两部分组成,一部分是从基类那里继承而来,一部分是自己定义的。那么在实例化对象的时候,首先利用基类构造函数去初始化从基类继承而来的成员,再用派生类构造函数初始化自己定义的部分。同时,不止构造函数派生类只负责自己的那部分,析构函数也是,所以派生类的析构函数会只析构自己的那部分,这时候如果基类的析构函数不是虚函数,则不能调用基类的析构函数析构从基类继承来的那部分成员,所以就会出...
2018-05-07 14:47:53
482
转载 sizeof()类大小的原则
可以归纳以下几个原则:1.类的大小为类的非静态成员数据的类型大小之和,也就是说静态成员数据不作考虑。2.普通成员函数与sizeof无关。3.虚函数由于要维护在虚函数表,所以要占据一个指针大小,也就是4字节。4.类的总大小也遵守类似class字节对齐的,调整规则。...
2018-05-07 14:26:34
197
转载 malloc/free与new/delete的区别
1. 申请的内存所在位置new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。2.返回类型安全性new操作符内存分配成功时,返回的是对象类型的指针,类型严格与对象匹配,无须进行类型转换,故new是符合类型安全性的操作符。而malloc内存分配成功则是返回void * ,需要通过强制类型转换将void*指针转换成我们需要的类型。3.内存分配失...
2018-05-07 13:58:03
101
转载 线索二叉树
不知道你是否和我当时一样,对于线索二叉树,有点云里雾里的感觉,现在我们来一起探讨下吧。首先,我们所应该知道的是:线索二叉树是对二叉链表中空指针的充分利用,也就是说,使得原本是空指针的转化成在某种遍历的顺序下,指向该结点的前驱和后继。也许听的有点糊涂,没关系,请接着往下看。在二叉链表中,每个结点都带有*leftChild和*rightChild,两个指针,而除根结点外,每个结点只被一个指针所对应,要...
2018-04-26 21:56:33
204
转载 栈操作
typedef int Position;struct SNode { ElementType *Data; /* 存储元素的数组 */ Position Top; /* 栈顶指针 */ int MaxSize; /* 堆栈最大容量 */};typedef struct SNode *Stack; Stack CreateSt
2017-10-11 21:37:49
171
转载 元素删除
void Delete(int i,List PtrL){int j; if(iPtrL->Last+1){ printf("不存在第%d个元素",i) return;} for (j=i;jLast;j++) PtrL->Data[j-1]=PtrL->Data[j]; PtrL->Last--; return; }
2017-10-10 11:04:52
223
转载 插入元素操作
void Insert(ElementType X,int i,List PtrL){int j; if (PtrL->Last==MAXSIZE-1){ printf("表满"); return; } if(iPtrL->Last+2){ printf("位置不合法"); return; } for (j=PtrL->Last;j>=i-1
2017-10-10 10:33:33
505
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人