mysql show database size

SELECT table_schema                                        "DB Name", 
   Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" 
FROM   information_schema.tables 
GROUP  BY table_schema; 

arguments

function show(foo, bar) {
  window.alert(foo+' '+bar);
}
function run(f) {
  // use splice to get all the arguments after 'f'
  var args = Array.prototype.splice.call(arguments, 1);
  f.apply(null, args);
}

run(show, 'foo', 'bar');

Two Ways to Check for Palindromes in JavaScript

function palindrome(str) {
  // Step 1. Lowercase the string and use the RegExp to remove unwanted characters from it
  var re = /[\W_]/g; // or var re = /[^A-Za-z0-9]/g;
  
  var lowRegStr = str.toLowerCase().replace(re, '');
  // str.toLowerCase() = "A man, a plan, a canal. Panama".toLowerCase() = "a man, a plan, a canal. panama"
  // str.replace(/[\W_]/g, '') = "a man, a plan, a canal. panama".replace(/[\W_]/g, '') = "amanaplanacanalpanama"
  // var lowRegStr = "amanaplanacanalpanama";
     
  // Step 2. Use the same chaining methods with built-in functions from the previous article 'Three Ways to Reverse a String in JavaScript'
  var reverseStr = lowRegStr.split('').reverse().join(''); 
  // lowRegStr.split('') = "amanaplanacanalpanama".split('') = ["a", "m", "a", "n", "a", "p", "l", "a", "n", "a", "c", "a", "n", "a", "l", "p", "a", "n", "a", "m", "a"]
  // ["a", "m", "a", "n", "a", "p", "l", "a", "n", "a", "c", "a", "n", "a", "l", "p", "a", "n", "a", "m", "a"].reverse() = ["a", "m", "a", "n", "a", "p", "l", "a", "n", "a", "c", "a", "n", "a", "l", "p", "a", "n", "a", "m", "a"]
  // ["a", "m", "a", "n", "a", "p", "l", "a", "n", "a", "c", "a", "n", "a", "l", "p", "a", "n", "a", "m", "a"].join('') = "amanaplanacanalpanama"
  // So, "amanaplanacanalpanama".split('').reverse().join('') = "amanaplanacanalpanama";
  // And, var reverseStr = "amanaplanacanalpanama";
   
  // Step 3. Check if reverseStr is strictly equals to lowRegStr and return a Boolean
  return reverseStr === lowRegStr; // "amanaplanacanalpanama" === "amanaplanacanalpanama"? => true
}
 
palindrome("A man, a plan, a canal. Panama");

继续阅读“Two Ways to Check for Palindromes in JavaScript”

diffTwoArrays

function arr_diff (a1, a2) {
    var a = [], diff = [];
    for (var i = 0; i < a1.length; i++) {
        a[a1[i]] = true;
    }
    for (var i = 0; i < a2.length; i++) {
        if (a[a2[i]]) {
            delete a[a2[i]];
        } else {
            a[a2[i]] = true;
        }
    }
    for (var k in a) {
        diff.push(k);
    }
    return diff;
};
function diffArray(arr1, arr2) {
  var newArr = [];
  // Same, same; but different. 
  var diff1 = arr1.filter(function(x) { return arr2.indexOf(x) < 0; });
  var diff2 = arr2.filter(function(x) { return arr1.indexOf(x) < 0;});
  newArr = diff1.concat(diff2);
  return newArr;
}

diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);

MySQL多种存储引擎比较及应用场景

MySQL有多种存储引擎:
MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。
MySQL支持数个存储引擎作为对不同表的类型的处理器。MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎:

◆ MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认使用另外一个引擎。

◆ MEMORY存储引擎提供“内存中”表。MERGE存储引擎允许集合将被处理同样的MyISAM表作为一个单独的表。就像MyISAM一样,MEMORY和MERGE存储引擎处理非事务表,这两个引擎也都被默认包含在MySQL中。
注释:MEMORY存储引擎正式地被确定为HEAP引擎。

◆ InnoDB和BDB存储引擎提供事务安全表。BDB被包含在为支持它的操作系统发布的MySQL-Max二进制分发版里。InnoDB也默认被包括在所 有MySQL 5.1二进制分发版里,你可以按照喜好通过配置MySQL来允许或禁止任一引擎。

◆ EXAMPLE存储引擎是一个“存根”引擎,它不做什么。你可以用这个引擎创建表,但没有数据被存储于其中或从其中检索。这个引擎的目的是服务,在 MySQL源代码中的一个例子,它演示说明如何开始编写新存储引擎。同样,它的主要兴趣是对开发者。

◆ NDB Cluster是被MySQL Cluster用来实现分割到多台计算机上的表的存储引擎。它在MySQL-Max 5.1二进制分发版里提供。这个存储引擎当前只被Linux, Solaris, 和Mac OS X 支持。在未来的MySQL分发版中,我们想要添加其它平台对这个引擎的支持,包括Windows。

◆ ARCHIVE存储引擎被用来无索引地,非常小地覆盖存储的大量数据。

◆ CSV存储引擎把数据以逗号分隔的格式存储在文本文件中。

◆ BLACKHOLE存储引擎接受但不存储数据,并且检索总是返回一个空集。

◆ FEDERATED存储引擎把数据存在远程数据库中。在MySQL 5.1中,它只和MySQL一起工作,使用MySQL C Client API。在未来的分发版中,我们想要让它使用其它驱动器或客户端连接方法连接到另外的数据源。
当你创建一个新表的时候,你可以通过添加一个ENGINE 或TYPE 选项到CREATE TABLE语句来告诉MySQL你要创建什么类型的表:
CREATE TABLE t (i INT) ENGINE = INNODB;
CREATE TABLE t (i INT) TYPE = MEMORY;
虽然TYPE仍然在MySQL 5.1中被支持,现在ENGINE是首选的术语。

如何选择最适合你的存储引擎呢?

下述存储引擎是最常用的:
◆ MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。注意,通过更改STORAGE_ENGINE配置变量,能够方便地更改MySQL服务器的默认存储引擎。

◆ InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。

◆ BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。

◆ Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。

◆ Merge:允许MySQL DBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。对于诸如数据仓储等VLDB环境十分适合。

◆ Archive:为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。

◆ Federated:能够将多个分离的MySQL服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。

◆ Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性。

◆ Other:其他存储引擎包括CSV(引用由逗号隔开的用作数据库表的文件),Blackhole(用于临时禁止对数据库的应用程序输入),以及Example引擎(可为快速创建定制的插件式存储引擎提供帮助)。
请记住,对于整个服务器或方案,你并不一定要使用相同的存储引擎,你可以为方案中的每个表使用不同的存储引擎,这点很重要。

MySQL Cross Server Select Query

mysqldump could be a solution as mentioned already or you could try using the SELECT … INTO OUTFILE and then LOAD DATA INFILE … commands.

MySQL does have the federated storage engine which might be useful to you. Here’s some more documentation on it http://dev.mysql.com/doc/refman/5.0/en/federated-storage-engine.html I have to confess that I’ve not had huge success with it but it might work for you.

The third solution would be to do the work in your application. Read in the results of the SELECT query line by line and INSERT to the other server line by line. You might run into some issues with data types and null handling that way though.

卖油翁

陈康肃公尧咨(zī) 善射,当世无双 ,公亦以此自矜(jīn)。尝射于家圃(pǔ),有卖油翁释担(dàn)而立,睨(nì)之,久而不去。见其发矢(shǐ)十中八九,但微颔(hàn)之。
康肃问曰:”汝(rǔ)亦知射乎?吾射不亦精乎?”翁曰:”无他, 但手熟(shú)尔。”康肃忿(fèn)然曰:”尔安敢轻吾射!”翁曰:”以我酌(zhuó)油知之。”乃取一葫芦置于地,以钱覆其口,徐以杓(sháo)酌油沥(lì)之,自钱孔入,而钱不湿。因曰:”我亦无他,唯手熟(shú)尔。”康肃笑而遣(qiǎn)之。
此与庄生所谓解牛斫轮者何异?

leetcode-sum3

Given an array S of n integers, are there elements a, b, c in S such that
a + b + c = 0?
Find all unique triplets in the array which gives the sum of zero.

Note:

Elements in a triplet (a,b,c) must be in non-descending order.
(ie, a ≤ b ≤ c)
The solution set must not contain duplicate triplets.

For example, given array S = {-1 0 1 2 -1 -4},

A solution set is:
(-1, 0, 1)
(-1, -1, 2)

package leetcode

import (
	"fmt"
	"sort"
	"sync/atomic"
)

var arrLen int
var ops uint64 = 0
var sortArr []int

func getArr() []int {
	inputArr := []int{-7, -8, -1, -2, -4, 1, 4, 9, 3, 6}
	return inputArr
}

func ThreeSum() {
	// call get array func
	inputArr := getArr()
	//make sure are sorted
	fmt.Println(inputArr)
	if !sort.IntsAreSorted(inputArr) {
		// sort inputArr
		sort.Ints(inputArr)
		fmt.Println(inputArr)
		sortArr = inputArr
	}
	//get this array length
	arrLen = len(sortArr)
	for i := 0; i < arrLen-2; i++ {
		fmt.Println("loop time : ", i)
		if i > 0 && sortArr[i-1] == sortArr[i] {
			//if near equal ,skip this time loop
			continue
		}
		currNum := sortArr[i]
		low := i + 1
		high := arrLen - 1
		for low < high {
			lowNum := sortArr[low]
			highNum := sortArr[high]
			sumNum := currNum + lowNum + highNum
			if sumNum == 0 {
				//2d array use
				atomic.AddUint64(&ops, 1)
				opsFinal := atomic.LoadUint64(&ops)
				//print result
				fmt.Println("--------------Begin--------------")
				fmt.Println("counter : ", opsFinal)
				fmt.Println("first Number : ", currNum)
				fmt.Println("second Number : ", lowNum)
				fmt.Println("third Number : ", highNum)
				fmt.Printf("[%d,%d,%d]", currNum, lowNum, highNum)
				fmt.Println("")
				fmt.Println("---------------End---------------")
				low++
			} else if sumNum > 0 {
				for high > 0 && sortArr[high] == sortArr[high-1] {
					high--
				}
				high--
			} else {
				for low < arrLen && sortArr[low] == sortArr[low+1] {
					low++
				}
				low++
			}
		}
	}
}

散步 [课文原文] — 莫怀戚

  我们在田野散步:我,我的母亲,我的妻子和儿子。

  母亲本不愿出来的。她老了,身体不好,走远一点就觉得很累。我说,正因为如此,才应该多走走。母亲信服地点点头,便去拿外套。她现在很听我和话,就象小时候我很听她的话一样。

  天气很好。今年的春天来的太迟,太迟了,有一些老人挺不住。但春天总算来了。我的母亲又熬过了一个严冬。

  这南方初春的田野,大块小块的新绿随意地铺着,有的浓,有的淡;树上的绿芽也密了;田野里的冬水也咕咕地起着水泡。这一切使人想起一样东西——生命。

  我和母亲走在前面,我的妻子和儿子走在后面。小家伙突然叫起来:“前面也是妈妈和儿子,后面也是妈妈和儿子。”我们都笑了。

  后来发生了分歧:母亲要走大路,大路平顺;我的儿子要走小路,小路有意思。不过,一切都取决于我。我的母亲老了,她早已习惯听从她强壮的儿子;我的儿子还小,他还习惯听从他高大的父亲;妻子呢,在外边,她总是听我的。一霎时我感到了责任的重大。我想一个两全的办法,找不出;我想拆散一家人,分成两路,各得其所,终不愿意。我决定委屈儿子,因为我伴同他的时日还长。我说:“走大路。”

  但是母亲摸摸孙儿的小脑瓜,变了主意:“还是走小路吧。”她的眼随小路望去:那里有金色的菜花,两行整齐的桑树,尽头一口水波粼粼的鱼塘。“我走不过去的地方你就背着我。”母亲对我说。

  这样,我们在阳光下,向着那菜花、桑树和鱼塘走去。到了一处,我蹲下来,背起了母亲,妻子也蹲下来,背起了儿子。我的母亲虽然高大,然而很瘦,自然不算重;儿子虽然很胖,毕竟幼小,自然也轻:但我和妻子都是慢慢地,稳稳地,走得很仔细,好像我背上的同她背上的加起来,就是整个世界。