linux test disk io

linux test disk io time dd if=/dev/zero of=test.dbf bs=8k count=300000 oflag=direct http://blog.csdn.net/zqtsx/article/details/25487185

2018-02-07 · 1 min · 12 words · -

Java string hashing in Go

Java string hashing in Go https://www.manniwood.com/2016_03_20/fun_with_java_string_hashing.html func ActualHash(s string) int32 { var h int32 for i := 0; i < len(s); i++ { h = 31*h + int32(s[i]) } return h }

2018-01-31 · 1 min · 32 words · -

ansible create file

ansible create file - name: ensure file exists copy: content: "" dest: /etc/nologin force: no group: sys owner: root mode: 0555 https://stackoverflow.com/questions/28347717/how-to-create-an-empty-file-with-ansible

2018-01-25 · 1 min · 22 words · -

linux network

linux network https://segmentfault.com/a/1190000008836467 https://segmentfault.com/a/1190000008926093 https://segmentfault.com/a/1190000009249039

2018-01-22 · 1 min · 5 words · -

REST

REST REST Representational State Transfer

2018-01-22 · 1 min · 5 words · -

隧道协议

隧道协议 隧道技术的实质是用一种网络层的协议来传输另一种网络层协议,其基本功能是封装和加密,主要利用网络隧道来实现。 https://en.wikipedia.org/wiki/Tunneling_protocol https://baike.baidu.com/item/%E9%9A%A7%E9%81%93%E5%8D%8F%E8%AE%AE/5927649

2018-01-20 · 1 min · 4 words · -

filebeat

filebeat elasticsearch output 配置索引 vim /etc/filebeat/filebeat.yml setup.template.name: "filebeat-" setup.template.pattern: "filebeat-*" output.elasticsearch: hosts: ["http://192.168.6.8:9200"] index: "filebeat-%{+yyyy.MM.dd}" sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch Create a file with a .repo extension (for example, elastic.repo) in your /etc/yum.repos.d/ directory and add the following lines: [elastic-6.x] name=Elastic repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md Your repository is ready to use. For example, you can install Filebeat by running: sudo yum install filebeat To configure the Beat to start automatically during boot, run: ...

2018-01-19 · 1 min · 82 words · -

logstash

logstash /etc/logstash/conf.d/logstash.conf input { redis { id => "system-log" data_type=>"list" host=>"127.0.0.1" port=>"6379" key=>"system-log" } redis { id => "app-log" data_type=>"list" host=>"127.0.0.1" port=>"6379" key=>"app-log" } } output { if "app-log" in [tags] { elasticsearch { id => "elk-es-app" hosts => "127.0.0.1:9200" index => "logstash-app-log-%{+YYYY.MM.dd}" } }else{ elasticsearch { id => "elk-es-sys" hosts => "127.0.0.1:9200" index => "logstash-sys-log-%{+YYYY.MM.dd}" } } }

2018-01-18 · 1 min · 59 words · -

linux 内存盘 tmpfs

linux 内存盘 tmpfs # archlinux tmp dir resize sudo mount -o remount,size=10G,noatime /tmp mount tmpfs /tmp -t tmpfs -o size=1024m 把内存当硬盘, 提速你的 linux 系统 场景: 电脑内存太大用不了那么多, 空着浪费, 所以利用起来。内存读写速度高用来缓存或者编译, 甚至存临时文件最好不过了~~ Windows 下有一种叫法叫做内存盘, Linux 自然也有, 看了 Linux 中 ramdisk, tmpfs, ramfs 比较与说明这篇文章后, 决定使用 tmpfs 文件系统。 关于 tmpfs和VM linux 的内存 (VM) ,包括 ram和 swap两部分。 ram 就是你的物理内存, swap 就是在装系统的时候划分的swap分区(在win下叫做页面文件,默认位于C:\pagefiles.sys)。 VM也是程序所能使用的最大内存上限,tmpfs本质上也是VM,tmpfs划出VM的部分页面作为一个文件系统. 关于 tmpfs 和 ramdisk linux 下的 ramdisk 是由内核提供的, 要使用之, mount 命令挂载即可。不需要第三方工具。但因为它会被视为块设备, 所以仍然需要格式化该文件系统。 ramdisk 一旦创建就会占用固定大小的物理内存, tmpfs则是动态分配。 ...

2018-01-16 · 1 min · 121 words · -

微内核 宏内核

微内核 宏内核 微内核 Micro Kernel 微内核: 功能被划分成独立的过程,过程间通过IPC进行通信。模块化程度高,一个服务失效不会影响另外一个服务。 在微内核中,大部分内核都作为独立的进程在特权状态下运行,它们通过消息传递进行通讯。在典型情况下,每个概念模块都有一个进程。因此,如果在设计中有一个系统调用模块,那么就必然有一个相应的进程来接收系统调用,并和能够执行系统调用的其它进程 (或模块) 通讯以完成所需任务。 在这些设计中,微内核部分经常只不过是一个消息转发站: 当系统调用模块要给文件系统模块发送消息时,消息直接通过内核转发。这种方式有助于实现模块间的隔离。 (某些时候,模块也可以直接给其它模块传递消息。) 在一些微内核的设计中,更多的功能,如I/O等,也都被封装在内核中了。但是最根本的思想还是要保持微内核尽量小,这样只需要把微内核本身进行移植就可以完成将整个内核移植到新的平台上。其它模块都只依赖于微内核或其它模块,并不直接直接依赖硬件。 微内核设计的一个优点是在不影响系统其它部分的情况下,用更高效的实现代替现有文件系统模块的工作将会更加容易。我们甚至可以在系统运行时将开发出的新系统模块或者需要替换现有模块的模块直接而且迅速的加入系统。另外一个优点是不需要的模块将不会被加载到内存中,因此微内核就可以更有效的利用内存。 宏内核 Monolithic Kernel / macro kernel 单内核: 也称为宏内核。将内核从整体上作为一个大过程实现,并同时运行在一个单独的地址空间。所有的内核服务都在一个地址空间运行,相互之间直接调用函数,简单高效 单内核是个很大的进程。他的内部又能够被分为若干模块 (或是层次或其他) 。但是在运行的时候,他是个单独的二进制大映象。其模块间的通讯是通过直接调用其他模块中的函数实现的,而不是消息传递。 单内核的支持者声称微内核的消息传递开销引起了效率的损失。微内核的支持者则认为因此而增加的内核设计的灵活性和可维护性能够弥补任何损失。 微内核的系统有WindowNT,Minix,Mach,etc. 宏内核的系统有Unix,Linux,etc. https://www.zhihu.com/question/20314255 http://blog.sciencenet.cn/blog-1225851-807086.html https://segmentfault.com/a/1190000002711544

2018-01-15 · 1 min · 32 words · -

Ansible setup模块

Ansible setup模块 https://www.ipcpu.com/2016/01/ansible-setup-when/ Ansible入门setup模块和条件判断 Linux ipcpu 2年前 (2016-01-11) 5963浏览 Ansible入门setup模块和条件判断.md 一、setup模块 setup模块用于收集远程主机的一些基本信息。 而在playbook中,默认参数"gather_facts: True"的含义就是在远程主机运行setup模块,并将收集的信息记录起来。 这样在后面的playbook里面可以调用并进行一些判断和对照。 使用方法如下: [root@ansible test]$ansible all -m setup |more 211.127.129.182 | success » { “ansible_facts”: { “ansible_all_ipv4_addresses”: [ “211.127.129.182” ], “ansible_all_ipv6_addresses”: [], “ansible_architecture”: “x86_64”, “ansible_bios_date”: “09/21/2014”, “ansible_bios_version”: “6.00”, “ansible_cmdline”: { “KEYBOARDTYPE”: “pc”, “KEYTABLE”: “us”, “LANG”: “en_US.UTF-8”, OUTPUT OMITTED. 因显示篇幅过长,这列只列举一些常用项目 “ansible_all_ipv4_addresses”: [ “211.97.148.137”, “10.6.7.24” ], @这里列出了所有IPv4地址 “ansible_architecture”: “x86_64”, @操作系统架构 “ansible_distribution”: “RedHat”, “ansible_distribution_major_version”: “5”, “ansible_distribution_release”: “Tikanga”, “ansible_distribution_version”: “5.8”, @操作系统版本信息 “ansible_eth0”: { “active”: true, “device”: “eth0”, ...

2018-01-10 · 2 min · 247 words · -

ELK Stack

ELK Stack ELK ELK 是 Elasticsearch、Logstash 和 Kibana 三种软件产品的首字母缩写, 这三者都是开源软件,通常配合使用,而且又先后归于 Elastic.co 公司名下,所以被简称为 ELK Stack ELK Stack 已经成为目前最流行的集中式日志解决方案。 Elasticsearch: 分布式搜索和分析引擎,具有高可伸缩、高可靠和易管理等特点。基于 Apache Lucene 构建,能对大容量的数据进行接近实时的存储、搜索和分析操作。通常被用作某些应用的基础搜索引擎,使其具有复杂的搜索功能; Logstash: 数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置; Kibana: 数据分析和可视化平台。通常与 Elasticsearch 配合使用,对其中数据进行搜索、分析和以统计图表的方式展示; Filebeat: ELK 协议栈的新成员,一个轻量级开源日志文件数据搜集器,基于 Logstash-Forwarder 源代码开发,是对它的替代。在需要采集日志数据的 server 上安装 Filebeat,并指定日志目录或日志文件后,Filebeat 就能读取数据,迅速发送到 Logstash 进行解析,亦或直接发送到 Elasticsearch 进行集中式存储和分析。 Grok 是 Logstash 最重要的插件。你可以在 grok 里预定义好命名正则表达式,在稍后(grok参数或者其他正则表达式里)引用它。 https://www.ibm.com/developerworks/cn/opensource/os-cn-elk-filebeat/index.html https://doc.yonyoucloud.com/doc/logstash-best-practice-cn/index.html http://soft.dog/2015/12/24/beats-basic/#section

2018-01-10 · 1 min · 50 words · -

chkconfig

chkconfig chkconfig --list # 如果这个服务尚未被添加到 chkconfig 列表中,则现需要使用 –-add 参数将其添加进去 chkconfig –-add postfix # 比如要将MySQLd设置为开机自动启动 chkconfig MySQLd on # 取消 postfix 的自动启动 chkconfig postfix off https://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796873.html chkconfig命令主要用来更新 (启动或停止) 和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。 使用语法: chkconfig [-add][-del][-list][系统服务] 或 chkconfig [-level <等级代号>][系统服务][on/off/reset] chkconfig在没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务是否在当前运行级启动。如果是,返回true,否则返回false。如果在服务名后面指定了on,off或者reset,那么chkconfi 会改变指定服务的启动信息。on和off分别指服务被启动和停止,reset指重置服务的启动信息,无论有问题的初始化脚本指定了什么。on和off开关,系统默认只对运行级3,4,5有效,但是reset可以对所有运行级有效。 参数用法: -add 增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。 -del 删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。 -level<等级代号> 指定读系统服务要在哪一个执行等级中开启或关毕。 等级0表示: 表示关机 等级1表示: 单用户模式 等级2表示: 无网络连接的多用户命令行模式 等级3表示: 有网络连接的多用户命令行模式 等级4表示: 不可用 等级5表示: 带图形界面的多用户模式 等级6表示: 重新启动 需要说明的是,level选项可以指定要查看的运行级而不一定是当前运行级。对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。 chkconfig --list [name]: 显示所有运行级系统服务的运行状态信息 (on或off) 。如果指定了name,那么只显示指定的服务在不同运行级的状态。 chkconfig --add name: 增加一项新的服务。chkconfig确保每个运行级有一项启动(S)或者杀死(K)入口。如有缺少,则会从缺省的init脚本自动建立。 chkconfig --del name: 删除服务,并把相关符号连接从/etc/rc[0-6].d删除。 chkconfig [--level levels] name: 设置某一服务在指定的运行级是被启动,停止还是重置。 http://www.edbiji.com/doccenter/showdoc/78/nav/994.html

2018-01-10 · 1 min · 79 words · -

golang pdf,excel

golang pdf,excel excel https://github.com/360EntSecGroup-Skylar/excelize https://github.com/jung-kurt/gofpdf

2018-01-08 · 1 min · 5 words · -

itext commants, annotation

itext commants, annotation https://gist.github.com/i000313/6372210

2018-01-07 · 1 min · 4 words · -

memcache basic,command

memcache basic,command run as docker podman run \ --name memcache \ -d \ -p 11211:11211 \ -v /etc/localtime:/etc/localtime:ro \ memcached -m 16 connect telnet HOST PORT set set key flags exptime bytes [noreply] value # 参数说明如下: key: 键值 key-value 结构中的 key,用于查找缓存值。 flags: 可以包括键值对的整型参数, 客户机使用它存储关于键值对的额外信息 exptime: 在缓存中保存键值对的时间长度 (以秒为单位,0 表示永远) bytes: 在缓存中存储的字节数 noreply (可选) : 该参数告知服务器不需要返回数据 value: 存储的值 (始终位于第二行) (可直接理解为key-value结构中的value) ### 示例 set foo 0 0 3 bar #获取存储在 key(键) 中的 value(数据值) ,如果 key 不存在,则返回空。 get key # 删除key delete <key> #输出各个slab中的item的数目和最老item的年龄(最后一次访问距离现在的秒数) . stats items # 根据<slab_id>输出相同的<slab_id>中的item信息。是输出的个数,当为0是输出所有的item。 stats cachedump <slab_id> #显示各个slab的信息,包括chunk的大小、数目、使用情况等。 stats slabs Memcached 连接 ...

2018-01-05 · 1 min · 167 words · -

多源复制

多源复制 MySQL 5.7多源复制实践 什么是多源复制 首先,我们需要清楚几种常见的复制模式: 一主一从 一主多从 级联复制 multi-master MySQL 5.7 之前只能实现一主一从、一主多从或者多主多从的复制。如果想实现多主一从的复制,只能使用 MariaDB,但是 MariaDB 又与官方的 MySQL 版本不兼容。 MySQL 5.7 开始支持了多主一从的复制方式,也就是多源复制。MySQL 5.7 版本相比之前的版本,无论在功能还是性能、安全等方面都已经有不少的提升。 首先,我们需要清楚 multi-master 与 multi-source 复制不是一样的。multi-master 复制通常是环形复制,你可以在任意主机上将数据复制给其他主机。 MySQL multi-source 是不同的。简单的说,多源复制就是将多个主库同步到一个从库上面,从而增加从的利用率,节省了机器。如下图:

2017-12-21 · 1 min · 31 words · -

redis pub sub

redis pub sub PubSub 的缺点 尽管 Redis 实现了 PubSub 模式来达到了 多播消息队列 的目的,但在实际的消息队列的领域,几乎 找不到特别合适的场景,因为它的缺点十分明显: 没有 Ack 机制,也不保证数据的连续: PubSub 的生产者传递过来一个消息,Redis 会直接找到相应的消费者传递过去。如果没有一个消费者,那么消息会被直接丢弃。如果开始有三个消费者,其中一个突然挂掉了,过了一会儿等它再重连时,那么重连期间的消息对于这个消费者来说就彻底丢失了。 不持久化消息: 如果 Redis 停机重启,PubSub 的消息是不会持久化的,毕竟 Redis 宕机就相当于一个消费者都没有,所有的消息都会被直接丢弃。 基于上述缺点,Redis 的作者甚至单独开启了一个 Disque 的项目来专门用来做多播消息队列,不过该项目目前好像都没有成熟。不过后来在 2018 年 6 月,Redis 5.0 新增了 Stream 数据结构,这个功能给 Redis 带来了 持久化消息队列,从此 PubSub 作为消息队列的功能可以说是就消失了 redis-cli -h redis.wiloon.com SUBSCRIBE channel0 publish channel0 message0 http://redisbook.readthedocs.io/en/latest/feature/pubsub.html 在消费者下线的情况下,生产的消息会丢失,得使用专业的消息队列如RocketMQ等。 http://blog.csdn.net/lihao21/article/details/48370687 Redis为我们提供了publish/subscribe(发布/订阅)功能。我们可以对某个channel(频道)进行subscribe(订阅),当有人在这个channel上publish(发布)消息时,redis就会通知我们,这样我们可以收到别人发布的消息。 作为Java的redis客户端,Jedis提供了publish/subscribe的接口。本文讲述如何使用Jedis来实现redis的publish/subscribe。 定义Subscriber类 Jedis定义了抽象类JedisPubSub,在这个类中,定义publish/subsribe的回调方法。通过继承JedisPubSub类并重新实现这些回调方法,当publish/subsribe事件发生时,我们可以定制自己的处理逻辑。 在以下例子中,我们定义了Subscriber类,这个类继承了JedisPubSub类,并重新实现了其中的回调方法。 Subscriber.java import redis.clients.jedis.JedisPubSub; public class Subscriber extends JedisPubSub { public Subscriber() { } public void onMessage(String channel, String message) { ...

2017-12-18 · 2 min · 407 words · -

glide

glide sudo pacman -S glide glide install https://github.com/Masterminds/glide

2017-12-18 · 1 min · 8 words · -

nc 命令检查远程端口是否打开

nc 命令检查远程端口是否打开 https://linux.cn/article-8186-1.html 使用 nc 命令检查远程端口是否打开 编译自: http://www.tecmint.com/check-remote-port-in-linux/作者: Aaron Kili 原创: LCTT https://linux.cn/article-8186-1.html译者: geekpi 本文地址: https://linux.cn/article-8186-1.html 2017-02-09 11:50 评论: 4 收藏: 5 端口是与 Linux 操作系统上的应用或进程的通讯端点的逻辑实体。在使用之前,了解目标机器上哪些端口是打开并正在运行服务是非常有用的。 我们可以使用 netstat 或其他几个 Linux 命令如 NMAP 在本地机器上轻松地列出 Linux 中的打开端口。 在本指南中,我们将向你展示如何使用简单的 netcat (简称 nc) 命令来确定远程主机上的端口是否可访问/打开。 netcat (或简称 nc) 是一个功能强大且易于使用的程序,可用于 Linux 中与 TCP、UDP 或 UNIX 域 socket 相关的任何事情。 yum install nc [在 CentOS/RHEL 中] dnf install nc [在 Fedora 22+ 中] $ sudo apt-get install netcat [在 Debian/Ubuntu 中] 我们可以使用它: 打开 TCP 连接、侦听任意 TCP 和 UDP 端口、发送 UDP 数据包、在 IPv4 和 IPv6 进行端口扫描。 ...

2017-12-16 · 1 min · 136 words · -