1.模块常用方法
SMTP类定义:smtplib.SMTP([host[,port[,local_hostname[, timeout]]]]),作为SMTP的构造函数,功能是与smtp服务器建立连接, 在连接成功后,就可以向服务器发送相关请求,比如登录、校验、发 送、退出等。host参数为远程smtp主机地址,比如smtp.163.com;port为 连接端口,默认为25;local_hostname的作用是在本地主机的FQDN(完 整的域名)发送HELO/EHLO(标识用户身份)指令,timeout为连接或 尝试在多少秒超时。
SMTP类具有如下方法:
SMTP.connect ([host[,port]])方法,连接远程smtp主机方法, host为远程主机地址,port为远程主机smtp端口,默认25,也可以直接 使用host:port形式来表示,
例如: SMTP.connect(“smtp.163.com” , “25”)。 ·
SMTP.login (user,password)方法,远程smtp主机的校验方法, 参数为用户名与密码,
例如: SMTP.login(“[email protected] ” , “sdjkg358”)。
SMTP.sendmai l(from_addr,to_addrs,msg[,mail_options, rcpt_options])方法,实现邮件的发送功能,参数依次为是发件人、收 件人、邮件内容,
例如: SMTP.sendmail(“[email protected] ” , “[email protected] ” , body),其中body内容定义如下:
"""From: [email protected] To: [email protected] Subject: test mail test mail body
2.最简单的邮件代码
# !/usr/bin/python
# _*_coding:utf-8_*_
# ****************************************************************#
# ScriptName: smtplib01.py
# Author: BenjaminYang
# Create Date: 2019-05-18 08:55
# Modify Author: BenjaminYang
# Modify Date: 2019-05-18 08:55
# Function:
# ***************************************************************#
import smtplib
import string
HOST =" smtp.163.com " # 定义smtp主机
SUBJECT=" python send email "
TO =" [email protected] " # 定义邮件的收件人
FROM=" [email protected] " # 定义邮件发件人
text=" Python rules them all " # 邮件内容
BODY=string.join(( # 组装sendmail方法的邮件主体内容,各段以"\r\n"进行分隔
" From: %s " % FROM,
" To: %s " % TO,
" Subject: %s " % SUBJECT,
"" ,
text
), " \r\n " )
server =smtplib.SMTP() # 创建一个SMTP()对象
server.connect(HOST," 25 " )
server.starttls() # 启动安全传输模式
server.login(" [email protected] " ," yourpwd " ) # 邮箱账号登录校验
server.sendmail(FROM,TO,BODY) # 邮件发送
server.quit() # 断开smtp连接
执行后将会收到如下的邮件
3.定制个性化的邮件格式方法
通过邮件传输简单的文本已经无法满足我们的需求,比如我们时 常会定制业务质量报表,在邮件主体中会包含HTML、图像、声音以及 附件格式等,MIME(Multipurpose Internet Mail Extensions,多用途互联 网邮件扩展)作为一种新的扩展邮件格式很好地补充了这一点,更多 MIME知识见http://zh.wikipedia.org/wiki/MIME。下面介绍几个Python中 常用的MIME实现类:
·email.mime.multipart.MIMEMultipart ([_subtype[,boundary[, _subparts[,_params]]]]),作用是生成包含多个部分的邮件体的MIME 对象,参数_subtype指定要添加到"Content-type:multipart/subtype"报头 的可选的三种子类型,分别为mixed、related、alternative,默认值为 mixed。定义mixed实现构建一个带附件的邮件体;定义related实现构建 内嵌资源的邮件体;定义alternative则实现构建纯文本与超文本共存的邮 件体。
·email.mime.audio.MIMEAudio (_audiodata[,_subtype[, _encoder[,**_params]]]),创建包含音频数据的邮件体,_audiodata包 含原始二进制音频数据的字节字符串。
·email.mime.image.MIMEImage (_imagedata[,_subtype[, _encoder[,**_params]]]),创建包含图片数据的邮件体,_imagedata是 包含原始图片数据的字节字符串。
·email.mime.text.MIMEText (_text[,_subtype[,_charset]]),创建 包含文本数据的邮件体,_text是包含消息负载的字符串,_subtype指定 文本类型,支持plain(默认值)或html类型的字符串。
可以将email.mime理 解成smtplib模块邮件内容主体的扩展,从原先默认只支持纯文本格式扩 展到HTML,同时支持附件、音频、图像等格式,smtplib只负责邮件的 投递即可。下面介绍在日常运营工作中邮件应用的几个示例。
示例1:实现HTML格式的数据报表
邮件纯文本的邮件内容已经不能满足我们多样化的需求,本示例通过 引入email.mime的MIMEText类来实现支持HTML格式的邮件,支持所有 HTML元素,包含表格、图片、动画、CSS样式、表单等。本示例使用 HTML的表格定制美观的业务流量报表,实现代码如下:
【/home/test/smtplib/simple2.py】
# _*_coding:utf-8_*_
# ****************************************************************#
# ScriptName: smtplib02.py
# Author: BenjaminYang
# Create Date: 2019-06-01 20:04
# Modify Author: BenjaminYang
# Modify Date: 2019-06-01 20:04
# Function:
# ***************************************************************#
# !/usr/bin/python
import smtplib
from email.mime.text import MIMEText # 导入MIMEText类
HOST=" smtp.163.com " # 定义smtp主机
Subject=u" 官网流量数据表 " # 定义邮件主题
To=" [email protected] " # 定义收件人
From=" [email protected] " # 定义发件人
# 创建一个MIMEText对象,分别指定HTML内容、类型(文本或 html)、字符编码
msg=MIMEText("""
*官网数据
更多>>
1)日访问量:152433 访问次数:23651 页面浏览量: 45123 点击数:545122 数据流量:504Mb
2)状态码信息 500:105 404:3264 503:214
3)访客浏览器信息 IE:50% firefox:10% chrome:30% other:10%
4)页面信息 /index.php 42153 /view.php 21451 /login.php 5112
""" ," html " ," utf-8 " )
msg[ ' Subject ' ]=Subject # 邮件主题
msg[' From ' ]=From # 邮件发件人,邮件头部可见
msg[' To ' ]=To # 邮件收件人,邮件头部可见
try :
server =smtplib.SMTP() # 创建一个SMTP()对象
server.connect(HOST," 25 " ) # 通过connect方法连接smtp主机
server.starttls() # 启动安全传输模式
server.login(" [email protected] " ," yourpwd " ) # 邮箱登录账号
server.sendmail(From,To,msg.as_string()) # 邮件发送
server.quit() # 断开smtp连接
print " 邮件发送成功! "
except Exception, e:
print " 失败: " +str(e)
示例2:实现图文格式的服务器性能报表邮件
示例1通过MIMEText类来实现HTML格式的邮件,当要求包含图片 数据的邮件内容时,需要引用MIMEImage类,若邮件主体由多个MIME 对象组成,则同时需引用MIMEMultipart类来进行组装。本示例通过 MIMEText与MIMEImage类的组合来实现图文格式的服务器性能报表邮 件的定制,实现代码如下:
【/home/test/smtplib/simple3.py】
# _*_coding:utf-8_*_
# ****************************************************************#
# ScriptName: smtplib03.py
# Author: BenjaminYang
# Create Date: 2019-06-01 22:53
# Modify Author: BenjaminYang
# Modify Date: 2019-06-01 22:53
# Function:
# ***************************************************************#
# !/usr/bin/python
import smtplib
from email.mime.multipart import MIMEMultipart # 导入MIMEMultipart类
from email.mime.text import MIMEText # 导入MIMEText类
from email.mime.image import MIMEImage # 导入MIMEImage类
HOST=" smtp.163.com " # 定义smtp主机
SUBJECT=u" 业务性能数据报表 " # 定义邮件主题
TO=" [email protected] " # 定义邮件收件人
FROM=" [email protected] " # 定义邮件发件人
def addimg(src,imgid): # 添加图片函数,参数1:图片路径,参数2:图片id
fp=open(src," rb " ) # 打开文件
msgImage=MIMEImage(fp.read()) # 创建MIMEImage对象,读取图片内容并作为 参数
fp.close() # 关闭文件
msgImage.add_header(" Content-ID " ,imgid) # 指定图片文件的Content-ID, 标签src用到
return msgImage
msg =MIMEMultipart(" related " )
# 标签src用到return msgImage 返回msgImage对象 msg = MIMEMultipart('related')创建MIMEMultipart对象,采用related定义内嵌 资源的邮件体
# 创建一个MIMEText对象,HTML元素包括表格及图片
msgtext = MIMEText("""
""" ," html " ," utf-8 " )
msg.attach(msgtext)
msg.attach(addimg( " img/bytes_io.png " ," io " ))
msg.attach(addimg( " img/myisam_key_hit.png " ," key_hit " ))
msg.attach(addimg( " img/os_swap.png " ," swap " ))
msg.attach(addimg( " img/os_mem.png " ," mem " ))
msg[ ' Subject ' ]=SUBJECT
msg[ ' From ' ]=FROM
msg[ ' To ' ]=TO
try :
server =smtplib.SMTP()
server.connect(HOST, " 25 " )
server.starttls()
server.login( " [email protected] " ," yourpwd " ) # 邮箱账号登录效验
server.sendmail(FROM,TO,msg.as_string())
server.quit()
print ' 邮件发送成功! '
except Exception,e:
print " 失败: " +str(e)
示例3:实现带附件格式的业务服务质量周报邮件
本示例通过MIMEText与MIMEImage类的组合,实现图文邮件格 式。另通过MIMEText类再定义Content-Disposition属性来实现带附件的 邮件。我们可以利用这些丰富的特性来定制周报邮件,如业务服务质量 周报。实现代码如下:
【/home/test/smtplib/simple4.py】
# _*_coding:utf-8_*_
# ****************************************************************#
# ScriptName: smtplib03.py
# Author: BenjaminYang
# Create Date: 2019-06-01 22:53
# Modify Author: BenjaminYang
# Modify Date: 2019-06-01 22:53
# Function:
# ***************************************************************#
# !/usr/bin/python
import smtplib
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart # 导入MIMEMultipart类
from email.mime.text import MIMEText # 导入MIMEText类
from email.mime.image import MIMEImage # 导入MIMEImage类
HOST=" smtp.163.com " # 定义smtp主机
SUBJECT=u" 业务性能数据报表 " # 定义邮件主题
TO=" [email protected] " # 定义邮件收件人
FROM=" [email protected] " # 定义邮件发件人
def addimg(src,imgid): # 添加图片函数,参数1:图片路径,参数2:图片id
fp=open(src," rb " ) # 打开文件
msgImage=MIMEImage(fp.read()) # 创建MIMEImage对象,读取图片内容并作为 参数
fp.close() # 关闭文件
msgImage.add_header(" Content-ID " ,imgid) # 指定图片文件的Content-ID, 标签src用到
return msgImage
msg =MIMEMultipart()
# 标签src用到return msgImage 返回msgImage对象 msg = MIMEMultipart('related')创建MIMEMultipart对象,采用related定义内嵌 资源的邮件体
# 创建一个MIMEText对象,HTML元素包括表格及图片
msgtext = MIMEText(
" 官网业务周平均延时图表: 详细内容见附件。 "
, " html " ," utf-8 " )
msg.attach(msgtext) # MIMEMultipart对象附加MIMEText的内容
msg.attach(addimg(" img/weekly.jpg " ," weekly " ))
# 创建一个MIMEText对象,附加week_report.xlsx文档
attach = MIMEText(open(" doc/week_report.xlsx " ," rb " ).read(),' base64 ' ,' utf-8 ' )
attach[ " Content-Type " ] = ' application/octet-stream ' # 指定文件格式类型
# 指定Content-Disposition值为attachment则出现下载保存对话框,保存的默认文件名使用filename指定
# 由于qqmail使用gb18030页面编码,为保证中文文件名不出现乱码,对文件名进行编码转换
attach[" Content-Disposition " ] = " attachment;filename=\"业务服务质量周报(12 周).xlsx\" " .decode(" utf-8 " ).encode(" gb18030 " )
msg.attach(attach) # MIMEMultipart对象附加MIMEText的内容
msg[' Subject ' ]=SUBJECT
msg[ ' From ' ]=FROM
msg[ ' To ' ]=TO
try :
server =smtplib.SMTP()
server.connect(HOST, " 25 " )
server.starttls()
server.login( " [email protected] " ," yourpwd " ) # 邮箱账号登录效验
server.sendmail(FROM,TO,msg.as_string())
server.quit()
print ' 邮件发送成功! '
except Exception,e:
print " 失败: " +str(e)
你可能感兴趣的:(python运维开发常用模块(6)发送电子邮件模块smtplib)
PCB 制版的注意事项
菜只因C
stm32
一、设计阶段(一)布局规划元件间距:元件间距的设置在PCB设计中至关重要,它直接影响到电路板的可制造性、可维护性以及散热性能。对于手工焊接,元件引脚间距离不小于1mm是较为安全的标准,这能让操作人员有足够空间准确地将焊料施加到引脚连接处,避免因空间狭窄导致的焊接短路或虚焊问题。例如在一个采用直插式元件较多的电源模块中,电解电容、功率电阻等元件引脚间距如果小于1mm,焊接时电烙铁头很容易同时接触到相
Sijia_y的个人经历以及计算机行业发展
Sijia_y
python
如今互联网发展的速度甚是快,以至于技术都在更新迭代。稍有不注意可能就会被淘汰甚至是替代。作为一名中专生,我的成绩也是很差。因为高中考不上的缘故,来到了江苏上学。计算机行业我了解的并不是很多,当时只是听说工资高,铁饭碗。我是一个很懒的人,也是很贪玩。并没有学习很高的兴趣。我接触编程语言,完全是因为我的朋友。因为他是自学C语言的,后面他参加比赛得奖了。我就觉得非常厉害。我就开始学习Python,学会一
第 146 题「LRU缓存机制」(手撸LRU算法)
冰火同学
力扣 缓存 数据结构 算法
首选用比较通俗的语言来讲一讲LRU算法,那手机内存来举例子,就是当内存超出了手机设置的内存后,就要删除了内存,那删除那部分内存呢,LRU算法就是提供一个策略来选择那些需要缓存需要被删除掉,就是谁隔得最远就删除掉谁。LRU算法的描述怎么描述呢,其实上述描述的就是LRU算法要实现的逻辑只不多是人能理解的活,那么如何从写代码的角度来说一下实现LRU算法的逻辑呢,这个时候就要通过基础的数据结构结合来讲LR
为什么Python使用者远远大于perl
perlpython
不认为两者的语法差异是造成如此局面的主要原因.perl的语法虽然比较特立独行,但也不是很难.总结如下原因:library(或者叫package)的使用如果是本语言原生的library,那没有问题.如果是需要调用外部函数/过程的package的话,那么就会有巨大的差异.python是预编译然后从pypi上下载python(pip)将package下载到本地然后解压后将package内容安装到不同的指
AI 问答系统实战:用 Python + Flask + LLM 打造你的智能对话机器人!
Leaton Lee
人工智能 python flask
开篇互动:你是否想拥属于自己的AI问答机器人?“你是否想过拥有一个可以随时为你解答问题、提供建议的AI助手?”随着大语言模型(LLM)的快速发展,打造一个智能问答系统已经成为可能!本文将手把手教你如何利用Python和Flask快速搭建一个属于自己的AI问答系统,并集成强大的语言模型(如OpenAI的GPT-3.5或HuggingFace的LLaMA)。无论是技术小白还是有一定经验的开发者,都能轻
Webpack 打包详细教程
oliver.chau
前端开发 webpack 前端 node.js
Webpack是一个现代JavaScript应用的静态模块打包工具,它可以处理JavaScript、CSS、图片等资源,并优化它们以提高性能。以下是Webpack从基础到进阶的详细教程。1.Webpack基础概念Webpack的核心概念包括:Entry(入口):Webpack开始打包的起点。Output(输出):打包后的文件存放路径。Loaders(加载器):转换非JavaScript资源(如CS
实现课程安排模板鸿蒙示例代码
本文原创发布在华为开发者社区。介绍本示例基于Tabs容器组件、Scroll组件、Grid组件实现了上课模块的排版、下半部分使用List组件实现了第一天、第二天的任务列表、班级群界面中使用List组件实现消息的通知。实现课程安排模板源码链接效果预览使用说明如果在运行该示例代码时,出现运行不了的情况,可尝试选择DevEcoStudio菜单栏Build里面的CleanProject选项,来清理工程。实现
总结.NET CAD各种命令发送方式
一个成长中的码农
.net cad CAD二次开发 .net 算法 c#
.NETAPI提供了各种的调用命令的方式,有异步与同步的发送命令,本文章总结了各种命令发送的方法与方式。在最后调用命令的方式此方式会在当前整个命令结束后才会调用,并且支持文档的切换与锁文档//////命令结束后调用命令//////命令publicstaticvoidSendComandFinally(stringcommand){DocumentacdDoc=Autodesk.AutoCAD.Ap
技术分享 | MySQL8.0 内部临时表占用磁盘空间问题排查
数据库mysql
本文为墨天轮数据库管理服务团队第43期技术分享,内容原创,如需转载请联系小墨(VX:modb666)并注明来源。概念描述到了mysql8.0版本,SQL运行过程中产生的内部临时表已经有了变化,存放位置由innodb\_temp\_tablespaces\_dir参数控制,默认放在$DATADIR/#innodb\_temp/目录下,由多个.ibt文件构成。并且当数据库连接断开时,.ibt文件的大小
2025 年政府工作报告中的科技要点解读以及机会点
番茄老夫子
科技 人工智能
2025年政府工作报告中的科技要点主要包括以下方面:培育未来产业:建立未来产业投入增长机制,培育生物制造、量子科技、具身智能、6G等未来产业,体现了对前沿科技领域的高度重视,旨在抢占未来科技和产业发展的制高点,这些领域具有巨大的发展潜力和创新空间,有望为经济增长带来新的动力。壮大新兴产业:深入推进战略性新兴产业融合集群发展,开展新技术新产品新场景大规模应用示范行动,推动商业航天、低空经济等新兴产业
C#使用Winform实现简单的编辑器:编译、运行、关键字、注释高亮显示。
吾与谁归in
c# java c++
发布文章的目的即是学习也是分享保存。目录1、简单的界面设计2、实现代码(1)用到的变量字段(2)窗体初始化、加载(3)执行操作:编译、运行(4)编译功能方法(5)高亮显示(6)其它3、运行效果4、说明1、文本发生变化的重绘滚动(闪烁)问题。2、光标位置显示问题。3、关键字高亮显示后,直接在后面输入文字格式问题。1、简单的界面设计程序分为脚本编辑框,操作、结果显示栏。脚本编辑栏:可以编写自己想要的代
tcc编译器教程6 进一步学习编译gmake源代码
刘阿去
学习 c语言
本文以编译gmake为例讲解如何使用tcc进行复杂一点的c代码的编译1简介前面主要讲解了如何编译lua解释器,lua解释器的编译很简单也很容易理解.当然大部分c语言程序编译没那么简单,下面对前面的gmake程序进行编译.2gmake源码结构首先打开之前tcc-busybox-for-win32\gmake文件夹,具体文件如下主要有3个文件夹和3个文件,分别为0.tcc-主要为编译所用的信息lib-
入坑 Python 全能实战小白训练营,470 集干货 12.9G 大揭秘!
七七知享
Python python 开发语言 pandas numpy matplotlib java php
家人们,我最近挖到了一个Python学习的宝藏——Python全能实战小白训练营。整整470集,内容超丰富,资源包有12.9G,完全就是为咱们这些想系统学习Python的小白量身定制的。接下来就给大家好好唠唠。随着课程深入,会涉及到Python的各种高级特性,比如面向对象编程、模块与包的使用。在讲面向对象编程时,老师通过打造一个小型游戏角色系统,把类、对象、继承、多态这些抽象概念诠释得生动形象,让
2023银行高管变动名单
_依旧_
行业资讯 业界资讯
数据源自:2023年国家金融监督管理总局银行类任职资格批复时间银行名称高层职位姓名简介2023-12-12工商银行高级业务总监田枫林1967年10月出生,华中农业大学经济学硕士、芝加哥大学工商管理硕士,高级经济师。现任工行总行公司金融业务部总经理兼投资银行部总经理。1992年7月,加入工行;2007年5月,任新加坡分行副总经理;2010年4月,任工银马来西亚执行董事、总经理;2013年10月,任工
65%的家庭有人“啃老”,数据解读国内版巨婴是如何炼成的?
永洪科技
大数据 啃老 单身 房价
近日,韩国“30-39岁的未婚人口中有54.8%变成啃老族;40-44岁的未婚人口中有44.1%变成啃老族”的数据在网上引发热议。而反观国内,2020年数据显示,中国的啃老族已经占据了中国超过60%的家庭,30%的年轻人靠“啃老”过活,65%以上的家庭存在“啃老”方面的问题。对此,很多80、90后纷纷表示不服。网友调侃:贵族的啃老叫继承家业,到了穷人就成了啃老了。其实,啃老现象在各国都存在,是全人
PyCharm 对接 DeepSeek 大模型的详细操作流程
程之编
pycharm ide python
以下是使用PyCharm对接DeepSeek大模型的详细操作流程,基于Python开发环境。假设你已具备DeepSeekAPI的访问权限(需提前申请APIKey):步骤1:PyCharm环境准备创建新项目打开PyCharm→NewProject→选择纯Python项目→指定项目路径→创建虚拟环境(建议选Virtualenv)。安装依赖库打开终端(Terminal)执行以下命令:pipinstall
一学就会的深度学习基础指令及操作步骤(5)使用预训练模型
小圆圆666
深度学习 人工智能 python 卷积神经网络
文章目录使用预训练模型加载预训练模型图像加载与预处理预测使用预训练模型查看模型库和常用模型加载预训练模型fromtorchvision.modelsimportvgg16#VGG16模型架构的定义fromtorchvision.modelsimportVGG16_Weights#VGG16的预训练权重配置#loadtheVGG16network*pre-trained*ontheImageNetd
不同存储器组织和交叉编址技术的工作方式及举例说明
海大超级无敌暴龙战士
计算机组成原理 学习方法
不同存储器组织和交叉编址技术的工作方式及举例说明本节介绍内存系统中常见的组织方式以及如何通过交叉编址来提高存储器性能,主要内容包括:多模块存储器单体多字存储器多体并行存储器高位交叉编址(顺序方式)低位交叉编址(交叉方式)下面依次说明这些结构的工作原理和实际应用中的举例。1.多模块存储器原理简介:多模块存储器将整个存储系统划分为多个独立模块(或称“块”),每个模块具有一定的存储容量和独立的控制电路。
中信银行太原分行营业部开展“金融知识普及共筑消费安全”宣传活动
lsrsyx
金融 安全
在第62个学雷锋纪念日与“3・15消费者权益保护日”来临之际,3月5日,中信银行太原分行营业部积极响应号召,以“金融知识普及,共筑消费安全”为主题,走进社区,传递金融知识,开展了一系列丰富多彩且富有成效的消费者权益保护活动,致力于提升公众金融素养与风险防范意识。分行营业部组织志愿者深入平阳路街道社区,开展“央行支付,惠企利民”主题宣传活动。活动现场,志愿者们通过发放精心制作的宣传单页,向居民们详细
目前使用ORACLE EBS的公司列表
又是两个大汉堡
(相关文章:目前使用SAP的公司列表)1摩托罗拉2LG电子3济南钢铁4长安福特5百度6伊利7亚信8佳通9移动10电信11湘钢12韶钢13三角轮胎14广州铁道车辆厂15美的集团16青岛啤酒17珠江啤酒18德赛集团19大唐电力20云南白药21白沙集团22万家乐集团23华为24松下电工25华润涂料26广西柳工机械股份有限公司27天津中新药业集团28浦东机场29涟源钢铁集团30衡阳钢管厂31顺达电脑,32
600条最强 Linux 命令总结(非常详细)零基础入门到精通,收藏这一篇就够了
网安导师小李
程序员 编程 网络安全 linux 运维 服务器 学习 web安全 python java
一、基本命令uname-m显示机器的处理器架构uname-r显示正在使用的内核版本dmidecode-q显示硬件系统部件(SMBIOS/DMI)hdparm-i/dev/hda罗列一个磁盘的架构特性hdparm-tT/dev/sda在磁盘上执行测试性读取操作系统信息arch显示机器的处理器架构uname-m显示机器的处理器架构uname-r显示正在使用的内核版本dmidecode-q显示硬件系统部
MySQL保姆级教程(SQL语法基础篇)从小白到高手的进阶指南,收藏这一篇就够了
网安导师小李
网络安全 编程 程序员 mysql sql adb 安全 web安全 网络 自动化
本章节精心构构造SQL语法学习之旅的基石,旨在从基础出发,逐步深入,全面解析SQL语法规则并辅以丰富实例。通过这一篇章,您将循序渐进地掌握MySQL的核心语法,开启数据库操作的新境界。1:SQL语言概述SQL(StructuredQueryLanguage),简称SQL。结构化查询语言包含6个部分:类型释义范例数据查询语言DQL:DataQueryLanguage如SELECT数据操作语言DML:
Golang后端学习笔记 — 6. Golang操作数据库事务的方法
宝码
Golang后端学习笔记 golang 数据库事务 postgresql
之前,学习了对数据库的每个表执行CRUD操作。真实的场景中,我们经常需要执行一个事务,它组合了多个表的相关操作。本节学习如何在Golang中实现它。在开始之前,先聊一下事务。什么是数据库事务?它是一个单一的工作单元,通常由多个表操作组成。比如:在我们的小银行项目中,我们要从张三的账户中向李四的账户中转账10元。该交易就包括5个操作,涉及到accounts表、entries表和transfers表:
【C#实现手写Ollama服务交互,实现本地模型对话】
吾与谁归in
C#学习 WPF c# Ollama Deepseek 本地模型
前言C#手写Ollama服务交互,实现本地模型对话最近使用C#调用OllamaSharpe库实现Ollama本地对话,然后思考着能否自己实现这个功能。经过一番查找,和查看OllamaSharpe源码发现确实可以。其实就是开启Ollama服务后,发送HTTP请求,获取返回结果以及一些数据处理。基本流程1、启动Ollama服务进程。2、创建HttpClient对象。3、创建请求体(参数:模型名称、提示
搭建分布式Hive集群
逸曦玥泱
大数据运维 分布式 hive hadoop
title:搭建分布式Hive集群date:2024-11-2923:39:00categories:-服务器tags:-Hive-大数据搭建分布式Hive集群本次实验环境:Centos7-2009、Hadoop-3.1.4、JDK8、Zookeeper-3.6.3、Mysql-5.7.38、Hive-3.1.2功能规划方案一(本地运行模式)Master主节点(Mysql+Hive)192.168
量子计算如何颠覆能源优化领域:从理论到实践
Echo_Wish
人工智能 前沿技术 量子计算 能源
量子计算如何颠覆能源优化领域:从理论到实践大家好,我是Echo_Wish,一个热爱探索前沿技术的人工智能与Python领域的技术分享者。今天,我们将深入探讨一个激动人心的话题——量子计算在能源优化中的应用。这不仅是科技领域的全新趋势,也可能为全人类的能源利用效率带来革命性突破。从理论模型到实际应用,量子计算已经在一些能源相关领域崭露头角,例如电网优化、可再生能源分配和物流节能规划。以下,让我们一步
黑马程序员-接口测试-四天学习接口测试-第二天-接口用例设计,测试点,功能测试,安全测试,性能测试,单接口测试,业务场景测试用例,postman简介,安装
学习记录wanxiaowan
postman 学习 功能测试
今日学习目标分析接口文档,设计编写接口测试用例使用Postman设置请求方法、URL、请求头、请求体,向接口发送http请求,并查看响应数据分析接口文档,设计接口测试用例使用postman设置请求方法,url请求头,请求体,查看响应数据3接口用例设计为什么写防止测试点漏测。条理清晰方便分配工作,评估工作量和时间面试时使用!接口测试的测试点测试点称之为测试维度。5功能测试单接口功能:手工测试中的单个
卡尔曼滤波算法c语言stm32,卡尔曼滤波算法及C语言实现_源代码
weixin_39643255
卡尔曼滤波算法c语言stm32
a往南向北2019-01-1620:39:2011340收藏111分类专栏:C语言嵌入式文章标签:卡尔曼滤波C代码卡尔曼滤波理论很容易就可以在MATLAB软件环境下实现,但是,实际的硬件板子上还是需要C语言,当然可以自动代码生成,还有一种就是直接手动编写C语言。1.前言在google上搜索卡尔曼滤波,很容易找到以下这个帖子:http://blog.csdn.net/lanbing510/artic
Kibana 单机与集群部署教程
闲人编程
大数据集群部署教程 大数据 集群 单机 部署 Kibana 日志分析 数据可视化
目录Kibana单机与集群部署教程第一部分:Kibana概述第二部分:Kibana单机部署教程1.安装Kibana1.1安装依赖项1.2下载和安装Kibana1.3启动Kibana2.单机案例代码实现(Python)3.常见问题及解决方法3.1无法启动Kibana服务3.2Kibana无法连接到Elasticsearch第三部分:Kibana集群部署教程1.配置集群节点1.1配置Elasticse
【算法】BFS(最短路径问题、拓扑排序)
秦jh_
算法 算法 数据结构 c++
个人主页:秦jh_-CSDN博客系列专栏:https://blog.csdn.net/qinjh_/category_12862161.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12862161&sharerefer=PC&sharesource=qinjh_&sharefrom=from_link目录边权为1的最短路径问题多源
安装数据库首次应用
Array_06
java oracle sql
可是为什么再一次失败之后就变成直接跳过那个要求
enter full pathname of java.exe的界面
这个java.exe是你的Oracle 11g安装目录中例如:【F:\app\chen\product\11.2.0\dbhome_1\jdk\jre\bin】下的java.exe 。不是你的电脑安装的java jdk下的java.exe!
注意第一次,使用SQL D
Weblogic Server Console密码修改和遗忘解决方法
bijian1013
Welogic
在工作中一同事将Weblogic的console的密码忘记了,通过网上查询资料解决,实践整理了一下。
一.修改Console密码
打开weblogic控制台,安全领域 --> myrealm -->&n
IllegalStateException: Cannot forward a response that is already committed
Cwind
java Servlets
对于初学者来说,一个常见的误解是:当调用 forward() 或者 sendRedirect() 时控制流将会自动跳出原函数。标题所示错误通常是基于此误解而引起的。 示例代码:
protected void doPost() {
if (someCondition) {
sendRedirect();
}
forward(); // Thi
基于流的装饰设计模式
木zi_鸣
设计模式
当想要对已有类的对象进行功能增强时,可以定义一个类,将已有对象传入,基于已有的功能,并提供加强功能。
自定义的类成为装饰类
模仿BufferedReader,对Reader进行包装,体现装饰设计模式
装饰类通常会通过构造方法接受被装饰的对象,并基于被装饰的对象功能,提供更强的功能。
装饰模式比继承灵活,避免继承臃肿,降低了类与类之间的关系
装饰类因为增强已有对象,具备的功能该
Linux中的uniq命令
被触发
linux
Linux命令uniq的作用是过滤重复部分显示文件内容,这个命令读取输入文件,并比较相邻的行。在正常情 况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后的结果写到输出文件中。输入文件和输出文件必须不同。如 果输入文件用“- ”表示,则从标准输入读取。
AD:
uniq [选项] 文件
说明:这个命令读取输入文件,并比较相邻的行。在正常情况下,第二个
正则表达式Pattern
肆无忌惮_
Pattern
正则表达式是符合一定规则的表达式,用来专门操作字符串,对字符创进行匹配,切割,替换,获取。
例如,我们需要对QQ号码格式进行检验
规则是长度6~12位 不能0开头 只能是数字,我们可以一位一位进行比较,利用parseLong进行判断,或者是用正则表达式来匹配[1-9][0-9]{4,14} 或者 [1-9]\d{4,14}
&nbs
Oracle高级查询之OVER (PARTITION BY ..)
知了ing
oracle sql
一、rank()/dense_rank() over(partition by ...order by ...)
现在客户有这样一个需求,查询每个部门工资最高的雇员的信息,相信有一定oracle应用知识的同学都能写出下面的SQL语句:
select e.ename, e.job, e.sal, e.deptno
from scott.emp e,
(se
Python调试
矮蛋蛋
python pdb
原文地址:
http://blog.csdn.net/xuyuefei1988/article/details/19399137
1、下面网上收罗的资料初学者应该够用了,但对比IBM的Python 代码调试技巧:
IBM:包括 pdb 模块、利用 PyDev 和 Eclipse 集成进行调试、PyCharm 以及 Debug 日志进行调试:
http://www.ibm.com/d
webservice传递自定义对象时函数为空,以及boolean不对应的问题
alleni123
webservice
今天在客户端调用方法
NodeStatus status=iservice.getNodeStatus().
结果NodeStatus的属性都是null。
进行debug之后,发现服务器端返回的确实是有值的对象。
后来发现原来是因为在客户端,NodeStatus的setter全部被我删除了。
本来是因为逻辑上不需要在客户端使用setter, 结果改了之后竟然不能获取带属性值的
java如何干掉指针,又如何巧妙的通过引用来操作指针————>说的就是java指针
百合不是茶
C语言的强大在于可以直接操作指针的地址,通过改变指针的地址指向来达到更改地址的目的,又是由于c语言的指针过于强大,初学者很难掌握, java的出现解决了c,c++中指针的问题 java将指针封装在底层,开发人员是不能够去操作指针的地址,但是可以通过引用来间接的操作:
定义一个指针p来指向a的地址(&是地址符号):
Eclipse打不开,提示“An error has occurred.See the log file ***/.log”
bijian1013
eclipse
打开eclipse工作目录的\.metadata\.log文件,发现如下错误:
!ENTRY org.eclipse.osgi 4 0 2012-09-10 09:28:57.139
!MESSAGE Application error
!STACK 1
java.lang.NoClassDefFoundError: org/eclipse/core/resources/IContai
spring aop实例annotation方法实现
bijian1013
java spring AOP annotation
在spring aop实例中我们通过配置xml文件来实现AOP,这里学习使用annotation来实现,使用annotation其实就是指明具体的aspect,pointcut和advice。1.申明一个切面(用一个类来实现)在这个切面里,包括了advice和pointcut
AdviceMethods.jav
[Velocity一]Velocity语法基础入门
bit1129
velocity
用户和开发人员参考文档
http://velocity.apache.org/engine/releases/velocity-1.7/developer-guide.html
注释
1.行级注释##
2.多行注释#* *#
变量定义
使用$开头的字符串是变量定义,例如$var1, $var2,
赋值
使用#set为变量赋值,例
【Kafka十一】关于Kafka的副本管理
bit1129
kafka
1. 关于request.required.acks
request.required.acks控制者Producer写请求的什么时候可以确认写成功,默认是0,
0表示即不进行确认即返回。
1表示Leader写成功即返回,此时还没有进行写数据同步到其它Follower Partition中
-1表示根据指定的最少Partition确认后才返回,这个在
Th
lua统计nginx内部变量数据
ronin47
lua nginx 统计
server {
listen 80;
server_name photo.domain.com;
location /{set $str $uri;
content_by_lua '
local url = ngx.var.uri
local res = ngx.location.capture(
java-11.二叉树中节点的最大距离
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
public class MaxLenInBinTree {
/*
a. 1
/ \
2 3
/ \ / \
4 5 6 7
max=4 pass "root"
Netty源码学习-ReadTimeoutHandler
bylijinnan
java netty
ReadTimeoutHandler的实现思路:
开启一个定时任务,如果在指定时间内没有接收到消息,则抛出ReadTimeoutException
这个异常的捕获,在开发中,交给跟在ReadTimeoutHandler后面的ChannelHandler,例如
private final ChannelHandler timeoutHandler =
new ReadTim
jquery验证上传文件样式及大小(好用)
cngolon
文件上传 jquery验证
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="jquery1.8/jquery-1.8.0.
浏览器兼容【转】
cuishikuan
css 浏览器 IE
浏览器兼容问题一:不同浏览器的标签默认的外补丁和内补丁不同
问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大。
碰到频率:100%
解决方案:CSS里 *{margin:0;padding:0;}
备注:这个是最常见的也是最易解决的一个浏览器兼容性问题,几乎所有的CSS文件开头都会用通配符*来设
Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
daizj
shell $# $? 特殊变量
前面已经讲到,变量名只能包含数字、字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量。例如,$ 表示当前Shell进程的ID,即pid,看下面的代码:
$echo $$
运行结果
29949
特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个
程序设计KISS 原则-------KEEP IT SIMPLE, STUPID!
dcj3sjt126com
unix
翻到一本书,讲到编程一般原则是kiss:Keep It Simple, Stupid.对这个原则深有体会,其实不仅编程如此,而且系统架构也是如此。
KEEP IT SIMPLE, STUPID! 编写只做一件事情,并且要做好的程序;编写可以在一起工作的程序,编写处理文本流的程序,因为这是通用的接口。这就是UNIX哲学.所有的哲学真 正的浓缩为一个铁一样的定律,高明的工程师的神圣的“KISS 原
android Activity间List传值
dcj3sjt126com
Activity
第一个Activity:
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import a
tomcat 设置java虚拟机内存
eksliang
tomcat 内存设置
转载请出自出处:http://eksliang.iteye.com/blog/2117772
http://eksliang.iteye.com/
常见的内存溢出有以下两种:
java.lang.OutOfMemoryError: PermGen space
java.lang.OutOfMemoryError: Java heap space
------------
Android 数据库事务处理
gqdy365
android
使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功,如果程序执行到endTransaction()之前调用了setTransactionSuccessful() 方法设置事务的标志为成功则提交事务,如果没有调用setTransactionSuccessful() 方法则回滚事务。事
Java 打开浏览器
hw1287789687
打开网址 open浏览器 open browser 打开url 打开浏览器
使用java 语言如何打开浏览器呢?
我们先研究下在cmd窗口中,如何打开网址
使用IE 打开
D:\software\bin>cmd /c start iexplore http://hw1287789687.iteye.com/blog/2153709
使用火狐打开
D:\software\bin>cmd /c start firefox http://hw1287789
ReplaceGoogleCDN:将 Google CDN 替换为国内的 Chrome 插件
justjavac
chrome Google google api chrome插件
Chrome Web Store 安装地址: https://chrome.google.com/webstore/detail/replace-google-cdn/kpampjmfiopfpkkepbllemkibefkiice
由于众所周知的原因,只需替换一个域名就可以继续使用Google提供的前端公共库了。 同样,通过script标记引用这些资源,让网站访问速度瞬间提速吧
进程VS.线程
m635674608
线程
资料来源:
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001397567993007df355a3394da48f0bf14960f0c78753f000 1、Apache最早就是采用多进程模式 2、IIS服务器默认采用多线程模式 3、多进程优缺点 优点:
多进程模式最大
Linux下安装MemCached
字符串
memcached
前提准备:1. MemCached目前最新版本为:1.4.22,可以从官网下载到。2. MemCached依赖libevent,因此在安装MemCached之前需要先安装libevent。2.1 运行下面命令,查看系统是否已安装libevent。[root@SecurityCheck ~]# rpm -qa|grep libevent libevent-headers-1.4.13-4.el6.n
java设计模式之--jdk动态代理(实现aop编程)
Supanccy2013
java DAO 设计模式 AOP
与静态代理类对照的是动态代理类,动态代理类的字节码在程序运行时由Java反射机制动态生成,无需程序员手工编写它的源代码。动态代理类不仅简化了编程工作,而且提高了软件系统的可扩展性,因为Java 反射机制可以生成任意类型的动态代理类。java.lang.reflect 包中的Proxy类和InvocationHandler 接口提供了生成动态代理类的能力。
&
Spring 4.2新特性-对java8默认方法(default method)定义Bean的支持
wiselyman
spring 4
2.1 默认方法(default method)
java8引入了一个default medthod;
用来扩展已有的接口,在对已有接口的使用不产生任何影响的情况下,添加扩展
使用default关键字
Spring 4.2支持加载在默认方法里声明的bean
2.2
将要被声明成bean的类
public class DemoService {