mysql查看数据库(数据表)大小

今天客户突然问起来说数据库有多少G?说是想要看看迁移到云数据库服务上,准备不再自己管理数据库服务器了

不由得心中一惊,想不到数据居然有这么大?难道接手了一个大项目

赶紧登录到系统里查看一下,结果才300多M的数据,离G级还远着呢

#从服务器登录到mysql服务器

$mysl -h xx.xx.xx.xx -u xxx -p

# 进入information_schema 数据库

myslq> use information_schema;

# 查询所有数据的大小

select concat(round(sum(data_length/1024/1024),2),’MB’) as data from tables;

#查看指定数据库大小

select concat(round(sum(data_length/1024/1024),2),’MB’) as data from tables where table_schema=’xxxxx’;

#查看指定表的大小

select concat(round(sum(data_length/1024/1024),2),’MB’) as data from tables where table_schema=’xxxx’ and table_name=’xxxx’;

下载文件时safari上中文文件名乱码的处理办法(php代码实现)

php一段代码,处理文件下载时的文件名,后来客户反馈说firefox,safari下的中文文件名不能正常显示。

        $file_info['title'] = rawurlencode($file_info['title']);
        $filename=iconv('utf-8', 'gbk', $file_info['title']);
        header("Content-Disposition:attachment;filename = " . $filename);

修正为以下内容后firefox,safari下正常显示

如果没有兴趣请看简版,一句话解决
if (preg_match("/Safari/", $ua)) { 
header( 'Content-Disposition: attachment; filename*="UTF-8\'\'' .  rawurlencode($file_info['title']) );
}

之前试过和firefox一样处理方法,结果下载的文件名连扩展名都没有了
 header( 'Content-Disposition: attachment; filename*=UTF-8\'\'' .  rawurlencode($file_info['title'])  . '"' ); 

兜兜转转后发现去掉一对双引号就可以,

求此时此刻内心的阴影面积

一堆代码参考一下。


        $file_info['title'] = rawurlencode($file_info['title']);
        $filename=iconv('utf-8', 'gbk', $file_info['title']);
//        header("Content-Disposition:attachment;filename = " . $filename);


        $encoded_filename =  $file_info['title'] 
        $ua = $_SERVER["HTTP_USER_AGENT"];
        //IE
        if(preg_match("/MSIE/", $ua) || preg_match("/Trident\/7.0/", $ua)){
            header('Content-Disposition: attachment; filename="' . $encoded_filename . '"');
        } else if (preg_match("/Firefox/", $ua)) {
            header('Content-Disposition: attachment; filename*="utf8\'\'' . $filename . '"');
        } else if (preg_match("/Safari/", $ua)) {
            header( 'Content-Disposition: attachment; filename*=UTF-8\'\'' . $encoded_filename );
        } else {
            header('Content-Disposition: attachment; filename="' . $filename . '"');
        }

相关原理有请度娘上场

浏览器能正确识别的编码格式,只要按照这样的编码来设置对应的Content-Disposition,那么应该就不会出现中文文件名的乱码问题了。 
首先,Content-Disposition值可以有以下几种编码格式 
1. 直接urlencode: 

    Content-Disposition: attachment; filename=”struts2.0%E4%B8%AD%E6%96%87%E6%95%99%E7%A8%8B.chm” 

2. Base64编码: 

    Content-Disposition: attachment; filename=”=?UTF8?B?c3RydXRzMi4w5Lit5paH5pWZ56iLLmNobQ==?=” 

3. RFC2231规定的标准: 

    Content-Disposition: attachment; filename*=UTF-8”%E5%9B%9E%E6%89%A7.msg 

4. 直接ISO编码的文件名: 

    Content-Disposition: attachment;filename=”测试.txt” 

然后,各浏览器支持的对应编码格式为: 

1.  IE浏览器,采用URLEncoder编码 
2.  Opera浏览器,采用filename*方式 
3.  Safari浏览器,采用ISO编码的中文输出 
4.  Chrome浏览器,采用Base64编码或ISO编码的中文输出 
5.  FireFox浏览器,采用Base64或filename*或ISO编码的中文输出 

new_filename = URLEncoder.encode(filename, “UTF8”);  
// 如果没有UA,则默认使用IE的方式进行编码,因为毕竟IE还是占多数的  
rtn = “filename=\”” + new_filename + “\””;  
if (userAgent != null)  
{  
     userAgent = userAgent.toLowerCase();  
      // IE浏览器,只能采用URLEncoder编码  
     if (userAgent.indexOf(“msie”) != -1)  
    {  
        rtn = “filename=\”” + new_filename + “\””;  
    }  
     // Opera浏览器只能采用filename*  
     else if (userAgent.indexOf(“opera”) != -1)  
     {  
        rtn = “filename*=UTF-8”” + new_filename;  
    }  
    // Safari浏览器,只能采用ISO编码的中文输出  
      else if (userAgent.indexOf(“safari”) != -1 )  
      {  
          rtn = “filename=\”” + new String(filename.getBytes(“UTF-8″),”ISO8859-1”) + “\””;  
      }  
      // Chrome浏览器,只能采用MimeUtility编码或ISO编码的中文输出  
      else if (userAgent.indexOf(“applewebkit”) != -1 )  
       {  
         new_filename = MimeUtility.encodeText(filename, “UTF8”, “B”);  
          rtn = “filename=\”” + new_filename + “\””;  
       }  
      // FireFox浏览器,可以使用MimeUtility或filename*或ISO编码的中文输出  
       else if (userAgent.indexOf(“mozilla”) != -1)  
       {  
          rtn = “filename*=UTF-8”” + new_filename;  
      }  
   }  

ref:

https://my.oschina.net/u/1391970/blog/215361

https://blog.csdn.net/weixin_30701575/article/details/97463481

https://my.oschina.net/junn/blog/97699

https://bbs.csdn.net/topics/390424956 最后解决的来源

header( ‘Content-Disposition: attachment; filename*=UTF-8\’\” . rawurlencode ( $originfile ) );

我们生活在“Python时代”

编者按:人生苦短,Python是岸。近年来随着人工智能和机器学习的发展,Python大火,但其实Python并不是一门年轻的语言,早在1991年它就出现了。这门编程语言已经发展了多年,在可预见的未来也会继续保持它的地位。如今是Python的世界,花时间学习Python编程语言将是你对未来最好的投资。本文译自Medium,作者Rinu Gour,原标题为” We are Living in “The Era of Python””,希望对您有所启发。

1989年,Guido van Rossum在参加设计ABC(一种教学语言)后,萌生了想要开发一种新语言的想法。1989年他创立了python语言。1991年初python公布了第一个公开发行版。

你知道吗?

Python编程语言一点也不年轻,它是由荷兰程序员吉多·范罗苏姆(Guido van Rossum)于1991年首次发布的。

Python有意思的地方在于,他是一个人的工作成果,而大多数其他流行的编程语言都是由雇佣了大量专业人员的大公司开发和发布的。Python是个例外!

当然,并不是python的所有组件都是由范罗苏姆独自一人开发的,它是一个开源项目,成千上万的人都对Python的开发做出了贡献。尽管python经过多年的发展已经有了很大的进步,但它的使用目的与当年相差不大。

Python的诞生

开发python的主要目的是帮助程序员编写逻辑清晰的代码。这就是它在开发人员中如此流行的原因。Python非常强大,可以被用于Web开发、游戏开发、为桌面应用程序构建脚本和GUI、配置服务器、执行科学计算和进行数据分析。

Python几乎可以用于任何事情!

在这些主要的编程语言中,Python在最近几年发展非常迅速。Stack Overflow 开发者调查显示,Python 是增长最快的主流编程语言。

那么,这些年到底发生了什么?python为什么发展得这么快?

那是因为以下技术的发展促进了python语言的快速使用。

Python – AI的最佳选择

人工智能(AI)和机器学习(ML)技术的进步已经超越了科幻小说。

正如克里斯·达菲(Chris Duffey)在他的书《超人的创新》(Superhuman Innovati)中所说,

“人工智能的唯一限制是人类的想象力。”

如今,随着数据量的扩大,人工智能和机器学习正在处理那些在过去似乎不可能完成的任务。所有的科技巨头(Facebook、微软、谷歌、亚马逊)都在积极开张数据工作,争先恐后地为促进这些领域的发展做出贡献。

根据研究,人工智能和机器学习实践者更喜欢使用python,因为python易于编码和可读性较高,这样我们就不会被语言的结构所困扰。

Python是数据科学的支柱

世界上充满着大量的数据。全球范围内的数据如同海啸,而且数据量每天都在变得越来越大。我们现在所做的一切都都可以产生数据。不管是拍照,在社交媒体上发表评论,在网上进行搜索,网上购物……这一切都会被记录下来。

到2020年,预计每天将产生44兆字节的数据。但是,如果我们不能收集、整理、分析和应用数据来造福社会,这些数据就毫无用处。这也就是数据科学的用途。

Python在数据科学中被大量使用。python社区已经开发出了用于处理数据的优秀库,如Numpy、pandas、sci-kit-learn等。在收集数据、清理数据集、提取重要特性、构建机器学习模型和使用图形可视化结果方面,python提供了丰富的特性集来执行这些任务。

“数据科学家的工作越来迷人,”Indeed的经济学家、报告的作者安德鲁·弗劳尔斯(Andrew Flowers)说。“越来越多的雇主希望聘用数据科学家。”

Github每年都会进行一次年度调查,让我们看看Python这些年是如何增长起来的。

像Spotify、Netflix、Quora、Facebook和谷歌这样的大公司已经深入开发了Python。谷歌从一开始就支持Python,它现在是谷歌的官方服务器端语言。他们将许多用Bash或Perl编写的脚本重新编码为Python。

谷歌的研究主任彼得·诺维德(Peter Norvig)说:“从一开始,Python就一直是谷歌的重要组成部分,并且随着系统的发展和演变,到现在也是如此。如今,很多谷歌工程师使用Python,我们也正在寻找更多掌握这门语言技能的人。”

Spotify和Netflix非常依赖python来分析它们在服务器端的庞大数据量。通过分析来自数百万用户的信息,他们可以为每个用户提供更好的建议,这就是他们赚取数十亿美元利润的方式。

Python不是一门年轻的语言,它已经发展了多年,并将在未来几年继续保持它的地位。如今是Python的世界,花时间学习Python编程语言将是你对未来最好的投资。

c#连postgresql出现不支持关键字: “provider”错误

c#连接postgresql 数据库,照着例子使用 SqlConnection 结果报出异常,System.ArgumentException:“不支持关键字: “provider”。”

SqlConnection Connection = new SqlConnection( GetConnectionString())

原来为了连接postgresql用的是OleDb连接,而SqlConnection 是专门用于SQL Server 的,所以出错。看来用c#的时候还是微软自己的全家桶比较方便。

使用 Sql 开头的对象,名称空间是:
System.Data.SqlClient

使用 OleDb 开头的对象,名称空间是:
System.Data.OleDb

ref: https://blog.csdn.net/l8487/article/details/2170843

python的关键字(保留字)keyword

写代码时,取名字是个技术活,然而在程序语言中总有些特殊的词语不能用来做变量名,这些词语就是传说中的关键字(保留字)keyword

各类语言的关键字(保留字)各不相同,像java中的package, abstract 也是。

那么在python中要怎么记呢,会不会一不小心就触雷?这真是个让人头大的问题

还好python比较以人为本,为大家贴心推出了keyword模块,通过 keyword.kwlist 可以列出全部的关键字,通过 keyword.iskeyword(‘ xx’) 可以判断这个字是不是关键字

import keyword
keyword.kwlist
[‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘async’, ‘await’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
keyword.iskeyword(‘else’)
True