Linux下的计算器

bc linux

介绍

bc是一个交互式的运算命令,通过它可以实现计算器的许多高级功能,如: 乘方,不同进制之间的转换…

使用

# 一行计算多个使用`;`分割
3+4;5*2;5^2;18/4 

# 设定小数位
scale=3

# 不交互直接计算结果
$ echo "(6+3)*2" |bc
18

$ echo 15/4 |bc
3

$ echo "scale=2;15/4" |bc
3.75
继续阅读

awk实用程序

linux awk

介绍

AWK是一种为文本处理设计的编程语言,通常用作数据处理.是Unix-like系统中的标准功能.wiki

基本操作

# 输出包含word字符串的行
$ awk '/word/' file

# 对第一个字段里匹配到Ted或者ted的行进行显示
$ awk '$1 ~ /[Tt]ed/' file

# 显示不是以ly结尾的行
$ awk '$1 !~ /ly$/' file

# 显示最后一个字段
$ awk '{print $NF}' file

# 查找计数
$ awk '/Ted/{count++}END{print "Ted found " count " times."}' file
继续阅读

logback配置文件示例

log logback

概览

Logbacklog4j的继者.他是由同一个开发者在log4j的基础之上添加了一系列的优化.

Logback与log4j的比较

  • 同样的代码路径,Logback 执行更快
  • 更充分的测试
  • 原生实现了 SLF4J API(Log4J 还需要有一个中间转换层)
  • 内容更丰富的文档
  • 支持 XML 或者 Groovy 方式配置
  • 配置文件自动热加载
  • 从 IO 错误中优雅恢复
  • 自动删除日志归档
  • 自动压缩日志成为归档文件
  • 支持 Prudent 模式,使多个 JVM 进程能记录同一个日志文件
  • 支持配置文件中加入条件判断来适应不同的环境
  • 更强大的过滤器
  • 支持 SiftingAppender(可筛选 Appender)
  • 异常栈信息带有包信息
继续阅读

tmux使用笔记

shell tools

介绍

tmux是一个优秀的终端复用软件,即使非正常掉线,也能保证当前的任务运行,这一点对于远程SSH访问特别有用,网络不好的情况下仍然能保证工作现场不丢失!此外,tmux完全使用键盘控制窗口,实现窗口的切换功能。

安装

$ apt-get install tmux

# 安装完成之后运行下边的命令就会开启一个默认的tmux窗口

$ tmux

当tmux启动后会创建一个窗口(新的session),其中只有一个面板(当然你可以创建多个面板),下方有一个状态栏,包含session名字和当前窗口的编号及运行的命令的名字.

tmux使用C/S模型构建,主要包含以下单元模块:

  • server服务器。输入tmux命令时就开启了一个服务器。
  • session会话。一个服务器可以包含多个会话
  • window窗口。一个会话可以包含多个窗口。
  • pane面板。一个窗口可以包含多个面板。

效果图

继续阅读

获取ApplicationContext

spring code
public class ApplicationContextProvider implements ApplicationContextAware {
    private static ApplicationContext context;
 
    public ApplicationContext getApplicationContext() {
        return context;
    }
 
    @Override
    public void setApplicationContext(ApplicationContext ctx) {
        context = ctx;
    }
}

在applicationContext配置文件中

<bean id="applicationContextProvder" class="org.myApp.ApplicationContextProvider"/>

调用

MyBean c = ApplicationContextProvider.getApplicationContext.getBean("BeanId", MyBean.class);
继续阅读

Kafka应用应该知道的

kafka

概念

名称 解释
Broker 消息中间件处理节点,一个Kafka节点是一个broker,一个或者多个Broker可以组成一个Kafka集群
Topic Kafka根据topic对消息进行归类,发布到Kafka的消息都需要指定topic
Producer 消息生产者,向Broker中发送消息的客户端
Consumer 消息消费者,从Broker中读取消息的客户端
ConsumerGroup 每个Consumer属于一个特定的 Consumer Group,一条消息可以发送到不同的Consumer Group,但是一个ConsumerGroup中只能有一个Consumer能够消费该消息
Partition 物理概念,一个topic可以分为多个partition,每个partition内部都是有序的(为了提高IO速度)

Topic&Partition

topic为一类消息,可以被分为多个partition,在物理侧面每个partition为一个append log. 每条消息在文件中的位置成为偏移量(offset),offset为一个long型的数字,它唯一标记一条消息.每条消息被append到partition中(顺序写入磁盘,因此效率非常高,经验证顺序写入磁盘比随机写入内存效率还要高,这是kafka高吞吐率的一个保证).

# partition 的设置参数在$KAFKA_HOME/config/server.properties
num.partition=3

消息写入

发送一条消息时,可以指定消息的key,producer会根据这个key和partition机制来判断这个消息发送给哪个partition,partition机制可以通过指定producerpartition.class这一参数来指定,该class必须实现kafka.producer.Partition接口.

继续阅读