Python中输入和输出

				版权声明:本文为博主原创文章,未经博主允许不得转载。					https://blog.csdn.net/xiaokang123456kao/article/details/73009480				</div><link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css"><div id="content_views" class="markdown_views"><!-- flowchart 箭头图标 勿删 --><svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg><h2 id="一标准输入输出"><a name="t0"></a>一、标准输入输出</h2>

1、打印到屏幕

产生输出的最简单方法是使用print语句,可以通过用逗号分隔零个或多个表达式。这个函数传递表达式转换为一个字符串,如下结果写到标准输出 -

print ("Python is really a great language,", "isn't it?")
  • 1

这将产生以下结果标准屏幕上 :

Python is really a great language, isn't it?
  • 1

2、读取键盘输入

Python2中有两个内置的函数可从标准输入读取数据,它默认来自键盘。这些函数分别是:input() 和 raw_input()。
但在Python3中,raw_input()函数已被弃用。此外, input() 函数是从键盘作为字符串读取数据,不论是否使用引号(”或“”)。
示例:

x=input("请输入x=")
y=input("请输入y=")
z=x+y
print("x+y="+z)
  • 1
  • 2
  • 3
  • 4
  • 5

运行结果:

请输入x=111
请输入y=222
x+y=111222
  • 1
  • 2
  • 3

可以看到input的返回值永远是字符串,当我们需要返回int型时需要使用int(input())的形式,例如:

x=int(input("请输入x="))
y=int(input("请输入y="))
z=x+y
print("x+y=",z)
  • 1
  • 2
  • 3
  • 4
  • 5

运行结果如下:

请输入x=111
请输入y=222
x+y= 333
  • 1
  • 2
  • 3

3、格式化输出

一般来说,我们希望更多的控制输出格式,而不是简单的以空格分割。这里有两种方式:
第一种是由你自己控制。使用字符串切片、连接操作以及 string 包含的一些有用的操作。
示例:

# 第一种方式:自己控制 
for x in range(1, 11): print(str(x).rjust(2), str(x*x).rjust(3), end=' ') print(str(x*x*x).rjust(4)) 
  • 1
  • 2
  • 3
  • 4

输出:

 1   1    12   4    83   9   274  16   645  25  1256  36  2167  49  3438  64  5129  81  729
10 100 1000
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

第一种方式中,字符串对象的 str.rjust() 方法的作用是将字符串靠右,并默认在左边填充空格,所占长度由参数指定,类似的方法还有 str.ljust() 和 str.center() 。这些方法并不会写任何东西,它们仅仅返回新的字符串,如果输入很长,它们并不会截断字符串。
第二种是使用str.format()方法。
用法:它通过{}:来代替传统%方式

  • 使用位置参数

要点:从以下例子可以看出位置参数不受顺序约束,且可以为{},只要format里有相对应的参数值即可,参数索引从0开,传入位置参数列表可用*列表的形式。

>>> li = ['hoho',18]
>>> 'my name is {} ,age {}'.format('hoho',18)
'my name is hoho ,age 18'
>>> 'my name is {1} ,age {0}'.format(10,'hoho')
'my name is hoho ,age 10'
>>> 'my name is {1} ,age {0} {1}'.format(10,'hoho')
'my name is hoho ,age 10 hoho'
>>> 'my name is {} ,age {}'.format(*li)
'my name is hoho ,age 18'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 使用关键字参数

要点:关键字参数值要对得上,可用字典当关键字参数传入值,字典前加**即可

>>> hash = {'name':'hoho','age':18}
>>> 'my name is {name},age is {age}'.format(name='hoho',age=19)
'my name is hoho,age is 19'
>>> 'my name is {name},age is {age}'.format(**hash)
'my name is hoho,age is 18'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 填充与格式化

格式:{0:[填充字符][对齐方式 <^>][宽度]}.format()

>>> '{0:*>10}'.format(20)  ##右对齐
'********20'
>>> '{0:*<10}'.format(20)  ##左对齐
'20********'
>>> '{0:*^10}'.format(20)  ##居中对齐
'****20****'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 精度与进制
>>> '{0:.2f}'.format(1/3)
'0.33'
>>> '{0:b}'.format(10)    #二进制
'1010'
>>> '{0:o}'.format(10)     #八进制
'12'
>>> '{0:x}'.format(10)     #16进制
'a'
>>> '{:,}'.format(12369132698)  #千分位格式化
'12,369,132,698'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 使用索引
>>> li
['hoho', 18]
>>> 'name is {0[0]} age is {0[1]}'.format(li)
'name is hoho age is 18
  • 1
  • 2
  • 3
  • 4

二、文件IO

Python提供了基本的功能和必要的默认操作文件的方法。使用一个 file 对象来做大部分的文件操作。

1、open 函数

在读取或写入一个文件之前,你必须使用 Python 内置open()函数来打开它。 该函数创建一个文件对象,这将被用来调用与它相关的其他支持方式。
语法:

file object = open(file_name [, access_mode][, buffering])
  • 1

下面是参数的详细信息:
file_name: 文件名(file_name )参数是包含您要访问的文件名的字符串值。
access_mode: access_mode指定该文件已被打开,即读,写,追加等方式。可能值的完整列表,在表中如下。这是可选的参数,默认文件访问模式是读(r)。
这里写图片描述
buffering: 如果该缓冲值被设置为0,则表示不使用缓冲。如果该缓冲值是1,则在访问一个文件进行时行缓冲。如果指定缓冲值大于1的整数,缓冲使用所指示的缓冲器大小进行。如果是负数,缓冲区大小是系统默认的(默认行为)。

通常,文件以文本的形式打开,这意味着,你从文件读出和向文件写入的字符串会被特定的编码方式(默认是UTF-8)编码。
模式后面可以追加参数 ‘b’ 表示以二进制模式打开文件:数据会以字节对象的形式读出和写入。这种模式应该用于所有不包含文本的文件。在文本模式下,读取时默认会将平台有关的行结束符(Unix上是 \n , Windows上是 \r\n)转换为 \n。在文本模式下写入时,默认会将出现的 \n 转换成平台有关的行结束符。这种暗地里的修改对 ASCII 文本文件没有问题,但会损坏 JPEG 或 EXE 这样的二进制文件中的数据。使用二进制模式读写此类文件时要特别小心。

2、file 对象属性

一旦文件被打开,则就会有一个文件对象,你就可以得到有关该文件的各种信息。
file.closed:如果文件被关闭返回true,否则为false
file.mode :返回文件打开访问模式
file.name :返回文件名

测试:

# Open a file
fo = open("foo.txt", "wb")
print ("Name of the file: ", fo.name)
print ("Closed or not : ", fo.closed)
print ("Opening mode : ", fo.mode)
fo.close()
print ("Closed or not : ", fo.closed)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

运行结果:

Name of the file:  foo.txt
Closed or not :  False
Opening mode :  wb
Closed or not :  True
  • 1
  • 2
  • 3
  • 4

3、file对象的方法

假设已经创建了一个称为 f 的文件对象。

  • f.read()

为了读取一个文件的内容,调用 f.read(size), 这将读取一定数目的数据, 然后作为字符串或字节对象返回。
size 是一个可选的数字类型的参数。 当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。
以下实例假定文件 foo.txt 已存在且内容如下:

Hello World!
Hello Python!
  • 1
  • 2

代码如下:

# 打开一个文件
f = open("foo.txt", "r",encoding= 'UTF-8')str = f.read()
print(str)# 关闭打开的文件
f.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

执行以上程序,输出结果为:

Hello World!
Hello Python!
  • 1
  • 2
  • f.readline()

f.readline() 会从文件中读取单独的一行。换行符为 ‘\n’。f.readline() 如果返回一个空字符串, 说明已经已经读取到最后一行。

# 打开一个文件
f = open("foo.txt", "r",encoding= 'UTF-8')
str = f.readline()
print(str)
# 关闭打开的文件
f.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

执行以上程序,输出结果为:

Hello World!
  • 1
  • f.readlines()

f.readlines() 将返回该文件中包含的所有行。
如果设置可选参数 sizehint, 则读取指定长度的字节, 并且将这些字节按行分割。

# 打开一个文件
f = open("foo.txt", "r",encoding= 'UTF-8')
str = f.readlines()
print(str)
# 关闭打开的文件
f.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

执行以上程序,输出结果为:

['Hello World!\n', 'Hello Python!']
  • 1

另一种方式是迭代一个文件对象然后读取每行:

# 打开一个文件
f = open("foo.txt", "r",encoding="UTF-8")
for line in f:print(line, end='')
# 关闭打开的文件
f.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

执行以上程序,输出结果为:

Hello World!
Hello Python!
  • 1
  • 2

这个方法很简单, 但是并没有提供一个很好的控制。 因为两者的处理机制不同, 最好不要混用。

  • f.write()

f.write(string) 将 string 写入到文件中, 然后返回写入的字符数。

# 打开一个文件
f = open("foo.txt", "w",encoding="UTF-8")
num = f.write( "Python 是一个非常好的语言。\n是的,的确非常好!!\n" )
print(num)
# 关闭打开的文件
f.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

执行以上程序,输出结果为:

29
  • 1

打开foo.txt其内容如下:

Python 是一个非常好的语言。
是的,的确非常好!!
  • 1
  • 2
  • 3

如果要写入一些不是字符串的东西, 那么将需要先进行转换:

# 打开一个文件
f = open("foo.txt", "w",encoding="UTF-8")
value = ('www.baidu.com', 666)
s = str(value)
f.write(s)
# 关闭打开的文件
f.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

执行以上程序,打开 foo.txt 文件:

('www.baidu.com', 666)
  • 1
  • f.tell()

f.tell() 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数。

  • f.seek()

如果要改变文件当前的位置, 可以使用 f.seek(offset, from_what) 函数。
from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾,例如:
seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符
seek(x,1) : 表示从当前位置往后移动x个字符
seek(-x,2):表示从文件的结尾往前移动x个字符
from_what 值为默认为0,即文件开头。下面给出一个完整的例子:

>>> f = open('foo.txt', 'rb+')
>>> f.write(b'0123456789abcdef')
16
>>> f.seek(5)     # 移动到文件的第六个字节
5
>>> f.read(1)
b'5'
>>> f.seek(-3, 2) # 移动到文件的倒数第三字节
13
>>> f.read(1)
b'd'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在文本文件中 (那些打开文件的模式下没有 b 的), 只会相对于文件起始位置进行定位。
当你处理完一个文件后, 调用 f.close() 来关闭文件并释放系统的资源,如果尝试再调用该文件,则会抛出异常。

>>> f.close()
>>> f.read()
Traceback (most recent call last):File "<stdin>", line 1, in ?
ValueError: I/O operation on closed file
  • 1
  • 2
  • 3
  • 4
  • 5

当处理一个文件对象时, 使用 with 关键字是非常好的方式。在结束后, 它会帮你正确的关闭文件。 而且写起来也比 try - finally 语句块要简短:

>>> with open('/tmp/foo.txt', 'r') as f:
...     read_data = f.read()
>>> f.closed
True
  • 1
  • 2
  • 3
  • 4

4、使用 json 存储结构化数据

从文件中读写字符串很容易。数值就要多费点儿周折,因为 read() 方法只会返回字符串,应将其传入 int() 这样的函数,就可以将 ‘123’ 这样的字符串转换为对应的数值 123。当你想要保存更为复杂的数据类型,例如嵌套的列表和字典,手工解析和序列化它们将变得更复杂。
Python 允许你使用常用的数据交换格式 JSON(JavaScript Object Notation)。标准模块 json 可以接受 Python 数据结构,并将它们转换为字符串表示形式;此过程称为 序列化。从字符串表示形式重新构建数据结构称为 反序列化。序列化和反序列化的过程中,表示该对象的字符串可以存储在文件或数据中,也可以通过网络连接传送给远程的机器。
如果你有一个对象 x,你可以用简单的一行代码查看其 JSON 字符串表示形式:

>>> json.dumps([1, 'simple', 'list'])
'[1, "simple", "list"]'
  • 1
  • 2

dumps() 函数的另外一个变体 dump(),直接将对象序列化到一个文件。所以如果 f 是为写入而打开的一个 文件对象,我们可以这样做:

json.dump(x, f)
  • 1

为了重新解码对象可以采用:

x = json.load(f)
  • 1

我们来编写一个存储一组数字的简短程序,再编写一个将这些数字读取到内存中的程序,第一个程序使用json.dump()来储存这组数字,第二个程序将使用json.load()
函数json.dump()接受两个实参:要储存的数据以及可以用于存储数据的文件对象。下面是演示

  • 示例一
import json
number = [1,2,3,5]
file_name = 'number.json' #通过扩展名指纹文件存储的数据为json格式
with open(file_name,'w') as file_object:json.dump(number,file_object)
  • 1
  • 2
  • 3
  • 4
  • 5

我们先导入json模块,再创建一个是数字列表,我们指定存放在number.json里,文件后缀是.json来指出文件存储的数据是json格式,我们再以写入模式打开文件,让json能见数据写入其中使用json.dump()将数据写入,我们没有写输出语句,打开这个文件查看,数据存储的格式与python一样。
注意json.dump()方法,传递两个参数 第一个要写入的数据,第二个要存储的位置的文件对象。

  • 示例二

再写一个程序,使用json.load()读取到内存中

import json
file_name = 'number.json' #通过扩展名指纹文件存储的数据为json格式
with open(file_name,'r') as file_object:contents = json.load(file_object)
print(contents)
  • 1
  • 2
  • 3
  • 4
  • 5

这是在程序间共享数据的简单方式

  • 保存和读取用户生成的数据

对于用户输入的数据,用json来保存大有裨益,因为如果不以某种方式进行存储,等程序停止运行时用户的信息将丢失。 看一个例子
用户首次运行程序时被提示输入自己的名字,再次运行程序时就记住他了,我们先储存名字

ipt = input('enter your name')
filename1 = 'name.json'
with open(filename1,'w') as file_object:json.dump(ipt, file_object)
  • 1
  • 2
  • 3
  • 4

再读取之前存储的名字

with open(filename1,'r') as file_object:name_ipt = json.load(file_object)
print('wleccome %s'%name_ipt)
  • 1
  • 2
  • 3

我们将这两个程序合并到一个内,在执行的时候先去name.json尝试获得用户名,如果没有这文件,用try-except处理这个错误,并入用户输入名字并保存到name.json中

import json
filename1 = 'name.json'
try:with open(filename1)as file_object:username = json.load(file_object)
except FileNotFoundError:with open(filename1,'w') as file_object2:user_ipt = input('enter your name i will rember you: ')json.dump(user_ipt,file_object2)
else:print(username)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

三、OS模块常用方法

Python的os模块提供了执行文件处理操作,如重命名和删除文件的方法。要使用这个模块,需要先导入它,然后就可以调用任何相关的功能了。

1、重命名和删除文件

  • rename() 方法

rename()方法有两个参数,当前文件名和新的文件名。

os.rename(current_file_name, new_file_name)
  • 1

示例
以下为例子用来重命名现有文件 test1.txt 为 test2.txt:

#!/usr/bin/python3
import os# Rename a file from test1.txt to test2.txt
os.rename( "test1.txt", "test2.txt" )
  • 1
  • 2
  • 3
  • 4
  • 5
  • remove() 方法

可以使用 remove()方法通过提供参数文件名称(file_name)来删除文件。

os.remove(file_name)
  • 1

示例

下面是删除现有文件 test2.txt 的例子 -

#!/usr/bin/python3
import os# Delete file test2.txt
os.remove("text2.txt")
  • 1
  • 2
  • 3
  • 4
  • 5

2、Python目录

所有的文件都包含不同的目录中,Python处理这些目录操作也没有什么问题。os模块中有用于创建,删除和更改目录的几种方法。

  • mkdir() 方法

可以使用os模块中的 mkdir()方法在当前目录下创建目录。需要提供一个参数到这个方法指定要创建的目录名。

os.mkdir("newdir")
  • 1

示例

下面是在当前目录创建 test 目录的例子 -

#!/usr/bin/python3
import os# Create a directory "test"
os.mkdir("test")
  • 1
  • 2
  • 3
  • 4
  • 5
  • chdir() 方法

可以使用 chdir() 方法来改变当前目录。chdir() 方法接受一个参数,就是你想在当前目录创建的目录的目录名称。

os.chdir("newdir")
  • 1

示例

以下是进入 “/home/newdir” 目录的例子-

#!/usr/bin/python3
import os# Changing a directory to "/home/newdir"
os.chdir("/home/newdir")
  • 1
  • 2
  • 3
  • 4
  • 5
  • getcwd()方法

getcwd()方法显示当前的工作目录。

os.getcwd()
  • 1

示例

以下是获得当前目录的例子 -

#!/usr/bin/python3
import os# This would give location of the current directory
os.getcwd()
  • 1
  • 2
  • 3
  • 4
  • 5
  • rmdir() 方法

rmdir()方法删除目录,这是作为方法的参数传递。
删除目录前,它的所有内容应该先删除。

os.rmdir('dirname')
  • 1

示例
以下是删除 “/tmp/test” 目录的例子。它需要给定目录的完全合格的名称,否则会从当前目录搜索目录。

#!/usr/bin/python3
import os# This would  remove "/tmp/test"  directory.
os.rmdir( "/tmp/test"  )
  • 1
  • 2
  • 3
  • 4
  • 5
					<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-258a4616f7.css" rel="stylesheet"></div>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

刘志明 | 知识图谱及金融相关

本文转载自公众号&#xff1a;挖地兔&#xff0c;本文的作者刘志明先生也是 Tushare 的作者。 Tushare 是一个基于 Python 语言的免费、开源的财经数据接口包&#xff0c;可以为金融量化分析人员提供快速、整洁和多样的结构化数据&#xff0c;帮助量化投资人员节省数据采集和清…

模型训练太慢?显存不够用?这个算法让你的GPU老树开新花

一只小狐狸带你解锁NLP/ML/DL秘籍作者&#xff1a;小鹿鹿鹿&#xff0c;夕小瑶老板&#xff0c;咱们就一台Titan Xp&#xff0c;训不动BERT呀没钱买机器&#xff0c;自己想办法。委屈T^T我听说混合精度训练可以从算法上缓解这个问题&#xff1f;喵喵喵&#xff1f;&#xff1f;…

我对Spring的理解

1、什么是Spring&#xff1f; Spring是Java企业级应用的开源开发框架。Spring主要用来开发Java应用&#xff0c;但是有些扩展是针对构建J2EE平台的web应用。Spring框架目标是简化Java企业级应用开发&#xff0c;并通过POJO为基础的编程模型促进良好的编程习惯。 2、使用Spring…

k-means+python︱scikit-learn中的KMeans聚类实现( + MiniBatchKMeans)

版权声明&#xff1a;博主原创文章&#xff0c;微信公众号&#xff1a;素质云笔记,转载请注明来源“素质云博客”&#xff0c;谢谢合作&#xff01;&#xff01; https://blog.csdn.net/sinat_26917383/article/details/70240628 </div><link rel"stylesh…

想让推荐和搜索引擎更聪明?基于知识图谱的篇章标签生成

一只小狐狸带你解锁NLP/ML/DL秘籍正文来源&#xff1a;丁香园大数据NLP 老板&#xff5e;我们的推荐系统笨笨的你怎么对文档处理的这么糙&#xff01;抽个关键词就应付过去了&#xff1f;啊啊啊我错惹&#xff0c;那那&#xff0c;不用关键词用什么呢&#xff1f;知识图…

论文浅尝 | Dynamic Weighted Majority for Incremental Learning

Yang Lu , Yiu-ming Cheung , Yuan Yan Tang. Dynamic Weighted Majority for Incremental Learning ofImbalanced Data Streams with Concept Drift. In Proceedings of the Twenty-Sixth International Joint Conference on Artificial Intelligence (IJCAI-17)论文链接&…

【JavaWeb】数据库基础复习

1 MySQL 数据库特点&#xff1a; 持久化存储数据&#xff0c;数据库就是一个文件系统便于存储和管理数据使用统一的方式操作数据库 启动MySQL服务&#xff1a; 管理员cmd&#xff1a;net start mysql 停止MySQL服务&#xff1a; 管理员cmd&#xff1a;net stop mysql 打开服…

Python的多行输入与多行输出

因为在OJ上做编程&#xff0c;要求标准输入&#xff0c;特别是多行输入。特意查了资料&#xff0c;自己验证了可行性。if __name__ "__main__":strList []for line in sys.stdin: #当没有接受到输入结束信号就一直遍历每一行tempStr line.split()#对字符串利用空…

微服务Dubbo和SpringCloud架构设计、优劣势比较

一、微服务介绍 微服务架构是互联网很热门的话题&#xff0c;是互联网技术发展的必然结果。它提倡将单一应用程序划分成一组小的服务&#xff0c;服务之间互相协调、互相配合&#xff0c;为用户提供最终价值。虽然微服务架构没有公认的技术标准和规范或者草案&#xff0c;但业界…

搜索引擎核心技术与算法 —— 词项词典与倒排索引优化

一只小狐狸带你解锁NLP/ML/DL秘籍作者&#xff1a;QvQ老板&#xff5e;我会写倒排索引啦&#xff01;我要把它放进咱们自研搜索引擎啦&#xff01;我呸&#xff01;你这种demo级代码&#xff0c;都不够当单元测试的&#xff01;嘤嘤嘤&#xff0c;课本上就是这样讲的呀?!来来&…

论文浅尝 | Distant Supervision for Relation Extraction

Citation: Ji,G., Liu, K., He, S., & Zhao, J. (2017). Distant Supervision for RelationExtraction with Sentence-Level Attention and Entity Descriptions. Ai,3060–3066.动机关系抽取的远程监督方法通过知识库与非结构化文本对其的方式&#xff0c;自动标注数据&am…

使用sklearn做单机特征工程

目录 1 特征工程是什么&#xff1f;2 数据预处理  2.1 无量纲化    2.1.1 标准化    2.1.2 区间缩放法    2.1.3 标准化与归一化的区别  2.2 对定量特征二值化  2.3 对定性特征哑编码  2.4 缺失值计算  2.5 数据变换  2.6 回顾3 特征选择  3.1 Filte…

【JavaWeb】JDBC的基本操作和事务控制+登录和转账案例

1 JDBC操作数据库 1.1 连接数据库 首先导入jar包到lib public class JdbcDemo1 {public static void main(String[] args) throws ClassNotFoundException, SQLException {//1.注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取数据库连接对象Connection…

Restful、SOAP、RPC、SOA、微服务之间的区别

一、介绍Restful、SOAP、RPC、SOA以及微服务 1.1、什么是Restful&#xff1f; Restful是一种架构设计风格&#xff0c;提供了设计原则和约束条件&#xff0c;而不是架构&#xff0c;而满足这些约束条件和原则的应用程序或设计就是 Restful架构或服务。 主要的设计原则&#xf…

详解深度语义匹配模型DSSM和他的兄弟姐妹

一只小狐狸带你解锁NLP/ML/DL秘籍正文作者&#xff1a;郭耀华正文来源&#xff1a;https://www.cnblogs.com/guoyaohua/p/9229190.html前言在NLP领域&#xff0c;语义相似度的计算一直是个难题&#xff1a;搜索场景下Query和Doc的语义相似度、feeds场景下Doc和Doc的语义相似度、…

行业新闻 | 阿里发力知识图谱研究 悉数囊括顶尖学者探讨合作

12 月 20 日&#xff0c;阿里巴巴联合中国中文信息学会语言与知识计算专委会(KG专委)举办的知识图谱研讨会在杭州召开。研讨会由阿里巴巴集团副总裁墙辉&#xff08;花名&#xff1a;玄难&#xff09;主持&#xff0c;国内知识图谱领域多位顶级专家参加此次研讨会。在阿里巴巴持…

【JavaWeb】JDBC优化 之 数据库连接池、Spring JDBC

1 数据库连接池 为什么要使用数据库连接池&#xff1f; 数据库连接是一件费时的操作&#xff0c;连接池可以使多个操作共享一个连接使用连接池可以提高对数据库连接资源的管理节约资源且高效 概念&#xff1a;数据库连接池其实就是一个容器&#xff0c;存放数据库连接的容器…

Java远程通讯技术及原理分析

在分布式服务框架中&#xff0c;一个最基础的问题就是远程服务是怎么通讯的&#xff0c;在Java领域中有很多可实现远程通讯的技术&#xff0c;例如&#xff1a;RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等&#xff0c;这些名词之间到底是些什么关系呢&#xff0c;它们背…

CUDA层硬件debug之路

前记 众所周知&#xff0c;夕小瑶是个做NLP的小可爱。 虽然懂点DL框架层知识&#xff0c;懂点CUDA和底层&#xff0c;但是我是做算法的哎&#xff0c;平时debug很少会遇到深度学习框架层的bug&#xff08;上一次还是三年前被pytorch坑&#xff09;&#xff0c;更从没遇到过CUDA…

研讨会 | 知识图谱大咖云集阿里,他们都说了啥

前言12月20日&#xff0c;由阿里巴巴联合中国中文信息学会语言与知识计算专委会(KG专委)举办的知识图谱研讨会在杭州召开。研讨会由阿里巴巴集团副总裁墙辉&#xff08;玄难&#xff09;主持&#xff0c;知识图谱领域国内知名专家参与了此次研讨。在阿里巴巴持续发力知识图谱这…