- 博客(40)
- 收藏
- 关注
原创 工厂模式
工厂模式其实也称创建模式,是用于创建对象的一种方式。本质上就是用工厂方法来代替new实例化对象。举个例子:我们在编写代码的时候,在一个A类中通过new的方式实例化了类B,那么A类和B类之间就存在耦合,如果以后修改了B类的代码和使用方式,例如需要在构造函数中传入参数,那么A类也就需要跟着修改了,一个类的依赖可能影响不大,但若有多个类依赖了B类,那么这个工作量将会相当的大,这无疑是件非常痛苦的事。这种情况下,我们需要把创建实例的工作单独分离,与调用方解耦,也就是使用工厂方法创建实例的工作封装起来。这样我们在需
2020-10-14 11:28:38 194
原创 PHP的单例模式
单例模式,顾名思义就是只有一个实例。单例模式确保某一个类只有一个实例,不能重复实例,只能它自己实例化,而且向整个系统提供这个实例。为什么要使用PHP单例模式? 1.PHP的应用有一个大方面是针对于数据库,一个应用中会存在大量的数据库操作,在使用面向对象的方式开发时,如果使用单例模式,就可以避免大量的new 操作消耗的资源,还可以减少数据库连接,这样就不容易出现too many connections情况。 2.如果一个系统中需要一个类来全局控制某些配置信息,那么,使用单例模式可以很方便的实现。
2020-10-14 11:08:32 215
原创 PHPCMS V9的相关操作
记第一次使用phpcms开发网站用到的一些知识点:获取所有栏目信息:category.html{wy:content action="category" catid="$catid"}{loop $data $r}$r['catname']{/loop}{/wy}list.html获取某一栏目下的文章信息:标题,文章摘要,发布时间,num为显示数量{wy:content action="lists" ctaid="$catid" num="3"}{loop $data $r}$r
2020-08-09 11:27:04 224
原创 python的配置文件使用方法
在平时的项目中,常常需要用到配置文件,用来配置项目的一些信息,比如数据库,请求网址,文件夹,线程、进程数等信息,这样就可以方便我们通过修改配置文件中的参数来很好地完成整个项目的功能修改或开发。配置文件一般区别于Python代码,会单独存放在一个文件夹中,方便管理,常见的配置文件格式有.conf, .ini, .yaml等。记录第一次使用配置文件:首先需要安装configparser模块;命令:pip3 install configparser我这里处理的是.ini文件,内容如下:[mysql]h
2020-08-02 17:24:51 531
原创 thinkphp5.1基础3数据库的操作和模型数据操作
数据库与模型一、连接数据库ThinkPHP 采用内置抽象层将不同的数据库操作进行封装处理;数据抽象层基于 PDO 模式,无须针对不同的数据库编写相应的代码;使用数据库的第一步,就是连接你的数据库;在根目录的 config 下的 database.php 可以设置数据库连接信息;大部分系统已经给了默认值,你只需要修改和填写需要的值即可(我这里数据库表明没有前缀,所以没有设置前缀,可以根据自身情况来进行设置)type 属性默认支持的数据库有:mysql、sqlite、pgsql、sqlsrv;
2020-07-24 19:00:47 509
原创 thinkphp5.1基础2
控制器的前置方法:设置 beforeActionList属性可以指定某个方法为其他方法的前置操作,数组键名为需要调用的前置方法名,无值的话为当前控制器下所有方法的前置方法。[‘except’ => ‘方法名,方法名’] 表示这些方法不执行前置方法[‘only’ => ‘方法名,方法名’] 表示这些方法使用前置方法代码部分:class Before extends Controller{ protected $beforeActionList = [ 'firs
2020-07-22 22:36:58 322
原创 thinkphp5.1基础1
thinkphp5.1基础:我的环境是使用phpstudy搭建的,具体安装步骤在这里就不说了,可百度。首先了解一下项目的目录:application:项目目录config:应用配置目录extend:扩展类库目录public:web目录(对外访问目录)route:路由定义目录runtime:应用的运行时目录(可写,可定制)thinkphp:框架系统目录vendor:第三方类库目录(Composer依赖库)build.php:自动生成定义文件(参考)composer.json:comp
2020-07-22 22:16:10 296
原创 使用JS实现简单的图片切换功能
效果如图:分析:首先为按钮添加单击响应事件,然后构造函数。其实切换图片就是切换img标签src的属性,可以获取标签属性然后进行修改即可。可以把属性值存放在一个数组中,通过数组的索引来获取。附上相关代码:css部分代码:<style type="text/css"> *{ margin: 0; padding: 0; } #a{ margin: 50px auto; width: 500px; padding: 15px;
2020-06-29 09:29:44 1796
原创 DOM的相关的操作
1.DOM查询通过具体的元素节点来查询元素.getElementsByTagName()通过标签名查询当前元素的指定后代元素元素.childNodes获取当前元素的所有子节点会获取到空白的文本子节点 元素.children获取当前元素的所有子元素元素.firstChild获取当前元素的第一个子节点元素.lastChild获取当前元素的最后一个子节点元素.parentNode获取当前元素的父元素元素.previousSibling获取当前元素的前一个兄弟节点元素.nextSi
2020-06-26 18:08:55 166
原创 DOM简介
DOM:Document Object Model文档对象模型,通过DOM可以来任意来修改网页中各个内容文档:文档指的是网页,一个网页就是一个文档对象:对象指将网页中的每一个节点都转换为对象转换完对象以后,就可以以一种纯面向对象的形式来操作网页了模型:模型用来表示节点和节点之间的关系,方便操作页面节点(Node):节点是构成网页的最基本的单元,网页中的每一个部分都可以称为是一个节点。虽然都是节点,但是节点的类型却是不同的常用的节点:文档节点 (Document),代表整个网页元素
2020-06-26 16:36:42 246
原创 一文学会JS中的字符串常用方法
JavaScript 字符串字符串可以存储一系列字符,如 “hello world”。字符串可以是插入到引号中的任何字符。你可以使用单引号或双引号。字符串的索引从 0 开始,这意味着第一个字符索引值为 [0],第二个为 [1], 以此类推。字符串可以是对象。字符串属性:字符串方法:下面来举例几个最常用的方法:var str = "hello world";console.log(str.length)//11charAt()方法:console.log(str.charAt(1))
2020-06-17 21:56:23 164
原创 JS数组中的一些常用方法
使用字面量创建数组时,可以在创建时就指定数组中的元素 var arr = [1,2,3,4]; console.log(arr); //创建一个数组,数组中只有一个元素10 arr3 = [10]; console.log(arr3); //创建一个长度为10的数组 arr4 = new Array(10); console.log(arr4.length) </script>使用构造函数创建数组时,也可以同时添加元素,将要添加的元素作为构
2020-06-15 17:49:29 180
原创 js中的prototype原型对象
js中的原型对象原型对象就相当于一个公共区域,所有同一类的实例都可以访问到这个原型对象。我们可以将对象中的公共内容统一设置到原型对象中,当我们访问对象的一个属性或者方法时,他会先在对象中寻找,如果有直接使用,没有就像原型中找。创建我们可以将对象中的公共内容统一设置到原型对象中,这样不用分别为每个对象添加也不会影响到全局作用域就可以使每个对象都具有这些属性和方法。例1: <script> function Myclass(){ } //向原型中添加一个name属性
2020-06-14 20:43:06 115
原创 js中的函数和对象
1.对象(Object)对象是JS中的引用数据类型对象是一种复合数据类型,在对象中可以保存多个不同数据类型的属性使用typeof检查一个对象时,会返回object创建对象:两种方法方式一:var obj = new Object();方式二:var obj = {属性名:属性值,属性名:属性值,属性名:属性值,属性名:属性值};向对象中添加属性语法:对象.属性名 = 属性值;对象[“属性名”] = 属性值;对象的属性名没有任何要求,不需要遵守标识符的规范,但是在开发中,尽
2020-06-14 20:25:29 837
原创 JavaScript基础笔记总结
js的一些基础内容概念:一门客户端脚本语言运行在客户端浏览器中的。每一个浏览器都有JavaScript的解析引擎脚本语言:不需要编译,直接就可以被浏览器解析执行了功能:可以来增强用户和HTML页面交互过程,可以来控制HTML元素,让页面有一些动态的效果,增强用户体验总结一下自己学习js的基础内容:数据类型:(共6种)原始数据类型(基本数据类型)number:数字。整数,小数,NAN(一个不是数字的数字)string:字符串。Boolean:true、falseNull:一个对象
2020-06-14 20:14:55 118
原创 剑指offer只字符流中第一个不重复的字符
题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。题目分析:这个和我上一篇判断字符串中出现一次的字符那道题基本区别不大,那个是把所有的都找出来,这个是找出第一个,这时候可以考虑把出现一次的字符依次存入列表中,然后取出第一个就行了。附上代码:class Solution:
2020-06-09 21:30:01 90
原创 剑指offer之寻找列表中只出现一次的数
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。题目分析:一个数组中有两个只出现一次的数,其他的都出现了两次,这样我们使用py内置的count找到只出现了一次的函数即可class Solution: # 返回[a,b] 其中ab是出现一次的两个数字 def FindNumsAppearOnce(self, array): # write code here c=[] for i in
2020-06-08 16:21:08 287
原创 剑指offer不用数学符号实现两数相加
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。题目分析:题目不让使用运算符号,可以直接使用py内置的sum函数进行计算。class Solution: def Add(self, num1, num2): # write code here l=[] l.append(num1) l.append(num2) return sum(l)运行时间:33ms占用内存:57
2020-06-08 09:46:20 174
原创 剑指offer数学问题
题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。题目分析:这是明显的等差数列求和问题,可以直接使用等差数列的求和公式算出答案,但是题目要求不能使用乘除法。累加问题可以用递归来解决,但是递归需要if 条件来跳出循环,这里可以使用and替换if进行条件判断。这里补充一下py逻辑运算符的知识:附上源码:class Solution: def Sum_Solution(self, n):
2020-06-08 08:59:04 151
原创 剑指offer之排序
题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。难度等级 :中等题目分析:举例:12345 中位数是 3 在数组中的索引为 2 5//2=2123456 中位数为 3.5 在数组中的索引为 2、3 6//2=3附上源码: class Solut
2020-06-06 09:48:49 156
原创 剑指offer之贪心算法
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。题目分析:个人感觉这完全就是数学问题,青蛙的当前台阶是上一台阶上来的f(1)=1f(n)=f(n-1)+f(n-2)+……f(1)f(n-1)=f(n-2)+……f(1)所以 :f(n)=2f(n-1)附上源码:class Solution: def jumpFloorII(self, number): # write code here
2020-06-06 09:06:38 247 2
原创 剑指offer之贪心算法1
准备暑假找实习工作了,但是自己不会算法,打算开始刷一刷算法题。剑指offer第一天:题目描述给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]xk[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。输入描述:输入一个数n,意义见题面。(2 <= n <= 60)分析题目:n= 1、2、3 时
2020-06-05 10:48:44 128
原创 记一些xpath的详细使用
温故而知新,可以为师矣。之前已经转载过xpath的使用,但是毕竟那是别人写的,今天来自己写一些表达式复习一下。xpath表达式:/:表示的是从根节点开始定位,表示的是一个层级。//:表示的是多个层级,可以表示从任意位置开始定位。属性定位://tag[@attrName=“attrValue”]索引定位://tag[@attrName=“attrValue”]/tag[1.2.3]取属性:/@attrName取文本:/text()最后,其实借助xpath工具会更方便快捷,但是对于初学者这些
2020-05-28 09:21:39 169
原创 爬取简书热评文章
分析:打开浏览器输入网址后浏览网页时,发现没有分页的界面和url,可以一直向下浏览下去,说明使用了异步加载。打开浏览器的开发者工具,打开network选项卡,鼠标下滑页面会看到有加载的文件,点击headers可以发现url信息。然后就可以构造爬取的url链接了。此次信息爬取采用了多进程的方式来提高爬取效率。话不多说上源码:import requestsfrom lxml import etreeimport pymongofrom multiprocessing import Poolimp
2020-05-24 20:10:53 248
原创 爬取豆瓣音乐并保存到mongodb数据库
爬取豆瓣音乐信息import reimport requestsimport pymongofrom lxml import etreeimport time#连接数据库client = pymongo.MongoClient('localhost',27017)douban_music = client['douban_music']#创建数据集合music_top = douban_music['music_top']headers = { 'User-Agent':
2020-05-23 21:13:44 282
原创 爬取考研英语单词
爬取考研英语单词并写入CSV文件中import csvimport requestsfrom bs4 import BeautifulSoupheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36'}#创建csv文件f = open('E:/
2020-05-20 09:57:31 760
转载 xpath使用
一、xpath介绍XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。XPath 使用路径表达式在 XML 文档中进行导航XPath 包含一个标准函数库XPath 是 XSLT 中的主要元素XPath 是一个 W3C 标准节点在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作为节点树来对待的。二、xpath语法表达式 描述nodename 选取此节点的所有子节点。
2020-05-18 22:03:39 416
原创 Beautifulsoup使用
Beautifulsoup使用:获取title标签:Soup.title获取标签名字的方法:soup.a.name获取标签属性的方法:tag=soup.a.attrs (返回字典类型)<>.find_all(name,attrs,recurisive,string,) 返回一个列表类型,存储查找的结果Name:对标签名称的检索字符串Attrs:对标签属性值的检索字符串,可标注属性检索< tag>() 相当于< tag>.find_all()Soup()
2020-05-18 21:57:44 236
原创 爬取北京地区的短租房信息
爬取北京地区的短租房信息首先分析url结构(以前三页为例):http://bj.xiaozhu.com/http://bj.xiaozhu.com/search-duanzufang-p1-0/http://bj.xiaozhu.com/search-duanzufang-p2-0/需求:对标题,房东性别,房间地址,价格进行爬取判断房东性别的函数:def get_sex(class_name): if class_name == 'member_girl_ico':
2020-05-18 21:42:57 331
原创 爬虫爬取表情包
from bs4 import BeautifulSoupimport requestsimport ospath = "E:/python/myPython/img1/"def Info(url): html = requests.get(url) soup = BeautifulSoup(html.text,'lxml') img_list = soup.fi...
2020-03-08 21:44:44 692
原创 Django创建博客项目03
在浏览器上显示自己设计的网页1.编写文章标题视图函数编辑./blog/views.py文件2.创建templates文件夹在blog目录下创建templates文件夹,下面含“base.html”和blog文件夹,blog文件夹中含“titles.html”文件。templates目录是Django默认的存放本应用所需模板的目录,如果不用自定义的方式制定模板位置,Django就会在运行...
2020-03-03 13:55:43 123
原创 Django创建博客项目01
1.首先创建一个项目的保存目录,打开保存的路径django-admin startproject mysite2.然后启动服务程序进入mysite输入:python manage.py runserver3.创建博客应用django-admin startapp blog4.网站的配置这个我在django入门里面有写过,这里不再写了5.编写blog中的数据模型类编辑./...
2020-03-02 17:43:56 118
原创 Django入门第一篇,hello world
我的配置环境是python3.6.4 windows Django 3.0.3第一步打开终端:win+r cmd然后打开项目要保存的路径第二步:创建项目 mysitedjango-admin startproject mysite第三步:进入目录mysitecd mysite输入命令:Python manage.py runserver第四步:查看服务部署信息输入:htt...
2020-03-01 12:56:10 157
原创 将爬取的数据写入csv文件中
爬取某小说网站的小说信息from lxml import etreeimport requestsimport csv#创建csv文件f = open('E:/python/myPython/test2.csv','wt',newline='')writer = csv.writer(f)#写入表头writer.writerow(('names', 'authors'))#构造u...
2020-02-26 16:25:50 7100
原创 xpath的使用
使用xpath语法爬取起点中文网练习from lxml import etreeimport requestsheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 ...
2020-02-24 20:43:47 92
原创 关于xpath语法的使用和遇到的一些问题
首先说一下我遇到的问题,我在学习xpath时按照书上下载好lxml之后然后导入etree时报错了。我大概在百度上查了一个多小时,网上说的是python 3.5之后的lxml模块里面不再包含etree。我按照网上的说法重新下载了lxml,我的环境是python3.6.4安装的是lxml4.1.0,发现还是不行,还是报错。我没有管它继续编写测试代码,然后执行,发现可以运行代码不报错代码正常运行...
2020-02-24 19:55:59 655
原创 将信息写入csv文件中
我们爬虫经常爬数据,可以将爬到的数据写入csv文件中,因为csv是存储表格数据的常用格式,Excel和很多应用都支持csv格式import csvf = open('E:/python/myPython/test.csv','w+',newline = '')file = csv.writer(f)file.writerow(('id','name'))file.writerow(('1...
2020-02-20 17:04:43 509 1
原创 爬取小说斗破苍穹
from urllib.request import urlopenfrom urllib.request import Requestimport reheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ...
2020-02-20 16:47:21 214
原创 python爬虫urllib请求的应用
urllib是学习python爬虫需要掌握的最基本的库,它主要包含四个模块:urllib.request基本的HTTP请求模块。可以模拟浏览器向目标服务器发送请求。urllib.error 异常处理模块。如果出现错误,可以捕捉异常。urllib.parse 工具模块。提供URL处理方法, 比如对URL进行编码和解码。urllib.robotpaser 用来判断哪些网站可以爬,哪些网站不可以...
2020-02-20 16:32:58 91
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人