log

Node.js 事件循环

风格不统一 提交于 2020-03-09 12:39:40
Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高。 Node.js 几乎每一个 API 都是支持回调函数的。 Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数。 Node.js 有多个内置的事件,我们可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件 //引入event模块 var events=require("events"); //创建eventEmitter对象 var eventEmitter=new events.EventEmitter(); var connectHandler=function connected(){ console.log("连接成功"); //触发事件 eventEmitter.emit("data_received"); } //绑定事件及处理程序 eventEmitter.on("connection",connectHandler) //绑定data_received eventEmitter.on("data_received",function(){ console.log("数据接收成功"); }) /

2.10临时文件命名与随机数2.11

六眼飞鱼酱① 提交于 2020-03-09 12:33:06
编写shell脚本时,经常需要存储临时数据,系统中最适合存储临时数据的位置/tmp(该目录中的内容在系统重启后会清空)。 1)创建临时文件 $ filename=`mktemp` $ echo $filename /tmp/tmp.8xvhkjF5fH 上面的代码创建了一个临时文件,并打印出存储在$filename中的文件名。 2)创建临时目录 $ dirname=`mktemp -d` $ echo $dirname tmp.NI8xzW7VRX 上面的代码创建了一个临时目录,并打印出存储在$dirname中的目录名 3)如果想仅仅想生成文件名,又不希望创建实际的文件或目录, $ tmpfile=`mktemp -u` $ echo $tmpfile /tmp/tmp.RsGmilRpcT 文件名存储在$tmpfile中,但并没有创建对应的文件 4)根据模板创建临时文件名 $ mktemp test.XXX text.2c 工作原理:mktemp它生成一个临时文件并返回其文件名(如果创建的是目录,返回目录名),如果提供了定制模板,X会被随机的字符(数字或字母)替换,注意,mktemp正常工作的前提是保证模板中至少要有3个X。 2.11分割文件和数据 1)工作原理 假设有一个文件data.file,其大小为100KB,将它分割成多个大小为10KB的文件,如下 $ split -b

OSSIM架构与组成综述

瘦欲@ 提交于 2020-03-09 10:11:28
OSSIM架构与组成综述 OSSIM布道师 李晨光 一、背景 如果运维工程师手里没有高效的管理工具支持,就很难快速处理故障。市面上有很多运维监控工具,例如商业版的 Solarwinds、ManageEngine以及WhatsUp等,开源的MRTG、Nagios、Cacti、Zabbix、OpenNMS、Ganglia等。 由于它们彼此之间所生成的数据没有关联,无法共享,即便部署了这些工具,很多运维人员并没有从中真正解脱出来,成千上万条警告信息堆积在一起,很难识别问题的根源,结果被海量日志所淹没,无法解脱出来。 另外在传统运维环境中,当查看各种监控系统时需要多次登录,查看繁多的界面,更新管理绝大多数工作主要是手工操作,即使一个简单的系统变更,需要运维人员逐一登录系统,若遇到问题,管理员便会在各种平台间来回查询,或靠人肉方式搜索故障关键词,不断的重复着这种工作方式。企业需要一种集成安全的运维平台,满足专业化、标准化和流程化的需要来实现运维工作的自动化管理,通过关联分析及时发现故障隐患,这种优秀的开源平台叫做OSSIM即开源安全信息管理系统(Open source Security Information Management),下面让我们认识一下OSSIM的基本结构和组成 从架构上来看,OSSIM系统是一个开放的框架,它的核心价值在于创新的集成各开源软件之所长,它里面的模块既有C

MySQL事务的实现原理

扶醉桌前 提交于 2020-03-09 08:47:27
天天用事务,但是你知道MySQL事务的实现原理吗? 1. 开篇 相信大家都用过事务以及了解他的特点,如原子性(Atomicity),一致性(Consistency),隔离型(Isolation)以及持久性(Durability)等。今天想跟大家一起研究下事务内部到底是怎么实现的,在讲解前我想先抛出个问题: 事务想要做到什么效果? 按我理解,无非是要做到可靠性以及并发处理。 可靠性:数据库要保证当insert或update操作时抛异常或者数据库crash的时候需要保障数据的操作前后的一致,想要做到这个,我需要知道我修改之前和修改之后的状态,所以就有了undo log和redo log。 并发处理:也就是说当多个并发请求过来,并且其中有一个请求是对数据修改操作的时候会有影响,为了避免读到脏数据,所以需要对事务之间的读写进行隔离,至于隔离到啥程度得看业务系统的场景了,实现这个就得用MySQL 的隔离级别。 下面我首先讲实现事务功能的三个技术,分别是日志文件(redo log 和 undo log),锁技术以及MVCC,然后再讲事务的实现原理,包括原子性是怎么实现的,隔离型是怎么实现的等等。最后在做一个总结,希望大家能够耐心看完 redo log与undo log介绍 mysql锁技术以及MVCC基础 事务的实现原理 总结 2 redo log 与 undo log介绍 1. redo

Android悬浮窗实现 使用WindowManager

大憨熊 提交于 2020-03-09 06:18:26
Android悬浮窗实现 使用WindowManager WindowManager介绍   通过 Context.getSystemService(Context.WINDOW_SERVICE) 可以获得 WindowManager 对象。   每一个WindowManager对象都和一个特定的 Display 绑定。   想要获取一个不同的display的WindowManager,可以用 createDisplayContext(Display) 来获取那个display的 Context ,之后再使用:    Context.getSystemService(Context.WINDOW_SERVICE) 来获取WindowManager。   使用WindowManager可以在 其他应用最上层 ,甚至 手机桌面 最上层显示窗口。   调用的是WindowManager继承自基类的 addView 方法和 removeView 方法来显示和隐藏窗口。具体见后面的实例。   另:API 17推出了 Presentation ,它将自动获取display的Context和WindowManager,可以方便地在另一个display上显示窗口。 WindowManager实现悬浮窗例子 声明权限   首先在manifest中添加如下权限: <!-- 显示顶层浮窗 -->

Android日志工具Log

空扰寡人 提交于 2020-03-09 05:43:34
Android的日志工具类是Log,属于android.util.Log包 ,这个类提供了5个方法来供我们打印日志。   ● Log.v()。用于打印最为繁琐的,意义最小的日志信息。对应级别为 verbose,是Android日志里级别最低的一种。 (顺便来认识一下单词---verbose:冗长的,啰嗦的,累赘的,我也是百度的*_*)   ● Log.d()。用于打印一些调试信息,这些信息对于调试程序和分析问题是很有帮助的。对应级别为 debug,比 verbose 高一级。   ● Log.i()。用于打印一些比较重要的数据,这些数据可以帮助分析用户行为数据。对应级别为 info,比 debug 高一级。   ● Log.w()。用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好赶快去修复出现警告的地方。对应级别 warn,比 info 高一级。   ● Log.e()。用于打印程序中的错误信息,比如程序进入到 catch 语句中。当有错误信息打印出来时,表示程序中有严重错误信息,必须尽快修复。对应级别 error,比 warn 高一级。 这五个方法,每个方法还会有不同的重载。 1 protected void onCreate(@Nullable Bundle savedInstanceState) { 2 super.onCreate

nginx编译安装及配置初窥

南楼画角 提交于 2020-03-08 23:24:10
nginx 编译安装 nginx.org download 源码包 根据需要安装对应的模块及设置相关路径,可参考nginx.org官方安装notes    1 ~]# yum groupinstall "Development Tools" "Server Platform Development" 2 ~]# yum install pcre-devel openssl-devel zlib-devel 3 ~]# useradd -r nginx 4 ~]# ./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_dav_module --with-http_stub_status_module --with-threads --with

Python读取log文件报错“UnicodeDecodeError”

a 夏天 提交于 2020-03-08 23:23:15
问题描述: 写了一个读取log文件的Python脚本: # -*- coding:utf-8 -*- import os import numpy as np file = 'D:\pythonfile\test.log' for line in open("test.log","r"): print(line) 但是在执行时报错: 执行代码报错: Traceback (most recent call last): File "D:/pythonfile/my-test225.py", line 8, in <module> for line in open("test.log","r"): UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 6946: illegal multibyte sequence Process finished with exit code 1 报错如图: 问题原因: 这是因为日志编码格式和读取日志的解码格式不一致导致的 问题解决: 方法一,读取文件指定“encoding='UTF-8': # -*- coding:utf-8 -*- import os import numpy as np file = 'D:\pythonfile\test.log' for

Zabbix分布式监控系统

强颜欢笑 提交于 2020-03-08 22:12:07
Zabbix分布式监控系统 准备两台虚拟机,yum源使用zabbix文件夹 基础环境配置 主机名配置 # hostnamectl set-hostname zabbix-server # hostnamectl set-hostname zabbix-agent yum源配置(server) 将镜像文件和zabbix文件夹上传到/opt目录下 创建挂载目录并将镜像文件挂载到目录 # mkdir -p /opt/centos 移动目录 # mv /etc/yum.repos.d/* /media/ 编辑local.repo文件 [centos] name=centos baseurl=file:///opt/centos gpgcheck=0 enabled=1 [zabbix] name=zabbix baseurl=file:///opt/zabbix gpgcheck=0 enabled=1 安装ftp服务 # yum install -y vsftpd 编辑文件,最上面添加代码 # vi /etc/vsftpd/vsftpd.conf 启动服务 # systemctl start vsftpd 查看服务状态 # systemctl status vsftpd yum源配置(agent) 移动文件 # mv /etc/yum.repos.d/* /media/ 编辑local