自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

WayJasy的博客

懒人懒福

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

原创 pod 通过 serviceAccount 访问 ApiServer

pod 通过 serviceAccount 访问 k8s Apiserver

2022-09-07 11:45:45 635 1

原创 kubectl常用命令

kubectl、k8s

2022-07-20 10:53:37 565

原创 wireshark实现录制并解析GRPC请求以及踩坑记录

抓包、grpc

2022-07-15 11:57:56 533

原创 kubeadm搭建k8s集群(docker+crio)

前置说明master节点CRI: dockernode节点CRI:crio机器版本:ubuntu 20.4CRI版本:crio 1.20.7 docker 20.10.7k8s版本:1.20.12kubelet、kubeadm、kubectl:1.20.12前提条件1、集群中所有机器网络互连2、不可有重复主机名、mac地址3、禁用交换分区前置操作禁用交换分区swapoff -a关闭防火墙systemctl stop firewalldmaster节点搭建步骤1、.

2022-04-03 18:19:13 1688

原创 linux常用命令记录

1、lsof - i:80 查看80端口占用2、netstat -anp|grep 80 查看80端口占用3、更新ing

2022-03-12 11:37:02 1666

原创 golang操作es进行模糊查询遇到的坑点

问题描述当对path字段进行模糊查询时,当查询值内有特殊字符时,es 无法返回有效数据。query := es.NewBoolQuery().query.Must(es.NewWildcardQuery("path", wildcardItem(Path)))原因猜测1、特殊字符需要转义?2、分词了导致搜索不到?解决办法1、查看api源码发现,api会自动转义,因此排除1原因2、检查es mapping,发现path字段的type是text类型,text类型字段存储时会先进行分词,将分词后

2021-10-14 10:44:37 1940

原创 负载均衡浅析(更新ing)

1.什么是负载均衡简单地说,就是将请求(或者说流量)按照既定规则分发给多个真实后端服务器的过程。2.为什么需要负载均衡2.1 没有负载均衡的应用架构会有什么问题?用户通过浏览器直接访问后端服务。当请求量过于庞大,超出了服务器处理请求的极限, 或者服务器因其他原因导致宕机时,都会导致用户的访问速度变慢甚至无法访问。(单点故障)解决办法:Scale out 水平扩展Scale up垂直扩展虽然可以增强单机处理能力,但是依旧会出现单点故障导致服务不可用。因此可以通过Scale out水平扩

2021-08-01 18:07:31 522

原创 Windows下docker安装mysql并挂载数据

一、拉取mysql镜像docker pull二、运行镜像生成容器docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql三、创建本地挂载目录举例: E:\docker-mysql\data 存放数据 E:\docker-mysql\conf 存放配置文件四、复制一份mysql容器配置文件到本地挂载目录docker cp mysql:/etc/mysql/my.cnf E:\docker-

2021-01-03 21:06:02 1807

原创 sonarqube 集成 golangci-lint

1、在项目根目录下执行golangci-lint run --out-format checkstyle ./xxx/... > report.xmlxxx 表示 你想要扫描的文件路径,/... 表示递归扫描当前路径下的所有文件执行后在根目录下就会生成 report.xml 文件2、在项目根目录下执行sonar-scanner -Dsonar.go.golangci-lint.reportPaths=report.xml将 report.xml 上传到 sonarqube 就大功告成.

2020-11-10 14:34:20 1582 9

原创 docker 搭建 sonarqube

Docker (docker-compose) 搭建 sonarqube一、需要Dockersonarqube 镜像postgres 镜像二、准备镜像1)Docker安装:略2)sonarqube 镜像拉取docker pull sonarqube3)postgres 镜像拉取docker pull postgres三、编写docker-compose分别新建两个文件夹 sonarqube 和 postgres 存储两者的 docker-compose 文件和环境变量

2020-10-21 15:56:37 220

原创 Linux 下文件权限查看

直接入题是个权限位第一位: 表示文件类型[-] : 普通文件[l] : link文件[d] : 目录文件剩下 2~10 位,每三位分别对应不同用户,2-4位代表所有者user的权限说明,5-7位代表组群group的权限说明,8-10位代表其他人other的权限说明。r :可读 代表数字 4w :可写 代表数字 2x :可执行 代表数字 1每三位看作一个数字,那么 -rwxrwxrwx 对应权限就是 777-rwxr--r-x 就是 745修改权限 ch

2020-07-14 11:08:12 143

原创 MySQL索引简介

索引索引什么是索引索引的目的索引的优劣势优势劣势索引分类单值索引唯一索引复合索引基本语法索引结构哪些情况需要建立索引哪些情况不要创建索引索引优化索引失效(避免)建议索引什么是索引索引(Index)是帮助MySQL高效获取数据的数据结构。索引的本质: 数据结构。可以简单理解为“排好序地快速查找的数据结构”。除数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现搞基查找算法。这种数据结构,就是索引。(典型B树索

2020-06-07 17:30:47 99

原创 Redis学习整合

RedisRedis1.关系型数据库CAP原理CAPCAP 的三进二BASE2. 分布式和集群简介分布式集群3. Redis入门是什么特点应用基本操作添加取值4. Redis数据类型StringListSetHashZset5. Redis三种特殊数据类型geospatial 地理位置Hyperloglog 基础统计Bitmaps6. Redis的事务事务7. Redis锁悲观锁乐观锁8. Jedis操作导入依赖连接redis数据库具体API操作事务9. Springboot整合Redis10. Redis

2020-06-07 17:28:21 308

原创 leetcode刷题(更新ing)

树1.二叉树前序遍历非递归用一个栈维护节点,插入顺序为右左根,那么弹出顺序为根左右,正好是前序顺序。class Solution { public List<Integer> preorderTraversal(TreeNode root) { Stack<TreeNode> st = new Stack<>(); List<Integer> ans = new ArrayList<>();

2020-06-07 17:22:23 296

原创 面试题专题一: Java基础

面试题专题一Java基础1. JAVA 中的几种基本数据类型是什么,各自占用多少字节int :4long:8float:4double:8boolean:2char:2byte:1short:22. String 类能被继承吗,为什么。不能。String类底层是一个由final关键字修饰的value数组,由final修饰的变量表示不可改变。同时Stirng类也是由final修饰的,不可被继承。3. String,StringBuffer,StringBuilder 的区别可变

2020-05-20 23:24:33 140

原创 MySQL性能优化的21个方法(个人理解)

1. 使用查询缓存优化查询我们知道,一条SQL语句的执行需要经过:解析、优化和截断过程。当有相同的查询SQL被执行了多次时,这些查询结果就会放到一个缓存中。后续相同的查询结果就不需要再次执行SQL语句,而直接从缓存中获取结果。加快了查询性能。目前大多数MySQL数据库自动开启了查询缓存。但是如果我们使用一些数据不固定的查询语句(例如使用rand()函数),这样就导致每次查询的结果都不固定,数据库就不会使用查询缓存。2. EXPLAIN 你的select 查询使用 explain 命令可以让你知道My

2020-05-20 11:28:37 280

原创 进程间的六种通信方式简记

管道管道在创建之初会开辟一块固定大小的内存区域,因此对于数据量较大的情况,管道是难以应付的。消息队列send Message发送消息, receive 读取消息。 其中有两次copy数据的过程,会有额外的CPU消耗,不适合频繁且数据量大的通信。共享内存多个进程共享一块共享内存。进程间是没有同步机制的,通过信号量可以去实现这么一个同步机制。套接字(Socket)单机情况下也能使用的通信方式,但是效率较低信号量本质上是一个锁机制,通过加锁来实现进程间互斥。信号本身并..

2020-05-09 18:25:30 192

原创 最大正方形 leetcode221

在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4思路:1、暴力O(n2∗m2)O(n^2*m^2)O(n2∗m2)就不说了2、动态规划dp[i][j]dp[i][j]dp[i][j]表示从(0,0)(0,0)(0,0)开始到(i,j)(i,j)(i...

2020-05-04 17:03:15 111

原创 链表专题 3. 删除链表节点

题目描述给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。思路对于头结点不好处理的题,通常设置一个哑结点作为 “头”/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * L...

2020-05-01 23:45:31 100

原创 链表专题 2. 求链表交点

leecode题目描述:给出两个单链表,求他们的公共交点思路:如果两条链表有交点x,那么他们在x后面的节点都是相同的。先求出链表长度差 dif,遍历其中一条链表使他们的长度相同,然后一顿乱搞。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNo...

2020-05-01 15:55:34 158

原创 链表专题:1、合并有序链表

题目描述:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4/** * Definition for singly-linked list. * public class ListNode { * ...

2020-05-01 14:52:32 82

原创 jdk14 新特性

Java14新特性1. instanceof 模式匹配旧:类型匹配后的使用,需要强制转换private static void old(Object obj) { if(obj instanceof String){ String str = (String)obj; System.out.println(str.contain("java")); ...

2020-04-30 17:08:54 488 1

原创 TCP相关问题极简分析

TCPTCP:全双工可靠传输,面向字节流传输Tcp三次握手① Server处于空闲监听LISTEN状态② Client发送SYN连接请求,然后处于SYS_SENT状态 (第一次握手)③ Server收到请求,发送ACK应答,表示收到了请求,同时间再发送SYN信号给Client,表示可以建立连接了。此时Server处于SYN_RECD状态 (第二次握手)④ Client收到Serv...

2020-04-27 12:30:54 212 1

原创 剑指offer 67题 10 链表中倒数第k个结点

题目描述输入一个链表,输出该链表中倒数第k个结点。思路遍历链表存到list中,然后使用Collections集合工具类翻转取值,注意判断一些边界条件/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}...

2020-04-26 23:44:28 77

原创 HashMap初始容量设置问题

HashMap初始容量设置问题我们都知道HashMap的默认容量为16,但是:HashMap<Object, Object> objectObjectHashMap = new HashMap<>(13); //13为自定义的hashmap容量为什么我们可以这样设置HashMap的容量而不报错呢?分析一下HashMap源码:调用了两个参数的构造方法我们注意...

2020-04-26 00:08:23 1366 1

原创 关于JAVA动态代理的一些个人理解和实现(基于JDK)

跟着步骤来:1、首先创建一个UserDao接口public interface UserDao { public void add(); public void delete(); public void search(); public void change();}2、创建一个UserDaoImpl实现类public class UserDaoIm...

2020-04-25 15:31:24 133

原创 剑指offer 67题 9 矩形覆盖

牛客题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?思路很容易想到:21只有一种方法。22有两种方法。那 2 * 3, 2 * 4, 2 * n 呢?2*3的摆放方法可以看成:(2 * 2的摆放数,最后再摆一块) + (2 * 1的摆放数,最后再摆两块)那么我们设dp[n]dp[n]dp[n]表...

2020-04-23 10:22:44 72

原创 剑指offer 67题 8 变态跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路《跳台阶》那题是一次只能跳1级或2级,这题是一次可以跳任意级。思路和前一题一样dp[n]dp[n]dp[n]表示跳到nnn级的方案数dp[n]=dp[n−1]+dp[n−2]+.....+dp[1]+1dp[n] = dp[n-1]+dp[n-2]+.....+dp...

2020-04-23 09:40:21 64

原创 记一下redis(ubuntu)安装过程

1. 下载安装包$ wget http://download.redis.io/releases/redis-xxx.tar.gz#xxx改为对应的版本号,版本号可上官网看2. 解压$ tar -xzvf redis-xxx.tar.gz3. 安装进入解压出来的redis目录,然后执行$ make$ make install #这条命令需要在root权限下执行 4....

2020-04-22 17:46:38 94

原创 剑指offer 67题 7 跳台阶

牛客题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。思路设跳n级台阶的方案数为 dp[n]dp[n]dp[n]由于青蛙一次可以跳上1级或2级,那么:dp[n]=dp[n−1]+dp[n−2]dp[n] = dp[n-1] + dp[n-2]dp[n]=dp[n−1]+dp[n−2]dp[n]dp[n]dp[...

2020-04-21 23:20:16 119

原创 剑指offer 67题 6 斐波那契数列

<牛客> 斐波那契数列题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项为1)。n<=39思路没思路,直接迭代。public class Solution { public int Fibonacci(int n) { int a = 0,b = 1; int c ...

2020-04-21 10:16:16 134

原创 剑指offer 67题 6 旋转数组的最小数字

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路这题有一个时间复杂度更小的做法:二分旋转后的数组一定是前半部分非严格递增的,后半部分也是非严格递增,且...

2020-04-21 10:09:12 80

原创 剑指offer 67题 5 用两个栈实现队列

《牛客》用两个栈实现队列题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路明白栈是FILO(先入后出)的数据结构,队列是FIFO(先入先出)的数据结构。stack1先入的元素需要它先出,那么就需要将它的元素存入另一个栈stack2,这样最先入的元素就变成了stack2的栈顶,那么就可以先出了,实现了队列的操作。import java.uti...

2020-04-21 09:51:11 73

原创 剑指offer 67题 4 重建二叉树

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路这题要稍微找下规律。首先根据前序序列,可以很容易知道,根节点一定是序列的第一个元素那么就可以找到中序序列中根节点的位置。知道了中序序列根节点...

2020-04-20 21:28:50 78

原创 剑指offer 67题 3 从尾到头打印链表

题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。思路遍历链表的同时将值插入ArrayList中然后使用Collections集合类的reverse方法进行翻转/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int...

2020-04-20 20:09:11 79

原创 剑指offer 67题 2 替换空格

题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路replace()replace()replace() 方法或者 直接暴力遍历题外话网址中如果有空格等特殊字符,解析过程中会把这些字符替换成类似%20这样的字符串,保证计算机能识别。public class Sol...

2020-04-20 14:11:58 72

原创 剑指offer 67题 1 二维数组中的查找

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路一: N2N^2N2暴力,不谈思路二: 由于行从上到下递增,列从左往右递增,那么我们可以从最右上角的数字开始比较。如果当前array[x][y]<targetarray[x][y] &lt...

2020-04-20 09:48:49 69

原创 My线程池笔记

线程池的概念线程池,一种多线程的处理形式,处理过程中可以将任务添加到队列中,然后创建线程启动这些任务。 这里的任务就是实现了Runnable或Callable接口或继承Thread类的对象实例。线程池属于JUC( java.util.concurrent )包。使用线程池好处:重复利用已有的线程继续执行任务,避免线程在创建和销毁时造成的消耗。由于没有创建和销毁时造成的消耗,因此可以提高...

2020-04-10 18:20:42 116 3

原创 通过一个Socket连接的例子来认识 NIO

众所周知,NIO(new IO 也叫做 NoBlocking IO),非阻塞IO,是由BIO演变而来的,它的优势就在于数据传输过程中,由BIO的阻塞式变为非阻塞式,那么什么是阻塞和非阻塞?先来一个BIO的例子。/** * 服务端 */public class Server { static byte[] bytes = new byte[1024]; public sta...

2020-03-27 14:57:20 202

原创 springboot 实现发送邮箱验证码

这里使用的是QQ邮箱,其他邮箱类似。1.获取授权码进入QQ邮箱主页面,找到左上方设置 , 选择账户选项卡,往下拉看到把第一项POP3/SMTP服务开启,然后按照他的步骤获取授权码,并且记录下来。2.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> ...

2020-03-16 22:56:31 1904

空空如也

空空如也

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

TA关注的人

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