info

Erlang OTP行为模式behaviour——gen_event

匆匆过客 提交于 2020-03-09 18:26:49
说明 最近笔者在学习otp行为模式,在查阅相关资料时发现网上有关erlang的资料不是很多,也不够详细。在参考官方文档以及其他作者的文章后,决定写这篇博客。算是自己对知识的复习,也为诸君提供一些参考。 1.gen_event 简介 Gen_event实现了通用事件处理,通过其提供的标准接口方法以及回调函数,在OTP里面的事件处理模块是由一块通用的事件管理器和任意数量的事件处理器,并且这些事件处理器可以动态的添加和删除。一个事件可以用来记录error,alarm,info, warning等信息。一个事件管理器可以安装一个或多个事件处理器,当一个事件管理器接受到一个事件的通知时,这个事件将会被所有的已安装的事件处理器依次处理。 事件管理器是作为一个进程实现的,每个事件处理器都是一个回调模块。且事件管理器实质上是一个{Module,State} 组成的列表,Module是事件处理器,State为该事件处理器内部状态。 2.事件处理器 不多废话,直接上代码,以下为一个事件处理器标准模板,具体函数将在后面做出详细解释。事件处理器可以有多个。 -module(info_logger). -behaviour(gen_event). %% gen_event callbacks -export([init/1, handle_event/2, handle_call/2, handle

asp.net如何实现高级搜索功能

隐身守侯 提交于 2020-03-09 14:28:46
开发搜索网站时,常常需要根据多个条件搜索一个指定结果。本实例在一个含有大量数据信息的搜索网站中实现了高级搜索功能。高级搜索主要通过复合条件查询来实现。运行本实例,程序将根据用户选择的信息类型和输入的信息名称在网站中进行搜索。另外,用户还可以指定一页中显示多少条记录。 图: 本例主要以asp.net网站为例,讲述如何运用 SQL语句中的比较运算符。 为了方便用户使用SQL语句进行各种查询,在SQL语句中提供了几种常用的比较运算符, 图: (1)新建一个网站,将其命名为HighSearch,默认主页为Default.aspx。 (2)Default.aspx页面用到的控件及用途 图: (3)本实例主要用到了DataList控件分页技术。首先自定义一个dlDataBind()方法,该方法用来从数据库中查找出相关记录并计算出记录总数,然后对DataList控件进行数据绑定。该方法有4个参数:sqlstr、table、dkf和psize,它们分别表示要执行的SQL语句、数据表名、DataList控件要绑定的数据表主键和每页显示的记录数。 代码如下: public void dlDataBind(string sqlstr, string table, string dkf, int psize) { int curpage = Convert .ToInt32(this.labPage

SaltStack 自动化运维实战

∥☆過路亽.° 提交于 2020-03-09 11:56:44
最新版实战 Latest release: 3000 (February 10, 2020) 参考saltStack官方文档 ON THE SALT MASTER Run these commands on the system that you want to use as the central management point. curl -L https://bootstrap.saltstack.com -o install_salt.sh sudo sh install_salt.sh -P -M Your Salt master can manage itself, so a Salt minion is installed along with the Salt master. If you do not want to install the minion, also pass the -N option. ON EACH SALT MINION Run these commands on each system that you want to manage using Salt. curl -L https://bootstrap.saltstack.com -o install_salt.sh sudo sh install_salt.sh -P

dajngo基础

强颜欢笑 提交于 2020-03-09 11:32:10
Django入门及简单的demo练习 一 、什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演。 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。 最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回。 如果要动态生成HTML,就需要把上述步骤自己来实现。不过,接受HTTP请求、解析HTTP请求、发送HTTP响应都是苦力活,如果我们自己来写这些底层代码,还没开始写动态HTML呢,就得花个把月去读HTTP规范。 正确的做法是底层代码由专门的服务器软件实现,我们用Python专注于生成HTML文档。因为我们不希望接触到TCP连接、HTTP原始请求和响应格式,所以,需要一个统一的接口,让我们专心用Python编写Web业务。 这个接口就是WSGI:Web Server Gateway Interface。 实例: 1 from wsgiref.simple_server import make_server 2 3 4 def application(environ, start_response): 5 start_response

C#索引器理解

岁酱吖の 提交于 2020-03-08 23:59:09
C#索引器介绍举例 索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的。 索引器和数组比较: (1)索引器的索引值(Index)类型不受限制 (2)索引器允许重载 (3)索引器不是一个变量 索引器和属性的不同点 (1)属性以名称来标识,索引器以函数形式标识 (2)索引器可以被重载,属性不可以 (3)索引器不能声明为static,属性可以 一个简单的索引器例子 using System; using System.Collections; public class IndexerClass { private string[] name = new string[2]; //索引器必须以this关键字定义,其实这个this就是类实例化之后的对象 public string this[int index] { //实现索引器的get方法 get { if (index < 2) { return name[index]; } return null; } //实现索引器的set方法 set { if (index < 2) { name[index] = value; } } } } public class Test { static void Main() { //索引器的使用 IndexerClass Indexer =

eureka服务端源码分析

大兔子大兔子 提交于 2020-03-08 19:18:11
服务端主要功能 服务的注册 服务的续约 服务的下线 给客户端提供服务信息 这里不对每一点就讲解,就讲一下服务的注册。 如果看过eureka客户端的代码,可以知道,eureka客户端是通过发送http请求向服务端注册信息的,这里来看一下入口代码: /** * Registers information about a particular instance for an * {@link com.netflix.discovery.shared.Application}. * * @param info * {@link InstanceInfo} information of the instance. * @param isReplication * a header parameter containing information whether this is * replicated from other nodes. */ @POST @Consumes({"application/json", "application/xml"}) public Response addInstance(InstanceInfo info, @HeaderParam(PeerEurekaNode.HEADER_REPLICATION) String isReplication) {

Framebuffer 驱动学习总结(二)---- Framebuffer模块初始化

限于喜欢 提交于 2020-03-08 07:39:27
---恢复内容开始--- Framebuffer模块初始化过程:--driver\video\fbmem.c 1、 初始化 Framebuffer : FrameBuffer驱动是以模块的形式注册到系统中,在模块初始化时,创建FrameBuffer对应的设备文件及proc文件,并注册FrameBuffer设备操作接口函数fb_fops。 static int __init fbmem_init(void) { proc_create("fb", 0, NULL, &fb_proc_fops);///向 proc 文件系统报告驱动状态和参数 if (register_chrdev(FB_MAJOR,"fb",&fb_fops))///注册字符设备驱动,主设备号是29 printk("unable to get major %d for fb devs\n", FB_MAJOR); fb_class = class_create(THIS_MODULE, "graphics");///创建 /sys/class/graphics 设备类,配合 mdev生成设备文件 if (IS_ERR(fb_class)) { printk(KERN_WARNING "Unable to create fb class; errno = %ld\n", PTR_ERR(fb_class)); fb

Eclispe中导入SpringBoot架构的Maven项目,项目启动报各种类找不到的错,例如:UnsatisfiedDependencyException,NoClassDefFoundError

白昼怎懂夜的黑 提交于 2020-03-08 02:32:23
1.问题解决后原因分析:maven依赖的问题,jar包版本或者jar没有下载下来的问题,因为同一个项目别人电脑可以正常启动,但是自己的电脑上就启动报错,分析只有跟每个人本地maven仓库有关。 2.我的这次的问题分析:是jar包版本问题,而不是jar没有下载下来导致的,因为如果是jar没有下载好的话,启动项目的时候可以通过Eclispe中Problems窗口进行查看,上面会提示那个jar包依赖没有下载好,这次我的问题在Problems窗口并没有看到此等报错信息,所以启动项目通过console窗口看到UnsatisfiedDependencyException,NoClassDefFoun等信息报错,判断是jar包版本问题,具体控制台报错信息如下: Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'jwtAuthenticationTokenFilter': Unsatisfied dependency expressed through field 'tokenService'; nested exception is org

函数二

孤街浪徒 提交于 2020-03-07 20:45:03
函数二 """ - 变量作用域 - 多函数程序执行流程 - 函数的返回值 - 函数的参数 - 拆包和交换两个变量的值 - 引用 - 可变和不可变类型 """ 一. 变量作用域 """ 变量生效的范围: 局部变量 全局变量 """ 1.局部变量 """ 定义在函数体内部的变量,即只在函数体内部生效 """ def testA ( ) : a = 100 print ( a ) testA ( ) # 100 print ( a ) # 报错:name 'a' is not defined 2.全局变量 """ 在函数体内、外都能生效的变量 函数修改变量a的值为200 `testB`函数内部的`a = 200`是定义了一个局部变量 在函数体内部修改全局变量a,加声明global """ a = 100 # 定义全局变量a def testA ( ) : print ( a ) # 访问全局变量a,并打印变量a存储的数据 testA ( ) # 100 def testB ( ) : a = 200 # 此a是局部变量 print ( a ) testB ( ) # 200 print ( f '全局变量a = {a}' ) # 全局变量a = 100 def testc ( ) : global a # global 关键字声明a是全局变量 a = 200 print ( a )

第 5 章 自动化测试模型 - Selenium3 自动化测试

雨燕双飞 提交于 2020-03-07 19:55:45
在介绍自动化测试模型之前 ,我们先来了解库 、框架和工具之间的区别 。 5.1 基本概念 1.库 库的英文单词是 Library,库是由代码集合成的一个产品,可供程序员调用。面向对象的代码组织形成的库叫类库,面向过程的代码组织形成的库叫函数库。 从这个角度看,第 4 章介绍的 WebDriver 就属于库的范畴,因为它提供了一组操作 Web 页面的类与方法,所以可以称它为 Web 自动化测试库。 2.框架 框架的英文单词是 Framework,框架是为解决一个或一类问题而开发的产品,用户一般只需使用框架提供的类或函数,即可实现全部功能。 从这个角度看,unittest 框架(第 6 章)主要用于测试用例的组织和执行,以及测试结果的生成。因为它的主要任务就是帮助我们完成测试工作,所以通常称它为测试框架。 3.工具 工具的英文单词是 Tools,工具与框架所做的事情类似,只是工具提供了更高层次的封装,屏蔽了底层的代码,提供了单独的操作界面供用户使用。 例如,UFT(QTP)、Katalon 就属于自动化测试工具。 5.2 自动化测试模型 自动化测试模型可分为线性测试、模块化与类库、数据驱动测试和关键字驱动测试,下面分别介绍这几种自动化测试模型的特点。 1.线性测试 通过录制或编写对应用程序的操作步骤会产生相应的线性脚本,每个线性脚本相对独立,且不产生依赖与调用