Python--Day4
学习要有定位,明确目标地去学习。希望自己能坚持下去,并有所收获---leaves
大体上,开发的主要思想就是增、删、改、查四大部分。---Panda
python03-列表、字典和字符串 进阶以及文件操作
一、列表的去重
列表去重的方法主要有set集合和函数两种方法去重。
方案一:set集合
>>> name_list = ['haha', 'heheh', 'haha', 'euw', 'liwei.fu']
>>> set(name_list)
set(['euw', 'liwei.fu', 'haha', 'heheh'])
方案二:函数
>>> name_list = ['haha', 'heheh', 'haha', 'euw', 'liwei.fu']
set(['euw', 'liwei.fu', 'haha', 'heheh'])
>>> new_list = []
>>> for i in name_list :
... if i not in new_list:
... new_list.append(i)
>>> new_list
二、列表和字符串之间的转换
字符串 ====> 列表 split()
列表 ====> 字符串 join()
##join() ==》格式为 "连接符".join(name_list)
###jo in()和split()详解
##split()举例用法
In [51]: ip = "192.168.1.1"
In [52]: ip.split(".")
Out[52]: ['192', '168', '1', '1']
##join()举例用法
In [53]: '!'.join(['192', '168', '1', '1'])
Out[53]: '192!168!1!1'
小例子:将192.168.1.1-255的ip存入到列表中===>对应实例为公司将机房ip存入数据库
In [28]: ip_arr = []
In [29]: netip = "192.168.1."
In [30]: for i in range(1,5):
...: ip = netip+"".join(str(i))
...: ip_arr.append(ip)
...: print ip_arr
...:
...:
...:
['192.168.1.1', '192.168.1.2', '192.168.1.3', '192.168.1.4']
三、列表的进阶
列表的高级用法:列表的遍历
3.1 普通的列表遍历
In [3]: shoplist = list('test')
In [4]: for i in shoplist:
...: print i
...:
t
e
s
t
3.2 列表的高级遍历 && 列表生成式
列表的高级遍历主要需求是:希望列表中的元素对应其index索引值
In [5]: shoplist = ['c','a','b','a']
In [33]: for index,value in enumerate(shoplist):
...: print index , value
...:
0 c
1 a
2 b
3 a
列表生成式:主要将字典data的key,value分别取出来做成列表
格式:
[x for x in 内容]
[x for x in 内容 if 条件]
需求: 一、字符串拼成列表
二、列表本身拼接成列表
三、字典拼接成列表
##练习:将字符串生成列表===>需求一、字符串拼成列表
In [40]: [x for x in "abcx"]
Out[40]: ['a', 'b', 'c', 'x']
##练习,列表本身拼成列表===>需求二、列表拼成列表
In [41]: arr = [10,22,13,25]
In [42]: [i for i in arr if i> 20]
Out[42]: [22, 25]
##上述列表生成式的原生态写法
In [41]: arr = [10,22,13,25]
In [43]: new_a = []
In [44]: for i in arr:
...: if i > 20:
...: new_a.append(i)
...: print new_a
...:
[22, 25]
##练习:将字典生成列表===>需求三、字符串拼成列表
#方法一
In [34]: fields = ['a','b','c']
In [35]: data = {'a':'abc','b':'bac','c':'cab'}
In [36]: [data[x] for x in fields]
Out[36]: ['abc', 'bac', 'cab']
##方法二
In [39]: [v for k ,v in data.items()]
Out[39]: ['abc', 'cab', 'bac']
3.3 列表的高级用法
列表可以用来优雅的拼接mysql语句====>mysql语句的拼接
#传统SQL语句,死板,更改的话不方便
In [46]: sql = "select id,username,email,role from users"
In [47]: sql
Out[47]: 'select id,username,email,role from users'
#进阶拼接,更改fields列表就能拼接获取自己想要的数据
#通过列表动态拼接MySQL
fields = ['id','username','email','role']
sql = "select %s from users" %",".join(fields)
In [48]: sql = ''
In [49]: sql = 'select %s from users' % ','.join(fields)
In [50]: sql
Out[50]: 'select id,username,email,role from users'
四、字典基础知识
4.1 字典可以嵌套任意数据类型 && 字典的增删改查
##字典可以嵌套任意数据类型(key值必须唯一)
In [16]: content = {'name':'test','black':{'phone':11111,'age':22},'colo':[ '22222',33]}
In [17]: content
Out[17]: {'black': {'age': 22, 'phone': 11111}, 'colo': ['22222', 33], 'name': 'test'}
#查找key值
In [18]: content.keys()
Out[18]: ['colo', 'black', 'name']
##增加值
In [19]: content['aa']='ceshi'
In [20]: content
Out[20]:
{'aa': 'ceshi',
'black': {'age': 22, 'phone': 11111},
'colo': ['22222', 33],
'name': 'test'}
##删除字典值===>字典是无序的不能直接pop(),必须指定值
In [21]: content.pop('aa') ==>dict.pop(key) 指定key值
Out[21]: 'ceshi'
In [22]: content
Out[22]: {'black': {'age': 22, 'phone': 11111}, 'colo': ['22222', 33], 'name': 'test'}
##修改值
In [23]: content
Out[23]: {'black': {'age': 22, 'phone': 11111}, 'colo': ['22222', 33], 'name': 'test'}
##第一种
In [24]: content['name']='xiugai'
#第二种,字典嵌套列表
In [25]: content['colo'][1]= 60
#第三种,字典嵌套字典
In [26]: content['black']['phone'] = 99999
#修改完成后的结果
In [27]: content
Out[27]: {'black': {'age': 22, 'phone': 99999}, 'colo': ['22222', 60], 'name': 'xiugai'}
#字典的查==>属性的查找和内容的查找
##len(dict)举例查找字典的长度
In [7]: d = {'a':'b','c':'d'}
In [8]: len(d)
Out[8]: 2
###查字典的keys值
In [28]: content.keys()
Out[28]: ['colo', 'black', 'name']==>以列表的形式返回
##查字典的values值
In [29]: content.values()
Out[29]: [['22222', 60], {'age': 22, 'phone': 99999}, 'xiugai']=>以列表的形式返回
###查字典的键值对
In [30]: content.items()
Out[30]:
[('colo', ['22222', 60]),
('black', {'age': 22, 'phone': 99999}),
('name', 'xiugai')]===>以列表的形式返回
4.2 字典高阶查找介绍
4.2.1 查找key是否存在
In [48]: content
Out[48]: {'black': {'age': 22, 'phone': 99999}, 'colo': ['22222', 60], 'name': 'xiugai'}
In [46]: content.has_key('black')
Out[46]: True
In [47]: content.has_key('ssss')
Out[47]: False
4.2.2 高阶字典的取值dict.get()进阶
具体例子:若取字典中不存在的key的value值时,会报错并终止程序。
In [31]: content['sss']
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
in ()
----> 1 content['sss']
KeyError: 'sss' ===>在开发中如果key不存在的话会终止程序。改进
改进如下:
In [32]: content.get('asss','None')
Out[32]: 'None'
In [33]: content.get('name','None')
Out[33]: 'xiugai'
dict.get()进阶
In [35]: res = content.get('aaaaa','None')
In [36]: res
Out[36]: 'None'
In [37]: not res
Out[37]: False
In [38]: if res :
...: print “True”
...: else:
...: print "False"
...:
True
4.2.3 高阶字典的赋值dict.setdefault('KEY','VALUE')
####setdefault()函数小练习
In [7]: d = {'a':'b','c':'d'}
In [9]: d.setdefault('a','cc')
Out[9]: 'b'
In [10]: d.setdefault('f','cc')
Out[10]: 'cc'
In [11]: d
Out[11]: {'a': 'b', 'c': 'd', 'f': 'cc'}
4.3 详细获取字典中value值中嵌套的数据:
** ====>用 isinstance([],list) 来判断是否为列表类型或者 type([]) is list【is 结合type使用】
In [65]: content
Out[65]: {'black': {'age': 22, 'phone': 99999}, 'colo': ['22222', 60], 'name': 'xiugai'}
In [64]: for k ,v in content.items():
...: print '%s : ----------' %k
...: if isinstance(v,dict):
...: for i ,j in v.items():
...: print i ,j
...: elif type(v) is list :
...: for x in [x for x in v]:
...: print x
...: print v
...:
colo : ----------
22222
60
['22222', 60]
black : ----------
phone 99999
age 22
{'phone': 99999, 'age': 22}
name : ----------
xiugai
####判断是否为字符串str,生产中isinstence使用的多
In [70]: res = isinstance("hello",str)
In [71]: res
Out[71]: True
4.4 字典生成式:字典的高级用法(可以快速翻转字典)
格式:
dict( (v,k) for k ,v in d.iteritems())
dict( [(v,k) for k ,v in d.iteritems() ] )
###字典生成式小例子
In [37]: d = {1:2,3:4,5:6,7:8}
In [38]: print dict( (k ,v) for k ,v in d.iteritems())
{1: 2, 3: 4, 5: 6, 7: 8}
In [39]: print dict( (v ,k) for k ,v in d.iteritems())
{8: 7, 2: 1, 4: 3, 6: 5}
说明:
1.在Python2.6或更早的版本,字典生成器可以接受迭代的键/值对:
d = dict((key,value) for (key,value) in iterable) #第一个key,value的()必须写,第二个可以不写
2.从Python2.7或者3以后,可以直接用字典推导式语法:
d = { key:value for (key,value) in interable} #key,value的()可以不写
##python2.6版本
In [39]: print dict( (v ,k) for k ,v in d.iteritems())
{8: 7, 2: 1, 4: 3, 6: 5}
#python2.7及其以上版本
In [40]: {v : k for k ,v in d.items()}
Out[40]: {2: 1, 4: 3, 6: 5, 8: 7}
##拼接的高阶用法===>生产环境中查询多条数据返回的结果
In [41]: res = [{'id':1,'name':'wd','age':18},{'id':2,'name':'test','age':2
...: 8}]
In [44]: dict((str(x['id']),x['name']) for x in res)
Out[44]: {'1': 'wd', '2': 'test'}
4.5 字典小例子:
4.5.1 将字符串中每个出现的单子个数统计出来
The cafeteria was noisy , but silence hung between us . Valeri didn't seem to mind , but it drove me crazy . I searched my mind for things to say .
####具体代码如下:
In [8]: sentence = "I am Bob ! I am a boy ."
In [9]: arr = sentence.split(" ")
In [10]: res_dict = {}
In [11]: for i in arr:
...: res_dict[i] = res_dict.get(i,0) + 1 ===>高阶代码,可以省略四行代码
###统计出来单词及其对应的个数
In [12]: res_dict
Out[12]: {'!': 1, '.': 1, 'Bob': 1, 'I': 2, 'a': 1, 'am': 2, 'boy': 1}
4.5.2 字典的翻转:以个数为key,单词为value来转反成为新的字典(注意此时key重复的情况)
###具体代码如下:
In [25]: new = {}
In [26]: for k ,v in res_dict.items():
...: if v not in new.keys():
...: new[v] = [k]
...: else :
...: new[v].append(k)
In [27]: print new
{1: ['!', 'a', 'boy', '.', 'Bob'], 2: ['I', 'am']}
###使用setdefault()函数优化代码
In [30]: for k ,v in res_dict.items():
...: new.setdefault(v,[])
...: new[v].append(k)
...:
In [31]: new
Out[31]: {1: ['!', 'a', 'boy', '.', 'Bob'], 2: ['I', 'am']}
五、字符串的基础知识
In [45]: name = "hello"
In [46]: name.startswith('h')
Out[46]: True
In [47]: name.startswith('H')
Out[47]: False
##字符串的格式化 C的风格和 C#风格
In [48]: print "hello %s " % "xx" ##C风格
hello xx
In [49]: print "hello {}" .format("wd")###C#风格
hello wd
In [50]: print "hello {1} {0}" .format("How are you","wd")###C#风格的优势可以更改格式化的顺序
hello wd How are you
列表的格式化:
list = ['hello', '1', '7']
'%s %d-%d' % ('hello', 1, 7)
'%s %s-%s' % (list[0],list[1],list[2])
高逼格:推荐生产中使用
'%s' %' ' .join(list)
字典的格式化:
In [60]: d = {'name':'aa' ,'age':13}
In [61]: "i am %(name)s ,my age is %(age)s" %(d)
Out[61]: 'i am aa ,my age is 13'
In [63]: "i am {name} ,my age is {age}" .format(**d) ##字典两个*号,列表一个*
Out[63]: 'i am aa ,my age is 13'
####strip函数===>主要用于查找以.py等特定后缀结尾的文件名
In [64]: st = " aa "
In [65]: st.lstrip()
Out[65]: 'aa '
In [66]: st.rstrip()
Out[66]: ' aa'
In [67]: st.strip()
Out[67]: 'aa'
##查找以.py等特定后缀结尾的文件名
In [68]: a = 'test.py'
In [69]: a.rstrip(".py")
Out[69]: 'test'
5.1 小练习:##查找以.py等特定后缀结尾的文件名
In [79]: result = []
In [80]: for filename in os.listdir('/usr/local/src/python/03'):
...: if filename.endswith(".py"):
...: result.append(filename.rstrip('.py'))
...: print result
['dict_turn', '01']
六、文件的操作
文件打开分为三步: 打开文件==>读文件==>关闭文件
文件的主要内容也是增删改查
In [81]: f = open('/usr/local/src/python/03/01.py')
In [82]: f.read()
Out[82]: "l = ['hello',1,3]\nprint ','.join(l)\n"
In [83]: f.close()
###运维的职责主要是读文件筛查日志
###增加 write 新增一行
###writelines 新增多行
##查 read readlines
###字符串、列表、字典文件的相互转换
6.1 文件打开的两种方式
方法一:f = open() 这种方法必须关闭文件,否则会报错
方法二:with open() as f: 这个方法代码简洁。会自行关闭文件
###代码举例
###方法一代码举例
In [2]: f = open("01.py")
In [3]: print f.read()
l = ['hello',1,3]
print ','.join(l)
In [4]: f.close()
###方法二代码举例
In [5]: with open('01.py') as f1:
...: print f1.read()
...:
l = ['hello',1,3]
print ','.join(l)
七、结合文件读写实现简单的用户注册登陆系统
7.1 ##用户注册 :
代码如下:
f = open("users.txt","a+")
#f.write("wd:123\n")
#mes = ["kk:321\n","ss:456\n"]
#f.writelines(mes) ###可以直接将列表中的元素写到文件中去
while True:
name = raw_input("Please input you name :").rstrip()
passwd = raw_input("Please input you password: ")
repass = raw_input("Please confirm you password: ")
if len(name) == 0:
print "Name can't NULL,Input name again"
continue
if( passwd != repass) or (len(passwd) == 0) or (len(repass) == 0):
print "Password Wrong"
else :
tmp = ["%s:%s\n" %(name,passwd)]
f.writelines(tmp)
#print "tmp is %s" %tmp
print " OK "
break
f.close()
7.2 ####用户登陆
####登录代码:
#/usr/bin/python
import sys
f = open('users.txt','r')
tlist = []
for i in f.readlines():
print i.strip('\n')
t = i.strip('\n').split(":")
tlist.append(t)
print tlist
res = dict((x[0],x[1]) for x in tlist)
print res
f.close()
####login Module
while True :
name = raw_input("Please input The username : ")
if name not in res.keys():
print "The user is not exists"
sys.exit(6)
time = 1
while time < 4:
pword = raw_input("Please input the password %s times :" %time)
if ( len(pword) == 0 ) or pword != res[name]:
print "The password is Wrong"
else:
print "login Sucess"
sys.exit(0)
if time == 3:
sys.exit("三次密码输入错误,请联系管理员解锁")
time += 1
八、简单的HTML表单制作
8.1 简单的HTML表单标签
HTML参考资料:http://www.w3school.com.cn/
##用途,将日志中访问量最大的ip最做成网页表格,以便boss观看更为直观。
标签
标签定义
用法
定义html的网页
定义HTML 表格
定义HTML 表格中的行。
tr元素包含一个或多个th或td元素。
定义HTML 表头。
定义HTML 表格单元。
8.2 HTML表单小例子。
此项操作的目的:(如果是ip统计的话,一个简单的html表单绝对比命令行的awk、sort、uniq等命令筛选让boss看着更为直观)
统计单词后的结果为res_dict = {'!': 1, '.': 1, 'Bob': 1, 'I': 2, 'a': 1, 'am': 2, 'boy': 1}。将所有单词以及次数从大到小写入在网页文件中。
##代码如下
[root@xiaowei 03]# cat writef.py
res = {'!': 1, '.': 1, 'Bob': 1, 'I': 2, 'a': 1, 'am': 2, 'boy': 1}
##实现字典的翻转,最终以次数为key,以单词组成的列表为value。
new = {}
for k ,v in res.items():
new.setdefault(v,[])##高阶用法
new[v].append(k)
print new
#keys = max(new)
#print "%s ----> %s" %(keys,new[keys])
##HTML标签,定义表格,定义表格中的一行,包含一个或者多个或者 标签
f = open('tongji.html',"w+")
str = "times word "
while True:
keys = max(new) ##通过max()函数取得key中最大值,并遍历其value
for i in new[keys]:
str += "%s %s " %(keys,i)
new.pop(keys) ####遍历完key的最大值后去掉,以便下一次取得最大值仍未重复
if len(new) == 0 :
break
str += "
\n"
f.write(str)
f.close()
##最终tongji.html的效果图如下:
8.3 文件读取的扩展
如果10G以上的大文件日志分析,如果一次读取文件全部内容会导致电脑超负载的,此时正确的读取文件访问为偏移量的读取方式(仅为方案,等自己有空研究后在更新) 。
f.read() ===>一次读取几个字符
f.seek() ===>一般使用f.seek(0)回到文档开始处
f.tell() ===>告知所处的游标
转载于:https://blog.51cto.com/top99/1876802
你可能感兴趣的:(从零开始学Python-day4)
C++ C_style string overview and basic Input funcitons
狗头鹰
C++ notes c++ 开发语言
writeinadvance最近在做题,遇到一个简单的将console的输入输出到文件中的简单题目,没有写出来。悔恨当初没有踏实地总结string相关的I/O以及与文件的操作。这篇文章旨在记录基础的字符I/O,简单常用的文件I/O操作函数。当然,你会说C++已经有一个stringclass,我们只需要#include就能够使用它带来的便捷性及强大的功能,无需烦恼细节。但知道底层的具体情况在语言的学
Python爬虫requests(详细)
dme.
Python爬虫零基础入门 爬虫 python
本文来学爬虫使用requests模块的常见操作。1.URL参数无论是在发送GET/POST请求时,网址URL都可能会携带参数,例如:http://www.5xclass.cn?age=19&name=dengres=requests.get(url="https://www.5xclass.cn?age=19&name=deng")res=requests.get(url="https://www
入门网络安全工程师要学习哪些内容【2025年寒假最新学习计划】
白帽黑客2659
学习 web安全 安全 网络安全 密码学
基于入门网络安全/黑客打造的:黑客&网络安全入门&进阶学习资源包大家都知道网络安全行业很火,这个行业因为国家政策趋势正在大力发展,大有可为!但很多人对网络安全工程师还是不了解,不知道网络安全工程师需要学什么?知了堂小编总结出以下要点。网络安全工程师是一个概称,学习的东西很多,具体学什么看自己以后的职业定位。如果你以后想成为安全产品工程师,学的内容侧重点就和渗透测试工程师不一样,如果你想成为安全开发
事件驱动-事件驱动应用于软件开发
海水天涯
事件驱动 驱动开发
一、前言1.1软件开发概述软件开发是一个涉及计算机科学、工程学、设计和项目管理等领域的广泛概念。它指的是创建、部署和维护软件应用程序或系统的整个过程。这包括从最初的构思和需求分析,到设计、编码、测试、部署,以及后续的维护和更新。在软件开发过程中,通常会遵循一定的方法论或开发模型,如瀑布模型、敏捷开发等,以确保项目能按时、按质完成。软件开发工具如集成开发环境(IDE)、版本控制系统等,也在这个过程中
Python入门笔记
「已注销」
计算机
文章目录第0周课程导学第1周Python基本语法元素保留字数据类型语句与函数输入函数第2周Python基本图形绘制turtle库绝对坐标海龟坐标turtle角度坐标体系RGB色彩体系画笔控制函数运动控制函数方向控制函数循环语句第3周基本数据类型整型浮点数科学计数法复数类型数值运算操作符二元操作符有对应的增强赋值操作符数值运算函数字符串类型的表示字符串切片字符串类型及操作字符串类型格式化time库时
SAT-3D饮食行为训练系统在营养教学中的应用心得体会
上海GR
经验分享
在营养学领域的探索之旅中,我有幸深入接触并实践了SAT-3D膳食诊断和饮食行为训练系统(以下简称SAT-3D系统,研制单位:上海共荣医学科技有限公司),这一经历不仅极大地拓宽了我的专业视野,也让我在营养实训教学上获得了前所未有的启示与感悟。SAT-3D系统,作为一个集科学性与实用性于一体的膳食评估与行为干预工具,其在营养实训教学中的应用,无疑为传统的教学模式注入了一股新鲜血液,让我深刻体会到科技赋
人生建议往死里学网络安全!零基础也能跨行学习!!漏洞挖掘还能做副业
黑客老哥
web安全 学习 安全 php 网络安全
一、网络安全的重要性:从‘不学会被黑’到‘学会保护别人’网络安全的概念现在不再是技术圈的独立话题,它已经渗透到社会的各个领域。从个人的隐私保护、企业的数据安全,到国家的信息防护,网络安全几乎影响了每一个人的生活。无论是黑客攻击、勒索病毒、数据泄露,还是国家间的信息战,网络安全已经成为现代社会的基础设施之一。所以,首先要明白学习网络安全的重要性:你不仅是在学习技术,更多的是在为自己和他人的安全“筑城
Java零基础入门笔记:(3)程序控制
Sherlock Ma
Java Java入门 java 笔记 开发语言 程序人生 学习方法 改行学it 跳槽
前言本笔记是学习狂神的java教程,建议配合视频,学习体验更佳。【狂神说Java】Java零基础学习视频通俗易懂_哔哩哔哩_bilibiliScanner对象之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。Scanner类是Java中的一个实用工具类,位于java.util包中,主要用于从用户输入、文件或其他输入源中读取数据。它提
咱们一起学C++ 第二百三十三篇之C++容器类与模板的探索
一杯年华@编程空间
咱们一起学习C++ c++ 开发语言 spring boot struts
咱们一起学C++第二百三十三篇之C++容器类与模板的探索大家好!C++作为一门强大的编程语言,容器类和模板是其中非常重要的特性。今天咱们就一起来深入学习这两个知识点,希望能和大家一起进步,让我们在C++编程的道路上走得更远!一、容器类的重要性与实际应用场景在C++编程中,容器类扮演着至关重要的角色。我们在编写程序时,经常会遇到需要处理大量数据或者管理多个对象的情况。比如开发一个学生信息管理系统,需
零基础学Python图片处理:用Pillow库轻松玩转修图
小彭爱学习
python python pillow python处理图片
零基础学Python图片处理:用Pillow库轻松玩转修图一、初识Pillow:你的第一张数码暗房安装准备(只需要1分钟)打开电脑的命令行(Windows按Win+R输入cmd,Mac打开终端),输入:pipinstallpillow看到「SuccessfullyinstalledPillow-x.x.x」就安装成功啦!图片处理四步走打开图片:像打开文件柜一样找到图片修改图片:裁剪、调色、加特效查
跟我一起学Python数据处理(七十四):数据处理工具与网页抓取入门
lilye66
python jupyter 开发语言 爬虫
跟我一起学Python数据处理(七十四):数据处理工具与网页抓取入门大家好!一直以来,我都坚信在学习的道路上,相互交流和共同进步是非常重要的。在Python数据处理这片充满挑战与机遇的领域,我也在持续学习和探索,希望借由这一系列的博客,能和大家一起深入钻研,共同成长。在上一篇博客中,我们学习了Jupyternotebook的相关知识,今天咱们接着来了解Python数据处理中的其他关键内容,包括一些
Python从0到100(四):Python中的运算符介绍(补充)
是Dream呀
python java 数据库
前言:零基础学Python:Python从0到100最新最全教程。想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学习学习和学业的先行者!欢迎大家订阅专栏:零基础学Python:Python从0到100最新
Python从0到100(三十五):beautifulsoup的学习
是Dream呀
Dream的茶话会 python beautifulsoup 学习
前言:零基础学Python:Python从0到100最新最全教程。想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学习学习和学业的先行者!欢迎大家订阅专栏:零基础学Python:Python从0到100最新
【JAVA工程师从0开始学AI】,第五步:Python类的“七十二变“——当Java的铠甲遇见Python的液态金属
架构默片
JAVA工程师从0开始学AI python java 开发语言
副标题:从继承大战到猴子补丁,看动态类型如何颠覆面向对象认知当Java工程师还在为implements和extends绞尽脑汁时,Python的类已化身"终结者T-1000",在代码世界肆意变形。这里没有private的保险箱,super()能穿越多重继承时空,甚至能在运行时给类"整容换脑"。本文将用五个震撼场景,带你体验Python面向对象编程的"量子纠缠"——原来类的__init__只是开始,
流形拓扑学:Chern数与Euler示性数
AI天才研究院
DeepSeek R1 & 大数据AI人工智能大模型 AI大模型企业级应用开发实战 AI大模型应用入门实战与进阶 计算科学 神经计算 深度学习 神经网络 大数据 人工智能 大型语言模型 AI AGI LLM Java Python 架构设计 Agent RPA
流形拓扑学:Chern数与Euler示性数1.背景介绍流形拓扑学是数学中一个重要的分支,研究流形的拓扑性质。流形是局部类似于欧几里得空间的空间,广泛应用于物理学、计算机科学和工程学等领域。Chern数和Euler示性数是流形拓扑学中的两个重要不变量,它们在描述流形的几何和拓扑性质方面起着关键作用。Chern数是由中国数学家陈省身提出的,主要用于描述复流形的特征类。Euler示性数则是一个更为古老的
DeepSeek 本地部署硬件配置全解析
喜-喜
人工智能 深度学习 DeepSeek配置要求
DeepSeek这个开源界的“学霸”,凭借低成本和高性能,收获了超多关注。不少朋友都想把它“请回家”,在本地部署,享受离线使用、更好的数据安全和隐私保护这些福利。今天就来唠唠请DeepSeek“回家”需要准备哪些硬件“装备”。DeepSeek简介DeepSeek可是个厉害角色,在各种应用场景里都能大显身手,提供超准确的预测和分析。而且它可“省钱”了,预训练费用还不到OpenAIGPT-4o模型的十
闵氏几何详解
aichitang2024
算法 数学知识点讲解 几何学 闵可夫斯基几何
闵氏几何详解闵氏几何(Minkowskigeometry)最初由数学家赫尔曼·闵可夫斯基(HermannMinkowski)提出,是现代几何学和理论物理的重要分支。它既与爱因斯坦的狭义相对论密切相关,也在更普遍的度量空间研究中占有显赫地位。本文将对闵氏几何的基础概念、结构、在物理中的用途以及与其他几何的对比等方面进行详细介绍。一、历史背景与概念渊源提出背景19世纪末到20世纪初,数学家们在研究欧几
[从零开始的 Vue3 系列]:第四章——Vue3 中常用组件通信全解析
花信少年plus
从零开始的vue3 系列 vue.js javascript 前端
前言本系列将从零开始,系统性地介绍Vue3的常用API,逐步深入每个核心概念与功能模块。通过详尽的讲解与实战演示,帮助大家掌握Vue3的基础与进阶知识,最终具备独立搭建完整Vue3项目的能力。vue3中的组件通信Vue3提供了多种方式来进行组件之间的通信。根据场景的不同,开发者可以选择最合适的方式进行数据的传递与事件的处理。1.通过Props传递数据(父->子)父组件:importChildCom
SpringBoot 新手入门(实操)
李恩11
spring boot 后端 java
SpringBoot是一个开源框架,旨在简化基于Spring的Java应用程序的开发。它通过提供一系列默认配置和约定大于配置的理念,让开发者可以更快速地创建和部署应用。以下是一个SpringBoot新手入门的实操指南,帮助你从零开始创建一个简单的SpringBoot应用程序。环境准备安装JDK:SpringBoot需要JavaDevelopmentKit(JDK)8或更高版本。你可以从Oracle
C++中memset函数的用法
MatthewMao
C++使用积累 C语言使用积累 C++ memset函数 初始化字符串或
//复习数组的时候,第一次见到了memset,学之。memset:char型初始化函数头文件:或函数原型:void*memset(void*s,intch,size_tn)memset(结构体/数组名,用于替换的ASCII码对应字符,前n个字符);memset(结构体/数组名,"用于替换的字符“,前n个字符);函数解释:将s中的前n个字节用ch替换并且返回s函数作用:在一段内存块中填充某一个给定的
从零开始设计和实现一个 Python 下的 DAG(有向无环图)
Java八股文面试
python 开发语言
我们一起来从零开始设计和实现一个Python下的DAG(有向无环图),并结合GitHub上常见的代码模式进行优化。第一步:理解DAG的基本概念和需求首先,我们需要明确DAG的核心概念:节点(Node):代表任务或者操作。有向边(DirectedEdge):表示节点之间的依赖关系,从一个节点指向另一个节点,意味着前者必须在后者之前完成。无环(Acyclic):图中不存在从某个节点出发,经过一系列边最
从零开始部署DeepSeek:基于Ollama+Flask的本地化AI对话系统
arbboter
flask 人工智能 python ollama deepseek
从零开始部署DeepSeek:基于Ollama+Flask的本地化AI对话系统一、部署背景与工具选型在AI大模型遍地开花的2025年,DeepSeekR1凭借其出色的推理能力和开源特性成为开发者首选。本文将以零基础视角,通过以下工具链实现本地化部署:1.Ollama:轻量级模型管理工具,支持一键拉取、运行模型Ollama是一个功能强大的大语言模型管理端,专为下载、运行和调用大型语言模型(如Deep
从开发一个插件看,安卓gradle插件适配AGP8.0
盛夏的凉
Android gradle android gradle
transformAPI没学会?不用学了,AsmClassVisitorFactory更简单前言从零开始,构建一个兼容AGP8.0的插件插件发布为什么适配AGP8.0没用8.0.0版本?同一插件如何注册多个转换任务/顺序执行多个转换任务InstrumentationParameters,插件配置参数更新总结实例代码参考链接前言相信很多小伙伴项目还没有升级AGP7.0,可是最新的AGP已经到8.2了
本地部署Deepseek:从零开始,打造你的私人AI助手!
软件求生
# 工作建议 架构 微服务 云原生 java 开发语言
大家好,我是小米,一个31岁、热爱技术的“技术宅”。今天我要和大家分享一个超级酷炫的技术——本地部署Deepseek!如果你对AI感兴趣,或者想拥有一个属于自己的私人AI助手,那这篇文章绝对不容错过!Deepseek是什么?在开始之前,我们先来聊聊Deepseek到底是什么。简单来说,Deepseek是一个基于深度学习的AI模型,它可以帮助你完成各种任务,比如自然语言处理、图像识别、数据分析等等。
2025零基础入门学网络安全(详细),看这篇就够了
QXXXD
算法 安全 web安全 学习 wireshark 测试工具 服务器
写在前面2025年的春季招聘即将开启,对于计算机专业的毕业生目录1.什么是网络安全1.1网络安全的定义:1.2信息系统(InformationSystem)1.3信息系统安全三要素(CIA)1.4网络空间安全1.5国家网络空间安全战略1.6网络空间关注点1.7网络空间安全管理流程2.网络安全术语3.网络安全学习路线3.1安全基础:3.2渗透技术:3.2.1配置渗透环境:3.2.2渗透实战操作:3.
零基础被迫参加CTF比赛?CTF高频解题技巧与经验分享
网络安全宇哥
经验分享 web安全 安全 网络 安全架构
CTF(CaptureTheFlag)比赛中的高频解题技巧通常涵盖了以下几类技术,涉及从逆向工程、二进制漏洞利用到Web安全、密码学等多个领域。以下是一些高频解题技巧:1.逆向工程(ReverseEngineering)静态分析:通过阅读二进制文件的源代码或反编译代码(如使用IDAPro、Ghidra、Radare2)来理解程序的逻辑。检查程序的函数、字符串和常量,寻找可能的线索。动态调试:使用g
超详细教程:手把手教你在 App Store 添加内购功能(从零开始到上线)” “新手必看!一文搞定 iOS 内购功能:完整步骤与代码解析” “不懂代码也能看懂!带你逐步实现 App 内购(In-Ap
南北极之间
web前端特效源码 ios 前端 javascript 苹果支付 苹果商店 虚拟支付 苹果虚拟支付
目录什么是内购功能(In-AppPurchase)?实现内购功能前的准备工作(1)启用内购功能的前置条件(2)创建AppID并启用内购权限在AppStoreConnect中添加内购项目(1)内购类型的选择与区别(2)创建内购商品并填写相关信息使用代码实现内购功能测试内购功能(1)创建沙盒测试账号(2)如何在设备中登录测试账号提交审核总结与常见问题解答1.什么是内购功能(In-AppPurchase
用deepseek学大模型08-长短时记忆网络 (LSTM)
wyg_031113
lstm 人工智能 rnn
deepseek.com从入门到精通长短时记忆网络(LSTM),着重介绍的目标函数,损失函数,梯度下降标量和矩阵形式的数学推导,pytorch真实能跑的代码案例以及模型,数据,模型应用场景和优缺点,及如何改进解决及改进方法数据推导。从入门到精通长短时记忆网络(LSTM)参考:长短时记忆网络(LSTM)在序列数据处理中的优缺点分析1.LSTM核心机制LSTM通过门控机制(遗忘门、输入门、输出门)和细
用deepseek学大模型08-卷积神经网络(CNN)
wyg_031113
机器学习 人工智能
yuanbao.tencent.com从入门到精通卷积神经网络(CNN),着重介绍的目标函数,损失函数,梯度下降标量和矩阵形式的数学推导,pytorch真实能跑的代码案例以及模型,数据,预测结果的可视化展示,模型应用场景和优缺点,及如何改进解决及改进方法数据推导。一、目标函数与损失函数数学推导1.均方误差(MSE)标量形式:E(w)=12∑i=1N(yi−y^i)2E(\mathbf{w})=\f
【隐私保护】身份认证的基本概念
小oo呆
【隐私保护】 【学习心得】 密码学 安全 隐私保护
在之前的文章中有提到认证技术,那么之前提到的认证技术和身份认证技术有什么不同呢?身份认证技术的到底是什么呢?如果想更系统的学习身份认证建议把之前的文章看看:【密码学】密码协议【密码学】密码协议的分类:②认证协议我认为认证技术是一个更广的概念,它指的是在计算机网络中确认操作者身份的过程以及确保数据完整性和来源可靠性的方法。也就是认证技术要认证三个东西:消息认证(验证消息的完整性)、数据源认证(验证消
ASM系列四 利用Method 组件动态注入方法逻辑
lijingyao8206
字节码技术 jvm AOP 动态代理 ASM
这篇继续结合例子来深入了解下Method组件动态变更方法字节码的实现。通过前面一篇,知道ClassVisitor 的visitMethod()方法可以返回一个MethodVisitor的实例。那么我们也基本可以知道,同ClassVisitor改变类成员一样,MethodVIsistor如果需要改变方法成员,注入逻辑,也可以
java编程思想 --内部类
百合不是茶
java 内部类 匿名内部类
内部类;了解外部类 并能与之通信 内部类写出来的代码更加整洁与优雅
1,内部类的创建 内部类是创建在类中的
package com.wj.InsideClass;
/*
* 内部类的创建
*/
public class CreateInsideClass {
public CreateInsideClass(
web.xml报错
crabdave
web.xml
web.xml报错
The content of element type "web-app" must match "(icon?,display-
name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,s
泛型类的自定义
麦田的设计者
java android 泛型
为什么要定义泛型类,当类中要操作的引用数据类型不确定的时候。
采用泛型类,完成扩展。
例如有一个学生类
Student{
Student(){
System.out.println("I'm a student.....");
}
}
有一个老师类
CSS清除浮动的4中方法
IT独行者
JavaScript UI css
清除浮动这个问题,做前端的应该再熟悉不过了,咱是个新人,所以还是记个笔记,做个积累,努力学习向大神靠近。CSS清除浮动的方法网上一搜,大概有N多种,用过几种,说下个人感受。
1、结尾处加空div标签 clear:both 1 2 3 4
.div
1
{
background
:
#000080
;
border
:
1px
s
Cygwin使用windows的jdk 配置方法
_wy_
jdk windows cygwin
1.[vim /etc/profile]
JAVA_HOME="/cgydrive/d/Java/jdk1.6.0_43" (windows下jdk路径为D:\Java\jdk1.6.0_43)
PATH="$JAVA_HOME/bin:${PATH}"
CLAS
linux下安装maven
无量
maven linux 安装
Linux下安装maven(转) 1.首先到Maven官网
下载安装文件,目前最新版本为3.0.3,下载文件为
apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令;
2.进入下载文件夹,找到下载的文件,运行如下命令解压
tar -xvf apache-maven-2.2.1-bin.tar.gz
解压后的文件夹
tomcat的https 配置,syslog-ng配置
aichenglong
tomcat http跳转到https syslong-ng配置 syslog配置
1) tomcat配置https,以及http自动跳转到https的配置
1)TOMCAT_HOME目录下生成密钥(keytool是jdk中的命令)
keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit
关于领号活动总结
alafqq
活动
关于某彩票活动的总结
具体需求,每个用户进活动页面,领取一个号码,1000中的一个;
活动要求
1,随机性,一定要有随机性;
2,最少中奖概率,如果注数为3200注,则最多中4注
3,效率问题,(不能每个人来都产生一个随机数,这样效率不高);
4,支持断电(仍然从下一个开始),重启服务;(存数据库有点大材小用,因此不能存放在数据库)
解决方案
1,事先产生随机数1000个,并打
java数据结构 冒泡排序的遍历与排序
百合不是茶
java
java的冒泡排序是一种简单的排序规则
冒泡排序的原理:
比较两个相邻的数,首先将最大的排在第一个,第二次比较第二个 ,此后一样;
针对所有的元素重复以上的步骤,除了最后一个
例题;将int array[]
JS检查输入框输入的是否是数字的一种校验方法
bijian1013
js
如下是JS检查输入框输入的是否是数字的一种校验方法:
<form method=post target="_blank">
数字:<input type="text" name=num onkeypress="checkNum(this.form)"><br>
</form>
Test注解的两个属性:expected和timeout
bijian1013
java JUnit expected timeout
JUnit4:Test文档中的解释:
The Test annotation supports two optional parameters.
The first, expected, declares that a test method should throw an exception.
If it doesn't throw an exception or if it
[Gson二]继承关系的POJO的反序列化
bit1129
POJO
父类
package inheritance.test2;
import java.util.Map;
public class Model {
private String field1;
private String field2;
private Map<String, String> infoMap
【Spark八十四】Spark零碎知识点记录
bit1129
spark
1. ShuffleMapTask的shuffle数据在什么地方记录到MapOutputTracker中的
ShuffleMapTask的runTask方法负责写数据到shuffle map文件中。当任务执行完成成功,DAGScheduler会收到通知,在DAGScheduler的handleTaskCompletion方法中完成记录到MapOutputTracker中
WAS各种脚本作用大全
ronin47
WAS 脚本
http://www.ibm.com/developerworks/cn/websphere/library/samples/SampleScripts.html
无意中,在WAS官网上发现的各种脚本作用,感觉很有作用,先与各位分享一下
获取下载
这些示例 jacl 和 Jython 脚本可用于在 WebSphere Application Server 的不同版本中自
java-12.求 1+2+3+..n不能使用乘除法、 for 、 while 、 if 、 else 、 switch 、 case 等关键字以及条件判断语句
bylijinnan
switch
借鉴网上的思路,用java实现:
public class NoIfWhile {
/**
* @param args
*
* find x=1+2+3+....n
*/
public static void main(String[] args) {
int n=10;
int re=find(n);
System.o
Netty源码学习-ObjectEncoder和ObjectDecoder
bylijinnan
java netty
Netty中传递对象的思路很直观:
Netty中数据的传递是基于ChannelBuffer(也就是byte[]);
那把对象序列化为字节流,就可以在Netty中传递对象了
相应的从ChannelBuffer恢复对象,就是反序列化的过程
Netty已经封装好ObjectEncoder和ObjectDecoder
先看ObjectEncoder
ObjectEncoder是往外发送
spring 定时任务中cronExpression表达式含义
chicony
cronExpression
一个cron表达式有6个必选的元素和一个可选的元素,各个元素之间是以空格分隔的,从左至右,这些元素的含义如下表所示:
代表含义 是否必须 允许的取值范围 &nb
Nutz配置Jndi
ctrain
JNDI
1、使用JNDI获取指定资源:
var ioc = {
dao : {
type :"org.nutz.dao.impl.NutDao",
args : [ {jndi :"jdbc/dataSource"} ]
}
}
以上方法,仅需要在容器中配置好数据源,注入到NutDao即可.
解决 /bin/sh^M: bad interpreter: No such file or directory
daizj
shell
在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。
分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。
解决:
1)在windows下转换:
利用一些编辑器如UltraEdit或EditPlus等工具
[转]for 循环为何可恨?
dcj3sjt126com
程序员 读书
Java的闭包(Closure)特征最近成为了一个热门话题。 一些精英正在起草一份议案,要在Java将来的版本中加入闭包特征。 然而,提议中的闭包语法以及语言上的这种扩充受到了众多Java程序员的猛烈抨击。
不久前,出版过数十本编程书籍的大作家Elliotte Rusty Harold发表了对Java中闭包的价值的质疑。 尤其是他问道“for 循环为何可恨?”[http://ju
Android实用小技巧
dcj3sjt126com
android
1、去掉所有Activity界面的标题栏
修改AndroidManifest.xml 在application 标签中添加android:theme="@android:style/Theme.NoTitleBar"
2、去掉所有Activity界面的TitleBar 和StatusBar
修改AndroidManifes
Oracle 复习笔记之序列
eksliang
Oracle 序列 sequence Oracle sequence
转载请出自出处:http://eksliang.iteye.com/blog/2098859
1.序列的作用
序列是用于生成唯一、连续序号的对象
一般用序列来充当数据库表的主键值
2.创建序列语法如下:
create sequence s_emp
start with 1 --开始值
increment by 1 --増长值
maxval
有“品”的程序员
gongmeitao
工作
完美程序员的10种品质
完美程序员的每种品质都有一个范围,这个范围取决于具体的问题和背景。没有能解决所有问题的
完美程序员(至少在我们这个星球上),并且对于特定问题,完美程序员应该具有以下品质:
1. 才智非凡- 能够理解问题、能够用清晰可读的代码翻译并表达想法、善于分析并且逻辑思维能力强
(范围:用简单方式解决复杂问题)
使用KeleyiSQLHelper类进行分页查询
hvt
sql .net C# asp.net hovertree
本文适用于sql server单主键表或者视图进行分页查询,支持多字段排序。KeleyiSQLHelper类的最新代码请到http://hovertree.codeplex.com/SourceControl/latest下载整个解决方案源代码查看。或者直接在线查看类的代码:http://hovertree.codeplex.com/SourceControl/latest#HoverTree.D
SVG 教程 (三)圆形,椭圆,直线
天梯梦
svg
SVG <circle> SVG 圆形 - <circle>
<circle> 标签可用来创建一个圆:
下面是SVG代码:
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<circle cx="100" c
链表栈
luyulong
java 数据结构
public class Node {
private Object object;
private Node next;
public Node() {
this.next = null;
this.object = null;
}
public Object getObject() {
return object;
}
public
基础数据结构和算法十:2-3 search tree
sunwinner
Algorithm 2-3 search tree
Binary search tree works well for a wide variety of applications, but they have poor worst-case performance. Now we introduce a type of binary search tree where costs are guaranteed to be loga
spring配置定时任务
stunizhengjia
spring timer
最近因工作的需要,用到了spring的定时任务的功能,觉得spring还是很智能化的,只需要配置一下配置文件就可以了,在此记录一下,以便以后用到:
//------------------------定时任务调用的方法------------------------------
/**
* 存储过程定时器
*/
publi
ITeye 8月技术图书有奖试读获奖名单公布
ITeye管理员
活动
ITeye携手博文视点举办的8月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。
8月试读活动回顾:
http://webmaster.iteye.com/blog/2102830
本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):
《跨终端Web》
gleams:http