Blog

Linux系统性能监控:CPU工具整理

2014-12-11
Linux

vmstat #

vmstat即虚拟内存统计,但用它不仅仅是可以获取系统的虚拟内存性能信息,还能获取整个系统性能的大概信息。

当我们用vmstat获取系统的CPU性能信息时命令格式如下:

vmstat [-n] [-s] [delay [count]]

  • -n表示当按时间间隔采样显示的数据在初始显示行标题后,后边的数据行不再重复显示标题
  • -s汇总显示统计数据
  • delay采样的时间间隔,单位秒
  • count采样次数

例如:

...

Systemd命令整理

2014-12-10
Linux

查看开机启动项:

1systemctl list-unit-files --type=service | grep enabled

MySQL实用整理

2014-11-10
Mysql

查看锁表线程 #

使用下面的命令查看哪个表被锁了:

1show open tables where in_use>0;
2+----------+-------+--------+-------------+
3| Database | Table | In_use | Name_locked |
4+------------------+--------+-------------+
5| test  | t_user   |      0 |           0 | 
6| test  | t_role   |      4 |           0 | 
  • In_use表示有多少线程正在使用该表,这些线程有可能已经给该表加锁,或者正在等待或得锁给该表加锁
  • Name_locked是否表名称被锁定,表名称被锁定一般发生在rename table时。

结合show processlist可查看哪个线程锁表了:

...

CSS中的定位属性position详解

2014-03-07

1.理解文档流和定位(position) #

文档流是指文档中的盒子布局按html标签的顺序按从左到右、从上到下的顺序排列,其中每个块级元素独占一行,行内元素在一行之内按从左到右属性排列,每个盒子根据盒子模型都占据着自己的位置。

定位是指可以使用css的position属性来设置元素的定位类型,从而改变元素在文档流中的位置。

...

Linux系统磁盘与文件系统管理

2014-02-03
Linux

磁盘的分区、格式化、挂载 #

使用fdisk -l列出系统上所有的磁盘分区信息。它会显示您系统中的硬盘设备以及每个设备上的分区情况,包括分区的起始扇区、大小、文件系统类型等。

 1fdisk -l
 2Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors
 3Units: sectors of 1 * 512 = 512 bytes
 4Sector size (logical/physical): 512 bytes / 512 bytes
 5I/O size (minimum/optimal): 512 bytes / 512 bytes
 6Disklabel type: dos
 7Disk identifier: 0xa26fc47b
 8
 9Device     Boot   Start      End  Sectors Size Id Type
10/dev/vda1          2048  4194303  4192256   2G  e W95 FAT16 (LBA)
11/dev/vda2       4194304 83886079 79691776  38G 83 Linux
12
13
14Disk /dev/vdb: 8 GiB, 8589934592 bytes, 16777216 sectors
15Units: sectors of 1 * 512 = 512 bytes
16Sector size (logical/physical): 512 bytes / 512 bytes
17I/O size (minimum/optimal): 512 bytes / 512 bytes

使用df -h命令显示系统上各个文件系统的磁盘使用情况和剩余空间。它会显示文件系统的挂载点、总容量、已用空间、剩余空间和使用率等信息。

...

Gradle的环境变量

2012-12-12
Gradle

对于gradle命令当前支持以下两个环境变量:

  • GRADLE_OPTS
  • GRADLE_USER_HOME

GRADLE_OPTS #

GRADLE_OPTS指定Gradle JVM Options。

例如:

1GRADLE_OPTS=-Xms256m -Xmx512m -XX:MaxNewSize=256m

远程调试:

1GRADLE_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

GRADLE_USER_HOME #

GRADLE_USER_HOME指定Gradle用户主目录位置,即.gradle目录位置。

例如:

1GRADLE_USER_HOME=E:\.gradle

Gralde用户主目录默认位置是System.getProperty("user.home")/.gradle

...

Gradle实用整理

2012-12-11
Gradle

使用账号密码访问受保护的maven仓库 #

当nexus中禁用了匿名用户(Anonymous)对仓库的访问时,我们需要在构建脚本中指定访问仓库的账号和密码。

1repositories {
2    maven {
3       url "http://192.168.1.10:8081/nexus/content/repositories/releases/"
4       credentials {
5       		username 'user'
6       		password 'password'
7       }
8    }
9}

上门的配置虽然能达到目的,但是用户名和密码是明文写到构建脚本中的,构建脚本需要被提交到版本管理系统中,这显然是不安全的,而且不支持针对每个开发人员使用不同的用户和密码。 更进一步,我们可以将用户名密码写到GRADLE_USER_HOME\gradle.properties中:

...

使用RabbitMQ Java Client

2012-06-03
Rabbitmq

Publishing Messages #

  1. 连接到Broker
  2. 获取Channel
  3. 声明一个Exchange
  4. 创建一个Message
  5. 发布这个Message
  6. 关闭Channel
  7. 关闭Connection
 1ConnectionFactory connectionFactory = new ConnectionFactory();
 2// AMQP URI amqp://userName:password@hostName:portNumber/virtualHost"
 3connectionFactory.setUri("amqp://test:[email protected]:5672/demo");
 4Connection connection = connectionFactory.newConnection();
 5Channel channel = connection.createChannel();
 6channel.exchangeDeclare("first-exchange", "direct", true);
 7byte[] msgBody = "Hello, World!".getBytes("UTF-8");
 8channel.basicPublish("first-exchange", "helloRoutingKey", null, msgBody);
 9channel.close();
10connection.close();

Receiving Messages by Subscription #

 1public static void main(String[] args) throws Exception {
 2    ConnectionFactory connectionFactory = new ConnectionFactory();
 3    connectionFactory.setUri("amqp://test:[email protected]:5672/demo");
 4    Connection connection = connectionFactory.newConnection();
 5    final Channel channel = connection.createChannel();
 6    channel.exchangeDeclare("first-exchange", "direct", true);
 7    channel.queueDeclare("hello-queue", true, false, false, null);
 8    channel.queueBind("hello-queue", "first-exchange", "helloRoutingKey");
 9    channel.basicConsume("hello-queue", new DefaultConsumer(channel) {
10        @Override
11        public void handleDelivery(String consumerTag, Envelope envelope, 
12        	BasicProperties properties, byte[] body)
13            throws IOException {
14            String msg = new String(body, "UTF-8");
15            System.out.println(msg);
16            channel.basicAck(envelope.getDeliveryTag(), false);
17        }
18    });
19    Scanner scanner = new Scanner(System.in);
20    scanner.nextLine();
21    scanner.close();
22    channel.close();
23    connection.close();
24}

安装RabbitMQ

2012-06-02
Rabbitmq

RabbitMQ是一个开源的AMQP实现,服务端使用Erlang语言编写,支持多种客户端, 如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOPMP等。

构建和安装Erlang #

提前安装所需依赖:

...

AMQP协议简介

2012-06-01
Rabbitmq

简介 #

AMQP即Advanced Message Queuing Protocol,高级消息队列协议,是面向消息中间件设计的应用层协议的一个开放标准。 它的主要特点是面向消息、队列、路由(包括点对点和发布/订阅)]、可靠性和安全。

AMQP允许来自不同供应商的消息生产者和消费者实现真正的互操作扩展,就如同SMTP、HTTP、FTP等协议采用的方式一样。而此前对于消息中间件的标准化努力则集中在API层面上(比如JMS),且没有提供互操作性的途径。不同于JMS的仅仅定义API,AMQP是一个线路级的协议——它描述了通过网络传输的字节流的数据格式。因此,遵从这个协议的任何语言编写的工具均可以操作AMQP消息。

...

© 2024 青蛙小白