January 26, 2019
docker中将MySQL运行在容器中失败提示“ InnoDB : Error 22 with aio_write”的解决办法
"今天利用docker容器创建mysql8.0的时候(window系统),指定了本地宿主机器的一个目录为容器mysql的datadir目录,发现创建失败了。\n创建命令:\n$ docker run -d --name mysql81 -v /e/container/mysql/mysql81/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -p 33081:3306 mysql 错误提示:\n$ docker logs mysql81 2019-01-26T03:05:42.567230Z 0 [Warning] [MY-011070] [Server] \u0026#39;Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it\u0026#39; is deprecated and will be removed in a future release. …"
January 15, 2019
docker build . 命令后面的.是什么意思
"今天来公司自己构建了一个Dockerfile,放在一个经常用到的项目目录里,内容如下:\n# This is a comment FROM ubuntu:14.04 MAINTAINER Docker Newbee \u0026lt;newbee@docker.com\u0026gt; RUN apt-get -qq update RUN apt-get -qqy install ruby ruby-dev RUN gem install sinatra 然后执行\nsudo docker build -t \u0026#34;cfanbo/test:v2\u0026#34; . 发现在构建的时候发送给 docker daemon 竟然有4G多,超极大。首先的第一反映出问题了。一个ubuntu镜像也没有这么大呀,况且现在还没有开始从远程pull 镜像呢。\n那到底什么情况了呢?经过一翻搜索,发现在docker build . 的时候,会将当前目录里的内容发送给 docker daemon。只需要加一个 .dockerignore 文件,将其它内容排除掉就可以了,类似于git中的.gitignore文件的作用。\n后面就想通 …"
December 29, 2018
windows下更新docker源(aliyun)
"每个aliyun账号都有一个专属的镜像源\n我这里安装的是 Docker Toolbox 软件,更新docker源有两种情况,一种是你还没有创建过Docker Machine,另一种是你已经创建过了Docker Machine。\n一、未安装过 创建一台安装有Docker环境的Linux虚拟机,指定机器名称为default,同时配置Docker加速器地址。 $ docker-machine create –engine-registry-mirror=https://xxxx.mirror.aliyuncs.com -d virtualbox default\n查看机器的环境配置,并配置到本地。然后通过Docker客户端访问Docker服务。 $ docker-machine env default $ eval “$(docker-machine env default)” $ docker info\n这里 xxxx 是您的专有加速器地址\n二、已安装过\n登录已创建的Docker VM $ docker-machine ssh default $ sudo vi …"
December 24, 2018
MySQL中group_concat函数详解
"**函数语法: **\n**group_concat( [DISTINCT] 要连接的字段 [Order BY ****排序字段 **ASC/DESC] [Separator ‘分隔符’] )\n下面举例说明:\nselect * from goods;\n+——+——+ | id| price| +——+——+ |1 | 10| |1 | 20| |1 | 20| |2 | 20| |3 | 200 | |3 | 500 | +——+——+ 6 rows in set (0.00 sec)\n以id分组,把price字段的值在同一行打印出来,逗号分隔(默认) select id, group_concat(price) from goods group by id;\n+——+——————–+ | id| group_concat(price) | +——+——————–+ |1 | 10,20,20| |2 | 20 | |3 | 200,500| +——+——————–+ 3 rows in set (0."
December 22, 2018
MySQL中order by 排序必知
"在开发过程时,我们经常会遇到 order by 排序操作,那么你知道什么时候MySQL才会进行排序操作,什么时候不需要时间排序操作?,下面我们就从一个很小的例子中了解一下排序场景。\n表结构如下:\nCREATE TABLE t ( id int(11) unsigned NOT NULL AUTO_INCREMENT, city varchar(16) NOT NULL, name varchar(16) NOT NULL, age int(11) NOT NULL, addr varchar(128) DEFAULT NULL, PRIMARY KEY (id), KEY city (city) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 这里只有一个索引city,我们执行一条SQL语句:\nSELECT city, name FROM t WHERE city=\u0026#39;杭州\u0026#39; ORDER BY name LIMIT 1000; 通过Explain命令查看执行情况\n发现Extra字段里有”Using …"
November 29, 2018
mac下安装python web框架django
"前提\n由于mac自带的python2.7(路径 /usr/bin/python) 后来手动又安装了python3.7(/usr/local/bin/python3)\n两个版本共存。为了方便,直接在.zshrc文件里做了别名映射\nalias python=\u0026#34;/usr/local/bin/python3.7\u0026#34; 所以直接使用命令python实际上用的是3.7版本。\n按照官方教程 https://docs.djangoproject.com/zh-hans/2.1/intro/install/ 安装django。发现在使用命令 pip install django 安装后发现检测不到django,很奇怪,后来发现了问题所在。\n➜ ~ python Python 3.7.1 (default, Nov 6 2018, 18:46:03) [Clang 10.0.0 (clang-1000.11.45.5)] on darwin Type \u0026#34;help\u0026#34;, \u0026#34;copyright\u0026#34;, \u0026#34;credits\u0026#34; or …"
November 27, 2018
Python中的装饰器decorator
"Python中装饰器有些类似于java中的面向切片编程AOP的概念,就是对一些请求方法进行一些拦截,然后加入一些其实的逻辑。可以参与 https://blog.csdn.net/caimouse/article/details/78078189 这篇举的例子,很好理解。\nhttp://wiki.jikexueyuan.com/project/the-python-study-notes-second-edition/decorator.html"
October 20, 2018
Golang中struct结构体的的值方法和指针方法
"推荐:Go的方法集详解(360云计算)\n平时我们在写struct的时候,经常会用到一些方法,有些方法是我们熟悉的普通方法,在golang中我们称之为值方法,而另一种则是指针方法。\ntype Person struct { Firstname string Lastname string Age uint8 } // 值方法 func (p Person) show() { fmt.Println(p.Firstname) } // 指针方法 func (p *Person) show2() { fmt.Println(p.Firstname) } 可以看到所谓的值方法与指针方法在编写的时候,只是有无*****号的区别,这个*就是指针的意思。\n那么用法又有何不同呢?\n// 值方法 func (p Person) setFirstName(name string) { p.Firstname = name } // 指针方法 func (p *Person) setFirstName2(name string) { p.Firstname = name } func main() { p …"
October 19, 2018
Golang中的unsafe.Sizeof()简述
"测试环境: 系统 win7 64位 go version: go1.10 windows/amd64\n我们先看一下代码的输出\npackage main import \u0026#34;unsafe\u0026#34; func main() { // string str1 := \u0026#34;abc\u0026#34; println(\u0026#34;string1:\u0026#34;, unsafe.Sizeof(str1)) // 16 str2 := \u0026#34;abcdef\u0026#34; println(\u0026#34;string2:\u0026#34;, unsafe.Sizeof(str2)) // 16 // 数组 arr1 := [...]int{1, 2, 3, 4} println(\u0026#34;array1:\u0026#34;, unsafe.Sizeof(arr1)) // 32 = 8 * 4 arr2 := [...]int{1, 2, 3, 4, 5} println(\u0026#34;array2:\u0026#34;, unsafe.Sizeof(arr2)) // 40 = 8 * 5 // slice 好多人分不清切片和数组的写法区别,其实 …"