Python语言程序设计实验报告

news2024/11/24 6:01:54

第二章:Python变量与数据类型
一、实验目的:
1.了解Python变量的概念与相关含义;
2.学习Python中的数据类型;
二、实验环境:
1.笔记本电脑
2.PyCharm Community Edition 2022.2.3工具

三、实验内容:
1.将字符串“Nice To Meet You !”中的大写字母全部改为小写字母。

实验源代码:

str1 = "Nice To Meet You !"
str2 = "WWW.jrcg.com"
print(str1)
print("转换后:",str1.lower())
print(str2)
print("转换后:",str2.lower())

实验结果:
在这里插入图片描述

2.找出字符串“nice to meet you !”中t 的个数和位置。

实验源代码:

def get_1_pos(string):
    onePos = []
    try:
        onePos = list(((pos, int(val)) for pos, val in enumerate(string) if val == 't'))
    except:
        pass
    return onePos


def get_1_num(string):
    return len(list(get_1_pos(string)))


def get_char_pos(string, char):
    chPos = []
    try:
        chPos = list(((pos, char) for pos, val in enumerate(string) if (val == char)))
    except:
        pass
    return chPos


def get_char_num(string, char):
    return len(list(get_char_pos(string, char)))


if (__name__ == "__main__"):
    str0 = "10101010101010101"
    str1 = "nice to meet you !"
    lt = get_1_pos(str0)
    print(lt)
    lt = get_1_pos(str1)
    print(lt)
    num = get_1_num(str0)
    print(num)
    lt = get_char_pos(str1, 't')
    print(lt)
    num = get_char_num(str1, 't')
    print(num)

实验结果:
在这里插入图片描述

3.用random.randint()函数生成100个[1,100]的随机整数,去掉重复的元素,然后从小到大排序并输出。

实验源代码:

import random
NumList=[]
new_num_list=[]
for i in range(100):#生成100个随机数
    NumList.append(random.randint(1,100))
for i in NumList:#列表去重
    if i not in new_num_list:
        new_num_list.append(i)
new_num_list.sort()#从小到达排序
print(new_num_list)

实验结果:
在这里插入图片描述

4.请用户输入月份,然后返回该月份属于哪个季节。

实验源代码:

print("-------月份判断开始-------")
spring = [3,4,5]
summer = [6,7,8]
fall = [9,10,11]
winter = [12,1,2]
month = int(input("请输入月份判断该月季节:"))
if month in spring:
    print("{}月,为春季,春暖花开!".format(month))
elif month in summer:
    print("{}月,为夏季,夏日炎炎!".format(month))
elif month in fall:
    print("{}月,为秋季,秋高气爽!".format(month))
elif month in winter:
    print("{}月,为冬季,银装素裹!".format(month))
else :
    print("输入的月份有误")

实验结果:
在这里插入图片描述

第三章:Python流程控制语句
一、实验目的:
1.了解Python流程控制语句;
2.学习列表推导式;
二、实验环境:
1.笔记本电脑
2.PyCharm Community Edition 2022.2.3工具
三、实验内容:
1.显示斐波那契数列

实验源代码:

# 斐波那契数列
nterms = int(input("你需要几项?"))

# 第一和第二项
n1 = 0
n2 = 1
count = 2

# 判断输入的值是否合法
if nterms <= 0:
    print("请输入一个正整数。")
elif nterms == 1:
    print("斐波那契数列:")
    print(n1)
else:
    print("斐波那契数列:")
    print(n1, ",", n2, end=" , ")
    while count < nterms:
        nth = n1 + n2
        print(nth, end=" , ")
        # 更新值
        n1 = n2
        n2 = nth
        count += 1

实验结果:
在这里插入图片描述

2.找出100以内能被3或7整除的,但不能同时被3和7整除的自然数。

实验源代码:

num = 1
count = 0
# 循环条件
while num < 100:
    # 循环体,设置条件
    # 补全代码
    if (num % 3 == 0 or num % 7 == 0) and num % 21 != 0:
        count = count + 1

    num = num + 1
print(count)

实验结果:
在这里插入图片描述

3.输出九九乘法表。

实验源代码:

for i in range(1,10):

    for j in range(1,i+1):

        a=i*j

        """把待输出的结果按要求格式保存成字符串"""

        string=str(j)+'x'+str(i)+'=' +str(a) +'\t'

        """把字符串打印到屏幕上,但不输出换行符"""

        print(string,end='')

    """换行"""

print('')

实验结果:
在这里插入图片描述
4.给定一个正整数rows,生成rows行杨辉三角。

实验源代码:

def main():
    num = int(input('Number of rows: '))
    yh = [[]] * num
    for row in range(len(yh)):
        yh[row] = [None] * (row + 1)
        for col in range(len(yh[row])):
            if col == 0 or col == row:
                yh[row][col] = 1
            else:
                yh[row][col] = yh[row - 1][col] + yh[row - 1][col - 1]
            print(yh[row][col], end='\t')
        print()


if __name__ == '__main__':
    main()

实验结果:
在这里插入图片描述

第四章:函数、模块和包
一、实验目的:
1.了解Python模块化概念与相关含义;
2.学习Python模块化技术及其标准模块;
二、实验环境:
1.笔记本电脑
2.PyCharm Community Edition 2022.2.3工具

三、实验内容:
1.定义一个名为add_two_numbers的函数,有两个参数:a和b,计算并返回a和b的和。
实验源代码:

def add_two_numbers(a,b):
     sum=a+b
     return sum

c=add_two_numbers(a=4,b=5)
print(f'the sum of 4 and 5 is {c}')

实验结果:
在这里插入图片描述

2.Python解释器根据变量定义的位置判断变量是全局变量还是局部变量。
实验源代码:

x=10
def outer():
    x=20
    def inner():
        x=30
        print("From inner():x{0:d}".format(x))
    inner()
    print("From outer():x={0:d}".format(x))

outer()
print("From module:x={0:d}".format(x))

实验结果:
在这里插入图片描述

3.创建名为calculator的模块范例,里面包括语句,函数和类。
实验源代码:

print("hello from caculator.py!")

def add(a,b):
    return a+b

class striangle:
    
     pass

实验结果:
在这里插入图片描述

4.用calendar模块实现闰年检测。

实验源代码:

from calendar import isleap
y = int(input("请输入要判断的年份:"))
if isleap(y):
    print("是闰年")
else:
    print("不是闰年")

实验结果:
在这里插入图片描述

第五章:文件与目录操作
一、实验目的:
1.了解Python中的文件操作;
2.学习Python中的目录操作以及路径操作;
二、实验环境:
1.笔记本电脑
2.PyCharm Community Edition 2022.2.3工具

三、实验内容:

1.打开“write_example.txt”文件后,依次实现读取全部字符,读取三个字符,读取一行,读取三行,读取所有行。
实验源代码:

fo=open('D:\Download\write_example.txt','r',encoding='utf-8')
fo.read()
fo.seek(0)
fo.read(3)
fo.tell()
fo.seek(0)
fo.readline()
length=len('line\n'.strip())
fo.readlines(length*3)
fo.seek(0)
fo.readlines()

实验结果:
在这里插入图片描述

2:新建一个“write_example.txt”然后依次写入‘123456’,‘hello,world!’‘line1\n’,‘line2\n’,‘line3\n’
实验源代码:

fow= open ('D:\Download\write_example.txt','w',encoding='utf-8')

fow.write('123456')
fow.write('hello,world!\n')

fow.writelines(['line1\n','line2\n','line3\n'])

fow.close()

实验结果:
在这里插入图片描述

3:用with语句打开“write_example.txt”文件并读取全部行。
实验源代码:

with open ('D:\Download\write_example.txt','r',encoding='utf-8') as fo:
    for line in fo.readlines():
        print(line,end='')

fo.closed()
True

实验结果:
在这里插入图片描述

4:关闭文件对象的close()方法实现。
实验源代码:

fo=open('D:\Download\write_example.txt','r',encoding='utf-8')
fo.closed
False
fo.read()
'hello,world!'
fo.close()

fo.closed
True
fo.read()

实验结果:
在这里插入图片描述

第六章:类和对象
一、实验目的:
1.了解什么是类,如何定义和使用类;
2.学习类的高级操作;
二、实验环境:
1.笔记本电脑
2.PyCharm Community Edition 2022.2.3工具

三、实验内容:
1.定义一个圆类,属性有:半径r,初始值为1.0;方法有:设置半径值,获取半径值,计算周长,计算面积。
实验源代码:

from math import pi
class Circle():
    def _init_(self,r=1.0):
        self.r=r

    def get_radies(self):
        return self.r

    def set_radius(self,r):
     self.r=r

    def calc_circumference(self):
     return 2*pi*self.r

     def calc_area(self):
      return pi*self.r**2

实验结果:

在这里插入图片描述

2.Person类有属性name和age,方法say_hi()/Child类继承Person,并实例化一个Tony对象,执行say_hi方法。

实验源代码:

class Person():
 def __init__(self,name,age):
        self.name=name
        self.age=age
 def say_hi(self):
            print("Hi,I am {0:s} ,{1:d} years old.".format(self.name,self.age))

class Child(Person):
    pass
Tony=Child('Tony',5)

Tony.say_hi()

实验结果:
在这里插入图片描述

3.实例化一个Person类的时候,传入一个错误的年龄-20,这个错误无法被检查出来并处理,导致出现明显的错误。

实验代码:

class Person():
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def say_hi(self):
            print("I am {0:s},{1:d} years old.".format(self.name,self.age))

Tony =Person('Tony',-20)

Tony.say_hi()

实验结果:
在这里插入图片描述

4.用@property装饰器实现上题Person类中age属性的访问。
实验代码:

1:
class Person():
    def __init__(self,name,age):
        self.name=name
        self.age=age
    @property
    def age(self):
        return self._age
    @age.setter
    def age(self,age):
        if age<0:
            self._age=0
        elif age>200:
            self._age = 200
        else:
            self._age=age

    def say_hi(self):
            print("I am {0:s},{1:d} years old.".format(self.name,self.age))

Tony =Person('Tony',5)

Tony.say_hi()
2:
class Person():
    def __init__(self,name,age):
        self.name=name
        self.age=age
    @property
    def age(self):
        return self._age
    @age.setter
    def age(self,age):
        if age<0:
            self._age=0
        elif age>200:
            self._age = 200
        else:
            self._age=age

    def say_hi(self):
            print("I am {0:s},{1:d} years old.".format(self.name,self.age))

Tony =Person('Tony',5)
Tony.say_hi()

Tom=Person('Tom',-5)
Tom.say_hi()

Amy=Person('Amy',230)
Amy.say_hi()

print(Tony.age+Tom.age+Amy.age)

实验结果:
1:
在这里插入图片描述

2:
在这里插入图片描述

第七章:网络编程
一、实验目的:
1.了解网络编程的基础知识;
2.学习socket模块中套接字类和内建方法;
3.学习如何使用socket模块开发TCP服务器,UDP服务器和客户端程序;
二、实验环境:
1.笔记本电脑
2.PyCharm Community Edition 2022.2.3工具

三、实验内容:
1.查看Python的套接字socket模块提供的套接字类和套接字对象内置方法。

实验代码:

import socket
tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print(type(tcp_socket))

print(dir(socket.socket))

实验结果:
在这里插入图片描述

2.TCP服务器端范例代码。

实验源代码:

import socket
HOST='127.0.0.1'
PORT=65432
tcp_server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcp_server.bind((HOST,PORT))
tcp_server.listen()
print("Server starts listening ...")
conn,addr=tcp_server.accept()
print("Connected by",addr)
while True:
    data =conn.recv(1024)
    if data ==b'close':
          print('Server is closed!')
          break
    print(data)
    conn.sendall(data)
conn.close()
tcp_server.close()

实验结果:
在这里插入图片描述

3.用request库实现HTTP客户端抓取网页信息。
实验源代码:

import requests
HEADERS={
    'User-Agent':
     'Mozilla/5.0 (Windows NT 10.0; Win64;x64) AppleWebKit/537.36(KHTML,like Gecko)Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063'}
URL="http://www.baidu.com"

r=requests.get(url=URL,headers=HEADERS)
print(f"status code:{r.status_code};encoding:{r.encoding}")
print("HTTP Source Code:")
print(r.content.decode())

实验结果:
在这里插入图片描述

4.基于ThreadingTCPServer类的多线程并发服务器范例。

实验源代码:

import socketserver
class MyServer(socketserver.BaseRequestHandler):
    def handle(self):
         conn=self.request
         conn.sendall(b"Welcome ThreadTCPServer!")
         while True:
              data=conn.recv(1024)
              if data==b"close":
                    print('Connection is closed!')
                    break
              print("Recieve %s from %s" %(data,self.client_address))
              conn.sendall(data)
if __name__=='__main__':
 server=socketserver.ThreadingTCPServer(('127.0.0.1',65432),MyServer)
 print("Start ThreadTCPServer!")
server.serve_forever()

实验结果:
在这里插入图片描述

第八章:并发编程
一、实验目的:
1.了解进程和线程概念与相关含义;
2.学习基于并发编程的Process类和基于线程并发教程的Thread类;
3.学习多线程与多进程执行不同任务的性能比较;
二、实验环境:
1.笔记本电脑
2.PyCharm Community Edition 2022.2.3工具

三、实验内容:
1.使用Condition对象实现线程同步范例,创建一个生产者和五个消费者,五个消费者必须先等待生产者先生产,当生产者完成生产后,通知消费者消费。
实验源代码:

from threading import Thread,Condition
g_sum=0
def consumer(con,id):
    global g_sum
    with con:
        print('Consumer %s waiting ...'%(id))
        con.wait()
        g_sum-=1
        print('Consumer %s consumed one resource'%(id))
def producer(con):
    global g_sum
    with con:
        print('Producer produce ten resources')
        g_sum+=10
        con.notifyAll()
if __name__ == '__main__':
    con=Condition()
    cs=[Thread(target=consumer,args=(con,i))for i in range(5)]
    p=Thread(target=producer,args=(con,))
    for c in cs:
           c.start()
    p.start()
    for c in cs:
        c.join()
print("g_num is left:%s.Exit..." %(g_sum))

实验结果:
在这里插入图片描述

2.Lock对象实现线程同步的范例
实验源代码:
没有使用线程同步机制

from threading import  Thread
g_sum=0
sum=499995000000
def child_thread():
    global g_sum
    for i in range(100000):
        g_sum=g_sum+i

if __name__ == "__main__":
     threads=[Thread(target=child_thread)for i in range(100)]
     for t in threads:
         t.start()
     for t in threads:
         t.join()
     print("g_sum should be:%s;g_sum:%s" %(sum,g_sum))

使用线程同步机制

from threading import  Thread,Lock
g_sum=0
sum=499995000000
def child_thread():
    global g_sum
    lock.acquire()
    for i in range(100000):
        g_sum=g_sum+i
    lock.release()

if __name__ == "__main__":
     threads=[Thread(target=child_thread)for i in range(100)]
     lock = Lock()
     for t in threads:
            t.start()
     for t in threads:
            t.join()
            print("g_sum should be:%s;g_sum:%s" %(sum,g_sum))

实验结果:
没有使用线程同步机制
在这里插入图片描述

使用线程同步机制
在这里插入图片描述

3.使用pool类创建多进程的第二种方法是使用map_async()方法,把任务应用到可迭代对象的每一个元素上。
实验源代码:

from multiprocessing import Pool
import os,time
def task(id):
     print('child process %s works on the task %s' %(os.getpid(),id))
     time.sleep(2)

if __name__== "__main__":
      print("Parent Process %s starts" %os.getpid())
      p=Pool()
      p.map_async(task,range(20))
      p.close()
      p.join()
      print("Parent Process ends")

实验结果:
在这里插入图片描述

4.创建两个线程,一个线程负责向队列写入数据,命名为producer(生产者);一个线程负责从队列读取数据,命名为consumer(消费者);设置从队列读取数据的时间为2秒,若未能读取数据,则抛出异常。
实验源代码:

from threading import Thread
from queue import Queue
import os,time

def producer_task(q):
    for i in range(3):
        if not q.full():
            msg = "msg" + str(i)
            q.put(msg)
            print("producer puts:%s" % (msg))
        time.sleep(0.1)


def consumer_task(q):
    for i in range(3):
        msg = q.get(timeout=2)
        print("consumer gets:%s" %(msg))
        time.sleep(0.1)


if __name__=="__main__":
    print("Parent Process %s starts " %(os.getpid()))
    q = Queue()
    producer = Thread(target=producer_task, args=(q, ),name='producer')
    consumer = Thread(target=consumer_task, args=(q, ),name='consumer')

    producer.start()
    consumer.start()
    producer.join()
    consumer.join()
    print("Parent Process ends")

实验结果:

在这里插入图片描述

心得体会:
Python语言或许更适合作为一门入门语言。首先从从语法上讲,Python语言比现在很多作为第一编程语言(C/C++、Visual Basic等)要简单很多。其次,这种解释语言的机制,更能让初学者体验到学习成果,不需要了解很多东西,也能编出个小程序来,这个过程比其他语言要快和简单很多。再次,从自学或者教学的角度来讲,搭建Python的基础开发环境再简单不过了,只要安装一个十几兆的程序,就得到了一个命令行工具,一个简单的GUI的IDEL,还有其他文档等,这样不必把时间太多用在开发工具上了,而像学习C++等一般还要去逐步熟悉Visual C++等工具。此外,还有一点就是Python的学习很有弹性,你学一点就能做点东西,而想要深入研究仍然有无穷的方向可以选择,因为Python的应用范围就是很广阔。

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

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

相关文章

ZABBIX6.0LTS安装笔记

一、准备好干净的操作系统 推荐使用&#xff1a;Rocky Linux 8.6 二、安装ZABBIX 官网&#xff1a;https://www.zabbix.com/cn/download 【1】选择您Zabbix服务器的平台 【2】 安装Zabbix包 下载安装包源 # rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabb…

Spring的动态AOP源码解析

一… 引入 1.1 概念 1.2 注解方式使用AOP @Aspect public class LogAspects {/*** 1. 本类引用,只需要写方法名* 2. 其他类引用,需要写路径*/@Pointcut("execution(public int com.floweryu.aop.MathCalculator.*(..))")public void pointCut

Linux--进程间通信

目录1. 进程间通信目的2. 管道2.1 管道特性&#xff08;匿名管道&#xff09;2.1.1 单向通信2.1.2 面向字节流2.2 管道的大小2.3 命名管道3. system V进程间通信3.1 shmget函数3.1.1 key VS shmid3.2 shmctl函数3.3 shmat函数 VS shmdt函数&#xff1a;3.4 测试4. 感性认识4.1 …

R语言中的多类别问题的绩效衡量:F1-score 和广义AUC

最近我们被客户要求撰写关于分类的研究报告&#xff0c;包括一些图形和统计输出。对于分类问题&#xff0c;通常根据与分类器关联的混淆矩阵来定义分类器性能。根据混淆矩阵 &#xff0c;可以计算灵敏度&#xff08;召回率&#xff09;&#xff0c;特异性和精度。 对于二进制…

基于javaweb物业管理系统的设计与实现/小区物业管理系统

摘 要 随着世界经济快速的发展&#xff0c;全国各地的城市规模不断扩大&#xff0c;住进城市的人口日益增多&#xff0c;房地产行业在现代社会的发展中有着重要的作用&#xff0c;有越来越多的人居住在小区里。 因此&#xff0c;一套高效并且无差错的物业管理系统软件在现代社会…

基于Android的校园一卡通App平台

演示视频信息&#xff1a; A6604基于Android的校园一卡通一、研究背景、目的及意义 &#xff08;一&#xff09;研究背景 二十一世纪是信息化的时代&#xff0c;信息化建设成为我们的首要任务。当前我国大力发展信息产业&#xff0c;在全国范围内各行各业开始实施信息化…

为什么要上机械制造业ERP系统?对企业有什么帮助?

在日益竞争激烈的市场背景下&#xff0c;机械制造企业提供的产品需要具有更短的交货期、更高的质量、更好的服务。而机械行业由于其工艺复杂的生产特点&#xff0c;工艺及在制品管理困难&#xff0c;单纯的靠手工记账处理&#xff0c;已经难以满足现代企业科学管理的需要。只有…

艾美捷IFN-gamma体内抗体参数及应用

艾美捷IFN-gamma体内抗体背景&#xff1a; 干扰素γ&#xff08;IFN-γ&#xff09;或II型干扰素是一种二聚可溶性细胞因子&#xff0c;是II型干扰素的唯1成员。它是一种细胞因子&#xff0c;对抵抗病毒和细胞内细菌感染的先天性和适应性免疫以及肿瘤控制至关重要。IFNG主要由…

TensorFlow平台应用

目录 一&#xff1a;TensorFlow简介 二&#xff1a;TensorFlow工作形式 三&#xff1a;图/Session 四&#xff1a;安装tensorflow 五&#xff1a;张量 六&#xff1a;变量/常量 七&#xff1a;创建数据流图、会话 八&#xff1a;张量经典创建方法 九&#xff1a;变量赋…

[Java EE初阶]Thread 类的基本用法

本就无大事,庸人觅闲愁. 文章目录1. 线程创建2. 线程中断2.1 通知终止后立即终止2.2 通知终止,通知之后线程继续执行2.3 通知终止后,添加操作后终止3. 线程等待4. 线程休眠5. 获取线程实例1. 线程创建 创建线程有五个方法 详情见我的另一个文章 https://editor.csdn.net/md/?…

【K8S系列】第十二讲:Service进阶

目录 ​编辑 序言 1.Service介绍 1.1 什么是Service 1.2 Service 类型 1.2.1 NodePort 1.2.2 LoadBalancer 1.2.3 ExternalName 1.2.4 ClusterIP 2.yaml名词解释 3.投票 序言 当发现自己的才华撑不起野心时&#xff0c;就安静下来学习吧 三言两语&#xff0c;不如细…

Unity 灯光

初始化时&#xff0c;系统默认会给一个灯光&#xff0c;类型为定向光。 定向光意为&#xff0c;从无穷远处照射过来的平行光&#xff0c;因此每个图形的阴影的方向一致 灯光的系统参数 阴影类型&#xff1a;①无阴影 ②硬阴影 ③软阴影 &#xff08;注意&#xff09;阴影类型最…

力扣(LeetCode)164. 最大间距(C++)

桶排序(划分区间) 一次遍历找到区间内最大值 MaxMaxMax &#xff0c;最小值 MinMinMin 。区间 (Min,Max](Min,Max](Min,Max] 左开右闭&#xff0c;划分为 n−1n-1n−1 个长度为 lenlenlen 的区间 &#xff0c;划分的区间左开右闭&#xff0c;所以每个子区间有 len−1len-1len−…

SpringCloud学习笔记

SpringCloud学习笔记成熟分布式微服务架构包含技术模块SpringCloud与SpringBoot版本选择SpringCloud各技术模块的技术选择SpringCloud实现订单-支付微服务创建父工程(管理子工程即各个微服务)父工程的build.gradle配置父工程的settings.gradle配置创建支付子工程(payment_nativ…

物联网开发笔记(64)- 使用Micropython开发ESP32开发板之控制ILI9341 3.2寸TFT-LCD触摸屏进行LVGL图形化编程:控件显示

一、目的 这一节我们学习如何使用我们的ESP32开发板来控制ILI9341 3.2寸TFT-LCD触摸屏进行LVGL图形化编程&#xff1a;控件显示。 二、环境 ESP32 ILI9341 3.2寸TFT-LCD触摸屏 Thonny IDE 几根杜邦线 接线方法&#xff1a;见前面文章。 三、滑杆代码 import lvgl as lv i…

北京理工大学汇编语言复习重点

汇编是半开卷&#xff0c;可以带纸质资料。理论上&#xff0c;学好了以后&#xff0c;带本书进去就ok了&#xff0c;但是这次是线上&#xff0c;我还没书&#xff0c;就对着考试重点整理一点资料用于打印吧。 因为是线上&#xff0c;所以第4章基本不考框架了&#xff0c;浮点操…

工业4.0,科技引发产业革命,MES系统是数字化工厂的核心

当前&#xff0c;把握工业4.0时代信息技术引发的产业革命风口期&#xff0c;促进产业数字化转型升级&#xff0c;构建产业竞争新格局&#xff0c;实现弯道超车是难得一遇的大好时机&#xff0c;是局势所趋。在这样的大环境下&#xff0c;顺应全世界产业革命趋势&#xff0c;将数…

python的安装

python可以在所有操作系统上运行&#xff0c;但不同操作系统的安装方法有所不同 以&#xff1a;Mac OS X 和 Windows为例 为了安装 Python 并能正常使用&#xff0c;请根据你的操作系统安装提示&#xff0c;按照相应的步骤来操作。 我们还将进行一系列的测试&#xff0c;确保一…

SpringBoot实战(十)集成多数据源dynamic-datasource

目录1.Maven依赖2. DS注解3.普通Hihari连接池3.1 yml配置4.Druid连接池4.1 Druid依赖4.2 yml配置4.3 排除原生的Druid配置5. UserController6. UserServiceImpl7.测试7.1 新增数据7.2 查询数据7.3 测试结果8.源码地址&#xff1a;dynamic-datasource-spring-boot-starter 是一个…

【大数据入门核心技术-Kafka】(四)Kafka常用shell命令

目录 一、准备工作 1、Zookeeper集群安装 2、Kafka集群安装 二、常用Shell命令 1、创建Topic 2、查看创建的Topic 3、查看某一个Topic的详细信息 4、修改Topic 5、删除Topic 6、生产者发布消息命令 7、消费者接受消息命令 8、查看kafka节点数目 9、查看kafka进程 一…