消息中心构架设计说明书

article/2025/9/1 12:49:44

目录

1       1. 文档介绍.... 4

1.1       文档目的... 4

1.2       文档范围... 4

1.3       读者对象... 4

1.4       参考文献... 4

1.5       术语与缩写解释... 4

2       系统概述.... 5

3       设计约束.... 6

4       设计策略.... 7

5       系统总体结构.... 8

6       子系统N的结构与功能.... 9

7       开发环境的配置.... 10

8       运行环境的配置.... 11

9       测试环境的配置.... 12

10              其它.... 13

 

 

 

1    1.文档介绍

1.1  文档目的

消息中心接收别的系统发送的消息,再基于一定的规则以邮件、短信、消息等方式推送消息到pc端和手机端,比如对于attendance迟到、早退、tour超时提醒等需要及时推送相应的信息给相关人员,中心对规则、用户、消息进行管理。为此,根据“先进实用、稳定可靠”的原则设计本消息中心。

1.2   文档范围

消息的接收、发送、保存,对应用用户的管理。

1.3  读者对象

开发人员

1.4  参考文献

 

1.5  术语与缩写解释

缩写、术语

解 释

QoS level

Quality of Service level

SD

系统设计,System Design

 

 

 

 

 

 

2    系统概述

系统主要完成消息的接收、发送和保存,再基于一定的规则以邮件、短信、消息等方式推送消息到pc端或手机,以及对用户、规则、消息进行管理。系统接收来自别的系统应用用户的消息,然后基于一定的规则把消息进行推送。

 

 

3    设计约束

 

1.系统必须遵循国家软件开发的标准。

2.系统用java开发,服务器中间件为tomcat。

3.系统必须稳定可靠,性能高,满足每天40-500万次的推送量。

4.保证消息的成功送达,如果不成功就重发。

4    设计策略

 

 

1.    系统高可用、高性能、易扩展,安全稳定,实用可靠,满足用户的需要。

2.    系统可以进行扩展,增加推送的消息种类,增加消息推送的规则。

3.    系统可以复用于别的系统的消息推送。

 

5    系统总体结构

 

5.1  系统架构设计

1.逻辑架构


系统采用接口用rocketMQ实现应用用户的消息接收,用drools依据一定的规则进行消息转发,发送邮件、短信、消息到pc端和手机端,消息发送后用rocketMQ发送结果消息给应用用户。用户管理发送规则,对不同的消息、发送的方式、发送的时间、接收者进行设置,以后消息中心按照这些规则发送消息。规则处理采用drools完成。
系统采用MQTT服务器 mosquito实现消息对手机端的推送,采用winsocket发送消息给pc端。MQTT通过发布/订阅方式发送消息给手机,方式为发布/订阅,为了实现点对点发送,需要在发送的消息里加上手机端的imei和用户名,同时在手机端进行判断,如果imei和用户名符合则接收此消息。采用winsocket实现推送消息到pc端,为实现点对点的推送,可以在消息中加上要发送的pc端的用户名,pc端对消息的用户名进行判断,如果和自己的一样则接收消息。对于群发,大家都可以收到。

应用用户通过接口发送消息给消息中心,消息采用json格式,包含应用用户id、发送消息方式id、Title、content、usrId,sendTime。

采用mqtt QoS level 2协议,保证自动重发发送不成功的消息,而且可以保证消息的顺序到达,可以设置超时时间,防止断网。Mqtt不建立长连接,省电、省流量。还可以用mosquitto实现集群发送,集群可以线性扩展。
应用系统用户在注册、登陆后申请发送消息的类别,有邮件、短信、手机消息、pc消息4种,注册后要记住自己的id,然后通过接口发送消息;管理员审批用户的申请,管理消息;消息中心发送消息或邮件、短信到相应的pc端或手机端用户。系统的管理功能包括对规则、用户、消息进行管理。

中心的时区设当地的时区,系统用ntpdate命令让系统使用NTP(NetworkTime Protocol 网络时间协议)协议来从网络同步时间的命令,这样即使有夏令时的变化,系统也会自动更新。中心使用时间时需要得到系统的时区。

 
2.网络架构

 

5.2  系统包含模块

1.  消息接收发送模块。

1)提供发送接口用于接收应用用户的消息和参数,然后通过规则发送消息,用户通过接收接口得到发送结果:

发送消息到手机端。

发送消息到pc端。

发送邮件。

 发送短信。

2.手机、pc接收模块。

   手机接收消息中心发送的消息。

Pc接收消息中心发送的消息。

3.管理模块。

1)用户和管理员注册、登陆。

2)实现用户申请消息发送方式申请、查看消息、修改密码、统计消息。用户可以申请邮件、短信、手机消息、pc消息4种方式发送消息。

3)管理用户、审批用户发送方式、管理员密码修改、查看和统计发送过的消息。

4)管理规则,可以增加、修改、删除查询规则。

 

5.3  用例图

1.  应用用户用例图

 

2. 管理员用例图

3消息用户用例图

 

 

4.应用用户用例图

5.4  流程图

1.发送消息流程图

 

 

 

6    系统模块的结构与功能

系统包括消息接收送接模块、手机、pc接收消息模块、管理模块,共3个模块。

6.1  消息接收发送模块

提供接口用于接收应用用户的消息,然后用drools通过规则异步发送消息,用户调用接收接口得到发送结果:

发送消息到手机端。

发送消息到pc端。

发送邮件。

 发送短信。

系统采用rocketmq接收消息和返回消息发送结果给用户,系统给pc、手机采用@Async异步发送邮件等消息,并得到发送结果,把结果返回给调用者,消息及发送的情况入库,入库时需要检查消息是否已经存在。用户采用异步调用本接口,得到发送结果,如果不成功,用户可以重发。

因为中心的时区与各用户的时区不同,用户需要发送自己的时区,系统返回发送时间时要根据时区转换时间。

当手机离线没有收到消息,则在定时器中重发;对于需要定时发送的消息,通过定时器完成发送。定时器20分钟执行一次,对这2种情况通过规则发送消息。系统确定时间时要根据时区进行转换,按照用户的时区时间来发送消息。

6.1.1单元定义

单元名称

单元功能描述

备注

com.isoftstone.message.domain.Message

消息实体

 

com.isoftstone.message.MessageBiz

消息发送接收业务类

 

com.isoftstone.message.dao.MessageDao

消息管理dao类

 

com.isoftstone.message.service.MessageService

消息管理service类

 

com.isoftstone.message.mailMessage

发送邮件

 

com.isoftstone.message.shortMessage

发送短信

 

com.isoftstone.message.pcMessage

发送pc消息

 

com.isoftstone.message.MobileMessage

发送手机消息

 

 

6.1.2接口描述

1. 发送接口

接口定义:public void  sendMessage(String  applicationId,String typeid,Stringtitle,String content,String userId) throwsException;

描述:通过调用此接口可发送消息及参数,接口在com.isoftstone.message.MessageBiz中。

 

入口参数

 

父元素

元素

必须

类型

备注

 

applicationId

M

String 

 

 

typeid

O

String

 

 

title

 

String,  

 

 

content

O

String

 

 

userId

 

String

 

 

sendTime

 

 

String

 

 

timeZone

 

String

 

2. 接收接口

接口定义:public Integer  getMessageResult(String  applicationId,String typeid,Stringtitle,String content,String userId) throwsException;

描述:通过调用此接口可得到发送消息的结果,如果发送失败,用户则调用发送接口重发。接口在com.isoftstone.message.MessageBiz中。

 

入口参数

 

父元素

元素

必须

类型

备注

 

applicationId

M

String 

 

 

typeid

O

String

 

 

title

 

String,  

 

 

userId

 

String

 

 

sendTime

 

 

String

 

 

timeZone

 

String

 

接口返回:

返回码

含义

备注

0

成功

 

1

失败

 

2

数据重复提交

 

3

服务器异常

 

4

没有发送权限

 

5

网络异常

 

 

 

时序图

基本场景

以下场景触发模块:

用户调用接口发送消息。

时序图及描述

流程描述:

1.    用户使用接口发送消息及参数。

2.    接口对消息参数进行分析,判断是否可以发送。

3.    接口根据参数分别异步发送邮件、短信、手机、pc消息,并得到发送结果,反馈给接口调用者。

4.    发送消息后保存消息到数据库。

 

异常描述

IO异常:数据插入失败,写入日志。

数据库操作异常:数据插入失败,写入日志

网络连接超时异常:网络异常,发送失败,写入日志并反馈给用户。

 

6.2  手机、pc接收模块

6.2.1 手机接收消息中心发送的消息

手机用mqtt接收消息

6.2.2 Pc接收消息中心发送的消息。

Pc用winsocket接收消息。

6.3  管理模块。

6.3.1 用户和管理员注册、登陆。

用户和管理员注册、登陆。应用用户注册后记住自己的id,以后发送消息时会用到。

6.3.2 用户操作功能。

实现用户申请消息发送方式申请、查看消息、修改密码、统计消息。用户可以申请邮件、短信、手机消息、pc消息4种方式发送消息。

6.3.3 管理功能。

管理规则、用户、审批用户发送方式、管理员密码修改、查看和统计发送过的消息。

 规则以xml格式生成。

 

 

 

6.3.4 注册、登陆界面

  完成应用用户和注册、登陆。

6.3.5 用户申请界面

实现用户申请消息发送方式申请。用户可以申请邮件、短信、手机消息、pc消息4种方式发送消息。

 

1.应用用户消息管理

2.应用用户消息管理

3.应用用户密码管理

4.发送管理

5.应用用户消息统计

 

6.3.6 管理界面

管理员实现对应用用户的管理、对应用用户申请的管理和对消息的管理,及管理员注册、登陆。

1.应用用户管理

2.应用用户消息审批管理

 

 

2.   消息管理

4..管理员密码管理

5.消息统计

5.   规则管理

6.   规则编辑

7    开发环境的配置

 

 

类别

标准配置

最低配置

计算机硬件

Pc windos

 

软件

eclipse

 

网络通信

Tcp/ip

 

其它

 

 

 

8    运行环境的配置

 

 

类别

标准配置

最低配置

计算机硬件

服务器

 

软件

Linux

 

网络通信

Tcp/ip

 

其它

 

 

9    测试环境的配置

同开发环境。

10       其它

10.1 数据库设计

10.1.1邮件消息表t_­email_message

n  主要用途:保存发送的邮件

n  数据增长频率:

n  数据保存周期:由用户调用操作

 

FIELD NAME

FIELD CODE

FIELD YPE

FIELD LENGTH

KEY

O/M

DEFAULT VALUE

 DESCRIPTION

id

id

bigint                         

 

pk

M

 

 

标题              

title               

varchar(80) 

 

 

M

 

 

内容

content             

  varchar(500)  

 

 

M

 

 

发送时间

sendTime            

datetime                      

 

 

M

 

 

接收时间

ReceiveTime

datetime   

 

 

 

 

 

发送状态

status              

tinyint                       

 

 

M

 

 

接收用户id

receiveUserId       

varchar(50)

 

 

 

 

 

应用用户id

applicationTypeId   

bigint                        

 

 

 

 

 

是否删除

deleted             

tinyint                       

 

 

 

 

 

 

10.1.2手机消息表t_­mobile_message

n  主要用途:保存发送的手机消息

n  数据增长频率:

n  数据保存周期:由用户调用操作

 

FIELD NAME

FIELD CODE

FIELD YPE

FIELD LENGTH

KEY

O/M

DEFAULT VALUE

 DESCRIPTION

id

id

bigint                        

 

pk

M

 

 

标题              

title               

varchar(80) 

 

 

M

 

 

内容

content             

  varchar(500)  

 

 

M

 

 

发送时间

sendTime            

datetime                      

 

 

M

 

 

接收时间

ReceiveTime

datetime   

 

 

 

 

 

发送状态

status              

tinyint                       

 

 

M

 

 

接收用户id

receiveUserId       

varchar(50)

 

 

 

 

 

应用用户id

applicationTypeId   

bigint                        

 

 

 

 

 

是否删除

deleted             

tinyint                       

 

 

 

 

 

10.1.3短信消息表t_­short_message 

n  主要用途:保存发送的短信消息。

n  数据增长频率:

n  数据保存周期:由用户调用操作

 

FIELD NAME

FIELD CODE

FIELD YPE

FIELD LENGTH

KEY

O/M

DEFAULT VALUE

 DESCRIPTION

id

id

bigint                        

 

pk

M

 

 

标题              

title               

varchar(80) 

 

 

M

 

 

内容

content             

  varchar(500)  

 

 

M

 

 

发送时间

sendTime            

datetime                      

 

 

M

 

 

发送状态

status              

tinyint                       

 

 

M

 

 

接收时间

ReceiveTime

datetime   

 

 

 

 

 

接收用户id

receiveUserId       

varchar(50)

 

 

 

 

 

应用用户id

applicationTypeId   

bigint                        

 

 

 

 

 

是否删除

deleted             

tinyint                       

 

 

 

 

 

 

10.1.4管理员表t_admin  

n  主要用途:保存管理员信息。

n  数据增长频率:

n  数据保存周期:由用户注册、修改决定。

 

FIELD NAME

FIELD CODE

FIELD YPE

FIELD LENGTH

KEY

O/M

DEFAULT VALUE

 DESCRIPTION

id

id

bigint                        

 

pk

M

 

 

姓名             

name                

varchar(30) 

 

 

M

 

 

email               

email               

  varchar(128)  

 

 

M

 

 

电话

telephone           

varchar(32)                  

 

 

M

 

 

密码

passWord            

  varchar(50)                        

 

 

M

 

 

注册时间

registerTime            

datetime                       

 

 

 

 

 

是否删除

deleted             

tinyint                       

 

 

 

 

 

 

10.1.5发送消息用户表t_application_user   

n  主要用途:保存发送消息用户信息。

n  数据增长频率:

n  数据保存周期:由用户注册、修改决定。

 

FIELD NAME

FIELD CODE

FIELD YPE

FIELD LENGTH

KEY

O/M

DEFAULT VALUE

 DESCRIPTION

id

id

bigint                         

 

pk

M

 

 

姓名             

name                

varchar(30) 

 

 

M

 

 

email               

email               

  varchar(128)  

 

 

M

 

 

电话

telephone           

varchar(32)                  

 

 

M

 

 

密码

passWord            

  varchar(50)                        

 

 

M

 

 

注册时间

registerTime            

datetime                      

 

 

 

 

 

是否删除

deleted             

tinyint                       

 

 

 

 

 

10.1.6消息订阅类别表t_message_subscribe_type    

n  主要用途:保存用户消息订阅方式信息。

n  数据增长频率:

n  数据保存周期:由管理员操作决定。

 

FIELD NAME

FIELD CODE

FIELD YPE

FIELD LENGTH

KEY

O/M

DEFAULT VALUE

 DESCRIPTION

id

id

bigint                        

 

pk

M

 

 

方式             

name                

varchar(30) 

 

 

M

 

邮件

备注

reamark             

  varchar(128)  

 

 

M

 

 

是否删除

deleted              

tinyint                       

 

 

 

 

 

 

10.1.7国家时区表t_timeZone  

n  主要用途:提供各个国家时区,为管理员指定中心的时区服务。

n  数据增长频率:

n  数据保存周期:由管理员修改决定

 

FIELD NAME

FIELD CODE

FIELD YPE

FIELD LENGTH

KEY

O/M

DEFAULT VALUE

 DESCRIPTION

id

id

bigint                        

 

pk

M

 

 

国家             

country             

varchar(80) 

 

 

M

 

 

时区

timeZone            

  varchar(100)  

 

 

M

 

 

key               

key               

datetime                      

 

 

M

 

用于国际化id

产生时间

createTime          

datetime                      

 

 

 

 

 

备注

remark                 

bigint                        

 

 

 

 

 

是否删除

deleted             

tinyint                       

 

 

 

 

 

 

10.1.8使用时区表t_userd_timeZone   

n  主要用途:保存消息中心的时区,时区可以由系统自动获取,也可以由管理员指定。

n  数据增长频率:

n  数据保存周期:由管理员修改决定

 

FIELD NAME

FIELD CODE

FIELD YPE

FIELD LENGTH

KEY

O/M

DEFAULT VALUE

 DESCRIPTION

id

id

bigint                        

 

pk

M

 

 

国家             

country             

varchar(80) 

 

 

M

 

 

时区

timeZone            

  varchar(100)  

 

 

M

 

 

key               

key               

datetime                      

 

 

M

 

用于国际化id

产生时间

createTime          

datetime                      

 

 

 

 

 

备注

remark                 

bigint                        

 

 

 

 

 

是否删除

deleted             

tinyint                       

 

 

 

 

 

10.1.9用户消息类型注册表t_application_user   

n  主要用途:保存发送消息用户信息。

n  数据增长频率:

n  数据保存周期:由用户注册、修改决定。

 

FIELD NAME

FIELD CODE

FIELD YPE

FIELD LENGTH

KEY

O/M

DEFAULT VALUE

 DESCRIPTION

id

id

bigint                        

 

pk

M

 

 

用户id             

applicationId       

bigint                         

 

 

M

 

 

消息类别id             

typeId              

bigint                        

 

 

M

 

 

类别名称

name                

varchar(50)                  

 

 

M

 

 

备注

remark              

  varchar(100)                        

 

 

M

 

 

申请时间

applyTime            

datetime                      

 

 

 

 

 

是否删除

deleted             

tinyint                       

 

 

 

 

 

是否同意

agree               

tinyint                       

 

 

 

 

 

10.1.10pc消息表t_pc_­message   

n  主要用途:保存发送pc的消息

n  数据增长频率:

n  数据保存周期:由用户调用操作

 

FIELD NAME

FIELD CODE

FIELD YPE

FIELD LENGTH

KEY

O/M

DEFAULT VALUE

 DESCRIPTION

id

id

bigint                        

 

pk

M

 

 

标题              

title               

varchar(80) 

 

 

M

 

 

内容

content             

  varchar(500)  

 

 

M

 

 

发送时间

sendTime            

datetime                      

 

 

M

 

 

发送状态

status              

tinyint                       

 

 

M

 

 

接收时间

ReceiveTime

datetime   

 

 

 

 

 

接收用户id

receiveUserId       

varchar(50)

 

 

 

 

 

应用用户id

applicationTypeId   

bigint                        

 

 

 

 

 

是否删除

deleted             

tinyint                       

 

 

 

 

 

10.1.11消息推送规则t_rule   

n  主要用途:保存发送规则

n  数据增长频率:

n  数据保存周期:由用户调用操作

 

FIELD NAME

FIELD CODE

FIELD YPE

FIELD LENGTH

KEY

O/M

DEFAULT VALUE

 DESCRIPTION

id

id

bigint                        

 

pk

M

 

 

规则标题               

name                

varchar(80) 

 

 

M

 

 

规则内容

content             

  varchar(500)  

 

 

M

 

 

产生时间

createTime          

datetime                      

 

 

M

 

 

修改时间

updateTime          

datetime                      

 

 

M

 

 

备注

remark               

  varchar(100)  

 

 

M

 

 

是否删除

deleted             

tinyint                       

 

 

 

 

 

 

10.11日志管理

系统用scribe保存日志。

     总之,这是一个先进实用的消息推送设计,抛砖引玉,大家可以参考借鉴。

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

原文链接: http://blog.csdn.net/buddha17/article/details/47035411

http://chatgpt.dhexx.cn/article/H59bUvTb.shtml

相关文章

04_消息中心(MessageCenter)

一介绍 该消息中心是基于委托和事件(观察者模式)设计的,是 MxFramework框架 的一个子模块。 主要是为了处理消息的收发。 二、消息处理中心(代码如下) /**** * Title: MXFramework* 主题: 消息中心* …

实际项目中的消息中心

前一篇文章讲到我们项目的工作流,这一篇我们扒一扒项目中的消息中心,msgcenter。消息可以分成很多种消息:留存可重复查看的DB消息,短暂保存在redis的comet消息,短信形式的msg消息,推送到手机的push消息等等…

消息中心

1 系统结构 消息中心体系结构如下图所示: 图中红色线表示移动消息的推送路径。 此结构适用于企业消息中心,也适用于平台,消息推送代理的消息推送服务接口(Web Service)可以作为开放服务。 本地服务器是消息源。…

消息中心(系统消息)实现

需求 用户能即时的收到来自系统或者其他用户发来的消息,在web界面右下角弹窗提醒,用户还能标记消息是否已阅状态。 即时通讯 概念:即时通讯(实时通信,Instant Messaging,简称IM)是一个实时通…

消息中心设计

1 参考文档 产品参考:消息通知系统设计 | 人人都是产品经理 (woshipm.com) 2 消息中心目标职责 消息中心仅作为消息发送使用,跟业务没有任何关系,涉及到业务部分有业务系统自行处理;消息中心的功能只有消息生产、消息展示、消息推…

如何设计一个消息中心

如今的内容型产品,不管提供的是什么类型的内容,在其主功能之外,不可避免的会有另一个十分重要的功能——消息中心。 而无论是信息流、论坛、信箱,还是私聊、群聊、通知,推拉模型是内容型(包括:社…

聊聊消息中心的设计与实现逻辑

厌烦被消息打扰,又怕突然间的安静; 一、业务背景 微服务的架构体系中,会存在很多基础服务,提供一些大部分服务都可能需要的能力,比如文件管理、MQ队列、缓存机制、消息中心等等,这些服务需要提供各种可以复…

4. 消息中心的设计与实现

消息中心的设计与实现 一、引言 运用场景: 1、消息的主动提醒(客户端被动接收) 2、客户模块(及时通讯) 3、单一登录(一个账号只能在一个设备登录) 消息中心的实现方案: 1、客户端轮…

mysql格式化数字去掉千分位

前言 使用format格式化数字时,超过1000就会有千分位,但有时我们不希望有这个千分位,那怎么去掉呢? 1. select format(11111.123,2) 2. select convert(11111.123,decimal(12,2))

upper mysql_MySQL函数

MySQL函数 Lower 转换小写 upper 转换大写 substr 取子串(substr(被截取的字符串,起始下标,截取的长度)) length 取长度 trim 去空格 str_to_date 将字符串转换成日期 date_format 格式化日期 format 设置千分位 round 四舍五入 rand() 生成随机数 Ifnull 可以将null转换成一个…

MySql FORMAT 去掉千位分隔符,

加上墨西哥的地区参数即可 SELECT FORMAT(35555566.8, 2, es_MX) AS value; 结果

MySQL知识总结

目录 知识点条件查询排序常见单行处理函数(可嵌套)多行处理函数分组查询distinct去重 连接查询⭐⭐⭐⭐⭐内连接外连接多表连接(两张表以上) 子查询where子句中的子查询from 子句中的子查询select后面出现的子查询 union合并查询结…

MySQL知识点

总结汇总MySQL数据库面试题(2020最新版)_ThinkWon的博客-CSDN博客_mysql数据库面试题 1. 索引 (1)主键索引 唯一非空,属于聚簇索引 (2)唯一索引 unique 可为空(多个null也可) (3&…

mysql 处理金额_MYSQL处理金额相关函数

1.FORMAT()数字千分位分割 FORMAT(X,D) 1.X需要格式化的数字 2.D保留小数位数 例:SELECT FORMAT(12334555.213,2) 2.ABS() 求绝对值 ABS(X) SELECT ABS(-23); SELECT ABS(21-23); SELECT ABS(23); 3.四舍五入保留小数 ROUND(X,D) 1.X需要格式化的数字 2.D保留小数位数(不写时默…

C语言字符数组的输入和输出

字符数组的输入输出有两种方法&#xff1a; &#xff08;1&#xff09;逐个字符输入输出。用格式符“%c”输入或输出一个字符。例如 int main() {char c[6]; //定义一个字符串for (int i 0; i < 5; i){scanf("%c", &c[i]); //输入字符串}for (int i 0; …

C语言 | 字符数组

C语言字符数组的定义 字符数组是用来存放字符数据的数组&#xff0c;字符数组中的一个元素存放一个字符&#xff0c;定义字符数组的方法和定义数值型数组的方法类似。 //例子&#xff1a;char character[10];C语言字符数组的初始化 C语言对字符数组初始化&#xff0c;最容易理解…

C语言,字符数组与字符串

文章目录 字符数组基本介绍字符串注意事项字符串的访问和遍历字符串的表示形式用字符数组存放一个字符串&#xff1a; 用字符数组存放一个字符串,用字符指针指向一个字符串使用字符指针变量和字符数组两种方法表示字符串的讨论 字符串相关函数常用字符串函数一览字符串函数应用…

浅谈字符数组

文章目录 一、什么是字符数组二、字符数组的定义和赋值1. 先定义一个数组&#xff0c;再为挨个元素进行赋值2. 在定义的同时给该字符数组进行初始化2.1 错误的初始化方式2.2 正确的初始化方式 3. 特别注意&#xff01;&#xff01;&#xff01;3.1 字符数组和整型数组一样不支持…

字符数组

字符数组 用来存放字符数据的数组是字符数组。字符数组中的每一个元素存放一个字符&#xff0c;其定义和使用方法与其他类型的数据基本相似。 1.1字符数组的定义和使用 字符数组的定义与其他类型的数组类似&#xff0c;标准形式如下&#xff1a; Char 数组名 【常量表达式】 …

Stata:嵌套Logit模型(NestedLogit)

原文链接&#xff1a;https://www.lianxh.cn/news/d5e00bfb17a7c.html 致谢&#xff1a; 这篇推文的核心内容主要来自陈强老师编著的《高级计量经济学及 Stata 应用》一书&#xff0c;特此致谢。 1. 简介 此前&#xff0c;连享会发布了一系列离散选择模型相关的推文&#xff0…