当前位置: 首页 > news >正文

高并发语言erlang编程初步

初步

下载安装与初步使用

下载并安装,然后开始菜单中有对应的图标,打开就能进入erlang的命令行。当然也可以将其安装路径的bin文件夹加入环境变量,然后就可以在命令行中输入erl进入erlang了。

erlang语言中,语句结束需要用.标示,注释符号为%。在命令行中,输入一条正确的语句可以直接返回结果

1> 1+1.
2

这个时候有人会问了,要是用.结尾的话,那我要写个小数怎么办?这个大可不用担心,erlang还是能分清是小数点和结尾的句号的

2> 3/3.0.
1.0

退出命令行可通过halt().函数来实现,进出命令行的整个流程如下

>erl
Eshell V13.1.4  (abort with ^G)
1> halt().E:\Documents\00\0219>

变量和函数

erlang中变量需用大写字母开头,小写开头的数据类型叫做原子,不可以赋值,而只能作为标识符。而即使是大写字母开头的变量,一经赋值,其实也是不可更改的

1> A = 1.
1
2> A = 2.
** exception error: no match of right hand side value 2

这种不可更改变量的逻辑,加强了函数式的性能。erlang中的函数定义可以十分简洁而直观,例如像下面这样,Add就是一个函数,通过->...end来划分函数块。

Add = fun(X, Y)->X+Y end.
Add(1,2).
% 返回 3 % erlang用%做注释

切记变量首字母要大写,X, Y不能写为x, y,否则成了原子,没法赋值是要报错的,那么原子有什么用呢?

例如现在要做一组弧度角度转换函数,可以写成这种

1> Convert = fun(X,rad)->X/3.14*180;(X,deg)->X/180*3.14
end.
#Fun<erl_eval.41.3316493>
2> Convert(3.14, rad).
180.0
3> Convert(360, deg).
6.28

这样一看是不是显得十分简洁。

模块

写好一个函数之后,可将其封装在模块里,在erlang中,模块需要保存在.erl文件里,且在编译后可以运行。

-module(deg).
-export([convert/2]).
convert(X, deg) ->X / 360 * 3.1415926;
convert(X, rad) ->X / 3.1415926 * 360.

其中,第一行module(deg)表明这是个模块,模块的名字叫deg,同时要求文件的名字必须与模块名相同,即deg.erl

第二行export([convert/2])表示准备暴露给调用者的函数为convert,而convert这个函数有2个参数。

第三行后面就是convert的具体内容,这里和命令行中的fun定义方式稍有区别,但也很容易理解。

将上述代码写入add.erl之后,可在命令行中编译,并通过deg:convert的方式进行调用

1> c("deg.erl").
{ok,deg}
2> deg:convert(360, deg).
3.1415926
3> deg:convert(3.14, rad).
359.81750147998184

基本类型

erlang中,基本的数据类型是数字Number和原子AtomNumber又包括整数和浮点数。erlang中提供了一些用于数值的函数

类别函数
三角函数sin, cos, tan, asin, acos, atan
其他函数exp, log, abs
类型函数float, is_float, is_integer

前面提到,原子必须以小写字母开头,其实并不完全。通过单引号括起来的字符也可以当作原子。

Erlang中有两个特殊的原子,即truefalse,属于布尔类型。

此外,erlang中还有位串、元组、映射、列表等类型,相对复杂,故放在后面讲解。

相关文章:

高并发语言erlang编程初步

初步 下载安装与初步使用 下载并安装&#xff0c;然后开始菜单中有对应的图标&#xff0c;打开就能进入erlang的命令行。当然也可以将其安装路径的bin文件夹加入环境变量&#xff0c;然后就可以在命令行中输入erl进入erlang了。 在erlang语言中&#xff0c;语句结束需要用.标…...

springboot 问题记录

部署到Tomcat中的时候&#xff0c;找不到需要部署的项目&#xff1b; project facets severt-name severt-class安装lombok.jar eclipse添加lombok插件后闪退打不开Clean 项目&#xff0c;project clean clean的作用检查插件部署项目Springboot修改端口号&#xff1a;applica…...

【PAT甲级题解记录】1034 Head of a Gang (30 分)

【PAT甲级题解记录】1034 Head of a Gang (30 分) 前言 Problem&#xff1a;1034 Head of a Gang (30 分) Tags&#xff1a;图的遍历 连通分量统计 DFS Difficulty&#xff1a;剧情模式 想流点汗 想流点血 死而无憾 Address&#xff1a;1034 Head of a Gang (30 分) 问题描述 …...

Python搭建一个steam钓鱼网站,只要免费领游戏,一钓一个准

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 我们日常上网的时候&#xff0c;总是会碰到一些盗号的网站&#xff0c;或者是别人发一些链接给你&#xff0c; 里面的内容是一些可以免费购物网站的优惠券、游戏官网上可以免费领取皮肤、打折的游戏。 这些盗号网站统一的目…...

maven 私服nexus安装与使用

一、下载nexus Sonatype公司的一款maven私服产品 1、官网下载地址&#xff1a;https://help.sonatype.com/repomanager3/product-information/download 2、csdn下载地址&#xff1a;https://download.csdn.net/download/u010197591/87522994 二、安装与配置 1、下载后解压如…...

详解数据结构中的顺序表的手动实现,顺序表功能接口【数据结构】

文章目录线性表顺序表接口实现尾插尾删头插头删指定位置插入指定位置删除练习线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列…...

【二】kubernetes操作

k8s卸载重置 名词解释 1、Namespace&#xff1a;名称用来隔离资源&#xff0c;不隔离网络 创建名称空间 一、命名空间namesapce 方式一&#xff1a;命令行创建 kubectl create ns hello删除名称空间 kubectl delete ns hello查询指定的名称空间 kubectl get pod -n kube-s…...

如何在 C++ 中调用 python 解析器来执行 python 代码(五)?

本节研究如何对 import 做白名单 目录 如何在 C 中调用 python 解析器来执行 python 代码&#xff08;一&#xff09;&#xff1f;如何在 C 中调用 python 解析器来执行 python 代码&#xff08;二&#xff09;&#xff1f;如何在 C 中调用 python 解析器来执行 python 代码&…...

八 SpringMVC【拦截器】登录验证

目录&#x1f6a9;一 SpringMVC拦截器✅ 1.配置文件✅2.登录验证代码&#xff08;HandlerInterceptor&#xff09;✅3.继承HandlerInterceptorAdapter&#xff08;不建议使用&#xff09;✅4.登录页面jsp✅5.主页面&#xff08;操作页面&#xff09;✅6.crud用户在访问页面时 只…...

PhotoShop基础使用

49&#xff1a;图片分类 1&#xff1a;像素图 特点&#xff1a;放大后可见&#xff0c;右一个个色块&#xff08;像素&#xff09;组合而成。 优点&#xff1a;容量小&#xff0c;纯天然 JPG、JPEG、png、GIF 2&#xff1a;矢量图 面向对象图像 绘图图像 特点&#xff1a;不…...

借助阿里云 AHPA,苏打智能轻松实现降本增效

作者&#xff1a;元毅 “高猛科技已在几个主要服务 ACK 集群上启用了 AHPA。相比于 HPA 的方案&#xff0c;AHPA 的主动预测模式额外降低了 12% 的资源成本。同时 AHPA 能够提前资源预热、自动容量规划&#xff0c;能够很好的应对突发流量。” ——赵劲松 (高猛科技高级后台工…...

美团2面:如何保障 MySQL 和 Redis 数据一致性?这样答,让面试官爱到 死去活来

美团2面&#xff1a;如何保障 MySQL 和 Redis 的数据一致性&#xff1f; 说在前面 在尼恩的&#xff08;50&#xff09;读者社群中&#xff0c;经常遇到一个 非常、非常高频的一个面试题&#xff0c;但是很不好回答&#xff0c;类似如下&#xff1a; 如何保障 MySQL 和 Redis…...

react hooks学习记录

react hook学习记录1.什么是hooks2.State Hook3.Effect Hook4.Ref Hook1.什么是hooks (1). Hook是React 16.8.0版本增加的新特性/新语法 (2). 可以让你在函数组件中使用 state 以及其他的 React 特性 貌似现在更多的也是使用函数式组件的了&#xff0c;重要 2.State Hook imp…...

创新型中小企业认定评定标准

一、公告条件评价得分达到 60 分以上&#xff08;其中创新能力指标得分不低于 20 分、成长性指标及专业化指标得分均不低于 15 分&#xff09;&#xff0c;或满足下列条件之一&#xff1a;&#xff08;一&#xff09;近三年内获得过国家级、省级科技奖励。&#xff08;二&#…...

记录一次nginx转发代理skywalking白屏 以及nginx鉴权配置

上nginx代码 #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; …...

如何使用FarsightAD在活动目录域中检测攻击者部署的持久化机制

关于FarsightAD FarsightAD是一款功能强大的PowerShell脚本&#xff0c;该工具可以帮助广大研究人员在活动目录域遭受到渗透攻击之后&#xff0c;检测到由攻击者部署的持久化机制。 该脚本能够生成并导出各种对象及其属性的CSV/JSON文件&#xff0c;并附带从元数据副本中获取…...

Python - 操作txt文件

文章目录打开txt文件读取txt文件写入txt文件删除txt文件打开txt文件 open(file, moder, bufferingNone, encodingNone, errorsNone, newlineNone, closefdTrue)函数用来打开txt文件。 #方法1&#xff0c;这种方式使用后需要关闭文件 f open("data.txt","r&qu…...

老杜MySQL入门基础 1

1 数据库&#xff1a;DataBase(存储数据的仓库) 2 数据库管理系统&#xff1a;DataBaseManagementSystem(DBMS)(管理数据库中的数据的) DBMS可以对数据库中的数据进行增删改查常见的数据库管理系统&#xff1a;MySQL、Oracle、SQLserver 3 SQL&#xff1a;结构化查询语言 编…...

Vue中splice的使用

splice(index,len,[item])它也可以用来替换/删除/添加数组内某一个或者几个值&#xff08;该方法会改变原始数组&#xff09; index:数组开始下标 len: 替换/删除的长度 item:替换的值&#xff0c;删除操作的话 item为空 删除&#xff1a; //删除起始下标为1&…...

Ubuntu通过rsync和inotify实现双机热备

Rsync Inotify双机热备 一、备份机操作 备份机&#xff1a;主服务器或主机文件将需要备份的文件同步到此服务器上&#xff0c;即从主服务器上同步过来进行备份。 1.1安装rsync sudo apt-get install rsync1.2修改/etc/dault/rsync文件 sudo vim /etc/default/rsync修改如…...

从零到一:Brigadier如何重塑Mac Boot Camp驱动部署体验

从零到一&#xff1a;Brigadier如何重塑Mac Boot Camp驱动部署体验 【免费下载链接】brigadier Fetch and install Boot Camp ESDs with ease. 项目地址: https://gitcode.com/gh_mirrors/bri/brigadier 在Mac上安装Windows系统曾是一个令人望而生畏的技术挑战&#xff…...

从原理图到Vivado:手把手教你搞定XC7Z020-CLG400的EMIO引脚分配与约束

从原理图到Vivado&#xff1a;手把手教你搞定XC7Z020-CLG400的EMIO引脚分配与约束 在ZYNQ7000系列开发中&#xff0c;EMIO引脚的正确分配与约束是实现PS与PL协同工作的关键环节。许多工程师在初次接触ZYNQ架构时&#xff0c;往往会被MIO、EMIO和AXI_GPIO的关系所困扰&#xff…...

SeetaFace6实战:5分钟搞定实时视频流人脸检测(支持戴口罩识别,附完整C++/OpenCV代码)

SeetaFace6实战&#xff1a;5分钟构建高精度实时视频人脸检测系统&#xff08;含口罩识别&#xff09; 在智能安防、无接触门禁和远程医疗等场景中&#xff0c;实时人脸检测技术正发挥着越来越重要的作用。SeetaFace6作为中科视拓开源的最新版本人脸识别引擎&#xff0c;不仅将…...

开源情报自动化工具OpenClaw:模块化设计与实战部署指南

1. 项目概述&#xff1a;从“Resolver-TNG/ogas-openclaw”看开源情报自动化最近在开源情报&#xff08;OSINT&#xff09;和自动化数据采集的圈子里&#xff0c;一个名为“ogas-openclaw”的项目引起了我的注意。这个项目托管在Resolver-TNG的组织下&#xff0c;名字本身就很有…...

国家级数据仓库构建:从爬取到应用的全流程实践指南

1. 项目概述与核心价值最近在整理一个数据项目时&#xff0c;我偶然发现了一个名为“national_data”的仓库&#xff0c;作者是Ddhjx。这个项目名听起来平平无奇&#xff0c;但点进去之后&#xff0c;我发现它远不止是一个简单的数据集合。它本质上是一个结构化的、持续更新的国…...

ctf show web 入门46

这道题目是上一题的升级版&#xff0c;过滤条件变得更加苛刻了。我们来分析一下新增的限制以及应对方案。 代码审计与变化 相比之前&#xff0c;正则过滤 preg_match 新增了以下内容&#xff1a; [0-9]&#xff1a;禁止使用任何数字。这意味着 $IFS$9 这种绕过方式失效了。 \$&…...

群晖NAS进阶指南:借助Docker容器部署全能DDNS服务,实现多平台域名与公网IP智能同步

1. 为什么需要全能DDNS服务&#xff1f; 家里有群晖NAS的朋友可能都遇到过这样的烦恼&#xff1a;明明设置了外网访问&#xff0c;但过几天就失效了。这是因为大多数家庭宽带分配的都是动态公网IP&#xff0c;运营商会定期更换你的IP地址。想象一下&#xff0c;这就像你的手机…...

Open UI5 源代码解析之1378:DestinationField.js

源代码仓库: https://github.com/SAP/openui5 源代码位置:src\sap.ui.integration\src\sap\ui\integration\editor\fields\DestinationField.js DestinationField.js 文件分析 文件定位与整体判断 DestinationField.js 是 sap.ui.integration 编辑器体系中的一个专用字段…...

抖音下载器终极指南:从零开始掌握无水印批量下载技巧

抖音下载器终极指南&#xff1a;从零开始掌握无水印批量下载技巧 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppor…...

如何绕过Cursor Pro试用限制:技术原理与实战指南

如何绕过Cursor Pro试用限制&#xff1a;技术原理与实战指南 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your trial re…...