分类 其他 下的文章

第一次PHP面试小记

上来先问了 第一次 浏览器 访问 输出结果 和 第二次 浏览器访问 输出结果

setcookie('a', '123');
echo $_COOKIE['a'];

第一次浏览器 发送了请求但是 在请求的HTTP头内 Cookie 是空所以 输出的是空

第二次浏览器 已经在第一次的上面收到了服务端要设置 Cookie 的消息 所以浏览器里已经有 Cookie 了 这下浏览器发送HTTP请求头里已经包含 Cookie 了 所以可以输出了123


然后问了 Session 和 Cookie 的区别这个也是基础,但是我回答到最后补充了一句 "也可以学习CI保存'Session'的方法 把 Session 当 Cookie 用" 面试官吐槽说这样不安全 讨论了较长的一段时间。


接着问 Session 保存在哪 存储方式 以及和那个存储方式比较好

答完 Session 问题后面试官画了一个很简单的表类似:
test table
a b c
1 2 3
4 5 6
7 8 9

select * from `test` where a = 1 and b = 2
select * from `test` where b = 2 and a = 1

问这两个语句有性能上的区别吗 想了下应该没有性能上的区别。

然后就是问数据库咋搞性能比较高啊 回答 能分表尽量分 选择合适的Mysql数据库引擎 添加索引 有条件做主写从读库。

唯一说错了 客户端IP 不是放在HTTP头里的

搞定技术后 人事部的来谈薪资 我写的3000~4000 人事部说就3500吧 接着就完事了。就是刚出公司10分钟 人事打电话过来说年龄太小了 可以等到11月再去。

Docker 命令笔记

搜索镜像
docker search image

下载镜像
docker pull image

交互式终端 -t标示在心容器内指定一个伪终端或终端,-i标示允许我们对容器内的STDIN进行交互。
docker run -t -i ubuntu:14.04 /bin/bash

守护进程 -d标识告诉docker运行容器在后台模式运行
docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

docker logs命令看起来想运行在容器内并且返回标准输出
docker logs insane_babbage

查看所有容器
docker ps -a

从该镜像上创建一个容器
docker run --rm -ti ubuntu /bin/bash

容器内执行程序
docker exec -ti name /bin/bash

命名容器
docker run -d -P --name web training/webapp python app.py

基于基础镜像创建新镜像
docker commit -m="Added json gem" -a="Kate Smith" 0b2616b0e5a8 minecraft/java:170
-m标示是允许我们指定提交的信息,就像你提交一个版本控制。-a标示允许对我们的更新指定一个用户。

使用-p标识来指定容器端口绑定到主机端口
docker run -d -p 5000:5000 training/webapp python app.py

添加一个数据卷 -v 标识来给容器内添加一个数据卷
docker run -d -P --name web -v /webapp training/webapp python app.py

-v 还可以挂载本地主机目录到容器中 挂载本地目录/src/webapp到容器的/ot/webapp目录
docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
注意:如果挂载好后在容器内无法访问挂载的目录,可能是SELinux没有关闭导致的原因。

查看容器中运行着哪些进程
docker top nginx_dist

查看容器IP和主机等信息
docker inspect nginx_dist |grep 172.17

连接到容器上,--sig-proxy可以保证 Ctrl+D、Ctrl+C 不会退出
docker attach --sig-proxy=false name
当然也可以使用 Ctrl + Q + P 多按几次也能达到同样的效果

修改容器配置
docker stop test01
docker commit test01 test02
docker run -p 8080:8080 -td test02

####自动构建####
创建构建文件
vi Dockerfile

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
FROM centos:latest
MAINTAINER Srarservice@chinasrar.com

WORKDIR /opt/

RUN yum install -y wget java-1.7.0-openjdk
RUN wget http://cdn.x-speed.cc/docker.minecraft/craftbukkit-172.jar

EXPOSE 25565

ENTRYPOINT /usr/bin/java -Xms256M -Xmx1G -jar /opt/craftbukkit-172.jar
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

开始构建
sudo docker build --tag minecraft:1.7.2 .

保存镜像到一个tar包; -o, --output="" Write to an file
docker save image_name -o file_path
加载一个tar包格式的镜像; -i, --input="" Read from a tar archive file
docker load -i file_path

机器a
docker save image_name > /home/save.tar
使用scp将save.tar拷到机器b上,然后:
docker load < /home/save.tar

开启 Docker Remote API
编辑 /etc/sysconfig/docker other_args="" 修改为 other_args="-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock"

安装Ping
apt-get install -yqq inetutils-ping

提示错误 无法启动容器 Error response from daemon: Cannot start container
修改Docker配置文件 /etc/sysconfig/docker other-args 改为 other_args="--exec-driver=lxc --selinux-enabled"

容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]
容器操作运维 — docker [ps|inspect|top|attach|events|logs|wait|export|port]
容器rootfs命令 — docker [commit|cp|diff]
镜像仓库 — docker [login|pull|push|search]
本地镜像管理 — docker [images|rmi|tag|build|history|save|import]
其他命令 — docker [info|version]