《大话重构》这本书是我写的第一本书,从今天起我将通过连载的形式逐渐跟大家分享。这本书让你:告别游击队转变为正规军,远离劣质代码走向精妙设计真正明白专业级的软件开发是怎样的真正明白重构是怎样一步一步进行的高效重构七步曲,面对实践不卡壳让遗留系统维护不再是你的梦魇读完这本书以后:需求变更不再纠结,重构让你润物细无声地容纳它们超越代码级的重构,从各个层面深度领略重构之美自动化测试不再是梦想,重构让自动化测试走你重新审视熟悉而陌生的技术,将碎了一地的它们重新铆合在
系统 2019-08-29 21:59:06 2184
在研究strcat函数实现的时候,发现了while(*p++!=‘\0’)的大秘密,也让我发现了在上篇博客中我犯的一个错误。原以为跳出后,P指向'\0',而实际上并非如此!我按跳出后P指向'\0',结果怎么拼接都实现不了,NND。为了验证这个问题,我们先上个小程序吧:#includevoidmain(){char*p="abcdefg";while(*p++!='c');printf("%c\n",*p);}您猜打印出来的是几?结果是d。
系统 2019-08-12 09:29:59 2184
使用List和Map有很多共性,比如说不能再1方设置inverse="true"不同的是,list可以保留元素的顺序,这个使通过一个idx字段来实现的,比如说Team和Student的1对多关系,我们给team加入学生的时候,需要记录加入的顺序,这时候我们可以使用list方式,并在student表中新增加一个idx字段(但在Student实体类中不定义idx属性)数据库结构:createtableteamList(idvarchar(32),teamnam
系统 2019-08-12 09:29:27 2184
在Python中,装饰器的本质就是Python中的一个函数,其来源自Python面向对象。装饰器是在函数调用之上的修饰。这些修饰仅是当声明一个函数或方法的时候,才会被应用额外的调用。有点类似Java中的AOP(面向方面编程)。同时在设计模式中,还有装饰器模式,也即是:装饰器模式(DecoratorPattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。原则是:不修改被修饰函数的源代码,不修改被修饰函数的调用方式。装饰器的用途:引入日志增加计时
系统 2019-09-27 17:55:09 2183
总是记不住API。昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧:python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。得到当前工作目录,即当前Python脚本工作的目录路径:os.getcwd()返回指定目录下的所有文件和目录名:os.listdir()函数用来删除一个文件:os.remove()删除多个目录:os.removedirs(r“c:\python”)检验给出的路径是否是一个文件:os.path.i
系统 2019-09-27 17:55:05 2183
使用pythonbrew复制代码代码如下:easy_installpythonbrew[root@li637-23schirm]#pythonbrew_installWell-done!Congratulations!Thepythonbrewisinstalledas:/root/.pythonbrewPleaseaddthefollowinglinetotheendofyour~/.bashrc[[-s"$HOME/.pythonbrew/etc/ba
系统 2019-09-27 17:54:27 2183
itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人。当然,该api的使用远不止一个机器人,更多的功能等着你来发现,比如这些。该接口与公众号接口itchatmp共享类似的操作方式,学习一次掌握两个工具。如今微信已经成为了个人社交的很大一部分,希望这个项目能够帮助你扩展你的个人的微信号、方便自己的生活。【文章背景】最近几天干啥都不来劲,昨晚偶然了解到Python里的i
系统 2019-09-27 17:54:04 2183
Python面向对象编程——简介编程范式编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程。一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种不同的方式,对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式。不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路,大多数语言只支持一种编程范式,当然也有些语言可以同时支持多种编程范式。两种最
系统 2019-09-27 17:54:01 2183
今天介绍个神奇的网站!堪称爬虫偷懒的神器!我们在写爬虫,构建网络请求的时候,不可避免地要添加请求头(headers),以mdn学习区为例,我们的请求头是这样的:一般来说,我们只要添加user-agent就能满足绝大部分需求了,Python代码如下:importrequestsheaders={#'authority':'developer.mozilla.org',#'pragma':'no-cache',#'cache-control':'no-cach
系统 2019-09-27 17:53:21 2183
11.5jQuery引入方式:方式一:本地引入方式二:直接使用CDN文档就绪事件:DOM文档加载的步骤1.解析HTML结构。2.加载外部脚本和样式表文件。3.解析并执行脚本代码。4.DOM树构建完成。5.加载图片等外部文件。6.页面加载完毕11.51选择器id选择器:$("#i1")标签选择器:$("p")class选择器:$(".c1")所有元素选择器:$("*")交集选择器:$("div.c1")//找到类为c1的div标签并集选择器:$("#i1,
系统 2019-09-27 17:52:18 2183