erlang小技巧

.列表操作 

lists:foreach(fun(X) -> io:format("E=~p~n",[X]) end, [1,2,3]). 
lists:duplicate(10, 16#f).  % [15,15,15,15,15,15,15,15,15,15] 

"abc-123" -> "abc" 
no_vsn(Name) -> lists:takewhile(fun($-)->false;(_)-> true end,Name). 

"abc-123" -> "123" 
vsn(Name) -> 
    case lists:dropwhile(fun($-)->false;(_)->true end,Name) of 
    [_Sep|Vsn] -> Vsn; 
    _ -> "0" 
    end. 

取偶数 
EvenN = lists:filter(fun (N) -> N rem 2 == 0 end, lists:seq(1,100)) 


lists:foldl(fun(F, Last) -> F(Last) end, foo(), [fun whee/1, fun bar/1]) 


将URL中的空格换成+ 
UW = lists:map(fun($ )->$+;(C)->C end,Words) 

判断是否为空格 
is_nb_space(X) -> 
    lists:member(X, [$\s, $\t]). 

>Data = [{"apple", "red"}, {"banana", "yellow"}, {"pear", "white"}]. 
>lists:keymember("pear",1,Data). 
  true 
>lists:keydelete("banana",1,Data). 
  [{"apple","red"},{"pear","white"}] 
>lists:keyreplace("apple",1,Data,{"tomato", "red"}). 
  [{"tomato","red"},{"banana","yellow"},{"pear","white"}] 

> rd(user,{id,name}).   %% 用户记录 
lists:keysearch("wang", #user.name, [#user{id=1,name="li"}, #user{id=2,name="wang"}]). 
> {value,#user{id = 2,name = "wang"}} 


.二进制操作 

-define(BYTE, 8/unsigned-big-integer). 
<<C:2/unit:?BYTE>> 意思就是取两个单位,每单位8bits。 

unit的默认值取决于type,如果type是integer或者float,则为1,binary为8。 
<<C:4/binary, _/binary>> 意思就是取4个单位,每单位8比特,总共4*8比特 


.位操作 
    O2 = ((C1 band 16#03) bsl 4) bor (C2 bsr 4). 

. 文件操作 
Destination = filename:join([code:root_dir(), "include", no_vsn( New_lib )]),            file:make_dir(Destination), 

lists:foreach( fun(File) -> 
    FileName = lists:last(string:tokens(File,"/\\")), 
    file:copy(File, filename:join([Destination,FileName])) 
    end, filelib:wildcard(filename:join([Source,"*"])) ). 

remove(Path, File) -> 
    Desc = filename:join([Path,File]), 
    case filelib:is_dir(Desc) of 
    true -> 
        case file:list_dir(Desc) of 
        {ok,Sub} -> lists:foreach(fun(S) -> remove(Desc,S) end,Sub); 
        {error,Reason} -> io:format("error: ~p~n",[Reason]) 
        end, 
        file:del_dir(Desc); 
    false -> 
        file:delete(Desc) 
    end. 

uncompress(Archive) -> 
    case file:read_file(Archive) of 
    {ok,Tgz} -> 
        Tar = zlib:gunzip(Tgz), 
        erl_tar:extract({binary,Tar},[{cwd,code:lib_dir()}]); 
    Error -> 
        Error 
    end. 


.日期,时间操作 
{{Y,M,D},{H,M,S}} = calendar:local_time(). 
calendar:day_of_the_week(2009,2,24). 


.字符串操作 

格式化字符串, 像C语言的sscanf() 
Cmd = io_lib:format(\"cd ~s/include; rm ~s; ln -s ../lib/~s/include ~s\", [code:root_dir(), no_vsn( New_lib ), New_lib, no_vsn( New_lib )]), 
os:cmd(Cmd); 

PN = [erlang:list_to_integer(N) || N <- string:tokens( vsn( Package_that_might_be_newer ), "." )], 

packages_from_html(Html,Packages) -> 
    case string:str(Html,"class=\"package\"") of 
    0 -> Packages; 
    Start -> 
        Sub = string:sub_string(Html,Start), 
        T1 = string:sub_string(Sub,string:chr(Sub,$>)+1), 
        PName = string:sub_string(T1,1,string:chr(T1,$<)-1), 
        T2 = string:sub_string(T1,string:str(T1,"<i>")+3), 
        Descr = string:sub_string(T2,1,string:str(T2,"</i>")-1), 
        packages_from_html(T2,[{PName,Descr}|Packages]) 
    end. 

. mnesia相关操作 

$erl -mnesia dir '"/home/sw2wolf/data"' -s mnesia start 

-record(hitNum, { 
    oid, 
    hitnum 
}). 

% 在指定节点创建schema用数据表 

install( Nodes ) when is_list( Nodes ) -> 
    mnesia:stop(), 
    mnesia:delete_schema( Nodes ), 
    catch ( mnesia:create_schema( Nodes ) ), 
    mnesia:start(), 
    case mnesia:create_table ( hitNum, [ 
        { disc_copies, Nodes }, 
        { type, set }, 
        { attributes, record_info( fields, hitNum) } 
    ] ) of 
        { atomic, ok } -> ok; 
        _Any -> 
            io:format( "create table error!~n") 
    end, 
    mnesia:stop(), 
    ok. 

%增加记录 
add_hitnum(HitNums) -> 
    F = fun() -> 
            lists:foreach( fun mnesia:write/1, HitNums) 
        end, 
    mnesia:transaction( F ). 

%查寻 
qry_hitnum() -> 
    Q = qlc:q( [X || X  <- mnesia:table(hitNum)] ), 
    F = fun() -> qlc:e( Q ) end, 
    { atomic, Val } = mnesia:transaction( F ), 
    lists:sort(Val). 

转载于:https://www.cnblogs.com/orez88/articles/1831188.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 插入中文 ERROR 1366 (HY000): Incorrect string value: '\xE7\x8E\x9E\x97' for column

1、出现这个问题&#xff0c;是因为我们的字符编码设置出现了问题&#xff0c;用cmd打开命令终端&#xff0c;查看我们的数据库设置&#xff1a; 2、输入命令use crm&#xff08;crm是我创建的数据库,大家在修改时换成自己的数据库名即可&#xff09; 再输入&#xff1a;show …

handlersocket mysql_Mysql插件之HandlerSocket的安装、配置、使用

HandlerSocket简介HandlerSocket是针对Mysql的一个NoSQL插件&#xff0c;它作为一个守护进程工作在mysqld进程里面,接收tcp连接&#xff0c;并处理来自客户端的请求。HandlerSocket不支持SQL查询&#xff0c;作为替代&#xff0c;它支持表的简单的CRUD操作。由于下面的原因&…

【转】TeeChart的用法

/// <summary> /// 获得数据集 /// </summary> /// <param name"sqlStr">传递查询语句</param> /// <returns>返回数据集</returns> public static DataSet GetDataSet(string sqlStr) { string conns…

java,jdk安装,配置环境变量,window10系统

1、找到我们要安装的jdk软件&#xff0c;软件下载我就不介绍了&#xff0c;jdk下载连接地址 然后安装&#xff0c;一直点下一步就可以了&#xff0c;这里不建议跟换软件目录&#xff0c;毕竟第一次用&#xff0c;出了什么错就不好弄了&#xff0c;注&#xff1a;记得软件的安装…

solr mysql数据注入_(solr系列:四)将mysql数据库中的数据导入到solr中

在前面的博文中&#xff0c;已完成了在tomcat中对solr的部署&#xff0c;为solr添加了一个自定义的core,并且引入了ik分词器。那么该如何将本地的mysql的数据导入到solr中呢&#xff1f;准备工作&#xff1a;1、mysql数据源&#xff1a;myuser库中的user表(8条数据)/*Navicat M…

40种Javascript中常用的使用小技巧【转】

1. οncοntextmenu"window.event.returnValuefalse" 将彻底屏蔽鼠标右键< table border οncοntextmenureturn(false)>< td>no< /table> 可用于Table 2. < body onselectstart"return false"> 取消选取、防止复制 3. οnpaste&q…

超链接去下划线

在a标签里加上 style"text-decoration: none

Silverlight学习笔记(三):创建第一个Silverlight应用程序

在开始创建程序之前&#xff0c;还是要提一下关于Silverlight开发环境搭建的问题。如果使用VS2010&#xff0c;这可以搭建Silverlight4的开发环境。我推荐大家看这篇由大牛jv9撰写的【轻松建立Silverlight 4开发环境】。 我使用的是VS2008&#xff0c;所以要搭建的是Silverlig…

按钮旁边加一个提示_地铁站的那些“红色按钮”,你知道是干啥用的吗?乱按可能被拘留...

地铁紧急停车按钮图片来自网络位置&#xff1a;站台两侧墙壁上&#xff0c;靠近列车车头、车尾两侧。外观&#xff1a;上锁的红色四方小盒子&#xff0c;按钮为红色&#xff0c;旁边写有“紧急停车按钮”等字样。使用&#xff1a;紧急时刻击碎中间玻璃&#xff0c;按压按钮。红…

java中的局部变量、成员变量、类变量

局部变量&#xff1a;在方法、构造函数或者语句块中定义的变量被称为局部变量。 特点&#xff1a;变量的声明和初始化都是在方法中&#xff0c;方法结束后&#xff0c;变量就会自动销毁。 例&#xff1a;下面代码块的s2 成员变量&#xff1a;成员变量是定义在类中&#xff0c;…

根据F12在页面中调整div的大小

我们先随便写一个div大小&#xff0c;然后在chrome浏览器打开&#xff0c;显示效果&#xff1a; #logo{border: 1px solid black;width: 1300px;height: 50px;} .top{border: blue solid 1px;width: 420px;height: 50px;float: left;}<div id"logo"><div c…

头文件

1、头文件用于声明而不是用于定义 定义只可以出现一次&#xff0c;而声明可以出现多次。下列语句是一些定义&#xff0c;不应该放在头文件里&#xff1a; extern int ival 10; double fica_rate; 虽然ival声明为extern&#xff0c;但是它有初始化式&#xff0c;代表这条语句是…

删除了注册表winsock项及winsock2项怎么办

国庆节期间要值一天班&#xff0c;看看网站有没有什么问题&#xff0c;可是打开电脑去上不了网&#xff0c;于是在网上寻找答案&#xff0c;就这么着看到一个贴子&#xff0c;让删除注册表中的winsock及winsock2两项&#xff0c;哎&#xff0c;这一删可出大事了&#xff0c;网更…

mysql 数据库设计规范_MYSQL数据库设计规范与原则

MYSQL数据库设计规范1、数据库命名规范采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线_组成;命名简洁明确(长度不能超过30个字符);例如&#xff1a;user, stat, log, 也可以wifi_user, wifi_stat, wifi_log给数据库加个前缀;除非是备份数据库可以加0-9的自然…

The security settings could not be applied to the database because the connection has failed安装Mysql

安装msql出现这个问题&#xff0c;&#xff0c;百度了好久才解决了问题&#xff0c;说一下怎么解决的吧 把以前安装的Mysql删除打开C盘&#xff0c;点击查看&#xff0c;然后点击隐藏的项目&#xff0c;这时候目录会出现ProgramData文件&#xff0c;然后点击这个文件&#xff…

怎么给div加背景图片

<div style"background: url(img/news images/News-flash_01_02.png);height: 306px;width: 1300px;">注意&#xff1a;url的路径一定要加’

python多个进度条_多个芹菜进度条

问题我有一个Django站点&#xff0c;使用celeriRabbitMQ作为长时间运行任务的任务队列。我把结果存储在Redis中。我已经能够使用Celery的update_state在引导进度条中显示一个任务的进度&#xff0c;并通过一个按钮向Redis DB发送ajax post来检索当前状态。在理想情况下&#xf…

微软Silverlight,你应该知道的10件事

笔者使用Silverlight的时间比较长&#xff0c;一直在研究这个微软号称“Flash杀手”的工具。根据几个月的第一手体验&#xff0c;对它的技术方面的精华进行了总结。 随着Siverlight公众版的发布时间的日益接近&#xff0c;现在是时候来熟悉Silverlight以及其如何影响你的We…

Hibernate配置C3P0连接池(在配好基本的hibernate配置下使用)

拷贝jar包 找到我们的hibernate安装包&#xff0c;在lib目录下找到optional目录&#xff0c;打开c3p0文件&#xff0c;拷贝里面的jar包到eclipse里 写一个测试类&#xff0c;代码入下 public class C3P0Test {Testpublic void test() {Session s HabernateUtils.openSessi…

workerman json mysql_workerman-json-rpc

软件简介一款使用PHP开发的高性能Json Rpc框架&#xff0c;框架使用TCP/IP协议直接传输json数据&#xff0c;系统集成统计监控模块&#xff0c;开发部署维护非常简。workerman-json-rpc 包含了服务端和客户端。特性&#xff1a;使用PHP开发&#xff0c;与PHP紧密结合PHP 多进程…