自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(101)
  • 收藏
  • 关注

原创 kubernetes(k8s) CRI使用containerd

kubernetes(k8s) CRI使用containerd。

2022-09-04 18:50:04 427 1

原创 go泛型使用方法

go1.18泛型最全使用方法1. 泛型是什么2. 泛型的简单使用2.1. 泛型示例2.2. 自定义泛型类型2.3. 调用带泛型的函数3. 自定义泛型类型的语法3.1. 内置的泛型类型any和comparable3.2. 声明一个自定义类型3.3. 泛型中的"~"符号是什么4. 泛型的进阶使用4.1. 泛型与结构体5. 泛型的限制或缺陷5.1 无法直接和switch配合使用1. 泛型是什么泛型生命周期只在编译期,旨在为程序员生成代码,减少重复代码的编写在比较两个数的大小时,没有泛型的时候,仅仅只是传入

2022-04-01 16:54:08 15954 3

原创 使用kubeadm快速搭建kubenertes(k8s)环境

1. 安装要求在开始之前,部署Kubernetes集群机器需要满足以下几个条件:一台或多台机器,操作系统 CentOS7.x-86_x64硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多可以访问外网,需要拉取镜像,如果服务器不能上网,需要提前下载镜像并导入节点禁止swap分区2. 准备环境准备三台虚拟机,一台master,两台node角色IPmaster192.168.168.136node1192.168.168.137n

2022-02-22 14:14:48 371

原创 kubernetes(k8s) API调用方式

1. kubectl 反向代理// 在 master 节点上,输入如下命令kubectl proxy// 如果需要指定端口,则添加自带非安全端口8080安全端口6443

2022-02-09 14:50:31 6253 3

原创 【go】类型byte和rune是什么

要讨论byte和rune,自然就离不开unicode字符集,那么什么是unicode字符集呢?我们知道计算机存储的都是二进制,如果一个字符要存储到计算机中,那么会事先通过一个映射关系表,也就是我们所说的unicode字符集,找到这个字符对应的16进制表示。unicode字符集收录了世界上所有的字符,不管汉字或者英文、数字、符号等,里面都可以找到一个对应的16进制的表示。例如:“你好,wei”,在unicode字符集中对应的16进制是这样表示的你 4f60好 597d, ff0cw

2021-11-25 11:59:55 190

原创 【go】go+grpc安装和使用

grpc的安装总共需要以下三个步骤:安装protobufgo get -u github.com/golang/protobuf/proto安装protobuf的插件protoc-gen-gogo get -u github.com/golang/protobuf/protoc-gen-go安装grpcgo get -u google.golang.org/grpc创建示例目录架构创建proto文件,根据该文件可以约定传输的参数规则,参数都是从1开始syn.

2021-10-08 14:42:39 929

原创 ELK学习笔记04-ik分词器的使用

分词引发的问题es默认分词器的分词效果如下所示//英文分词GET _analyze{ "text":"I am from china"}//中文分词GET _analyze{ "text":"我是中国人"}可以看出来,es默认的分词器对于中文分词也是将每个中文字符拆开,但是事实上,中国或者中国人是一个词组,所以这时候我们需要使用分词器插件。一般是使用ik分词器,且支持中英文1.ik分词器安装官方github下载对应的版本插件压缩包,并解压https://

2020-08-07 15:37:51 435

原创 ELK学习笔记03-基本增删改查

1.新建一个索引打开左边的导航栏,选择Dev Tools在kibana控制台中输入PUT命令,es的索引相当于关系型数据库中的库PUT /moive_index点击三角箭头执行,可以看到如下执行成功画面可以在浏览器输入es的路径http://192.168.92.129:9200/_cat/indices?v查看所有的索引,如下可以看到新建的moive_index索引已经创建成功2.添加一条数据对上面新建的索引moive_index创建一个moive表并添加一条数据

2020-08-07 14:38:06 414

原创 ELK学习笔记02-Kibana安装

Kibana1.安装前提环境:CentOS 7官网下载好Kibana安装包,地址:https://www.elastic.co/cn/downloads/kibana2.解压修改配置文件使用xftp将压缩包上传到/home目录(任意),执行解压命令//tar -zxvf [压缩包名称]tar -zxvf kibana-7.8.1-linux-x86_64.tar.gz解压后的文件目录如下所示vim命令进入config文件夹修改kibana.yml配置文件vim confi

2020-08-06 14:49:09 160

原创 ELK学习笔记01-ElasticSearch安装

ElasticSearch1.安装前提环境:CentOS 7官网下载好ElasticSearch安装包,地址:https://www.elastic.co/cn/downloads/elasticsearch由于下载的是7.x版本的ElasticSearch安装包,该版本自带了JDK11的环境,且必须为JDK11,与其他环境不兼容,所以不需要再配置java环境2.解压安装包可以使用xftp连接虚拟机将下载好的安装包放到/home文件夹下解压进入解压后的文件夹可以看到如下目录结构

2020-08-05 18:45:47 169

原创 Bootstrap学习笔记02-常用控件

1.表格//overflow为设置滚动条, 超过设置的长度将出现滚动条显示内容//该table配合Jquery进行动态往tbody添加表格内容 $("#tableId tbody")<div class="row" style="position: relative;top: 50px;overflow-y:auto; overflow-x:auto; width:auto; height:500px;"> <table id="cost_stati

2020-07-17 19:34:39 267

原创 Bootstrap学习笔记01-div绝对定位

1.定义一个父级div,添加style属性:position:relative<div style="position:relative"></div>此时定义在该div内的所有元素都将随着该父级div的调整而做出调整2.与某个方向间隔设置了该div的style属性:opsition:relative 之后,即可将该div自由地与某个方向间隔,分别有如下四种属性。left: 10px 表示与左边间隔10px。right:10px 表示与右边间隔10px。to

2020-07-17 19:10:19 1326

原创 【go】channel消费者与select

1.消费者和select关键字的配合,select关键字类似其他语言的switch,但是select的case语句里必须是一个IO操作,一般用来和channel配合使用。消费者的某个协程将会一直循环等待数据,直到如果管道中没有数据,也就是没有可运行的case,它将阻塞,直到有可运行的case,如果子句加上一个 <- time.After(3 * time.Second),则协程等待数据的时间为事先设置好的时间后,将会进入到对应的超时case中,执行该超时case下的代码(case下可以不写代码),然后

2020-05-09 13:05:29 530

原创 【go】channel的无缓存和有缓存区别

1.channel的有缓存:有缓存channel的创建,

2020-05-08 21:01:15 1126

原创 【go】日期、时间戳的比较

golang日期、时间戳的比较问题开发时经常遇到求时间的差值,比如2020/05/05和2020/05/01日的差值是多少,相差多少天?time包func main(){ loc, _ := time.LoadLocation("Local") //获取时区 timeLayout := "2006-01-02 15:04:05" //转化所需模板 tim...

2020-04-30 11:12:41 2836

原创 Go生产者和消费者模型

前言创建生产者消费者模型,首先必须要了解到Go有个天然的并发队列channel,Channel是Go中的一个核心类型,你可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯,简单来说就是channel可以在协程之间传递数据,协程就是类似Java的多线程。用channel来传递"产品", 不再需要自己去加锁维护一个全局的阻塞队列。1.使用go标识符创建协程:在方法调用或者代...

2020-04-29 11:42:20 1064 1

原创 C++学习笔记15-引用其他文件函数打印二维数组

1.创建文件EWDemo.h:2.EWDemo.h文件代码:#ifndef EWDEMO_H_INCLUDED#define EWDEMO_H_INCLUDED//二维数组的传参#include <iostream>using namespace std;void show(double (*)[5],int); //定义原型//函数实现void show(d...

2020-04-26 21:56:15 258

原创 C++学习笔记14-自定义函数

1.定义两个数之和的函数:#include <iostream>using namespace std;/*** 自定义函数**/int sum(int,int); //需要开头声明函数原型,可不写参数名称int main(){ //函数调用,rel接收返回值 int rel = sum(3,5); cout << rel &l...

2020-04-26 20:37:58 371

原创 C++学习笔记13-动态分配内存

1.使用new分配内存:指针真正的用武之地:在运行阶段分配未命名的内存以存储值。在此情况下,只能通过指针来访问内存。//1.在运行阶段为一个int值分配未命名的内存//2.使用指针来访问(指向)这个值(右->左)int * ptr_int = new int;2.使用delete释放内存:与new配对使用不要释放已经释放的内存不能释放声明变量分配的内存delet...

2020-04-26 20:02:30 108

原创 C++学习笔记12-引用

1.指针和引用两者之间的关系:引用对指针进行了简单封装,底层仍然是指针。获取引用地址时,编译器会进行内部转换。2.引用的代码示例://当引用常量时,需要在前面加上constconst int& age = 18; //引用变量时int num = 666;int& rel_num = num; //实际上就是 int* rel_num = &n...

2020-04-26 19:32:17 79

原创 C++学习笔记11-初识指针

前言指针变量,实际上就是存放另一个变量的一串十六进制的内存地址,通过&符号获取变量的内存地址(例如&year)。指针变量加上*号可以直接对被引用地址的变量所在内存地址中的值直接进行操作。基本用法:数据类型 *指针变量名例如:int *ptr_num;char *ptr_name;float *money_ptr;double *p_price;代码示...

2020-04-26 18:58:37 108

原创 C++学习笔记10-向量容器vector和使用排序函数

前言向量容器vector动态数组,可以在运行阶段设置长度具有数组的快速索引方式可以插入和删除元素定义和初始化vector vec1;1.创建vector数组:#include <iostream>#include <vector>using namespace std;int main(){ vector<double...

2020-04-26 17:02:02 269

原创 C++学习笔记09-初认识数组

1.动态地从键盘输入信息并赋值:#include <iostream>using namespace std;int main(){ //动态地从键盘输入信息并赋值 const int N = 5; int nums[N]; cout << "数组大小:"; //sizeof()统计字节,由于都是int类型,所以除以int字节...

2020-04-26 14:50:59 194

原创 C++学习笔记08-break和continue

1.beark是直接终止当前的一层循环,例如:#include <iostream>using namespace std;int main(){ for(int i=0;i<10;i++){ cout << i << endl; for(int j=0;j<10;j++){ //当j 等于5...

2020-04-26 13:25:54 267

原创 C++学习笔记07-认识循环for、while、do_while

1.使用for循环打印1-100的累加和:#include <iostream>using namespace std;int main(){ //for循环累加1-100得到结果 int sum = 0; for(int i=1;i<=100;i++){ sum += i; } cout << "for...

2020-04-26 13:06:54 111

原创 C++学习笔记06-初识赋值、关系、逻辑运算符

1.单等号:计算顺序:从右往左。double salary = 3200.0;double total = salary * 2;char sex = 'F';int score = 98;2.复合运算符:num += 90; //等价于num = num + 90;num -= 90; //等价于num = num - 90;num *= 90; //等价于num ...

2020-04-26 00:09:31 120

原创 C++学习笔记05-算术运算符和表达式

1.实现输入一串数字后倒序输出:#include <iostream>#include <climits>#include <cmath>using namespace std;int main(){ int num; int temp = 0; cin >> num; //键盘输入 while(tru...

2020-04-25 23:29:54 82

原创 C++学习笔记04-字符变量

1.将字符相加,则会自动将其ASCALL码值相加:A为65,空格为32#include <iostream>using namespace std;int main(){ cout << 'A' + ' ' << endl; return 0;}运行结果:2.正好为小写a的ASCALL码值:将其强转为char类...

2020-04-25 22:09:42 437

原创 C++学习笔记03-声明和使用变量

1.打印整型变量:打印小明的月薪#include <iostream>#include <climits>using namespace std;int main(){ int salary = 2500; //声明并初始化变量 //打印小明的月薪 cout << "小明的月薪是:" << salary &...

2020-04-25 20:44:17 89

原创 C++学习笔记02-常见的数据类型

1.输出int的最大值:#include <iostream>#include <climits> //引入预处理文件using namespace std;int main(){ //打印int类型最大的数 cout << INT_MAX << endl; return 0;}输出结果:2.打...

2020-04-25 19:35:52 84

原创 C++学习笔记01-初识C++

1.使用Code::Blocks工具运行第一个C++代码:#include <iostream>using namespace std; //名空间,表示变量作用域int main(){ //把内容发送给字符串去打印,end line控制符,表示重启一行 cout << "Hello world!" << endl; // &lt...

2020-04-25 16:53:48 104

原创 乐优商城学习笔记08-使用FastDFS客户端改造文件上传

1.安装好FastDFS后,打开leyou-upload模块的pom.xml依赖文件添加FDFS客户端依赖: <!--FastDFS客户端--> <dependency> <groupId>com.github.tobato</groupId> <artifactId>fa...

2020-03-11 18:24:32 219

原创 乐优商城学习笔记07-文件上传以及跨域解决

1.在leyou下新建Module:2.打开pom.xml文件引入eurake客户端、web启动器、单元测试依赖: <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifa...

2020-02-27 19:50:48 487

原创 Java类重写equals方法和hashCode方法

前言我们知道,所有的类都继承了Object类,所以每个类都拥有了Object类里面的equals方法和hashCode方法:Object里的equals方法:public boolean equals(Object obj) { return (this == obj); }Object里的hashCode方法:public native int has...

2020-02-16 23:34:17 292

原创 GOF23设计模式02之动态代理模式

前言由于前面静态代理暴露出一个问题,就是当需要代理的对象越来越多怎么办?于是就有了动态代理。1.我们首先需要修改Agent.java:必须实现invocationHandler接口package com.wei;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;public ...

2020-02-09 23:19:14 94

原创 GOF23设计模式01之静态代理模式

前言:什么是代理模式?代理顾名思义就是帮别人做事情,那么代理模式也是一样的,不直接暴露真实的对象给调用者,而是通过代理的对象去调用。那么这样有什么作用呢?我们可以先写一个静态代理模式来看看。1.我们先创建一个Girl接口:package com.wei;public interface Girl { void sing();}2.然后我们创建一个RealGirl去实现这个接口:...

2020-02-09 22:25:21 98

原创 PHP学习笔记06-静态变量、回调函数、匿名函数、闭包

1.静态变量修饰符static使用static修饰变量可以使函数之间跨函数共享数据如上图所示,static修饰变量b后,调用三次函数,变量b的值都在增加,而没有static修饰的变量a,每次调用的变量都是1。2.可变函数假如变量的值是一个函数名称,则可以直接在改变量之后加上括号即可调用改函数。3.回调过程和回调函数我们一般把一个函数传入给另一个函数去使用,这个过程称之为回调函...

2020-02-08 17:36:14 201

原创 乐优商城学习笔记06-新增品牌后台代码

1.首先我们来看一下点击品牌新增然后提交:我们可以看到请求的路径还是brand,所以我们可以在BrandController.class下写一个接收post请求的方法。2.我们再看看发送请求的字段:我们可以发现,里面除了cids之外,其他的就是我们Brand.class的实体类。这个cids其实就是品牌分类表的id,就是为了我们存储这个品牌信息时候,一块将它属于哪个品牌下的信息一...

2020-01-21 19:09:31 349 3

原创 乐优商城学习笔记05-编写品牌查询后台代码

前言:上次我们已经写好了分类的后台代码,这次我们来编写品牌查询后台代码。1.首先我们在leyou-common里面新建一个PageResult.class,用来显示分页结果集:package com.leyou.common.pojo;import java.util.List;//分页结果集public class PageResult<T> { priva...

2020-01-20 21:06:44 298

原创 乐优商城填坑笔记01-分类管理代码的实体类

前言:由于实体类中使用了is开头的命名方式,在生成getter和setter时候,需要手动去生成,否则编译器会把is忽略掉。如果没有加上is的话,前端页面中的分类管理将不会有多级联分类,只有单级分类。1.名称:private Boolean isParent;2.生成getter和setter: public Boolean getIsParent() { return...

2020-01-20 17:49:00 321 1

空空如也

空空如也

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

TA关注的人

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