Xavier

90
获赞数
14
关注数
28
粉丝数
无锡
IP 属地江苏
2017-06-10 加入
浏览 14.4k

最近的关注重心:

  1. 云原生 (Docker、Kubernetes)
  2. 微服务 (网关 Kong、服务通讯 gRPC、通讯格式 Protocol Buffers、服务注册发现 etcd、熔断/降级/限流、服务网格 Istio)
  3. DevOps (GitLab、GitLab CI、Drone CI)
  4. 数据库 (高性能 MySQL、分库分表中间件、分布式数据库 TiDB、Raft 算法、SQL-NoSQL-NewSQL)
  5. 监控系统 (Prometheus、Grafana)
  6. 计算机网络 TCP/IP、操作系统、数据结构与算法
  7. Go 语言
448 声望|学徒
全站排名超越 96% 用户
php
217
go
90
微服务
64
grpc
62
docker
58
个人动态
  • 发布了文章2022-04-26
    Linux 系统下如何将前台应用作为后台进程运行:nohup 与 & 命令的使用
    COMMAND & 形式前台进程变为后台进程。如果不指定输出重定向(例如:COMMAND >out.log 2>&1 &),输出仍然打印到前台。退出 shell 会话(其父进程),进程会收到 HUP 信号,从而退出。在另一个 shell 会话向进程发送 INT 信号,进程会退出。总结:...
  • 发布了文章2020-09-26
    docker:latest 和 docker:dind 镜像区别
    我们在编写 CI 时通过声明镜像作为 job 的执行环境,每个 job 都在一个纯净的容器中执行。有时,我们需要一个 docker 容器环境来执行 docker build、docker push 等操作。查看官方的 docker 镜像,我们发现存在两个主要的版本:docker:latest、docker:dind 和 docker...
  • 发布了文章2020-09-14
    Prometheus 监控系统的学习总结
    APM ( Application Performance Management ) 是应用性能管理的缩写,代表了服务的行为、可靠性、性能等的监控和管理。当应用发生故障,利用 APM 设施可以迅速检测并定位到产生故障的原因。
  • 发布了文章2020-07-01
    2020 下半年技术精进计划
    微服务 (网关 Kong、服务通讯 gRPC、通讯格式 Protocol Buffers、服务注册发现 etcd、熔断/降级/限流、服务网格 Istio)
  • 回答了问题2020-05-31
    golang 在这段代码中未检测到deadlock
    如 @fefe 所说,死锁只有在所有的 goroutine 都处于等待状态时才会发生,楼主的程序应该还有其他的 goroutine 在运行,如果自己的代码中没有开启其他 goroutine,那就有可能是项目依赖开启的 goroutine。
  • 赞了文章2020-05-22
    mysql 幻读的详解、实例及解决办法
    首先我们要搞明白何谓幻读,目前网上的众多解释幻读的博文个人感觉仔细设想一下就能找出推翻的例子,就像博文把 非阻塞IO 等同为 异步IO,然后好多文章都纷纷借用,其实这俩货是完全不同,非阻塞IO 是 同步IO 中的一种模式,并非 异步IO。错误的观点都被大众认同的 "...
  • 发布了文章2020-05-08
    通过 GitLab Runner 实现 CI/CD 工作流(下)
    上篇文章《通过 GitLab Runner 实现 CI/CD 工作流(上)》我们讲解了 GitLab Runner 的部署和配置优化,这次我们来进行一次实战演练,对一个完整的前后端分离的项目进行讲解。这个项目分为前端和后端两个项目,他们有独自的代码仓库,对于不同仓库的代码提交,会触发...
  • 关注了问题2020-04-30
    docker创建nginx容器,为什么不能共享nginx.conf文件?
  • 发布了文章2020-04-29
    Go 1.14 新特性之 Goroutine 抢占式调度
    我们分析一下程序执行过程,设置 P 数量以后,执行打印 The program starts ...,之后将匿名 goroutine 加入调度队列,执行 Sleep 操作,在 sleep 过程中调度器会将 main goroutine 从唯一 P 中让出,执行匿名 goroutine,而这个 goroutine 是无限循环,并且中间没有...
  • 发布了文章2020-04-26
    通过 GitLab Runner 实现 CI/CD 工作流(上)
    CI/CD 是持续集成、持续部署的意思,研发团队的开发流程以代码版本仓库(VCS)为中心,以不同的 branch 或 tag 进行代码提交,之后 VCS 会触发一系列的流水线作业,包括代码检查、单元测试、编译、打包镜像、发布镜像、触发测试环境或生产环境的部署等,这一切都是自...
  • 回答了问题2020-04-26
    gitlab-runner可以缓存docker镜像构建中需要的依赖吗?
    如果楼主的 executor 是采用的 docker 方式,也即是使用 docker in docker 的方式进行构建镜像,那么可以将 runner 中的 /var/run/docker.sock 挂载到 executor 在执行 job 时所创建的 dind 容器中,这样,在 dind 容器中进行 build image 时,所使用的 docker daemo...
  • 关注了问题2020-04-24
    gitlab-runner可以缓存docker镜像构建中需要的依赖吗?
  • 赞了文章2020-04-09
    富文本编辑器CKeditor的配置和图片上传,亲测可用
    2.下载成功后---->解压得到一个ckeditor文件夹----->把ckeditor文件夹上传到服务器上(或本地的静态服务上)------>本地新建一个demo.htm如下
  • 回答了问题2020-03-31
    go 模板想加个前缀 如user/login.html,但是template.ParseGlob()不支持sub,如何解决呗?
    给模版名加前缀确实可以解决不同文件夹下的相同模版文件的命名冲突问题,对于不同文件夹下的相同文件名,我们只需要在文件内部以嵌套模版的形式标注就行了。
  • 发布了文章2020-01-27
    笔记本最小化安装 CentOS 启动之后无法启动无线网卡的解决方法
    春节假期在家闲来无事,把大学期间使用的华硕笔记本改造成一台家庭服务器。最小化安装 CentOS 7.7 之后出现了无法启动无线网卡的情况,并且奇怪的是在经过一次休眠之后,无线网卡就会恢复启动。
  • 回答了问题2020-01-20
    golang 值返回还是指针返回
    我理解的是,如果返回指针,会将变量分配在堆内存中,caller 栈中只保存指向堆内存的指针;如果返回值,会直接将变量分配在 caller 栈中。
  • 发布了文章2020-01-19
    Linux 用户、用户组和权限
    系统账号主要用于运行特定的 daemon 程序,比如我们添加专门的 Linux 用户 www 和 mysql 来运行 Nginx 和 MySQL,这是为了便于控制程序的权限(即运行此程序的账号的权限),若程序被侵入,防止攻击者可以任意执行系统中的其他行为。系统账号一般会将其登录 shell 设...
  • 回答了问题2020-01-17
    gorm把没找到数据行也定义为Error,RecordNotFound感觉不太理解
    gorm 的查询结果赋值在业务层结构体指针上,如果不通过 error 的方式提示没查询到相应记录,用户只能通过结构体字段值来判断是否找到记录,如果作为结果接受者的结构体不包含主键/唯一字段,业务层判断是不那么准确的。
  • 赞了回答2020-01-17
    gorm把没找到数据行也定义为Error,RecordNotFound感觉不太理解
    这个实现是不合理的:1.Gorm 是一个轻量的SQL wrapping。空记录是 DB 的正常返回,DB 层没产生过任何异常,因此 Gorm 也不应该返回 Error;2.如果业务层认为空记录是 Error,那么在业务层应该根据返回的结果为 nil,产生业务级 Error,这是业务层的责任;3.并且 Gorm ...
  • 赞了文章2020-01-10
    go局部变量的存储空间是堆还是栈?
    f函数里的x变量必须在堆上分配,因为它在函数退出后依然可以通过包一级的global变量找到,虽然它是在函数内部定义的;用Go语言的术语说,这个x局部变量从函数f中逃逸了。相反,当g函数返回时,变量y将是不可达的,也就是说可以马上被回收的。因此,y并没有从函数g中...