<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dremcl的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/dremcl</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dremcl]]></copyright><item><title><![CDATA[python-弱引用]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/108173766</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/108173766</guid><author>dremcl</author><pubDate>Sat, 22 Aug 2020 20:54:08 +0800</pubDate><description><![CDATA[如何在环状数据结构中管理内存
在python中，垃圾回收器通过引用计数来回收垃圾对象，当一个对象引用计数为0，或者只剩下弱引用时，这个对象会被释放。
弱引用1
弱引用不增加引用计数，使用弱引用访问对象得到对象引用。【在cmd中输入ipython可以进入python交互环境。】
当对象所有的指向全部指向其他地方后，这个方法才会释放内存，del方法才会被触发。
a1指向del方法，a1赋值给a2，a2也指向了del方法，当a1指向None后，del方法仍然被引用了，所以无法释放内存。当这个类没有对象引用后，引用]]></description><category></category></item><item><title><![CDATA[python---类比较]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/107291416</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/107291416</guid><author>dremcl</author><pubDate>Sat, 11 Jul 2020 21:46:03 +0800</pubDate><description><![CDATA[类比较
数值可以直接进行比较，而集合比较的是包含关系 这两者都可以直接比较，但是对于类来说却不可以直接比较。
a = 2
b = 1
# print(a &gt;1)
# print(a.__gt__(b))  # gt  --- &gt;

# 集合比较的是 包含关系

# print({1,2,3} &gt; {4}) # False
# print({1,2,3} &gt; {1,2}) # True
定义两个类，首先在第一个类中，可以相互比较，但是需要定义比较的方法，类之间也是如此，定义比较的方法。]]></description><category></category></item><item><title><![CDATA[python-property的使用]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/107290827</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/107290827</guid><author>dremcl</author><pubDate>Sat, 11 Jul 2020 21:09:41 +0800</pubDate><description><![CDATA[property的使用
定义一个方法来设置和访问该属性，如下面代码所示，即使赋值为字符串也不会报错，它会直接访问属性，倒是代码的不安全。
"""
A.get_age()  # 访问器
A.set_age()  # 设置器

通过
A.age  访问
A.age = 20 设置

定义类AgeDemo
通过访问器访问年龄
通过设置器设置年龄
年龄不是int类型则主动抛出异常

"""

# class AgeDemo:
#     def __init__(self,age):
#         self.]]></description><category></category></item><item><title><![CDATA[python----上下文管理器]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/107286427</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/107286427</guid><author>dremcl</author><pubDate>Sat, 11 Jul 2020 16:09:54 +0800</pubDate><description><![CDATA[with 语句
自定义使用上下文管理器
with语句处理对象必须要有__enter__方法及__exit__方法。并且__enter__方法在语句体（with语句包括起来的代码块）执行之前进入运行，__exit__方法在语句执行完毕退出后自动运行。
对于with的一些使用：
# try:
#     print("123")
#     raise KeyError
# except KeyError as e:
#     # print(e)
#     print("KeyError")
# fina]]></description><category></category></item><item><title><![CDATA[python----内存大小及消耗]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/107282053</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/107282053</guid><author>dremcl</author><pubDate>Sat, 11 Jul 2020 11:21:25 +0800</pubDate><description><![CDATA[节省内存
当实例运行过多时，会消耗大量的内存，如何去降低这些大量实例的内存开销呢？
解决方案：定义了 __slots__属性，声明实例有哪些属性（关闭动态绑定）
首先定义两个方法，作为两个实例
class player(object):
    def __init__(self,uid,name, status):
        self.uid = uid
        self.name = name
        self.status = status

class player2(obje]]></description><category></category></item><item><title><![CDATA[python---自定义内置方法]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/107281031</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/107281031</guid><author>dremcl</author><pubDate>Sat, 11 Jul 2020 10:31:25 +0800</pubDate><description><![CDATA[派生内置
定义一个新类型的元组，对于传入的可迭代对象，我们只保留int类型且值大于0的元素。
python中有内置的元组类型，tuple类型。自己也可以自定义一个方法类型，
class IntTuple(tuple):
#     # 重写父类的构造方法
#     def __init__(self,iterable):
#         # iterable里面的元素  为整数且&gt;0的值
#         for i in iterable:
#             if isinstan]]></description><category></category></item><item><title><![CDATA[python---对象自省工具与super]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/107125628</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/107125628</guid><author>dremcl</author><pubDate>Sat, 04 Jul 2020 16:26:01 +0800</pubDate><description><![CDATA[python对象自省机制
自省是通过一定的机制查询到对象的内部结构；较为常减的函数用法有：dir(),type(),hasattr(),isinstance()。通过这些函数，我们能够在程序运行时得知对象的类型，判断对象是否存在某个属性，访问对象的属性。
class Person(object):
    name = "happy"

class Student(Person):
    def __init__(self,h_name):
        self.h_name = h_name

g ]]></description><category></category></item><item><title><![CDATA[python---类属性和实例属性]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/107124975</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/107124975</guid><author>dremcl</author><pubDate>Sat, 04 Jul 2020 15:56:53 +0800</pubDate><description><![CDATA[type 与 isinstance
在python中，type代表着类型，而isinstance则是为是否关系；二者在应用中都有很大的空间。
type 不考虑 继承关系
isinstance  考虑继承关系
# class Father(object):
# #     def dele(self):
# #         raise NotImplementedError
# #
# #     def crea(self):
# #         raise NotImplementedError
]]></description><category></category></item><item><title><![CDATA[python-浅语言]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/107121018</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/107121018</guid><author>dremcl</author><pubDate>Sat, 04 Jul 2020 11:51:48 +0800</pubDate><description><![CDATA[鸭子类型与多态
鸭子类型
对于像Java和C#的强类语言多应用与多态的概念，而python却属于鸭子类型。
鸭子类型指的就是在调用实例化方法时，不检查类型，只要你方法存在，参数正确，就可以运行该方法。属于动态语言；它并不要求严格的继承体系，一个对象只要“看起来像鸭子，走路也想鸭子。”那么这就可以看成是鸭子类型。
多态
指的是定义的和运行的类型不一样，那么就可以被成为多态。
如下面的代码所示，只要这个extend的方法存在，参数正确，它并不分析类型是否正确，在最底层都会处理，然后正确输出结果。
a = [1,]]></description><category></category></item><item><title><![CDATA[flask复习]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/105814949</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/105814949</guid><author>dremcl</author><pubDate>Thu, 21 May 2020 14:20:48 +0800</pubDate><description><![CDATA[视图高级
类视图
标准类视图
from flask import views

class XxxXx(views.View):
	# 这个方法必须实现
	def dispatch_request(self):
		return xxxx

app.add_url_rule("URL", views_func= XxxXx.as_view('名字')
基于调度方法的类视图
from flask i...]]></description><category></category></item><item><title><![CDATA[Restful API规范与Flask-Restful插件]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/106031795</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/106031795</guid><author>dremcl</author><pubDate>Wed, 20 May 2020 11:01:40 +0800</pubDate><description><![CDATA[Restful API规范
是用于在前端与后台进行通信的一套规范，使用这个规范可以让前后端开发变得更加轻松。
协议
采用http或者https协议
数据传输格式
数据之间传输的格式应该都使用ison，而不使用xml
url连接
url连接中，不能有动词，只能有名词，并且对于一些名词，如果出现复数胡，那么应该在后面加s。
HTTP请求的方法

GET：从服务器中获取资源
POST：在服务器中新创建一个资源
PUT：在服务器中更新资源（客户端提供所有改变后的数据）
PATCH：在服务器上更新资源（客户端只提供需]]></description><category></category></item><item><title><![CDATA[Flask上下文与钩子函数]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/105989675</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/105989675</guid><author>dremcl</author><pubDate>Sun, 10 May 2020 09:07:02 +0800</pubDate><description><![CDATA[Flask上下文
Flask项目中有两个上下文，一个是应用上下文（app)，另一个是请求上下文（request）。请求上下文request和应用上下文current_app都是一个全局变量，所有请求都是共享的。Flask有特殊机制可以保证每次请求的数据都是个离的，即A请求所产生的数据不会影响到B请求。所以可以直接导入request对象，也不会被一些脏数据影响，并且不需要在每个函数中使用reques...]]></description><category></category></item><item><title><![CDATA[cookie和session的介绍使用]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/105987542</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/105987542</guid><author>dremcl</author><pubDate>Fri, 08 May 2020 10:19:36 +0800</pubDate><description><![CDATA[cookie和session的区别
1。 cookie：在网站中，HTTP请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后，第二次请求服务器依然不能知道当前请求是哪个用户，cookie的出现就是为了解决这个问题。第一次登录后服务器返回一些数据（cookie）给浏览器，然后浏览器保存到本地。当前用户发送第二次请求的时候，就会自动的把上次请求存储的cookie数据自动的携带给服务器，服务...]]></description><category></category></item><item><title><![CDATA[web--安全攻防1-信息收集]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/105953095</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/105953095</guid><author>dremcl</author><pubDate>Thu, 07 May 2020 09:51:45 +0800</pubDate><description><![CDATA[信息收集
域名介绍
域名是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称，用于在数据传输时标记计算机的电子方位，浏览网站过程：从DNS服务器获得指定域名对应的IP地址
Whois
Whois就是一个用来查询域名是否已经被注册，以及注册域名的详细信息的数据库（比如域名所有人、域名注册商）
不同域名后缀的whois信息需要不同的whois数据库查询。如com的whois数据库...]]></description><category></category></item><item><title><![CDATA[flask-文件类型上传]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/105928832</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/105928832</guid><author>dremcl</author><pubDate>Tue, 05 May 2020 15:51:57 +0800</pubDate><description><![CDATA[文件上传

在模板中，form表单中，需要指定encotype='multipart/form-data’才能上传。
在后台如果想要获取上传文件，那么应该使用request.files.get(‘avatar’)来获取。
保存文件之前，先要使用werkzeug.utils.secure_filename来对上传文件名进行一个过滤。这样才能保证不会有安全问题。
获取到上传上来的文件后，使用avata...]]></description><category></category></item><item><title><![CDATA[flask-表单验证]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/105918146</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/105918146</guid><author>dremcl</author><pubDate>Tue, 05 May 2020 10:24:44 +0800</pubDate><description><![CDATA[Flask-WTF
它是简化了WTForms操作的一个第三方库。WTForms表单的两个主要功能是验证用户提交数据的合法性以及渲染模板。还包括一些其他的功能：CSRF保护，文件上传等。安装Flask-WTF默认也会安装WTForms,因此使用一下命令来安装Flask-WTF。
pip install flask-wtf
表单验证
安装完flask-wtf后，第一个功能就是用表单来做数据验证，现在又...]]></description><category></category></item><item><title><![CDATA[flask-SQLAlchemy插件]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/105912372</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/105912372</guid><author>dremcl</author><pubDate>Mon, 04 May 2020 15:24:39 +0800</pubDate><description><![CDATA[SQLAlchemy插件
另外一个框架，叫做flask-SQLAlchemy，flask-SQLAlchemy是对SQLAlchemy进行了一个简单的封装，使得我们在flask中使用SQLAlchemy更加简单，可以通过pip install flask-SQLAlchemy.

数据库初始化：数据库初始化不再是通过creat_engine

from flask import Flask
fro...]]></description><category></category></item><item><title><![CDATA[flask--排序与查询高级运用]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/105887597</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/105887597</guid><author>dremcl</author><pubDate>Sun, 03 May 2020 10:31:32 +0800</pubDate><description><![CDATA[排序

order_by：可以指定根据这个表中的某个字段进行排序，如果在前面加了一个-,代表的是降序排序。
在模型定义的时候指定默认排序：有些时候，不想每次查询的时候都指定排序的方式，可以指定模型的时候就指定排序的方式。
在模型定义中，添加一下代码

__mapper_args__"{
	"order_by":title
	}


即可让文章使用标题来进行排序


正向排序和反向排序：默认

jo...]]></description><category></category></item><item><title><![CDATA[flask--表的外键约束--表关系]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/105886113</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/105886113</guid><author>dremcl</author><pubDate>Sat, 02 May 2020 10:31:57 +0800</pubDate><description><![CDATA[表关系
基础框架
from sqlalchemy import create_engine, and_, or_
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, Float, Text, ForeignKey
from sqlalchemy...]]></description><category></category></item><item><title><![CDATA[外键与其四种约束---一对多]]></title><link>https://blog.youkuaiyun.com/dremcl/article/details/105877761</link><guid>https://blog.youkuaiyun.com/dremcl/article/details/105877761</guid><author>dremcl</author><pubDate>Fri, 01 May 2020 18:10:12 +0800</pubDate><description><![CDATA[外键
再MySQL中，外键可以让表之间的关系更加紧密，而SQLAlchemy同样也支持外键。通过ForeignKey类来实现，并且可以指定表的外键来约束。
基础代码同上篇一样！
class User(Base):
    __tablename__ = 'user'
    id = Column(Integer, primary_key=True, autoincrement=True)
   ...]]></description><category></category></item></channel></rss>