9 bdss58

已隐藏 已隐藏

暂无相关简介

等级
TA的排名 7k+

既然有GIL了那么为什么在python中多线程编码时候还需要加锁?

GIL由于 python 解释器(Cpython interpreter)不是线程安全(thread-safe)的,所以 Cpython interpreter 的实现中使用了GIL(global interpreter lock)来阻止多线程同时在一个 pyobject 上操作。这里所说的 “不是线程安全“ 是指Cpython interpreter在内存管理上不是线程安全的。比如,两个线程同...

2020-01-22 15:37:55

ssh 代理设置

1. 直接指定命令参数- o 指定 ProxyCommand 。可以通过 ProxyCommand 告诉 ssh client 如何与代理进行通讯,通过代理与运程主机建立 ssh 链接。ssh -p 36000 -o "ProxyCommand corkscrew 127.0.0.1 12759 %h %p" -o "ControlMaster auto" -o "ControlPath ~...

2019-12-05 16:50:51

命令行(bash)并发请求(压测)server

while :; do for i in $(seq 4); do time PYTHONIOENCODING=utf-8 PYTHONHOME=venv http_proxy= venv/bin/python client.py 127.0.0.1 & pids[$i]=$!; done; for pid in ${pids[*]}; do wait $pid; done; done...

2019-12-01 23:53:27

python 虚拟环境设置

参考下面的 shell 脚本设置#! /bin/bashset -eu# generate python2.7 project# it's the first time that I generate project using python2.7 last week# it took me a lot of time to handle the python2.7 virtual ...

2019-11-22 17:18:11

检查环境变量设置

问题: 如何找到 LC_CTYPE 这个环境变量在哪儿定义的?可以按照下面顺序检查Some places to look first:System wide/etc/environment: specifically meant for environment variables/etc/env.d/*: environment variables, split in multipl...

2019-11-22 16:57:43

保留当前环境变量执行 sudo 操作

当执行sudo "command"或者sudo bash -c "your command or scripts"时候,你在当前执行当 interactive shell 上设置当环境变量或者定义在自己的 login shell 初始化脚本(比如~/.bashrc, ~/.bash_profile)里的环境变量不会生效。如何让这些变量在 sudo 情况下生效呢?sudo -E ba...

2019-11-22 11:51:21

python repl 无法显示中文或者报错

尝试设置环境变量export PYTHONIOENCODING=utf-8`

2019-11-12 17:24:24

golang 标准库 http 的 client 为什么必须手动关闭 resp.Body

使用 golang http client 请求,我们通常是这么干的resp, err := http.Get(...)if err != nil {..}defer resp.Body.Close()为啥必须 resp.Body.Close() 呢?回答这个问题其实需要回答两个问题:resp.Body.Close() 做了啥?为啥这么做?1 resp.Body.Clo...

2019-10-06 13:38:45

golang 标准库 http client 超时设置

golang 官方提供的 http 包里的 http client 可以通过一下两种方法设置超时(其他一些精细的超时控制比如设置 transport 里的 dial connect 的超时时间不在这里讨论)。1 client.Timeout// 设置1s超时cli := http.Client{Timeout: time.Second}2 req.WithContext// 设置1s超...

2019-10-05 22:29:03

linux 系统调用

https://blog.packagecloud.io/eng/2016/04/05/the-definitive-guide-to-linux-system-calls/

2019-08-11 22:22:04

ssh端口转发(打洞)

local port forwarding举例来说,工作中常见场景,一台 mysql 数据库 1.2.3.4:3306 在本地网络环境中不通,不过在远程开发机 1.2.3.5 上可以连通,通常需要 ssh 到 1.2.3.5上,然后 mysql client 命令行链接。使用 ssh local port forwarding 可以做到直接在本地连接1.2.3.4:3306ssh -fN ...

2019-07-14 12:59:35

一键安装gcc 和 docker

写了一个脚本,自动化gcc 和 docker安装过程。优点:自动化快速不依赖网络屏蔽配置细节缺点:5. 对安装过程无感知6. 只能安装固定版本docker( docker ce 18),gcc( 9.1)gcc 脚本制作过程:shell 脚本 installgcc.sh#! /bin/bash# This is just a little script that ...

2019-07-13 19:34:13

批量重命名文件

为了避免ide跳转到 golang plan9 代码,需要把所有 “plan9” 到文件重命名,加上后缀.bak。find .local/go/src -name "*plan9*" -type f | xargs -n 1 sh -c 'f=$0; d=$(dirname $f); b=$(basename $f); mv $f $d/${b/$b/$b.bak}'...

2019-07-13 13:29:58

文件操作为啥需要及时手动 close?

目前知道的原因:文件打开后保存在操作系统buffer中,如果程序异常退出,造成系统资源浪费。使用 file.close(),能够让os及时将buffer中的数据flush到文件里。防止在频繁open操作的场景下的file descriptors耗尽(文件描述符泄漏)。// todo待看源码验证。...

2019-07-06 12:37:57

多线程导致的内存泄漏

Joinable threads VS Detached threads线程有两种运行模式:Joinable ModeDetached ModeJoinable Thread & pthread_join()#include <stdlib.h>#include <stdio.h>#include <string.h>#include...

2019-06-28 22:59:54

内存释放free函数如何知道内存大小

想知道free如何工作那肯定需要知道malloc如何工作,正所谓怎么来的就怎么回去。使用malloc分配内存时候根据参数指定的大小,分配一块内存,然后返回这块内存的起始位置给调用者,这就是调用者拿到的所谓的指针。起始这个指针并不是真正的起始位置,真正的指针在malloc返回指针 p 的前面,内存分配器在 p 的前面用两个字节的空间来存放分配的内存大小信息。看下图:...

2019-06-28 15:19:05

pre-binary 安装docker

由于公司centos开发机有网络完全设置,总是存在网络不通或者外网不通或者yum源不全等各种各样等问题,导致我安装docker环境处处碰壁。现在这里记录一下我是用 pre-binaries 离线安装docker的过程。1. 准备 pre-binaries在这里下载二进制打包文件 https://download.docker.com/linux/static/stable/x86_64/ 。...

2019-03-15 19:50:16

语义化版本编号(Semantic Versioning)

2019-01-11 11:16:54

linux进程虚拟内存

http://csapp.cs.cmu.edu/2e/ch9-preview.pdfhttp://engineering.pivotal.io/post/virtual_memory_settings_in_linux_-_the_problem_with_overcommit/https://manybutfinite.com/post/anatomy-of-a-program-in-mem...

2018-12-06 23:30:17

为啥redis是单线程的?

看到网上一些讨论,现在在这里整理一下。多线程编程复杂并且线程之间需要加锁,影响性能CPU并不是瓶颈,网络才是瓶颈。redis 是一个server,通过网络io与多个client交互。多线程并不意味着更快。redis设计成单线程就是为了避免线程之间的锁竞争,使得内存访问超级快。...

2018-11-22 16:13:43

查看更多

勋章 我的勋章
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。