0%

python面向对象编程,解释性语言,脚本语言
万丈高楼平地起,根基,基础,高级,方便自动化
处理数字:删选,计算器
处理字符串:excel word文本统计 xml json格式
处理声音:变声 TTL NLP
处理图像:图像识别 图像分类
处理视频:视频检测,动作识别,物体分类,对图像的进一步处理,连续帧

NoSQL入门

NoSQL概述

如今,大多数的计算机系统(包括服务器、PC、移动设备等)都会产生庞大的数据量。其实,早在2012年的时候,全世界每天产生的数据量就达到了2.5EB(艾字节,$$1EB\approx10^{18}B$$)。这些数据有很大一部分是由关系型数据库来存储和管理的。 早在1970年,E.F.Codd发表了论述关系型数据库的著名论文“A relational model of data for large shared data banks”,这篇文章奠定了关系型数据库的基础并在接下来的数十年时间内产生了深远的影响。实践证明,关系型数据库是实现数据持久化最为重要的方式,它也是大多数应用在选择持久化方案时的首选技术。

阅读全文 »

关系数据库入门

关系数据库概述

  1. 数据持久化 - 将数据保存到能够长久保存数据的存储介质中,在掉电的情况下数据也不会丢失。

  2. 数据库发展史 - 网状数据库、层次数据库、关系数据库、NoSQL数据库。

    1970年,IBM的研究员E.F.Codd在Communication of the ACM上发表了名为A Relational Model of Data for Large Shared Data Banks的论文,提出了关系模型的概念,奠定了关系模型的理论基础。后来Codd又陆续发表多篇文章,论述了范式理论和衡量关系系统的12条标准,用数学理论奠定了关系数据库的基础。

  3. 关系数据库特点。

    • 理论基础:集合论和关系代数。

    • 具体表象:用二维表(有行和列)组织数据。

    • 编程语言:结构化查询语言(SQL)。

  4. ER模型(实体关系模型)和概念模型图。

    ER模型,全称为实体关系模型(Entity-Relationship Model),由美籍华裔计算机科学家陈品山先生提出,是概念数据模型的高层描述方式,如下图所示。

    • 实体 - 矩形框
    • 属性 - 椭圆框
    • 关系 - 菱形框
    • 重数 - 1:1(一对一) / 1:N(一对多) / M:N(多对多)

    实际项目开发中,我们可以利用数据库建模工具(如:PowerDesigner)来绘制概念数据模型(其本质就是ER模型),然后再设置好目标数据库系统,将概念模型转换成物理模型,最终生成创建二维表的SQL(很多工具都可以根据我们设计的物理模型图以及设定的目标数据库来导出SQL或直接生成数据表)。

  5. 关系数据库产品。

    • Oracle - 目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库,它实现了分布式处理的功能。在Oracle最新的12c版本中,还引入了多承租方架构,使用该架构可轻松部署和管理数据库云。
    • DB2 - IBM公司开发的、主要运行于Unix(包括IBM自家的AIX)、Linux、以及Windows服务器版等系统的关系数据库产品。DB2历史悠久且被认为是最早使用SQL的数据库产品,它拥有较为强大的商业智能功能。
    • SQL Server - 由Microsoft开发和推广的关系型数据库产品,最初适用于中小企业的数据管理,但是近年来它的应用范围有所扩展,部分大企业甚至是跨国公司也开始基于它来构建自己的数据管理系统。
    • MySQL - MySQL是开放源代码的,任何人都可以在GPL(General Public License)的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。
    • PostgreSQL - 在BSD许可证下发行的开放源代码的关系数据库产品。
阅读全文 »

玩转Linux操作系统

说明:本文中对Linux命令的讲解都是基于名为CentOS的Linux发行版本,我自己使用的是阿里云服务器,系统版本为CentOS Linux release 7.6.1810。不同的Linux发行版本在Shell命令和工具程序上会有一些差别,但是这些差别是很小的。

操作系统发展史

阅读全文 »

Web前端概述

说明:本文使用的部分插图来自Jon Duckett*先生的HTML and CSS: Design and Build Websites*一书,这是一本非常棒的前端入门书,有兴趣的读者可以在亚马逊或者其他网站上找到该书的购买链接。

HTML简史

  1. 1991年10月:一个非正式CERN(欧洲核子研究中心)文件首次公开18个HTML标签,这个文件的作者是物理学家蒂姆·伯纳斯-李,因此他是万维网的发明者,也是万维网联盟的主席。
  2. 1995年11月:HTML 2.0标准发布(RFC 1866)。
  3. 1997年1月:HTML 3.2作为W3C推荐标准发布。
  4. 1997年12月:HTML 4.0作为W3C推荐标准发布。
  5. 1999年12月:HTML4.01作为W3C推荐标准发布。
  6. 2008年1月:HTML5由W3C作为工作草案发布。
  7. 2011年5月:W3C将HTML5推进至“最终征求”(Last Call)阶段。
  8. 2012年12月:W3C指定HTML5作为“候选推荐”阶段。
  9. 2014年10月:HTML5作为稳定W3C推荐标准发布,这意味着HTML5的标准化已经完成。
阅读全文 »

Python语言进阶

  1. 数据结构和算法
    • 算法:解决问题的方法和步骤
    • 评价算法的好坏:渐进时间复杂度和渐进空间复杂度
      O(c)-常量时间复杂度-布隆过滤器/哈希存储
      O(log2n)-对数时间复杂度-折半查找(二分查找)
      O(n)-线性时间复杂度-顺序查找/桶排序
      O(n*log2n)-对数线性时间复杂度-高级排序算法(归并排序,快速排序)
      O(n^2)-平方时间复杂度-简单排序算法(选择、插入、冒泡)
      O(“n^3)-立方时间复杂度-Floyd算法/矩阵乘法运算
      O(2^n)-几何级数时间复杂度-汉诺塔
      O(n!)-阶乘时间复杂度-旅行经销商问题-NP
    • 排序算法(选择 冒泡 归并)查找算法(顺序 折半)
      选择排序:
阅读全文 »

图像和办公文档处理

用程序来处理图像和办公文档经常出现在实际开发中,Python的标准库中虽然没有直接支持这些操作的模块,但我们可以通过Python生态圈中的第三方模块来完成这些操作。

操作图像

计算机图像相关知识

  1. 颜色。如果你有使用颜料画画的经历,那么一定知道混合红、黄、蓝三种颜料可以得到其他的颜色,事实上这三种颜色就是被我们称为美术三原色的东西,它们是不能再分解的基本颜色。在计算机中,我们可以将红、绿、蓝三种色光以不同的比例叠加来组合成其他的颜色,因此这三种颜色就是色光三原色,所以我们通常会将一个颜色表示为一个RGB值或RGBA值(其中的A表示Alpha通道,它决定了透过这个图像的像素,也就是透明度)。
阅读全文 »

网络编程入门

计算机网络基础

计算机网络是独立自主的计算机互联而成的系统总称,组建计算机网络最主要的目的是实现多台计算机之间的通信和资源共享。是一个“复杂巨系统”。

计算机发展史

  1. 1960s,美国国防部ARPANET项目问世,奠定了分组交换网络的基础
  2. 1980s,国际标准化组织ISO发布了OSI/RM,奠定了网络技术标准化的基础
  3. 1990s,英国人蒂姆·伯纳斯·李
    发明了图形化的浏览器,浏览器的简单易用性使得计算机网络迅速普及

阅读全文 »

进程和线程

当今的计算机早就已经是多CPU或多核了,四核八核等等,目前的操作系统也都是支持“多任务”的操作系统。也就是说可以同时运行多个程序,也可以将一个程序分解为若干个相对独立的子任务,让多个子任务并发的执行,从而缩短程序的运行时间,让用户获得更好的体验。

概念

进程:进程是操作系统中执行的一个程序,操作系统以进程为单位分配存储空间,每个进程都有自己的地址空间、数据栈以及其他用于跟踪进程执行的辅助数据,操作系统管理所有进程的执行,为他们合理的分配资源。进程可以通过fork或spawn的方式创建新的进程来执行其他的任务,不过新的进程也有自己独立的控件,因此必须通过进程间通信机制(IPC,Inter-Process Communication)来实现数据共享,包括管道、信号、套接字、共享内存区等。
一个进程还可以拥有多个并发的执行线索,简单的说就是拥有多个可以获得CPU调度的执行单元,这就是所谓的线程。由于线程在同一进程下,它们可以共享相同的上下文,因此相对于进程而言,线程间的信息共享和通信更加容易。当然在单核CPU中,真正的并发是不可能的,因为在某个时刻能够获得CPU的只有唯一的一个线程,多个线程共享了CPU的执行时间。多线程可以提升程序的性能和改善用户体验。但是多线程因为占用了更多的CPU执行时间,导致其他程序无法获得足够的CPU执行时间,而且在开发者角度讲,编写和调试多线程程序有些困难。
Python既支持多进程又支持多线程,因此Python实现并发编程主要有三种方式:
多进程、多线程、多进程+多线程。还有协程

阅读全文 »

使用正则表达式

在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要,正则表达式就是用于描述这些规则的工具,换句话说正则表达式是一种工具,它定义了字符串的匹配模式(如何检查一个字符串是否有跟某种模式匹配的部分或者从一个字符串中将与模式匹配的部分提取出来或者替换掉)。Python通过标准库中的re模块来支持正则表达式操作。

阅读全文 »