自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 golang代码题,两个协程分别打印数组中所有偶数的和/奇数的和

【代码】golang代码题,两个协程分别打印数组中所有偶数的和/奇数的和。

2024-09-13 16:24:45 161

原创 go-gin响应被覆盖为400,即使正常返回

gin框架,因为在json unmarshal的时候有一个字段出错了,但是其他字段是可以正常使用的,而后面的业务逻辑中又没有使用这个没成功反序列化的字段,所以响应一直都是正常的。一个正常响应里,http状态码为400,但实际已经成功返回了数据,且无论是自己写的业务逻辑代码还是中间件都没有返回400(bad request)这个状态码。一般情况下,是要拒绝非法请求体的,还是要前端传一个合法的请求体,所以就继续用BindJSON,然后如果出错返回400 bad request就好了。

2024-09-04 18:26:08 784

原创 Go语言多态实践以及gin框架c.BindJSON序列化遇到的坑

因为以后可能会扩展出更多类型的工程,所以考虑用多态来实现对工程子参数的处理,这样以后新增工程类型只需要新类型实现TypePara接口即可,尽量减少对主干代码的修改。另外解释下为啥要继续处理成json,因为存入数据库的json字段类型是datatypes.JSON 而请求解析过来的是json.RawMessage,这两个类型不能直接赋值。最后的实现方式:对于前端传过来的请求体,先用一个TypeParaJSON字段,json.RawMessge类型来接收,此时再通过c.BindJSON接收。

2024-09-04 18:24:58 1078

原创 yapi容器化docker部署以及mongodb容器的持久化挂载异常问题

通过docker形式部署yapi,需要准备一个mongodb,然后直接在一个空文件夹里写好Dockerfile,其中通过wget下载yapi的zip包。基本按照这篇文章:https://www.modb.pro/db/149666 来处理即可。

2023-08-01 14:43:58 1297

原创 KubeVirt备份与还原方案【翻译】

kubevirt官方给出的的备份还原方案(思路)

2023-05-06 09:14:28 1008

原创 刷题笔记:二叉树剪枝(递归,迭代)

注意在遍历完某一节点的左子树之后,我们会遍历其右子树,此时要标记这个节点我们已经访问完左子树了,否则会一直循环访问其右子树。当左子树为空且右子树为空且本身值为0时,删除该节点(删除的方式就是返回nil)居然官方也没给出什么其他解法。那么就用显式的栈来实现一下吧。遇到这种问题果然第一反应还是递归,算是比较简单暴力的解法。...

2022-07-20 23:00:27 475

原创 刷题笔记:二叉树的中序遍历(三种解法-递归,迭代,Morris)

二叉树的中序遍历左根右

2022-07-19 21:56:42 268

原创 URL查询参数编码问题(golang)

主要是后端有个转发请求的功能,对另一个服务请求时url query参数有乱码(字符编码),导致另一个服务响应500.前端传入的是json后端解析json并且转为query params 发起http request。这里对传入params的value的类型断言:打印显示:对应的query url就会是:因为中的fmt设置为了’E’,在这个函数里可以看到说明:所以将E换为f,表示不使用指数形式,就可以获得正确的page值了...

2022-06-24 14:10:37 473

原创 golang eshook 自定义elastic client 使用https连接es

因为es从http升级到https了,所以需要修改golang程序里的log钩子,在新建elastic client时设置为https官方给出的方法见:https://github.com/olivere/elastic/issues/738elastic包使用的是默认的httpclient 需要传入自定义的httpclient主要是设置http.client的 字段......

2022-06-21 12:00:46 933

原创 linkerd服务网格调研笔记

简介Linkerd是一个k8s的服务网格,通过提供运行时调试、可观察性、可靠性和安全性来保证更简单安全地运行服务。这些功能都不需要对你的代码进行修改。什么是服务网格?服务网格是一个专注于处理服务间通信的基础设施层,是应用开发和交付问题的解决方案。从架构上来看,它就是一束用户空间代理,位置卡在了服务的"next",额外的会有一组管理进程。那些用户空间代理被称为服务网格的data plane,那些管理进程成为了服务网格的control plane。数据层拦截服务之间的调用并且使用这些调用来做一些事

2022-02-11 16:37:19 2320 1

原创 使用gitbook时graceful-fs报错:TypeError: cb.apply is not a function的解决方案

查看gitbook版本gitbook -V报错:/usr/local/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js:287 if (cb) cb.apply(this, arguments) ^TypeError: cb.apply is not a function at /usr/local/lib/node_modules

2022-02-11 16:25:11 1192

原创 golang for range遍历并赋值给字典后出现所有值相同的问题

for range遍历并赋值给字典后出现所有值相同的问题先看这段(非常经典的)错误示例:(为了方便用json包打印输出结构体,我使用了大写字母开头的导出字段)m := make(map[string]*student)stus := []student{ {Name: "名字1", Age: 1}, {Name: "名字2", Age: 2}, {Name: "名字3", Age: 3},}for _, stu := range stus { m[stu.Name]

2021-12-20 01:39:07 1048

原创 LVS负载均衡调度原理及配置方法

Ref参考写在前面,基本都是把需要的重点用自己的话摘抄下来方便自己以后看懂,原文写的更好。https://www.kancloud.cn/noahs/linux/1540462http://www.linuxvirtualserver.org/zh/lvs3.htmlLVS负载均衡Linux Virtual Server LVS是一个虚拟的服务器集群系统,可以实现负载均衡。当并发超过了Nginx上限(目前1000-2000w PV或并发请求1w以下可以使用Nginx)可以考虑LVS。LVS已集

2021-11-04 17:02:23 184

原创 将flask项目部署在k8s遇到的坑

name 'reload' is not defined原因是用的python2的写法,但python3执行将reload(sys) sys.setdefaultencoding('utf-8')改为import importlibimportlib.reload(sys)报错'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)加入import codecssys.std

2021-09-03 15:10:27 474

原创 flask项目celery使用redis sentinel中遇到的坑

flask项目celery中报错Can’t reconnect until invalid transaction is rolled back发现是celery的程序中有一处db.session.commit()没有处理异常,添加try except和db.session.rollback()之后修复。

2021-09-01 12:26:57 1614 1

原创 2020-08-30问题解决思路与方案:后端传前端JSON(cookie)加双引号问题、令牌无限过期,MAC时间校准

利用set_cookie,后端向前端传json数据时,字符串会加上双引号参考https://blog.csdn.net/chinabestchina/article/details/80905750同样也是设置了一个邮箱地址,然后发现形如"abc"的字符串不会加双引号,但邮箱地址会加。原因是目前大多数浏览器所使用的cookie,对于特殊字符如@,是不兼容的,会自动加上双引号。解决方案有两种:方法1:读取cookie时,将双引号去掉;方法2:在设置cookie值时,先编码encode,读取值时,则相

2021-08-31 10:16:21 758

原创 Prometheus Operator使用指南笔记

本篇博文主要是翻译User Guide of Prometheus Operator并记录笔记从 v0.39.0 开始,Prometheus Operator 需要使用 Kubernetes v1.16.x 及更高版本。概念简介Operator 是一种可以操作其他软件的软件,就是将人所收集的操作经验转化为软件。Prometheus Operator旨在尽可能简单地在Kubernetes上运行Prometheus,同时保持K8s原生配置选项。manifest举例先决条件:一个可以访问的k8s

2021-08-19 23:10:11 1070

原创 RPM build 已经安装了依赖包但还是报错没有包中提供的模块

添加AutoReqProv : no

2021-08-19 12:48:27 453

原创 unable to resolve docker endpoint: default orchestrator is kubernetes but unable to resolve

unable to resolve docker endpoint: default orchestrator is kubernetes but unable to resolve kubernetes endpoint: invalid configuration: no configuration has been provided查看docker desktop关闭Deploy Docker Stacks to Kubernetes by default选项来源:https://stackov

2021-08-17 18:30:36 535

原创 docker启动nginx及问题处理

情景:前后端联调,都部署在本地,需要nginx来进行转发docker pull nginx拉取nginx镜像准备好nginx.confserver { listen 80; # 注意这个是容器的端口,要跟docker run命令中-p xx:yy中的yy一样,xx是宿主机的端口,注意不要有冲突 charset utf-8; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr;

2021-08-12 11:41:38 454

原创 Flask项目中创建数据库表db.create_all()

Flask项目部署时需要按照database中定义好的模型类来创建数据表。直接在database.py中写db.create_all()不起作用,报错:... from app import db, loggerModuleNotFoundError: No module named 'app'搜索了很久没有成功地在单独的文件(database.py)中执行db.create_all(),所以先在__init__.py写了创建的语句,注意要写在最后import database的后面才起作用。f

2021-08-10 21:30:20 3752

原创 APISIX的源码安装与使用

参考官方文档 安装APISIX安装mkdir apisix-2.7wget https://downloads.apache.org/apisix/2.7/apache-apisix-2.7-src.tgztar zxvf apache-apisix-2.7-src.tgz -C apisix-2.7# 记得下载好运行时需要的lua库cd apisix-2.7make deps启动# 先写好配置文件nginx.conf并启动etcd$ make init# start APISIX

2021-07-05 16:09:06 1199

原创 比较临时的修改node_modules内包的源码并编译引用 修改依赖包

开发时的一个测试用需求,所以只是在本地修改了node_modules里某个包的源码。只限本地git clone 包到node_modules里修改源码重新编译包 npm install -s + npm run build在整个项目的目录下package.json手动向dependencies加入该包和版本项目根目录,npm install -s+npm run serve查看效果这个方法不是很好,package.json的添加本来非常严谨。如果是实际应用需求还请查阅别的文章。...

2021-05-28 17:07:53 1421

原创 《Kubernetes in Action》第二章笔记

容器实现隔离机制namspace 单独的系统视图(文件、进程、网络接口、主机名)cgroups 隔离资源(CPU、内存、网络带宽等)虚拟机相较容器的优势内核。虚拟机运行在自己的内核上;容器调用同一个内核,会有安全隐患。执行docker run <image>本机是否已存在该镜像如果不存在则拉取基于镜像创建容器在容器里运行docker run 指定的命令输出后进程终止,容器停止运行docker run busybox echo "Hello world"(这里的he

2021-05-08 12:25:51 855 1

原创 mac上安装apisix(源码安装)

mac上安装apisix(源码安装)获取源码包wget https://downloads.apache.org/apisix/2.2/apache-apisix-2.2-src.tgz并解压安装依赖make deps这一步中提示需要openresty,brew tap openresty/brew+brew install openresty如果直接install会显示找不到No formulae found in taps.又遇到问题Failed to download resource "

2021-02-04 11:35:49 1910

原创 Day14=前端+HTML+CSS

HTML 超文本标记语言标记语言 .html .htm 由一个个标签组成HTML5标准(在头部写明)<!doctype html> anchor 超链接或锚->是否描述了href属性<meta name="viewport" content="width=device-width, initial-scale=1.0">屏幕设定标题 h1~h6下划线u 加粗b 斜体i 强调加粗strong 强调斜体em(强调针对搜索引擎)引用cite 下标sub 删除线del

2021-02-03 21:16:25 139

原创 华为云服务器arm64上安装etcd与apisix-dashboard(未成功,卡在build时yarn install报错/wget返回异常值)

环境华为云服务器 CentOS8 with armetcdref:etcd软件移植centos7.6-arm从github上下载etcd的arm64的tar包(注意修改为需要的版本) wget https://github.com/etcd-io/etcd/releases/download/v3.4.0/etcd-v3.4.0-linux-arm64.tar.gz解压 tar -xzvf etcd-v3.4.0-linux-arm64.tar.gz 或者指定解压目录cd到该目录ls可以看到

2021-02-03 21:12:50 2077

原创 转行自学的2021秋招面经汇总(Java开发/运维开发)

个人情况211计算机硕 本科材料 计算机基础知识很差(四大金刚完全没学过) 考研纯粹为了混计算机学历 自学半年Java 国企实习经历 无Java项目经验 最后拿了小米的运维开发offer面试题答案待施工。。。Java开发金山云(四面通过)一面HashMap底层实现,扩容机制,如果移除元素,红黑树会不会转回链表?锁,轻量级锁,自旋锁的代码举例实现手撕代码,从一些题中选2道遍历树(我选了这个保底,他问是不是因为这个简单,被发现了=。=然后就让我说了说遍历思路。我说完之后我说可能没有这么简单

2021-02-01 20:06:49 868

原创 Day12=枚举+注解+反射+类加载器+双亲委派+如何加载配置文件+class对象+反射获取注解+内省

枚举(记忆中可以阻止反射破坏单例模式?)定义多个常量(public static final)并分组管理。举例:Thread.state,有六种状态,每个都是该类对象枚举定义public enum Level{ LOW(1),MID(50),HIGH(100);//描述完毕 private int levelVal; private Level(int levelVal){ this.levelval = levelVal; } }或者:public enum Level{

2021-01-31 21:13:59 127

原创 Java核心类库学习总结-测试题

数组Array和列表ArrayList有什么区别?数组是在声明时就定义好长度的,这个长度不能变化。列表可以动态扩容(*1.5),可以不断添加元素。数组可以包含基本数据类型,ArrayList只能包含对象类型ArrayList有更多方法和特性,如迭代器数组只能存放同种类型的元素,ArrayList可以存Object,所以可以不同类型ArrayList和Vector的区别Vecotr是线程安全的,ArrayList是线程不安全的。Vector的迭代器是快速失败的。如果Vector对象创建时

2021-01-30 14:44:18 114

原创 Day11=xml语法+DOM4J解析XML+从url获取xml资源并解析+生成XML+JSON

XML可扩展标记语言Extensible markup language平台无关性,独立的标记语言自我描述性,可以由不同语言解析用途:网络数据传输数据存储配置文件存储数据:.xml文件方式内存中构建xml数据xml语法格式自我描述 xml文档声明第一行 <?xml version="1.0" encoding="UTF-8"?>2 标记(元素/标签/节点)xml文档由标记组成开始标记(开放标记):<name>结束标记(闭合标记):</

2021-01-30 13:36:48 226

原创 Day10=单元测试juit+断点debug+快捷键

junit引入jar包新建文件夹并Mark Directory as Test Sources Root对于任意类,按下shift ctrl t 创建测试类选择要测试的方法和版本junit4测试类创建完毕,编写测试代码。debug 断点调试竖排按钮:重新执行、往下继续执行走到下一次断点、暂停、停止、断点、屏蔽所有断点可以在variables里点+号加代码,眼镜时分栏右键断点可以加条件横排:把光标移到当前运行代码的位置,f8单步跳过向下一行代码运行,蓝色单步跳入如果是方法就进入方法往下

2021-01-30 10:33:27 261 1

原创 Day09=java网络编程和多次c/s通信交换数据遇到的问题(无法继续)

计算机在互联网中以IP地址标识内网ip (大多设置为192.168)公网ip 运营商提供一条线路连过来本机ip:127.0.0.1 localhost 可以在完全不联网的情况下使用端口号,传递给确定的进程端口号是计算机中的应用程序的标识,0-65535之间,应用程序可以占1个也可以占多个。应尽量避免使用0-1024之间的,已经被知名的软件或windows操作系统占用。通信协议交流的标准。对数据的传输速率传入接口步骤控制出错控制等,指定的标准,通信双方必须同时遵守才能完成数据交换

2021-01-30 00:28:18 122

原创 Day09=java网络Socket

计算机在互联网中以IP地址标识内网ip (大多设置为192.168)公网ip 运营商提供一条线路连过来本机ip:127.0.0.1 localhost 可以在完全不联网的情况下使用端口号,传递给确定的进程端口号是计算机中的应用程序的标识,0-65535之间,应用程序可以占1个也可以占多个。应尽量避免使用0-1024之间的,已经被知名的软件或windows操作系统占用。通信协议交流的标准。对数据的传输速率传入接口步骤控制出错控制等,指定的标准,通信双方必须同时遵守才能完成数据交换

2021-01-29 12:00:51 94

原创 Day08=线程与进程+线程调度+线程启动方法+线程安全问题+同步&锁+线程状态+多线程通信+线程池

线程与进程的区别(面试常考)本质进程是内存中运行的应用程序线程是进程的执行路径,每个进程必须至少一个线程内存空间进程拥有独立内存空间线程共享进程的内存空间,线程私有程序计数器,虚拟机栈,本地方法栈切换进程切换要保存、还原上下文,比较慢线程切换较快线程调度有以下几种方法分时调度所有线程轮流获得CPU使用权,平均分配每个线程占用CPU的时间(时间片)抢占式调度优先级高的线程使用CPU,如果优先级相同就随机,java使用的也是抢占式调度。CPU使用抢

2021-01-28 17:22:51 115

原创 Day07=IO+字符流字节流+Properties配置文件+序列化与反序列化

io读取和写出 in+outFile文件和目录路径名。描述文件的对象。File file = new File(path);通过路径来创建文件对象。createNewFile();不存在时创建新文件File也可以作为路径。dir.mkdir()不存在时创建文件夹。构造方法的第二种形式:父目录new File(c://haha,b.txt);删除:o.delete()listFiles()获取所有文件,返回数组分隔路径,适配不同系统File.pathSeparator路径分隔符File.

2021-01-28 11:50:39 159

原创 Day06=泛型+常用类库+String+工具类+日期重点

Objects工具类equals()如果string1和string2是传参,在判断相等时如果有null,则会出现空指针异常。用空的东西去调方法是不行的。可以在类里覆写equals,添加判空操作。@Ovveridepublic boolean equals(Object o){ if(this == o) return true; //如果为空或者是获取类不一致(不一致就没法强制转换) if(o == null || getClass()!=o.getClass()) re

2021-01-27 04:28:41 107

原创 Day07 java类集 :Collection的list和set Map

类集java.util.*顶级接口 :Collection Map Ilerator类集是java对数据结构的成熟实现,不用自己再去写了。数组和链表的区别 (面试常考)数组存取(按下标查找)速度快,链表很慢数组需要事先知道长度,链表不需要数组空间通常有限制,需要大块连续内存块,链表是离散分配节点的,通过指针相连,空间无限制链表插入删除元素很快,无需移动链表的特点,只有一个前驱,只有一个后继二叉树先序遍历:根左右中序遍历:左根右后序遍历:左右根待补充:遍历顺序在算法题解题中有

2021-01-26 15:29:29 86

原创 Day05=Java异常处理+快递柜小程序的MVC架构

异常?导致程序中断的指令流。异常给出线程,程序流的路径,灰色的文件是来自依赖库,可以不看,主要是蓝色的是自己写的代码。从上往下看第一个蓝色。异常类Exception对错误操作创建了对象,如果没有处理异常,会把异常返回main方法,抛给调用的方法名(JVM虚拟机),处理方案是中断程序。捕获异常->拦截掉,在try{}catch块里处理try{ //可能出现问题}catch (异常类型1 异常对象1){ //异常处理}catch (异常类型2 异常对象2){ //异常处理}...

2021-01-23 14:44:41 128

原创 Day04=Day04=继承+抽象类+接口+内部类+Scanner的报错解决

继承将父类的一些行为和特征让子类继承。对于面向对象来说,就是描述事物时创建了分等级层次的类。在描述事物时,有些事物有共同点,是一种包含的关系。子类会多加一些内容。如果不写继承,要复制粘贴很多遍,复用性较差。子类对象具有父类的实例域(?)和方法,或子类从父类继承方法而拥有相同的行为。Java中只有单继承(只能继承一个),或是多重继承,没有多继承格式要求写父类子类继承父类 extends在虚拟机中的过程Student s = new Student();栈中创建Student s堆中开辟

2021-01-20 23:57:44 172

空空如也

空空如也

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

TA关注的人

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