python3下使用requests实现模拟用户登录 —— 基础篇(马蜂窝)

2023-11-02

python3下使用requests实现模拟用户登录 —— 基础篇(马蜂窝)

##1. 了解cookie和session

  • 首先一定要先了解到cookie和session是什么,这是后面理解网站交互,模拟用户登录的基础。
    ###1.1. 无状态协议:Http
    这里写图片描述

  • 如上图所示,HTTP协议 是无状态的协议,用户浏览服务器上的内容,只需要发送页面请求,服务器返回内容。对于服务器来说,并不关心,也并不知道是哪个用户的请求。对于一般浏览性的网页来说,没有任何问题。

  • 但是,现在很多的网站,是需要用户登录的。以淘宝为例:比如说某个用户想购买一个产品,当点击 “ 购买按钮 ” 时,由于HTTP协议 是无状态的,那对于淘宝来说,就不知道是哪个用户操作的。

  • 为了实现这种用户标记,服务器就采用了cookie这种机制来识别具体是哪一个用户的访问。

###1.2. 了解cookie
这里写图片描述

  • 如图,为了实现用户标记,在Http无状态请求的基础之上,我们需要在请求中携带一些用户信息(比如用户名之类,这些信息是服务器发送到本地浏览器的,但是服务器并不存储这些信息),这就是cookie机制。如下图所示,在登录马蜂窝网站之后,就可以看到浏览器已经保存了一些cookie信息(chrome浏览器为例):
    这里写图片描述

  • 需要注意的是:cookie信息是保存在本地浏览器里面的,服务器上并不存储相关的信息。 在发送请求时,cookie的这些内容是放在 Http协议中的header 字段中进行传输的。
    这里写图片描述

  • 几乎现在所有的网站都会发送一些 cookie信息过来,当用户请求中携带了cookie信息,服务器就可以知道是哪个用户的访问了,从而不需要再使用账户和密码登录。

  • 但是,刚才也提到了,cookie信息是直接放在Http协议的header中进行传输的,看得出来,这是个隐患!一旦别人获取到你的cookie信息(截获请求,或者使用你的电脑),那么他很容易从cookie中分析出你的用户名和密码。为了解决这个隐患,所以有了session机制。

###1.3. 了解session

  • 刚才提到了cookie不安全,所以有了session机制。简单来说(每个框架都不一样,这只是举一个通用的实现策略),整过过程是这样:
  • 服务器根据用户名和密码,生成一个session ID,存储到服务器的数据库中。
  • 用户登录访问时,服务器会将对应的session ID发送给用户(本地浏览器)。
  • 浏览器会将这个session ID存储到cookie中,作为一个键值项。
  • 以后,浏览器每次请求,就会将含有session ID的cookie信息,一起发送给服务器。
  • 服务器收到请求之后,通过cookie中的session ID,到数据库中去查询,解析出对应的用户名,就知道是哪个用户的请求了。

####1.3.1. 看一下Django是如何实现session机制的,来加深对session的了解

  • 第一步:对用户登录信息进行加密,生成一个sessionID,存储到数据库中。
    这里写图片描述
    这里写图片描述
    Session_key:服务器给用户返回的ID
    Session_data:一段加密的文字。用户名,密码,一些其他的用户信息。把这些信息生成一段字符串,是加密的
    expire_date:django后台会设置过期时间。 主要是担心session被黑客截取,那就一直可以用,盗用数据。
  • 第二步,当用户登录时,服务器会给本地浏览器返回一些cookie信息,包括session ID。
    这里写图片描述

  • 第三步:以后浏览器每次访问时,浏览器都会把 session ID带过来,这样服务器不需要知道你的用户名,就知道是哪个用户的访问了。

  • 服务器是如何把sessionID转换成用户名的?
    这里写图片描述

  • 如上图所示,在Django中,需要对session进行配置。这个INSTALLED_APPS 是会对每次request和response进行拦截,拦截到浏览器发送过来的request时,找到其中的session信息,然后到数据库中进行查询,找到session_data,再做解密,就知道所有的用户信息了,取出user信息。新建完Django项目之后,这个sessions信息就配置好了。如果注释掉这一个session配置,自动登录机制就会失效,无法使用。

###1.4. 总结一下

  • cookie 在客户端(本地浏览器),session 在服务器端。cookie是一种浏览器本地存储机制。存储在本地浏览器中,和服务器没有关系。每次请求,用户会带上本地cookie的信息。这些cookie信息也是服务器之前发送给浏览器的,或者是用户之前填写的一些信息。
  • Cookie有不安全机制。 你不能把所有的用户信息都存在本地,一旦被别人窃取,就知道你的用户名和密码,就会很危险。所以引入了session机制。
  • 服务器在发送id时引入了一种session的机制,很简单,就是根据用户名和密码,生成了一段随机的字符串,这段字符串是有过期时间的。
  • 一定要注意:session是服务器生成的,存储在服务器的数据库或者文件中,然后把sessionID发送给用户,用户存储在本地cookie中。每次请求时,把这个session ID带给服务器,服务器根据session ID到数据库中去查询,找到是哪个用户,就可以对用户进行标记了。
  • session 的运行依赖 session ID,而 session ID 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,那么同时 session 也会失效(但是可以通过其它方式实现,比如在url中传递 session ID)
  • 用户验证这种场合一般会用 session。 因此,维持一个会话的核心就是客户端的唯一标识,即session ID

##2. 环境

  • 系统:win7
  • python 3.6.1
  • requests 2.14.2 (通过pip list查看)

##3. 模拟登录马蜂窝网站

  • 马蜂窝:http://www.mafengwo.cn/
    ##3.1. 分析用户登录流程
  • 这里会用到两个小技巧
  • 第一,先使用一个错误的用户名和密码来登录,这样就可以清晰的看到这个登录请求有post哪些数据,post到哪个url。因为如果使用正确的用户名和密码登录,一旦登录成功,就会直接跳转到其他页面,页面和请求都会被刷新。很难找出原始的请求信息。
    这里写图片描述
  • 第二,在截取请求的地方,勾选Preserve log,保留跳转前的请求数据。
    这里写图片描述
  • 截取到的请求如下:
    这里写图片描述
    这里写图片描述
#提取到的请求信息:
Headers:
    Request URL:https://passport.mafengwo.cn/login/
    Request Method:POST	
    origin:https://passport.mafengwo.cn	
    referer:https://passport.mafengwo.cn/	
    User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/63.0.3239.132 Safari/537.36	

Form Data:
    passport:13725168940
    password:aaa00000000

##3.2. 模拟登录

# -*- coding: utf-8 -*-

import requests

userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
header = {
    # "origin": "https://passport.mafengwo.cn",
    "Referer": "https://passport.mafengwo.cn/",
    'User-Agent': userAgent,
}

def mafengwoLogin(account, password):
    # 马蜂窝模仿 登录
    print ("开始模拟登录马蜂窝")
    
    postUrl = "https://passport.mafengwo.cn/login/"
    postData = {
        "passport": account,
        "password": password,
    }
    responseRes = requests.post(postUrl, data = postData, headers = header)
    # 无论是否登录成功,状态码一般都是 statusCode = 200
    print(f"statusCode = {responseRes.status_code}")
    print(f"text = {responseRes.text}")

if __name__ == "__main__":
    # 从返回结果来看,有登录成功
    mafengwoLogin("13756567832", "000000001")

  • 一般来说,调试期,判断是否登录成功的最简单的方法:就是直接打印登录之后的text内容,使用错误的用户名登录,和使用正确的用户名登录,对比打印输出的内容。
  • 后面会提出一个更好的判断方式…

##3.3. 使用cookie访问站点

  • 在上一步,我们已经成功登录到马蜂窝网站了。那么接下来要如何访问站点中其他页面呢。前面提到过,网站是通过cookie和session来标记是哪个用户访问的。所以,在我们登录成功之后,有很重要的一步,就是我们需要把cookie保存下来,下一次请求这个站点的页面时,把这个cookie带过去。

###3.3.1. 保存cookie信息

  • 修改代码,加入cookie保存机制
# -*- coding: utf-8 -*-

import requests

# python2 和 python3的兼容代码
try:
    # python2 中
    import cookielib
    print(f"user cookielib in python2.")
except:
    # python3 中
    import http.cookiejar as cookielib
    print(f"user cookielib in python3.")

# session代表某一次连接
mafengwoSession = requests.session()
# 因为原始的session.cookies 没有save()方法,所以需要用到cookielib中的方法LWPCookieJar,这个类实例化的cookie对象,就可以直接调用save方法。
mafengwoSession.cookies = cookielib.LWPCookieJar(filename = "mafengwoCookies.txt")

userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
header = {
    # "origin": "https://passport.mafengwo.cn",
    "Referer": "https://passport.mafengwo.cn/",
    'User-Agent': userAgent,
}

def mafengwoLogin(account, password):
    # 马蜂窝模仿 登录
    print("开始模拟登录马蜂窝")

    postUrl = "https://passport.mafengwo.cn/login/"
    postData = {
        "passport": account,
        "password": password,
    }
    # 使用session直接post请求
    responseRes = mafengwoSession.post(postUrl, data = postData, headers = header)
    # 无论是否登录成功,状态码一般都是 statusCode = 200
    print(f"statusCode = {responseRes.status_code}")
    print(f"text = {responseRes.text}")
    # 登录成功之后,将cookie保存在本地文件中,好处是,以后再去获取马蜂窝首页的时候,就不需要再走mafengwoLogin的流程了,因为已经从文件中拿到cookie了
    mafengwoSession.cookies.save()


if __name__ == "__main__":
    # 从返回结果来看,有登录成功
    # mafengwoLogin("13756567832", "000000001")
  • cookie保存结果如下:
# 文件:mafengwoCookies.txt

#LWP-Cookies-2.0
Set-Cookie3: __today_login=1; path="/"; domain=".mafengwo.cn"; path_spec; domain_dot; expires="2018-03-16 15:56:15Z"; httponly=None; version=0
Set-Cookie3: mafengwo="0a60e1a04f6a6f5555f0e285602b5b17_94281374_5aab641fb23d42.37804626_5aab641fb23dc3.28763728"; path="/"; domain=".mafengwo.cn"; path_spec; domain_dot; expires="2018-06-13 06:25:03Z"; httponly=None; version=0
Set-Cookie3: mfw_uuid="5aab641f-b789-96ef-736d-48640285f4c0"; path="/"; domain=".mafengwo.cn"; path_spec; domain_dot; expires="2019-03-16 06:25:03Z"; version=0
Set-Cookie3: oad_n="a%3A3%3A%7Bs%3A3%3A%22oid%22%3Bi%3A1029%3Bs%3A2%3A%22dm%22%3Bs%3A20%3A%22passport.mafengwo.cn%22%3Bs%3A2%3A%22ft%22%3Bs%00009%3A%222018-03-16+14%3A28%3A47%22%3B%7D"; path="/"; domain=".mafengwo.cn"; path_spec; domain_dot; expires="2018-03-23 06:25:03Z"; version=0
Set-Cookie3: uol_throttle=94281374; path="/"; domain=".mafengwo.cn"; path_spec; domain_dot; expires="2018-03-16 06:35:03Z"; version=0

###3.3.2. 使用cookie登录

  • 为了测试访问页面时,是否处于登录状态。有一个比较巧妙的方法:就是直接访问一个需要登录后,才可见的地址。比如说涉及到用户信息的页面。下面以 “我的路线” 页面为例:http://www.mafengwo.cn/plan/route.php
  • 这是登录状态后见到的页面:
    这里写图片描述
    这里写图片描述
  • 如果是 非登录状态,会自动跳转(重定向302)到 用户登录页面
    这里写图片描述
  • 所以,我们可以用这个页面判断cookie登录是否成功,代码如下:
# -*- coding: utf-8 -*-

import requests

# python2 和 python3的兼容代码
try:
    # python2 中
    import cookielib
    print(f"user cookielib in python2.")
except:
    # python3 中
    import http.cookiejar as cookielib
    print(f"user cookielib in python3.")

# session代表某一次连接
mafengwoSession = requests.session()
# 因为原始的session.cookies 没有save()方法,所以需要用到cookielib中的方法LWPCookieJar,这个类实例化的cookie对象,就可以直接调用save方法。
mafengwoSession.cookies = cookielib.LWPCookieJar(filename = "mafengwoCookies.txt")

userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
header = {
    # "origin": "https://passport.mafengwo.cn",
    "Referer": "https://passport.mafengwo.cn/",
    'User-Agent': userAgent,
}

def isLoginStatus():
    # 通过访问个人中心页面的返回状态码来判断是否为登录状态

    routeUrl = "http://www.mafengwo.cn/plan/route.php"
    # 下面有两个关键点
        # 第一个是header,如果不设置,会返回500的错误
        # 第二个是allow_redirects,如果不设置,session访问时,服务器返回302,
        # 然后session会自动重定向到登录页面,获取到登录页面之后,变成200的状态码
        # allow_redirects = False  就是不允许重定向
    responseRes = mafengwoSession.get(routeUrl, headers = header, allow_redirects = False)
    print(f"isLoginStatus = {responseRes.status_code}")
    if responseRes.status_code != 200:
        return False
    else:
        return True


if __name__ == "__main__":
    mafengwoSession.cookies.load()
    isLogin = isLoginStatus()
    print(f"is login mafengwo = {isLogin}")
    '''
	    # 按照之前保存过的mafengwoCookies.txt登录,属于登录状态:
        user cookielib in python3.
        isLoginStatus = 200
        is login mafengwo = True
    '''

    '''
        # 如果把mafengwoCookies.txt中的信息修改掉之后,就无法登录了,属于非登录状态了
        user cookielib in python3.
        isLoginStatus = 302
        is login mafengwo = False
    '''

##3.4. 最终形成的登录模式

  • 因为cookie是有有效期的,所以没法做到一次登录,终生有效。所以,一般的登录模式,就是:
  • 第一步:先尝试cookie登录
  • 第二步:如果cookie无法登录成功,就使用用户名密码登录,将新的cookie保存下来。
# -*- coding: utf-8 -*-

import requests

# python2 和 python3的兼容代码
try:
    # python2 中
    import cookielib
    print(f"user cookielib in python2.")
except:
    # python3 中
    import http.cookiejar as cookielib
    print(f"user cookielib in python3.")

# session代表某一次连接
mafengwoSession = requests.session()
# 因为原始的session.cookies 没有save()方法,所以需要用到cookielib中的方法LWPCookieJar,这个类实例化的cookie对象,就可以直接调用save方法。
mafengwoSession.cookies = cookielib.LWPCookieJar(filename = "mafengwoCookies.txt")

userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
header = {
    # "origin": "https://passport.mafengwo.cn",
    "Referer": "https://passport.mafengwo.cn/",
    'User-Agent': userAgent,
}


# 马蜂窝模仿 登录
def mafengwoLogin(account, password):
    print("开始模拟登录马蜂窝")
    postUrl = "https://passport.mafengwo.cn/login/"
    postData = {
        "passport": account,
        "password": password,
    }
    # 使用session直接post请求
    responseRes = mafengwoSession.post(postUrl, data = postData, headers = header)
    # 无论是否登录成功,状态码一般都是 statusCode = 200
    print(f"statusCode = {responseRes.status_code}")
    print(f"text = {responseRes.text}")
    # 登录成功之后,将cookie保存在本地文件中,好处是,以后再去获取马蜂窝首页的时候,就不需要再走mafengwoLogin的流程了,因为已经从文件中拿到cookie了
    mafengwoSession.cookies.save()


# 通过访问个人中心页面的返回状态码来判断是否为登录状态
def isLoginStatus():
    routeUrl = "http://www.mafengwo.cn/plan/route.php"
    # 下面有两个关键点
        # 第一个是header,如果不设置,会返回500的错误
        # 第二个是allow_redirects,如果不设置,session访问时,服务器返回302,
        # 然后session会自动重定向到登录页面,获取到登录页面之后,变成200的状态码
        # allow_redirects = False  就是不允许重定向
    responseRes = mafengwoSession.get(routeUrl, headers = header, allow_redirects = False)
    print(f"isLoginStatus = {responseRes.status_code}")
    if responseRes.status_code != 200:
        return False
    else:
        return True


if __name__ == "__main__":
	# 第一步:尝试使用已有的cookie登录
    mafengwoSession.cookies.load()
    isLogin = isLoginStatus()
    print(f"is login mafengwo = {isLogin}")
    if isLogin == False:
        # 第二步:如果cookie已经失效了,那就尝试用帐号登录
        print(f"cookie失效,用户重新登录...")
        mafengwoLogin("13756567832", "000000001")

    resp = mafengwoSession.get("http://www.mafengwo.cn/plan/fav_type.php", headers = header, allow_redirects = False)
    print(f"resp.status = {resp.status_code}")

# 第一次运行程序的输出:
# 由于第一次还没有生成cookie,所以需要用账户登录一次

user cookielib in python3.
isLoginStatus = 302
is login mafengwo = False
cookie失效,用户重新登录...
开始模拟登录马蜂窝
statusCode = 200
……………………
resp.status = 200
# 第二次运行程序的输出:
# 第二次,就直接使用cookie登录了,不再需要使用帐号登录

user cookielib in python3.
isLoginStatus = 200
is login mafengwo = True
resp.status = 200
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python3下使用requests实现模拟用户登录 —— 基础篇(马蜂窝) 的相关文章

  • [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍

    前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索 Eastmount 关键字及截图的功能 而这篇文章主要简单介绍如何实现自动登录163邮箱 同时继续介绍Selenium Python官网Locating
  • 爬取中国移动用户问答

    最近一个好朋友在搞爬虫 问了很多问题 所以干脆直接写了一个范例 这个程序整体要两次解析网页 第一层是分析网页中的json数据来获取qtid 第二层是用qtid来解析获得问答所在的网页 因为在问答网页里的数据存储是引用的数据库中的数据 所以不
  • urllib库的使用

    个人简介 作者简介 大家好 我是W chuanqi 一个编程爱好者 个人主页 W chaunqi 支持我 点赞 收藏 留言 愿你我共勉 若身在泥潭 心也在泥潭 则满眼望去均是泥潭 若身在泥潭 而心系鲲鹏 则能见九万里天地 文章目录 urll
  • 代理IP的高匿名,匿名和透明的区别

    如果从隐藏使用代理用户的级别上划分 代理可以分为三种 即高度匿名代理 普通匿名代理和透明代理 1 高度匿名代理不改变客户机的请求 这样在服务器看来就像有个真正的客户浏览器在访问它 这时客户的真实IP是隐藏的 服务器端不会认为我们使用了代理
  • python爬虫爬取使用Ajax请求的网站数据解析——以梅老板微博为例(m.weibo.cn)

    文章目录 前言 什么是Ajax Ajax基本原理 发送请求 解析内容 渲染网页 Ajax分析方法 查看请求 过滤请求 Ajax结果提取 1 分析请求 since id解析 2 分析响应 3 爬取微博数据 后记 前言 前面学习了使用正则表达式
  • 【2】Python爬虫:分析AJAX传递的JSON获取数据-初步分析动态网页(1)

    前言 这是本人写的第二篇文章 希望能够帮助到一些和我一样的python爬虫初学者 在第一篇文章中 我总结了最近学到的利用requests和bs4第三方库共同作用 基本可以应对python获取静态网页数据的相关问题 但是如果现实中的网页往往比
  • 盘点Python爬虫中的常见加密算法,建议收藏!!

    相信大家在数据抓取的时候 会碰到很多加密的参数 例如像是 token sign 等等 今天小编就带着大家来盘点一下数据抓取过程中这些主流的加密算法 它们有什么特征 加密的方式有哪些等等 知道了这些之后对于我们逆向破解这些加密的参数会起到不少
  • Python爬虫爬取LOL所有英雄皮肤

    import requests import os import jsonpath from urllib request import urlretrieve 获取ID def get id url https game gtimg cn
  • AutoScraper——爬虫神器

    AutoScraper是一个自动化的爬虫工具 非常智能 而且使用简单便捷 AutoScraper 是使用 Python 实现的 Web 爬虫 兼容 Python 3 能快速且智能获取指定网站上的数据 在github上具有4 8K githu
  • python的itchat模块

    今天一不小心发现的python的好玩模块itchar 首先 安装 pip install itchat 1 搜索微信好友信息 import itchat itchat auto login hotReload True 登入 friends
  • 大数据采集概述

    文章目录 大数据采集概述 1 互联网大数据与采集 1 1互联网大数据来源 1 社交媒体 2 社交网络 3 百科知识库 4 新闻网站 5 评论信息 6 位置型信息 1 2 互联网大数据的特征 1 大数据类型和语义更加丰富 2 数据的规范化程度
  • Python笔记(基本入门函数)

    第一章 快速上手 基础知识 1 3 x y x x y y 注意求余运算符 向下圆整 如果是负数 则更远离0 10 3 10 3 10 3 10 3 十六进制 0x 八进制 0o 十进制 0b 0xAF 175 0o10 8 0b10110
  • 04_两种常见的网页反爬措施及应对方法

    一 封禁IP地址反爬 1 应对思路 理解这种反爬方法的含义 当我们用自己电脑的ip地址短时间 高频率访问某个具有此类反爬设置的网站 这种网站就会把我们的ip地址封禁 一般都是封24小时或者其他时间 解决方案 通过代理ip访问 这种方式只不过
  • Python爬虫实战之电影爬取过程

    俗话说 兴趣所在 方能大展拳脚 so结合兴趣的学习才能事半功倍 更加努力专心 apparently本次任务是在视频网站爬取一些好看的小电影 地址不放 狗头保命 只记录过程 实现功能 从网站上爬取采用m3u8分段方式的视频文件 对加密的 ts
  • 爬虫之简单js逆向

    本次js逆向没有存在代码混淆 所以还是比较简单的 重要的就是js逆向的思路 目标网站https notice qb com detail noticeId 215让我们开始吧 进入网站后按F12 查看DOC中的 可以看出该网页一部分内容是异
  • Anaconda简介

    anaconda是python发行的包的管理工具 其中自带python的版本 还带很多python的包 安装它比安装python好 可以省掉再安装python包的时间 推荐使用Anaconda 用Anaconda安装python的包是非常便
  • 知乎美女挖掘指南--Python实现自动化图片抓取、颜值评分

    声明 文中所有文字 图片以及相关外链中直接或间接 明示或暗示涉及性别 颜值分数等信息全部由相关人脸检测接口给出 无任何客观性 仅供参考 1 数据源 知乎 话题 美女 下所有问题中回答所出现的图片 2 抓取工具 Python 3 并使用第三方
  • TXT文本文件存储

    个人简介 作者简介 大家好 我是W chuanqi 一个编程爱好者 个人主页 W chaunqi 支持我 点赞 收藏 留言 愿你我共勉 若身在泥潭 心也在泥潭 则满眼望去均是泥潭 若身在泥潭 而心系鲲鹏 则能见九万里天地 文章目录 TXT
  • 初学Python到月入过万最快的兼职途径(纯干货)

    1 兼职薪资 附行哥工资单 2 兼职门槛 附学习知识清单 3 兼职途径 附入职考核过程 4 行哥的兼职感受 答应行友的第一篇赚钱干货推文来啦 行哥第一个在读书期间通过兼职赚到的10w 收入 这也是初学Python小白最快达到月入过万的途径
  • python爬虫概述及简单实践

    文章目录 一 先了解用户获取网络数据的方式 二 简单了解网页源代码的组成 1 web基本的编程语言 2 使用浏览器查看网页源代码 三 爬虫概述 1 认识爬虫 2 python爬虫 3 爬虫分类 4 爬虫应用 5 爬虫是一把双刃剑 6 pyt

随机推荐

  • mysql while bug_案例分享:MySQL BUG处理

    近一个月处理历史数据问题时 居然连续遇到了2个MySQL BUG 分享给大家一下 也欢迎指正是否有问题 BUG1 数据库版本 MySQL5 7 25 28 操作系统 Centos 7 7 不重要 数据库架构 主 从 级联从 数据库参数 in
  • Java 冒泡排序示例

    以下是 Java 语言实现冒泡排序的示例代码 public class BubbleSort public static void main String args int arr 5 2 8 3 9 1 bubbleSort arr Sy
  • 64、3D Neural Scene Representations for Visuomotor Control

    简介 主页 https 3d representation learning github io nerf dy 机器人操作模型学习的核心问题之一是如何确定 dynamics model 的状态表示 理想的表示应该易于捕捉环境动态 展示对场
  • CDN是做什么用的,怎么一直有人在推荐使用?

    CDN 内容分发网络 的作用与不断的推荐使用背后有着深刻的原因 这是因为CDN在互联网领域发挥着重要且多方面的作用 为许多网站和在线业务提供了显著的优势 首先 让我们来了解CDN的作用是什么 CDN是一种网络架构 旨在将网站的静态资源 如图
  • 100级小号搬砖地图_DNF100版本搬砖地图最高收益攻略(利润化透明)

    DNF搬砖那个地图收益最高 100版本搬砖攻略 大家都知道DNF是一款经典的手游 到现在已经运营十年了 同时也是一款氪金的 当然对于神豪来说都是小问题 但是对于一般的玩家 想玩DNF建议还是先去医院检查一下肝 肝不好建议别入坑 今天小编就给
  • 数学的科普文

    20210105 这次又是整理自己的书签 然后发现了这个文章 这个文章应该是很久之前的时候我看到的 觉得很有趣 应该是当时学习最小二乘法的时候看到的 所以这篇文章就来记录一些平时看到的不错的科普文 以前很多文章都错过了 挺可惜的 正态分布的
  • React Hook的useCallback,memo,usememo的使用

    1 useCallback 每当组件重新渲染的时候 我们之前定义的函数就会被重新声明一次 即使这个函数不需要做出改变 这时可以使用useCallback useCallback主要用于缓存一个函数 useCallback接收两个参数 第一个
  • Apriori算法完整代码

    文章目录 apriori py apriori py usr bin env python coding utf 8 from numpy import 加载数据集 def loadDataSet return 1 3 4 2 3 5 1
  • 深度学习与计算机视觉系列(5)_反向传播与它的直观理解

    作者 寒小阳 龙心尘 时间 2015年12月 出处 http blog csdn net han xiaoyang article details 50321873 声明 版权所有 转载请联系作者并注明出处 1 引言 其实一开始要讲这部分内
  • javaScript:宏任务与微任务的运行顺序

    在写代码的时候 我使用Element组件中的表单重置方法 和vue中子传父方法 这里我想要通过 async 和 await 的特点 await 下一行代码作为微任务执行 来规定代码的执行顺序 让重置方法 滞后 于数据传递 执行 确定按钮 子
  • Java底层原理——HashMap面试问题

    什么时候会用到HashMap 他有什么特点 是基于Map接口实现的 存储键值对时 可以接收null的键值 是非同步的 HashMap存储着Entry hash key value next 对象 你知道HashMap的工作原理吗 通过has
  • Linux驱动

    一 前言 设备树是每一个Linux驱动工程师都必须掌握的一个知识点 有很多之前做单片机的朋友刚接触Linux驱动时 会一脸懵 其实设备树的使用并没有大家想像的那么复杂 对于大部分工程师来说 只要会修改即可 很多粉丝留言说 希望彭老师提供一个
  • 记录CTF命令执行练习中遇到的几道题(一些PHP命令过滤的绕过方法)

    题目1 if isset GET Command GET Command command GET Command if preg match f a g flag cat tac more ls system exec popen pass
  • 在SQL中寻找唯一记录的3种终极方法

    在SQL中寻找唯一记录的3种终极方法 停止使用DISTINCT 开始使用这些快速替代方法 以避免混淆 照片 Luis Cortes on Unsplash 不使用DISTINCT关键字就能获得唯一记录 在你的数据分析项目中 只要你需要从数据
  • Windows server 2008 R2远程桌面3389端口号修改及远程桌面窗口大小调整

    转自 https help aliyun com document detail 51644 html spm 5176 doc51644 6 784 4iAHWH 修改 Windows 服务器默认远程端口 操作步骤 远程连接并登录到 Wi
  • ConcurrentHashMap概述

    1 前言 为什么要使用 ConcurrentHashMap 主要基于两个原因 在并发编程中 jdk1 7的情况下使用 HashMap 可能造成死循环 而jdk1 8 中有可能会造成数据丢失 HashTable 效率非常低下 2 Concur
  • Java微服务内存占用分析

    一 Java 进程中有哪些组件会占用内存 通过 Native Memory Tracking 可以观察到有以下 JVM 组件 在命令行加上 XX NativeMemoryTracking summary 会增加3MB左右内存 损失5 10
  • Leetcode 2861. Maximum Number of Alloys

    Leetcode 2861 Maximum Number of Alloys 1 解题思路 2 代码实现 题目链接 2861 Maximum Number of Alloys 1 解题思路 这一题思路上还是挺清晰的 就是对每一台机子看一下其
  • 利用Redisson实现分布式锁及其底层原理解析

    Redis介绍 redis是一个key value存储系统 和Memcached类似 它支持存储的value类型相对更多 包括string 字符串 list 链表 set 集合 zset sorted set 有序集合 和hash 哈希类型
  • python3下使用requests实现模拟用户登录 —— 基础篇(马蜂窝)

    python3下使用requests实现模拟用户登录 基础篇 马蜂窝 1 了解cookie和session 首先一定要先了解到cookie和session是什么 这是后面理解网站交互 模拟用户登录的基础 1 1 无状态协议 Http 如上图