1. ActiveMQ概述与HelloWorld
1. JMS简介
- JMS全称:Java Message Service ,中文:Java 消息服务,是 Java 的一套 API 标准
- 最初的目的是为了使应用程序能够访问现有的 MOM系
- MOM:Message Oriented Middleware,即消息中间件,它可以利用高效可靠的消息传递机 制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成
- 常见 MOM 系统包括 Apache 的 ActiveMQ、 阿里巴巴的 RocketMQ、IBM 的 MQSeries、Microsoft 的 MSMQ、BEA 的 RabbitMQ 等。并非全部的 MOM 系统都遵循 JMS 规范,也就是并非全提供了JMS实现,提供了JMS 实现的 MOM,又被称为 JMSProvider
- JMS与MOM的关系类似JDBC和数据库之间的关系
2 消息中间件的应用场景
- 异步通信:消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它
- 过载保护:不将请求直接发送给服务端,而是由服务端自己来取,这样防止大量请求同时到达服务端,使整个系统崩溃
- 解耦:A和B直接相连时,一旦B死掉,那么A的功能也都不好用了,采用消息中间件解耦,可以保证B死掉,A也能正常发送给队列,当B复活后,又可以继续完成之前队列中的任务
- 消息通讯:客户端A,客户端B,客户端N订阅同一主题,进行消息发布和接收。实现类似聊天室效果
- 顺序保证:在大多使用场景下,数据处理的顺序都很重要。大部分消息队列本来就是排序的,并且能保证数据会按照特定的顺序来处理。
- 数据流处理:分布式系统产生的海量数据流,如:业务日志、监控数据、用户行为等,针对这些数据流进行实时或批量采集汇总,然后进行大数据分析是当前互联网的必备技术,通过消息队列完成此类数据收集是最好的选择
- 扩展性:消息中间件可以很容易横向扩容
3 常用消息队列比较
特性MQ | ActiveMQ | RabbitMQ | RocketMQ | Kafka |
---|---|---|---|---|
生产者消费者模式 | 支持 | 支持 | 支持 | 支持 |
发布订阅模式 | 支持 | 支持 | 支持 | 支持 |
请求回应模式 | 支持 | 支持 | 不支持 | 不支持 |
Api完备性 | 高 | 高 | 高 | 高 |
多语言支持 | 支持 | 支持 | java | 支持 |
单机吞吐量 | 万级 | 万级 | 万级 | 十万级 |
消息延迟 | 无 | 微秒级 | 毫秒级 | 毫秒级 |
可用性 | 高(主从) | 高(主从) | 非常高(分布式) | 非常高(分布式) |
消息丢失 | 低 | 低 | 理论上不会丢失 | 理论上不会丢失 |
文档的完备性 | 高 | 高 | 高 | 高 |
提供快速入门 | 有 | 有 | 有 | 有 |
社区活跃度 | 高 | 高 | 有 | 高 |
商业支持 | 无 | 无 | 商业云 | 商业云 |
4 JMS中的一些角色
- Broker:消息服务器,相当于server,提供消息核心服务
- Provider:消息生产者,是由会话创建的一个对象,用于把消息发送到一个目的地
- Consumer:消息消费者,是由会话创建的一个对象,它用于接收发送到目的地的消息
- 消费消息的两种方式:
- 同步消费:调用消费者的receive方法,从目的地中显式提取消息。receive方法可以一直阻塞到消息到达
- 异步消费:客户端可以为消费者注册一个消息监听器,以定义在消息到达时所采取的动作
- 消费消息的两种方式:
- p2p:基于点对点的消息模型
- 消息生产者生产消息发送到 queue 中,然后消息消费者从 queue 中取出并且消费消息
- 消息被消费以后,queue 中不再有存储,所以消息消费者不可能消费到已经被消费的消息
- Queue 支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费、其它 的则不能消费此消息了
- 当消费者不存在时,消息会一直保存,直到有消费消费
- pub/sub:基于订阅/发布的消息模型
- 消息生产者(发布)将消息发布到 topic 中,同时有多个消息消费者(订阅)消费该消
息 - 和点对点方式不同,发布到 topic 的消息会被所有订阅者消费
- 当生产者发布消息,不管是否有消费者。都不会保存消息 一定要先有消息的消费者,后有消息的生产者
- 消息生产者(发布)将消息发布到 topic 中,同时有多个消息消费者(订阅)消费该消
- PTP 和 PUB/SUB 简单对比
1 | Topic | Queue |
---|---|---|
Publish Subscribe messaging 发布 订阅消息 | Point-to-Point 点对点 | |
有无状态 | topic 数据默认不落地,是无状态的,也就是发消息时,如果接收的人不在线,那么该消息他就收不到了。 | Queue 数据默认会在 mq 服 务器上以文件形式保存,比如 Active MQ 一 般 保 存 在 $AMQ_HOME\data\kahadb 下 面。也可以配置成 DB 存储。 |
完整性保障 | 并不保证 publisher 发布的每条数 据,Subscriber 都能接受到。 | Queue 保证每条数据都能 被 receiver 接收。消息不超时。 |
消息是否会丢失 | 一般来说 publisher 发布消息到某 一个 topic 时,只有正在监听该 topic 地址的 sub 能够接收到消息;如果没 有 sub 在监听,该 topic 就丢失了。 | Sender 发 送 消 息 到 目 标 Queue, receiver 可以异步接收这 个 Queue 上的消息。Queue 上的 消息如果暂时没有 receiver 来 取,也不会丢失。前提是消息不 超时。 |
消息发布接 收策略 | 一对多的消息发布接收策略,监 听同一个topic地址的多个sub都能收 到 publisher 发送的消息。Sub 接收完 通知 mq 服务器 | 一对一的消息发布接收策 略,一个 sender 发送的消息,只 能有一个 receiver 接收。 receiver 接收完后,通知 mq 服务器已接 收,mq 服务器对 queue 里的消 息采取删除或其他操作。 |
- Queue:队列存储,常用与点对点消息模型 ,默认只能由唯一的一个消费者处理。一旦处理消息删除
- Topic:主题存储,用于订阅/发布消息模型主题中的消息,会发送给所有的消费者同时处理。只有在消息可以重复处 理的业务场景中可使用。Queue/Topic都是 Destination 的子接口
- ConnectionFactory :连接工厂,jms中用它创建连接。连接工厂是客户用来创建连接的对象,例如ActiveMQ提供的ActiveMQConnectionFactory
- Connection:JMS Connection封装了客户与JMS提供者之间的一个虚拟的连接
- Destination:消息的目的地。在点对点消息传递域中,目的地被成为队列(queue);在发布/订阅消息传递域中,目的地被成为主题(topic)
- Session:JMS Session是生产和消费消息的一个单线程上下文。会话用于创建消息生产者(producer)、消息消费者(consumer)和消息(message)等。会话提供了一个事务性的上下文,在这个上下文中,一组发送和接收被组合到了一个原子操作中
5 JMS的消息格式
- 消息头
- 消息属性
- 消息体
6 JMS的消息类型
- TextMessage:文本消息
- MapMessage:k-v
- BytesMessage:字节流
- StreamMessage:java原始的数据流
- ObjectMessage:序列化的java对象
7 设置消息的几种特性
7.1 可靠性
- 消息的成功消费通常包含三个阶段:客户接收消息、客户处理消息和消息被确认
- 在事务性会话中,当一个事务被提交的时候,确认自动发生
- 在非事务性会话中,消息何时被确认取决于创建会话时的应答模式(acknowledgement mode)。该参数有以下三个可选值:
- Session.AUTO_ACKNOWLEDGE:当客户成功的从receive方法返回的时候,或者从MessageListener.onMessage方法成功返回的时候,会话自动确认客户收到的消息
- Session.CLIENT_ACKNOWLEDGE:客户通过消息的acknowledge方法确认消息。需要注意的是,在这种模式中,确认是在会话层上进行:确认一个被消费的消息将自动确认所有已被会话消费的消息。例如,如果一个消息消费者消费了10个消息,然后确认第5个消息,那么所有10个消息都被确认
- Session.DUPS_ACKNOWLEDGE:该选择只是会话迟钝的确认消息的提交。如果JMS Provider失败,那么可能会导致一些重复的消息。如果是重复的消息,那么JMS Provider必须把消息头的JMSRedelivered字段设置为true。
7.2 持久性
- JMS 支持以下两种消息提交模式
- PERSISTENT:指示JMS Provider持久保存消息,以保证消息不会因为JMS Provider的失败而丢失
- NON_PERSISTENT:不要求JMS Provider持久保存消息
7.2 KahaDB存储
- KahaDB是默认的持久化策略,所有消息顺序添加到一个日志文件中,同时另外有一个索引文件记录指向这些日志的存储地址,还有一个事务日志用于消息回复操作。是一个专门针对消息持久化的解决方案,它对典型的消息使用模式进行了优化。
- 在data/kahadb这个目录下,会生成四个文件,来完成消息持久化
- db.data 它是消息的索引文件,本质上是B-Tree(B树),使用B-Tree作为索引指向db-*.log里面存储的消息
- db.redo 用来进行消息恢复 *
- db-.log 存储消息内容。新的数据以APPEND的方式追加到日志文件末尾。属于顺序写入,因此消息存储是比较 快的。默认是32M,达到阀值会自动递增
- lock文件 锁,写入当前获得kahadb读写权限的broker ,用于在集群环境下的竞争处理
- 配置
<persistenceAdapter> <!--directory:保存数据的目录;journalMaxFileLength:保存消息的文件大小,是每个数据文件大小,超过后滚动 --> <kahaDBdirectory="${activemq.data}/kahadb"journalMaxFileLength="16mb"/> </persistenceAdapter>
- 特性
- 日志形式存储消息
- 消息索引以 B-Tree 结构存储,可以快速更新
- 完全支持 JMS 事务
- 支持多种恢复机制
7.5 JDBC存储
使用JDBC持久化方式,数据库默认会创建3个表,每个表的作用如下:
activemq_msgs:queue和topic的消息都存在这个表中
activemq_acks:存储持久订阅的信息和最后一个持久订阅接收的消息ID
activemq_lock:跟kahadb的lock文件类似,确保数据库在某一时刻只有一个broker在访问
ActiveMQ 将数据持久化到数据库中。
不指定具体的数据库。 可以使用任意的数据库 中。
本环节中使用 MySQL 数据库。 下述文件为 activemq.xml 配置文件部分内容。
首先定义一个 mysql-ds 的 MySQL 数据源,然后在 persistenceAdapter 节点中配置 jdbcPersistenceAdapter 并且引用刚才定义的数据源。
dataSource 指定持久化数据库的 bean,createTablesOnStartup 是否在启动的时候创建数 据表,默认值是 true,这样每次启动都会去创建数据表了,一般是第一次启动的时候设置为 true,之后改成 false。
Beans中添加
<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
<property name="username" value="activemq"/>
<property name="password" value="activemq"/>
<property name="maxActive" value="200"/>
<property name="poolPreparedStatements" value="true"/> </bean>
修改persistenceAdapter
<persistenceAdapter><!-- <kahaDB directory="${activemq.data}/kahadb"/> --><jdbcPersistenceAdapter dataSource="#mysql-ds" createTablesOnStartup="true" /> </persistenceAdapter>
依赖jar包
commons-dbcp commons-pool mysql-connector-java
- 表字段解释
activemq_acks:用于存储订阅关系。如果是持久化Topic,订阅者和服务器的订阅关系在这个表保存。
主要的数据库字段如下:
container:消息的destination
sub_dest:如果是使用static集群,这个字段会有集群其他系统的信息
client_id:每个订阅者都必须有一个唯一的客户端id用以区分
sub_name:订阅者名称
selector:选择器,可以选择只消费满足条件的消息。条件可以用自定义属性实现,可支持多属性and和or操作
last_acked_id:记录消费过的消息的id。
2:activemq_lock:在集群环境中才有用,只有一个Broker可以获得消息,称为Master Broker,其他的只能作为备份等待Master Broker不可用,才可能成为下一个Master Broker。这个表用于记录哪个Broker是当前的Master Broker。
3:activemq_msgs:用于存储消息,Queue和Topic都存储在这个表中。
id:自增的数据库主键
container:消息的destination
msgid_prod:消息发送者客户端的主键
msg_seq:是发送消息的顺序,msgid_prod+msg_seq可以组成jms的messageid
expiration:消息的过期时间,存储的是从1970-01-01到现在的毫秒数
msg:消息本体的java序列化对象的二进制数据
priority:优先级,从0-9,数值越大优先级越高
xid:用于存储订阅关系。如果是持久化topic,订阅者和服务器的订阅关系在这个表保存。
7.3 优先级
- 可以使用消息优先级来指示JMS Provider首先提交紧急的消息。优先级分10个级别,从0(最低)到9(最高)。如果不指定优先级,默认级别是4。需要注意的是,JMS Provider并不一定保证按照优先级的顺序提交消息。
7.4 本地事务
在一个JMS客户端,可以使用本地事务来组合消息的发送和接收。JMS Session接口提供了commit和rollback方法。事务提交意味着生产的所有消息被发送,消费的所有消息被确认;事务回滚意味着生产的所有消息被销毁,消费的所有消息被恢复并重新提交,除非它们已经过期。 事务性的会话总是牵涉到事务处理中,commit或rollback方法一旦被调用,一个事务就结束了,而另一个事务被开始。关闭事务性会话将回滚其中的事务。 需要注意的是,如果使用请求/回复机制,即发送一个消息,同时希望在同一个事务中等待接收该消息的回复,那么程序将被挂起,因为知道事务提交,发送操作才会真正执行。 需要注意的还有一个,消息的生产和消费不能包含在同一个事务中
8 HelloWorld
- 下载ActiveMQ
http://activemq.apache.org/
- 启动ActiveMQ
bin/win64/activemq.bat
- 进入管理界面
http://localhost:8161/
- 修改访问端口
conf/jetty.xml
- 创建maven项目
- 会自动帮你下载、并引入需要的activemq-all-5.15.12.jar以及源码,如果创建正常项目,需要将E:\Program Files (x86)\apache-activemq-5.15.12\下的该jar包引入
- File–new–Project–Maven Project–选中create a simple project–填写Goup Id与Artifact ID
- 修改pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.mashibing.mq</groupId><artifactId>activemq02</artifactId><version>0.0.1-SNAPSHOT</version><!-- https://mvnrepository.com/artifact/org.apache.activemq/activemq-all --><dependencies><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-all</artifactId><version>5.15.12</version></dependency></dependencies>
</project>
- Sender
package com.mashibing.mq;
import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnectionFactory;/*** 消息发送* @author 一明哥**/
public class Sender {public static void main(String[] args) throws Exception{// 1.获取连接工厂ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("admin","admin","tcp://localhost:61616");// 2.获取一个向ActiveMQ的连接Connection connection = connectionFactory.createConnection();// 3.获取sessionSession session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);// 4. 找目的地,获取destination,消费端,也会从这个目的地取消息Queue queue = session.createQueue("user");// 51.消息创建者MessageProducer producer = session.createProducer(queue);// producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);// consumer -> 消费者// producer -> 创建者// 5.2. 创建消息for (int i = 0; i < 1000; i++) {TextMessage textMessage = session.createTextMessage("hi: " + i);// 5.3 向目的地写入消息if(i % 4 == 0) {// 设置消息的优先级// 对producer 整体设置// producer.setPriority(9);// producer.send(textMessage,DeliveryMode.PERSISTENT,9,1000 * 100);textMessage.setJMSPriority(9);} producer.send(textMessage);Thread.sleep(3000);} // 6.关闭连接connection.close(); System.out.println("System exit....");}
}
- Receiver
package com.mashibing.activemq01;import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnectionFactory;public class Receiver {public static void main(String[] args) throws Exception {// 1. 建立工厂对象,ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER,ActiveMQConnectionFactory.DEFAULT_PASSWORD,"tcp://localhost:61616");//2 从工厂里拿一个连接Connection connection = activeMQConnectionFactory.createConnection();connection.start();//3 从连接中获取Session(会话)Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);// 从会话中获取目的地(Destination)消费者会从这个目的地取消息Queue queue = session.createQueue("f");//从会话中创建消息提供者MessageConsumer consumer = session.createConsumer(queue);//从会话中创建文本消息(也可以创建其它类型的消息体)while (true) {TextMessage receive = (TextMessage)consumer.receive();System.out.println("TextMessage:" + receive.getText());}}
}
9 Active MQ的安全机制
- web控制台安全:重启后生效
//conf/jetty.xml中id="securityLoginService">配置了其登录相关用户的配置文件
conf/jetty-realm.properties
//用户名:密码,角色
admin: admin, admin
user: user, user
- 消息安全机制:配置建立连接工厂时的用户和密码
conf/activemq.xml
<plugins><simpleAuthenticationPlugin><users><authenticationUser username="admin" password="admin" groups="admins,publishers,consumers"/><authenticationUser username="publisher" password="publisher" groups="publishers,consumers"/><authenticationUser username="consumer" password="consumer" groups="consumers"/><authenticationUser username="guest" password="guest" groups="guests"/></users></simpleAuthenticationPlugin></plugins>
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 静态工作点的稳定
一.温度对于静态工作点的影响 1.组成放大电路最核心的部分就是晶体管了,而且晶体管是由两个PN结组成。在之前记载过的有关三极管的文章中我们说过:当温度升高的时候,射极发出的自由电子一定会增多。这导致的结果就是Ib、Ic、β、穿透电流Iceq都会升高。因此在放大电路的输出…...
2024/4/16 16:59:03 - 蹉跎岁月的那些年
前言 说实话,我是鼓起很大的勇气在键盘上敲起了这篇文章。写得不好希望大家就当笑话看,一笑了之好了。如果你是想看我写什么技术,那请您不要浪费您的宝贵时间了,因为下面的内容与技术没有半毛钱关系。 一、摸爬滚打的那些年 时间还是要从刚开始上大学那个时候说起。我的专业…...
2024/5/6 11:17:34 - Python学习难度大不大?零基础能学好吗?
尽管Python是公认的语法简洁的一门编程语言,但仍然有人问Python学习难度大不大,毕竟每个人的接受程度不一样。零基础真的能学好Python吗?怎样快速入门呢?接下来就给大家分享一下。1、Python学习难度大不大? 首先,对于初学者来说学习Python是不错的选择,一方面Python语言…...
2024/5/6 13:27:48 - 理解《你不知道的JS(上)》第一部分 作用域和闭包
你不知道的JS(上) 本文是借鉴《你不知道的JS》这本书的内容的。 也就是自己对这本书每章节的分解,标注了重点,更容易理解。 文章目录你不知道的JS(上)第一部分 作用域和闭包第一章 作用域1.1 编译原理引擎可以根据需要创建并储存变量。1.2 理解作用域1.2.1 成员1.2.2 过程…...
2024/4/24 8:05:38 - 记一次在GeekGame2020比赛中的大收获---关于JWT的学习
1.初始化是这个样子2.我们注册账号后得到一串数字通过网络搜索发现这是一个JWT 3.随便瞎搞以后发现一个规律,只要用户名一致那么其登陆口令一致,然后我发现名为admin的账号不能创建,那么这就是这道题的关键了,我们需要破解这个JWT生成规律 4.通过BASE64解密以后我发现这个加…...
2024/4/24 8:05:37 - Spring framework(一) 笔记
spring 1. 什么是spring spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器。 2. 框架概述IoC(Inversion of Control)控制反转 对象创建责任的反转,在spring中BeanFactory 是IoC容器的核心接口,负责实例化,定位,…...
2024/5/6 4:56:15 - Linux安全-关于防火墙语法(三)- SNAT、DNAT转换
防火墙语法(三): 1.SNAT策略的典型应用环境 局域网主机共享单个公网IP地址接入InternetSNAT策略的原理 源地址转换,Source Network Address Translation 修改数据包的源地址启用SNATSNAT转换实验 前提条件: 1.局域网各主机正确设置IP地址/子网掩码 2.局域网各主机正确设置…...
2024/4/24 8:05:35 - [Zabbix] Linux 环境zabbix 3.4邮件报警配置及zabbix故障处理
本片博客主要介绍了[Zabbix] Centos 6下 Zabbix 3.4邮件报警配置及Zabbix邮件故障解决方法 ;分别介绍了zabbix使用本地账号发送邮件报警及使用互联网账号发送邮件报警配置,并处理邮件发送故障“cannot connect to SMTP server “zabbix.itwish.cn”: cannot connect to [[zab…...
2024/4/24 8:05:37 - Java Swing JTable
1 简介 JTable用于显示和编辑常规的二维单元格表。有关面向任务的文档和使用JTable的示例,请参见Java教程中的如何使用表。 JTable具有许多功能,可以自定义其呈现和编辑功能,但是为这些功能提供了默认设置,因此可以轻松设置简单的表。例如,要建立一个包含10行10列数字的表…...
2024/4/24 8:05:33 - Java基础之【List、Set、数据结构、Collections】
前言:现实就像一个泥潭,有人选择沉沦苟且,也有人跨过泥潭面向远方,如果想要逃离泥潭,就必须努力变得优秀数据结构数据结构有什么用现实世界的存储,我们使用的工具和建模。每种数据结构有自己的优点和缺点,想想如果Google的数据用的是数组的存储,我们还能方便地查询到所需要的数…...
2024/4/24 8:05:36 - 蒙鸟云:IDC圈一周热点集锦
5月11日-5月17日,IDC圈发生了这些大事,随蒙鸟云来一起围观吧!一、普洛斯怀来大数据科技产业园开工建设,布局数字“新基建” 普洛斯怀来大数据科技产业园项目,于5月12日,举行了开工仪式,正式拉开了超大规模数据中心全面建设的序幕。据悉该项目基础建设投资16亿元,总投资…...
2024/5/5 19:33:36 - 007FTP与Nginx服务器的搭建
1 、搭建图片服务器传统的图片管理 没法满足在 tomcat 服务器集群状态下,图片的保存问题,会出现图片找不到的 404 问 题。 1.2、集群环境中图片管理1.3 图片服务作用总结 ftp 服务: 实现图片的上传,保存图片资源 客户端—(http 协议)—tomcat—(ftp 协议)—图片服务器 图片…...
2024/5/6 3:10:39 - 翼火蛇安全笔记:内网渗透测试(二)
本系列的第二篇文章将会从内网渗透的基本思路讲起,进一步介绍内网渗透。(二)内网渗透基本思路1. 内网渗透性质1.偶然性:概率性,证明和验证技术2.针对性的渗透:获取内网核心数据和资料,控制某台或多台计算机,获取公司或者个人私密信息(邮件,研究成果,代码,顾客名单…...
2024/5/6 1:41:33 - Python : 一文学会办公自动化(Word、Excel、PPT)
自动化:1946年提出,被运用于军事等方面。办公自动化指的是现在办公和计算机技术结合起来的新型的办公的方式。“高效的工作”正是自动化解决的问题/办公自动化的分类:操作Excel: 就业数据分析等操作Word: 考试系统生成Word试卷等操作PPT : 用户画像分析等 使用的模块:xlrd模…...
2024/5/5 16:46:53 - 大家的C语言-103-翻译器和语言
经过前两节的介绍相信大家对CPU和操作系统都有了感性的认识。那么本节我们来打通任督二脉,来看看到底什么是编程语言,以及我们要学习的东西本质上是什么。“编写程序”还是“编写代码”在大多数语境中“编写程序”和“编写代码”已经没有区别了,但两者的含义是存在本质上的差…...
2024/5/5 20:12:29 - Anaconda复制移植
Anaconda复制移植 2020-5-27 背景说明: 有两台服务器分别为CPU、GPU,其中CPU连接外网,GPU与CPU在同一个局域网中,需要通过CPU作为跳板登陆GPU,且GPU不可以直接访问外网。 任务说明:想要在GPU上安装anaconda同时配置gpu版本的pytorch。 由于不能通过GPU服务器直接访问外网…...
2024/5/6 0:50:36 - 网络爬虫之网页数据解析(正则re)
文章目录小实例正则匹配规则match方法:从起始位置开始查找,一次匹配search方法:从任何位置开始查找,一次匹配findall方法:全部匹配,返回列表finditer方法:全部匹配,返回迭代器split方法:分割字符串,返回列表sub方法:替换匹配中文:re.compile(u[\u4e00-\u9fa5]+)贪婪…...
2024/5/5 22:33:47 - Java+SQL+MySQL+Hive存储过程汇总
Java+SQL+MySQL+Hive存储过程汇总 存储过程概念 在我们做一个复杂的项目时,会多次涉及到与数据库的连接,这时我们会一次次的来用SQL语句进行对数据库的连接,但如果我们这时用存储过程的话就只需要连接一次数据库就可以了,从而省去大量的SQL语句。 存储过程的优点 1、加快…...
2024/4/16 19:00:54 - 布隆过滤器实战教程
欢迎大家前来白嫖PDF。下图回复:666本教程致力于最实用教程,个别图片粘贴有丢失,还有来领取原版。文章目录前言JavaPub说关于布隆过滤器1.介绍1.1.基础介绍1.1.1.百度百科1.1.2.原理介绍1.1.3.布隆过滤器的属性1.2.数学推导1.3.哈希2.基础用法2.1.Java版3.进阶3.1.进阶一(参…...
2024/4/20 16:03:39 - Live2D的基础使用
效果图:代码如下:<script src="https://eqcn.ajz.miesnfu.com/wp-content/plugins/wp-3d-pony/live2dw/lib/L2Dwidget.min.js"></script> <script>L2Dwidget.init({"model": {//jsonpath控制显示那个小萝莉模型,下面这个就是我觉得最…...
2024/4/16 16:59:44
最新文章
- 如何选择Python测试框架:pytest和unittest
unittest unittest是Python标准库中自带的测试框架,它遵循了xUnit风格,即将测试组织成类和方法。 使用unittest需要遵循一定规则: 必须要有测试类,且必须继承unittest.TestCase测试方法必须以test开头文件模块也使用test开头命…...
2024/5/6 17:32:40 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/6 9:38:23 - ChatGPT 初学者指南
原文:ChatGPT for Beginners 译者:飞龙 协议:CC BY-NC-SA 4.0 介绍 如果您一直关注新闻和趋势,您可能已经在某个地方读到或听到过,Sam Altman 的生成式人工智能平台 ChatGPT 已经将人工智能推向了一个新的高度 - 许多…...
2024/5/5 16:47:03 - 多态--下
文章目录 概念多态如何实现的指向谁调谁?例子分析 含有虚函数类的大小是多少?虚函数地址虚表地址多继承的子类的大小怎么计算?练习题虚函数和虚继承 概念 优先使用组合、而不是继承; 继承会破坏父类的封装、因为子类也可以调用到父类的函数;…...
2024/5/5 8:35:37 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/4 23:54:56 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/4 23:54:56 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/6 9:21:00 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/4 23:55:16 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/4 23:55:06 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/4 23:55:01 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57