Categories
生活琐碎

不错的书

以下三本书最近在看,觉得不错:

  • 《Head First Python》,编程语言入门Head First系列一直听别人说不错,前两天头脑发热不惜重金从亚马逊买了一本,看着果然还不错,推荐初学者使用。
  • 《编程珠玑(第二版)》讲一些很有用的常识,看来一点点
  • 《人月神话》,软件工程方面的书,据说是经典,下了个pdf放在kindle上面看,还不错的感觉

另外鄙视下某些商科高富帅,想在半个月内找一些不靠谱的人组个团队做个完善可用的电商网站,做梦去吧呵呵。如果想法都能那么轻易实现的话,世界上早就都是富翁了,不就是没钱请外包公司么,还美其名曰创业项目,都不想吐槽了,不知道香港评委瞎了眼了还是怎么的,这种想法怎么可能实现?国内电商掐架弄得不亦乐乎了,校园内做推广有什么意思,相比校外平台除了可能可以上门递送之外有什么优势?价格比得过淘宝JS?售后能玩的过京东亚马逊?人链能搞得过腾讯的易迅?优势可能是递送时间吧,但是真正要做创业的话,雇人递送还不如做个领快递的网站,把最后一公里的问题解决了来的靠谱。看了他们的项目计划,定位都不清晰。格子铺就是个租地方给人经营的容器,网络的格子铺还不是电商么,不知道为什么叫形式新颖了。团宣一帮老师还说资金丰厚,呵呵,50元么?团委给报销的资金额度真是问谁谁都知道了,竟然还有报销10块钱的》。。。
没办法,作为屌丝码农,只能默默地不作为,因为发现想的越多,这事情越不可能实现。

Categories
不学无术 木有技术

第二章 啊哈!算法

原文见:

http://blog.csdn.net/silenough/article/details/7040028

 
A. 给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数(在文件中至少缺少一个这样的数—为什么?)。在具有足够内存的情况下,如何解决该问题?如果有几个外部的“临时”文件可用,但是仅有几百字节的内村,又该如何解决该问题?
因为2^32 大于40亿,所以文件中至少缺失一个整数。我们从表示每个整数的32位的视角来考虑二分搜索,算法的第一趟(最多)读取40亿个输入整数,并把起始位为0的整数写入一个顺序文件,把起始位为1的整数写入另一个顺序文件。这两个文件中,有一个文件最多包含20亿个整数,接下来将该文件用作当前输入并重复探测过程,但这次探测的是第二个位。如果原始的输入文件包含n个元素,那么第一趟将读取n个整数,第二趟最多读取n/2个整数,第三趟最多读取n/4个整数,依次类推,所以总的运行时间正比于n。
如果内存足够,采用位图技术,通过排序文件并扫描,也能够找到缺失的整数,但是这样做会导致运行时间正比于nlog(n).
1. 考虑查找给定输入单词的所有变位词的问题。仅给定单词和字典的情况下,如何解决该问题?如果有一些时间和空间可以在响应任何查询之前预先处理字典,又会如何?
首先计算给定单词的标识,若果不允许预处理,那么久只能顺序读取整个文件,计算每个单词的标识,并于给定单词的标识进行比较。
 

  1. //压缩一个单词,形成其标识,设定单词中相同字母不会超过99个
  2. void compress(char * pWord, int len, char * pFlag)
  3. {
  4.     sort(pWord, pWord+len); //对单词进行排序
  5.     int i = 0;
  6.     int nCount;            //计数重复字母的个数
  7.     char chCount[3];       //存放整数到字符的转换值,整数最大为99
  8.     while (*pWord != ‘’)
  9.     {
  10.         char chTemp = *pWord;
  11.         char *pTemp = pWord + 1;
  12.         nCount = 1;
  13.         while (true)
  14.         {
  15.             if (chTemp == *pTemp++)
  16.             {
  17.                 ++nCount;
  18.             }
  19.             else
  20.             {
  21.                 *(pFlag + i++) = *pWord;
  22.             //  ++i;
  23.                 memset(chCount, ‘’, 3);
  24.                 _itoa(nCount, chCount, 10);
  25.                 if (nCount >= 10)
  26.                 {
  27.                     *(pFlag + i++) = *(chCount + 0);
  28.                 //  i++;
  29.                     *(pFlag + i++) = *(chCount + 1);
  30.                 //  ++i;
  31.                 }
  32.                 else
  33.                 {
  34.                     *(pFlag + i++) = *(chCount + 0);
  35.                 //  ++i;
  36.                 }
  37.                 pWord = pWord + nCount;
  38.                 break;
  39.             }
  40.         }
  41.     }
  42. }

如果允许进行预处理,我们可以在一个预先计算好的结构中执行二分查找,该结构中包含按标识排序的(标识,单词)对。
2. 给定包含4300 000 000 个32位整数的顺序文件,如何找出一个出现至少两次的整数?
 方法一:
二分搜索通过递归搜索包含半数以上整数的子区间来查找至少出现两次的单词。因为4300000000  > 2^32,所以必定存在重复的整数,搜索范围从[0, 2^32)开始,中间值mid为2^31,若区间[0, 2^31)内的整数个数大于2^31个,则调整搜索区间为[0, 2^31),反之则调整搜索区间为[2^31, 2^32),然后再对整个文件再遍历一遍,直到得到最后的结果。这样一共会有log2(n)次的搜索,每次遍历n个整数(每次都是完全遍历),总体的复杂度为o(nlog2(n))。
 

  1. #include <iostream>
  2. using namespace std;
  3. int pow2(int n)   //求2的n次幂
  4. {
  5.     int i;
  6.     int r = 1;
  7.     for (i = 0; i < n; i++)
  8.     {
  9.         r *=2;
  10.     }
  11.     return r;
  12. }
  13. int _tmain(int argc, _TCHAR* argv[])
  14. {
  15.     int arr[] = {4,2,5,1,6,3,8,0,7,6,11,12,14,9,15,10,13};
  16.     int len = sizeof(arr) / sizeof(int);
  17.     int nCount = 0;
  18.     int bit = 4;
  19.     int low = 0;
  20.     int high = pow2(bit);
  21.     int mid = (low +high) / 2;
  22.     int i;
  23.     while (low <= high )
  24.     {
  25.         mid = (low + high) / 2;  //取中间值
  26.         nCount = 0;
  27.         for (i = 0; i < len; i++)    //计数[low, mid)范围内整数的个数
  28.         {
  29.             if (arr[i] < mid && arr[i] >= low)
  30.             {
  31.                 ++nCount;
  32.             }
  33.         }  //end for
  34.         if (nCount == 0)     //若nCount为0,则mid即为重复的整数
  35.         {
  36.             cout << mid<<endl;
  37.             break;
  38.         }
  39.         else
  40.         {
  41.             if (nCount > (mid – low))  //若大于mid与low的差值,
  42.             {                          //表明重复的整数落在区间[low, mid)
  43.                 high = mid;        //缩小区间
  44.             }
  45.             else
  46.             {
  47.                 low = mid;
  48.             }  //end if
  49.         } //end if () else()
  50.     }  //end while
  51. }

 
   方法二:
 

  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4. int _tmain(int argc, _TCHAR* argv[])
  5. {
  6.     int arr[] = {4,2,5,1,7,3,8,0,7,6,11,12,14,9,15,10,13};
  7.     int len = sizeof(arr) / sizeof(int);
  8.     sort(arr, arr + len);   //先进行排序
  9.     int i;
  10.     int increase = arr[0];
  11.     for (i = 0; i < len; i++)
  12.     {
  13.         if (arr[i] > (i + increase))
  14.         {
  15.             increase += (arr[i] – i – increase);
  16.             continue;
  17.         }
  18.         if (arr[i] < (i + increase))
  19.         {
  20.             cout << arr[i] << endl;
  21.             break;
  22.         }
  23.     }
  24. }

3. 前面涉及了两个需要精巧代码来实现的向量旋转算法,将其分别作为独立的程序实现。在每个程序中,i和n的最大公约数如何实现?
采用辗转相除法求两个整数的最大公约数。
 

  1. int gcd(int a, int b)
  2. {
  3.     int temp;
  4.     if (a < b)  //使a始终为最大数
  5.     {
  6.         temp = a;
  7.         a = b;
  8.         b = temp;
  9.     }
  10.     while (b != 0)
  11.     {
  12.         temp = a % b;
  13.         a = b;
  14.         b = temp;
  15.     }
  16.     return a;
  17. }

 
 
方法一:海豚算法
 

  1. void Shifting(char * pArry, int rotdistance, int len)
  2. {
  3.     int i, j;
  4.     char temp;
  5.     int igcd = gcd(rotdistance, len);
  6.     for (i = 0; i < igcd; i++)
  7.     {
  8.         temp = pArry[i];
  9.         j = i;
  10.         for (; 😉
  11.         {
  12.             int k = j + rotdistance;
  13.             k %= len;
  14.             if ( k == i)
  15.             {
  16.                 break;
  17.             }
  18.             pArry[j] = pArry[k];
  19.             j = k;
  20.         }
  21.         pArry[j] = temp;
  22.     }
  23. }

方法二:块交换算法
 

  1. #include <iostream>
  2. using namespace std;
  3. //交换pArry[a…a+m-1]和pArry[b…b+m-1]
  4. void myswap(char *pArry, int a, int b, int m)
  5. {
  6.     char temp;
  7.     for (int i = 0; i < m; i++)
  8.     {
  9.         temp = pArry[a + i];
  10.         pArry[a + i] = pArry[b + i];
  11.         pArry[b + i] = temp;
  12.     }
  13. }
  14. void Shifting(char * pArry, int rotdistance, int len)
  15. {
  16.     if (rotdistance == 0 || rotdistance == len)
  17.     {
  18.         return;
  19.     }
  20.     int i, j, p;
  21.     i = p = rotdistance;
  22.     j = len – p;
  23.     while (i != j)
  24.     {
  25.         if (i > j)
  26.         {
  27.             myswap(pArry, p – i, p, j);
  28.             i -= j;
  29.         }
  30.         else
  31.         {
  32.             myswap(pArry, p – i, p + j – i, i);
  33.             j -= i;
  34.         }
  35.     }
  36.     myswap(pArry, p – i, p, i);
  37. }
  38. int _tmain(int argc, _TCHAR* argv[])
  39. {
  40.     char arry[] = “abcdefghijklmn”;
  41.     int len = strlen(arry);
  42.     Shifting(arry, 10, len);
  43.     return 0;
  44. }

方法三:求逆算法
根据矩阵的转置理论,对于矩阵AB,要得到BA,则分别求A和B的转置A’, B’,然后对(A’B’)转置,即(A’B’)’ = BA。同理,可以得到另一种一维向量向左旋转的算法。将要被旋转的向量x看做两部分ab,这里a代表x中的前rotdistance个元素。首先对a部分进行反转,再对b部分进行反转,最后对整个向量x进行反转即可。
对于字符串“abcdefgh”, rotdistance = 3, len = 8:
reverse(1, rotdistance);          //cbadefgh
reverse(rotdistance+1, len);  //cbahgfed
reverse(1, len);                       //defghabc
 

  1. #include <iostream>
  2. using namespace std;
  3. //对字符串中第i个字符到第j个字符进行反转,i、j>=1
  4. void MyReverse(char * pArry, int i, int j)
  5. {
  6.     int front = i;
  7.     int tail = j;
  8.     char temp;
  9.     while (front != tail && front < tail)
  10.     {
  11.         temp = pArry[front – 1];
  12.         pArry[front – 1] = pArry[tail – 1];
  13.         pArry[tail – 1] = temp;
  14.         ++front;
  15.         –tail;
  16.     }
  17. }
  18. //将字符串左旋转rotdistance个字符
  19. void Shifting(char * pArry, int rotdistance, int len)
  20. {
  21.     if (rotdistance == 0 || rotdistance == len)
  22.     {
  23.         return;
  24.     }
  25.     MyReverse(pArry, 1, rotdistance);
  26.     MyReverse(pArry, rotdistance + 1, len);
  27.     MyReverse(pArry, 1, len);
  28. }
  29. int _tmain(int argc, _TCHAR* argv[])
  30. {
  31.     char arry[] = “abcdefgh”;
  32.     int len = strlen(arry);
  33.     Shifting(arry, 5, len);
  34.     cout << arry << endl;
  35.     return 0;
  36. }

 
5. 向量旋转函数将向量ab变为ba。如何将向量abc变成cba?(这个交换非相邻内存块的问题进行了建模)
可以将bc看做一个整体,然后运用向量旋转算法,得到bca。然后对bc运用向量旋转算法,得到cb。最后变换后的向量为即cba.
 

  1. //交换pArry[a…a+m-1]和pArry[b…b+m-1]
  2. void myswap(char *pArry, int a, int b, int m)
  3. {
  4.     char temp;
  5.     for (int i = 0; i < m; i++)
  6.     {
  7.         temp = pArry[a + i];
  8.         pArry[a + i] = pArry[b + i];
  9.         pArry[b + i] = temp;
  10.     }
  11. }

 
 

  1. //对向量pArry中起始于ibegainPos位置的irotdistance-ibegainPos个元素
  2. //与起始于ibegainPos+irotdistance位置到位置iendPos之前的元素进行交换
  3. void SuccessiveSwap(char * pArry, int ibegainPos, int irotdistance, int iendPos)
  4. {
  5.     int i, j;
  6.     i = irotdistance – ibegainPos;
  7.     j = iendPos – irotdistance;
  8.     while (i != j)
  9.     {
  10.         if (i > j)
  11.         {
  12.             myswap(pArry, irotdistance – i, irotdistance, j);
  13.             i -= j;
  14.         }
  15.         else
  16.         {
  17.             myswap(pArry, irotdistance – i, irotdistance + j – i, i);
  18.             j -= i;
  19.         }
  20.     }
  21.     myswap(pArry, irotdistance – i, irotdistance, i);
  22. }

6. 如何实现一个以名字的按键编码为参数,并返回所有可能的匹配名字的函数
用按键编码标识每一个名字,并根据标识排序,然后顺序读取排序后的文件并输出具有不同名字的相同标识。为了检索出给定按钮编码的名字,可以使用一种包含编码标识和其他数据的结构。然后对该结构排序,使用二分搜索查询按键编码。
7. 转置一个存储在磁带上的4000×4000的矩阵(每条记录的格式相同,为数十个字节)。如何将运行的时间减少到半个小时?
给每条记录插入列号和行号,然后调用系统的磁带排序程序先按列排序再按行排序,最后使用另一个程序删除列号和行号。
8. 给定一个n元实数集合、一个实数t和一个整数k,如何快速确定是否存在一个k元子集,其元素之和不超过t?
对n元实数集合先进行排序,然后计算前k个元素的和既可以确定是否存在这样一个子集。若采用快速排序,时间复杂度为nlog10(n)。
9. 顺序搜素和二分搜索代表了搜索时间和预处理时间之间的折中。处理一个n元表格时,需要执行多少次二分搜索才能弥补对表进行排序所消耗的预处理时间?
对于顺序搜索,搜索k次的时间复杂度为O(kn);若采用二分搜索则需要先排序,则二分搜索的时间复杂度为O(nlog10(n)+log2(n))
变位词程序的实现
 

  1. //对从文件中读入的每个单词调用qsort库函数排序,输出到新的文件中
  2. void mysign(FILE * pFile1, FILE * pFile2)
  3. {
  4.     char word[20];
  5.     char sig[20];
  6.     pFile1 = fopen(“..file1.txt”, “r”);
  7.     if ( NULL == pFile1)
  8.     {
  9.         cout << “Open file1 error!” << endl;
  10.         return ;
  11.     }
  12.     pFile2 = fopen(“..file2.txt”, “w”);
  13.     if (NULL == pFile2)
  14.     {
  15.         cout << “Open file2 error!” << endl;
  16.         return ;
  17.     }
  18.     while (!feof(pFile1))
  19.     {
  20.         memset(word, ‘’, 20);
  21.         memset(sig, ‘’, 20);
  22.         fscanf(pFile1, “%s”, word);
  23.         strncpy(sig, word, strlen(word));
  24.         qsort(sig, strlen(sig), sizeof(char), charcomp);
  25.         fprintf(pFile2, “%s   %sn”, sig, word);
  26.     }
  27.     fclose(pFile1);
  28.     fclose(pFile2);
  29. }


 
 
使用sort程序将具有相同标识的单词归拢到一起,形成一个新的文件。最后调用squash()函数将具有相同变位词的单词在同一行输出。
 

  1. //将具有相同变位词的单词在同一行输出
  2. void squash()
  3. {
  4.     FILE * pFile3 = fopen(“..file3.txt”, “r”);
  5.     if ( NULL == pFile3)
  6.     {
  7.         cout << “Open file3 error!” << endl;
  8.         return ;
  9.     }
  10.     FILE * pFile4 = fopen(“..file4.txt”, “w”);
  11.     if (NULL == pFile4)
  12.     {
  13.         cout << “Open file4 error!” << endl;
  14.     }
  15.     char word[20];
  16.     char sig[20];
  17.     char oldsig[20];
  18.     int linenum = 0;
  19.     memset(oldsig, ‘’, 20);
  20.     while (!feof(pFile3))
  21.     {
  22.         memset(word, ‘’, 20);
  23.         memset(sig, ‘’, 20);
  24.         fscanf(pFile3, “%s %s”, sig, word);
  25.         if (strncmp(sig, oldsig, strlen(sig)) != 0 )
  26.         {
  27.             fprintf(pFile4, “n”);
  28.         }
  29.         strncpy(oldsig, sig, strlen(sig));
  30.         fprintf(pFile4, “%s “, word);
  31.     }
  32.     fclose(pFile3);
  33.     fclose(pFile4);
  34. }

Categories
生活琐碎

【转帖】我来说说HG征税和如何避税

来源不明。

 
作为业内人士和海淘一族,看见论坛上各种揣测与不安,终于鼓足勇气,写了个攻略,仅供大家参考,若说的有理,鼓鼓掌,不同意,也别拍死我……
HG收税的标准是什么?
答:很多人都搞不清楚,下面给出正确答案。
实际购买价格高于500元人民币的,必税!
低于500元人民币的,根据《2012中华人民共和国进境物品完税价格表》,进行计算,总税金,请记住,是总税金不超过50元人民币的,免征税;超过50元人民币的(哪怕是50.1元,也可能被取整数51元)照样收(征)税。
简单来说,您的货物征不征税,取决于(1)完税价格或实际购买价格、(2)税率、(3)计算后的总税金。这是一个有三个变量的复杂数学题。呵呵……
而具体操作时,更为复杂。
(1)汇率问题
关键词:500元、6.28汇率
很多同学疑问,我买的货物是79.9美金,没到80美金啊,怎么还是收税?而且还是51元或52元?
答:HG目前按1美金=6.28元人民币的汇率计算您的货物价值。那么,您可以算一算,500元人民币=79.62美金。也就是说,超过79.6美金的,HG按规定肯定征税。所以同学们,买东西时不要凑到79.6美金以上,毕竟征税的是中国HG,而不是美国HG,是需要用人民币计算滴!
(2)计算税金是按照《完税价格表》上的完税价格,还是货物清单上的实际价格?
关键词:50%和200%
这里面学问就大了。HG收税可以采用《完税价格表》或者货物清单上的实际价格。也就是说,即使您的货物包装里放了货物清单,也未必会以这个为标准进行征税。
两者到底取哪个呢?正确的说法是:
如果您购买的商品的实际价格低于HG完税价格的50%,或者高于HG完税价格的200%,这时,如果您提供了HG要求的购物发票等,HG将按照实际价格进行征税;除此之外,将一律按照HG的完税价格进行征税。
举个例子说吧。
在《完税价格表》中,化妆品类的税率是50%,其中,眼霜的完税价格是200元,需要缴纳的关税为100元。
那么,如果您买了一个眼霜,价格为120元,不属于低于完税价格的50%和高于完税价格的200%,即,不低于100元,也不高于 400元,则HG会按照《完税价格表》中的完税价格200元进行征税,也就是200元×50%=100元的关税。
相反,如果您买的眼霜,低于100元或高于400元,就按购物发票来收税。例如:您购买的眼霜价格为90元或者420元,那么就会按照实际价格来计算,即90×50%=45元或者420元×50%=210元。
相信很多iherb的化妆品都是100元以下的,但也有部分化妆品是100元以上的哟。只要有一个100元以上的化妆品在里面,您肯定得缴税了。因为这个时候是按《完税价格表》来计算的,就一个化妆品的关税已经是100元了,远远超出了50元人民币的标准。
(3)总税金是什么意思?
关键词:所有商品、50元人民币税金
税金计算不是按照单个商品为准的,而是HG采用您一个包裹内所有购买商品税金的总和作为收税标准,也就是说,如果您一个包裹内所有商品的税金累计超过了50元人民币,那么您还是得按照海关要求缴税。当然如果您同一天下了好几个订单,好几个包裹同一天在海关清关,那也是很危险的!
(4)HG计算税金算不算运费?
关键词:不算
HG计算税金时,只用商品的完税价格或实际价格来计算,运费是不考虑在内的。万一某一天,您很倒霉地被人算进运费了,您就找运输公司,让他们改过来。大家也看到了,这么复杂的数学算法,都是人算出来的,一天几千个,只要有人在操作,就有可能出错。问题可能出在清关公司,也可能出在HG,也可能出在任何一个环节,不用愤怒,不用动气,呵呵,生活是如此美好。。。
(5)为什么我的货就没能避过关税?
关键词:守法
iHerb是遵纪守法的正规企业,选择的服务公司也应该是守法的。而我们海淘的人也需要遵纪守法啊,只要合理,我想大部分海淘人还是愿意根据法律缴纳关税的。抱着侥幸心理海淘,我认为是不可取的,当然,如果你很幸运!那我为你高兴,但是也不要声张,否则我们的渠道是会有风险的,你也不希望有一天醒来,起床发现,再也不能海淘了。
大家可能已经从不同渠道了解到,很多做国际物流的公司负责人,都已经销声匿迹了,至于去向,给大家想象空间……相反,一个遵纪守法的,能够提供长期稳定服务的公司才是我们大家需要的。
此外,关于一些个题外话,小小发表下意见:
(1)建议iHerb选择大运输公司服务?
关键词:运费贵
有些同学建议用DHL等大公司服务。几大运输公司的服务是好,但费用也是很客观的,海淘的同志们伤不起啊!现在在iHerb购买80美金以下的产品,两个运输公司运费都是10美金上下。而用过大物流公司服务的人都知道,他们的运费和商品价格差不多,有时候运费比商品价格还高!
(2)为什么清关这么慢?
关键词:不鼓励
根据最近的观察看,祖国对海淘的态度是,承认合法但不鼓励,甚至有些限制。如果您关注国家经济,就应该了解,祖国的政策是出口转内销,扩大内需,让中国以出口为主的企业,开发国内市场,摆脱出口依赖性。那么相对应的,国外产品的大量涌入,是不会受到鼓励的。海关是一国的大门,试想若HG不加限制,每天进关多少清多少,长此以往,中国经济会不会严重受挫?中国的就业会不会受到抑制?社会会不会稳定?所以,不管换几个运输公司,只要HG对海淘的政策不变,大量的海淘所带来的结果只能是越来越慢。

Categories
爪机爪机

CleanROM 6.0.2d 更新日志及下载链接

仅有一些程序上的更新罢了~

  • 键盘:增加Note2软键盘
  • 三星程序:增加S Note
  • 三星程序:增加Note2相机/相册
  • 本地化:增加S4/透明风格的AccuWeather插件
  • 本地化:增加透明风格的新浪天气插件
  • 修复:原本6.0.2c版本中的一些很小的资源文件错位问题

http://lt.imobile.com.cn/forum.php?mod=viewthread&tid=10292775&extra=page%3D1

Categories
生活琐碎

美国eBay海淘手机教程(通过Paypal使用国内银联卡支付)

这个文章或许很长,今天先开个头。
本文主要讲述

  1. 使用国内银联卡支付
  2. 经由Paypal支付平台
  3. 在美国eBay网站
  4. 经过转运公司转运

一台手机的过程。
===========================================
首先你需要一个paypal账号
到 https://www.paypal.com/c2 注册一个
如果你有能关联的国内银行卡那是最好(貌似支持工行建行招行),这样你就会获得账户认真,没有消费额度限制(这个限制是总计的,也就是说你累计到达这个额度后不认证的话就再也不能继续消费了,只能重新开paypal账号)。
如果没有的话,也不要紧,一般来说邮箱认证后你可以累计消费500USD的东西,我想一般来说够一次用了。
只要是国内的银联卡都能作为支付途径,但是你的银联卡必须有开通网银,我想这个基础要求。。。总有达到的吧
paypal都是有中文的,所以不用我多说。
======================================

Categories
不学无术

SQL HAVING 子句

HAVING 子句

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。

SQL HAVING 语法

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value

SQL HAVING 实例

我们拥有下面这个 “Orders” 表:

O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter

现在,我们希望查找订单总金额少于 2000 的客户。
我们使用如下 SQL 语句:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000

结果集类似:

Customer SUM(OrderPrice)
Carter 1700

现在我们希望查找客户 “Bush” 或 “Adams” 拥有超过 1500 的订单总金额。
我们在 SQL 语句中增加了一个普通的 WHERE 子句:

SELECT Customer,SUM(OrderPrice) FROM Orders
WHERE Customer='Bush' OR Customer='Adams'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500

结果集:

Customer SUM(OrderPrice)
Bush 2000
Adams 2000

 
http://www.w3school.com.cn/sql/sql_having.asp

Categories
爪机爪机

i535 V版S3 TWRP Recovery v2.5.0.0

使用第三方Recovery刷入。

百度网盘下载:
http://pan.baidu.com/share/link?shareid=505772&uk=772481359
Team Win Recovery Project 2.x, or twrp2 for short, is a custom recovery built with ease of use and customization in mind. It’s a fully touch driven user interface – no more volume rocker or power buttons to mash. The GUI is also fully XML driven and completely theme-able. You can change just about every aspect of the look and feel.
CHANGELOG for 2.5.0.0:
Special Note: If you are running a custom theme, you will likely need to remove that theme before updating to 2.5.0.0 as your custom theme will likely not be compatible with the new changes!
-Added scrollable partition lists for mount, backup, restore, wipe, and storage selection
-Add new SliderValue GUI element for selecting brightness and screen timeout (thanks to Tassadar)
-Re-work AOSP and TWRP code to improve license compatibility between GPL and Apache
-Added official theme for 1080×1920 portrait devices (HTC One m7, HTC DNA, HTC Butterfly, Oppo Find 5, Sony Xperia Z, etc)
-Fixed a problem with directory permissions on split archive backups (backups usually restored with no app data)
-Fixed a problem with md5 verification of backups
-Added a search function to libtar (thanks to kokotas)
-Improve handling of XML errors (fix permissions)
-Fixed handling of subpartitions
-Improvements to recovery.fstab flags
-Fixed a problem with decryption not being able to locate the decryption key in some situations
 

source:

http://forum.xda-developers.com/showthread.php?t=1768142

Categories
爪机爪机 生活琐碎

江苏 南京 电信 天翼 获得免费流量办法汇总【201304】

大部分内容来自百度【江苏电信】吧,谢谢吧里的牛人!!
以下所有东西本人实测可用!
================================================================
1.推荐好友获得300MB流量
活动网址:http://118.85.200.192:8080/jsyoung/wap/index.jsp
吧内的热心网友做了自动的程序,推荐人里面填写自己的手机号即可,然后开始吧
成功后软件不会提示,但是你的手机会收到成功的短信的。
软件下载:http://pan.baidu.com/share/link?shareid=499830&uk=772481359
================================================================
2.【30M】
【wapjs.189.cn/presentflow/present-flow!getFlow.action?flowType=30】
【复制粘贴,登录掌上营业厅,404页面不存在,再粘贴到地址栏,领取成功,以前没有参加过这个活动的吧友显示需要下载软件,不能领取了】
================================================================
3.【100M】
【wapjs.189.cn/presentflow/present-flow!getFlow.action?flowType=100】
【复制粘贴,登录掌上营业厅,404页面不存在,再粘贴到地址栏,领取成功,以前没有参加过这个活动的吧友显示需要下载软件,不能领取了】
================================================================
4.【100M】
【发送100M到10001参加】
【本月全国通话达到100分钟即送100M】
================================================================
5.【100M】
【 提取出来的翼支付领流量插件,下载地址:http://yunpan.cn/QEPB9giqF8TUG】
【下载安装,点击领流量】
================================================================
6.【30M+100M】
【发送zt到10001下载最新版掌厅】
【摇一摇送30M,分享再送100M,号码把你后几位随便改一位】
================================================================
7.【100M】
【智慧江苏,下载地址:http://passport.smartjs.cn/download.jsp?fileName=SmartJS.apk】
【摇一摇送100M流量】
【南京地区限制】
================================================================
南京的就这么些了,苏州无锡的还多一点。。
 
 

Categories
生活琐碎

日记

今天早上收到KPW,很好没有税,走的是上海的海关应该,上海人这点比较靠谱。
然后卖家690挂在淘宝上,立马有人来问了,中午就卖掉寄出了。这次学聪明了,运费到付,24小时内确认收货返运费,吸取上次没有N久没收到货款的情况。下一步却不知道买什么了,感觉购物欲消除了?最近有别的东西要忙吧。
电脑出现了无法休眠/睡眠的问题,原来是被软妹的屎软件弄了个离开模式,注册表搜索键EnableAwayMode改成0就一切正常了。
数模弄了个M奖,对于自己来说很是开心,本人都没上过学校正规的培训课,matlab学了一个月不到,但是队里所有代码方面的工作包括一些奇葩算法都是我弄的,觉得自己算是尽力了。数模5天睡得也不错,除了最后一晚通宵之外,前几天基本12点之前就睡觉了,我比较不喜欢大半夜不睡觉,觉得半夜绞尽脑汁想出的东西第二天可能一看就知道是错的。
事情依旧比较多,这是没办法的事情。生活就像强奸,要学会接受,学会享受?

Categories
生活琐碎

日记

Kindle Paperwhite已经发货,速度还是很快的,估计一周内能收到,希望南京海关刀下留情。
目前成本:
93.38(运费,含paypal用日元支付产生的手续费若干)+
538.57(Amazon费用,含腾讯财付通虚拟运通卡的支付手续费若干)=
RMB631.95
发现淘宝上卖的日本耳机成本低利润高,下次准备试试水。
在此先谢谢腾讯,没有它的运通卡我只能逛逛paypal了。
 
今日购买:
51nb上卖的人造MX500一条,约合100RMB,之前在他们家买过BOSE IE,感觉很不错。
清明团子,2.5元一枚*20枚,因为50元包邮….不知道自己是怎么想的,感觉吃不完了》。。不过可以分给同学吃
怀念这种味道,好久好久没吃到了。
觉得自己比较败家,不过目前来看用掉的钱还算在收入范围内抵掉了。