代码改变世界

随笔分类 - 学习笔记

初探单点登录 SSO

2014-04-03 19:39 by 捣乱小子, 15145 阅读, 收藏, 编辑
摘要:单点登录单点登录(Single sign-on,SSO)是一种访问控制,在多个软件应用中,用户只需登录其中一个应用,就可以成功访问其他应用;同样,用户只需注销其中一个应用,就可以成功注销其他应用。当一个公司产品线越来越复杂,做的东西越来越多,考虑到用户的便利性和业务的交集,单点登录也就变得越来越必然。譬如,阿里巴巴中的淘宝网,天猫,聚划算和一淘,考虑下面的场景:我们用户登录淘宝网购物,紧接着朋友打电话说出去玩,于是打开聚划算的时候你会发现,你已经登了聚划算!可能这些细节都被大多数人忽略了(被谁给惯坏了),但如果要让用户再次手动登录聚划算,用户体验可想而知。这种便利性就是单点登录所带来的。在单点 阅读全文

Django 源码小剖: Django ORM 查询管理器

2013-11-12 23:59 by 捣乱小子, 4335 阅读, 收藏, 编辑
摘要:ORM 查询管理器对于 ORM 定义: 对象关系映射,Object Relational Mapping, ORM,是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。ORM 能大大简化并抽象数据库的操作.假设 django 的一个工程中包含一个名为 Book 的模块(model), 在 views.py 的函数中可能会写出查询语句:# views.pydef index(request): book_set = Book.objects.filter(id=1) 或者 book_s... 阅读全文

CSRF 攻击

2013-07-24 18:15 by 捣乱小子, 1247 阅读, 收藏, 编辑
摘要:在 Django 的表单中硬性添加{% csrf_token %}标记如下,否则在提交表单的时候会出错,目的就是为了防止 CSRF 攻击: 。。。。。。Forbidden (403)CSRF verification failed. Request aborted.CSRF 全称是Cross-site request forgery,即跨站点请求伪造。当恶意的网站被访问时,会产生伪造的请求发送给服务器,伪造请求中可能存留了用户的 cookie,服务器也无法区分请求真伪,因此数据被提交甚至修改,给用户带来损失。小明如果遭受 CSRF 攻击严重的有如下现象,情景假设:小明早上起来登录了 shopp 阅读全文

最长回文子串(Longest Palindromic Substring)

2013-07-05 15:39 by 捣乱小子, 12704 阅读, 收藏, 编辑
摘要:一个「对称」的序列,就可称为回文序列,譬如:aba,abba 等。详细介绍参看:http://zh.wikipedia.org/wiki/%E5%9B%9E%E6%96%87%E6%95%B0最长回文子串问题是要求在给出的一个序列中,找到最长的回文字串。譬如:一个序列 cabccba,它的最长回文子串是 abccba。暴力暴力穷举可以解决问题。三个循环穷举所有可能的序列。for i in range(0,len(str)) for j in range(i,len(str) is_palindromic_number(i,j)//这里有个循环但算法的复杂度是... 阅读全文

【译】Simple MySQL ORM for C

2013-03-22 12:54 by 捣乱小子, 1969 阅读, 收藏, 编辑
摘要:原文链接:http://daoluan.net/blog/?p=1613一直不知道有ORM这种东西,直到和 @海坡 交流后才接触。在项目中,需要将数据存储到数据库中,首先想到的是生成各种raw SQL的解决方法。但随着项目的进展,发现它很不灵活。譬如可能因为有新的需求,在数据库student表中添加dept_no字段,那在各种raw SQ中就需要进行修改了,工程浩大。如果操作(插入\修改\删除)数据库表中的数据,和操作数据对象一样,可以简化很多的操作,便于数据层的变更,而不必修改逻辑层代码。//项目随手摘录的一个构造插入指定对象数据的INSERT语句的方法。int gtd_genInsertS 阅读全文

数据结构利器之私房STL(下)

2012-12-08 23:24 by 捣乱小子, 1360 阅读, 收藏, 编辑
摘要:索引数据结构利器之私房STL(上)数据结构利器之私房STL(中)数据结构利器之私房STL(下)这篇文章http://www.cnblogs.com/daoluanxiaozi/archive/2012/12/02/confidential-stl.html由于严重违反了『博客园首页』的相关规则,因此笔者改将《私房STL》系列的每一篇都整合到博客园中,取消外链的做法。另,考虑篇幅的问题,此系列文章将分为上、中、下。此篇为《数据结构利器之私房STL(下)》,最后一篇。喜欢就顶下:-)此系列的文章适合初学有意剖析STL和欲复习STL的同学们。私房STL之左值和右值私房STL之函数对象私房STL之函数 阅读全文

数据结构利器之私房STL(中)

2012-12-06 23:34 by 捣乱小子, 2507 阅读, 收藏, 编辑
摘要:索引数据结构利器之私房STL(上)数据结构利器之私房STL(中)数据结构利器之私房STL(下)这篇文章http://www.cnblogs.com/daoluanxiaozi/archive/2012/12/02/confidential-stl.html由于严重违反了『博客园首页』的相关规则,因此笔者改将《私房STL》系列的每一篇都整合到博客园中,取消外链的做法。另,考虑篇幅的问题,此系列文章将分为上、中、下。此篇为《数据结构利器之私房STL(中)》。喜欢就顶下:-)此系列的文章适合初学有意剖析STL和欲复习STL的同学们。私房STL之map和set私房STL之Hashtable私房STL算 阅读全文

数据结构利器之私房STL(上)

2012-12-02 16:13 by 捣乱小子, 2285 阅读, 收藏, 编辑
摘要:索引数据结构利器之私房STL(上)数据结构利器之私房STL(中)数据结构利器之私房STL(下)这篇文章http://www.cnblogs.com/daoluanxiaozi/archive/2012/12/02/confidential-stl.html由于严重违反了『博客园首页』的相关规则,因此笔者改将《私房STL》系列的每一篇都整合到博客园中,取消外链的做法。另,考虑篇幅的问题,此系列文章将分为上、中、下。此篇为《数据结构利器之私房STL(上)》,中篇和下篇将陆续发布。喜欢就顶下吧:-)此系列的文章适合初学有意剖析STL和欲复习STL的同学们。学过c++的同学相信都有或多或少接触过STL 阅读全文

数据结构利器之私房STL

2012-12-02 00:11 by 捣乱小子, 1725 阅读, 收藏, 编辑
摘要:此系列的文章适合初学有意剖析STL和欲复习STL的同学们。都是原创!学过c++的同学相信都有或多或少接触过STL。STL不仅仅是c++中很好的编程工具(这个词可能有点歧义,用类库更恰当),还是学习数据结构的好教材。它实现了包括可边长数组,链表,栈,队列,散列,映射等等,这些都是计算机专业同学在数据结构这门核心课程当中需要学习的。在深入一个工具之前,首先要熟练使用它。STL也一样。在剖析STL之前,可以先动手使用STL,比如其中的vector,list,stack等,热热身,而使用比剖析简单的多,何乐而不为呢。网上很多仁人志士都推荐《C++标准程序库》,这本书好!但如果是新手,又急于了解如何使用 阅读全文

写代码之前要做什么?

2012-11-18 22:22 by 捣乱小子, 2755 阅读, 收藏, 编辑
摘要:在想到这个问题的时候,很多童鞋都会笃定回答:我会先构思程序大体的框架,接着就开始写代码。A:难道你就不将你的构思巨细文档下?B:一般的编程任务不会太难的话,我觉得YY也很可靠,可能更高效。A:为什么这么急的写代码?B:手痒~~先小说下YY。YY即意淫,这里意即写代码时,不草稿不文档,脑瓜里天马行空,心猿意马。我不确定是不是大多数的Coder都这么做?!但我周遭的许多同学确实是这么说的做的。首先,很可能是程序猿对自己的YY思维太过自信,再者就是急功近利——想要一睹自己在写完代码后『F7』+『Ctrl+F5』(注:VS2008 C++的生成解决方案和运行的快捷键,笔者经常在写完代码后,习惯这样快速 阅读全文

『AA』AutoAnchor自动猫

2012-09-17 19:38 by 捣乱小子, 1032 阅读, 收藏, 编辑
摘要:2012-09-1719:40:31:嘿嘿,给自己出了道编程题,难度不大(YY都可以), 大家有兴趣可以自己去实现下。文章目录引子思路用法bug源代码 & 可执行文件引子一篇博文如果太长的话,为博文标题添加锚链接可以给众多的读者导航,提高文章的易读性。我也喜欢上了锚链接。但博客后台编辑器的“锚链接工具”我不会用,于是AutoAnchor 自动猫的灵感就来了。思路这道编程题不难,YY都可以得到一个解决方法。每次搜寻到<h3>标签就自动在其前面添加<a name="%d"></a>,处理好html文件之后,再在文章的头部添加:< 阅读全文

漫谈界面和数据

2012-09-15 00:16 by 捣乱小子, 1456 阅读, 收藏, 编辑
摘要:2012-09-15 00:18:瞅着要不要发?!求指导,欢迎斧正。以下是原文。下面的文字是关于界面和数据的,是在做了项目之中之后的心得体会。求指导,欢迎斧正。刚开始接触界面编程的时候,还不能意识到界面和数据的概念。所以代码的思路纯粹是跟着感觉走的,和搭积木一样。这时候,我更倾向于按照习惯——按事物的功能分类,把界面和数据代码放到同一个地方,这样让我对界面和数据(当时还没有清晰的概念)有满意的控制优越感。正是初学者,一开始都动手做自己YY的小软件,数据和界面的问题并不是很突出。这时候做到界面元素和业务逻辑的结合显然意义不大——后来发现句话说的有点早。原因是往后我又YY了下,想升级下上次小软件的 阅读全文

C++ 一不小心被delete两次

2012-09-11 12:10 by 捣乱小子, 4254 阅读, 收藏, 编辑
摘要:2012-09-11 18:04:看到园里朋友们这么热心,有那么一会心里好兴奋。:)2012-09-11 下午:本文曾出现很严重的错误,但不要紧,感谢园友们的即使指正。不喜欢程序语言的C++类中,有时候使用到传值调用(对象实体做参数),遇到这种情况,可要小心了!特别是当你所传值的对象生命周期较长,而... 阅读全文

UIButton 简易的UI

2012-09-10 12:34 by 捣乱小子, 2419 阅读, 收藏, 编辑
摘要:前些阵子,听说有个DirectUI的源码,很有兴致的去Google code上下载下来阅读,但后来没有坚持下来,DirectUI所看重的是窗口的安全性:只要能得到窗口的句柄,你几乎可以为所欲为了;但DirectUI显然没有这个问题,因为其所支持的控件都是windowless,没有句柄的,所有控件都是画出来的。接下来折腾XPButton,总算能看懂。但按钮依旧没有摆脱窗口,只是简单基础基础类库CButton,通过自绘实现DIYbutton。通过绘图的方式可以实现UIButton(画出来的按钮)。但在MFC下如果有多个按钮,那么代码会变得比较凌乱,所以可以把这部分抽象出来得到UIButton类。下 阅读全文

基于TCP的C/S初级网络编程2

2012-08-06 20:40 by 捣乱小子, 1377 阅读, 收藏, 编辑
摘要:导读本篇文章对http://www.daoluan.net/blog/?p=774中的“计算器”进行改进,与大家分享。上面那篇中的服务端属重复型,即一个时刻只处理一客户的请求,处理期间不搭理其他客户。此篇对上篇的“计算器”进行小小的改进——能够接受多个客户的请求。改进细则:独立bind,listen,accept,serve(即calc过程)功能模块;所有错误成功提示提取至各功能模块(函数)之外,错误/成功根据各函数的返回值判断(这更符合UNIX编程风范);客户的服务过程由产生的子进程负责。缺陷:由子进程来负责serve的部分。服务器主进程(父进程)不负责等待子进程结束,资源由内核回收(这一要 阅读全文

基于TCP的C/S初级网络编程1

2012-08-02 21:29 by 捣乱小子, 2438 阅读, 收藏, 编辑
摘要:导读本篇实现C/S架构的“计算器”,与大家分享。看了会网络编程,便不自觉YY了下:实现一个简单的计算器,客户端给出简单的运算,服务端负责运算。这一小项目做起来很有意思,而且难度不大,所以推荐初学者试着去做做。下面分享在实现上述“计算器”的过程。简单的基于tcp协议的 C/S编程都离不开这几个函数:服务端:socket,bind,listen,accept,recv,send客户端:socket,connect,recv,send因为“计算器”还设计涉及客户端的阻塞(因为客户端提交了运算要求过后,服务端可能要等会才能回送计算结果,这时要求客户端阻塞等候),所以涉及select函数。select函 阅读全文

Unix/Linux 那些系统启动后的进程

2012-07-13 14:47 by 捣乱小子, 2089 阅读, 收藏, 编辑
摘要:闲扯什么时候开始有“UNIX/LINIX”这一词汇,我忘了?只知道它是一个操作系统,跟dos一个级别的?!也就停留在这个概念的层次上,所以很多对我来说都是迷。UNIX也走过了40多个年头的路程,而它的每一个组织不断得到改进;21世纪开源势头正猛,前进的步伐更快了!正文眼过千边,不如收过一遍!以下结论来自apue、互联网或者些许自己的理解,实践环境:Linux 2.6。当内核加载完成之后,会创建init进程,它是系统的第一个进程init。init进程ID为1,也因此它是之后所有进程的“祖宗”!init进程是系统进入了多用户的状态,允许多个终端设备登录(tty1,tty2...)。对于每一个终端设 阅读全文

有趣的位运算

2012-07-10 15:36 by 捣乱小子, 530 阅读, 收藏, 编辑
摘要:看了会《c程序设计语言》的位运算一节,重温了下“位运算”的巧妙与高效。与操作可以用来判断一个整数的奇偶性,依据二进制的性质可以很容易得到这样的结论,因此:if a&1 a is odd; else a is even;左移右移的应用应该更熟悉,可以方便进行*2和/2操作。之前遇到的应用有快速幂之类的。学习程序设计的时候一般都会遇到这个问题:设计一个程序,统计整数中值为1的二进制位进行统计。一般的做法无非是:遍历所有的位,测试每一位是否为1,为1则进行统计。#include<iostream> using namespace std; int main() { int c.. 阅读全文

【字符串匹配】KMP算法之道

2012-06-14 00:58 by 捣乱小子, 2187 阅读, 收藏, 编辑
摘要:修订于2012-06-18,心急的读者可以着重看“有趣的字符串匹配提示”,这个例子看懂了,KMP也就差不多了。闲话上午算法考试的时候,感觉OK,前一两星期幸好把图算法都吃透了一遍,复习的时候节省了时间:)。前一半考题不理解背书的都可以,有几题没记过,不靠谱地照着理解写下来。最后的吹水题让我想起了之前的比赛,有一题是曹老师给的实验题,刚好比赛上出现了,而且相似度极高。要是高考,曹老师可就红了:)。这也让我捡了便宜。我们校区2012的招生计划出来了,结果我们校区悲催到只招30个法语本科生,也就是说2012的本科孩子只有30人。不知道法语的怎么看,但对这个校区的未来,我是看不到什么希望。“坑爹啊.. 阅读全文

【图论】信手拈来的Prim,Kruskal和Dijkstra

2012-05-30 23:53 by 捣乱小子, 7550 阅读, 收藏, 编辑
摘要:关于三个简单的图论算法 prim,dijkstra和kruskal三个图论的算法,初学者容易将他们搞混,所以放在一起了。 prim和kruskal是最小生成树(MST)的算法,dijkstra是单源最短路径的算法。 prim 最小生成树prim算法采用了贪心策略:把点分成两个集合,A为已被处理(已经在最小生成树中)的顶点,B为待处理的顶点,(A,B)也就是一个割。若边(u,v)满足u∈A,v∈B,那么(u,v)就是通过割(A,B)的一条边。 很自然的,会有一定数量的边会通过该割,其中权重最小的边就是轻边。 什么是轻边? 左边集合和右边集合就组成一个割,其中边... 阅读全文