<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[GLH_2236504154的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/GLH_2236504154</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; GLH_2236504154]]></copyright><item><title><![CDATA[python连接api接口-post方法之'Content-Type': multipart/form-data]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/103144972</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/103144972</guid><author>GLH_2236504154</author><pubDate>Tue, 19 Nov 2019 16:15:07 +0800</pubDate><description><![CDATA[在一次意外的写一个连接api接口的代码，上传表单数据使用post方法一直提交不上去数据，发现’Content-Type’: multipart/form-data对数据格式有具体的要求。
在查阅资料后，实现第三方模块来执行
具体是用脚本执行还是IDE工具自行考虑，都给出了方法：
import requests
import sys
import getopt

# 忽略警告信息
import wa...]]></description><category></category></item><item><title><![CDATA[python写入dbf文件内容及创建dbf文件]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/103144585</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/103144585</guid><author>GLH_2236504154</author><pubDate>Tue, 19 Nov 2019 16:08:29 +0800</pubDate><description><![CDATA[想要实现打开dbf文件后写入数据，奈何python3网上没有任何方法，有一个人自己写了个类，基于个人要求，需要操作dbf文件实现内容添加，以下方法需要python2的环境来是实现。
需求：向八个dbf文件中插入数据
一。需要导入的模块：
import string
import time
import random
import sys
import os
import csv
import ge...]]></description><category></category></item><item><title><![CDATA[前端-html5常用标签]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100537696</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100537696</guid><author>GLH_2236504154</author><pubDate>Wed, 04 Sep 2019 14:16:13 +0800</pubDate><description><![CDATA[常用标签
&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;第一个html文件&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;



&lt;!--1. 标题标签h1-h6--&gt;
&lt;!--...]]></description><category></category></item><item><title><![CDATA[socketserver实现简化socket编程]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100172859</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100172859</guid><author>GLH_2236504154</author><pubDate>Sat, 31 Aug 2019 14:59:07 +0800</pubDate><description><![CDATA[实现tcp的socket多线程通信
1. What is socketserver?
socket并不能多并发，只能支持一个用户，socketserver 简化了编写网络服务程序的任务，
socketserver是socket的在封装。socketserver在python2中为SocketServer,在python3
取消了首字母大写，改名为socketserver。socketserver中...]]></description><category></category></item><item><title><![CDATA[socket编程（基于TCP/UDP协议的通信）]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100164092</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100164092</guid><author>GLH_2236504154</author><pubDate>Fri, 30 Aug 2019 22:17:07 +0800</pubDate><description><![CDATA[基于tcp的通信
TCP把连接作为最基本的对象，每一条TCP连接都有两个端点，这种断点我们叫作套接字（socket）
服务端：
import socket
# 1. 创建一个socket对象;
# family指定使用IP协议的版本: IPV4:AF_INET;  ipv6: AF_INET6
# type指定传输层使用的协议类型:TCP(SOCKET.SOCK_STREAM), UDP(SOCK...]]></description><category></category></item><item><title><![CDATA[协程理解与运用]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100141714</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100141714</guid><author>GLH_2236504154</author><pubDate>Thu, 29 Aug 2019 17:03:45 +0800</pubDate><description><![CDATA[1. 协程概念
协程,又称微线程,纤程,英文名Coroutine。协程的作用,是在执行函数A时,可以随时中断,
去执行函数B,然后中断继续执行函数A(可以自由切换)。但这一过程并不是函数调用(没有调
用语句),这一整个过程看似像多线程,然而协程只有一个线程执行。

2. 协程优势
- 执行效率极高,因为子程序切换(函数)不是线程切换,由程序自身控制,
没有切换线程的开销。所以与多线程相比,线程的数...]]></description><category></category></item><item><title><![CDATA[多线程与多进程的总结与对比]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100125053</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100125053</guid><author>GLH_2236504154</author><pubDate>Wed, 28 Aug 2019 19:09:23 +0800</pubDate><description><![CDATA[1.什么是进程？什么是线程？
进程是表示资源分配的基本单位，又是调度运行的基本单位。
例如，用户运行自己的程序，系统就创建一个进程，并为它分配资源，
包括各种表格、内存空间、磁盘空间、I/O设备等。然后，把该进程放
人进程的就绪队列。进程调度程序选中它，为它分配CPU以及其它有关资源，该进程才真正运行。
线程是进程中执行运算的最小单位，如果把进程理解为在逻辑上操作系统所完成的任务，
那么线程表示完...]]></description><category></category></item><item><title><![CDATA[分布式进程]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100124925</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100124925</guid><author>GLH_2236504154</author><pubDate>Wed, 28 Aug 2019 19:03:42 +0800</pubDate><description><![CDATA[分布式进程
多台机器创建进程联合执行任务
分布式进程的步骤
#分布式进程六个步骤：
1.建立队列Queue，用来进程间的通信。
2.将队列Queue进行网络共享给其他进程
3.建立对象实例，绑定端口和验证口令
4.启动对象实例进行信息传输管理
5.通过对象实例将网络队列本地化
6.分配本地化队列进行进程任务处理

在主机也就是发布任务的主机服务进程
import random
from queue...]]></description><category></category></item><item><title><![CDATA[进程锁和进程池]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100118871</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100118871</guid><author>GLH_2236504154</author><pubDate>Wed, 28 Aug 2019 18:27:06 +0800</pubDate><description><![CDATA[进程锁
# 当数据发生变化时，当采用的时多进程存在时间差，就会造成数据紊乱。
# 比如买票，假如这个时候只有一张票，但是所有人都能买，最后打印发现好几个人买到票了，
# 几个人没买到票。
# 因为在一个进程买票后，去修改票数时，由于时间太快，没来得及修改，就回到是其他进程买到票。
# 所以，这个时候就需要进程锁，
# 好比一个上锁的房间，门口只有一个钥匙，一个线程拿到钥匙进去修改数据没出来前，其他...]]></description><category></category></item><item><title><![CDATA[进程与多进程的理解与实现]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100118514</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100118514</guid><author>GLH_2236504154</author><pubDate>Wed, 28 Aug 2019 14:22:12 +0800</pubDate><description><![CDATA[子进程和父进程
1). Unix/Linux操作系统提供了一个fork()系统调用，它非常特殊。普通的函数调用，
调用一次，返回一次，但是fork()调用一次，返回两次，因为操作系统自动把当前进程（
称为父进程）复制了一份（称为子进程），然后，分别在父进程和子进程内返回。

2). 子进程永远返回0，而父进程返回子进程的ID。这样做的理由是，一个父进程可以fork
出很多子进程，所以，父进程要记下...]]></description><category></category></item><item><title><![CDATA[线程池的实现]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100085354</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100085354</guid><author>GLH_2236504154</author><pubDate>Mon, 26 Aug 2019 21:46:58 +0800</pubDate><description><![CDATA[什么是线程池？为什么要使用线程池？
在使用多线程处理任务时也不是线程越多越好，由于在切换线程的时候，需要切换上下文环境，依然会造成cpu的大量开销。
为解决这个问题，线程池的概念被提出来了。
预先创建好一个较为优化的数量的线程，让过来的任务立刻能够使用，就形成了线程池。

concurrent.futures模块实现线程池
运用到submit方法或map方法

    # python3.2版本之...]]></description><category></category></item><item><title><![CDATA[线程锁的运用]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100067783</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100067783</guid><author>GLH_2236504154</author><pubDate>Sun, 25 Aug 2019 21:21:33 +0800</pubDate><description><![CDATA[1. 为什么需要线程锁?
多个线程对同一个数据进行修改时， 可能会出现不可预料的情况.


2. 如何实现线程锁?
# 1. 实例化一个锁对象;
#     lock = threading.Lock()
# 2. 操作变量之前进行加锁
#     lock.acquire()
# 3. 操作变量之后进行解锁
#     lock.release()

线程锁在程序中运用
import threa...]]></description><category></category></item><item><title><![CDATA[队列——在多线程中的运用：生产者与消费者模型]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100049565</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100049565</guid><author>GLH_2236504154</author><pubDate>Sat, 24 Aug 2019 11:02:03 +0800</pubDate><description><![CDATA[队列选择的必要性：
1). 理论上多线程执行任务是不能获取返回结果的， 因此需要一个容器来存储产生的数据；
2). 容器该如何选择? list(栈， 队列), tuple(元组是不可变的， 不可使用), set(集合默认会去重， 所以不选择), dict,
选择队列类型存储(FIFO===first input first output)
import threading
from queue i...]]></description><category></category></item><item><title><![CDATA[python中多线程与单线程的对比]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100022742</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100022742</guid><author>GLH_2236504154</author><pubDate>Thu, 22 Aug 2019 19:53:41 +0800</pubDate><description><![CDATA[# 做一个简单的爬虫：
import threading
import time
import functools
from urllib.request import urlopen

# 写一个时间函数的装饰器
def timeit(f):
    @functools.wraps(f)
    def wrapper(*args,**kwargs):
        start_time=t...]]></description><category></category></item><item><title><![CDATA[python的多线程的实现方式]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100019754</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100019754</guid><author>GLH_2236504154</author><pubDate>Thu, 22 Aug 2019 17:28:45 +0800</pubDate><description><![CDATA[1. 重要的概念?
程序: /bin/firefox是一个二进制程序， (eg:python， Java程序)， 是一个真实存在的， 可以看到的实体；
进程:每个独立的进程有一个程序运行的入口、顺序执行序列和程序的出口。
线程:但是线程不能够独立执行，必须依存在应用程序中，由应用程序提供多个线程执行控制。
专业的总结:
- 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系...]]></description><category></category></item><item><title><![CDATA[paramiko基于公钥和私钥的连接与linux系统操作实现连接对比]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100012227</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/100012227</guid><author>GLH_2236504154</author><pubDate>Thu, 22 Aug 2019 15:24:21 +0800</pubDate><description><![CDATA[在linux系统中，要实现两台主机的无密码连接，需要操作：
比如host2要无密码连接host1：
host1：172.25.254.167
host2：172.25.254.67
host1中操作：
1—&gt;生成公钥私钥对：ssh-keygen
2—&gt;先切换到密钥的存储位置：cd  /root/.ssh/（一般默认存储在这里）
3—&gt;将本地主机的公钥复制到本机的authorize...]]></description><category></category></item><item><title><![CDATA[redis使用hash类型保存多样化数据]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/99951513</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/99951513</guid><author>GLH_2236504154</author><pubDate>Wed, 21 Aug 2019 12:31:57 +0800</pubDate><description><![CDATA[import redis
pool=redis.ConnectionPool(host=‘localhost’,port=6379)
conn=redis.Redis(connection_pool=pool)
hset(self, name ,key,value)
name对应的hash中设置一个键值对（不存在，则创建；否则，修改）
参数：
# name，redis中hash数据的name
# ...]]></description><category></category></item><item><title><![CDATA[解决python连接redis报错：redis.exceptions.ResponseError: MISCONF Redis is configured to save RDB snapshots]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/99945499</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/99945499</guid><author>GLH_2236504154</author><pubDate>Wed, 21 Aug 2019 11:20:42 +0800</pubDate><description><![CDATA[当在连接使用redis数据库的时候，出现了下面的报错：
redis.exceptions.ResponseError:
 MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk.
 Commands that may modify the data set ...]]></description><category></category></item><item><title><![CDATA[2048游戏设计]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/86299029</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/86299029</guid><author>GLH_2236504154</author><pubDate>Tue, 20 Aug 2019 15:29:53 +0800</pubDate><description><![CDATA[import curses
import random
from itertools import chain


class GameField(object):
    def __init__(self, width=4, height=4, win_score=2048):
        self.width = width
        self.height = height
  ...]]></description><category></category></item><item><title><![CDATA[基于flask的微电影管理——后台管理（3）]]></title><link>https://blog.youkuaiyun.com/GLH_2236504154/article/details/89099330</link><guid>https://blog.youkuaiyun.com/GLH_2236504154/article/details/89099330</guid><author>GLH_2236504154</author><pubDate>Mon, 08 Apr 2019 17:55:42 +0800</pubDate><description><![CDATA[6.电影评论管理
6.1 直接从用户获取信息，所以不必有forms表单
6.2 用户管理的视图函数


from app import app, db
from flask import render_template, flash, redirect, url_for, request
from app.admin import admin
from app.admin.utils import...]]></description><category></category></item></channel></rss>