linuxcoming 发布的文章

什么是事务?

事务就是一组原子性的操作,或者说一个独立的工作单元。如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有语句都不会执行。也就是说,事务中的操作要么全部成功,要么全部失败。系统必须通过严格的ACID测试,否则空谈事物的概念是不够的。

事务最经典也经常被拿出来说例子就是转账了,相信大家也都了解,这里就不再说一遍了.

事物的四大特性(ACID)

事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持久性( Durability )。这四个特性简称为 ACID 特性。

  • 原子性。事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做
  • 一致性。事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是 不一致的状态。
  • 隔离性。一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
  • 持久性。 指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。

- 阅读剩余部分 -

存储引擎

MySQL不同于其他数据库,它有存储引擎这个概念,可以让我们灵活地在实际存储环境中采用最优的存储引擎,最常用的引擎是InnoDB与MyISAM。

1.查看MySQL提供的所有存储引擎

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set

- 阅读剩余部分 -

某些情况下,我们需要通过代理才能访问特定网络环境下的git资源,git支持代理配置, 支持 http(s), SOCKS4/SOCKS5.

HTTP(S)

HTTP 代理配置格式如下:

git config --global http.proxy http://[proxy]:[port]

实际环境下, 其实我们大多数情况下,并不需要全部git资源都需要通过代理访问, 仅仅某些特定的git库需要通过代理设置,针对特定域名的代理配置就更有实际意义.

git config --global http.[URL].proxy  http://[proxy]:[port]

- 阅读剩余部分 -

JVM概述

JVM是Java Virtual Machine(Java 虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

Java语言的一个非常重要的特点就是平台无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。

JVM总体上是由类装载子系统(ClassLoader)、运行时数据区、执行引擎、垃圾收集这四个部分组成。其中我们最为关注的运行时数据区,也就是JVM的内存部分则是由方法区(Method Area)、JAVA堆(Java Heap)、虚拟机栈(JVM Stack)、程序计数器、本地方法栈(Native Method Stack)这几部分组成。

JVM体系结构

jvm

- 阅读剩余部分 -

对于研发人员来说,大多数时候都需要跟踪 Linux 的启动过程,用于快速诊断内核启动流程和服务启动流程.Ubuntu 默认安装情况下,是开启了图形界面启动,正式的称呼为 Splash Screen.

要关闭 Splash Screen,需要更新 Grub 的启动配置信息.

Grub2 环境

在 Grub 2 版本下,Grub 的默认配置文件信息在 /etc/default/grub 文件中.编辑 /etc/default/grub 文件:

sudo vim /etc/default/grub

- 阅读剩余部分 -

MegaCli是一款管理维护硬件RAID软件,可以查看当前raid卡的所有信息:raid卡的型号,raid的阵列类型,raid的磁盘状态;可以对raid进行管理:在线添加磁盘,创建磁盘阵列、删除阵列等。MegaCli是LSI公司官方提供的SCSI卡管理工具。由于被收购变成了现在的Broadcom,所以现在想下载MegaCli,需要去Broadcom官网查找Legacy产品支持,搜索MegaRAID。

MegaCli安装

wget ftp://download2.boulder.ibm.com/ecc/sar/CMA/XSA/ibm_utl_sraidmr_megacli-8.00.48_linux_32-64.zip
unzip ibm_utl_sraidmr_megacli-8.00.48_linux_32-64.zip
cd linux
rpm -ivh Lib_Utils-1.00-09.noarch.rpm  MegaCli-8.00.48-1.i386.rpm
或
rpm -ivh Lib_Utils-1.00-09.noarch.rpm  MegaCli-8.00.48-1.i386.rpm --replacefiles

- 阅读剩余部分 -

在 Git 上工作的时候,你也许会由于某种原因想要修订你的提交历史。Git 的一个卓越之处就是它允许你在最后可能的时刻再作决定。你可以在你即将提交暂存区时决定什么文件归入哪一次提交,你可以使用 stash 命令来决定你暂时搁置的工作,你可以重写已经发生的提交以使它们看起来是另外一种样子。这个包括改变提交的次序、改变说明或者修改提交中包含的文件,将提交归并、拆分或者完全删除——这一切在你尚未开始将你的工作和别人共享前都是可以的。

- 阅读剩余部分 -

有时候,我们需要制作一些可启动的 U 盘,以便引导 Linux 或者 Windows 来方便安装操作系统或者修复系统问题.对于 Linux 上制作可启动 U 盘, 可以直接使用 dd 命令直接写入 U 盘即可完成个可启动 U 盘的制作, 如:

# dd if=./ubuntu-16.04.6-server-amd64.iso of=/dev/sdd bs=1M
  • if 指向原始的可启动的 iso 文件
  • of 指向 U 盘的设备描述符,Linux 上可以使用 fdisk -l 查看到对应设备,注意一定不能写错了, 写错了容易导致对应盘上数据被擦除.
  • bs 为设置的读写缓存大小.

- 阅读剩余部分 -