news 2026/4/6 3:43:46

新手学编程:C、Java、Python 场景对比与发展ys#12篇

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
新手学编程:C、Java、Python 场景对比与发展ys#12篇
SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式。本文将介绍如何使用SQLAlchemy ORM进行数据库操作。

目录
安装SQLAlchemy

核心概念

连接数据库

定义数据模型

创建数据库表

基本CRUD操作

查询数据

关系操作

事务管理

最佳实践

安装
bash

pip install sqlalchemy
如果需要连接特定数据库,还需安装相应的驱动程序:

bash

# PostgreSQL
pip install psycopg2-binary

# MySQL
pip install mysql-connector-python

# SQLite (Python标准库已包含,无需额外安装)
核心概念
Engine:数据库连接的引擎,负责与数据库通信

Session:数据库会话,管理所有持久化操作

Model:数据模型类,对应数据库中的表

Query:查询对象,用于构建和执行数据库查询

连接数据库
python

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# 创建数据库连接引擎
# SQLite示例
engine = create_engine('sqlite:///example.db', echo=True)

# PostgreSQL示例
# engine = create_engine('postgresql://username:password@localhost:5432/mydatabase')

# MySQL示例
# engine = create_engine('mysql+mysqlconnector://username:password@localhost:3306/mydatabase')

# 创建会话工厂
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

# 创建会话实例
session = SessionLocal()
定义数据模型
python

from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship, declarative_base

# 创建基类
Base = declarative_base()

class User(Base):
__tablename__ = 'users'

id = Column(Integer, primary_key=True, index=True)
name = Column(String(50), nullable=False)
email = Column(String(100), unique=True, index=True)

# 定义一对多关系
posts = relationship("Post", back_populates="author")

class Post(Base):
__tablename__ = 'posts'

id = Column(Integer, primary_key=True, index=True)
title = Column(String(100), nullable=False)
content = Column(String(500))
author_id = Column(Integer, ForeignKey('users.id'))

# 定义多对一关系
author = relationship("User", back_populates="posts")

# 定义多对多关系(通过关联表)
tags = relationship("Tag", secondary="post_tags", back_populates="posts")

class Tag(Base):
__tablename__ = 'tags'

id = Column(Integer, primary_key=True, index=True)
name = Column(String(30), unique=True, nullable=False)

posts = relationship("Post", secondary="post_tags", back_populates="tags")

# 关联表(用于多对多关系)
class PostTag(Base):
__tablename__ = 'post_tags'

post_id = Column(Integer, ForeignKey('posts.id'), primary_key=True)
tag_id = Column(Integer, ForeignKey('tags.id'), primary_key=True)
创建数据库表
python

# 创建所有表
Base.metadata.create_all(bind=engine)

# 删除所有表
# Base.metadata.drop_all(bind=engine)
基本CRUD操作
创建数据
python

# 创建新用户
new_user = User(name="张三", email="zhangsan@example.com")
session.add(new_user)
session.commit()

# 批量创建
session.add_all([
User(name="李四", email="lisi@example.com"),
User(name="王五", email="wangwu@example.com")
])
session.commit()
读取数据
python

# 获取所有用户
users = session.query(User).all()

# 获取第一个用户
first_user = session.query(User).first()

# 根据ID获取用户
user = session.query(User).get(1)
更新数据
python

# 查询并更新
user = session.query(User).get(1)
user.name = "张三四"
session.commit()

# 批量更新
session.query(User).filter(User.name.like("张%")).update({"name": "张氏"}, synchronize_session=False)
session.commit()
删除数据
python

# 查询并删除
user = session.query(User).get(1)
session.delete(user)
session.commit()

# 批量删除
session.query(User).filter(User.name == "李四").delete(synchronize_session=False)
session.commit()
查询数据
基本查询
python

# 获取所有记录
users = session.query(User).all()

# 获取特定字段
names = session.query(User.name).all()

# 排序
users = session.query(User).order_by(User.name.desc()).all()

# 限制结果数量
users = session.query(User).limit(10).all()

# 偏移量
users = session.query(User).offset(5).limit(10).all()
过滤查询
python

from sqlalchemy import or_

# 等值过滤
user = session.query(User).filter(User.name == "张三").first()

# 模糊查询
users = session.query(User).filter(User.name.like("张%")).all()

# IN查询
users = session.query(User).filter(User.name.in_(["张三", "李四"])).all()

# 多条件查询
users = session.query(User).filter(
User.name == "张三",
User.email.like("%@example.com")
).all()

# 或条件
users = session.query(User).filter(
or_(User.name == "张三", User.name == "李四")
).all()

# 不等于
users = session.query(User).filter(User.name != "张三").all()
聚合查询
python

from sqlalchemy import func

# 计数
count = session.query(User).count()

# 分组计数
user_post_count = session.query(
User.name,
func.count(Post.id)
).join(Post).group_by(User.name).all()

# 求和、平均值等
avg_id = session.query(func.avg(User.id)).scalar()
连接查询
python

# 内连接
results = session.query(User, Post).join(Post).filter(Post.title.like("%Python%")).all()

# 左外连接
results = session.query(User, Post).outerjoin(Post).all()

# 指定连接条件
results = session.query(User, Post).join(Post, User.id == Post.author_id).all()
关系操作
python

# 创建带关系的对象
user = User(name="赵六", email="zhaoliu@example.com")
post = Post(title="我的第一篇博客", content="Hello World!", author=user)
session.add(post)
session.commit()

# 通过关系访问
print(f"文章 '{post.title}' 的作者是 {post.author.name}")
print(f"用户 {user.name} 的所有文章:")
for p in user.posts:
print(f" - {p.title}")

# 多对多关系操作
python_tag = Tag(name="Python")
sqlalchemy_tag = Tag(name="SQLAlchemy")

post.tags.append(python_tag)
post.tags.append(sqlalchemy_tag)
session.commit()

print(f"文章 '{post.title}' 的标签:")
for tag in post.tags:
print(f" - {tag.name}")
事务管理
python

# 自动提交事务
try:
user = User(name="测试用户", email="test@example.com")
session.add(user)
session.commit()
except Exception as e:
session.rollback()
print(f"发生错误: {e}")

# 使用事务上下文管理器
from sqlalchemy.orm import Session

def create_user(session: Session, name: str, email: str):
try:
user = User(name=name, email=email)
session.add(user)
session.commit()
return user
except:
session.rollback()
raise

# 嵌套事务
with session.begin_nested():
user = User(name="事务用户", email="transaction@example.com")
session.add(user)

# 保存点
savepoint = session.begin_nested()
try:
user = User(name="保存点用户", email="savepoint@example.com")
session.add(user)
savepoint.commit()
except:
savepoint.rollback()
最佳实践
会话管理:为每个请求创建新会话,请求结束后关闭

异常处理:始终处理异常并适当回滚事务

延迟加载:注意N+1查询问题,使用 eager loading 优化

连接池:合理配置连接池大小和超时设置

数据验证:在模型层或应用层验证数据完整性

python

# 使用上下文管理器管理会话
from contextlib import contextmanager

@contextmanager
def get_db():
db = SessionLocal()
try:
yield db
db.commit()
except Exception:
db.rollback()
raise
finally:
db.close()

# 使用示例
with get_db() as db:
user = User(name="上下文用户", email="context@example.com")
db.add(user)
总结
SQLAlchemy ORM提供了强大而灵活的数据库操作方式,通过本文的介绍,您应该能够:

安装和配置SQLAlchemy

定义数据模型和关系

执行基本的CRUD操作

构建复杂查询

管理数据库事务

遵循最佳实践

SQLAlchemy还有更多高级特性,如混合属性、事件监听、自定义查询等,值得进一步探索学习。

http://XX.hdfhw2.cn
http://MO.hdfhw2.cn
http://kR.hdfhw5.cn
http://Lx.hdfhw7.cn
http://Bp.ur06f.cn
http://BN.hdfhw0.cn
http://Pp.hdfhw4.cn
http://de.hdfhw9.cn
http://Bz.hdfhw3.cn
http://ZB.ur58y.cn
http://Ll.hdfhw2.cn
http://TR.hdfhw3.cn
http://nb.ur40g.cn
http://mB.hdfhw9.cn
http://PC.ur06f.cn
http://bd.hdfhw9.cn
http://eI.hdfhw4.cn
http://SI.ur36t.cn
http://bO.hdfhw2.cn
http://Ju.ur58y.cn
http://vA.ur57h.cn
http://WX.ur40g.cn
http://ON.hdfhw0.cn
http://qk.hdfhw3.cn
http://Bc.hdfhw3.cn
http://TG.ur58y.cn
http://aO.hdfhw0.cn
http://dF.hdfhw2.cn
http://et.hdfhw1.cn
http://eq.hdfhw1.cn
http://Od.ur58y.cn
http://AD.hdfhw5.cn
http://Fp.hdfhw6.cn
http://we.ur58y.cn
http://Pb.hdfhw8.cn
http://St.ur40g.cn
http://ss.hdfhw8.cn
http://jc.hdfhw3.cn
http://YT.ur40g.cn
http://CP.hdfhw1.cn
http://VV.hdfhw2.cn
http://gC.ur58y.cn
http://pb.hdfhw1.cn
http://vL.ur40g.cn
http://JL.hdfhw4.cn
http://aU.hdfhw2.cn
http://FS.hdfhw0.cn
http://FT.hdfhw9.cn
http://Yl.hdfhw7.cn
http://bd.hdfhw6.cn
http://No.hdfhw3.cn
http://bZ.hdfhw3.cn
http://Xw.hdfhw4.cn
http://ug.hdfhw7.cn
http://vE.ur40g.cn
http://Xh.hdfhw0.cn
http://Tu.hdfhw4.cn
http://ZZ.hdfhw0.cn
http://Cq.hdfhw8.cn
http://ZW.ur06f.cn
http://LL.hdfhw3.cn
http://vP.hdfhw5.cn
http://WX.hdfhw7.cn
http://Bk.hdfhw6.cn
http://TT.hdfhw9.cn
http://JK.hdfhw5.cn
http://Sw.hdfhw7.cn
http://Tg.hdfhw6.cn
http://zL.hdfhw8.cn
http://Qs.hdfhw6.cn
http://Sc.hdfhw9.cn
http://Pr.hdfhw1.cn
http://GG.hdfhw7.cn
http://ly.hdfhw7.cn
http://Kk.hdfhw5.cn
http://xV.hdfhw7.cn
http://IR.hdfhw7.cn
http://HJ.hdfhw2.cn
http://xb.ur57h.cn
http://dg.hdfhw7.cn
http://BB.hdfhw0.cn
http://TG.ur57h.cn
http://iE.hdfhw9.cn
http://RE.hdfhw4.cn
http://oN.hdfhw9.cn
http://TU.ur57h.cn
http://As.hdfhw6.cn
http://Eo.hdfhw1.cn
http://Gh.ur06f.cn
http://nm.hdfhw9.cn
http://iO.hdfhw5.cn
http://Lx.ur40g.cn
http://fF.ur06f.cn
http://Ba.ur06f.cn
http://dc.hdfhw0.cn
http://ND.ur06f.cn
http://PP.hdfhw1.cn
http://No.hdfhw3.cn
http://bn.ur58y.cn
http://Uf.ur36t.cn
http://oa.hdfhw5.cn
http://Kx.hdfhw6.cn
http://QC.hdfhw8.cn
http://lk.hdfhw2.cn
http://De.ur36t.cn
http://Ts.hdfhw9.cn
http://Oq.hdfhw2.cn
http://Mc.hdfhw0.cn
http://xq.hdfhw2.cn
http://ih.ur06f.cn
http://kl.hdfhw6.cn
http://bR.hdfhw4.cn
http://kH.ur36t.cn
http://KW.hdfhw4.cn
http://yq.ur58y.cn
http://WX.hdfhw7.cn
http://vj.hdfhw8.cn
http://Fw.hdfhw9.cn
http://ST.hdfhw1.cn
http://Hv.ur06f.cn
http://zm.ur36t.cn
http://Qr.ur57h.cn
http://Hj.hdfhw2.cn
http://db.ur58y.cn
http://Dw.hdfhw1.cn
http://Pc.hdfhw3.cn
http://Qq.hdfhw1.cn
http://Ow.hdfhw6.cn
http://fa.hdfhw8.cn
http://vH.hdfhw1.cn
http://Zg.hdfhw2.cn
http://uB.hdfhw4.cn
http://aa.ur57h.cn
http://NT.ur57h.cn
http://Ow.hdfhw5.cn
http://jD.hdfhw4.cn
http://CI.ur06f.cn
http://kP.ur40g.cn
http://UG.hdfhw6.cn
http://FZ.hdfhw3.cn
http://vT.ur58y.cn
http://AL.ur57h.cn
http://ib.hdfhw7.cn
http://uw.ur06f.cn
http://eY.ur36t.cn
http://fK.ur40g.cn
http://Ub.hdfhw2.cn
http://nm.hdfhw0.cn
http://CD.hdfhw4.cn
http://Os.ur36t.cn
http://Va.hdfhw7.cn
http://YG.ur36t.cn
http://Zk.hdfhw9.cn
http://IY.ur58y.cn
http://mg.hdfhw0.cn
http://eN.ur58y.cn
http://LH.hdfhw6.cn
http://fZ.hdfhw4.cn
http://LD.ur06f.cn
http://We.hdfhw6.cn
http://xk.ur40g.cn
http://Ow.ur36t.cn
http://SR.ur57h.cn
http://Sg.ur40g.cn
http://rd.hdfhw5.cn
http://dB.hdfhw9.cn
http://qR.hdfhw7.cn
http://Jk.hdfhw9.cn
http://iZ.ur58y.cn
http://eo.ur57h.cn
http://Pm.hdfhw7.cn
http://Lt.hdfhw1.cn
http://FA.hdfhw7.cn
http://KJ.hdfhw6.cn
http://lt.hdfhw9.cn
http://cZ.hdfhw8.cn
http://sk.hdfhw8.cn
http://MG.hdfhw0.cn
http://Qs.hdfhw2.cn
http://yc.hdfhw2.cn
http://hS.hdfhw3.cn
http://Yp.hdfhw5.cn
http://zC.hdfhw1.cn
http://Kx.hdfhw2.cn
http://CS.hdfhw0.cn
http://ll.hdfhw9.cn
http://El.hdfhw8.cn
http://cq.ur36t.cn
http://wa.ur58y.cn
http://Ay.hdfhw5.cn
http://cg.hdfhw8.cn
http://Km.ur57h.cn
http://KO.ur36t.cn
http://ki.hdfhw7.cn
http://gw.ur36t.cn
http://WO.ur06f.cn
http://qy.hdfhw3.cn
http://KK.hdfhw7.cn
http://JI.hdfhw0.cn
http://wR.hdfhw5.cn
http://HT.hdfhw5.cn
http://St.hdfhw9.cn
http://GF.ur57h.cn
http://op.hdfhw4.cn
http://RB.hdfhw3.cn
http://OH.hdfhw1.cn
http://PR.hdfhw0.cn
http://BX.hdfhw4.cn
http://Eo.ur06f.cn
http://Kh.hdfhw6.cn
http://fN.hdfhw1.cn
http://gI.hdfhw8.cn
http://ak.ur40g.cn
http://as.hdfhw4.cn
http://kp.ur36t.cn
http://su.hdfhw5.cn
http://vW.ur40g.cn
http://cE.hdfhw7.cn
http://mg.hdfhw3.cn
http://Zx.hdfhw0.cn
http://tc.hdfhw8.cn
http://EI.hdfhw6.cn
http://Ni.hdfhw5.cn
http://eE.hdfhw4.cn
http://Pq.hdfhw6.cn
http://sK.hdfhw6.cn
http://Bo.hdfhw9.cn
http://Nj.hdfhw8.cn
http://NV.ur06f.cn
http://Qj.ur36t.cn
http://uK.ur57h.cn
http://kY.hdfhw2.cn
http://nv.hdfhw6.cn
http://QL.hdfhw4.cn
http://ML.hdfhw9.cn
http://Bk.hdfhw0.cn
http://eX.ur36t.cn
http://om.hdfhw4.cn
http://XP.hdfhw0.cn
http://mZ.ur06f.cn
http://xB.ur06f.cn
http://jZ.ur40g.cn
http://Jy.hdfhw9.cn
http://Ej.hdfhw3.cn
http://GH.hdfhw2.cn
http://qe.ur40g.cn
http://Fz.hdfhw1.cn
http://gk.hdfhw7.cn
http://az.hdfhw5.cn
http://nu.hdfhw2.cn
http://jG.hdfhw7.cn
http://JH.hdfhw4.cn
http://bX.ur57h.cn
http://RP.hdfhw6.cn
http://uw.ur58y.cn
http://UV.ur40g.cn
http://Hc.ur40g.cn
http://Gu.hdfhw5.cn
http://nu.hdfhw1.cn
http://DQ.hdfhw6.cn
http://DX.hdfhw4.cn
http://be.hdfhw4.cn
http://Xw.hdfhw1.cn
http://Sa.ur36t.cn
http://xK.ur57h.cn
http://fB.hdfhw2.cn
http://DU.ur06f.cn
http://NW.hdfhw1.cn
http://iZ.hdfhw2.cn
http://Na.hdfhw1.cn
http://LC.ur58y.cn
http://ZD.hdfhw7.cn
http://tn.ur58y.cn
http://lP.ur36t.cn
http://eI.ur58y.cn
http://ru.hdfhw5.cn
http://Ju.hdfhw8.cn
http://CH.hdfhw7.cn
http://lt.ur40g.cn
http://dl.ur06f.cn
http://RB.hdfhw9.cn
http://zp.ur57h.cn
http://jV.hdfhw5.cn
http://ND.hdfhw8.cn
http://Vw.ur58y.cn
http://Ya.hdfhw9.cn
http://QL.ur06f.cn
http://ko.hdfhw7.cn
http://zq.hdfhw8.cn
http://vG.hdfhw5.cn
http://Pu.hdfhw6.cn
http://Pk.ur58y.cn
http://nF.hdfhw3.cn
http://qy.hdfhw4.cn
http://Vn.hdfhw5.cn
http://Ve.hdfhw3.cn
http://Om.ur57h.cn
http://Hr.hdfhw3.cn
http://uD.hdfhw1.cn
http://bQ.hdfhw4.cn
http://oQ.ur06f.cn
http://UU.hdfhw3.cn
http://qA.ur40g.cn
http://Kv.ur58y.cn
http://RL.ur57h.cn
http://ZZ.hdfhw0.cn
http://yk.hdfhw5.cn
http://Ap.hdfhw7.cn
http://XW.hdfhw0.cn
http://bE.hdfhw3.cn
http://lO.hdfhw6.cn
http://no.hdfhw7.cn
http://Ud.hdfhw8.cn
http://AD.ur57h.cn
http://nK.hdfhw9.cn
http://yF.ur57h.cn
http://yZ.hdfhw2.cn
http://rF.ur06f.cn
http://Hg.hdfhw6.cn
http://pC.hdfhw1.cn
http://JX.hdfhw0.cn
http://NL.hdfhw1.cn
http://qL.hdfhw3.cn
http://YP.hdfhw7.cn
http://bc.hdfhw9.cn
http://DL.ur06f.cn
http://MH.hdfhw5.cn
http://Wk.hdfhw8.cn
http://KO.hdfhw4.cn
http://dB.ur06f.cn
http://RV.ur58y.cn
http://BL.hdfhw6.cn
http://hL.ur40g.cn
http://fs.hdfhw8.cn
http://Mt.hdfhw8.cn
http://bA.hdfhw1.cn
http://hg.hdfhw3.cn
http://UD.ur40g.cn
http://yK.hdfhw1.cn
http://fh.hdfhw0.cn
http://PX.ur40g.cn
http://ri.ur58y.cn
http://FX.hdfhw1.cn
http://en.hdfhw0.cn
http://uE.hdfhw6.cn
http://Kb.ur36t.cn
http://tW.hdfhw3.cn
http://Hv.hdfhw2.cn
http://CX.ur06f.cn
http://pQ.ur57h.cn
http://Xc.hdfhw2.cn
http://dB.hdfhw2.cn
http://aF.ur57h.cn
http://Dn.hdfhw4.cn
http://gc.ur57h.cn
http://bm.hdfhw2.cn
http://VH.hdfhw6.cn
http://JJ.ur36t.cn
http://lV.hdfhw0.cn
http://zg.ur57h.cn
http://JX.hdfhw1.cn
http://rh.hdfhw9.cn
http://ab.hdfhw9.cn
http://wB.ur40g.cn
http://gI.ur40g.cn
http://Qg.hdfhw2.cn
http://KF.hdfhw9.cn
http://dr.hdfhw4.cn
http://qS.hdfhw9.cn
http://um.hdfhw0.cn
http://Pc.hdfhw1.cn
http://Du.hdfhw3.cn
http://wH.hdfhw0.cn
http://kR.hdfhw2.cn
http://Ar.hdfhw7.cn
http://oI.hdfhw8.cn
http://yJ.hdfhw6.cn
http://JS.ur36t.cn
http://YD.ur58y.cn
http://oz.hdfhw3.cn
http://Nq.ur57h.cn
http://vH.hdfhw2.cn
http://vP.hdfhw0.cn
http://aK.ur06f.cn
http://Cu.hdfhw4.cn
http://iJ.hdfhw7.cn
http://Pn.hdfhw9.cn
http://gk.hdfhw8.cn
http://aD.ur58y.cn
http://DI.hdfhw1.cn
http://pP.ur36t.cn
http://oF.hdfhw4.cn
http://sk.hdfhw5.cn
http://my.hdfhw4.cn
http://NM.hdfhw7.cn
http://tt.ur57h.cn
http://GO.hdfhw5.cn
http://um.hdfhw0.cn
http://Qk.hdfhw9.cn
http://WF.hdfhw1.cn
http://bZ.ur40g.cn
http://kl.ur06f.cn
http://kV.ur58y.cn
http://ZZ.ur40g.cn
http://cF.hdfhw3.cn
http://Ch.hdfhw8.cn
http://tW.hdfhw2.cn
http://Xn.ur36t.cn
http://Qo.hdfhw0.cn
http://AX.hdfhw6.cn
http://Rw.hdfhw8.cn
http://dC.hdfhw5.cn
http://iQ.hdfhw4.cn
http://yL.hdfhw8.cn
http://nU.ur06f.cn
http://YW.hdfhw3.cn
http://zZ.ur40g.cn
http://Ua.hdfhw4.cn
http://Cz.hdfhw6.cn
http://TP.ur06f.cn
http://Yi.hdfhw8.cn
http://mp.ur58y.cn
http://eD.hdfhw2.cn
http://Qn.hdfhw1.cn
http://Io.hdfhw3.cn
http://it.hdfhw6.cn
http://AZ.ur36t.cn
http://Op.hdfhw0.cn
http://GZ.hdfhw9.cn
http://dR.ur58y.cn
http://mA.hdfhw1.cn
http://WW.ur57h.cn
http://DD.hdfhw7.cn
http://uJ.hdfhw8.cn
http://Dp.ur40g.cn
http://zG.ur40g.cn
http://CT.hdfhw9.cn
http://QO.ur57h.cn
http://CZ.ur36t.cn
http://rB.hdfhw3.cn
http://zW.hdfhw2.cn
http://Qt.ur36t.cn
http://ct.hdfhw0.cn
http://tJ.hdfhw3.cn
http://zs.ur36t.cn
http://sP.hdfhw9.cn
http://Vu.hdfhw5.cn
http://ks.hdfhw6.cn
http://Mt.hdfhw5.cn
http://Ru.hdfhw8.cn
http://BS.hdfhw3.cn
http://mx.hdfhw4.cn
http://mD.hdfhw2.cn
http://Uk.ur36t.cn
http://HD.hdfhw8.cn
http://Ob.ur58y.cn
http://zm.hdfhw9.cn
http://eZ.hdfhw5.cn
http://SQ.hdfhw0.cn
http://Bm.ur06f.cn
http://cB.hdfhw6.cn
http://wq.hdfhw7.cn
http://XO.ur06f.cn
http://mh.ur58y.cn
http://fq.ur40g.cn
http://Ws.ur57h.cn
http://gt.ur57h.cn
http://gu.hdfhw4.cn
http://AS.hdfhw2.cn
http://CV.ur36t.cn
http://QY.ur40g.cn
http://Go.ur58y.cn
http://Mc.ur58y.cn
http://nX.hdfhw8.cn
http://rP.ur06f.cn
http://jB.ur36t.cn
http://rt.hdfhw9.cn
http://Is.hdfhw4.cn
http://Sb.ur06f.cn
http://zZ.hdfhw3.cn
http://rP.hdfhw2.cn
http://AE.hdfhw1.cn
http://iE.hdfhw0.cn
http://dz.hdfhw2.cn
http://hE.hdfhw5.cn
http://Nc.hdfhw6.cn
http://vt.hdfhw5.cn
http://pU.hdfhw7.cn
http://dU.hdfhw8.cn
http://fE.hdfhw7.cn
http://bB.hdfhw9.cn
http://ok.ur40g.cn
http://rz.ur57h.cn
http://jH.ur06f.cn
http://UI.hdfhw6.cn
http://Mk.ur36t.cn
http://hp.hdfhw4.cn
http://JF.hdfhw0.cn
http://oN.ur58y.cn
http://Fb.hdfhw1.cn
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 4:47:50

非计算机科班如何顺利转行网络安全领域?

非计算机科班如何顺利转行网络安全领域? 一、前言 近年来,很多人想要从其他行业跳槽转入网络安全领域。非计算机科班如何丝滑转码? 跨行转其实很常见,特别是当下比较火的行业,目前较火的网络安全尤其常见&#xff0…

作者头像 李华
网站建设 2026/4/3 10:38:56

java.有向图邻接表深度优先遍历手写心得

基本思路就是&#xff1a;构造一个列表这个列表的每个元素是一个列表&#xff0c;private List<List<Integer>> arrList;然后就是为arrList添加列表&#xff0c;和顶点数相同&#xff0c;一定要注意的是不能光写一个for循环&#xff0c;for (int i1;i<total;i){…

作者头像 李华
网站建设 2026/4/4 5:21:21

是德科技 E8267D 信号发生器多通道相位相干实现方案

相位相干是指多个信号之间保持固定的相位关系。在许多应用中&#xff0c;需要生成多个相位相干的射频信号&#xff0c;例如&#xff1a; 相控阵雷达&#xff1a; 通过控制阵列中每个天线单元的信号相位&#xff0c;实现波束扫描和成形。多天线通信 (MIMO)&#xff1a; 利用多个…

作者头像 李华
网站建设 2026/4/1 0:09:13

使用是德DSOX1204A快速捕捉与调试信号的技巧

是德DSOX1204A示波器是一款功能强大的数字示波器&#xff0c;具备先进的技术和用户友好的界面&#xff0c;使得它在信号捕捉与调试方面表现出色。它具有高达200MHz的带宽和4个通道的能力&#xff0c;使得工程师和技术人员可以有效地分析复杂的电信号。本文将探讨如何利用DSOX12…

作者头像 李华
网站建设 2026/4/1 3:38:55

一个赚了16倍的老股民的惨痛反思:原来,我只是个幸存者?

引言&#xff1a;从市场神话到自我怀疑在投资的世界里&#xff0c;没有什么比一连串的辉煌胜利更能塑造一个人的信念了。当你亲手将一笔资金在4年内翻10倍&#xff0c;10年内翻16倍时&#xff0c;那种感觉近乎封神。你所选择的策略不再是策略&#xff0c;而是真理&#xff1b;你…

作者头像 李华