跳到主要内容

50 篇博文 含有标签「编程」

查看所有标签

安装

下载地址

  • 我的 windows 上装了 wsl2
  • 默认点下一步就好了

image.png

安装完成后顺手设置 P...

image.png

ps. wsl telnet 127.0.0.1 9999 失败 我改成了本机 ip

非常的智能。


试玩

在 docker 网站上下个 python 镜像 玩玩

docker pull python:3.8

image.png

docker run --name docker-tutorial python:3.8 python -c "print('Hello, World!')"    
docker rm docker-tutorial
docker run --name docker-tutorial python:3.8 python -c "import os;print(os.listdir('.'))" -v $PWD:/usr/src/myapp -w /usr/src/myapp
docker rm docker-tutorial

-v $PWD/myapp:/usr/src/myapp: 将主机中当前目录下的 myapp 挂载到容器的 /usr/src/myapp。 -w /usr/src/myapp: 指定容器的 /usr/src/myapp 目录为工作目录。


安装 python 环境并保存

docker run --name  -it jupyter-dev python:3.8 bash     
pip config set global.index-url https://pypi.douban.com/simple
pip install jupyter
exit
docker ps -a
docker commit jupyter-dev jupyter-dev:version1
docker images
docker run -d -p 8888:8888 --restart=always --name jupyter jupyter-dev:version1 jupyter-notebook --ip='*' --port=8888 --allow-root --no-browser --NotebookApp.token=''

image.png

image.png

关闭

docker stop jupyter    
docker rm jupyter


pycharm

配置 python 解释器

image.png

不过已经可以愉快的 debug 了

image.png


kubectl

先装个命令补全

echo "source <(kubectl completion zsh)" >> ~/.zshrc    
source ~/.zshrc

找到你想连接的 kubectl 集群的配置文件 比如我的在服务器上

rsync -avz root@192.168.20.65:/root/.kube/config /root/.kube/config    
rsync -avz root@192.168.20.65:/root/.minikube/ca.crt /root/.minikube/ca.crt
rsync -avz root@192.168.20.65:/root/.minikube/profiles/minikube/client.crt /root/.minikube/profiles/minikube/client.crt
rsync -avz root@192.168.20.65:/root/.minikube/profiles/minikube/client.key /root/.minikube/profiles/minikube/client.key
  • 然后kubectl get pods 你就会发现都在你本机上看得到了

  • 然后就可以获取一个项目的配置文件,然后启动。

    • kubectl get pods contest-jiantou-64b9cd5597-kvbjp -o yaml

编程阅读需 2 分钟

  • 有多好用。.. 自行百度

image.png

SH 安装脚本

命令不是打错了 相同命令确实需要运行两遍

export http_proxy="http://192.168.100.228:9999"
export https_proxy="http://192.168.100.228:9999"

sudo sh -c "$(curl -fsSL https://github.com/AngusWG/river-zsh-config/raw/master/install.sh)"
sh -c "$(curl -fsSL https://github.com/AngusWG/river-zsh-config/raw/master/install.sh)"
source ~/.zshrc

自动安装

  • zsh
  • oh my zsh
  • 彩色命令
  • 历史提示

sh 脚本所属 github 项目

image.png


  • bug 修复
  • 执行第三步的时候会报错
  • 需要去修改下文件

image.png

image.png

  • 注释红色的这一行
编程阅读需 1 分钟

项目的部署

一。安装 gosuv Git 地址

  • 这里 下载对应系统的二进制文件

  • 测试启动:gosuv start-server -f

  • 将 gosuv 的二进制启动文件软链接到系统 bin 目录 ln -s gosuv /usr/local/bin

二。将 gosuv 安装为 linux 的系统服务

1. 编写systemd的单元配置文件 (启动命令 ExecStart 和启动路径 WorkingDirectory 酌情修改)

  • vim /lib/systemd/system/gosuv.service
[Unit]    
Description=gosuv
After=syslog.target
After=network.target

[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
Type=simple # 如果要启动的命令是一个 daemon 进程,这里的值设置为 forking
User=root
Group=root
# 可以将 gosuv 链接到 bin 目录或者直接移动到 bin 目录
WorkingDirectory=/usr/local/bin
# -f 参数指定 gosuv 前台启动,默认后台启动(如果没有-f 参数,则 Type 需要改为 forking)
ExecStart=/usr/local/bin/gosuv start-server -f
Restart=always

# Some distributions may not support these hardening directives. If you cannot start the service due
# to an unknown option, comment out the ones not supported by your version of systemd.
ProtectSystem=full
PrivateDevices=yes
PrivateTmp=yes
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

2. 将此文件放到 /lib/systemd/system文件夹下,此时就能够让服务开机启动和自动重启了

  • 开机启动:systemctl enable gosuv
  • 启动服务:systemctl start gosuv
  • 浏览器中访问:localhost:11313
编程阅读需 2 分钟

  • 文本来自于 QPython 编程群
  • 感谢**【架构分析】坚决不讨论专业问题的 IE6** 大佬

image.png

自测题

  1. 随便拿来一个软件/功能,绝大多数情况下能否正确推测出背后的实现原理。
  2. 能不能在 5 天/7 天/10 天/30 天内
    • 用一个新的框架(所有时间-2)开发出一个最小模型
    • 在之前没接触过/没有知识储备的情况下做出 app/网站/小程序/3d 游戏的最小模型。....
  3. 能不能看出计算机每层之间东西的关联以及设计思想,比如路由器和消息队列。
  4. 是否熟悉常用的语言的虚拟机 / 编译器,和框架从内存对象布局到部分代码实现原理再到 GC,从框架实现原理到设计思想,解决问题。
  5. 对计算机网络,计算机组成,编译原理,数据结构有一定了解,能够进行多学科联动的问题分析和性能分析以及问题查找。(重点是联动分析)
  6. 是否具备严谨的分析问题的能力,比如单一变量原则,假说演绎推理。
  7. 是否能够知道什么该优化,什么不该优化,用最小代价换最大收益。

什么叫编程

  • 编程其实只是在做两件事:解决问题以及,更好的解决问题。
  • 不管是写代码,抄开源项目,造轮子,拖拽开发出 app,都是为了解决问题。
  • 只要能解决问题,没有对错。
  • 代码说到底就是工具的一种。能解决问题就是及格的解决方案。
  • 如果你用代码解决不出来你要解决的问题,那你就是不如用拖拽开发的。
  • 更好的解决问题是一种进阶能力,用更好的算法能不能提高识别准确率,用更新的框架是不是能换来更优秀的- 响应速度。我能不能通过优化提高我解决问题的速度和质量。

什么叫编程能力及格

1。能把实际问题抽象,然后用计算机来描述和解决问题。 2。可以称自己为 xxx 语言程序员,但是不恐惧写任何语言任何项目的代码。从来不会觉得:这个我不会所以做不了。 3。能够进行简单的性能分析,分析,不是瞎想。我看过太多通过瞎想判断性能的自以为是的人了。这需要对自己的代码,语言实现有一定了解。 4。有基础的 debug 和分析问题的能力。不会虾球测试代码。


什么叫编程能力优秀

  • 在写代码的时候能不借助调试器(对就是说我(逃)),通过报错以及出现的状况判断是哪个地方出问题了(也算黑盒测试的一种?)
  • 能够进行性能分析,找出性能瓶颈,这里涉及的知识点就更多了,计算机基础知识,整体化思想(从上到下寻找性能瓶颈。开始于代码(业务逻辑代码),终止于代码(CPU 级别),对业务的熟悉。

什么叫会编程呢

  • (至少同龄人里我没见过任何人跟我思考一样的问题。)
  • 能够做出决定:
    • 到底该不该采取这个优化
    • 什么时候重构代码
    • 到底该不该升级框架
  • 这个要考虑的方面太多了,开发成本,时间成本,风险,协调性。
  • 有一些优化是没意义的/次要矛盾。而大家都喜欢抓着看得到的东西优化。

  • 如果你一句都看不懂,慢慢学 python 吧。
  • 如果你就看得懂几句,说明你根本没入门编程。
  • 如果你能理解大部分内容,说明学习方向还算正确,可以继续按照这样的方向学下去。

  • 文本来自于 QPython 编程群
  • 感谢 架构分析】坚决不讨论专业问题的 IE6 大佬

大佬名称截图

编程阅读需 4 分钟

在hosts文件中加入如下几句即可

  • vim /etc/hosts linux
  • vim C:\Windows\System32\drivers\etc\hosts windows
192.30.252.123 www.github.com    
103.245.222.133 assets-cdn.github.com
185.31.18.133 avatars0.githubusercontent.com
185.31.19.133 avatars1.githubusercontent.com

现在这个IP似乎也不管用了,所以如果使用了shadowsocks的可以用git使用代理

git config --global http.proxy socks5://127.0.0.1:9999    
git config --global https.proxy socks5://127.0.0.1:9999
git config --global http.https://github.com.proxy socks5://127.0.0.1:1080

用完记得关上,不然内网的git也会很慢

git config --global --unset http.proxy    
git config --global --unset https.proxy
编程阅读需 1 分钟

pipreqs

  • 安装
pip install pipreqs     
  • 使用
pipreqs -h    
pipreqs [options] <path>
  • 示例
pipreqs . --encoding utf8  --pypi-server https://pypi.douban.com/simple/    
  • 提示
  • 不加 --encoding utf8 会报 UnicodeDecodeError
  • 不翻墙会报 requests.exceptions.ConnectionError:
  • 作者使用过程中多加了一个 django_recaptcha
  • 搜索豆瓣源 --pypi-server https://pypi.douban.com/simple/

pipdeptree

  • 安装
pip install pipdeptree    
  • 使用
pipdeptree     
  • 提示
  • 并不能显示某个项目下的依赖

pip-compile

  • 安装
pip install pip-tools    
  • 卸载所有包
pip-sync requirements.txt requirements.txt    
  • emmm 把我包都卸載了 玩个鬼
  • 想玩的自己看 文档

推荐 pipreqs

image.png

编程阅读需 1 分钟

参考

安装 usbmount

  • 查看 u 盘是否插入
    • sudo fdisk -l
  • 安装 usbmount
    • sudo apt-get install usbmount
    • sudo apt-get install ntfs-3g

支持特定格式

  • 修改 不是添加

vim /etc/usbmount/usbmount.conf

FILESYSTEMS="vfat ntfs fuseblk ext2 ext3 ext4 hfsplus"    
FS_MOUNTOPTIONS="-fstype=ntfs-3g,nls=utf8,umask=007,gid=46
-fstype=fuseblk,nls=utf8,umask=007,gid=46 -fstype=vfat,gid=1000,uid=1000,umask=007"
FS_MOUNTOPATIONS="-fstype=ntfs,iocharset=utf8,gid=floppy,dmask=0007,fmask=0117"
  • 支持中文
    • FS_MOUNTOPATIONS 中 iocharset=utf8

卸载 usb

  • cd /media
  • tree
  • sudo umount usb1
编程阅读需 1 分钟

  • 穷举编程
  • ccv编程
  • 百度编程
  • 谷歌编程
  • gayhub编程
  • guess编程
  • no think
  • 群友编程
    • 小黄鸭调试法(Rubber Duck Debugging)
    • 询问式撸代码

只需要 抛出 一个需求 代码大神来解决

编程阅读需 1 分钟

链接 来源:牛客网

  • 高级调度(作业调度/长程调度)(频率低):将外存作业调入内存
  • 低级调度(进程调度/短程调度)(频率高):决定就就绪队列中哪个进程获得处理机并执行

调度算法

  • 什么是调度?本质上就是一种资源分配
  • 什么是饥饿?某写进程一直在等待,得不到处理
  • 调度算法的分类
    • 抢占式(当前进程可以被抢):可以暂停某个正在执行的进程,将处理及重新分配给其他进程
    • 非抢占式(当前进程不能被抢走):一旦处理及分配给了某个进程,他就一直运行下去,直到结束
  • 具体调度算法:
    • 1.先来先服务(FCFS):按照到达顺序,非抢占式,不会饥饿
    • 2.短作业/进程优先(SJF):抢占/非抢占,会饥饿
    • 3.高响应比优先(HRRN):综合考虑等待时间和要求服务事件计算一个优先权,非抢占,不会饥饿
    • 4.时间片轮转(RR):轮流为每个进程服务,抢占式,不会饥饿
    • 5.优先级:根据优先级,抢占/非抢占,会饥饿
    • 6.多级反馈队列:
      • 设置多个就绪队列,每个队列的进程按照先来先服务排队,然后按照时间片轮转分配时间片
      • 若时间片用完还没有完成,则进入下一级队尾,只有当前队列为空时,才会为下一级队列分配时间片。
      • 抢占式,可能会饥饿
  • 作业调度算法:
    • 先来先服务调度算法
    • 短作业优先调度算法
    • 优先级调度算法
  • 进程调度算法:
    • 以上6种都可以是进程调度算法
编程阅读需 2 分钟