- 博客(61)
- 收藏
- 关注
转载 MYSQ学习
三范式* 1NF *: 字段不可分,确保每列的原子性;* 2NF *: 表中字段完全依赖主键,而非部分依赖,目标是确保表中的每列都和主键相关;* 3NF *: 非主键字段互不依赖,目标是确保每列都和主键列直接相关,而不是间接相关;* 高级范式必须满足低级范式,2NF满足1NF, 3NF满足2NF。
2016-07-25 16:19:51 444
转载 Python-理解super函数
转:理解 Python Super原问题Python中既然可以直接通过父类名调用父类方法为什么还会存在super函数?比如class Child(Parent): def __init__(self): Parent.__init__(self)这种方式与super(Child, self).init()有区别么?回答针对你的问题
2016-06-28 11:54:39 671
转载 Python学习-方法解析顺序(MRO)
对于支持继承的编程语言来说,其方法(属性)可能定义在当前类,也可能来自于基类,所以在方法调用时就需要对当前类和基类进行搜索以确定方法所在的位置。而搜索的顺序就是所谓的「方法解析顺序」(Method Resolution Order,或MRO)。对于只支持单继承的语言来说,MRO 一般比较简单;而对于 Python 这种支持多继承的语言来说,MRO 就复杂很多。
2016-06-28 11:40:20 3096 2
转载 Python学习-yield浅析和send()函数
斐波那契(Fibonacci)數列是一个非常简单的递归数列,除第一个和第二个数外,任意一个数都可由前两个数相加得到。用计算机程序输出斐波那契數列的前 N 个数是一个非常简单的问题,许多初学者都可以轻易写出如下函数:简单输出斐波那契數列前 N 个数def fab(max): n, a, b = 0, 0, 1 while n < max: print b a, b = b, a
2016-06-24 16:00:38 5732 3
原创 Python学习-map&set
map()函数对可迭代函数’iterable’中的每一个元素应用‘function’方法,将结果作为list返回。来个例子:>>> def add100(x):... return x+100... >>> hh = [11,22,33]>>> map(add100,hh)[111, 122, 133]就像文档中说的:对hh中的元素做了add100,返回了结果的list。如果给出了
2016-06-15 18:52:31 1252
转载 Python学习-with用法
With语句是什么? 有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式。一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取数据,然后关闭文件句柄。如果不用with语句,代码如下:file = open("/tmp/foo.txt")data = file.read()file.close()这里有两个问题:是可
2016-06-14 11:59:30 447
原创 Python学习-BeautifulSoup模块
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.使用导入bs4库from bs4 import BeautifulSoup创建 BeautifulSoup 对象html = """<html><head><title>The Dormouse's story</title></head>
2016-06-14 10:58:23 1369
原创 Python学习笔记-基础
函数默认参数默认参数很有用,但使用不当,也会掉坑里。默认参数有个最大的坑,演示如下:先定义一个函数,传入一个list,添加一个END再返回:def add_end(L=[]): L.append('END') return L当你正常调用时,结果似乎不错:>>> add_end([1, 2, 3])[1, 2, 3, 'END']>>> add_end(['x', 'y', 'z
2016-06-13 16:55:46 297
转载 Git常用命令的使用情景
Git常用命令的使用情景本文尽量指出在不同情景下如何选择合适的Git命令来达到自己的目的,当然,由于Git太过强大、灵活,有时同一问题可以有多种不同的解决方案,这里不太可能全部列出,只会选择一些自己测试可用的方法。文中会稍微谈一些Git内部实现的细节,但不会太具体,同时这些内容大部分是基于自己在学习过程中的一些理解,所以也不能保证相关的解释一定是正确的。如发
2016-05-19 16:16:10 393
转载 git 笔记
大部分转载颜海镜的文章这篇文章记录个人常用的一些命令,和记不住的一些命令,转载了并不断更新。Git官网Github 15分钟学习Git参考资料Git参考手册Git简明手册Git MagicGit Community Book 中文版Pro Git图解Gitgit-简明指南learnGitBranching 在线学习工具初级教程廖雪峰的Git教程蒋鑫老师将带你入git
2016-05-19 16:13:01 395
原创 crontab 定时任务
通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。命令格式:crontab [-u user] [-l|-e|-r]-u user:用来设定某个用户的crontab服务-l :列出某个用户的crontab文件内容。如果不指定用户,默认
2016-05-06 15:02:19 1819 1
原创 composer使用
Composer 不是一个包管理器。是的,它涉及 “packages” 和 “libraries”,但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。在项目中如果需要依赖其他包,可以使用composer来进行管理。需要在你的项目根目录下定义一个composer.json的文件,然后使用composer
2016-04-14 17:19:50 477
原创 Thrift使用-php
简介 Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目。Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码(目前支持C++,Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk和
2016-04-12 18:19:14 953
原创 CI框架学习总结
之前主要搞C++,现在学习PHP,为了能够快速的理解MVC框架,根据buddy的建议,就选择了轻量级框架-CI,使用起来确实简单易学,并有详细的中文文档可够查阅。CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为开发者们建立功能完善的 Web 应用程序。
2016-01-20 15:26:13 1664
转载 php 反射机制
介绍PHP5添加了一项新的功能:Reflection。这个功能使得phper可以reverse-engineer class, interface,function,method and extension。通过PHP代码,就可以得到某object的所有信息,并且可以和它交互。 反射是什么? 它是指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释
2016-01-12 17:11:17 358
原创 session释放函数
今天在释放$_SESSION时,使用session_destroy()函数释放定义的变量时,在之后检查该变量发现仍然存在。<?phpsession_destroy($_SESSION);echo $_SESSION['name'];查了一下:session_unset() 释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的session id s
2016-01-11 19:26:28 710
原创 cookie 和 session 区别
CookieCookie技术是客户端的解决方案,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。当用户使用浏览器访问一个支持Cookie的网站的时候,用户会提供包括用户名在内的个人信息并且提交至服务器;服务器在向客户端回传相应的超文本的同时也会发回这些个人信息,当然这些信息并不是存放在HTTP响应体
2016-01-05 17:53:30 334
转载 php读mysql中文乱码问题解决方法
涉及到的编码一般来说,乱码的出现有2种原因,首先是由于编码(charset)设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的“天书”,其次是文件被以错误的编码打开,然后保存,比如一个文本文件原先是GB2312编码的,却以UTF-8编码打开再保存。要解决上述乱码问题,首先需要知道开发中哪些环节涉及到了编码:1、文件编码:指的是页面文件(.html,.php等)本身是以何种编码来保存的。
2016-01-05 12:29:25 593
原创 Git使用
pull和fetchGit中从远程的分支获取最新的版本到本地有这样2个命令: git fetch:相当于是从远程获取最新版本到本地,不会自动mergegit fetch origin mastergit log -p master..origin/mastergit merge origin/master以上命令的含义:首先从远程的origin的master主分支下载最新的版本到origin
2015-12-25 18:35:00 397
原创 PHP拾遗-类
如果在 new 之后跟着的是一个包含有类名的字符串,则该类的一个实例被创建。如果该类属于一个名字空间,则必须使用其完整名称。 <?php$instance = new SimpleClass();// 也可以这样做:$className = 'Foo';$instance = new $className(); // Foo()?>当把一个对象已经创建的实例赋给一个新变量时,新变量会访问同一
2015-12-25 10:27:17 296
原创 PHP总结
简介PHP作为一种优秀的脚本语言,从简单的“hello word”到各种框架的开发、架构的设计、性能优化,以及PHP模块的开发,涉及较广知识结构和跨度。PHP通过不断淬炼,PHP内核中涉及从脚本的编译解析到执行以及和Web服务器等的配合,内存管理,语法实现等。SAPI执行PHP是一种基于C语言高级语言,作为一种解释型编程语言,能够好的进行跨平台开发。而C/C++在进行跨平台开发时需要重新编译、链接。
2015-12-23 16:09:37 384
原创 phpstorm安装
phpstorm是用JAVA开发的,所以在安装之前需要先安装jdk sudo apt-get install default-jdk或者 在网上下载java源码安装 去官网下载tar.gz格式的即可(ubuntu使用浏览器下载网速比较慢,所以推荐到window上下载好)。创建JDK存放路径。我的JDK存放在“/usr/jdk”,所以使用命令”sudo mkdir -p /usr/jdk”,你可
2015-12-21 14:15:49 1596
原创 php+nginx+mysql+ubuntu环境搭建
一、安装1.更新和安装 sudo apt-get update sudo apt-get install nginx2.安装结束后,启动nginx sudo /etc/init.d/nginx start3.配置php和mysql sudo apt-get install php5-cli php5-cgi mysql-server php5-mysqlCGI:“公共网关接口”(Com
2015-12-17 16:43:06 417
原创 MYSQL忘记root密码重置方法
1. vi /etc/my.cnf(我的在/etc/mysql/my.cnf中) #编辑文件,找到[mysqld],在下面添加一行skip-grant-tables,已安全模式进入 31 [mysqld] 32 # 33 # * Basic Settings 34 # 35 user = mysql 36 pid-file = /var/run/my
2015-12-17 16:19:24 337
原创 PHP拾遗(类型)
语法凡是在一对开始和结束标记之外的内容都会被 PHP 解析器忽略.整数Example #2 八进制数的怪事<?phpvar_dump(01090); // 八进制 010 = 十进制 8?>决不要将未知的分数强制转换为 integer,这样有时会导致不可预料的结果。<?phpecho (int) ( (0.1+0.7) * 10 ); // 显示 7!?>浮点数要测试浮点数是否相等,要使
2015-12-17 16:11:15 362
原创 php内核探索笔记-内存的申请与释放
内存申请 PHP底层对内存的管理, 围绕着小块内存列表(free_buckets)、 大块内存列表(large_free_buckets)和 剩余内存列表(rest_buckets)三个列表来分层进行的。 ZendMM向系统进行的内存申请,并不是有需要时向系统即时申请, 而是由ZendMM的最底层(heap层)先向系统申请一大块的内存,通过对上面三种列表的填充, 建立一个类似于内存池的管理机制。这
2015-12-16 19:01:57 679
原创 PHP内核探索笔记-函数
函数定义:函数的定义是一个将函数名注册到函数列表的过程 1. 词法分析: function将会生成T_FUNCTION标记 2. 语法分析: 3. 生成中间代码: 生成的中间代码为 ZEND_DECLARE_FUNCTION ,根据这个中间代码及操作数对应的op_type。 我们可以找到中间代码的执行函数为 ZEND_DECLARE_FUNCTION_SPEC_HANDLER
2015-12-15 18:31:36 326
原创 变量赋值、销毁与作用域
变量赋值、销毁与作用域标签(空格分隔): 未分类获取左右值在PHP内没有对于变量的声明操作,在赋值的时候同时完成声明。 例:$a = 10; 通过VLD查看其生成中间代码为ASSIGN.执行函数为ZEND_ASSIGN_SPEC_CV_CONST.在这个函数中获取左值和右值的代码为:val *value = &opline->op2.u.constant;zval **variable_ptr
2015-12-15 13:09:31 657
原创 php内核探索-常量
在PHP中常量的结构只是在变量的基础上添加了一些额外的元素:typedef struct _zend_constant { zval value; /* zval结构,PHP内部变量的存储结构,在前面有说明 */ int flags; /* 常量的标记如 CONST_PERSISTENT | CONST_CS */ char *name; /* 常量
2015-12-14 18:25:27 304
原创 PHP内核探索笔记-变量
php变量组成部分:变量名:php语言的变量名以$开头+英文/下划线,可以包含数字、下划线、字母,区分大小写。同时PHP也支持复合变量,形如$$A,增加了php的动态性。类型:php属于弱类型语言,可以赋值任意类型的值。内容:在同一时刻只能有一种值。php语言中存在8中数据类型,分为三大类: 1. 标量类型:Boolean,integer,float,string; 2. 复合类型:
2015-12-14 15:40:06 338
原创 php内核探索笔记-解释器的执行过程
以CLI SAPI为例来对php执行核心部分进行解析。CLI是php命令行模式,此SAPI是默认安装的,在服务器端安装过PHP后,生成以一个可执行文件,可以在shell中调用PHP命令来执行。PHP -f XX.php执行流程:解析命令行参数; 初始化环境; 编译执行PHP代码; 清理环境,退出;在第3个阶段中,如何执行PHP脚本的: 通过调用php_execute_script( ha
2015-12-14 10:49:16 353
原创 php内核探索=opcode
在前面php内核探索笔记-初窥,了解到php代码执行需要进行编译->执行。在编译阶段首先进行词法分析,然后再进行语法分析,才生成用于Zend 引擎执行的opcode。究竟opcode是什么东西呢?opcode是计算机执行指令的一部分,用于指定要执行的操作,也被称作字节码。opcode不需要显示的操作数,操作数可以是堆栈、寄存器、某块内存或I/O端口中的值。PHP构建与Zend虚拟机之上,p
2015-12-12 16:51:28 474
原创 php内核探索笔记-初窥
一、概括编程语言分为两类:编译型,解释型。编译型语言主要包括,C/C++、C#等。编译型语言有一个专门的编译过程,通过编译器编译成机器语言,只需要一次编译过程,每次执行不需要重新编译。解释型语言主要包括,PHP,PYTHON等。编译型语言在执行前并不需要编译过程,可以直接执行,每次执行需要解释器将代码解释成机器语言(也即编译)。为了执行效率,并不是所有的语言每次执行都需要编译,例如:P
2015-12-11 16:36:03 432
转载 MySQL索引背后的数据结构及算法原理
摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分
2015-09-22 14:07:17 388
转载 海量数据等概率选取问题
1、问题定义可以简化如下:在不知道文件总行数的情况下,如何从文件中随机的抽取一行,并且每行被抽中的概率相等?首先想到的是我们做过类似的题目吗?当然,在知道文件行数的情况下,我们可以很容易的用C运行库的rand()函数随机的获得一个行数,从而随机的取出一行,但是,当前的情况是不知道行数,这样如何求呢?我们需要一个概念来帮助我们做出猜想,来使得对每一行取出的概率相等,也即随机。这个概念即蓄水池
2015-09-17 17:33:12 597
转载 动态规划之背包问题-总结和拓展(二)
背包问题是在1978年由Merkel和Hellman提出的。它的主要思路是假定某人拥有大量物品,重量各不同。此人通过秘密地选择一部分物品并将它们放 到背包中来加密消息。背包中的物品中重量是公开的,所有可能的物品也是公开的,但背包中的物品是保密的。附加一定的限制条件,给出重量,而要列出可能的物品,在计算上是不可实现的。背包问题是熟知的不可计算问题,背包体制以其加密,解密速度快而其人注目。但是,大多数
2015-09-10 19:13:46 888
转载 动态规划之背包问题-总结和拓展(二)
背包问题是在1978年由Merkel和Hellman提出的。它的主要思路是假定某人拥有大量物品,重量各不同。此人通过秘密地选择一部分物品并将它们放 到背包中来加密消息。背包中的物品中重量是公开的,所有可能的物品也是公开的,但背包中的物品是保密的。附加一定的限制条件,给出重量,而要列出可能的物品,在计算上是不可实现的。背包问题是熟知的不可计算问题,背包体制以其加密,解密速度快而其人注目。但是,大多数一
2015-09-10 19:08:20 396
转载 动态规划之背包问题(一)
转:http://www.hawstein.com/posts/dp-knapsack.html一切都要从一则故事说起。话说有一哥们去森林里玩发现了一堆宝石,他数了数,一共有n个。 但他身上能装宝石的就只有一个背包,背包的容量为C。这哥们把n个宝石排成一排并编上号: 0,1,2,…,n-1。第i个宝石对应的体积和价值分别为V[i]和W[i] 。排好后这哥们开始思考: 背包总共也就只
2015-09-10 17:24:11 336
转载 字符串搜索算法Boyer-Moore由浅入深
1. 简单介绍在用于查找子字符串的算法当中,BM(Boyer-Moore)算法是目前被认为最高效的字符串搜索算法,它由Bob Boyer和J Strother Moore设计于1977年。 一般情况下,比KMP算法快3-5倍。该算法常用于文本编辑器中的搜索匹配功能,比如大家所熟知的GNU grep命令使用的就是该算法,这也是GNU grep比BSD grep快的一个重要原因,具体推荐看下我
2015-09-09 15:16:36 489
转载 n*n匹马和n赛道,求前k名问题
这个问题的非一般形式在网上有很多的分析,比如http://blog.csdn.net/hackbuteer1/article/details/7481342、http://liuyangxdgs.blog.163.com/blog/static/2913776320111056839612/。下面将这个问题一般化,进一步分析这类问题的规律,找出一般性的解法。问题描述
2015-09-01 10:03:31 1149
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人