文章目录
一、基本了解
二、一对一关系
三、一对多关系
3.1 增删改查
3.2 案例:应用详情页
3.2 案例:新建应用页
四、多对多关系
4.1 增删改查
4.2 案例:应用详情页
4.3 案例:部署应用页
一、基本了解
常见数据模型关系:
一对一(one-to-one),OneToOneField。一个表中的每条记录对应另一个表中的每条记录,使用OneToOneField建立关系。
一对多,多对一(one-to-many),ForeignKey
多对多(many-to-many),ManyToManyField
所谓的一对一、一对多,是指数据库中的表之间的关系。
二、一对一关系
应用场景:当一张表想扩展字段,最常用的方式就是在这个表添加一个对一关系,创建第二张表,第二张表的id字段余第一张表的id字段关联在一起,以此起到一对一。
1.修改模型类文件myapp/models.py,新增一个类,创建第二张表。
class IdCard(models.Model):
number = models.CharField(max_length=20, verbose_name="身份证号")
address = models.CharField(max_length=50, default="武汉")
user = models.OneToOneField(User,on_delete=models.CASCADE) # 定义一对一的模型关系
2.生成迁移文件,并同步。
python manage.py makemigrations
python manage.py migrate
3.添加数据。
#####################################################
##往已有数据的myapp_user表中添加新数据,该条新数据中包含身份证号、地址信息。
user_obj = User.objects.create(user='alan',name='阿兰',sex='女',age='25',label="运营,漂亮,喜欢购物") ##先往母表myapp_user表中添加。
IdCard.objects.create(user=user_obj, number="456789", address="北京") ##再往子表myapp_idcard表中添加,此处的user是模型类中定义的user。
#####################################################
##向已有用户添加身份证信息
user_obj = User.objects.get(user="qingjun")
IdCard.objects.create(user=user_obj,number="123456789", address="杭州")
4.查询数据。
#####################################################
反向查询:通过用户查到身份证信息(user->idcard)
user = User.objects.get(user="qingjun")
print(user.idcard.number)
print(user.idcard.address)
#####################################################
正向查询:从身份证表查用户(idcard->user)
idcard = IdCard.objects.get(user_id=1)
print(idcard.user.user)
print(idcard.user.name)
5.修改数据。
user_obj = User.objects.get(user="qingjun")
#####################################################
# 修改子表中的身份证信息
user_obj.idcard.address="河南"
user_obj.idcard.save()
#####################################################
# 修改母表中的用户信息
user_obj.age = 38
user_obj.save()
6.删除数据。
##删除“阿兰”用户的所有信息,包括子表中的“身份证号”、“地址”
User.objects.filter(user="alan").delete()
三、一对多关系
一对一是表与表之间的关系,而一对多、多对多是表与表中数据的关系。
一对多:A表中的某个记录对应B表中的多条记录,使用ForeignKey建立关系。
应用场景:项目部署涉及表,项目表、应用表、服务器表等等。
一对多:一个项目有多个应用,一个应用只能属于一个项目。
多对多:一个应用部署到多台服务器,一个服务器部署多个应用。
3.1 增删改查
1.修改模型类文件myapp/models.py,新增模型类,创建项目中的三张表。
##第一张表,项目表。
class Project(models.Model):
name = models.CharField(max_length=30)
describe = models.CharField(max_length=100, null=True)
datetime = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
class Meta:
db_table = 'project'
verbose_name_plural ='项目'
##第二张表,应用表。
class App(models.Model):
name = models.CharField(max_length=30)
describe = models.CharField(max_length=100, null=True)
datetime = models.DateTimeField(auto_now_add=True)
project = models.ForeignKey(Project, on_delete=models.CASCADE) # 定义一对多的模型关系
def __str__(self):
return self.name
class Meta:
db_table = 'app'
verbose_name_plural ='应用'
##第三张表,服务器表。
class Server(models.Model):
hostname = models.CharField(max_length=30)
ip = models.GenericIPAddressField()
describe = models.CharField(max_length=100, null=True)
def __str__(self):
return self.hostname
class Meta:
db_table = 'server'
verbose_name_plural ='服务器'
2.生成迁移文件,并同步,查看数据库表。
python manage.py makemigrations
python manage.py migrate
3.新增数据。
from myapp.models import Project,App
#######################################################################
往项目表中插入数据,添加已知的项目名称、项目描述信息。
Project.objects.create(name="电商项目",describe="电商项目描述...")
Project.objects.create(name="在线教育项目",describe="在线教育项目描述...")
Project.objects.create(name="大数据项目",describe="大数据项目描述...")
#######################################################################
往应用表中插入信息,将应用表与项目表关联在一起。
project_obj = Project.objects.get(name="电商项目")
App.objects.create(name="product",describe="商品服务",project=project_obj)
project_obj = Project.objects.get(name="大数据项目")
App.objects.create(name="search",describe="搜索服务",project=project_obj)
project_obj = Project.objects.get(name="电商项目")
App.objects.create(name="order",describe="订单服务",project=project_obj)
4.查询数据。
#######################################################################
正向查询:通过应用名称查询所属项目(app->project)
##查询某个应用所属项目。
app = App.objects.get(name="product") # 获取应用
app.project.name # 根据获取的应用,查询对应项目名称
##查询所有应用所属项目。
app_list = App.objects.all()
for i in app_list:
print(i.name, i.project.name, i.project.describe)
#######################################################################
反向查询:通过项目名称查询有哪些应用(project->app)
##查询某个项目有哪些应用:
project = Project.objects.get(name="电商项目") # 获取项目
project.app_set.all() # 根据获取的项目,查询所有应用
##查询所有项目有哪些引用:
project = Project.objects.all()
for i in project:
print(i.name, i.app_set.all())
3.2 案例:应用详情页
1.前端正向查询,查应用数据。
###################################################
1.定义根路由规则,ORM/urls.py
from django.urls import path,include,re_path
urlpatterns = [
path('myapp/',include('myapp.urls')),
]
###################################################
2.定义子路由规则,ORM/myapp/urls.py
from django.urls import path
from myapp import views
urlpatterns = [
path('app',views.app)
]
###################################################
3.定义视图,ORM/myapp/views.py
from django.shortcuts import render
from myapp.models import Project,App
def app(request):
app = App.objects.all()
return render(request, "app.html", {'app': app})
###################################################
4.定义html模板,templates/app.html
项目表单
应用名称
应用描述
所属项目
{% for i in app %}
{{ i.name }}
{{ i.describe }}
{{ i.project.name}}
{% endfor %}
2.前端反向查询,查项目数据。
###################################################
1.定义根路由规则,ORM/urls.py
from django.urls import path,include,re_path
urlpatterns = [
path('myapp/',include('myapp.urls')),
]
###################################################
2.定义子路由规则,ORM/myapp/urls.py
from django.urls import path
from myapp import views
urlpatterns = [
path('project',views.project),
]
###################################################
3.定义视图,ORM/myapp/views.py
from django.shortcuts import render
from myapp.models import Project,App
def project(request):
project_list = Project.objects.all()
return render(request, "project.html", {"project_list": project_list})
###################################################
4.定义html模板,templates/project.html
项目表单
项目名称
项目描述
所有应用
{% for i in project_list %}
{{ i.name }}
{{ i.describe }}
{% for n in i.app_set.all %}
{{ n }}
{% endfor %}
{% endfor %}
3.2 案例:新建应用页
1.前端添加新应用,后端数据入库。
###################################################
1.定义根路由规则,ORM/urls.py
from django.urls import path,include,re_path
urlpatterns = [
path('myapp/',include('myapp.urls')),
]
###################################################
2.定义子路由规则,ORM/myapp/urls.py
from django.urls import path
from myapp import views
urlpatterns = [
path('app_add',views.app_add),
]
###################################################
3.定义视图,ORM/myapp/views.py
from django.shortcuts import render
from myapp.models import Project,App
def app_add(request):
if request.method == "GET":
project_list = Project.objects.all()
return render(request,'app_add.html', {"project_list": project_list})
elif request.method == "POST":
app_name = request.POST.get("app-name")
app_describe = request.POST.get("app-describe")
project_name = request.POST.get("project-name")
project_list = Project.objects.all()
if not app_name:
msg = "添加字段异常"
return render(request, 'app_add.html', {'project_list': project_list, 'msg': msg})
try:
project_obj = Project.objects.get(name=project_name)
App.objects.create(name=app_name, describe=app_describe, project=project_obj)
msg ="添加成功"
code = 0
except:
msg ="添加失败"
code = 1
return render(request, 'app_add.html', {'project_list': project_list, 'msg': msg,'code':code})
###################################################
4.定义html模板,templates/app_add.html
创建应用
2.前端页面添加新应用。
四、多对多关系
4.1 增删改查
1.修改模型类文件myapp/models.py,将server表和app表进行关联。
##第三张表,服务器表。
class Server(models.Model):
hostname = models.CharField(max_length=30)
ip = models.GenericIPAddressField()
describe = models.CharField(max_length=100, null=True)
app = models.ManyToManyField(App) ##添加此行。
def __str__(self):
return self.hostname
class Meta:
db_table = 'server'
verbose_name_plural ='服务器'
2.生成迁移文件,并同步,查看中间表。
python manage.py makemigrations
python manage.py migrate
3.往server表添加数据。
from myapp.models import App,Project,Server
Server.objects.create(hostname="ec-test1", ip="192.168.1.10", describe="电商项目测试服务器1")
Server.objects.create(hostname="ec-test2", ip="192.168.1.11", describe="电商项目测试服务器2")
Server.objects.create(hostname="bigdata-test1", ip="192.168.1.11", describe="大数据项目测试服务器1")
4.将一个新应用部署到指定服务器信息,添加到数据库中。
project_obj = Project.objects.get(name="电商项目")
app = App.objects.create(name="portal",describe="前端服务",project=project_obj)
server = Server.objects.get(hostname="ec-test1")
server.app.add(app)
5.查询数据。
#######################################################################
正向查询:查询服务器部署了哪些应用(server->app)
##查询某台服务器部署了哪些应用:
server = Server.objects.get(hostname="ec-test1")
server.app.all()
##查询所有服务器部署了哪些应用:
server_list = Server.objects.all()
for i in server_list:
print(i.hostname, i.app.all())
#######################################################################
反向查询:查看某个应用部署到哪些服务器(app->server)
##查询某个应用部署到哪些服务器:
app = App.objects.get(name="portal")
app.server_set.all()
##查询所有应用部署到哪些服务器:
app_list = App.objects.all()
for i in app_list:
print(i.name, i.server_set.all())
6.根据已存在的app信息,将其添加到服务器表中。
##获取应用表中的app_id字段进行关联。
app = App.objects.get(name="qingjun")
app.id
server = Server.objects.get(hostname="bigdata-test1")
server.app.add(3) #将应用id3关联该服务器。
server.app.add(1,2,3) #将应用id1、2、3关联该服务器。
7.删除,将id=3的应用与ec-test1服务器取消关联。
server = Server.objects.get(hostname="ec-test1")
server.app.remove(3)
8.清空,将ec-test1服务器取消所有应用关联。
server = Server.objects.get(hostname="ec-test1")
server.app.clear()
4.2 案例:应用详情页
1.前端正向查询。
###################################################
1.定义根路由规则,ORM/urls.py
from django.urls import path,include,re_path
urlpatterns = [
path('myapp/',include('myapp.urls')),
]
###################################################
2.定义子路由规则,ORM/myapp/urls.py
from django.urls import path
from myapp import views
urlpatterns = [
path('server',views.server),
]
###################################################
3.定义视图,ORM/myapp/views.py
from django.shortcuts import render
from myapp.models import Project,App,Server
def server(request):
server_list = Server.objects.all()
return render(request, "server.html", {"server_list": server_list})
###################################################
4.定义html模板,templates/server.html
服务器详情
服务器名称
IP
所有应用
{% for i in server_list %}
{{ i.hostname }}
{{ i.ip }}
{% for n in i.app.all %}
{{ n }}
{% endfor %}
{% endfor %}
2.前端反向查询,查项目数据。
###################################################
1.定义根路由规则,ORM/urls.py
from django.urls import path,include,re_path
urlpatterns = [
path('myapp/',include('myapp.urls')),
]
###################################################
2.定义子路由规则,ORM/myapp/urls.py
from django.urls import path
from myapp import views
urlpatterns = [
path('app_server', views.app_server),
]
###################################################
3.定义视图,ORM/myapp/views.py
from django.shortcuts import render
from myapp.models import Project,App
def app_server(request):
app_server = App.objects.all()
return render(request, "app_server.html", {"app_server": app_server})
###################################################
4.定义html模板,templates/app_server.html
应用详情
应用名称
服务器列表
{% for i in app_server %}
{{ i.name}}
{% for n in i.server_set.all %}
{{ n }}
{% endfor %}
{% endfor %}
###################################################
5.将search应用部署在bigdata-test1服务器中,将该信息填入到数据库。
app = App.objects.get(name="search")
server = Server.objects.get(hostname="bigdata-test1")
server.app.add(app)
4.3 案例:部署应用页
1.前端添加新应用,后端数据入库。
###################################################
1.定义根路由规则,ORM/urls.py
from django.urls import path,include,re_path
urlpatterns = [
path('myapp/',include('myapp.urls')),
]
###################################################
2.定义子路由规则,ORM/myapp/urls.py
from django.urls import path
from myapp import views
urlpatterns = [
path('app_server', views.app_server),
]
###################################################
3.定义视图,ORM/myapp/views.py
from django.shortcuts import render,redirect
from myapp.models import Project,App
def app_add(request):
if request.method == "GET":
project_list = Project.objects.all()
server_list = Server.objects.all()
return render(request,'app_add.html', {"project_list": project_list,'server_list':server_list})
elif request.method == "POST":
app_name = request.POST.get("app-name")
app_describe = request.POST.get("app-describe")
project_name = request.POST.get("project-name")
server_list = request.POST.getlist("server-list") # 使用getlist获取,用于获取表单多少值
if not app_name:
msg = "添加字段异常"
return render(request, 'app_add.html')
try:
project_obj = Project.objects.get(name=project_name)
app = App.objects.create(name=app_name, describe=app_describe, project=project_obj)
# 将服务器(可能多个)关联应用
print(server_list)
for server in server_list:
server = Server.objects.get(hostname=server)
server.app.add(app)
msg ="添加成功"
code = 0
except:
msg ="添加失败"
code = 1
return redirect(app_add)
###################################################
4.定义html模板,templates/app_add.html
创建应用
###################################################
5.修改templates/app.html模板内容,显示服务器列表信息。
应用表单
应用名称
应用描述
所属项目
服务器列表
{% for i in app %}
{{ i.name }}
{{ i.describe }}
{{ i.project.name}}
{% for n in i.server_set.all %}
{{ n }}
{% endfor %}
{% endfor %}
你可能感兴趣的:(python,django,数据库,python,运维开发,linux)
Python 的类中,self 是一个特殊的参数
可可乐不加冰
知识学习专栏 python 开发语言
在Python的类中,self是一个特殊的参数,它代表类的实例本身。self是方法的第一个参数,用于访问实例的属性和方法。下面我将从多个角度解释self的含义、作用以及如何使用它。1.self表示类的实例本身在Python中,当你创建一个类的实例时,实际上是在内存中创建了一个对象。self参数代表的就是这个对象本身。通过self,你可以在类的方法中访问和修改实例的属性。2.为什么需要self?se
Trae AI 上新 SSHremote:服务器 Python 接口日志排查实战指南
芯作者
DD:日记 人工智能 深度学习 机器学习
在当今的软件开发中,服务器端的稳定性和可靠性至关重要。然而,生产环境中的问题往往难以预测,尤其是接口返回502错误却无日志记录的情况,更是让开发者头疼不已。幸运的是,字节跳动推出的AI原生IDE——Trae,近期上线的SSHremote功能,为远程服务器日志排查提供了全新的解决方案。本文将结合实战案例,深入探讨如何利用TraeAI的SSHremote功能高效排查Python接口日志问题,并分享创新
Python入门程序练习004:输入某年某月某日,判断这一天是这一年的第几天?
若北辰
Python实战练习
【程序4】题目:输入某年某月某日,判断这一天是这一年的第几天?1.程序分析:其实这一题的难度不在于编程,而在于对闰年有没有一些基本的认识,相信很多人都知道闰年,但是又不太清楚具体怎么判断闰年。在下面两个条件中只要满足一个即是闰年:1、能被4整除但是不能被一百整除2、能被四百整除。为了方便记忆,总结为:四年一闰,百年不闰,四百年再闰那么判断出闰年和平年(除了闰年其他都是平年)之后呢,其实只要记住:闰
Python后端学习系列(10):分布式系统与数据一致性(使用分布式锁、分布式事务等)
DoYangTan
python 学习 分布式
Python后端学习系列(10):分布式系统与数据一致性(使用分布式锁、分布式事务等)前言随着业务规模的不断扩大以及对系统性能、可扩展性的更高要求,后端应用往往会朝着分布式系统的方向发展。然而,分布式系统带来诸多优势的同时,也面临着如数据一致性等复杂的挑战。本期我们就聚焦于分布式系统中的关键问题——数据一致性,深入探讨分布式锁、分布式事务等相关知识以及保障数据一致性的策略与实践,让我们一起深入学习
掌握C#企业级应用的数据一致性与分布式事务:从基础到高级的全面解析
墨夶
C#学习资料1 c# 分布式 wpf
在当今的企业级应用开发中,确保数据的一致性是至关重要的。尤其是在涉及分布式系统时,如何处理跨服务、跨数据库的操作以保证数据的一致性和可靠性成为了一个复杂但必须解决的问题。本文将深入探讨使用C#进行企业级应用开发时的数据一致性和分布式事务管理,提供详细的代码示例和最佳实践。第一部分:理解数据一致性与分布式事务的基础知识1.1数据一致性的重要性在企业级应用中,数据一致性是指关联数据之间的逻辑关系是否正
python进阶,类的继承,封装,多态,super
胡萝卜糊了
python 开发语言
#单继承#子类只继承一个父类classPerson:defsay(self,value):print('say:',value)defwalk(self,value):print('walk:',value,'km')#Student类继承PersonclassStudent(Person):defstudy(self,value):print('study:',value)#Teacher类继承
python进阶,迭代器和生成器,函数式编程,闭包,装饰器
胡萝卜糊了
python 开发语言
l=[1,2,3,4]it=iter(l)print(next(it))print(next(it))print(next(it))print(next(it))#while循环l=[1,2,3,4]len=len(l)i=0it=iter(l)whilei=self.end:raiseStopIterationself.current+=1returnself.current-1it=MyIte
Day6:python面向对象编程——构建可扩展的订单管理系统
weixin_44650422
python 开发语言
目标:掌握类与对象的核心概念,实现模块化的订单业务逻辑一、类与对象:订单管理系统核心1.基础订单类classOrder:"""订单基类"""def__init__(self,order_id,customer):self.order_id=order_id#订单号self.customer=customer#客户名self.items=[]#商品列表self.total=0.0#总金额defadd
python assert()函数
欢天喜地小姐姐
python编程学习 python
1.断言函数作用断言函数是对表达式布尔值的判断,要求表达式计算值必须为真。可用于自动调试。如果表达式为假,触发异常;如果表达式为真,不会报错。2.使用assert判断数组是否相等np.array.any()和numpy.array.all()np.array.any()是或操作,任意一个元素为True,输出为True。np.array.all()是与操作,所有元素为True,输出为True。当我们
【LeetCode 热题100】 23. 合并 K 个升序链表的算法思路及python代码
pljnb
LeetCode热题100 算法 leetcode 链表
23.合并K个升序链表给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例1:输入:lists=[[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例2:输入:lists=[
本地源代码运行bun install时报错
星火燎猿
C# 疑难杂症处理方案 Bun Bun.js
最近使用Ubuntu系统运行Bun的时候报,Failedtospawnscriptinstallduetoerroros.linux.errno.generic.E.PERMPERM的错误,查看官方文档也没有这个错误描述,最终找到解决方案进行分享。报错问题如下:errorloadingcurrentdirectoryInstalling[2637/2230]error:failedtospawnl
人生重开模拟器 -deepseek版
Cccc吃吃吃
python 开发语言
人生重开模拟器是一个有趣的文字类游戏,玩家可以通过选择不同的选项来体验不同的人生轨迹。下面是一个简单的Python实现,模拟了人生重开的过程。玩家可以通过输入数字来选择不同的选项,游戏会根据选择生成不同的人生结局。```pythonimportrandomdefprint_intro():print("欢迎来到人生重开模拟器!")print("你将重新开始你的人生,通过不同的选择体验不同的人生轨迹
PTA天梯赛Python7-52 古风排版
胡同Alley
python
中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。输入格式:输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。输出格式:按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)。输入样例:4Thisisatestcase输出样例:asaTstihetsices代码长度限制16KB时间限制
详细介绍 Jupyter nbconvert 工具及其用法:如何将 Notebook 转换为 Python 脚本
源代码杀手
python使用技巧 python jupyter ide
nbconvert是Jupyter提供的一个非常强大的工具,允许用户将JupyterNotebook文件(.ipynb)转换成多种格式,包括Python脚本(.py)、HTML、PDF、LaTeX等。你可以通过命令行来运行nbconvert,也可以在JupyterNotebook中通过一些自定义的设置来实现转换。安装nbconvert通常情况下,nbconvert会随Jupyter一起安装,因此不
系统架构设计(以飞控系统、航电系统、机电管理系统、电子电气架构为例)
机载软件与适航
机载系统 系统工程 适航 系统架构 架构
架构的定义系统架构涉及对系统的结构和行为进行高层次的描述。它包括系统的组成部分、这些部分之间的关系、与外部环境的交互方式,以及满足特定功能和非功能性需求的方法。系统架构定义了系统的总体设计蓝图,指导系统的开发、集成、部署和维护。系统架构的核心要素组成部分(Components):系统中的独立模块或单元,每个模块执行特定的功能。组件可以是软件模块、硬件设备、数据库、用户界面等。组件间的关系(Rela
python -- assert函数
我不是程序员
python知识 python
一、assert函数在Python中,assert语句用于调试和测试代码。它用于检查某个条件是否为真。如果条件为假,assert语句会抛出一个AssertionError异常,并可以选择性地附加一条错误消息。assert语句的基本语法是:assertcondition,optional_messagecondition:一个布尔表达式。如果结果为True,程序继续执行。如果为False,会触发As
Beekeeper Studio:高颜值且免费的SQL开发工具
开源项目精选
sql 数据库
BeekeeperStudio是一款免费开源的SQL开发和数据库管理工具,具有美观高效、简单易用的特点。BeekeeperStudio基于Vue.js开发,遵循MIT开源协议,支持Windows、Linux以及macOS平台。Stars数17842Forks数1170主要特点安全连接:除了正常的连接,也可以使用SSL加密连接或通过SSH隧道连接;SQL自动补全:代码编辑器支持语法高亮和表名自动补全
CTF杂项挑战:使用已知字典破解ZIP文件密码
0dayNu1L
Web安全 CTF web安全 网络安全
在CTF比赛中,杂项挑战通常包含一些非传统的题目,其中破解ZIP文件密码是一个常见的任务。本文将介绍两种在已知密码字典文件的情况下,破解ZIP文件密码的方法:一种是使用Python脚本进行暴力破解,另一种是通过zip2john和john命令结合进行破解。0dayNu1L-CSDN博客请一键三连吧!!!❤❤❤目录方法一:使用Python脚本进行暴力破解步骤方法二:使用zip2john和john命令结
文本转语音的Python库(pyttsx3)
数产第一混子
python库 python
一、pyttsx3的概述pyttsx3isatext-to-speechconversionlibraryinPython.pyttsx3是Python中的文本到语音转换库。二、pyttsx3的安装pipinstallpyttsx3三、小试牛刀importpyttsx3engine=pyttsx3.init()engine.say("Iwillspeakthistextrightnow")engi
区块链赋能:用Python开发去中心化投票系统
Echo_Wish
Python! 实战! 区块链 python 去中心化
区块链赋能:用Python开发去中心化投票系统在这个互联网迅猛发展的时代,投票系统不仅仅停留在政务领域,它已成为社区治理、企业决策甚至区块链DAO(去中心化自治组织)中重要的机制。然而,传统投票系统往往集中化,存在信任和数据安全问题。区块链技术以其不可篡改性和透明性为去中心化投票提供了理想的解决方案。在这篇文章中,我将通过Python语言,结合区块链智能合约,教你如何从零开发一个去中心化的投票系统
Python助力区块链互通——跨链桥接的实现与实践
Echo_Wish
Python! 实战! 区块链 python 开发语言
Python助力区块链互通——跨链桥接的实现与实践区块链技术的繁荣发展带来了巨大的生态创新,但也因各链之间的割裂局面限制了它们的潜力。例如,你或许想在以太坊上使用来自比特币的资产,却因两条链不互通而不得不求助于中心化交易所。要打破“链间壁垒”,跨链桥接(Cross-chainBridge)应运而生。今天,我以Echo_Wish的视角,通过Python代码实践,带你深入了解跨链桥接的工作原理,技术实
Parrot OS 6.3 发布!全面提升安全性,新增先进工具,带来更高性能
wljslmz
Linux技术 linux Parrot OS
2025年2月,全球知名的安全和隐私为核心的Linux发行版——ParrotOS迎来了其最新版本——ParrotOS6.3。作为一款基于Debian的多功能操作系统,ParrotOS旨在为安全专家、开发人员以及关注隐私的用户提供强大的功能支持。ParrotOS6.3版本在性能、工具更新、硬件支持等方面进行了一系列优化,凭借其更加稳定的安全性,最新的工具包,以及对硬件兼容性的大幅提升,ParrotO
python pyttsx3文本转语音_python 利用pyttsx3文字转语音
木大木大本太
python pyttsx3文本转语音
#-*-coding:utf-8-*-importpyttsx3f=open("all.txt",'r')line=f.readline()engine=pyttsx3.init()whileline:line=f.readline()print(line,end='')engine.say(line)engine.runAndWait()f.close()importwin32com.clien
技术沙龙 | 从高并发架构到企业级区块链探索零售创新
weixin_33984032
区块链 python 数据库
2019独角兽企业重金招聘Python工程师标准>>>伴随消费新理念的不断升级和技术创新发展,零售业逐渐被推到风口浪尖,对此京东曾表示,推动“无界零售”时代的到来理念,倡导实现成本、效率、体验的升级才是终极目标。此概念一出,零售行业的侧重点开始由销售端向技术端倾斜,趁着一年一度618来临之际,京东云特别在上海举办了主题为"从高并发架构到企业级区块链,探索无界零售的数字化创新"的技术沙龙活动。本次活
Python Pyttsx3模块
墨水云烟
Python python 开发语言
大家有没有让电脑“说话”的欲望,如果我说可以帮大家实现这个愿望的话,大家肯定会说我又要用print函数,但是今天我们就可以真的让电脑说话。让电脑说话其实很简单,使用python第三方库pyttsx3模块就行了。使用之前还需要安装pyttsx3模块,安装方法:python终端或cmd输入:pipinstallpyttsx3然后就是导入pyttsx3模块:importpyttsx3后面就是使用这个模块
使用python seaborn创建配对图:从核心概念到实战案例
梦想画家
数据分析工程 # python 人工智能 python 机器学习
Seaborn的配对图(Pairplot)是一种用于探索多变量数据关系的可视化工具,尤其适合分析数据集中多个特征之间的相关性、分布模式或异常值。本文介绍如何生成数据集数值变量之间的配对图,并通过参数设置色系。配对图的核心作用矩阵式可视化生成一个N×N的网格图(N为特征数),每个单元格展示两列特征之间的关系。默认对角线显示单变量分布(直方图或KDE曲线),非对角线显示散点图或其他关系图。快速发现模式
如何用Python和Selenium实现表单的自动填充与提交?
字节王德发
python python selenium 开发语言
在今天的数字化时代,自动化工具可以极大地提高工作效率。很多人可能会觉得填表单是个繁琐的任务,不过你知道吗?用Python和Selenium可以轻松解决这一问题!本文将带你走进如何利用这两个强大的工具,实现表单的自动填充和提交,让你省去不少时间。什么是Selenium?Selenium是一个广泛使用的自动化测试工具,它能够模拟用户在浏览器中的操作。通过它,我们可以自动化执行诸如点击按钮、输入文本、选
使用 Python 的 pyttsx3 库进行文本转语音
Bingjia_Hu
python 开发语言 pyttsx3
1.什么是pyttsx3?1.1pyttsx3是一个Python库,它可以将文本转换为语音。与其他文本转语音库(如gTTS)不同,pyttsx3不依赖于网络服务,它使用本地的TTS(Text-to-Speech)引擎,这使得它在离线状态下也能正常工作1.2pyttsx3支持多平台(Windows、Linux和macOS),且可以对语音的音量、语速以及语音类型等进行控制2.安装pyttsx3要使用p
如何在 Python 中将语音转换为文本
无水先生
语音处理 人工智能综合 python xcode 开发语言
一、说明 学习如何使用语音识别Python库执行语音识别,以在Python中将音频语音转换为文本。想要更快地编码吗?我们的Python代码生成器让您只需点击几下即可创建Python脚本。现在就现在试试!二、语言AI库2.1相当给力的转文字库 语音识别是计算机软件识别口语中的单词和短语并将其转换为人类可读文本的能力。在本教程中,您将学习如何使用SpeechRecognition库在Python中
个人AI助手的未来:Yi AI开源系统助力快速搭建
耶耶Norsea
网络杂烩 人工智能 开源
摘要YiAI推出了一站式个人AI助手平台解决方案,助力用户快速搭建专属AI助手。该平台采用全套开源系统,涵盖前端应用、后台管理及小程序功能,并基于MIT协议开放使用。同时,平台集成了本地RAG方案,利用Milvus与Weaviate向量数据库支持本地部署,为用户提供高效、灵活的数据处理能力。关键词个人AI助手,快速搭建,开源系统,本地RAG,向量数据库一、YiAI开源系统概述1.1个人AI助手的发
多线程编程之理财
周凡杨
java 多线程 生产者 消费者 理财
现实生活中,我们一边工作,一边消费,正常情况下会把多余的钱存起来,比如存到余额宝,还可以多挣点钱,现在就有这个情况:我每月可以发工资20000万元 (暂定每月的1号),每月消费5000(租房+生活费)元(暂定每月的1号),其中租金是大头占90%,交房租的方式可以选择(一月一交,两月一交、三月一交),理财:1万元存余额宝一天可以赚1元钱,
[Zookeeper学习笔记之三]Zookeeper会话超时机制
bit1129
zookeeper
首先,会话超时是由Zookeeper服务端通知客户端会话已经超时,客户端不能自行决定会话已经超时,不过客户端可以通过调用Zookeeper.close()主动的发起会话结束请求,如下的代码输出内容
Created /zoo-739160015
CONNECTEDCONNECTED
.............CONNECTEDCONNECTED
CONNECTEDCLOSEDCLOSED
SecureCRT快捷键
daizj
secureCRT 快捷键
ctrl + a : 移动光标到行首ctrl + e :移动光标到行尾crtl + b: 光标前移1个字符crtl + f: 光标后移1个字符crtl + h : 删除光标之前的一个字符ctrl + d :删除光标之后的一个字符crtl + k :删除光标到行尾所有字符crtl + u : 删除光标至行首所有字符crtl + w: 删除光标至行首
Java 子类与父类这间的转换
周凡杨
java 父类与子类的转换
最近同事调的一个服务报错,查看后是日期之间转换出的问题。代码里是把 java.sql.Date 类型的对象 强制转换为 java.sql.Timestamp 类型的对象。报java.lang.ClassCastException。
代码:
可视化swing界面编辑
朱辉辉33
eclipse swing
今天发现了一个WindowBuilder插件,功能好强大,啊哈哈,从此告别手动编辑swing界面代码,直接像VB那样编辑界面,代码会自动生成。
首先在Eclipse中点击help,选择Install New Software,然后在Work with中输入WindowBui
web报表工具FineReport常用函数的用法总结(文本函数)
老A不折腾
finereport web报表工具 报表软件 java报表
文本函数
CHAR
CHAR(number):根据指定数字返回对应的字符。CHAR函数可将计算机其他类型的数字代码转换为字符。
Number:用于指定字符的数字,介于1Number:用于指定字符的数字,介于165535之间(包括1和65535)。
示例:
CHAR(88)等于“X”。
CHAR(45)等于“-”。
CODE
CODE(text):计算文本串中第一个字
mysql安装出错
林鹤霄
mysql安装
[root@localhost ~]# rpm -ivh MySQL-server-5.5.24-1.linux2.6.x86_64.rpm Preparing... #####################
linux下编译libuv
aigo
libuv
下载最新版本的libuv源码,解压后执行:
./autogen.sh
这时会提醒找不到automake命令,通过一下命令执行安装(redhat系用yum,Debian系用apt-get):
# yum -y install automake
# yum -y install libtool
如果提示错误:make: *** No targe
中国行政区数据及三级联动菜单
alxw4616
近期做项目需要三级联动菜单,上网查了半天竟然没有发现一个能直接用的!
呵呵,都要自己填数据....我了个去这东西麻烦就麻烦的数据上.
哎,自己没办法动手写吧.
现将这些数据共享出了,以方便大家.嗯,代码也可以直接使用
文件说明
lib\area.sql -- 县及县以上行政区划分代码(截止2013年8月31日)来源:国家统计局 发布时间:2014-01-17 15:0
哈夫曼加密文件
百合不是茶
哈夫曼压缩 哈夫曼加密 二叉树
在上一篇介绍过哈夫曼编码的基础知识,下面就直接介绍使用哈夫曼编码怎么来做文件加密或者压缩与解压的软件,对于新手来是有点难度的,主要还是要理清楚步骤;
加密步骤:
1,统计文件中字节出现的次数,作为权值
2,创建节点和哈夫曼树
3,得到每个子节点01串
4,使用哈夫曼编码表示每个字节
JDK1.5 Cyclicbarrier实例
bijian1013
java thread java多线程 Cyclicbarrier
CyclicBarrier类
一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环的 barrier。
CyclicBarrier支持一个可选的 Runnable 命令,
九项重要的职业规划
bijian1013
工作 学习
一. 学习的步伐不停止 古人说,活到老,学到老。终身学习应该是您的座右铭。 世界在不断变化,每个人都在寻找各自的事业途径。 您只有保证了足够的技能储
【Java范型四】范型方法
bit1129
java
范型参数不仅仅可以用于类型的声明上,例如
package com.tom.lang.generics;
import java.util.List;
public class Generics<T> {
private T value;
public Generics(T value) {
this.value =
【Hadoop十三】HDFS Java API基本操作
bit1129
hadoop
package com.examples.hadoop;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoo
ua实现split字符串分隔
ronin47
lua split
LUA并不象其它许多"大而全"的语言那样,包括很多功能,比如网络通讯、图形界面等。但是LUA可以很容易地被扩展:由宿主语言(通常是C或 C++)提供这些功能,LUA可以使用它们,就像是本来就内置的功能一样。LUA只包括一个精简的核心和最基本的库。这使得LUA体积小、启动速度快,从 而适合嵌入在别的程序里。因此在lua中并没有其他语言那样多的系统函数。习惯了其他语言的字符串分割函
java-从先序遍历和中序遍历重建二叉树
bylijinnan
java
public class BuildTreePreOrderInOrder {
/**
* Build Binary Tree from PreOrder and InOrder
* _______7______
/ \
__10__ ___2
/ \ /
4
openfire开发指南《连接和登陆》
开窍的石头
openfire 开发指南 smack
第一步
官网下载smack.jar包
下载地址:http://www.igniterealtime.org/downloads/index.jsp#smack
第二步
把smack里边的jar导入你新建的java项目中
开始编写smack连接openfire代码
p
[移动通讯]手机后盖应该按需要能够随时开启
comsci
移动
看到新的手机,很多由金属材质做的外壳,内存和闪存容量越来越大,CPU速度越来越快,对于这些改进,我们非常高兴,也非常欢迎
但是,对于手机的新设计,有几点我们也要注意
第一:手机的后盖应该能够被用户自行取下来,手机的电池的可更换性应该是必须保留的设计,
20款国外知名的php开源cms系统
cuiyadll
cms
内容管理系统,简称CMS,是一种简易的发布和管理新闻的程序。用户可以在后端管理系统中发布,编辑和删除文章,即使您不需要懂得HTML和其他脚本语言,这就是CMS的优点。
在这里我决定介绍20款目前国外市面上最流行的开源的PHP内容管理系统,以便没有PHP知识的读者也可以通过国外内容管理系统建立自己的网站。
1. Wordpress
WordPress的是一个功能强大且易于使用的内容管
Java生成全局唯一标识符
darrenzhu
java uuid unique identifier id
How to generate a globally unique identifier in Java
http://stackoverflow.com/questions/21536572/generate-unique-id-in-java-to-label-groups-of-related-entries-in-a-log
http://stackoverflow
php安装模块检测是否已安装过, 使用的SQL语句
dcj3sjt126com
sql
SHOW [FULL] TABLES [FROM db_name] [LIKE 'pattern']
SHOW TABLES列举了给定数据库中的非TEMPORARY表。您也可以使用mysqlshow db_name命令得到此清单。
本命令也列举数据库中的其它视图。支持FULL修改符,这样SHOW FULL TABLES就可以显示第二个输出列。对于一个表,第二列的值为BASE T
5天学会一种 web 开发框架
dcj3sjt126com
Web 框架 framework
web framework层出不穷,特别是ruby/python,各有10+个,php/java也是一大堆 根据我自己的经验写了一个to do list,按照这个清单,一条一条的学习,事半功倍,很快就能掌握 一共25条,即便很磨蹭,2小时也能搞定一条,25*2=50。只需要50小时就能掌握任意一种web框架
各类web框架大同小异:现代web开发框架的6大元素,把握主线,就不会迷路
建议把本文
Gson使用三(Map集合的处理,一对多处理)
eksliang
json gson Gson map Gson 集合处理
转载请出自出处:http://eksliang.iteye.com/blog/2175532 一、概述
Map保存的是键值对的形式,Json的格式也是键值对的,所以正常情况下,map跟json之间的转换应当是理所当然的事情。 二、Map参考实例
package com.ickes.json;
import java.lang.refl
cordova实现“再点击一次退出”效果
gundumw100
android
基本的写法如下:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
//navigator.splashscreen.hide();
document.addEventListener("b
openldap configuration leaning note
iwindyforest
configuration
hostname // to display the computer name
hostname <changed name> // to change
go to: /etc/sysconfig/network, add/modify HOSTNAME=NEWNAME to change permenately
dont forget to change /etc/hosts
Nullability and Objective-C
啸笑天
Objective-C
https://developer.apple.com/swift/blog/?id=25
http://www.cocoachina.com/ios/20150601/11989.html
http://blog.csdn.net/zhangao0086/article/details/44409913
http://blog.sunnyxx
jsp中实现参数隐藏的两种方法
macroli
JavaScript jsp
在一个JSP页面有一个链接,//确定是一个链接?点击弹出一个页面,需要传给这个页面一些参数。//正常的方法是设置弹出页面的src="***.do?p1=aaa&p2=bbb&p3=ccc"//确定目标URL是Action来处理?但是这样会在页面上看到传过来的参数,可能会不安全。要求实现src="***.do",参数通过其他方法传!//////
Bootstrap A标签关闭modal并打开新的链接解决方案
qiaolevip
每天进步一点点 学习永无止境 bootstrap 纵观千象
Bootstrap里面的js modal控件使用起来很方便,关闭也很简单。只需添加标签 data-dismiss="modal" 即可。
可是偏偏有时候需要a标签既要关闭modal,有要打开新的链接,尝试多种方法未果。只好使用原始js来控制。
<a href="#/group-buy" class="btn bt
二维数组在Java和C中的区别
流淚的芥末
java c 二维数组 数组
Java代码:
public class test03 {
public static void main(String[] args) {
int[][] a = {{1},{2,3},{4,5,6}};
System.out.println(a[0][1]);
}
}
运行结果:
Exception in thread "mai
systemctl命令用法
wmlJava
linux systemctl
对比表,以 apache / httpd 为例 任务 旧指令 新指令 使某服务自动启动 chkconfig --level 3 httpd on systemctl enable httpd.service 使某服务不自动启动 chkconfig --level 3 httpd off systemctl disable httpd.service 检查服务状态 service h