自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【无标题】

如果字符串中有非 ASCII 编码的字符,比如中文,那么每个字符占用多个字节,字符串的字节长度大于字节个数。这句话是一条SQL语句,它的作用是从information_schema.tables表中查询ldn_funding_funder_id_db_00000004数据库中以funder_id_bcl_bke_disburse_tab_00000012为前缀的表的名称和行数,并按照表名降序排序。但是,如果你在中间件或处理函数中启动新的goroutine,你不能使用原始的上下文,你必须使用一个只读副本。

2023-06-02 09:47:09 348

原创 17.plantUML画类图的语法、组合关系和聚合关系之间的区别

plantUML画类图的语法组合关系和聚合关系之间的区别依赖关系和关联关系的区别一个类图语法示例

2023-05-23 10:00:21 720

原创 16. pod亲和性和OOM后,程序为什么会崩溃?进程组

一、POD为什么需要podpod如何创建和删除?pod对节点的偏好是什么意思?为什么一组紧密骨干的进程要在同一个上下文中运行pod之间的调度策略是什么?都有哪些?举一个pod亲和性的例子拓扑键是什么?拓扑域是什么?拓扑域的作用是什么?拓扑域对服务发现有什么影响init container是什么?init container的作用是什么?init container和pod的关系是什么?容器的状态有哪些?容器paused和running有什么不同?所有

2023-05-04 10:30:13 224

原创 15.namespace本质,cgroup本质,层结构,mount namespace介绍

容器创建的时候,在cgroup的子系统下比如sys/fs/cgroup/cpu下创建一个子目录container, container里会自动生成和cpu目录下一致的配置文件,改变这些配置文件里的值,然后把被限制的进程(即容器进程)的PID写入tasks即可。这些配置文件的值一般是docker run的时候指定的。它最主要的作用,就是限制一个进程组能够使用的资源上限,包括 CPU、内存、磁盘、网络带宽等等。把宿主机的 /var/lib/lxcfs/proc/* 文件挂载到容器的/proc/*

2023-04-23 09:54:11 221

原创 14.Linux rpm,brew软件安装包命令,zsh和bash,内置命令和外部命令,ps命令,top命令解析,swp,为什么cpu利用率很低,负载却很高?

解释一下rpm, opt,opt-get, brew,brewhomewget是什么,和brew联系和区别ps命令man info help --help如何区分内置命令和外部命令?zsh 和 bash 的区别是什么?top命令 展示值解析系统负载是什么平均负载是怎么算的平均负载的具体计算逻辑是怎么样的每个核心的负载和平均负载之间的联系和区别如何查看系统中 CPU 核心的个数?htop里面的swp是什么?有什么作用?明明物理内存还有很多,为什么swp却占比那么高为什么cpu利用率

2023-04-19 10:16:48 1150

原创 13.父进程和子进程,内核线程和进程的创建和结束,fork()和clone区别,线程映射模型,多对一为什么会阻塞?

为什么说linux的线程使用进程来实现的Linux如何创建和管理线程?Linux的线程和进程有什么区别?linux是如何创建进程和线程的进程和线程的关系Linux如何终止进程和线程?容器是一个单进程,那比如我有一个镜像里面集成了jdk, netstat, ping等,虽然这个容器启动时里面是一个java进程,但是我可以进到容器里面执行各种命令,比如netstat等,那这些命令在容器的运行过程中是在运行的吗?在容器已经有主进程的情况下,又运行ps进程,ps是子进程是吗?ps进程受docker控

2023-04-19 10:16:17 608

原创 12.docker存储

数据卷是用来实现容器数据的持久化和共享的技术,它可以将容器内的数据保存在主机上或者第三方的存储服务上,使得容器删除后数据仍然存在,也可以在不同的容器之间共享数据。docker支持多种数据卷,如本地文件系统的数据卷、绑定挂载的数据卷、插件式的数据卷等,每种数据卷有不同的使用场景和性能影响,需要根据不同的需求来选择合适的数据卷。namespace 是 Linux 内核的一种资源隔离机制,它可以为不同的进程提供不同的「命名空间」,使得进程只能访问其对应的「命名空间」中的资源,而不能访问其他「命名空间」中的资源。

2023-04-18 10:09:53 315

原创 11. 配置了环境变量后,os.Getenv(“ENV“)还是没值,但echo $ENV有值

然后重启IDE, 不重启os.Getenv(“ENV”)是拿不到值的。在 bash_profile文件里加上。这时候 echo $ENV有值了。都没有的话,可能是k8s导致的。,然后用下面的命令使其生效。通过下面的方式进行配置。

2023-04-17 15:02:22 1666

原创 公司能追踪的我的访问记录吗?

2023-04-16 21:50:57 80

原创 10.网桥是什么?网桥和路由器及交换机的区别?以太网和令牌环网,nat,查公网ip等

网桥是什么?有什么作用?一些使用网桥的场景和示例?一个网桥连接不同 局域网的例子网桥是如何实现链路层的协议转换,使不同类型的LAN之间可以互通的既然网桥可以在不同网段里传输数据,这不就和路由器一样了吗网桥和交换机的区别什么是以太网,什么是令牌环网什么是natnat可以把私有地址转成公网ip, 那么收到公网的回复后怎么知道给哪个私有地址呢?举一个nat的例子如何查看nat 映射关系?一个路由器是有一个公网ip对吧,但是有数十台手机连接他,那这10个手机会不会造成网络堵塞如何查看我有几个

2023-04-16 21:48:16 9352

原创 9. docker的使用,docker管理,容器通信,bridge模式详解,pod是什么?和node之间的关系?

如何使用dockerfile创建和构建自定义镜像?dockerfile的语法容器之间为什么要通信一些容器之间通信的示例?如何使用docker-compose管理多个容器的依赖和配置?如何使用docker网络实现容器之间的通信?查看容器 网络模式的命令如何查看容器名docker 里的bridgebridge如何使得容器和主机、其他容器可以通信的?为什么使用brige, 容器就能访问外网为什么使用bridge, 外网不能访问容器?为什么不增加相应的nat 映射关系呢?在一个pod 里面

2023-04-16 13:48:24 914

原创 8.运行时环境, JVM和编译器的区别,JVM是用来干嘛的?

JVM是用来干嘛的?JVM和编译器的区别JVM也是用来把源代码(字节码)编译成目标代码(机器码),这样他和编译器有什么区别的运行时环境的作用运行时环境的工作原理

2023-04-13 09:56:29 277

原创 7.什么是文件系统?功能、类别、使用?什么是unionFS?实现?什么是挂载点?什么是分区?

一、unionFS什么是UnionFS层可以看成是文件系统的子集是什么意思? 为什么不是一个完整的文件系统,缺了哪些东西?联合文件系统是什么UnionFS是怎么做到把多个不同的文件系统挂载到同一个挂载点上的?那么UnionFS有哪些具体的实现方式呢?可以说UnionFS和文件系统是组合关系,而不是包含关系吗二、文件系统什么是文件系统、文件系统的功能、文件系统的使用文件系统有哪几种类别?那么如何选择合适的文件系统类型呢?UnionFS的类别和文件系统的类别有什么区别和联系集群文件系统是怎

2023-04-11 21:28:45 885

原创 6.docker是什么?什么是容器?镜像是什么?层又是什么?

一、docker什么是docker,解决了什么问题?docker和虚拟机之间的区别是什么?二、容器什么是容器容器解决了什么问题?怎么实现的docker和容器之间的关系是什么容器如何实现网络和存储?三、镜像10个关于docker 镜像的问题什么是docker镜像四、层层是什么结构为什么镜像层的ID有的是missing?如何查看层的内容层本质上是个一个文件吗一个层的 元数据和管理信息是存放在 基础层吗关于 docker,容器,镜像,层,用更加形象的语言解释一下k8s是为了解决

2023-04-11 21:20:06 740

原创 如何在mac里安装vmware,在mac里安装虚拟机,如何注册vmware

VMware Fusion 是一款适用于 Mac 的虚拟机软件,可以让您在 Mac 上运行 Windows、Linux 等操作系统。VMware Fusion 有两个版本,一个是 Pro 专业版,一个是 Player 免费版。Player 免费版则对个人非商业用户免费。要下载 Linux OS 版本的映像文件,您可以从一些官方或者第三方的网站上获取。这是因为 选择和填的地址 必须要和 postal要保持一致。只是想在 Mac 上运行一些 Windows 程序或游戏,Player 免费版可以满足需求。

2023-04-09 18:17:26 5591

原创 4. go grpc quickstart & 最佳实践。

ssl/tsl认证方式首先可以通过openssl生成证书和私钥。

2023-04-03 22:12:45 89

原创 5.protobuf、grpc、go-micro之间的关系。

不完全是这样的,grpc是一种规范,但是protobuf不是它的具体实现,而是它的一种数据格式和协议。grpc的具体实现是指不同语言的grpc库,比如grpc-go、grpc-java、grpc-c++等,它们都遵循grpc的规范,提供了创建和调用服务的方法和接口。grpc是一个通用的RPC框架,它提供了跨语言和高效的服务间通信能力,但是它并不是一个完整的微服务框架,它没有提供一些微服务开发所需的核心功能,比如服务发现、负载均衡、消息编码、异步消息、可插拔接口等。

2023-04-03 22:08:15 701

原创 2. defer file.Close()和file.Close()的底层原理

file 这个数据结构和文件句柄的关系是,file 中包含了一个 _file 的成员变量,它就是文件句柄的值,可以用来在内核中找到对应的文件描述。线程的栈是用户空间的一部分,但不是全部。但是,如果没有 file.Close(),那么 file 对应的文件句柄就不会被释放,这样就会造成文件资源的泄露或占用,可能会影响后续的文件操作或其他进程的访问。差不多是这样的,但是有一点需要更正:FILE 数据结构并不包含了文件的内容,而是包含了文件的缓冲区,这是一个临时的存储空间,用来提高文件读写的效率。

2023-03-31 15:29:16 378

原创 1.zip slip问题

ZipSlip攻击是一种利用压缩文件中的目录遍历漏洞来覆盖系统中的任意文件的攻击方式,通常会导致远程命令执行。攻击者通过构造一个压缩文件条目中带有…/的压缩文件,上传后交给应用程序进行解压,由于程序解压时没有对文件名进行合法性的校验,而是直接将文件名拼接在待解压目录后面,导致可以将文件解压到正常解压缩路径之外并覆盖可执行文件、配置文件或其他敏感文件。ZipSlip攻击影响多种编程语言和压缩文件格式,例如tar、jar、war、cpio、apk、rar、7z等。

2023-03-30 21:28:43 261

原创 3. f.getCanonicalFile();这段代码的作用

例如,如果你有一个文件对象f,它的路径是“c:/users/…/program”,那么f.getCanonicalFile()会返回一个新的文件对象,它的路径是“c:/program”。这段代码的作用是返回给定文件对象的规范文件。规范文件是指文件的绝对且唯一的路径,它会去掉路径中的冗余部分,比如“.”或“…/是相对user来说的,user的…/就是他的上一级目录 c:, 所以标准文件路径是 c:/program。c:/users/…/program是 由c:/users/和…/program拼接而来的。

2023-03-30 21:06:31 359

原创 当前目录./和父目录../辨析

例如,如果当前目录是 /home/user/project,那么 ./ 就表示 /home/user/project。如果要指定当前目录中的某个文件或子目录,可以用 ./name 的形式,例如 ./main.py 或 ./docs。例如,如果当前目录是 /home/user/project,那么 …/ 就表示 /home/user。/name 的形式,例如 …/和./是两种常用的相对路径表示法,用于指定文件或目录的位置。/和./的用途有很多,例如在命令行中切换目录、在程序中引用文件、在网页中链接资源等等。

2023-03-30 20:36:47 1818

原创 如何防止bing设置里的国家/地区自动变为中国?

在浏览器中访问下列页面 edge://settings/searchEngines点按添加,然后按照下图内容填入信息引擎地址输入https://www.bing.com/search?q=%s添加完成后,点按引擎后面的菜单按钮(三个点)然后设为默认值,即可或者在Bing网页上手动设置区域为Global或US,并清除后面的附加参数,只保留搜索内容

2023-03-30 16:43:30 22546 7

原创 mysql解决了数据库那些常见的问题?

数据的备份:通过主从复制,可以将数据分布到不同的服务器上,实现数据的冗余和安全1。读写分离:通过主从复制,可以将读请求分散到从库上,减轻主库的压力,提高读性能1。高可用性:通过主从复制和故障切换,可以实现主库出现故障时,自动切换到从库,保证业务的连续性1。数据一致性:通过不同的事务隔离级别,可以解决脏读、不可重复读和幻读等读一致性问题2。数据更新丢失:通过事务和锁机制,可以解决多个并发事务对同一条数据进行更新时,导致更新丢失的问题2。

2023-03-29 12:55:04 107

原创 mysql主要解决了现实中的什么问题?

数据的存储和管理:MySQL是一个关系型数据库管理系统,可以使用SQL语言对数据进行增删改查等操作,支持多种数据类型和索引结构,提高了数据的组织和检索效率。数据的安全和完整性:MySQL支持事务处理,可以保证数据的一致性和完整性,避免数据丢失或损坏。MySQL还支持用户权限管理,可以控制不同用户对不同数据的访问权限,保证数据的安全性。数据的分析和处理:MySQL提供了丰富的函数和操作符,可以对数据进行复杂的分析和处理,例如聚合、排序、分组、连接、子查询等。MySQL还支持存储过程、触发器、视图等高级功

2023-03-29 12:51:59 212

原创 mysql主要解决了现实中的什么问题?

数据的存储和管理:MySQL是一个关系型数据库管理系统,可以使用SQL语言对数据进行增删改查等操作,支持多种数据类型和索引结构,提高了数据的组织和检索效率。数据的安全和完整性:MySQL支持事务处理,可以保证数据的一致性和完整性,避免数据丢失或损坏。MySQL还支持用户权限管理,可以控制不同用户对不同数据的访问权限,保证数据的安全性。数据的分析和处理:MySQL提供了丰富的函数和操作符,可以对数据进行复杂的分析和处理,例如聚合、排序、分组、连接、子查询等。MySQL还支持存储过程、触发器、视图等高级功

2023-03-29 12:51:23 148

原创 mysql是怎么实现分表分库的?

这是一个比较复杂的问题,不同的场景和需求可能有不同的方案。一般来说,分表分库的目的是为了解决单表或单库的数据量过大,导致性能下降、可用性降低、扩展性受限等问题。分表分库的基本思路是将数据按照一定的规则划分到不同的表或库中,从而实现数据的水平拆分或垂直拆分。水平拆分是指按照某个字段(通常是主键或业务键)的值,将一个表或库中的数据均匀地分散到多个表或库中,每个表或库的结构都相同,但数据不重复。垂直拆分是指按照业务模块或字段活跃度,将一个表或库中的数据划分到不同的表或库中,每个表或库的结构都不同,但数据有关联。

2023-03-29 12:50:23 1899

原创 go 里面的time.sleep()会让出cpu吗?

Go在1.14版本引入了抢占式调度的机制,也就是说,当一个协程运行时间超过一定阈值(约10ms)时,它会被强制切换,从而避免长时间霸占CPU。Go里面的runtime.Gosched()也会让出CPU,它的作用是主动地将当前协程放到等待队列中,让出CPU给其他协程,但是当前协程仍然处于可运行状态,可能在下一个时间片被调度执行。Go里面的time.Sleep()会让出CPU,也就是说,当一个协程调用了time.Sleep()方法后,它会被挂起,不再占用CPU资源,而是将CPU让给其他可运行的协程。

2023-03-29 12:45:47 1138

原创 go 协程

Go语言中的协程调度是非抢占式的,也就是说,一个协程只有在遇到阻塞操作(如IO、系统调用、信号处理、GC等)或者主动让出(如runtime.Gosched()、time.Sleep()等)时才会被切换。Go语言中的协程相比于操作系统中的线程有很多优势,例如:协程的创建和销毁成本很低,协程的堆栈空间很小,协程的切换开销很小,协程的数量可以很大等。Go语言中创建协程的方式很简单,只需要在函数或方法调用前加上go关键字,就可以开启一个新的协程,该函数或方法就会在这个协程中运行。

2023-03-29 12:44:31 68

原创 go 协程的实现原理是什么?

当P没有可用的协程时,它会从其他P的本地队列或全局队列中窃取一些协程,并放入自己的本地队列中;Go调度器是Go运行时的重要子系统之一,它负责管理和调度协程的执行,它采用了一个分层的设计,主要包括三个层次的实体:G(goroutine)、P(processor)和M(machine)1234。P(processor)代表一个逻辑处理器,它维护了一个本地协程队列、一个运行中的协程、一个运行时上下文等信息,它是Go调度器的中间调度单位,负责将本地或全局的协程分配给M执行1234。

2023-03-29 12:39:13 94

原创 程序是如何运行又是如何崩溃的?

完成很多用户的并发请求处理。我们写的程序以进程的方式在os上运行,然后再进程中创建很多线程,每个线程处理一个用户请求。被阻塞线程越多,占用的资源也就越多,也不释放。以 java web开发为例,这些多线程并不是我们自己创建的,而是外层的是web容易帮我们创建的。并发的线程越多,阻塞的时间也就越长,从web请求者的角度看,就是响应时间变长,用更多的服务器构成一个集群,以便共同处理用户的并发请求,保证每台服务器的并发负载不会太高。不管你是否有意识,web程序都是被多线程执行的,web开发天然就是多线程开发。

2023-03-16 09:41:44 69

原创 面试:二维码扫码登陆的原理

如果不带会有问题,比如应用分身,设备一样,应用2拿了应用1的token去请求用户信息,那么用户2就可以获得应用1的用户信息。一个问题,请求的时候,除了带上token和设备信息,还会不会带上账号信息。服务端解析token和设备信息对比,通过才放行。后面客户端的请求都带着token和设备信息去。扫码登录也是登录认证方式:本质上还是两个问题。服务端用这些组合生成token返回给客户端。认证:把账号密码设备信息全部发给服务端。所以客户端不会也没必要保存密码。二维码的内容可能是什么?

2023-03-14 21:33:20 183

原创 9、Library not loaded: /Users/lizhen/go/bin/lib/libprotobuf.20.dylib Referenced from: /Users/lizhen/g

Library not loaded: /Users/lizhen/go/bin/lib/libprotobuf.20.dylibReferenced from: /Users/lizhen/go/bin/protobuf/bin/protocReason: tried: ‘/Users/lizhen/go/bin/lib/libprotobuf.20.dylib’ (no such file), ‘/usr/local/lib/libprotobuf.20.dylib’ (no such file),

2022-01-14 10:17:37 457

原创 Incorrect table definition; there can be only one auto column and it must be defined as a key

是因为自己定义了的主键和gorm.Model里的ID主键冲突了。改了就好了。

2022-01-14 10:16:38 148

原创 goland中使用gin渲染html文件时出现 pattern matches no files: 错误

工作目录的问题,在edit configuration里面修改

2022-01-14 10:15:50 626

原创 Error: Unknown command: cask

原因是新版本的 homebrew 已经取消了 cask 这条命令,把原先的安装命令:brew cask install docker改成:brew install --cask docker

2022-01-14 10:15:12 583

原创 panic: runtime error: invalid memory address or nil pointer dereference

错误原因:控制台结果解释:var tmp *int之后:&tmp=0xc00000e028,tmp=nil在go里面:&取变量所在地址 *取指针指向的地址的值。如下图:所以上面 tmp=nil,其实就是指针指向的地址值=nil,即还没有指定地址。而*tmp是给指针指向的地址赋值,相当于给nil赋值。这肯定会报空指针了。...

2022-01-14 10:14:11 1618

原创 import “github.com/gin-gonic/gin“ 爆红

4、代码package main​import "github.com/gin-gonic/gin"​func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) r.Run() // listen and serve on 0.0.0.0:80

2022-01-14 10:12:22 2480

原创 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at:

3、如果仍出现异常xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/Comm解决:在命令行里输入xcode-select --install

2022-01-14 10:11:01 304

原创 安装gin失败 # cd .; git clone -- https://github.com/gin-gonic/gin xcrun: error: invalid active develope

错误:#cd .; git clone – https://github.com/gin-gonic/gin /Users/lizhen/go/src/github.com/gin-gonic/ginxcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrunpac

2022-01-14 10:09:16 711 1

原创 Run after the build is not possible The ‘main‘ file has the non-main package or does not contain

改成这个就好了

2022-01-14 10:06:46 323

空空如也

空空如也

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

TA关注的人

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