常用模块

目录

  • 一、re正则模块
    • 1.正则符号
    • 2.正则方法
    • 3.正则应用场景
    • 4.正则练习
      • 1.findall 的优先级查询
      • 2.split 的优先级查询
    • 5.综合练习与扩展
      • 1.匹配标签
      • 2.匹配整数
      • 3.数字匹配
      • 4.爬虫练习
  • 二、import模块
    • 1.import 与from ...import的区别
    • 2.模块基本说明
      • 1.什么是模块?
      • 2.为什么要用模块?
    • 3.模块的查找顺序
    • 4.导入模块的路径
      • 1.绝对导入:无论在执行文件中还是被导入文件中都适用
      • 2.相对导入:
  • 三、collertion模块
    • 1.collertion模块基本方法:
      • 1.namedtuple 具名元组
      • 2.queue.Queue队列 deque双端队列
    • 2.deque双端队列
    • 3.有序字典
    • 4.Counter计算字符次数方法与普通for循环方法
      • 计算字符串中每隔字符出现的次数:
  • 四、time与datetime模块
    • 1.time与datetime模块:
    • 2.时间:
    • 3.时间计算
  • 五、random随机模块
  • 六、sys模块和subprocess子进程模块
    • 1.sys模块跟python解释器打交道的
    • 2.sys中的一些方法
    • 3.subprocess 子进程模块
  • 七、json和pickle序列化模块
    • 1.json和pickle的区别特点
    • 2.json 中的一些方法
    • 3.序列化
  • 八、hashlib加密模块
    • 1.hashlib常用方法
    • 2.hashlib应用场景
  • 九、loggin日志模块
  • 十、requests爬虫模块
    • 10.1 爬虫原理
  • 十一、pymysql模块
  • 十二、uuid
  • 十三.OS模块
  • 十四、math模块

一、re正则模块

1.正则符号

在线测试工具 http://tool.chinaz.com/regex/

常用模块_第1张图片

常用模块_第2张图片

常用模块_第3张图片

常用模块_第4张图片
常用模块_第5张图片

常用模块_第6张图片

贪婪匹配:
    默认都是贪婪匹配。贪婪匹配都是取大,比如:   *表示更多次、+表示多次、?表示一次,当然这只是默认的,当默认贪婪匹配不到,就会*表示零次、+表示一次、?表示零次

取消贪婪匹配:
    量词后面加问号(?)。 eg: 待匹配:李杰和李莲英和李二棍子    正则表达式:李.+?  结果:李杰   李莲  李二    ,因为+后面跟了?,所以+表示一次
        
    res3 = re.findall('李.?','李杰和李莲英和李二棍子')
    print(res3)
    # 结果:['李杰', '李莲', '李二']
    
转义符:

\   :   取消转义

  eg:  \\n 表示\n

2.正则方法

1.findall(全文查找返回):

​ 1.找出字符串中符合正则的内容
​ 2.返回列表,列表中是正则表达匹配的内容

res = re.findall('a','asd jeff ball')
res1 = re.findall('[a-z]+','asd jeff ball')
print(res1)

结果:

常用模块_第7张图片

2.search(从上至下查找):

1.返回一个对象,必须调用group才能看到结果
2.根据正则查找一次,只要查到结果就不会往后查找
3.当查找结果不存在(返回的None),再调用group直接报错,因为none没有group方法

res2 = re.search('a','asd jeff ball')
if res2:
    print(res2.group())
 # 结果 : a

3.match(匹配开头):

1.match匹配字符串开头
2.没有同样返回None
3.同样调用group报错

res3 = re.match('a','asd jeff ball')
if res3:
    print(res3.group())
    # 结果: a

res3 = re.match('a','sd jeff ball')
print(res3.group())
# 结果:报错,返回值为None,没有grop()这个方法

结果: 报错

4.split(切割):

ret = re.split('[ab]', 'abcd') # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
print(ret) # ['', '', 'cd']

str = "abcd,ssdhu,123"
print (str.split( )  )    # 以空格为分隔符,包含 \n
print (str.split(' ,', 1 ) )# 以逗号为分隔符,分隔成两个
# 结果:   ['abcd,ssdhu,123']
        ['abcd,ssdhu,123']

5.sub(替换)

ret = re.sub('999', 'H', 'jeff age max 999 8884', 2)# 将数字替换成'H',参数1表示只替换1个

print(ret)  
# 结果: jeff age max H 8884

6.subn(替换,返回元组)

ret = re.subn('4', '换', 'eva3egon4yuan4')  # 将数字替换成'H',返回元组(替换的结果,替换了多少次)
print(ret)
# 结果:
('eva3egon换yuan换', 2)   2:替换了两次

7.compile(正则封装为对象)

obj = re.compile('\d{3}')  #将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字
ret = obj.search('abc123eeee') #正则表达式对象调用search,参数为待匹配的字符串
print(ret.group())  #结果 : 123

8.finditer(迭代)

ret = re.finditer('\d', 'ds3sy4784a')   #finditer返回一个存放匹配结果的迭代器
print(ret)  # 
print(next(ret).group())  #查看第一个结果
print(next(ret).group())  #查看第二个结果
print([i.group() for i in ret])  #查看剩余的左右结果

9.分组

res = re.search('^[1-9]\d{14}(\d{2}[0-9x])?$',110105199812067023
print(res)

print(res.group(1))  # 获取正则表达式括号阔起来分组的内容
print(res.group(2))  # search与match均支持获取分组内容的操作  跟正则无关是python机制

10.起别名:

re.search('^[1-9]?P(\d{14})(\d{2}[0-9x])?$',110105199812067023)
print(res.group(passwd))

3.正则应用场景

- 爬虫: re, BeautifulSoup4, Xpath, selector
- 数据分析过滤数据: re, pandas, numpy...
- 用户名与密码、手机认证:检测输入内容的合法性

4.正则练习

import re

ret = re.findall('a', 'eva egon yuan')  # 返回所有满足匹配条件的结果,放在列表里
print(ret) #结果 : ['a', 'a']

ret = re.search('a', 'eva egon yuan').group()
print(ret) #结果 : 'a'
# 函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以
# 通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。

ret = re.match('a', 'abc').group()  # 同search,不过尽在字符串开始处进行匹配
print(ret)
#结果 : 'a'

ret = re.split('[ab]', 'abcd')  # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
print(ret)  # ['', '', 'cd']

ret = re.sub('\d', 'H', 'eva3egon4yuan4', 1)#将数字替换成'H',参数1表示只替换1个
print(ret) #evaHegon4yuan4

ret = re.subn('\d', 'H', 'eva3egon4yuan4')#将数字替换成'H',返回元组(替换的结果,替换了多少次)
print(ret)

obj = re.compile('\d{3}')  #将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字
ret = obj.search('abc123eeee') #正则表达式对象调用search,参数为待匹配的字符串
print(ret.group())  #结果 : 123

import re
ret = re.finditer('\d', 'ds3sy4784a')   #finditer返回一个存放匹配结果的迭代器
print(ret)  # 
print(next(ret).group())  #查看第一个结果
print(next(ret).group())  #查看第二个结果
print([i.group() for i in ret])  #查看剩余的左右结果

1.findall 的优先级查询

import re

ret = re.findall('www.(baidu|oldboy).com', 'www.oldboy.com')
print(ret)  # ['oldboy']     这是因为findall会优先把匹配结果组里内容返回,如果想要匹配结果,取消权限即可

ret = re.findall('www.(?:baidu|oldboy).com', 'www.oldboy.com')
print(ret)  # ['www.oldboy.com']

2.split 的优先级查询

ret=re.split("\d+","eva3egon4yuan")
print(ret) #结果 : ['eva', 'egon', 'yuan']

ret=re.split("(\d+)","eva3egon4yuan")
print(ret) #结果 : ['eva', '3', 'egon', '4', 'yuan']

#在匹配部分加上()之后所切出的结果是不同的,
#没有()的没有保留所匹配的项,但是有()的却能够保留了匹配的项,
#这个在某些需要保留匹配部分的使用过程是非常重要的。

5.综合练习与扩展

1.匹配标签

import re


ret = re.search("<(?P\w+)>\w+","

hello

") #还可以在分组中利用?的形式给分组起名字 #获取的匹配结果可以直接用group('名字')拿到对应的值 print(ret.group('tag_name')) #结果 :h1 print(ret.group()) #结果 :

hello

ret = re.search(r"<(\w+)>\w+","

hello

") #如果不给组起名字,也可以用\序号来找到对应的组,表示要找的内容和前面的组内容一致 #获取的匹配结果可以直接用group(序号)拿到对应的值 print(ret.group(1)) print(ret.group()) #结果 :

hello

2.匹配整数

import re

ret=re.findall(r"\d+","1-2*(60+(-40.35/5)-(-4*3))")
print(ret) #['1', '2', '60', '40', '35', '5', '4', '3']
ret=re.findall(r"-?\d+\.\d*|(-?\d+)","1-2*(60+(-40.35/5)-(-4*3))")
print(ret) #['1', '-2', '60', '', '5', '-4', '3']
ret.remove("")
print(ret) #['1', '-2', '60', '5', '-4', '3']

3.数字匹配

1、 匹配一段文本中的每行的邮箱
      http://blog.csdn.net/make164492212/article/details/51656638

2、 匹配一段文本中的每行的时间字符串,比如:‘1990-07-12’;

   分别取出1年的12个月(^(0?[1-9]|1[0-2])$)、
   一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$

3、 匹配qq号。(腾讯QQ号从10000开始)  [1,9][0,9]{4,}

4、 匹配一个浮点数。       ^(-?\d+)(\.\d+)?$   或者  -?\d+\.?\d*

5、 匹配汉字。             ^[\u4e00-\u9fa5]{0,}$ 

6、 匹配出所有整数

4.爬虫练习

import requests

import re
import json

def getPage(url):

    response=requests.get(url)
    return response.text

def parsePage(s):
    
    com=re.compile('
.*?
.*?(?P\d+).*?(?P.*?)</span>' '.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>(?P<comment_num>.*?)评价</span>',re.S) ret=com.finditer(s) for i in ret: yield { "id":i.group("id"), "title":i.group("title"), "rating_num":i.group("rating_num"), "comment_num":i.group("comment_num"), } def main(num): url='https://movie.douban.com/top250?start=%s&filter='%num response_html=getPage(url) ret=parsePage(response_html) print(ret) f=open("move_info7","a",encoding="utf8") for obj in ret: print(obj) data=json.dumps(obj,ensure_ascii=False) f.write(data+"\n") if __name__ == '__main__': count=0 for i in range(10): main(count) count+=25</code></pre> <p>简化版:</p> <pre class="python"><code>import re import json from urllib.request import urlopen def getPage(url): response = urlopen(url) return response.read().decode('utf-8') def parsePage(s): com = re.compile( '<div class="item">.*?<div class="pic">.*?<em .*?>(?P<id>\d+).*?<span class="title">(?P<title>.*?)</span>' '.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>(?P<comment_num>.*?)评价</span>', re.S) ret = com.finditer(s) for i in ret: yield { "id": i.group("id"), "title": i.group("title"), "rating_num": i.group("rating_num"), "comment_num": i.group("comment_num"), } def main(num): url = 'https://movie.douban.com/top250?start=%s&filter=' % num response_html = getPage(url) ret = parsePage(response_html) print(ret) f = open("move_info7", "a", encoding="utf8") for obj in ret: print(obj) data = str(obj) f.write(data + "\n") count = 0 for i in range(10): main(count) count += 25 </code></pre> <p>flags</p> <pre class="python"><code>flags有很多可选值: re.I(IGNORECASE)忽略大小写,括号内是完整的写法 re.M(MULTILINE)多行模式,改变^和$的行为 re.S(DOTALL)点可以匹配任意字符,包括换行符 re.L(LOCALE)做本地化识别的匹配,表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境,不推荐使用 re.U(UNICODE) 使用\w \W \s \S \d \D使用取决于unicode定义的字符属性。在python3中默认使用该flag re.X(VERBOSE)冗长模式,该模式下pattern字符串可以是多行的,忽略空白字符,并可以添加注释 </code></pre> <h1 id="二import模块">二、import模块</h1> <h2 id="import-与from-...import的区别">1.import 与from ...import的区别</h2> <p>import : 导入模块</p> <p>from 模块名 import ...</p> <p>import 就相当于:把超市给我</p> <p>from 超市 import 矿泉水:把超市里的矿泉水给我</p> <p>例子1:不会报错</p> <pre><code>import aaa aaa.func1() aaa.func2() </code></pre> <p><a href="http://img.e-com-net.com/image/info8/7bf57bf237a34553812a144a73a892e8.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/7bf57bf237a34553812a144a73a892e8.jpg" alt="常用模块_第8张图片" width="650" height="293" style="border:1px solid black;"></a></p> <p>例子2:报错,因为没有导入func2</p> <pre><code>from aaa import func1 func1() func2() </code></pre> <p><a href="http://img.e-com-net.com/image/info8/4e65df1541b545238109fd062b12275b.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/4e65df1541b545238109fd062b12275b.jpg" alt="常用模块_第9张图片" width="650" height="163" style="border:1px solid black;"></a></p> <h2 id="模块基本说明">2.模块基本说明</h2> <h3 id="什么是模块">1.什么是模块?</h3> <p>  模块就是一系列的功能结合体:</p> <p>    模块的三种来源:</p> <p>      1.内置的模块(pycharm内置自带的)</p> <p>      2.第三方的(别人写的)</p> <p>      3.自定义的(自己写的)</p> <h3 id="为什么要用模块">2.为什么要用模块?</h3> <p>  1.在python编程中,写程序的时候尽量多去调用模块来完成功能,因为这是python的特点,这样效率高,速度快,提高开发效率</p> <p>  2.当程序比较庞大的时候,需要用模块的形式将庞大的程序一步步拆分,更加的详细清楚</p> <h2 id="模块的查找顺序">3.模块的查找顺序</h2> <p>  1.先从内存中查找</p> <p>  2.pycharm内置中找</p> <p>  3.sys.path中找(环境变量)</p> <h2 id="导入模块的路径">4.导入模块的路径</h2> <h3 id="绝对导入无论在执行文件中还是被导入文件中都适用">1.绝对导入:无论在执行文件中还是被导入文件中都适用</h3> <h3 id="相对导入">2.相对导入:</h3> <p>    ‘.’点代表当前路径</p> <p>    ‘..’点点代表上一级路径</p> <p>    ‘...’点点点代表上上一级路径</p> <p>注意:</p> <p>  相对导入不能在执行文件中使用,只能在被导入的模块中使用,相对导入需要知道模块与模块之间的路径关系</p> <p>   </p> <h1 id="三collertion模块">三、collertion模块</h1> <h2 id="collertion模块基本方法">1.collertion模块基本方法:</h2> <p>1.namedtuple 具名元组(给元组取名)<br> 2.deque 双端队列(左中右添加值,左右取值)<br> 3.OrderedDict 有序字典<br> 4.Counter方法(计算计算字符串的每个字符的个数,并以字典返回)</p> <h3 id="namedtuple-具名元组">1.namedtuple 具名元组</h3> <pre class="python"><code>from collections import namedtuple point = namedtuple('坐标', ['x', 'y', 'z']) p = point(2, 5, 8) print(p) print(p.x) print(p.y) print(p.z) 结果:坐标(x=2, y=5, z=8) 2 5 8 </code></pre> <pre class="python"><code>from collections import namedtuple card = namedtuple('扑克牌', 'color number') A = card('♠', 'A') print(A) print(A.color) print(A.number) 结果:扑克牌(color='♠', number='A') ♠ A</code></pre> <h3 id="queue.queue队列-deque双端队列">2.queue.Queue队列 deque双端队列</h3> <pre class="python"><code>import queue q = queue.Queue() # 生成队列对象 q.put('one') # 传值 q.put('two') q.put('three') print(q.get()) # 朝着队列要值,如果取完了,程序原地等待(不结束) print(q.get()) print(q.get()) print(q.get())</code></pre> <h2 id="deque双端队列">2.deque双端队列</h2> <p>四个方法:<br> 1.append 尾部追加<br> 2.appendleft 左边追加<br> 3.pop 末尾取值<br> 4.popleft 左边取值<br> 5.insert(索引,'值') 根据索引插值</p> <pre class="python"><code>from collections import deque q = deque(['a', 'b', 'c']) q.append('尾') q.appendleft('左') q.insert(1, '插') # 在索引1位置插入 print(q.pop()) # 结果: 尾 print(q.popleft()) # 结果: 左 print(q.popleft()) # 结果: 插 </code></pre> <h2 id="有序字典">3.有序字典</h2> <pre class="python"><code>from collections import OrderedDict k = OrderedDict() k['x'] = 1 # 给固定的键传值 k['y'] = 2 k['z'] = 3 表现: print(k) for i in k: print(i) </code></pre> <h2 id="counter计算字符次数方法与普通for循环方法">4.Counter计算字符次数方法与普通for循环方法</h2> <h3 id="计算字符串中每隔字符出现的次数">计算字符串中每隔字符出现的次数:</h3> <pre class="python"><code>k = 'abcaabca' d = {} # 字典的key是固定的,先建一个值为0的字典 for i in k: d[i] = 0 # 每个字符和字典的key作比较,有就加1 for q in k: for n in d: if n == q: d[q] += 1 print(d) 2.Counter方法 from collections import Counter k = 'abcaabca' res = Counter(k) print(res) </code></pre> <h1 id="四time与datetime模块">四、time与datetime模块</h1> <h2 id="time与datetime模块">1.time与datetime模块:</h2> <pre class="python"><code>import time print(time.time()) # 距离1970.01.01的秒数 print(time.strftime('%Y-%m-%d %H:%M:%S')) # 拼接时间格式 print(time.localtime()) time.sleep(3) # 程序暂停3秒 </code></pre> <h2 id="时间">2.时间:</h2> <pre class="python"><code>import datetime print(datetime.date.today()) # 年月日 print(datetime.datetime.today()) # 年月日 时分秒 res = datetime.date.today() res1 = datetime.datetime.today() print(res.year) # 年 print(res.month) # 月 print(res.day) # 日 print(res.weekday()) # 第几个星期(从0开始) print(res.isoweekday()) # 第几个星期(从1开始) </code></pre> <h2 id="时间计算">3.时间计算</h2> <pre class="python"><code># 时间计算 import datetime a = datetime.datetime(2019, 12, 15, 5, 5, 5) b = datetime.datetime.today() print(a-b) # 现在时间-指定时间 UTC时间: import datetime a = datetime.datetime.today() b = datetime.datetime.now() c = datetime.datetime.utcnow() #一区时间,上海东八区 print(a) print(b) print(c) </code></pre> <h1 id="五random随机模块">五、random随机模块</h1> <pre class="python"><code># 随机模块 import random print(random.randint(0, 9)) # 随机取一个0-9的数字,包含头尾 print(random.random) # 取0-1之间的小数 print(random.choice([1, 2, 3, 4])) # 随机从列表中取一个值 print(random.uniform(1,10))#1-10小数,如1.927109612082716 random.randrange(1,10,2) # 大于等于1且小于10之间的奇数 </code></pre> <p>打乱顺序shuffle:</p> <pre class="python"><code>res = [1, 2, 3, 4, 5] random.shuffle(res) # 打乱列表的顺序 print(res) # 生成随机验证码 a = str(random.randint(0, 9)) # 转成字符串型,才可以相加拼接 b = chr(random.randint(65, 90)) # 大写字母 65-90 c = chr(random.randint(97, 122)) # 小写字母 97-122 # print(a, b, c) k = '' for i in range(5): m = random.choice([a, b, c]) k += m # 让字符串相加,而不是数字 print(k) m = random.randint(0, 9) print(type(a)) print(type(m)) </code></pre> <p>随机验证码:</p> <pre class="python"><code>import random def v_code(): code = '' for i in range(5): num=random.randint(0,9) alf=chr(random.randint(65,90)) add=random.choice([num,alf]) code="".join([code,str(add)]) return code print(v_code())</code></pre> <h1 id="六sys模块和subprocess子进程模块">六、sys模块和subprocess子进程模块</h1> <h2 id="sys模块跟python解释器打交道的">1.sys模块跟python解释器打交道的</h2> <h2 id="sys中的一些方法">2.sys中的一些方法</h2> <p>import sys<br> sys.path.append() # 将某个路径添加到环境变量中<br> print(sys.platform) # 查看当前操作系统<br> print(sys.version) # python解释器的版本<br> print(sys.argv) # 命令启动文件 可以做身份验证</p> <h2 id="subprocess-子进程模块">3.subprocess 子进程模块</h2> <pre class="python"><code>subprocess 子进程模块 """ sub :子 process:进程 """ 例子1: 输出cmd命令并返回结果: while True: cmd = input('cmd>>>:').strip() import subprocess obj = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) print('正确命令返回结果stdout',obj.stdout.read().decode('gbk')) print('错误命令返回的提示信息stdout',obj.stdout.read().decode('gbk'))</code></pre> <h1 id="七json和pickle序列化模块">七、json和pickle序列化模块</h1> <h2 id="json和pickle的区别特点">1.json和pickle的区别特点</h2> <p>json:可以和其他语言玩</p> <p>pickle:只能和自己(python)玩</p> <h2 id="json-中的一些方法">2.json 中的一些方法</h2> <p>dumps(转): 编码,纯粹的数据使用,将其他数据类型转成json格式的字符串<br> loads(解): 解码,纯粹的数据使用,将json格式字符串转换成其他数据类型<br> dump(转文件): 编码,写文件中的数据,将其他数据类型转成json格式的字符串<br> load(解文件): 解码,读文件中的数据,将json格式字符串转换成其他数据类型</p> <p>ensure_ascii=False False表示字典中的汉字不转,Turn表示转中文,默认为Trun</p> <p>优点: 1.所有语言都支持json格式<br> 缺点: 2.支持的数据类型少<br> pickle()<br> 优点: 1.python所有数据类型都支持<br> 缺点: 2.只支持python</p> <h2 id="序列化">3.序列化</h2> <p>序列化:<br> 序列:字符串<br> 序列化:其他数据类型转成字符串的过程<br>   序列化:其他数据类型转成字符串的过程<br>   反序列化:字符串转成其他数据类型</p> <p>注意:<br>   写入文件的数据必须是字符串(二进制)<br>   基于网络传输的数据必须是二进制</p> <p>例子1:<br> 将字典转换成字符串:k = {'name': 'jeff'}<br> res = json.dumps(k)<br> print(res) # 结果:{"name": "jeff"}<br> print(res, type(res)) # 结果:{"name": "jeff"} <class 'str'></p> <p>将上面的字符串转为字典:</p> <pre class="python"><code>res1 = json.loads(res) print(res1, type(res1)) 结果:{'name': 'jeff'} <class 'dict'> </code></pre> <p>例子2:对文件的中的内容转换:</p> <p>转换类型,并写入文件:</p> <pre class="python"><code>d = {"name":"jeff"} with open(r'userinfo','w',encoding='utf-8') as f: json.dump(d, f) # 转字符,并自动写入文件 </code></pre> <p>读取内容,并解为python类型:</p> <pre class="python"><code>with open(r'userinfo', 'r', encoding='utf-8') as f: res = json.load(f) # 解字符,并读取 print(res, type(res)) </code></pre> <pre class="python"><code>例子3: ensure_ascii=False 表示字典中的汉字不转 中文不转码: d = {'name': '辜老板'} print(json.dumps(d, ensure_ascii=False)) # ensure_ascii=False识别中文不转码 #结果:{"name": "辜老板"} </code></pre> <p>中文转码:</p> <pre class="python"><code>d = {'name': '辜老板'} print(json.dumps(d, ensure_ascii=True)) # ensure_ascii=False识别中文不转码 # 结果:{"name": "\u8f9c\u8001\u677f"} 中文转码了 </code></pre> <h1 id="八hashlib加密模块">八、hashlib加密模块</h1> <p>hashlib加密模块:不可逆,但是可以撞库</p> <h2 id="hashlib常用方法">1.hashlib常用方法</h2> <p>md.update('数据'): 没有提示,记住单词<br> md.hexdigest() :获取密文,记住单词</p> <p>hashlib加盐:用手动传入假数据(动态)和真数据混合在一起加密</p> <p>MD5:常用加密算法</p> <h2 id="hashlib应用场景">2.hashlib应用场景</h2> <p>1.密码的密文储存<br> 2.校验文件内容是否一致</p> <p>1.加密:</p> <pre class="python"><code>md = hashlib.md5() # 加密,不可逆 md.update('hello'.encode('utf-8')) # 往对象里传数据加密 ,update只能接受bytes类型 md.update(b'hello') print(md.hexdigest()) 结果:23b431acfeb41e15d466d75de822307c </code></pre> <p>2.加盐加密:自己添加的东西和客户的真密码一起加密,自己添加的东西可以是动态的</p> <pre class="python"><code>2.加盐 :自己添加的东西和客户的真密码一起加密,自己添加的东西可以是动态的 md = hashlib.md5() md.update(b'yan.com') md.update(b'hello') # 加密 print(md.hexdigest()) # 获取密文 </code></pre> <p>例子1:给客户输入的密码加盐加密</p> <pre class="python"><code>import hashlib # 加盐 def get_md5(date): md = hashlib.md5() md.update('加盐'.encode('utf-8')) md.update(date.encode('utf-8')) return md.hexdigest() password = input('password>>>:') res = get_md5(password) print(res) </code></pre> <h1 id="九loggin日志模块">九、loggin日志模块</h1> <p>一、<strong>日志级别</strong></p> <pre class="python"><code>CRITICAL = 50 #FATAL = CRITICAL ERROR = 40 WARNING = 30 #WARN = WARNING INFO = 20 DEBUG = 10 NOTSET = 0 #不设置 </code></pre> <p>二、<strong>默认级别为warning,默认打印到终端</strong></p> <pre class="python"><code>import logging logging.debug('调试debug') logging.info('消息info') logging.warning('警告warn') logging.error('错误error') logging.critical('严重critical') ''' WARNING:root:警告warn ERROR:root:错误error CRITICAL:root:严重critical ''' </code></pre> <p>三、<strong>为logging模块指定全局配置,针对所有logger有效,控制打印到文件中</strong></p> <pre class="java"><code>可在logging.basicConfig()函数中通过具体参数来更改logging模块默认行为,可用参数有 filename:用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件中。 filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。 format:指定handler使用的日志显示格式。 datefmt:指定日期时间格式。 level:设置rootlogger(后边会讲解具体概念)的日志级别 stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件,默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。 #格式 %(name)s:Logger的名字,并非用户名,详细查看 %(levelno)s:数字形式的日志级别 %(levelname)s:文本形式的日志级别 %(pathname)s:调用日志输出函数的模块的完整路径名,可能没有 %(filename)s:调用日志输出函数的模块的文件名 %(module)s:调用日志输出函数的模块名 %(funcName)s:调用日志输出函数的函数名 %(lineno)d:调用日志输出函数的语句所在的代码行 %(created)f:当前时间,用UNIX标准的表示时间的浮 点数表示 %(relativeCreated)d:输出日志信息时的,自Logger创建以 来的毫秒数 %(asctime)s:字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒 %(thread)d:线程ID。可能没有 %(threadName)s:线程名。可能没有 %(process)d:进程ID。可能没有 %(message)s:用户输出的消息 </code></pre> <p><strong>介绍</strong></p> <pre><code>#======介绍 可在logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有 filename:用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件中。 filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。 format:指定handler使用的日志显示格式。 datefmt:指定日期时间格式。 level:设置rootlogger(后边会讲解具体概念)的日志级别 stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件,默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。 format参数中可能用到的格式化串: %(name)s Logger的名字 %(levelno)s 数字形式的日志级别 %(levelname)s 文本形式的日志级别 %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有 %(filename)s 调用日志输出函数的模块的文件名 %(module)s 调用日志输出函数的模块名 %(funcName)s 调用日志输出函数的函数名 %(lineno)d 调用日志输出函数的语句所在的代码行 %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示 %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数 %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒 %(thread)d 线程ID。可能没有 %(threadName)s 线程名。可能没有 %(process)d 进程ID。可能没有 %(message)s用户输出的消息 </code></pre> <p><strong>使用</strong></p> <pre class="python"><code>#========使用 import logging logging.basicConfig(filename='access.log', format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p', level=10) logging.debug('调试debug') logging.info('消息info') logging.warning('警告warn') logging.error('错误error') logging.critical('严重critical') #========结果 access.log内容: 2017-07-28 20:32:17 PM - root - DEBUG -test: 调试debug 2017-07-28 20:32:17 PM - root - INFO -test: 消息info 2017-07-28 20:32:17 PM - root - WARNING -test: 警告warn 2017-07-28 20:32:17 PM - root - ERROR -test: 错误error 2017-07-28 20:32:17 PM - root - CRITICAL -test: 严重critical part2: 可以为loggin g模块指定模块级的配置,即所有logger的配置 </code></pre> <h1 id="十requests爬虫模块">十、requests爬虫模块</h1> <p>requests 模块</p> <pre class="python"><code>import requests response = requests.get('https://www.taobao.com') if response.status_code == 200: print(len(response.text)) </code></pre> <h2 id="爬虫原理">10.1 爬虫原理</h2> <pre class="python"><code>一、爬虫四部原理(整个流程) 1.发送请求:requests 2.获取响应数据:对方机器直接返回 3.解析并提取想要的数据:re 4.保存提取后的数据:with open()保存 二、爬虫三部曲(我们需要做的事) 1.发送请求 2.解析数据 3.保存数据 </code></pre> <p>1.发送请求</p> <pre class="python"><code>def get_page(url): response = requests.get(url) # response.content # 获取二进制流数据,比如图片、视频、音频 # response.text # 获取响应文本,比如html代码 return response </code></pre> <p>2.解析数据</p> <pre class="python"><code># 伪代码: # response = get_page('url地址') # parser_page(response.text) def parser_page(text): # response.text # re.findall('正则表达式', '过滤的文本') res_list = re.findall('正则表达式',text,re.S) for movie_tuple in res_list: # print(movie_tuple) yield movie_tuple </code></pre> <p>3.保存数据</p> <pre class="python"><code># 伪代码: # res_list = parser_page(text) # save_data(res_list) def save_data(res_list_iter): with open('douban.txt', 'a', encoding='utf-8') as f: for movie_tuple in res_list_iter: movie_url, movie_name, movie_point, movie_num = movie_tuple # 写入文件前的模样 str1 = f''' 电影地址: {movie_url} 电影名字: {movie_name} 电影评分: {movie_point} 评价人数: {movie_num} ''' f.write(str1) </code></pre> <h1 id="十一pymysql模块">十一、pymysql模块</h1> <p>这个模块可以操作MySQL的模块</p> <p>用的时候需要下载一下这个模块</p> <p>例子:</p> <pre class="mysql"><code>import pymysql conn = pymysql.connect( host = '127.0.0.1', port = 3306, user = 'root', password = '123', database = 'jeff', charset = 'utf8' ) cursor = conn.cursor(pymysql.cursors.DictCursor) # 产生游标对象,以字典的形式返回 sql = 'select * from teacher' cursor.execute(sql) # 执行传入的sql语句 # print(cursor.fetchone()) # 只获取一条数据 # print(cursor.fetchone()) # 只获取一条数据 # print(cursor.fetchone()) # 只获取一条数据 # print(cursor.fetchone()) # 只获取一条数据 # cursor.scroll(2,'absolute') # 控制光标移动 absolute相对于其实位置 往后移动几位 # cursor.scroll(1,'relative') # relative相对于当前位置 往后移动几位 print(cursor.fetchall()) # 获取所有的数据 返回的结果是一个列表 </code></pre> <h1 id="十二uuid">十二、uuid</h1> <pre class="python"><code>概述: UUID是128位的全局唯一标识符,通常由32字节的字符串表示。 它可以保证时间和空间的唯一性,也称为GUID,全称为: UUID —— Universally Unique IDentifier Python 中叫 UUID GUID —— Globally Unique IDentifier C# 中叫 GUID 它通过MAC地址、时间戳、命名空间、随机数、伪随机数来保证生成ID的唯一性。 UUID主要有五个算法,也就是五种方法来实现: 使用方面: 首先,Python中没有基于DCE的,所以uuid2可以忽略; 其次,uuid4存在概率性重复,由无映射性,最好不用; 再次,若在Global的分布式计算环境下,最好用uuid1; 最后,若有名字的唯一性要求,最好用uuid3或uuid5。 </code></pre> <ol> <li>uuid.uuid1([node[, clock_seq]]) -- 基于时间戳</li> </ol> <blockquote> <p>由 MAC 地址(主机物理地址)、当前时间戳、随机数生成。可以保证全球范围内的唯一性,<br> 但 MAC 的使用同时带来安全性问题,局域网中可以使用 IP 来代替MAC。</p> <p>该函数有两个参数, 如果 node 参数未指定, 系统将会自动调用 getnode() 函数来获取主机的硬件地址. 如果 clock_seq 参数未指定系统会使用一个随机产生的14位序列号来代替.</p> <p>注意: uuid1() 返回的不是普通的字符串,而是一个 uuid 对象,其内含有丰富的成员函数和变量。</p> </blockquote> <ol> <li>uuid.uuid2() -- 基于分布式计算环境DCE(Python中没有这个函数)</li> </ol> <blockquote> <p>算法与uuid1相同,不同的是把时间戳的前 4 位置换为 POSIX 的 UID。<br> 实际中很少用到该方法。</p> </blockquote> <ol> <li>uuid.uuid3(namespace, name) -- 基于名字的MD5散列值</li> </ol> <blockquote> <p>通过计算名字和命名空间的MD5散列值得到,保证了同一命名空间中不同名字的唯一性,<br> 和不同命名空间的唯一性,但同一命名空间的同一名字生成相同的uuid。</p> </blockquote> <ol> <li>uuid.uuid4() -- 基于随机数</li> </ol> <blockquote> <p>由伪随机数得到,有一定的重复概率,该概率可以计算出来。</p> <pre class="mysql"><code>产生一个唯一的随机字符串 import uuid a = str(uuid.uuid4()) print(len(a)) print(a) </code></pre> </blockquote> <ol> <li>uuid.uuid5() -- 基于名字的SHA-1散列值</li> </ol> <blockquote> <p>算法与uuid3相同,不同的是使用 Secure Hash Algorithm 1 算法</p> </blockquote> <h1 id="十三.os模块">十三.OS模块</h1> <pre class="python"><code>os.makedirs('dirname1/dirname2') 可生成多层递归目录 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 os.remove() 删除一个文件 os.rename("oldname","newname") 重命名文件/目录 os.stat('path/filename') 获取文件/目录信息 os.system("bash command") 运行shell命令,直接显示 os.popen("bash command).read() 运行shell命令,获取执行结果 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd os.path os.path.abspath(path) 返回path规范化的绝对路径 os.path.split(path) 将path分割成目录和文件名二元组返回 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素 os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False os.path.isabs(path) 如果path是绝对路径,返回True os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间 os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间 os.path.getsize(path) 返回path的大小 </code></pre> <pre class="python"><code>注意:os.stat('path/filename') 获取文件/目录信息 的结构说明 复制代码 stat 结构: st_mode: inode 保护模式 st_ino: inode 节点号。 st_dev: inode 驻留的设备。 st_nlink: inode 的链接数。 st_uid: 所有者的用户ID。 st_gid: 所有者的组ID。 st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。 st_atime: 上次访问的时间。 st_mtime: 最后一次修改的时间。 st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。 复制代码 os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/" os.linesep 输出当前平台使用的行终止符,win下为"\r\n",Linux下为"\n" os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为: os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix' </code></pre> <h1 id="十四math模块">十四、math模块</h1> <pre class="python"><code>ceil:取大于等于x的最小的整数值,如果x是一个整数,则返回x copysign:把y的正负号加到x前面,可以使用0 cos:求x的余弦,x必须是弧度 degrees:把x从弧度转换成角度 e:表示一个常量 exp:返回math.e,也就是2.71828的x次方 expm1:返回math.e的x(其值为2.71828)次方的值减1 fabs:返回x的绝对值 factorial:取x的阶乘的值 floor:取小于等于x的最大的整数值,如果x是一个整数,则返回自身 fmod:得到x/y的余数,其值是一个浮点数 frexp:返回一个元组(m,e),其计算方式为:x分别除0.5和1,得到一个值的范围 fsum:对迭代器里的每个元素进行求和操作 gcd:返回x和y的最大公约数 hypot:如果x是不是无穷大的数字,则返回True,否则返回False isfinite:如果x是正无穷大或负无穷大,则返回True,否则返回False isinf:如果x是正无穷大或负无穷大,则返回True,否则返回False isnan:如果x不是数字True,否则返回False ldexp:返回x*(2**i)的值 log:返回x的自然对数,默认以e为基数,base参数给定时,将x的对数返回给定的base,计算式为:log(x)/log(base) log10:返回x的以10为底的对数 log1p:返回x+1的自然对数(基数为e)的值 log2:返回x的基2对数 modf:返回由x的小数部分和整数部分组成的元组 pi:数字常量,圆周率 pow:返回x的y次方,即x**y radians:把角度x转换成弧度 sin:求x(x为弧度)的正弦值 sqrt:求x的平方根 tan:返回x(x为弧度)的正切值 trunc:返回x的整数部分 </code></pre> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1212472709754228736"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(常用模块)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1834455667604287488.htm" title="NLP_jieba中文分词的常用模块" target="_blank">NLP_jieba中文分词的常用模块</a> <span class="text-muted">Hiweir ·</span> <a class="tag" taget="_blank" href="/search/NLP_jieba%E7%9A%84%E4%BD%BF%E7%94%A8/1.htm">NLP_jieba的使用</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86/1.htm">自然语言处理</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E6%96%87%E5%88%86%E8%AF%8D/1.htm">中文分词</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/nlp/1.htm">nlp</a> <div>1.jieba分词模式(1)精确模式:把句子最精确的切分开,比较适合文本分析.默认精确模式.(2)全模式:把句子中所有可能成词的词都扫描出来,cut_all=True,缺点:速度快,不能解决歧义(3)paddle:利用百度的paddlepaddle深度学习框架.简单来说就是使用百度提供的分词模型.use_paddle=True.(4)搜索引擎模式:在精确模式的基础上,对长词再进行切分,提高召回率,</div> </li> <li><a href="/article/1833481816355467264.htm" title="JavaScript 常用模块化规范" target="_blank">JavaScript 常用模块化规范</a> <span class="text-muted">渡鸦七</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a> <div>JavaScript模块化规范1.模块化概述1.1什么时模块化将程序文件依据一定规则拆分成多个文件,这种编码方式就是模块化的编码方式。拆分出来每个文件就是一个模块,模块中的数据都是私有的,模块之间相互隔离。同事也能通过一些手段,可以把模块内的指定数据“交出去”,提供其他模块使用。1.2为什么使用模块化随着应用的复杂度越来越高,其代码量和文件数据都会急剧增加,会逐渐引发一些问题:全局污染问题。依赖混</div> </li> <li><a href="/article/1832816747191824384.htm" title="Python常用模块" target="_blank">Python常用模块</a> <span class="text-muted">xbgordon</span> <a class="tag" taget="_blank" href="/search/Python%E8%84%9A%E6%9C%AC/1.htm">Python脚本</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/OS/1.htm">OS</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/F%23/1.htm">F#</a><a class="tag" taget="_blank" href="/search/C/1.htm">C</a> <div>Python常用模块I1.内置模块(不用import就可以直接使用)常用内置函数:help(obj)在线帮助,obj可是任何类型callable(obj)查看一个obj是不是可以像函数一样调用repr(obj)得到obj的表示字符串,可以利用这个字符串eval重建该对象的一个拷贝eval_r(str)表示合法的python表达式,返回这个表达式dir(obj)查看obj的namespace中可见的</div> </li> <li><a href="/article/1831226095643488256.htm" title="Metasploit技术博客:全面指南" target="_blank">Metasploit技术博客:全面指南</a> <span class="text-muted">Hello.Reader</span> <a class="tag" taget="_blank" href="/search/%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95/1.htm">渗透测试</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E6%B5%8B%E8%AF%95/1.htm">安全测试</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E6%80%A7%E6%B5%8B%E8%AF%95/1.htm">安全性测试</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E6%9E%B6%E6%9E%84/1.htm">安全架构</a><a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E5%A8%81%E8%83%81%E5%88%86%E6%9E%90/1.htm">安全威胁分析</a> <div>一、概述Metasploit是一款功能强大的渗透测试框架,在网络安全领域中扮演着关键角色。无论你是初学者还是经验丰富的渗透测试专家,Metasploit都提供了一整套工具,用于发现、利用和验证系统中的安全漏洞。本文将详细探讨Metasploit的基础知识、常用模块、实战案例、高级功能、最佳实践以及未来发展趋势,为您提供全面的技术指南。二、什么是Metasploit?Metasploit由Rapid</div> </li> <li><a href="/article/1830224900074336256.htm" title="ansible判定文件或者文件夹是否存在" target="_blank">ansible判定文件或者文件夹是否存在</a> <span class="text-muted">yushi6310</span> <a class="tag" taget="_blank" href="/search/ansible/1.htm">ansible</a><a class="tag" taget="_blank" href="/search/ansible/1.htm">ansible</a> <div>ansible的常用模块中没有判定当文件存在或者不存在时,执行某个执行使用下面方法能简单判定某个文件是否存在----name:judgeafileordirisexitsshell:ls/home/sfyignore_errors:Trueregister:result-shell:echo"fileexit"when:result|succeeded-shell:echo"filenotexit</div> </li> <li><a href="/article/1830220990085427200.htm" title="Ansible常用模块" target="_blank">Ansible常用模块</a> <span class="text-muted">浴皇大帝</span> <a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a> <div>Ansible常用模块文章目录Ansible常用模块1.ping模块2.command模块3.raw模块4.shell模块4.1command、raw、shell模块的区别5.script模块6.template模块7.yum模块8.copy模块9.group模块10.user模块11.service模块12.lineinfile模块13.firewalld模块1.ping模块ping模块用于检查</div> </li> <li><a href="/article/1828055699859533824.htm" title="ansible模块超全解析,拿下ansible常用模块(一)" target="_blank">ansible模块超全解析,拿下ansible常用模块(一)</a> <span class="text-muted">郭不戳</span> <a class="tag" taget="_blank" href="/search/ansible%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4/1.htm">ansible自动化运维</a><a class="tag" taget="_blank" href="/search/ansible/1.htm">ansible</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a> <div>目录ansible模块command模块shell模块script模块file模块copy模块fetch模块lineinfile模块replace模块user模块group模块ansible模块模块基本信息查看#列出ansible的所有模块数量[root@controlansible]#ansible-doc-l|wc-l2834#列出ansible的所有模块[root@controlansibl</div> </li> <li><a href="/article/1828052920789200896.htm" title="封装fetch请求" target="_blank">封装fetch请求</a> <span class="text-muted">略略大魔王丶</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>fetch请求对IE不友好,而Vue3也IE不友好,那么之后在创建Vue3项目的时候是不是可以尝试用Vue3+fetch去代替axios呢?当然也不知道行不行,所以先记录下我对fetch的封装。首先引入封装请求的常用模块-qsnpminstallqs简单封装下fetch请求-没什么好说的直接上代码/***配置请求*///导入模块importqsfrom'qs';//URL地址-这边是接口的前缀-根</div> </li> <li><a href="/article/1828052920260718592.htm" title="Ansible模块介绍" target="_blank">Ansible模块介绍</a> <span class="text-muted">爱折腾的小土豆</span> <a class="tag" taget="_blank" href="/search/ansible/1.htm">ansible</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>Ansible中常用模块目录一、Ansible命令运行方式及常用参数1、命令的格式:2、常用的参数:二、Ansible中常用模块a、ping模块b、command模块常用参数语法:c、raw模块d、shell模块e、script模块f、template模块g、yum模块h、copy模块1、目的文件的权限2、如果目的地文件已存在,备份目的地的原文件i、group模块1、在受控机上添加一个系统组,其g</div> </li> <li><a href="/article/1771989814262956032.htm" title="QT 常用模块介绍以及使用说明" target="_blank">QT 常用模块介绍以及使用说明</a> <span class="text-muted">我写代码菜如坤</span> <a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>当学习QT编程时,掌握以下几个关键模块是非常重要的。下面是每个模块的简要说明及示例程序:QtWidgets模块:说明:QtWidgets模块包含用于创建传统桌面应用程序的UI控件。示例程序:#include#includeintmain(intargc,char*argv[]){QApplicationapp(argc,argv);QWidgetwindow;window.setWindowTit</div> </li> <li><a href="/article/1768520689930797056.htm" title="Python学习笔记(1)——环境安装与变量" target="_blank">Python学习笔记(1)——环境安装与变量</a> <span class="text-muted">ThinkerChenYi</span> <a class="tag" taget="_blank" href="/search/python%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">python学习笔记</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">学习笔记</a> <div>python环境安装-python2还是python3python2只支持到2020年,并且python2和3有不少用法差异。要是刚学完python2不久就发现过时了这就很尴尬了,所以推荐使用python3-安装环境推荐:Anaconda+pychamAnaconda是一个python的科学计算包,python环境,常用模块以及工具都包含在里面,省心省力官网:https://www.anacond</div> </li> <li><a href="/article/1767648604173959168.htm" title="Python基础学习(11)常用模块" target="_blank">Python基础学习(11)常用模块</a> <span class="text-muted">一只特立独行猪</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%96%B9%E6%B3%95/1.htm">学习方法</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>文章目录一、time二、random三、os四、sys五、json补充1:JSON字符串补充2:JSON字符串和字典的区别六、hashlibPython基础学习(1)基本知识Python基础学习(2)序列类型方法与数据类型转换Python基础学习(3)进阶字符串(格式化输出)Python基础学习(4)散列类型(无序序列)Python基础学习(5)流程控制Python基础学习(6)函数基础与函数参数</div> </li> <li><a href="/article/1765649750985629696.htm" title="爬虫常用模块--urllib爬虫[头歌题解]" target="_blank">爬虫常用模块--urllib爬虫[头歌题解]</a> <span class="text-muted">Moon_K+rery</span> <a class="tag" taget="_blank" href="/search/%E5%A4%B4%E6%AD%8C%E5%AE%9E%E8%B7%B5%E9%A2%98%E8%A7%A3/1.htm">头歌实践题解</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/pycharm/1.htm">pycharm</a> <div>题目来源:头歌平台------数据采集与网络爬虫下述题解均通过测试,如果小伙伴有出现测试不通过的情况,大概是原题出现变化或是编码时出现漏缺,答案仅供参考,祝大家一通百通。第1关:urllib基础importurllib.requestdefrequest(url):'''一个参数:paramurl:请求网址:return:返回一个请求的字符串。编码为utf-8'''#***************</div> </li> <li><a href="/article/1759888247602900992.htm" title="Python中Thop库的基本介绍和参数说明" target="_blank">Python中Thop库的基本介绍和参数说明</a> <span class="text-muted">肆十二</span> <a class="tag" taget="_blank" href="/search/Python%E5%B8%B8%E7%94%A8%E7%9A%84%E5%BA%93/1.htm">Python常用的库</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/thop/1.htm">thop</a> <div>关注B站可以观看更多实战教学视频:肆十二-的个人空间-肆十二-个人主页-哔哩哔哩视频(bilibili.com)Hi,兄弟们,这里是肆十二,今天我们来讨论一下我们经常使用的Thop模块的常用模块和用途。Thop介绍THOP(Torch-OpCounter)是一个用于计算PyTorch模型操作数和计算量的工具。通过这个库,开发者可以更好地理解和评估模型的复杂度,这对于模型优化和性能调优是非常有帮助的</div> </li> <li><a href="/article/1759740824544964608.htm" title="Python入门:常用模块—xml模块" target="_blank">Python入门:常用模块—xml模块</a> <span class="text-muted">芳姐聊互联网职场</span> <a class="tag" taget="_blank" href="/search/Python%E5%85%A5%E9%97%A8/1.htm">Python入门</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单xml的格式如下,就是通过22010141100520135990069201313600xml协议在各个语言里的都是支持的,在python中可以用以下模块操作xmlimportxml.etree.ElementTreeasETtree=ET.parse("xmltest.xml")root=tree.ge</div> </li> <li><a href="/article/1759714856228974592.htm" title="Pytorch的常用模块和用途说明" target="_blank">Pytorch的常用模块和用途说明</a> <span class="text-muted">肆十二</span> <a class="tag" taget="_blank" href="/search/Pytorch%E8%AF%AD%E6%B3%95/1.htm">Pytorch语法</a><a class="tag" taget="_blank" href="/search/pytorch/1.htm">pytorch</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>关注B站可以观看更多实战教学视频:肆十二-的个人空间-肆十二-个人主页-哔哩哔哩视频(bilibili.com)Hi,兄弟们,这里是肆十二,今天我们来讨论一下深Pytorch中的常用模块。PyTorch是一个开源的深度学习平台,提供了许多常用的模块来帮助开发者构建和训练神经网络。以下是一些PyTorch中常用的模块:torch:这是PyTorch的核心库,包含了所有基础张量操作,如创建、索引、切片</div> </li> <li><a href="/article/1757727785457041408.htm" title="numpy 矩阵乘法_一起学习Python常用模块——numpy" target="_blank">numpy 矩阵乘法_一起学习Python常用模块——numpy</a> <span class="text-muted">weixin_39636099</span> <a class="tag" taget="_blank" href="/search/numpy/1.htm">numpy</a><a class="tag" taget="_blank" href="/search/%E7%9F%A9%E9%98%B5%E4%B9%98%E6%B3%95/1.htm">矩阵乘法</a><a class="tag" taget="_blank" href="/search/numpy%E7%9F%A9%E9%98%B5%E4%B9%98%E6%B3%95/1.htm">numpy矩阵乘法</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AF%B9ndarray%E5%85%A8%E4%BD%93%E9%99%A4%E4%BB%A5%E4%B8%80%E4%B8%AA%E6%95%B0/1.htm">对ndarray全体除以一个数</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%A8%80%E7%96%8F%E7%9F%A9%E9%98%B5%E4%B9%98%E6%B3%95/1.htm">稀疏矩阵乘法</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%A9%BA%E6%95%B0%E7%BB%84/1.htm">空数组</a><a class="tag" taget="_blank" href="/search/python%E5%AE%89%E8%A3%85numpy%E6%A8%A1%E5%9D%97/1.htm">python安装numpy模块</a> <div>关注微信公众号:一个数据人的自留地作者介绍知乎@王多鱼百度的一名推荐算法攻城狮。主要负责商品推荐的召回和排序模型的优化工作。1前言Python在数据科学、机器学习、AI领等域中占据主导地位,目前对于数据分析师和算法工程师来说是必备技能。对于数据分析师来说,应掌握基础语法和数据科学的模块,主要包括:pandas、numpy和机器学习库sklearn等。对于算法工程师来说,还应掌握深度学习相关模块,主</div> </li> <li><a href="/article/1757727786941825024.htm" title="python 对ndarray全体除以一个数_一起学习Python常用模块——numpy" target="_blank">python 对ndarray全体除以一个数_一起学习Python常用模块——numpy</a> <span class="text-muted">weixin_39785814</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AF%B9ndarray%E5%85%A8%E4%BD%93%E9%99%A4%E4%BB%A5%E4%B8%80%E4%B8%AA%E6%95%B0/1.htm">对ndarray全体除以一个数</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%A9%BA%E6%95%B0%E7%BB%84/1.htm">空数组</a><a class="tag" taget="_blank" href="/search/python%E6%95%B0%E7%BB%84%E5%85%A8%E9%83%A8%E5%B9%B3%E6%96%B9/1.htm">python数组全部平方</a> <div>关注微信公众号:一个数据人的自留地作者介绍知乎@王多鱼百度的一名推荐算法攻城狮。主要负责商品推荐的召回和排序模型的优化工作。1前言Python在数据科学、机器学习、AI领等域中占据主导地位,目前对于数据分析师和算法工程师来说是必备技能。对于数据分析师来说,应掌握基础语法和数据科学的模块,主要包括:pandas、numpy和机器学习库sklearn等。对于算法工程师来说,还应掌握深度学习相关模块,主</div> </li> <li><a href="/article/1756969191505674240.htm" title="NGINX的一些SEO优化常用配置" target="_blank">NGINX的一些SEO优化常用配置</a> <span class="text-muted">gao922699</span> <div>官方文档:http://nginx.org/en/docs/常用模块:ngx_http_core_modulengx_http_rewrite_modulengx_http_proxy_modulengx_http_upstream_module内置参数查询:EmbeddedVariables系统的基础使用教程就不再记录了,只是记录一些用到的配置方法主域跳转www域官方推荐分两个server,不推</div> </li> <li><a href="/article/1756417834574954496.htm" title="python入门:常用模块—random模块" target="_blank">python入门:常用模块—random模块</a> <span class="text-muted">芳姐聊互联网职场</span> <a class="tag" taget="_blank" href="/search/Python%E5%85%A5%E9%97%A8/1.htm">Python入门</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>有很多地方需要用到随机字符,比如登录网站的随机验证码,通过random模块可以很容易生成随机字符串1234567891011121314151617importrandomprint(random.randrange(1,10))#返回1-10之间的一个随机数,不包括10print(random.randint(1,10))#返回1-10之间的一个随机数,包括10print(random.rand</div> </li> <li><a href="/article/1756417578869211136.htm" title="Python入门:常用模块—os模块及sys模块" target="_blank">Python入门:常用模块—os模块及sys模块</a> <span class="text-muted">芳姐聊互联网职场</span> <a class="tag" taget="_blank" href="/search/Python%E5%85%A5%E9%97%A8/1.htm">Python入门</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>os模块sys模块importsysprint(sys.argv)#命令参数list,第一个元素是程序本身路径print(sys.exit())#退出程序,正常退出是exit(0)print(sys.version)#获取python解释程序的版本信息print(sys.maxint())#最大的int值print(sys.path)#返回模块的搜索路径,初始化时使用Pythonpath环境变量的</div> </li> <li><a href="/article/1754068114896601088.htm" title="OS.PATH常用模块详解" target="_blank">OS.PATH常用模块详解</a> <span class="text-muted">IT_民工</span> <div>os.path模块主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法。更多的方法可以去查看官方文档:http://docs.python.org/library/os.path.html1.os.path.abspath(path)返回path规范化的绝对路径。>>>os.path.abspath('test.csv')'C:\\Python25\\test.csv'>>>os.</div> </li> <li><a href="/article/1753627842127609856.htm" title="“挖金矿”系列:Python的标准库的快速调用" target="_blank">“挖金矿”系列:Python的标准库的快速调用</a> <span class="text-muted">科学禅道</span> <a class="tag" taget="_blank" href="/search/Python%E6%8C%96%E9%87%91%E7%9F%BF%E7%B3%BB%E5%88%97/1.htm">Python挖金矿系列</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>Python的标准库包含了众多功能强大的模块,以下是一些常用模块及其主要功能:os:提供了与操作系统交互的各种功能,如文件和目录操作(创建、删除、重命名等)、环境变量读取、进程管理等。示例:Python1importos2os.mkdir('new_directory')#创建目录3os.getcwd()#获取当前工作目录sys:包含系统特定的功能和信息,例如访问命令行参数、获取或修改Python</div> </li> <li><a href="/article/1753550176670203904.htm" title="ansible的常用模块配置说明及批量部署服务" target="_blank">ansible的常用模块配置说明及批量部署服务</a> <span class="text-muted">lqcbj_IT老混混</span> <a class="tag" taget="_blank" href="/search/Linux%E8%BF%90%E7%BB%B4/1.htm">Linux运维</a><a class="tag" taget="_blank" href="/search/ansible/1.htm">ansible</a> <div>ansible的常用模块配置说明及批量部署服务ansible的常用模块配置说明,在远程服务器批量配置清华大学的仓库文件,批量部署nginx,并启动服务。ansible知识点:一、Ansible特点:1、部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;2、有大量常规运维操作模块,可实现日常绝大部分操作;3、配置简单、功能强大、扩展性强;4、通过Playbook来定制强大的配置;二</div> </li> <li><a href="/article/1753438311944306688.htm" title="黑猴子的家:Python 学习阶段" target="_blank">黑猴子的家:Python 学习阶段</a> <span class="text-muted">黑猴子的家</span> <div>1、前戏阶段-疗程1语言基础数据类型流程控制常用模块函数、迭代器、装饰器递归、迭代、反射面向对象编程购物车程序ATM信用卡程序开发计算机程序开发模拟人生游戏开发2、轻撸怡情-疗程2网络编程Socketc/s编程、Twisted异步网络框架、网络爬虫开发多线程、多进程、协程gevent、select\poll\epoll生产者消费者模式审计堡垒机系统开发FTP服务器开发批量命令、文件分布工具Rabb</div> </li> <li><a href="/article/1753212756342882304.htm" title="ansible基础及常用模块" target="_blank">ansible基础及常用模块</a> <span class="text-muted">夏有乔木�</span> <a class="tag" taget="_blank" href="/search/ansible/1.htm">ansible</a> <div>如何安装和使用ansible,接下来是ansible的使用和配置过程。一、ansible应用Ansible是一个agent,作为一个管理的主机或者作为应用配置服务器来讲,通常情况下ansible是这样实行管理操作的。1、比如现在有一个生产环境,也就意味着我们的主机有可能在托管的机房(机房的某些服务器)或者是云端的虚拟主机之上(云端上创建的虚拟主机实例上),那么ansible假如在平常办公室平常用的</div> </li> <li><a href="/article/1753211600472391680.htm" title="Ansible基础及常用模块" target="_blank">Ansible基础及常用模块</a> <span class="text-muted">Ybaocheng</span> <a class="tag" taget="_blank" href="/search/ansible/1.htm">ansible</a> <div>目录1.前言AnsibleAnsible的特性2.ansible环境安装部署管理端安装ansible(192.168.88.22)ansible目录结构配置主机清单配置密钥对验证3.ansible命令行模块command模块shell模块编辑cron模块user模块group模块copy模块file模块hostname模块ping模块yum|apt模块service/systemd模块script</div> </li> <li><a href="/article/1753188554772594688.htm" title="【Python基础】常用模块(模块导入、包、错误和异常、正则表达式、pymysql、进程与线程)" target="_blank">【Python基础】常用模块(模块导入、包、错误和异常、正则表达式、pymysql、进程与线程)</a> <span class="text-muted">住在天上的云</span> <a class="tag" taget="_blank" href="/search/Python%E5%9F%BA%E7%A1%80/1.htm">Python基础</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>文章目录常用模块1模块导入1.1导入方式1.2导入过程1.3导入搜索路径1.4__name__变量2包2.1包的概念2.2相对导入与绝对导入3错误和异常3.1异常处理3.1.1try...except3.1.2try...finally3.2raise与assert语句3.2.1raise语句3.2.2assert语句3.3自定义异常类3.4with/as语句3.4.1with/as应用3.4.2</div> </li> <li><a href="/article/1753151695338094592.htm" title="Node学习随笔—http相关__http模块&路由" target="_blank">Node学习随笔—http相关__http模块&路由</a> <span class="text-muted">rain_li</span> <div>一:http模块http模块是node的常用模块,可以用浏览器访问写的代码1.引进http模块(核心模块不需要安装)lethttp=require("http")2.创建服务器(参数接受函数)letserver=http.createServer((req,res)=>{//返回结果(状态码,返回类型,返回的编码)res.writeHead(200,{"Content-type":"text/ht</div> </li> <li><a href="/article/1751556968734015488.htm" title="Dockerfile入门" target="_blank">Dockerfile入门</a> <span class="text-muted">微风轻轻起x</span> <a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>文章目录简介Dockerfile的基本结构Dockerfile常用模块编写Dockerfile的注意事项简介Dockerfile是一个文本文件,其中包含了用户可以在命令行上调用以组装图像的所有命令。使用dockerbuild命令时,会根据Dockerfile中的指令按顺序构建镜像。Dockerfile是自动化镜像构建和部署的基石,它提供了一种可重复的方式来定义镜像的内容和构建步骤。Dockerfi</div> </li> <li><a href="/article/50.htm" title="java封装继承多态等" target="_blank">java封装继承多态等</a> <span class="text-muted">麦田的设计者</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/encapsulatopn/1.htm">encapsulatopn</a> <div>       最近一段时间看了很多的视频却忘记总结了,现在只能想到什么写什么了,希望能起到一个回忆巩固的作用。     1、final关键字       译为:最终的        &</div> </li> <li><a href="/article/177.htm" title="F5与集群的区别" target="_blank">F5与集群的区别</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/weblogic/1.htm">weblogic</a><a class="tag" taget="_blank" href="/search/%E9%9B%86%E7%BE%A4/1.htm">集群</a><a class="tag" taget="_blank" href="/search/F5/1.htm">F5</a> <div>        http请求配置不是通过集群,而是F5;集群是weblogic容器的,如果是ejb接口是通过集群。         F5同集群的差别,主要还是会话复制的问题,F5一把是分发http请求用的,因为http都是无状态的服务,无需关注会话问题,类似</div> </li> <li><a href="/article/304.htm" title="LeetCode[Math] - #7 Reverse Integer" target="_blank">LeetCode[Math] - #7 Reverse Integer</a> <span class="text-muted">Cwind</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E9%A2%98%E8%A7%A3/1.htm">题解</a><a class="tag" taget="_blank" href="/search/Math/1.htm">Math</a><a class="tag" taget="_blank" href="/search/LeetCode/1.htm">LeetCode</a><a class="tag" taget="_blank" href="/search/Algorithm/1.htm">Algorithm</a> <div>原题链接:#7 Reverse Integer   要求: 按位反转输入的数字 例1: 输入 x = 123, 返回 321 例2: 输入 x = -123, 返回 -321   难度:简单   分析: 对于一般情况,首先保存输入数字的符号,然后每次取输入的末位(x%10)作为输出的高位(result = result*10 + x%10)即可。但</div> </li> <li><a href="/article/431.htm" title="BufferedOutputStream" target="_blank">BufferedOutputStream</a> <span class="text-muted">周凡杨</span> <div>     首先说一下这个大批量,是指有上千万的数据量。      例子:      有一张短信历史表,其数据有上千万条数据,要进行数据备份到文本文件,就是执行如下SQL然后将结果集写入到文件中!      select t.msisd</div> </li> <li><a href="/article/558.htm" title="linux下模拟按键输入和鼠标" target="_blank">linux下模拟按键输入和鼠标</a> <span class="text-muted">被触发</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>查看/dev/input/eventX是什么类型的事件, cat /proc/bus/input/devices 设备有着自己特殊的按键键码,我需要将一些标准的按键,比如0-9,X-Z等模拟成标准按键,比如KEY_0,KEY-Z等,所以需要用到按键 模拟,具体方法就是操作/dev/input/event1文件,向它写入个input_event结构体就可以模拟按键的输入了。 linux/in</div> </li> <li><a href="/article/685.htm" title="ContentProvider初体验" target="_blank">ContentProvider初体验</a> <span class="text-muted">肆无忌惮_</span> <a class="tag" taget="_blank" href="/search/ContentProvider/1.htm">ContentProvider</a> <div>ContentProvider在安卓开发中非常重要。与Activity,Service,BroadcastReceiver并称安卓组件四大天王。 在android中的作用是用来对外共享数据。因为安卓程序的数据库文件存放在data/data/packagename里面,这里面的文件默认都是私有的,别的程序无法访问。 如果QQ游戏想访问手机QQ的帐号信息一键登录,那么就需要使用内容提供者COnte</div> </li> <li><a href="/article/812.htm" title="关于Spring MVC项目(maven)中通过fileupload上传文件" target="_blank">关于Spring MVC项目(maven)中通过fileupload上传文件</a> <span class="text-muted">843977358</span> <a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a><a class="tag" taget="_blank" href="/search/spring+mvc/1.htm">spring mvc</a><a class="tag" taget="_blank" href="/search/%E4%BF%AE%E6%94%B9%E5%A4%B4%E5%83%8F/1.htm">修改头像</a><a class="tag" taget="_blank" href="/search/%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6/1.htm">上传文件</a><a class="tag" taget="_blank" href="/search/upload/1.htm">upload</a> <div>Spring MVC 中通过fileupload上传文件,其中项目使用maven管理。   1.上传文件首先需要的是导入相关支持jar包:commons-fileupload.jar,commons-io.jar 因为我是用的maven管理项目,所以要在pom文件中配置(每个人的jar包位置根据实际情况定) <!-- 文件上传 start by zhangyd-c --&g</div> </li> <li><a href="/article/939.htm" title="使用svnkit api,纯java操作svn,实现svn提交,更新等操作" target="_blank">使用svnkit api,纯java操作svn,实现svn提交,更新等操作</a> <span class="text-muted">aigo</span> <a class="tag" taget="_blank" href="/search/svnkit/1.htm">svnkit</a> <div> 原文:http://blog.csdn.net/hardwin/article/details/7963318   import java.io.File; import org.apache.log4j.Logger; import org.tmatesoft.svn.core.SVNCommitInfo; import org.tmateso</div> </li> <li><a href="/article/1066.htm" title="对比浏览器,casperjs,httpclient的Header信息" target="_blank">对比浏览器,casperjs,httpclient的Header信息</a> <span class="text-muted">alleni123</span> <a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/crawler/1.htm">crawler</a><a class="tag" taget="_blank" href="/search/header/1.htm">header</a> <div> @Override protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { String type=req.getParameter("type"); Enumeration es=re</div> </li> <li><a href="/article/1193.htm" title="java.io操作 DataInputStream和DataOutputStream基本数据流" target="_blank">java.io操作 DataInputStream和DataOutputStream基本数据流</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%B5%81/1.htm">流</a> <div>1,java中如果不保存整个对象,只保存类中的属性,那么我们可以使用本篇文章中的方法,如果要保存整个对象  先将类实例化  后面的文章将详细写到     2,DataInputStream 是java.io包中一个数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。</div> </li> <li><a href="/article/1320.htm" title="车辆保险理赔案例" target="_blank">车辆保险理赔案例</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/%E8%BD%A6%E9%99%A9/1.htm">车险</a> <div>理赔案例: 一货运车,运输公司为车辆购买了机动车商业险和交强险,也买了安全生产责任险,运输一车烟花爆竹,在行驶途中发生爆炸,出现车毁、货损、司机亡、炸死一路人、炸毁一间民宅等惨剧,针对这几种情况,该如何赔付。 赔付建议和方案: 客户所买交强险在这里不起作用,因为交强险的赔付前提是:“机动车发生道路交通意外事故”; 如果是交通意外事故引发的爆炸,则优先适用交强险条款进行赔付,不足的部分由商业</div> </li> <li><a href="/article/1447.htm" title="学习Spring必学的Java基础知识(5)—注解" target="_blank">学习Spring必学的Java基础知识(5)—注解</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>        文章来源:http://www.iteye.com/topic/1123823,整理在我的博客有两个目的:一个是原文确实很不错,通俗易懂,督促自已将博主的这一系列关于Spring文章都学完;另一个原因是为免原文被博主删除,在此记录,方便以后查找阅读。           有必要对</div> </li> <li><a href="/article/1574.htm" title="【Struts2一】Struts2 Hello World" target="_blank">【Struts2一】Struts2 Hello World</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/Hello+world/1.htm">Hello world</a> <div>Struts2 Hello World应用的基本步骤 创建Struts2的Hello World应用,包括如下几步: 1.配置web.xml 2.创建Action 3.创建struts.xml,配置Action 4.启动web server,通过浏览器访问   配置web.xml <?xml version="1.0" encoding="</div> </li> <li><a href="/article/1701.htm" title="【Avro二】Avro RPC框架" target="_blank">【Avro二】Avro RPC框架</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/rpc/1.htm">rpc</a> <div>1. Avro RPC简介 1.1. RPC RPC逻辑上分为二层,一是传输层,负责网络通信;二是协议层,将数据按照一定协议格式打包和解包 从序列化方式来看,Apache Thrift 和Google的Protocol Buffers和Avro应该是属于同一个级别的框架,都能跨语言,性能优秀,数据精简,但是Avro的动态模式(不用生成代码,而且性能很好)这个特点让人非常喜欢,比较适合R</div> </li> <li><a href="/article/1828.htm" title="lua set get cookie" target="_blank">lua set get cookie</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/lua+cookie/1.htm">lua cookie</a> <div>lua: local access_token = ngx.var.cookie_SGAccessToken if access_token then ngx.header["Set-Cookie"] = "SGAccessToken="..access_token.."; path=/;Max-Age=3000" end</div> </li> <li><a href="/article/1955.htm" title="java-打印不大于N的质数" target="_blank">java-打印不大于N的质数</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public class PrimeNumber { /** * 寻找不大于N的质数 */ public static void main(String[] args) { int n=100; PrimeNumber pn=new PrimeNumber(); pn.printPrimeNumber(n); System.out.print</div> </li> <li><a href="/article/2082.htm" title="Spring源码学习-PropertyPlaceholderHelper" target="_blank">Spring源码学习-PropertyPlaceholderHelper</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>今天在看Spring 3.0.0.RELEASE的源码,发现PropertyPlaceholderHelper的一个bug 当时觉得奇怪,上网一搜,果然是个bug,不过早就有人发现了,且已经修复: 详见: http://forum.spring.io/forum/spring-projects/container/88107-propertyplaceholderhelper-bug </div> </li> <li><a href="/article/2209.htm" title="[逻辑与拓扑]布尔逻辑与拓扑结构的结合会产生什么?" target="_blank">[逻辑与拓扑]布尔逻辑与拓扑结构的结合会产生什么?</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E6%8B%93%E6%89%91/1.htm">拓扑</a> <div>    如果我们已经在一个工作流的节点中嵌入了可以进行逻辑推理的代码,那么成百上千个这样的节点如果组成一个拓扑网络,而这个网络是可以自动遍历的,非线性的拓扑计算模型和节点内部的布尔逻辑处理的结合,会产生什么样的结果呢?    是否可以形成一种新的模糊语言识别和处理模型呢?  大家有兴趣可以试试,用软件搞这些有个好处,就是花钱比较少,就算不成</div> </li> <li><a href="/article/2336.htm" title="ITEYE 都换百度推广了" target="_blank">ITEYE 都换百度推广了</a> <span class="text-muted">cuisuqiang</span> <a class="tag" taget="_blank" href="/search/Google/1.htm">Google</a><a class="tag" taget="_blank" href="/search/AdSense/1.htm">AdSense</a><a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6%E6%8E%A8%E5%B9%BF/1.htm">百度推广</a><a class="tag" taget="_blank" href="/search/%E5%B9%BF%E5%91%8A/1.htm">广告</a><a class="tag" taget="_blank" href="/search/%E5%A4%96%E5%BF%AB/1.htm">外快</a> <div>以前ITEYE的广告都是谷歌的Google AdSense,现在都换成百度推广了。   为什么个人博客设置里面还是Google AdSense呢?   都知道Google AdSense不好申请,这在ITEYE上也不是讨论了一两天了,强烈建议ITEYE换掉Google AdSense。至少,用一个好申请的吧。   什么时候能从ITEYE上来点外快,哪怕少点</div> </li> <li><a href="/article/2463.htm" title="新浪微博技术架构分析" target="_blank">新浪微博技术架构分析</a> <span class="text-muted">dalan_123</span> <a class="tag" taget="_blank" href="/search/%E6%96%B0%E6%B5%AA%E5%BE%AE%E5%8D%9A/1.htm">新浪微博</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a> <div>新浪微博在短短一年时间内从零发展到五千万用户,我们的基层架构也发展了几个版本。第一版就是是非常快的,我们可以非常快的实现我们的模块。我们看一下技术特点,微博这个产品从架构上来分析,它需要解决的是发表和订阅的问题。我们第一版采用的是推的消息模式,假如说我们一个明星用户他有10万个粉丝,那就是说用户发表一条微博的时候,我们把这个微博消息攒成10万份,这样就是很简单了,第一版的架构实际上就是这两行字。第</div> </li> <li><a href="/article/2590.htm" title="玩转ARP攻击" target="_blank">玩转ARP攻击</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/r/1.htm">r</a> <div>我写这片文章只是想让你明白深刻理解某一协议的好处。高手免看。如果有人利用这片文章所做的一切事情,盖不负责。 网上关于ARP的资料已经很多了,就不用我都说了。 用某一位高手的话来说,“我们能做的事情很多,唯一受限制的是我们的创造力和想象力”。 ARP也是如此。 以下讨论的机子有 一个要攻击的机子:10.5.4.178 硬件地址:52:54:4C:98</div> </li> <li><a href="/article/2717.htm" title="PHP编码规范" target="_blank">PHP编码规范</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A0%81%E8%A7%84%E8%8C%83/1.htm">编码规范</a> <div>一、文件格式 1. 对于只含有 php 代码的文件,我们将在文件结尾处忽略掉 "?>" 。这是为了防止多余的空格或者其它字符影响到代码。例如:<?php$foo = 'foo';2. 缩进应该能够反映出代码的逻辑结果,尽量使用四个空格,禁止使用制表符TAB,因为这样能够保证有跨客户端编程器软件的灵活性。例</div> </li> <li><a href="/article/2844.htm" title="linux 脱机管理(nohup)" target="_blank">linux 脱机管理(nohup)</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/linux+nohup/1.htm">linux nohup</a><a class="tag" taget="_blank" href="/search/nohup/1.htm">nohup</a> <div>脱机管理 nohup 转载请出自出处:http://eksliang.iteye.com/blog/2166699 nohup可以让你在脱机或者注销系统后,还能够让工作继续进行。他的语法如下 nohup [命令与参数] --在终端机前台工作 nohup [命令与参数] & --在终端机后台工作   但是这个命令需要注意的是,nohup并不支持bash的内置命令,所</div> </li> <li><a href="/article/2971.htm" title="BusinessObjects Enterprise Java SDK" target="_blank">BusinessObjects Enterprise Java SDK</a> <span class="text-muted">greemranqq</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/BO/1.htm">BO</a><a class="tag" taget="_blank" href="/search/SAP/1.htm">SAP</a><a class="tag" taget="_blank" href="/search/Crystal+Reports/1.htm">Crystal Reports</a> <div>最近项目用到oracle_ADF  从SAP/BO 上调用 水晶报表,资料比较少,我做一个简单的分享,给和我一样的新手 提供更多的便利。   首先,我是尝试用JAVA JSP 去访问的。   官方API:http://devlibrary.businessobjects.com/BusinessObjectsxi/en/en/BOE_SDK/boesdk_ja</div> </li> <li><a href="/article/3098.htm" title="系统负载剧变下的管控策略" target="_blank">系统负载剧变下的管控策略</a> <span class="text-muted">iamzhongyong</span> <a class="tag" taget="_blank" href="/search/%E9%AB%98%E5%B9%B6%E5%8F%91/1.htm">高并发</a> <div>假如目前的系统有100台机器,能够支撑每天1亿的点击量(这个就简单比喻一下),然后系统流量剧变了要,我如何应对,系统有那些策略可以处理,这里总结了一下之前的一些做法。 1、水平扩展 这个最容易理解,加机器,这样的话对于系统刚刚开始的伸缩性设计要求比较高,能够非常灵活的添加机器,来应对流量的变化。 2、系统分组 假如系统服务的业务不同,有优先级高的,有优先级低的,那就让不同的业务调用提前分组</div> </li> <li><a href="/article/3225.htm" title="BitTorrent DHT 协议中文翻译" target="_blank">BitTorrent DHT 协议中文翻译</a> <span class="text-muted">justjavac</span> <a class="tag" taget="_blank" href="/search/bit/1.htm">bit</a> <div>前言 做了一个磁力链接和BT种子的搜索引擎 {Magnet & Torrent},因此把 DHT 协议重新看了一遍。 BEP: 5Title: DHT ProtocolVersion: 3dec52cb3ae103ce22358e3894b31cad47a6f22bLast-Modified: Tue Apr 2 16:51:45 2013 -070</div> </li> <li><a href="/article/3352.htm" title="Ubuntu下Java环境的搭建" target="_blank">Ubuntu下Java环境的搭建</a> <span class="text-muted">macroli</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a> <div>配置命令:   $sudo apt-get install ubuntu-restricted-extras   再运行如下命令:   $sudo apt-get install sun-java6-jdk   待安装完毕后选择默认Java.   $sudo update- alternatives --config java   安装过程提示选择,输入“2”即可,然后按回车键确定。 </div> </li> <li><a href="/article/3479.htm" title="js字符串转日期(兼容IE所有版本)" target="_blank">js字符串转日期(兼容IE所有版本)</a> <span class="text-muted">qiaolevip</span> <a class="tag" taget="_blank" href="/search/TO/1.htm">TO</a><a class="tag" taget="_blank" href="/search/Date/1.htm">Date</a><a class="tag" taget="_blank" href="/search/String/1.htm">String</a><a class="tag" taget="_blank" href="/search/IE/1.htm">IE</a> <div> /** * 字符串转时间(yyyy-MM-dd HH:mm:ss) * result (分钟) */ stringToDate : function(fDate){ var fullDate = fDate.split(" ")[0].split("-"); var fullTime = fDate.split("</div> </li> <li><a href="/article/3606.htm" title="【数据挖掘学习】关联规则算法Apriori的学习与SQL简单实现购物篮分析" target="_blank">【数据挖掘学习】关联规则算法Apriori的学习与SQL简单实现购物篮分析</a> <span class="text-muted">superlxw1234</span> <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a><a class="tag" taget="_blank" href="/search/%E5%85%B3%E8%81%94%E8%A7%84%E5%88%99/1.htm">关联规则</a> <div>关联规则挖掘用于寻找给定数据集中项之间的有趣的关联或相关关系。 关联规则揭示了数据项间的未知的依赖关系,根据所挖掘的关联关系,可以从一个数据对象的信息来推断另一个数据对象的信息。 例如购物篮分析。牛奶 ⇒ 面包 [支持度:3%,置信度:40%] 支持度3%:意味3%顾客同时购买牛奶和面包。 置信度40%:意味购买牛奶的顾客40%也购买面包。 规则的支持度和置信度是两个规则兴</div> </li> <li><a href="/article/3733.htm" title="Spring 5.0 的系统需求,期待你的反馈" target="_blank">Spring 5.0 的系统需求,期待你的反馈</a> <span class="text-muted">wiselyman</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>               Spring 5.0将在2016年发布。Spring5.0将支持JDK 9。          Spring 5.0的特性计划还在工作中,请保持关注,所以作者希望从使用者得到关于Spring 5.0系统需求方面的反馈。  </div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>