2.11~2.15学习笔记

<一>

1. Thread.setDaemon详解
(用户线程和守护线程, 后台进程和前台进程)
https://blog.csdn.net/xyls12345/article/details/26256693

2. docker 安装
https://blog.csdn.net/u010889616/article/details/80170767

3. 输入命令sudo apt-get update 报错
说  “http://ppa.launchpad.net/mutate/ppa/ubuntu bionic Release” 没有 Release 文件。
就去软件和更新中其他软件,把其勾掉
https://blog.csdn.net/we1583004we/article/details/79106855
https://blog.csdn.net/weicao1990/article/details/64121569
https://www.cnblogs.com/daner1257/p/10197801.html

4.卸载旧版本的docker: sudo apt-get remove docker docker-engine docker.io

5. docker学习:  https://zhuanlan.zhihu.com/p/23508637
https://yeasy.gitbooks.io/docker_practice/content/install/mirror.html

6. 使用docker时,总是报错说:
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.38/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
翻译:
docker:尝试连接到位于unix:///var/run/docker.sock的docker守护进程套接字时,获得的权限被拒绝:post http://%2fvar%2frun%2fdocker.sock/v1.38/containers/create:dial unix/var/run/docker.sock:connect:权限被拒绝。
参见“Docker Run--帮助”。

解决: newgrp - docker
https://blog.csdn.net/baidu_36342103/article/details/69357438
https://www.cnblogs.com/informatics/p/8276172.html

7. docker容器的使用
docker命令:
docker: 可以查看docker客户端的所有命令选项
docker command --help更深入的了解指定的docker命令使用方法.
例如我们要查看docker stats指令的具体使用方法: docker stats --help
docker ps: 查看正在运行的容器
docker ps -l: 查看最后一次创建的容器
docker start 容器id/容器名: 重启容器
docker stop 容器id/容器名: 停止容器
docker rm 容器id/容器名: 删除不需要的容器(注意: 删除容器时,容器必须是停止状态)

8. docker镜像的使用
docker images: 查看本地镜像
docker pull 镜像名字: 下载镜像

9. 镜像加速(国内从Docker Hub拉取镜像有时会遇到困难,此时可以配置镜像加速器)
加速地址:  Docker 官方提供的中国加速器:https://registry.docker-cn.com
                七牛云加速器:https://reg-mirror.qiniu.com/
                阿里云镜像:https://71ye069q.mirror.aliyuncs.com
①ubuntu: 在/etc/docker/daemon.json中添加如下内容
{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}
注意: 一定要是json格式,否则docker将不能启动
②如果没有该文件,就新建一个: touch daemon.json
可以用vim写入, 如果因为权限问题, 只能读不能写, 强制保存用:w !sudo tee %即可.
③之后,重启服务:
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
④检查加速器是否生效
命令行执行 docker info,如果从结果中看到了如下内容,说明配置成功。

扫描二维码关注公众号,回复: 5312782 查看本文章

Registry Mirrors:
 https://registry.docker-cn.com/

10. docker三大组件: 镜像, 容器, 仓库

<二>

1. 列表是动态的,其大小可以改变,元祖是不可变的,一旦创建就不能修改.

2. 解释器在对列表推导进行求值的过程中并不知道最终结果容器的大小,也就无法为它预先分配数组的最终大小,因此,内部数组的重新分配方式与for循环中完全相同.但在许多情况下,与普通循环相比,使用列表推导创建列表要更加整洁,更加快速.

3. 上下文管理器: with语句

4. git缓存
git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug,  先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作
先git stash
后git checkout .(清空)
后git checkout 另一个分支
后git stash pop即可

<三>

1. 什么是并发?
并发与并行是不同的.并发不是应用程序实现的问题,而只是程序,算法或问题的属性,并行只是并发问题的可能的方法之一.
并发是指一次处理很多件事, 并行是指一次做多件事, 二者不同,但是有联系.一个关于结构,一个关于执行.并发用于制定方案,用来解决可能(但未必)并行的问题.并发不是并行,并发更好.

2. 什么是线程?
线程是执行线程的缩写.程序员可以将他的工作拆分到线程中,这些线程同时运行并共享同一内存的上下文,这意味着你必须保护数据,避免并发访问这些数据.如果两个线程更新相同的没有任何保护的数据,会出现竞态条件,被称为竞争冒险,可能发生意外的结果,因为每个线程运行的代码对数据的状态做出了错误的假设.

3. 锁机制
这时就会出现锁机制,锁机制用于保护数据.但遇到糟糕的代码设计,两个线程锁定一个资源,并尝试获取另一个线程锁定的资源,这时他们将彼此等待,这就是所谓的死锁.这时可重入锁有助于这种情况,他通过确保线程在尝试两次锁定资源时不会被锁定.

4. 时间分片
在系统内核级别通常支持多线程.当机器具有带有单个核的单个处理器时,系统将使用时间分片机制.

5. python如何处理多线程

6. 何时使用多线程
①构建响应式界面
②委派工作
③构建多用户应用程序

7. 多线程常见用例
对一个问题进行多个并行HTTP查询
①每一项使用一个线程
②使用线程池
③使用双向队列

8. 多进程
实现并行性的另一种方法.彼此独立python进程没有GIL的限制.

9. 异步编程
类似线程但不涉及系统调度.异步编程也可以并发地处理问题,它的上下文是在内部而不是由系统调度程序切换.

10. 协同多任务
每个进程在空闲时自动释放控制以允许同时执行多个程序,所有进程都需要协同才能顺利处理多任务.

猜你喜欢

转载自blog.csdn.net/liugaigai427/article/details/87881009