编程语言

erlang进程与操作系统线程

橙三吉。 提交于 2020-03-29 05:24:51
erlang多进程与多线程: 在erlang开发中,我们面对的最小执行单位是进程,当然这个进程并不是系统层面上的进程,也不是线程。而是基于erlang运行时系统的一个进程。那么erlang的多进程是如何变成系统级别上的多线程,进而被多核处理器处理呢? 其实,我们每启动一个erlang VM,实际上就启动了模拟器+erlang运行时系统。而每个erlang运行时系统会启动N个进程调度器,每个进程调度器都是一个独立的操作系统线程。这个调度器会处理一个进程池,进程池里面是M个erlang进程。也就是说erlang进程以1:M的方式映射到操作系统线程。 既然每个调度器都是一个操作系统线程,那么可并行运行的erlang进程最多就能有M个。虽然一个进程池内有M个进程,但是同一池内的进程仍像之前所有进程公用一个调度器那样分时运行。 并且在此之上,进程可以在进程池之间迁移以便维持可用调度器上的负载均衡。 erlang程序的单进程与多线程: 每启动一个erlang VM,也就启动了一个进程,该进程包括很多线程,最基本就包括了erlang运行时系统和模拟器所创建的线程。如果在该虚拟机上还运行erlang程序,那么ERTS就有可能为你的应用程序创建了N个线程。这些线程的个数,跟启动erlang VM时设置的参数和自身硬件环境有关

Python使用pip安装速度慢换源

☆樱花仙子☆ 提交于 2020-03-29 02:36:58
在是使用pip安装的时候总是超时 换源 豆瓣:http://pypi.douban.com/simple/ 清华:https://pypi.tuna.tsinghua.edu.cn/simple 临时使用: 可以在使用pip的时候加参数-i https://pypi.tuna.tsinghua.edu.cn/simple 例如:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple gevent 永久修改: linux下,修改 ~/.pip/pip.conf , 修改 index-url至tuna,内容如下: [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple windows下,在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini,内容如下 [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple 来源: https://www.cnblogs.com/lfotest/p/12590278.html

shell——awk

天大地大妈咪最大 提交于 2020-03-28 21:20:22
awk -F"分隔符" "command" filename awk -F":" '{print $1}' /etc/passwd 字段引用: $1代表第一列; $2代表第二列; $0代表所有列。 内置变量: FS  代表输入的分隔符,等同于-F OFS  代表输出的分隔符 NF  代表字段数,因为NF是列数,所以$NF代表最后一列 NR  代表当前处理第几行 关系操作符: ==  等于 !=  不等于 >  大于 <  小于 >=  大于等于 <=  小于等于 逻辑操作符 &&  逻辑与,类似于shell的[ 条件1 -a 条件2 ] ||  逻辑或,类似于shell的[ 条件1 -0 条件2 ] !  非 运算符 + - * / ^或**  幂 awk可以运算浮点数 echo $[1.2*3]  #错误 echo | awk '{print 1.2*3}'  #正确 练习 截取所有开放监听的TCP协议端口号 netstat -ntl | awk 'NR>2 {print $4}' |awk -F: '{print $NF}' /etc/passwd文件 截取前五行的倒数第二列 awk -F: 'NR<=5 {print $(NF-1)}' /etc/passwd 打印第五行 awk -F: 'NR==5 {print $0}' /etc/passwd 打印第五行第五列 awk

Python lambda介绍

心已入冬 提交于 2020-03-28 20:29:59
  在学习python的过程中,lambda的语法时常会使人感到困惑,lambda是什么,为什么要使用lambda,是不是必须使用lambda?   下面就上面的问题进行一下解答。   1、lambda是什么?     看个例子:      1 g = lambda x:x+1   看一下执行的结果:    g(1)   >>>2   g(2)   >>>3   当然,你也可以这样使用:   lambda x:x+1(1)   >>>2      可以这样认为,lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体,用函数来表示为: 1 def g(x): 2 return x+1   非常容易理解,在这里lambda简化了函数定义的书写形式。是代码更为简洁,但是使用函数的定义方式更为直观,易理解。   Python中,也有几个定义好的全局函数方便使用的,filter, map, reduce   >>> foo = [2, 18, 9, 22, 17, 24, 8, 12, 27] >>> >>> print filter(lambda x: x % 3 == 0, foo) [18, 9, 24, 12, 27] >>> >>> print map(lambda x: x * 2 + 10, foo) [14, 46, 28, 54, 44,

Python自学从入门到就业之Set的使用

允我心安 提交于 2020-03-28 15:34:38
集合(set)是一个无序的不重复元素序列,可以使用大括号 { } 或者 set() 函数创建集合。 注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。 创建格式: parame = {value01,value02,...} 或者 set(value) 添加元素 语法格式如下: s.add(x) 将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。 >>>thisset = set(("Google", "Runoob", "Taobao")) >>> thisset.add("Facebook") >>> print(thisset) {'Taobao', 'Facebook', 'Google', 'Runoob'} 说到这里,提醒大家:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你缺新项目练习或者没有python精讲教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新教程项目无私分享,还可以跟老司机交流讨教! 还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下: s.update( x ) x 可以有多个,用逗号分开。 >>>thisset = set(("Google", "Runoob", "Taobao"))

Go语言基础之指针

心已入冬 提交于 2020-03-28 12:38:02
前言 区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。 什么是指针 不管是Python还是Go程序 执行过程中数据载入内存后,在计算机内存中都有它们的内地址,这就是指针。 指针的作用就是 保存某1个数据在内存中的内存地址, 方便我们在内存中快速查找到该数据(变量)。 在Go语言中的 值类型 (int、float、bool、string、array、struct) 都有对应的指针类型 ,如: *int 、 *int64 、 *string 等。 指针操作 package main import "fmt" func main() { //基本数据类型在内存中的布局 var i int = 10 //获取变量i的内存地址 fmt.Println("变量i的内存地址:", &i) //声明1个 ptr指针变量,指向1个类型为int的内存地址 var ptr *int = &i fmt.Println(ptr) //获取指针的内存地址 fmt.Println(&ptr) //通过指针获取变量i对应的值(10) fmt.Println(*ptr) //通过指针修改变量i对应的值 *ptr = 222 fmt.Println(i) //通过指针修改变量的值 name := "成龙" age := "18" por1 := &name *por1 =

Ubuntu14.04安装Python3.6

亡梦爱人 提交于 2020-03-28 03:37:49
先删了3.4 sudo rm /usr/bin/python3 sudo ln -s /usr/bin/python3.6 /usr/bin/python3 在 1、下载Python3 wget http://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz 2、下载完成后,解压 tar -xvzf Python-3.6.4.tgz 3、解压完成后,切换到Python3文件夹中 cd ./Python-3.6.4 4、分别执行 ./configure --with-ssl make 来源: https://www.cnblogs.com/xing03/p/12585470.html

关于计算机编程语言——编译型和解释型_2

家住魔仙堡 提交于 2020-03-28 03:02:29
目前,我们都是采用高级语言编程(写汇编和机器语言的大牛们除外),但是计算机只能识别二进制( 机器语言),不能直接理解高级语言 ,所以我们必须把高级语言“ 翻译”成计算机能够理解的机器语言。 说到“ 翻译“, 其实总共有两种方式: 1. 编译: 通过编译系统(不仅仅只是通过编译器,编译器只是编译系统的一部分)把高级语言“ 翻译 ”成机器语言(具体翻译过程可以参看下图), 把源高级程序编译成为机器语言文件,比如windows下的exe文件。 一个完整的编译系统与 一个用C编写的程序hello.c的编译过程 2. 解释:解释型程序在运行的时候才“ 翻译 ”,比如VB语言,在执行的时候,专门有一个解释器将VB语言“ 翻译 ”成机器语言, 每条语句都是执行的时候才翻译。 编译型与解释型,两者各有利弊: 1、 编译型语言:一次编译完成后,可以直接运行, 程序执行效率高 ; 解释型语言:执行时才“翻译”成机器语言,解析一行,“ 翻译 ”一行,执行一行,程序执行效率相对较低; 但是不能一概而论, 部分解释型语言的解释器通过在运行时动态优化代码,甚至能够使解释型语言的性能超过编译型语言。 2、由于 编译型程序 执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它, 像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言;

Ubuntu 安装RabbitVCS(类似于windows下的TortoiseSVN)

蹲街弑〆低调 提交于 2020-03-28 03:00:37
第一步:将rabbitvcs的添加到源里面。(次操作会提示是否要添加到源里面,点击ENTER添加,Ctrl+C不添加),这里选择ENTER方便更新。 sudo add-apt-repository ppa:rabbitvcs/ppa 第二步:根据第一步的情况来是否跳过该步骤,如果第一步出现导入key,那第二步可以跳过,否则需要导入key sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 34EF4A35 第三步:执行更新源 sudo apt-get update 第四步:安装依赖库 sudo apt-get install python-nautilus python-configobj python-gtk2 python-glade2 python-svn python-dbus python-dulwich subversion meld 第五步:安装RabbitVCS sudo apt-get install rabbitvcs-cli rabbitvcs-core rabbitvcs-gedit rabbitvcs-nautilus3 最后建议重启一下电脑,在某个文件夹下单击鼠标右键就能看到RabbitVCS选项了。 来源: https://www.cnblogs.com/young525/p

Ruby&Rails完全读书指南

女生的网名这么多〃 提交于 2020-03-28 01:04:13
声明:本文转自透明的blog: http://blog.csdn.net/gigix/archive/2006/07/21/951430.aspx 看到这样一个题目,大概很多读者会记起这样一张图片:左边堆着高高一摞关于Java的技术书籍,右边则是区区两本关于Ruby的。炮制 这张图片的用意显而易见,不过随着Ruby和Rails的急速窜红,Ruby图书也开始如同雨后春笋般纷纷问世——这也意味着学习者们需要花越来越多的时 间和精力来挑选适合自己的书了。   也许Ruby(以及Rails)正在像Java(以及J2EE)一样,不可逆转地变得越来越庞大,因此也需要越来越多的图书来阐 释。不过至少现在,我们还可以把所有关于Ruby的图书列举一遍——对于Java,这已经是一个不可能的任务。说句题外话,之所以我迫不及待地急着写这篇 书评,正是因为我相信它在不久之后也会成为一个不可能的任务。 Programming Ruby(2nd Edition) 这似乎已经不是怪事:关于一种编程语言的经典教材,作者不是这门语言的创造者。就像Stan Lippman之于C++、Joshua Bloch之于Java、Martin Fowler之于UML一样,Dave Thomas也许是这个世界上最善于向别人讲解Ruby语言的人——至少超过Matsumoto是毫无问题的。也许正是因为自己也经历了“不懂到懂”的学习过程