通过编写 chroot 来认识 chroot 发挥的作用和它带来的好处

什么是 chroot

chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以 /,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为 / 位置。

Linux 系统的目录结构

为何使用 chroot

在经过 chroot 之后,系统读取到的目录和文件将不在是旧系统根下的而是新根下(即被指定的新的位置)的目录结构和文件,因此它带来的好处大致有以下3个:

  1. 增加了系统的安全性,限制了用户的权力;

    在经过 chroot 之后,在新根下将访问不到旧系统的根目录结构和文件,这样就增强了系统的安全性。这个一般是在登录 (login) 前使用 chroot,以此达到用户不能访问一些特定的文件。

  2. 建立一个与原系统隔离的系统目录结构,方便用户的开发;

    使用 chroot 后,系统读取的是新根下的目录和文件,这是一个与原系统根下文件不相关的目录结构。在这个新的环境中,可以用来测试软件的静态编译以及一些与系统不相关的独立开发。

  3. 切换系统的根目录位置,引导 Linux 系统启动以及急救系统等。
    chroot 的作用就是切换系统的根位置,而这个作用最为明显的是在系统初始引导磁盘的处理过程中使用,从初始 RAM 磁盘 (initrd) 切换系统的根位置并执行真正的 init。另外,当系统出现一些问题时,我们也可以使用 chroot 来切换到一个临时的系统。

查看更多

MySQL 调优/优化的 101 个建议

介绍

MySQL是一个强大的开源数据库。随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈。这里提供 101 条优化 MySQL 的建议。有些技巧适合特定的安装环境,但是思路是相通的。我已经将它们分成了几类以帮助你理解。

Mysql 监控

MySQL服务器硬件和OS(操作系统)调优

  1. 有足够的物理内存,能将整个InnoDB文件加载到内存里 —— 如果访问的文件在内存里,而不是在磁盘上,InnoDB会快很多。

  2. 全力避免 Swap 操作 — 交换(swapping)是从磁盘读取数据,所以会很慢。

  3. 使用电池供电的RAM(Battery-Backed RAM)。

  4. 使用一个高级磁盘阵列 — 最好是 RAID10 或者更高。

  5. 避免使用RAID5 — 和校验需要确保完整性,开销很高。

  6. 将你的操作系统和数据分开,不仅仅是逻辑上要分开,物理上也要分开 — 操作系统的读写开销会影响数据库的性能。

  7. 将临时文件和复制日志与数据文件分开 — 后台的写操作影响数据库从磁盘文件的读写操作。

  8. 更多的磁盘空间等于更高的速度。

  9. 磁盘速度越快越好。

  10. SAS优于SATA。

  11. 小磁盘的速度比大磁盘的更快,尤其是在 RAID 中。

  12. 使用电池供电的缓存 RAID(Battery-Backed Cache RAID)控制器。

  13. 避免使用软磁盘阵列。

  14. 考虑使用固态IO卡(不是磁盘)来作为数据分区 — 几乎对所有量级数据,这种卡能够支持 2 GBps 的写操作。

  15. 在 Linux 系统上,设置 swappiness 的值为0 — 没有理由在数据库服务器上缓存文件,这种方式在Web服务器或桌面应用中用的更多。

  16. 尽可能使用 noatime 和 nodirtime 来挂载文件系统 — 没有必要为每次访问来更新文件的修改时间。

  17. 使用 XFS 文件系统 — 一个比ext3更快的. 更小的文件系统,拥有更多的日志选项,同时,MySQL在ext3上存在双缓冲区的问题。

  18. 优化你的 XFS 文件系统日志和缓冲区参数 – -为了获取最大的性能基准。

  19. 在Linux系统中,使用 NOOP 或 DEADLINE IO 调度器 — CFQ 和 ANTICIPATORY 调度器已经被证明比 NOOP 和 DEADLINE 慢。

  20. 使用 64 位操作系统 — 有更多的内存能用于寻址和 MySQL 使用。

  21. 将不用的包和后台程序从服务器上删除 — 减少资源占用。

  22. 将使用 MySQL 的 host 和 MySQL自身的 host 都配置在一个 host 文件中 — 这样没有 DNS 查找。

  23. 永远不要强制杀死一个MySQL进程 — 你将损坏数据库,并运行备份。

  24. 让你的服务器只服务于MySQL — 后台处理程序和其他服务会占用数据库的 CPU 时间。

查看更多

Mac版迅雷优化,删除无用插件

介绍

使用最新版Mac迅雷,通过删除无用插件达到优化目的。

迅雷插件列表

插件名 功能
advertising 广告
featuredpage 主页
feedback 反馈
iOSThunder 手机迅雷
activitycenter 活动中心
myvip 会员中心
softmanager 软件管家
viprenew 会员开通
viptips 会员提示
xlbrowser 内置浏览器
xlplayer 迅雷影音
livestream 直播
bbassistant 迅雷快鸟
lixianspace 离线空间
viptask 会员权限
userlogin 登陆迅雷账户
subtitle 内嵌字幕下载
browserhelper 配合浏览器
xiazaibao 下载宝

可选装插件

针对不同的需求,可以酌情处理以下插件:
需使用迅雷快鸟进行宽带提速的,请保留 bbassistant
插件需要使用迅雷离线空间的,请保留 lixianspace 插件,不需要的可以删除;
需要使用会员权限的,请保留 viptask 插件,不需要的可以删除;
需要登陆迅雷账户的,请保留 userlogin 插件,不需要的可以删除;
需要使用内置的字幕下载功能的,请保留 subtitle 插件,不需要的可以删除;
需要搭配浏览器使用的,请保留 browserhelper 插件,不需要的可以删除;
下载宝(或玩客云)用户请保留 xiazaibao 插件,不需要的可以删除。

删除插件

* rm -rf /Applications/Thunder.app/Contents/PlugIns/{插件名}.xlplugin

脚本

无用插件删除脚本

#!/bin/bash
rm -rf /Applications/Thunder.app/Contents/PlugIns/advertising.xlplugin
rm -rf /Applications/Thunder.app/Contents/PlugIns/featuredpage.xlplugin
rm -rf /Applications/Thunder.app/Contents/PlugIns/activitycenter.xlplugin
rm -rf /Applications/Thunder.app/Contents/PlugIns/iOSThunder.xlplugin
rm -rf /Applications/Thunder.app/Contents/PlugIns/livestream.xlplugin
rm -rf /Applications/Thunder.app/Contents/PlugIns/myvip.xlplugin
rm -rf /Applications/Thunder.app/Contents/PlugIns/softmanager.xlplugin
rm -rf /Applications/Thunder.app/Contents/PlugIns/xiazaibao.xlplugin
rm -rf /Applications/Thunder.app/Contents/PlugIns/xlbrowser.xlplugin
rm -rf /Applications/Thunder.app/Contents/PlugIns/xlplayer.xlplugin
rm -rf /Applications/Thunder.app/Contents/PlugIns/activitycenter.xlplugin
rm -rf /Applications/Thunder.app/Contents/PlugIns/onethingcloud.xlplugin

选装插件删除脚本

#!/bin/bash
rm -rf /Applications/Thunder.app/Contents/PlugIns/bbassistant.xlplugin
rm -rf /Applications/Thunder.app/Contents/PlugIns/lixianspace.xlplugin
rm -rf /Applications/Thunder.app/Contents/PlugIns/viptask.xlplugin
rm -rf /Applications/Thunder.app/Contents/PlugIns/userlogin.xlplugin
rm -rf /Applications/Thunder.app/Contents/PlugIns/subtitle.xlplugin
rm -rf /Applications/Thunder.app/Contents/PlugIns/browserhelper.xlplugin
rm -rf /Applications/Thunder.app/Contents/PlugIns/xiazaibao.xlplugin

查看更多

修复破解Mac应用启动时闪退(原因是由于苹果移除了TNT证书)

Apple removed TNT’s certificate, so the app will crash after July 12th. The current solution is to sign it yourself.

Run in Terminal

codesign --force --deep --sign - /Applications/name.app

Requisite: Xcode or the Apple Command Line Tools
To install, execute

xcode-select --install

in the terminal emulator of your choice, and the macOS GUI will give you the option to install Xcode (from the Mac App Store) or the CLTs. If you install Xcode, launch it at least once to complete the installation and agree to the license.

Alternatively, you can use CodeSigner to sign some apps.

查看更多

深入分析Redis特点及应用场景

Redis的特点

Redis 与其他 key - value 缓存产品有以下三个特点

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
  • Redis支持数据的备份,即master-slave模式的数据备份。

Redis的优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Redis与其他key-value存储有什么不同?

Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。

Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

查看更多

分库分表 vs NewSQL数据库

概述

最近与同行科技交流,经常被问到分库分表与分布式数据库如何选择,网上也有很多关于中间件+传统关系数据库(分库分表)与NewSQL分布式数据库的文章,但有些观点与判断是我觉得是偏激的,脱离环境去评价方案好坏其实有失公允。

本文通过对两种模式关键特性实现原理对比,希望可以尽可能客观、中立的阐明各自真实的优缺点以及适用场景。

NewSQL数据库先进在哪儿?

首先关于“中间件+关系数据库分库分表”算不算NewSQL分布式数据库问题,国外有篇论文pavlo-newsql-sigmodrec,如果根据该文中的分类,Spanner、TiDB、OB算是第一种新架构型,Sharding-Sphere、Mycat、DRDS等中间件方案算是第二种(文中还有第三种云数据库,本文暂不详细介绍)。

基于中间件(包括SDK和Proxy两种形式)+传统关系数据库(分库分表)模式是不是分布式架构?我觉得是的,因为存储确实也分布式了,也能实现横向扩展。但是不是”伪”分布式数据库?从架构先进性来看,这么说也有一定道理。”伪”主要体现在中间件层与底层DB重复的SQL解析与执行计划生成、存储引擎基于B+Tree等,这在分布式数据库架构中实际上冗余低效的。为了避免引起真伪分布式数据库的口水战,本文中NewSQL数据库特指这种新架构NewSQL数据库。

NewSQL数据库相比中间件+分库分表的先进在哪儿?画一个简单的架构对比图:

查看更多

Mac高效使用技巧

去格式粘贴

复制文本内容的时候经常会带格式(字号、颜色、字体,有时候还有看不见的代码),手动调整会很麻烦,

使用方法

Command+C
Command+V   --> Command + Shift + option + V

通过以上方法就能快速的丢弃原有的格式属性,使其与当前文本格式保持一致

Split Screen分屏功能

这依旧是一条提升生产力的功能,习惯一个屏打开IDEA,另外一个开着Google,对于没有外接显示器来说我们可以使用Mac自带的分屏来实现(有的软件可能不支持)

使用方法

左键按住一个程序左上方绿色最大化按钮不动,这时会让你选择当前选中App会出现在哪一边,可以是左边也可以是右边,排好之后再点击另一个App就会出现在另一侧,这样一来,同一屏幕中就同时有了两个App的界面。中间有一条分隔线,拖动分割线可以重新划分左右的区域大小,可以让你的注意力更集中在某一方面。

查看更多

Axel:命令行下轻量级多线程下载程序

介绍

Axel 是一个轻量级下载程序,它和其他加速器一样,对同一个文件建立多个连接,每个连接下载单独的文件片段以更快地完成下载。

Axel 支持 HTTP、HTTPS、FTP 和 FTPS 协议。它也可以使用多个镜像站点下载单个文件,所以,Axel 可以加速下载高达 40%(大约,我个人认为)。它非常轻量级,因为它没有依赖并且使用非常少的 CPU 和内存。

Axel 一步到位地将所有数据直接下载到目标文件(LCTT 译注:而不是像其它的下载软件那样下载成多个文件块,然后拼接)。

注意:不支持在单条命令中下载两个文件。

你还可以尝试其他命令行下载管理器/加速器。

  • aria2 - 超快速下载程序
  • wget - 标准命令行下载程序
  • curl - 命令行下载程序
  • Linux 下的最好的 4 个命令行下载管理器/加速器

Axel安装

大多数发行版(Debian、Ubuntu、Mint、Fedora、suse、openSUSE、Arch Linux、Manjaro、Mageia 等)都有 axel 包,所以我们可以从发行版官方仓库轻松安装。对于 CentOS/RHEL,我们需要启用 EPEL Repository。

查看更多

解决“Mac应用”已损坏,无法打开的问题

问题描述

在Mac下安装一些软件时提示”来自身份不明开发者”,其实这是Mac新系统启用了新的安全机制。
默认只信任 Mac App Store 下载的软件和拥有开发者 ID 签名的应用程序。
换句话说就是 Mac 系统默认只能安装靠谱渠道(有苹果审核的 Mac App Store)下载的软件或被认可的人开发的软件。

这当然是为了用户不会稀里糊涂安装流氓软件中招,但没有开发者签名的 “老实软件” 也受影响了,安装就会弹出下图所示警告框:“xxx已损坏,打不开。您应将它移到废纸篓”或者“打不开 xxx,因为它来自身份不明的开发者”。

方案1: 开放系统安装来源

使用命令行打开设置选项

macOS Sierra 10.12及以上系统默认是不开启这个设置选项,需要通过命令行手动显示。

在终端内执行sudo spctl --master-disable

修改系统配置

修改系统配置:系统偏好设置… -> 安全性与隐私。

查看更多

sys.stdout.write实现Python控制台实时刷新打印

前言

我们先来看看Print方法打印的效果

from datetime import datetime as dt
import sys
import time

for i in range(5):
    print(dt.now())
    time.sleep(1)

输出结果

C:\Users\Administrator\PycharmProjects\untitled\venv\Scripts\python.exe C:/Users/Administrator/PycharmProjects/untitled/test.py
2018-08-06 16:46:46.636256
2018-08-06 16:46:47.636313
2018-08-06 16:46:48.636370
2018-08-06 16:46:49.636427
2018-08-06 16:46:50.637484

Process finished with exit code 0

可以看到,用print打印出来自动换行且不会清除上一个结果

help查看

help(print)

查看更多