本篇观点不一定正确,目前仅供个人使用
数组和切片区别
数组是固定的,但切片有扩展性append
切片和map
其实map可以当做一个类型,可以存储字符串
map嵌套
1 | a := map[string]map[string]string{} |
struct 继承和重组
结构体,对象。可以通过指针关联方法
1 | https://blog.csdn.net/z226688/article/details/108963110 |
数组和切片区别
数组是固定的,但切片有扩展性append
切片和map
其实map可以当做一个类型,可以存储字符串
map嵌套
1 | a := map[string]map[string]string{} |
struct 继承和重组
结构体,对象。可以通过指针关联方法
1 | https://blog.csdn.net/z226688/article/details/108963110 |
作为最热门的php的扩展工具,composer在各个php框架基本都会用到,本文介绍一下实用常规操作。
Composer是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。
先创建一个空目录,再在空目录里执行 Composer 自带的 init 命令,自动生成 Composer 的配置文件(composer.json)。
1 | $ mkdir composer_test |
请注意: Minimum Stability(官方说明) 要输入 dev,表明我们的扩展包最小稳定版的开发版。否则 Composer 的默认 Minimum Stability 是 stable,扩展包需要打上版本号才能被 Composer 认为是稳定版(stable),前期开发调试时简单点处理,设置为 dev,这样引入开发中的 Composer 扩展包时不需要去管什么版本号,等开发调试过了再说。
1 | Welcome to the Composer config generator |
环境要求通过 composer.json 里的 require 字段来限制。
自动加载规范通过 autoload 字段来定义。
现在假定需要 PHP 的版本大于等于 7.0.0,并且当前包的 src 目录下的文件以 Waq\ComposerTest 命令空间来加载,在 composer.json 中增加以下代码:
1 | "require": { |
如果需要引入其他的非 PSR-4 规范的源码文件,可能会需要用到 autoload 下的 file(官方说明) 字段,每一次请求 PHP 时都是包含这些文件。
例如要包含钉钉 SDK 的代码,可以在 composer.json 中增加以下代码:
1 | "autoload": { |
src 目录下新建 Calc.php 文件,内容如下:
1 | <?php |
项目要引入本地目录的扩展包,先要在 composer.json 文件中加入以下内容:
1 | "repositories": [ |
然后在项目目录下执行 Composer 命令:
1 | composer require waq/composer_test:@dev |
或者
1 | composer require waq/composer_test:dev-master |
注意: 上面命令中的 waq/composer_test 就是 Composer 扩展包里 composer.json 的 name 字段值。@dev 或 dev-master 表示引入的扩展包是主分支的最新版,当还未将扩展包提交到 Github 仓库或者发布到 Packagist 上时,一般这样引入扩展包。
新建测试 PHP 文件:
1 | <?php |
composer install 安装依赖包,当你下载一个项目后,这或许是你改做的第一件事。
composer require/update 更新依赖包,我更喜欢用composer require。
composer remove 卸载依赖包
update则无法在命令行传入新的版本号,需要先手动在composer.json中指定新的版本号,然后执行更新命令。但require可以直接在命令行传入版本号,例如:
1 | composer require hashids/hashids:2.0.0 |
升级
1 | composer require hashids/hashids:3.0.0 |
降级
1 | composer require hashids/hashids:2.0.4 |
版本号范围大于/大于等于:>1.2.3 >=1.2.3
小于/小于等于:<1.2.3 <=1.2.3
确切的版本号:1.2.3
~1.2.3: 1.2.3 <= version < 1.3
^1.2.3: 1.2.3 <= version < 2.0
卡着不动
因为某些特殊情况,老外的源特别慢,我们就得把源改为国内的。阿里某个云。
1 | composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ |
添加-vvv选项
这样就知道compose这个家伙到底啥情况了。
1 | composer install -vvv |
提示不符合composer.json需要的版本,例如>=php7,但实际<php7也能正常运行,所以忽略
这样就可以正常运行了
1 | composer install --ignore-platform-reqs |
Warning from https://mirrors.aliyun.com/composer: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2.
解决方法:
更新一下 composer 工具版本:
1 | composer self-update |
出现错误:
1 | The "https://getcomposer.org/versions" file could not be downloaded: SSL operation failed with code 1. |
具体解决流程:
1 | 问题: |
获取php.ini
1 | php -i | grep php.ini 或 php --ini |
获取cert地址
1 | php -r "print_r(openssl_get_cert_locations());" |
composer指定php,composer 更新指定的依赖包
如果后面有空的话,也可能继续写一篇创建自己的composer包。
Redis Desktop Manager(被推荐,但未使用过)
DBeaver(不仅支持redis,还支持多种数据库)
mac安装Redis可视化工具-Redis Desktop Manager
DBeaver Enterprise 21.0 企业版激活方法

Mac查询文件
mdfind -name 文件名字
Mac查询文本
mdfind “John”
mdfind -onlyin ~/Library txt
dbeaver.ini文件地址
/Applications/DBeaverEE.app/Contents/Eclipse/dbeaver.ini
dbeaver.ini内容
1 | -startup |
使用方法:
支持MAC,不确定是否支持Win
下载地址:https://www.mongodb.com/try/download/compass
早期根本没有所谓的包管理,项目依赖一塌糊涂。那么这样会出现什么问题?
在没有包管理方案之前,项目依赖于 GOPATH,带来一些不便之处
1 | go命令依赖一个重要的环境变量:$GOPATH |
项目的依赖只能够手动 go get 下载到 GOPATH 中,如果换一台服务器开发项目,光是包依赖都得弄半天。
如果是本地想搭建对应的项目,还无法知道之前包的版本,只能通过当初项目创建时间进行git tag切换对应版本。
1 | git tag #展示全部tag |
一些解决方案
godep,glide,go verdor 这些都是曾经出现过的包管理解决方案。
将所有依赖包都上传到一个公共的线上文件夹(类似vendor),然后从上面直接拷贝。
Go.mod是 Golang1.11版本 新引入的官方包管理工具用于解决之前没有地方记录依赖包具体版本的问题。
前导
Go.mod其实就是一个Modules官方定义为:
Modules是相关Go包的集合,是源代码交换和版本控制的单元。go命令直接支持使用Modules,包括记录和解析对其他模块的依赖性。Modules替换旧的基于GOPATH的方法,来指定使用哪些源文件。
Modules和传统的GOPATH不同,不需要包含例如src,bin这样的子目录,一个源代码目录甚至是空目录都可以作为Modules,只要其中包含有go.mod文件。
go mod的使用:
一个很关键的地方在于环境变量GO111MODULE的设置,GO111MODULE有三个值:off, on和auto(默认值)
1 | 1.GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或GOPATH模式来查找。 |
如何在项目中使用?
1 | #cd xxx //进入项目 |
注意:除了go.mod之外,go命令还维护一个名为go.sum的文件,其中包含特定模块版本内容的预期加密哈希。go命令使用go.sum文件确保这些模块的未来下载检索与第一次下载相同的位,以确保项目所依赖的模块不会出现意外更改,无论是出于恶意、意外还是其他原因。 go.mod和go.sum都应检入版本控制 。go.sum 不需要手工维护,所以可以不用太关注。
1 | 项目子目录里是不需要init的,所有的子目录里的依赖都会组织在根目录的go.mod文件里 |
当依赖第三方包时:
1 | - 最初是go get 拉取,而使用go mod,直接go run 或go build 即可! |
依赖包的版本控制:
GOPATH/pkg/mod里可以保存相同包的不同版本。
go.mod中可指定下载包的版本:
1 | 如果在go.mod中没有指定,go命令会自动下载最新版本。 |
1 | module app #项目名 |
1.存在docker
2.服务器可以联网(外网)
3.服务器内存至少4G(内存不够会出现502错误)
内存不足502错误如下图所示:

安装环境:Centos7
1.查找GitLab镜像
1 | docker search gitlab |
2.拉取gitlab docker镜像
1 | docker pull gitlab/gitlab-ce:latest |
3.运行GitLab并运行容器
1 | docker run \ |
成功会返回的容器ID哦!!
命令解释:
1 | -i 以交互模式运行容器,通常与 -t 同时使用命令解释: |
重点:接下来的配置请在容器内进行修改,不要在挂载到宿主机的文件上进行修改。否则可能出现配置更新不到容器内,或者是不能即时更新到容器内,导致gitlab启动成功,但是无法访问
4.进入容器内
1 | docker exec -it gitlab-test /bin/bash |
5.修改gitlab.rb
1 | # 打开文件 |
6.修改gitlab.yml
1 | # 打开文件 |

1 | # 配置解释: |

1 | # 保存并退出:wq |
7.让修改后的配置生效
1 | gitlab-ctl reconfigure |
8.重启gitlab
1 | gitlab-ctl restart |
9.退出容器
1 | exit |
10.在游览器输入如下地址,访问gitlab(eaxternal_url配置的就是这个)
1 | http:192.168.201.5:9980 |
如果访问不成功的话:
(1) 进入容器查看gitlab.rb和gitlab.yml文件是否配置成功
(2) 查看防火墙是否开放9980、9922端口
11.依然访问不成功!!
确认防火墙firewall 和 iptables 都没有阻止端口。gitlab也运行成功,但是无法访问!!
查看端口,确实有监听9980和9922端口
1 | netstat -lntp |
但是telnet还是被拒绝
1 | telnet 192.168.201.5 9980 |
查看了了日志,
1 | $ docker logs -f -t --tail=100 gitlab-test | grep "failed" |
于是网上搜了方法,docker 镜像启动成功但是无法访问
1 | 解决办法: |
但因为原本就是”net.ipv4.ip_forward = 1”,所以也不是这个原因。
还提升了虚拟机内存,但同样无法访问。
最后,发现了gitlab对8080端口是有需求的,所以kill -9相关进程后,发现可以访问了(还是要等待一段时间)。
12.第一次访问默认是root账户,会需要修改密码(密码至少8位数,出现如下界面就基本上部署成功了)

13.输入新密码后进行登录
1 | root/gitlab123456 |

14.登录后界面如下图,创建一个新项目

15.输入信息,创建项目

16.检查这里两处的ip的端口是否是你配置的

如果这里两处的端口和ip和配置的不一样,再次进入容器检查gitlab.yml文件
如下图显示:


若不一样,将其修改为你的配置,然后:wq,再进行下面的操作
1 | gitlab-ctl reconfigure |
17.安装到此结束
1.使用root用户登录gitlab
2.点击【Admin Area】

3.点击【Settings】

4.点击Sign-in restrictions这一栏的【Expand】

5.取消勾选

6.往下滑动,找到保存按钮,点击保存

7.进入登录界面,发现注册的窗口已经消失了

虽然,这几篇文章没有真正帮助到点,但也给了启迪。让我关掉已占用的8080端口,在此附上链接。
centos7 gitlab14搭建完成后,无法访问的问题处理(“error“:“badgateway: failed to receive response: dial unix /var/opt) 这篇有帮助,但未实践成功。因为直接kill了8080端口占用进程。
比较实用的几篇
此处在Centos7进行安装,可以使用以下命令查看CentOS版本
1 | lsb_release -a |
在 CentOS 7安装docker要求系统为64位、系统内核版本为 3.10 以上,可以使用以下命令查看
1 | uname -r |
查看是否已安装docker列表
1 | yum list installed | grep docker |
安装docker
1 | yum -y install docker |
Linux系统下查找安装包所在目录的方法,rpm查找安装包路径
1 | Linux rpm 命令用于管理套件 |
1 | # docker version 或者# docker info |
sudo,可以把用户加入 Docker 用户组1 | $ sudo usermod -aG docker $USER |
1 | # systemctl 命令的用法 |
Docker 把应用程序及其依赖,打包在 image 文件里面。
只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。
image 是二进制文件。实际开发中,一个 image 文件往往通过继承另一个 image 文件,加上一些个性化设置而生成。举例来说,你可以在 Ubuntu 的 image 基础上,往里面加入 Apache 服务器,形成你的 image。
1 | # 列出本机的所有 image 文件。 |
image 文件是通用的,一台机器的 image 文件拷贝到另一台机器,照样可以使用。一般来说,为了节省时间,我们应该尽量使用别人制作好的 image 文件,而不是自己制作。即使要定制,也应该基于别人的 image 文件进行加工,而不是从零开始制作。
为了方便共享,image 文件制作完成后,可以上传到网上的仓库。Docker 的官方仓库 Docker Hub 是最重要、最常用的 image 仓库。此外,出售自己制作的 image 文件也是可以的。
将 image 文件从仓库抓取到本地
1 | $ docker image pull library/hello-world |
上面代码中,docker image pull是抓取 image 文件的命令。library/hello-world是 image 文件在仓库里面的位置,其中library是 image 文件所在的组,hello-world是 image 文件的名字。
由于 Docker 官方提供 的 image 文件,都放在library组里面,所以它的是默认组,可以省略。
1 | $ docker image pull hello-world |
查看 image 文件
1 | $ docker image ls |
运行这个 image 文件生成容器实例并运行
1 | $ docker container run hello-world |
注意,docker container run命令具有自动抓取 image 文件的功能。如果发现本地没有指定的 image 文件,就会从仓库自动抓取。因此,前面的docker image pull命令并不是必需的步骤。
手动终止容器运行
1 | $ docker container kill [containID] |
image 文件生成的容器实例,本身也是一个文件,称为容器文件。
1 | # 列出本机正在运行的容器 |
终止运行的容器文件,依然会占据硬盘空间,可以使用docker container rm命令删除。
1 | $ docker container rm [containerID] |
学会使用 image 文件以后,接下来的问题就是,如何可以生成 image 文件?如果你要推广自己的软件,势必要自己制作 image 文件。
这就需要用到 Dockerfile 文件。它是一个文本文件,用来配置 image。Docker 根据 该文件生成二进制的 image 文件。
下面通过一个实例,演示如何编写 Dockerfile 文件。
这部分内容就不做抄录了,附上参考和转载文章地址 Docker 入门教程 和 Docker 微服务教程,
本教程需要从仓库下载 image 文件,但是国内访问 Docker 的官方仓库很慢,还经常断线,所以要把仓库网址改成国内的镜像站。这里推荐使用官方镜像 registry.docker-cn.com 。下面是我的 Debian 系统的默认仓库修改方法,其他系统的修改方法参考官方文档。
打开/etc/default/docker文件(需要sudo权限),在文件的底部加上一行。
DOCKER_OPTS=”–registry-mirror=https://registry.docker-cn.com"
然后,重启 Docker 服务。
1 | $ sudo service docker restart |
现在就会自动从镜像仓库下载 image 文件了。
1 | https://hub.fastgit.org/ |
原文链接:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: false
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true