HDF5学习资料

官网 https://www.hdfgroup.org/ Python相关的软件包 参考 https://support.hdfgroup.org/products/hdf5_tools/SWSummarybyType.htm h5py: Python interface to HDF5,http://www.h5py.org/ PyTables: Python API to organize and manipulate scientific data tables and other numeric objects http://www.pytables.org/ HDFql: High-level language for HDF5 (similar to SQL),Tool to manage HDF5 files. Reads and writes HDF data through a simple and clean interface.http://www.hdfql.com/ Pomegranate:Management and Access,Web service software, web API, library and command line tool. An open source Python application that implements the open Webification (w10n) Science API for major scientific data stores (HDF, NetCDF, etc.

MariaDB使用(1)

启用 MySQL 慢查询日志 记录慢查询可以帮助你定位数据库中的问题并帮助你调试。这可以通过在你的 MySQL 配置文件中添加以下值来启用: # # Enable the slow query log to see queries with especially long duration #slow_query_log[={0|1}] slow_query_log = 1 slow_query_log_file = /var/log/mysql/mariadb-slow.log long_query_time = 10 第一个变量启用慢查询日志,第二个告诉 MySQL 实际的日志文件存储位置。使用 long_query_time 来定义完成 MySQL 查询多少用时算长。 修复和优化 MariaDB 数据库 mysqlcheck -u**** -p**** --auto-repair --check --all-databases mysqlcheck -u**** -p**** --optimize --all-databases 用 mysqltuner 测试 MySQL 的性能 #安装 aptitude install mysqltuner #查看帮助 mysqltuner --help #检测 mysqltuner #然后按照检测报告再调整MariDB的设置吧

淘宝技术这十年

任何NB的人物,都有苦逼的经历。 好的架构是进化来的,不是设计来的。好的功能也是进化来的,不是设计来的。 归纳网站遇到的问题,主要是对性能,容量和成本的控制。 好的架构图充满美感。 —- 很熟悉, 和黑客与画家作者的某些观点类似. 在任何时候,开发语言本身都不是系统的瓶颈,业务带来的压力更多的存在于数据和存储方面。 自主研发的系统可以在软件和硬件的多个层次之间不断优化。 技术和业务是互相借力相互推动的,不能满足业务需求的时候,技术必须创新,技术的创新又会为业务提供更大的发展空间。 新技术对用户操作习惯的改变,一定要慎之又慎。 Berkeley DB 在数据量超过内存的时候就会往磁盘写数据,这时候作为缓存的性能就会大幅下降。 一切要以稳定为中心,所有影响系统稳定的因素都要解决掉。每做一个日常修改,都必须对整个系统回归测试一遍。 集群:互联网能否集群化受限于应用在水平伸缩上的支撑能力,集群的规模受限于调度,数据库,机房等。

MongDB使用(1)

MongoDB保存数据时,字段名带点号时的存取 写了一个函数完成数据存取时的转换: 假设我们用 ‘dot’ 替代 ‘.’, 存的时候调用: dot_replace(theDict,'.','___dot___') 取的时候调用: dot_replace(theDict,'___dot___','.') 函数源代码: def dot_replace(theDict,old_str,new_str): #将字典(包括嵌套字典中的key 中的点号替换掉 for k in theDict: if str(type(theDict[k])) == "<class 'dict'>" : # k 对应的值本身是字典的情况 dot_replace(theDict[k],old_str,new_str) if old_str in k:# key 是字典的情况 #替换 new_k = k.replace(old_str,new_str) theDict[new_k] = theDict[k] theDict.pop(k) #print(theDict)

黑客与画家(14/15):梦寐以求的编程语言/设计与研究/术语解释

编程语言越抽象,你写出程序所需的运算步骤就越少, 每一步的功能就越强. 贝叶斯定理: 一种统计推断的方法, 又称贝叶斯算法. Bulb困境: 程序员的思想往往会受到自己正使用的语言的束缚, 不相信还存在更强大的语言. 宏: 能够生成其他程序的程序. 奥卡姆剃刀: 简单的解释就是较好的解释. 正交的: 彼此独立, 能够以多种方式组合在一起的一组东西. 管道pipe: 将操作系统的各种命令连接起来的一种方式, 使得一个命令的输出变成另一个命令的输入. 套接字socket: Unix操作系统的一种内部渠道, 不同计算机的进程通过它可以在网络上交换信息. SSH: Secure Shell SSL: Secure Socket Layer

黑客与画家(13):书呆子的复仇

各种编程语言的编程能力是不同的. Python语言模仿Lisp, 甚至把许多Lisp黑客认为属于设计错误的功能也一起模仿了. Lisp语言是无意中从纯理论发展为编程语言的.直到今天, 最高级的主流语言也只是刚刚接近 Lisp 的水平,但还是没有 Lisp那样强大. 为什么 Lisp 语言很特别 Lisp 语言诞生时就包含了9种新思想, 按照大众的接受程度排列如下: (1) 条件结构 if-then-else (2) 函数也是一种数据类型. 在 Lisp 语言中, 函数与整数或者字符串一样, 也属于数据类型的一种. 它有自己的字面表示形式( literal representation), 能够存储在变量中, 也能当参数传递.一种数据类型应该有的功能, 它都有. (3) 递归.Lisp是第一种支持递归函数的高级语言. (4) 变量的动态类型.在 Lisp 语言中, 所有变量实际上都是指针, 所指向的值有类型之分, 而变量本身没有. 复制变量就相当于复制指针, 而不是复制它们指向的数据. (5) 垃圾回收机制. (6) 程序由表达式组成. Lisp程序是一些表达式树的集合, 每个表达式都返回一个值. (7) 符号类型. 符号实际上是一种指针, 指向存储在散列表中的字符串. 所以, 比较两个符号是否相等, 只要看它们的指针是否一样就行了,不用逐个字符地比较. (8) 代码使用符号和常量组成的树形表示法. (9) 无论什么时候,整个语言都是可用的. Lisp 并不真正区分读取期, 编译期和运行期.你可以在读取期编译或运行代码, 也可以在编译期读取或运行代码, 还可以在运行期读取或者编译代码. 一般来说, 条件越苛刻的项目, 强大的编程语言就越能发挥作用. ITA 的软件的核心是一个 20 万行的 Common Lisp程序, 其搜索能力比竞争对手高出许多个数量级, 该程序使用了大量的宏.

黑客与画家(12):拒绝平庸

黑客应该学的语言: python: 入门比较容易 C: 对付Unix, 高级一点的黑客 Lisp: 真正非常严肃地把黑客作为人生目标的人,应该考虑学习 Lisp. Lisp很值得学习, 你掌握它之后, 会感到它给你带来的极大启发.这会大大提高你的编程水平,使你成为一个更好的程序员 Lisp是一种抽象层次非常高的语言, 用它开发软件不需要非常庞大的开发团队, 这会降低成本. 在竞争中, 你的对手无法理解你的技术优势, 这可是再宝贵不过了. 对手摸不透你, 你的胜算就增加了.创业公司对竞争对手应该越保密越好. Lisp 是目前最强大的编程语言.它没有得到广泛使用的原因就是因为编程语言不仅仅是技术, 也是一种习惯性思维, 非常难于改变. Lisp代码由Lisp数据对象构成, 其他语言的源代码一般由字符组成.经过解析处理后, Lisp代码就变成了你可以遍历的数据结构. 如果你理解编译器的工作原理, 那么事实是, 与其说Lisp有一种很奇特的语法, 还不如说它根本没有语法.一般的源代码程序经过编译器解析会生成解析树. Lisp 的奇特之处就在于, 你可以完全写出程序控制这种解析树, 进行任意的存取操作. Lisp 的这种程序就叫做宏, 它们可以用来生成其他程序. 在商业竞争中使用 Lisp语言就会带来优势.

黑客与画家(10/11):编程语言解析/100年后的编程语言

所有机器都有一张操作命令清单, 让你可以控制它.计算机也一样.这种操作命令的总和就是计算机的机器语言. 机器语言和汇编语言的共同问题就是, 只能让计算机做一些很简单的事情. 一个操作所需的代码越多, 就越难避免bug, 也越难发现它们. 高级语言写出的程序长度只有机器语言的五分之一,所以错误更容易被发现. 如果你长期使用某种语言, 你就会慢慢按照这种语言的思维模式进行思考.各种语言天差地别. 一种语言的内核设计的越小,越干净, 它的生命力就越顽强. 对速度的追求是人类内心深处根深蒂固的欲望. 如果我们把一种语言的内核设想为一些基本公理的集合, 那么仅仅为了提高效率就往内核添加多余的公理,却没有带来表达能力的提升,这肯定是一件很糟糕的事.

黑客与画家(9):设计者的品味

众多不同学科对美的认识有着惊人的相似度.优秀设计的原则是许多学科的共同原则,一再反复的出现. 好设计是简单的设计.当你被迫把东西做的很简单时,你就被迫直接面对真正的问题.当你不能用表面的装饰交差时,你就不得不做好真正的本质的部分. 好设计是永不过时的设计.美感是第一道关卡.丑陋的数学在世界上无法生存.如果解决方法是丑陋的,那就肯定还有更好的解决方法,只是还没有发现而已.以永不过时作为目录是一种帮助自己找到最佳答案的方法;如果你不愿别人的答案取代你的答案,你就只好自己做出最佳答案.以永不过时作为目标也是一种避开时代风潮的影响的方法. 好的设计是解决主要问题的设计.答案可以不断改进, 同样, 问题本身也可以不断改进.软件的难题通常可以被改成等价的较易解决的形式. 好设计是启发性的设计.在软件业中, 这条原则意味着, 你应该为用户提供一些基本模块, 使得他们可以随心所欲自由组合, 就像玩乐高积木那样. 好设计通常是有点趣味性的设计. 幽默一定程度上反映了力量.幽默感是强壮的一种表现.强壮的标志就是轻松面对自己的人生.充满自信的人常常像燕子一样,以一种居高临下的姿态轻盈的看待周围的一切. 好的设计是艰苦的设计.如果你工作的不艰苦, 你可能正在浪费时间.困难的问题需要艰巨的付出才能解决.高难度的数学证明需要结构非常精细的解决方法(它们往往做起来很有趣),工程学也是如此.当你攀登高山时,必须扔掉一切不必要的装备.在困难地点或者预算不足的条件下, 建筑师就只能做出很简练的设计.当解决难题成为压倒一切的任务时,那些流行样式与华丽装饰都被抛到一边去了.并非所有的痛苦都是有益的.你需要的是咬牙向前冲刺的痛苦,而不是脚被钉子扎破的痛苦.解决难题的痛苦对设计师有好处, 但对付挑剔的客户的痛苦或者对付质量低劣的建材的痛苦就是另外一回事了. 人们常常觉得野生动物非常优美,原因就是他们的生活非常艰苦, 在外形上不可能有多余的部分了. 好设计是看似容易的设计. 在大多数领域,看上去容易的事情,背后都需要大量的练习.人们有时会说自己有了状态, 作者的理解是, 他们这时可以控制自己的脊髓.脊髓是更本能的反映, 面对难题时, 它能释放你的直觉. 好的设计是对称的设计.对称也许只是简洁性的一种表现, 但是它十分重要,值得单独列为一点. 自然界的对称大量存在, 这就说明了对称的重要性.对称有两种,重复性的对称和递归性的对称.递归性的对称就是子元素的重复, 比如树叶上叶脉的纹路.在数学和工程学中,递归尤其有用.归纳式证明方法既简洁又美妙.在软件中, 能用递归解决的问题通常代表已经找到了最佳解法. 对称的危险在于它可以用来取代思考,在大量使用重复的时候这种危险性更大. 好的设计是模仿大自然的设计.我们不是说模仿大自然行为本身, 而是说大自然在长期的演化中已经解决了很多设计问题.所以如果你的设计与大自然很接近,那么它基本上不会很差.现在的计算机已经很强大了, 不仅能模拟出大自然的环境, 还能模拟出大自然发展演化的结果. 遗传算法可能会创造出正常条件下难以设计的复杂事物. 好设计是一种再设计.很少有人一次就把事情做对.专家的做法是先完成一个早期原型, 然后提出修改计划,最后把早期原型扔掉.你应该培养对自己的不满. 好设计是能够复制的设计.我们对待复制的态度经常是一个否定之否定的过程.刚入门的新手不知不觉的模仿他人,逐渐熟练之后才开始创作原创性作品,最后他会意识到, 把事情做对比原创更重要.等到你逐渐对一件事情产生热情的时候, 就不会满足于模仿了.你的品味就进入了第二阶段, 开始自觉的进行原创.作者认为,最伟大的大师最终会达到一种超脱自我的境界.他们一心想找到正确答案, 如果别人已经回答出了一部分, 那就没有理由不拿来用.他们足够自信的使用他人的成果, 完全不担心因此丧失个人的特点. 好设计常常是奇特的设计.他们不仅优美,而且美的很奇特. 唯一达到奇特的方法,就是追求做出好的作品, 完成后再回过头来看. 好设计是成批出现的.推动人才成批涌现的最大因素就是, 让有天赋的人聚在一起,共同解决某个难题.互相激励比天赋更重要. 好设计常常是大胆的设计.发现丑陋的东西要比想象出一个优美的东西更容易.大多数做出优美成果的人好像只是为了修正他们眼中丑陋的东西.单单是无法容忍丑陋的东西还不够, 只有对这个领域非常熟悉, 你才可能发现哪些地方可以动手改进.你必须锻炼自己. 只有在成为某个领域的专家之后,你才会听到心里有一个细微的声音说”这样解决太糟糕了!一定有更好的选择!“不要忽视这种声音, 要培育他们. 优秀作品的秘诀就是: 非常严格的品味, 再加上实现这种品味的能力.

黑客与画家(7/8):关注贫富分化,防止垃圾邮件的一种方法

作者发现只要对单个词语进行贝叶斯判断,就能很好地过滤掉大部分垃圾邮件.统计学方法的一大优点就是, 你不需要一封封去看垃圾邮件. 如果你与奴隶比赛,你也会变成一个奴隶.贝叶斯方法的真正优点在于你知道自己正在计算的是什么东西,贝叶斯方法为每封邮件算出一个概率.计算概率当然也会出错,但是至少意义上很清楚. 因为贝叶斯方法计算的是概率,所以它必须考虑所有线索,不管是肯定性线索还是否定性线索. 作者提倡白名单主要是为了节约计算,而不是认为这样可以改进过滤器的效果. 作者对贝叶斯方法寄予厚望, 因为它的过滤能力可以随着垃圾邮件一起进化. —— 方法和模型随着数据的更新而更新. 在所有对抗垃圾邮件的方法中, 作者认为单独来看, “贝叶斯过滤”是最有效的工具.但是作者认为,我们使用的不同方法越多,综合效果就越好.过滤器的差异越大, 垃圾邮件想要逃过拦截就越不可能. —- 综合多方法过滤垃圾邮件比较好, 过滤垃圾股也一样.