分类 it 下的文章

什么是事务?

事务就是一组原子性的操作,或者说一个独立的工作单元。如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有语句都不会执行。也就是说,事务中的操作要么全部成功,要么全部失败。系统必须通过严格的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]

- 阅读剩余部分 -

上篇文章详细介绍了,整个 Ubuntu 16.04 的安装过程, 见

Ubuntu 16.04 最小化安装教程

对于 Ubuntu 初次安装好之后, 有一些小的优化建议,会极大的方便后续的使用.

对于安装过程中未选择 SSH Server 的话,安装 SSH Server 是首要的事情,对于虚拟机还好, 对于物理机环境或者远程环境,如果没有这个服务,维护和使用起来比较麻烦.

- 阅读剩余部分 -

大多数情况下,笔记本都有两块网卡,一块无线网卡,一块有线网卡。
有些时候,我们需要将windows的网络共享给其他设备,比如将有线网络共享给无线网卡,以便其他移动设备(手机/路由器/HUB/笔记本/Pad),或者将当前连接的内部无线网络共享给有线设备。

- 阅读剩余部分 -

计算机发展到如今,变的越来越复杂,集成的设备也越来越多。对于希望进一步了解硬件和OS如何协作运行的IT人员来说,咋一看可能很困难。所以这篇博客详细分解下整个启动过程,再复杂的事物也是由简单的东西组合协作配合工作的,复杂中总会有些简单的内容更有利于我们抓住更本质的东西。

Linux启动过程可以分为多个阶段:

第1步:电源和SMPS

计算机的主要组件之一是SMPS(Switching Mode Power Supply)。该组件的主要目标是为主板和其他计算机组件提供精准电压。

- 阅读剩余部分 -

上一篇博客介绍了CentOS处理启动过程中,没有找到raid驱动导致的启动失败的问题,对于基于Debian的发行版、Gentoo等等系统处理起来是不一样的。因为各自都有对应的initramfs.img的管理工具。

介绍下各个发行版添加kernel module到initramfs的方法

Debian/Ubuntu

将启动过程依赖的raid驱动添加到/etc/initramfs-tools/modules

cat >> /etc/initramfs-tools/modules << EOF
ahci
aacraid
megaraid_sas
mpt3sas
EOF

- 阅读剩余部分 -

在物理机上面安装完物理机碰到下面这个错误:

dracut丢失raid驱动

刚看到这个问题,猜测是因为系统未正确安装,重新安装了一次还是出现同样的问题.开始怀疑不是系统安装问题,整理了下系统启动过程

  • 当系统从固件接口启动(UEFI / BIOS)时,它的工作原理是找到可启动磁盘, 这一步正常
  • 加载bootloader程序(grub/ilo),bootloader程序启动内核和初始化内存镜像(initramfs), 这一步应该也通过了
  • initramfs的内部的工具负责将系统切换到SysVinit/Systemd,但是在启动服务前,需要加载根盘,读取根盘内的相关内容(从上述截图看,是加载根盘过程中,没有找到对应的根盘分区, 这地方出问题了)

- 阅读剩余部分 -

准确的计时已成为现代软件部署的关键组成部分。无论是确保以正确的顺序记录日志还是正确应用数据库更新,不同步的时间都可能导致错误,数据损坏和其他难以调试的问题。

最新基于systemd的发行版本都有内置的时间同步功能,由systemd-timesyncd服务接管。下面是一些相关的操作,帮助我们快速解决时间同步问题。

设置时区(timezone)

通过date命令我们可以快速查看服务器的时间信息,这里现实的是UTC(Coordinated Universal Time)时间,当您的基础架构跨越多个时区时,一致地使用UTC时间可以减少系统交互之间的混乱。

date

Tue Sep  4 17:51:49 UTC 2018

- 阅读剩余部分 -

经常编写markdown需要引入一些代码块,需要定义Markdown支持的语言列表,这里列一下,需要的时候方便查找

NameMarkdown Label
.NET Consoledotnetcli
ASP.NET (C#)aspx-csharp
ASP.NET (VB)aspx-vb
AzCopyazcopy
Azure CLIazurecli
Azure PowerShellazurepowershell
C++cpp
C++/CXcppcx
C++/WinRTcppwinrt
C#csharp
C# in browsercsharp-interactive
Consoleconsole
CSHTMLcshtml
DAXdax
Dockerdockerfile
F#fsharp
Gogo
HTMLhtml
HTTPhttp
Javajava
JavaScriptjavascript
JSONjson
Kusto Query Languagekusto
Markdownmd
Objective-Cobjc
ODataodata
PHPphp
PowerApps (dot decimal separator)powerapps-dot
PowerApps (comma decimal separator)powerapps-comma
PowerShellpowershell
Pythonpython
Q#qsharp
Rr
Rubyruby
SQLsql
Swiftswift
TypeScripttypescript
VBvb
XAMLxaml
XMLxml

- 阅读剩余部分 -