在Linux/Unix中,一般在屏幕上面看到的信息是从stdout (standard output) 或者 stderr (standard error output) 来的。许多人会问,output 就是 output,送到屏幕上不就得了,为什麼还要分成stdout 和 stderr 呢?那是因为通常在 server 的工作环境下,几乎所有的程序都是 run 在 background 的,所以呢,为了方便 debug,一般在设计程序时,就把stdout 送到/存到一个档案,把错误的信息 stderr 存到不同的档案。
哪些是正常的output呢,例如程序开始运行的时间,现在正在上线人数等等。
哪些是错误的output呢,例如无法找到使用者想要去的URL,或者信用卡认证失败等等。————————————————————————————————————————————————————有了上面这些认知后,回头来讲什麼是 > /dev/null
这是把 stdout 送到 /dev/null 里面
那什麼是 / ...
生活&旅游
未读在临产前的几周,带小满走了北京几个比较有名气的博物馆,像国家博物馆,首都博物馆,汽车博物馆等,但小满最兴奋的当属自然博物馆。由于疫情的关系,地下负一层没有开放,只能从导览图中看个大概,安慰小满说,等疫情过去了,地下一层开放了,咱们再来一次。好在恐龙馆已经开放,在预约官网看到的是恐龙馆也是暂停开放的,能看到恐龙的巨型化石,对于一心想看恐龙和化石的小满来说也是种安慰。一层主要是无脊椎动物,古哺乳动物,古爬行动物及恐龙化石的展区。二层的展区,就具象化了。植物世界,各种各样的植物标本及图片,让人感觉造物主的神奇,其中食虫草引起了小满的极大兴趣,问“妈妈,食虫草会吃人吗”,我说“食虫草只能吃下体积比较小的昆虫,人这么大个,它吃不下去“。小满若有所思的哦了一声。走进非洲就更有意思了,尽管都是些雕塑,但是特别逼真,对于小朋友来说,犹如来到了动物园,各种奇怪的非洲动物,小满会跟曾在动物园里看到的那些动物作对比,老母亲感到逛博物馆的目的就达到了。最后是人类起源,进化各个阶段的化石。基于有之前在国家博物馆看过人类进化化石的基础,对于再次见到远古人类的化石,小满比之前看的认真多了。从导览图可以感受到4D影院 ...
一、简介rsync 是一个常用的 Linux 应用程序,用于文件同步。
它可以在本地计算机与远程计算机之间,或者两个本地目录之间同步文件(但不支持两台远程计算机之间的同步)。它也可以当作文件复制工具,替代cp和mv命令。
它名称里面的r指的是 remote,rsync 其实就是”远程同步”(remote sync)的意思。与其他文件传输工具(如 FTP 或 scp)不同,rsync 的最大特点是会检查发送方和接收方已有的文件,仅传输有变动的部分(默认规则是文件大小或修改时间有变动)。
二、安装如果本机或者远程计算机没有安装 rsync,可以用下面的命令安装。
12345678910# Debian$ sudo apt-get install rsync# Red Hat$ sudo yum install rsync# Arch Linux$ sudo pacman -S rsync
注意,传输的双方都必须安装 rsync。
三、基本用法3.1 -r 参数本机使用 rsync 命令时,可以作为cp和mv命令的替代方法,将源目录同步到目标目录。
123$ rsync -r sour ...
散列表理想状态下,散列表就是一个包含关键字的固定大小的数组,通过使用散列函数,将关键字映射到数组的不同位置。下面是理想散列表的一个示意图:
在理想状态下,哈希函数可以将关键字均匀的分散到数组的不同位置,不会出现两个关键字散列值相同(假设关键字数量小于数组的大小)的情况。但是在实际使用中,经常会出现多个关键字散列值相同的情况(被映射到数组的同一个位置),我们将这种情况称为散列冲突。为了解决散列冲突,主要采用下面两种方式:
分离链表法(separate chaining)
开放定址法(open addressing)
分离链表法分散链表法使用链表解决冲突,将散列值相同的元素都保存到一个链表中。当查询的时候,首先找到元素所在的链表,然后遍历链表查找对应的元素。下面是一个示意图:
开放定址法开放定址法不会创建链表,当关键字散列到的数组单元已经被另外一个关键字占用的时候,就会尝试在数组中寻找其他的单元,直到找到一个空的单元。探测数组空单元的方式有很多,这里介绍一种最简单的 – 线性探测法。线性探测法就是从冲突的数组单元开始,依次往后搜索空单元,如果到数组尾部,再从头开始搜索(环形查找)。如 ...
只有在主库上执行才能有效抵输出:
具体文档如下:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869# 在127.0.0.1:3306主库上执行tmp@127.0.0.1 ((none))> show variables like '%server%';+---------------------------------+--------------------------------------+| Variable_name | Value |+---------------------------------+--------------------------------------+| character_set_server ...
我写了一个服务器程序,在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试. 但是服务器总是莫名退出,没有core文件.
最后问题确定为, 对一个对端已经关闭的socket调用两次write, 第二次将会生成SIGPIPE信号, 该信号默认结束进程.
具体的分析可以结合TCP的”四次握手”关闭. TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各负责一条. 当对端调用close时, 虽然本意是关闭整个两条信道, 但本端只是收到FIN包. 按照TCP协议的语义, 表示对端只是关闭了其所负责的那一条单工信道, 仍然可以继续接收数据. 也就是说, 因为TCP协议的限制, 一个端点无法获知对端的socket是调用了close还是shutdown.
对一个已经收到FIN包的socket调用read方法, 如果接收缓冲已空, 则返回0, 这就是常说的表示连接关闭. 但第一次对其调用write方法时, 如果发送缓冲没问题, 会返回正确写入(发送). 但发送的报文会导致对端发送RST报文, 因为对端的socket已经调用了close, 完全关闭, 既不 ...
前言服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态LB机制就不再适用了,需要引入额外的组件来管理微服务提供者的注册与发现,而这个组件就是服务注册中心。
CAP理论CAP理论是分布式架构中重要理论
一致性(Consistency) (所有节点在同一时间具有相同的数据)
可用性(Availability) (保证每个请求不管成功或者失败都有响应)
分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)
关于
P的理解,我觉得是在整个系统中某个部分,挂掉了,或者宕机了,并不影响整个系统的运作或者说使用,
而可用性是,某个系统的某个节点挂了,但是并不影响系统的接受或者发出请求,CAP 不可能都取,只能取其中2个
原因是
如果C是第一需求的话,那么会影响A的性能,因为要数据同步,不然请求结果会有差异,但是数据同步会 ...
字节码增强技术-Byte Buddy为什么需要在运行时生成代码?Java 是一个强类型语言系统,要求变量和对象都有一个确定的类型,不兼容类型赋值都会造成转换异常,通常情况下这种错误都会被编译器检查出来,如此严格的类型在大多数情况下是比较令人满意的,这对构建具有非常强可读性和稳定性的应用有很大的帮助,这也是 Java 能在企业编程中的普及的一个原因之一。然而,因为起强类型的检查,限制了其他领域语言应用范围。比如在编写一个框架是,通常我们并不知道应用程序定义的类型,因为当这个库被编译时,我们还不知道这些类型,为了能在这种情况下能调用或者访问应用程序的方法或者变量,Java 类库提供了一套反射 API。使用这套反射 API,我们就可以反省为知类型,进而调用方法或者访问属性。但是,Java 反射有如下缺点:
需要执行一个相当昂贵的方法查找来获取描述特定方法的对象,因此,相比硬编码的方法调用,使用 反射 API 非常慢。
反射 API 能绕过类型安全检查,可能会因为使用不当照成意想不到的问题,这样就错失了 Java 编程语言的一大特性。
简介正如官网说的:Byte Buddy 是一个代码生成 ...
简介Antlr4 是一款强大的语法生成器工具,可用于读取、处理、执行和翻译结构化的文本或二进制文件。基本上是当前 Java 语言中使用最为广泛的语法生成器工具。Twitter搜索使用ANTLR进行语法分析,每天处理超过20亿次查询;Hadoop生态系统中的Hive、Pig、数据仓库和分析系统所使用的语言都用到了ANTLR;Lex Machina将ANTLR用于分析法律文本;Oracle公司在SQL开发者IDE和迁移工具中使用了ANTLR;NetBeans公司的IDE使用ANTLR来解析C++;Hibernate对象-关系映射框架(ORM)使用ANTLR来处理HQL语言。参考2
Antlr4 提供了大量的官方 grammar 示例,包含了各种常见语言,非常全面,提供了非常全面的学习教材。
本文简单介绍一个示例,实现一个简单的计算器功能,这个例子在很多资料中都作为第一个示例,可以算是 Antlr4 的 HelloWorld。
基本概念语法分析器(parser)是用来识别语言的程序,本身包含两个部分:词法分析器(lexer)和语法分析器(parser)。词法分析阶段主要解决的关键词以及各种标 ...
值得学习的C语言开源项目- 1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。
下载链接:http://home.tiscali.cz/~cz210552/webbench.html
- 2. Tinyhttpdtinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Http Server 的本质。
下载链接:http://sourceforge.net/projects/tinyhttpd/
- 3. cJSONcJSON是C语言中的一个JSON编解码器,非常轻量级,C文件只有500多行,速度也非常理想。
cJSON也存在几个弱点,虽然功能不是非常强大,但cJSON的小身板和速度是最值得赞赏的。其代码被非常好地维护着,结构也简 ...

