精华内容
下载资源
问答
  • 常用中间件

    千次阅读 2021-10-24 22:26:40
    中间件(Middleware)顾名思义是系统软件和用户软件之间连接的软件,以便于软件各部分之间的沟通,特别是应用软件对于系统软件的集中逻辑,是一种独立的系统或者服务程序,分布式应用软件借助这种软件在不同的技术...

    中间件

    image-20210710230513501

    什么是中间件

    中间件(Middleware)顾名思义是系统软件和用户软件之间连接的软件,以便于软件各部分之间的沟通,特别是应用软件对于系统软件的集中逻辑,是一种独立的系统或者服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件在客户端服务器的操作系统、网络和数据库之上,管理计算机资源和网络通信。总的作用是为处于自己上层的应用软件提供运行和开发的环境,帮助用户灵活、高效的开发和集成复杂的应用软件

    关于中间件,我们可以理解为:是一类能够为一种或者多种应用程序合作互通、资源共享同时还能够为应用程序提供相关的服务的软件。中间件是一类软件统称,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作

    image-20210605142930181

    分布式系统

    什么是分布式系统

    一个请求由服务器端的多个(服务或者系统)协同处理完成

    分布式为了解决单个服务器容量和性能瓶颈问题而采用的优化手段,将一个业务拆分成不同的业务,分布在不同的机器上执行。服务之间通过远程调用协同工作,对外提供服务

    分布式系统需要解决的问题

    该领域需要解决的问题极多,在不同的技术层面上,又包括:分布式缓存、分布式数据库、分布式计算、分布式文件系统等

    分布式的实现形式

    • 水平扩展:当一台机器扛不住流量时,就通过添加机器的方式,将流量分到所有服务器上,所有机器都可以提供相同的服务
    • 垂直拆分:前端有多种查询需求是时,一台机器扛不住,可以将不同的业务需求分发到不同的机器上,比如A机器处理余票查询的请求,B机器处理支付的请求

    分布式和微服务的区别

    微服务是架构设计方式,分布式是系统部署方式时

    微服务架构

    微服务

    简单来说微服务就是很小的服务,小到一个服务只对应一个单一的功能,只做一件事。这个服务可以单独部署运行,服务之间可以通过RPC来相互交互,每个微服务都是由独立的小团队开发,测试,部署,上线,负责它的整个生命周期

    微服务架构

    在做架构设计的时候,先做逻辑架构,再做物理架构,当你拿到需求后,估算过最大用户量和并发量后,计算单个应用服务器能否满足需求,如果用户量只有几百人的小应用,单体应用就能搞定,即所有应用部署在一个应用服务器里,如果是很大用户量,且某些功能会被频繁访问,或者某些功能计算量很大,建议将应用拆解为多个子系统,各自负责各自功能,这就是微服务架构

    分布式

    分布式服务顾名思义服务是分散部署在不同的机器上的,一个服务可能负责几个功能,是一种面向SOA架构的,服务之间也是通过rpc来交互或者是webservice来交互的。逻辑架构设计完后就该做物理架构设计,系统应用部署在超过一台服务器或虚拟机上,且各分开部署的部分彼此通过各种通讯协议交互信息,就可算作分布式部署,生产环境下的微服务肯定是分布式部署的,分布式部署的应用不一定是微服务架构的,比如集群部署,它是把相同应用复制到不同服务器上,但是逻辑功能上还是单体应用

    对比

    微服务相比分布式服务来说,它的粒度更小,服务之间耦合度更低,由于每个微服务都由独立的小团队负责,因此它敏捷性更高,分布式服务最后都会向微服务架构演化,这是一种趋势,不过服务微服务化后带来的挑战也是显而易见的,例如服务粒度小,数量大,后期运维将会很难

    消息中间件

    • 利用可靠的消息传递机制进行系统和系统直接的通讯
    • 通过提供消息传递和消息的排队机制,他可以在分布式系统环境下扩展进程间的通讯

    应用场景

    1. 跨系统数据传递
    2. 高并发流量削峰
    3. 数据的分发和异步处理
    4. 大数据分析与传递
    5. 分布式事务

    为什么使用MQ?

    • 异步处理:相比于传统的串行、并行方式,提高吞吐量
    • 应用解耦:系统间通过消息通信,不用关心其他系统的处理
    • 流量削峰:可以通过消息队列长度控制请求量;可以缓解短时间内高并发请求
    • 日志处理:处理大量日志传输
    • 消息通讯:消息队列一般都内置了高效的通信机制,因此也可以用在纯的消息通讯。比如实现对点消息队列,或者聊天室

    消息队列的优缺点

    优点

    解耦

    允许独立扩展或者修改两边的处理过程,只要确保他们遵守同样的接口约束

    一个系统或者一个模块,调用了多个系统或者模块,互相之间的调用很复杂,维护起来很麻烦,但是其实这个调用是不需要直接同步调用接口的,如果用MQ给它异步化解耦

    A系统发送数据到BCD三个系统,通过接口调用发送。如果E系统也需要这个数据呢?那如果 C 系统现在不需要了呢?A系统根其他各种乱七八糟的系统严重耦合,A系统产生一条比较关键的数据,很多系统都需要A系统将这个数据发送过来

    如果使用MQ,A系统产生一条数据,发送到MQ里面去;如果某个系统不需要这条数据了,就取消对MQ消息的消费即可。这样下来,A系统压根儿不需要去考虑要跟谁发送数据,不需要维护这个代码是,也不需要考虑人家是否调用成功、失败超时等情况

    异步

    不需要立即处理消息,消息队列提供了异步处理机制,允许用户把一个消息放入队列中,但不立即处理它,在需要的时候进行处理

    A系统接收一个请求,需要在自己本地写库,还需要在BCD三个系统写库,自己本地写库要3ms,BCD三个系统分别写库要 300ms、450ms、200ms。最终请求总延时是 3 + 300 + 450 + 200 = 953ms,接近 1s。

    如果使用MQ,那么 A 系统连续发送 3 条消息到 MQ 队列中,假如耗时 5ms,A 系统从接受一个请求到返回响应给用户,总时长是 3 + 5 = 8ms。

    削峰

    减少高峰时期对服务器压力

    使用消息队列能够使关键组件顶住突发(突发流量并不常)的访问压力,而不会为突发的超负荷请求而完全崩溃

    可恢复性

    系统的一部分组件失效时,不会影响到整个系统。消息队列较低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列的消息任然可以在系统恢复后被处理

    缺点

    • 系统可用性降低:如果消息队列挂了,系统就无法正常运行
    • 系统复杂性提高:加入消息队列,要考虑更多的问题,比如:一致性问题、如何保证消息不被重复消费、如何把正确的消息的可靠传输等。因此考虑的东西增加,复杂性增加
    • 一致性问题(分布式事务):A 系统处理完了直接返回成功了,人都以为你这个请求就成功了;但是问题是,要是 BCD 三个系统那里,BD 两个系统写库成功了,结果 C 系统写库失败了,这数据就不一致了

    消息队列选择

    ActiveMQ

    老牌的消息中间件,国内很多公司过去运用的非常广泛,功能强大,但是问题在于没法确认ActiveMQ可以支撑互联网公司的高并发、高负载以及高吞吐的复杂场景,在国内互联网公司落地较少。而且使用较多的是一些传统企业,用ActiveMQ做异步调用和系统解耦

    RabbitMQ

    好处在于可以支撑高并发、高吞吐、性能很高,同时有非常完善便捷的后台管理界面可以使用,支撑集群化、高可用部署架构、消息高可靠支持,功能较为完善。使用较为多

    除此之外,RabbitMQ的开源社区很活跃,较高频率的迭代版本,来修复发现的bug以及进行各种优化

    但是RabbitMQ也有一点缺陷,就是他自身是基于erlang语言开发的,所以导致较为难以分析里面的源码,也较难进行深层次的源码定制和改造,毕竟需要较为扎实的erlang语言功底才可以

    RocketMQ

    RocketMQ是阿里开源的,经过阿里的生产环境的超高并发、高吞吐的考验,性能卓越,同时还支持分布式事务等特殊场景

    而且RocketMQ是基于Java语言开发的,适合深入阅读源码,有需要可以站在源码层面解决线上生产问题,包括源码的二次开发和改造。

    Kafka

    Kafka提供的消息中间件的功能明显较少一些,相对上述几款MQ中间件要少很多,但是Kafka的优势在于专为超高吞吐量的实时日志采集、实时数据同步、实时数据计算等场景来设计

    因此Kafka在大数据领域中配合实时计算技术(比如Spark Streaming、Storm、Flink)使用的较多。但是在传统的MQ中间件使用场景中较少采用

    ActiveMQRabbitMQRocketMQKafkaZeroMQ
    单击吞吐量比RabbitMQ低2.6w/s(消息做持久化)11.6w/s17.3w/s29w/s
    开发语言javaErlangJavaScala/JavaC
    主要维护者ApacheMozilla/SpringAlibabaApacheiMatix,创始人已去世
    成熟度成熟成熟开源版本不够成熟比较成熟只有C、PHP等版本成熟
    订阅形式点对点(p2p)、广播(发布-订阅)提供了4种:direct, topic ,Headers和fanout。fanout就是广播模式基于topic/messageTag以及按照消息类型、属性进行正则匹配的发布订阅模式基于topic以及按照topic进行正则匹配的发布订阅模式点对点(p2p)
    持久化支持少量堆积支持少量堆积支持大量堆积支持大量堆积不支持
    顺序消息不支持不支持支持支持不支持
    性能稳定性一般较差很好
    集群方式支持简单集群模式,比如‘主-备’,对高级集群模式支持不好支持简单集群,'复制’模式,对高级集群模式支持不好。常用 多对’Master-Slave’ 模式,开源版本需手动切换Slave变成Master天然的‘Leader-Slave’无状态集群,每台服务器既是Master也是Slave不支持
    管理界面一般较好一般

    消息中间件的核心组成部分

    1. 消息的协议
    2. 消息的持久化机制
    3. 消息的分发策略
    4. 消息的高可用,高可靠
    5. 消息的容错机制
    展开全文
  • 错误处理中间件

    2021-01-15 14:13:40
    Express框架提供了错误处理中间件用来处理错误,程序在运行过程中一旦出错不能够再继续运行了,如果想要程序在出错以后还能够继续运行我们就需要在程序当中捕获错误加个错误处理,程序错误可以 大致分为两种一种是...

    错误处理中间件

    在程序执行的过程中,不可避免的会出现一些无法预料的错误,比如文件读取失败,数据库连接失败,错误处理中间件是一个集中处理错误的地方。
    Express框架提供了错误处理中间件用来处理错误,程序在运行过程中一旦出错不能够再继续运行了,如果想要程序在出错以后还能够继续运行我们就需要在程序当中捕获错误加个错误处理,程序错误可以
    大致分为两种一种是应用逻辑错误就是bug,这种错误是可以在开发阶段解决的。
    程序在读取硬盘中某一个文件时这个文件不存在,程序也会报错。但是这种错误无法在开发阶段预料到,在程序运行过程中这种错误就需要被捕获,然后再对错误进行妥善处理才不会导致程序的崩溃。
    这种错误包括要连接的数据库没有开启,都是一些预料之外的错误。
    我们可以在每个程序要出错的地方进行判断,但是这样做会导致重复的代码增多。
    在Express中提供了错误处理中间件,这是一个统一处理错误的地方。

    app.use((err,req,res,next)=>{
    	res.status(500).send('服务器发送未知错误');
    })
    

    错误处理中间件和普通中间件相比它的参数函数有四个形参分别为错误对象,请求对象,响应对象和next方法。
    在参数函数中可以对错误进行集中处理,比如上述代码中对客户端做出了响应,告诉客户端服务器这边发生了位置错误并且将HTTP状态码设置为500。客户端看到500这个状态码时就知道是服务器端出了问题。
    当程序发生错误时候 错误处理中间件会被自动执行。

    // 引入express框架
    const express = require('express');
    // 创建网站服务器
    const app = express();
    // 监听端口
    // 错误处理中间件
    // 当访问/index这个请求地址的时候,程序就会抛出一个错误
    app.get('/index',(req,res)=>{
    	// 手动抛出错误
    	// 创建Error构建函数的实例就相当于创建了一个错误
    	throw new Error('程序发生了未知错误')
    })
    // 当程序抛出错误以后,会自动执行错误处理函数中间件
    app.use((err,req,res,next)=>{
    	// 当服务器发生错误,状态码应该设为500
    	res.status(500).send(err.message);
    })
    app.listen(3000);
    console.log('网站服务器启动成功') 
    

    在这里插入图片描述
    当程序出现错误时,调用next()方法,并且将错误信息通过参数的形式传递给next()方法,即可触发错误处理中间件。

    错误处理中间件只能捕获到同步代码执行出错,throw new Error('程序发生了未知错误')实际上是一个同步代码,如果异步代码在执行过程中出现了错误,这个错误在错误处理中间件中是没有办法捕获到的,这时需要手动去触发错误代码中间件,当异步API出错时需要调用next方法并且将错误方法传递到next中就可以。

    app.get("/", (req,res,next) =>{
    	fs.readFile("/file-does-not-exit",(err, data)=>{
    		if(err){
    			next(err);
    }
    	});
    });
    

    文件读取失败:

    // 引入express框架
    const express = require('express');
    // 创建网站服务器
    const app = express();
    const fs = require('fs');
    
    
    // 错误处理中间件
    // 当访问/index这个请求地址的时候,程序就会抛出一个错误
    app.get('/index',(req, res, next) => {
    	// 手动抛出错误
    	// 创建Error构建函数的实例就相当于创建了一个错误
    	// throw new Error('程序发生了未知错误')
    	fs.readFile('./demo.txt','utf8',(err, result) => {
    		// 如果err对象为空 那文件读取成功
    		if(err != null){
    			next(err)
    		}else{
    			res.send(result)
    		}
    	})
    	// res.send('程序正常执行')
    })
    // 当程序抛出错误以后,会自动执行错误处理函数中间件
    app.use((err,req,res,next)=>{
    	// 当服务器发生错误,状态码应该设为500
    	res.status(500).send(err.message);
    })
    // 监听端口
    app.listen(3000);
    console.log('网站服务器启动成功') 
    

    在这里插入图片描述
    文件读取成功:

    // 引入express框架
    const express = require('express');
    // 创建网站服务器
    const app = express();
    const fs = require('fs');
    
    
    // 错误处理中间件
    // 当访问/index这个请求地址的时候,程序就会抛出一个错误
    app.get('/index',(req, res, next) => {
    	// 手动抛出错误
    	// 创建Error构建函数的实例就相当于创建了一个错误
    	// throw new Error('程序发生了未知错误')
    	fs.readFile('./01.js','utf8',(err, result) => {
    		// 如果err对象为空 那文件读取成功
    		if(err != null){
    			next(err)
    		}else{
    			res.send(result)
    		}
    	})
    	// res.send('程序正常执行')
    })
    // 当程序抛出错误以后,会自动执行错误处理函数中间件
    app.use((err,req,res,next)=>{
    	// 当服务器发生错误,状态码应该设为500
    	res.status(500).send(err.message);
    })
    // 监听端口
    app.listen(3000);
    console.log('网站服务器启动成功') 
    

    在这里插入图片描述
    错误处理中间件和普通中间件相比是有4个参数的,第一个参数是error对象,错误处理中间件默认情况下只能主动捕获到同步代码执行出错,如果异步代码执行出错,它是捕获不到的,这个时候需要手动执行next()方法,并且给next方法传递参数,它才能够去触发错误处理中间件。

    展开全文
  • 国产化中间件、数据库基本使用中间件东方通TongWeb启动部署项目域金蝶数据库人大金仓kingbase达梦dm 下列中间件或数据库在linux上的安装基本都是将安装包放进某个目录下,解压即可,不再赘述。 中间件 东方通TongWeb...


    下列中间件或数据库在linux上的安装基本都是将安装包放进某个目录下,解压即可,不再赘述。

    中间件

    东方通TongWeb

    启动

    安装完tongweb后,在安装目录下找到bin目录,bin目录下就是一些启动停止东方通的命令:
    在这里插入图片描述
    启动命令:(推荐使用后台启动

    • 前台启动:sh startserver.sh
      //会直接打出启动日志,但是按ctrl+C退出时东方通也会停止
    • 后台启动:nohup sh startserver.sh &
      //不会打日志,想看日志需要ctrl+c后再输入tail -f nohup.out(输入ctrl+c不影响东方通)
      //如果最后不加“&”,退出当前服务器连接的话,东方通也会停止

    部署项目

    启动完之后,去浏览器输入http://ip:9060/console (默认的是9060端口,新建域后就不是了)
    默认用户名密码是thanos和thanos123.com

    进入控制台之后,需要对默认配置进行一些优化:

    • 【Web 容器配置】-【访问日志】:取消扩展日志格式
    • 【Web 容器配置】-【虚拟主机管理】:关闭访问日志
    • 【Web 容器配置】-【Https 通道管理】:点开tong-http-listener,更新URL编码格式为UTF-8,parse-body-methods勾选全部类型
    • 【服务】:关闭自动部署和热部署
    • 【监视】-【监视配置】:取消监视功能开关
    • 【启动参数配置】-【其他jvm参数】:-XX:MaxMetaspaceSize改成512m

    包外配置文件

    如果项目使用的是包外配置文件,可以在【启动参数配置】-【其他jvm参数】下添加配置,指定配置文件存放路径:
    例如 -Dapplication.path=${TongWeb_Base}/config
    config要放在和bin同级的目录下,配置完保存,重启东方通才会生效
    在这里插入图片描述
    :外部配置文件不是写在这个启动参数里就能立刻生效的,项目代码里也需要一些操作,以java为例,需要的朋友可以参考下web 项目读取外部配置文件

    配置完之后,找到 【应用管理】:点击“部署应用”,选择文件(已经打好的war包),其他选项可以默认,开始部署。
    如果部署失败,去服务器看下nohup.out日志,定位解决问题;
    如果部署成功,在【应用管理】页面点击 http访问 ,即可看到我们的系统啦!

    :东方通指定了系统访问的端口号,端口号是东方通控制台的【WEB容器配置】-【Https 通道管理】-【tong-http-listener】的监听端口
    在这里插入图片描述

    安装了一个东方通后,如果想部署多个应用该怎么办呢?
    正常人都会想在上一步中所说的【应用管理】里再部署一个应用,但我尝试的时候,无法启动成功。
    最后还是新建一个域,在这个域中再部署新应用(部署步骤同上)

    • 创建域
      创建时会自动分配一个端口(默认的是9060,新建的第一个域端口加1,即9061)
    #相对域,会在安装目录下的domains目录下建立同域名的目录
    sh domain.sh create TESTDOMAIN
    #绝对域,需要制定绝对路径——不建议,域统一建在domains目录下比较好
    sh domain.sh create /opt/TESTDOMAIN
    
    • 删除域
      删除后,对应的端口会被收回,下次再创建新域端口会使用收回的端口
    #相对域
    sh domain.sh delete TESTDOMAIN
    #绝对域
    sh domain.sh delete /opt/TESTDOMAIN
    
    • 启动域
    #在安装目录bin目录下
    #相对域
    sh startdomain.sh ZHBA
    #绝对域
    sh startdomain.sh /opt/ZHBA
    
    #在域目录bin目录下
    sh startservernohup.sh
    sh startserver.sh              #记得使用后台启动方式(startservernohup也行)
    
    • 停止域
    #在安装目录bin目录下
    #相对域
    sh stopdomain.sh ZHBA
    #绝对域
    sh stopdomain.sh /opt/ZHBA
    
    #在域目录bin目录下
    sh stopserver.sh
    

    新建的域的控制台端口在域目录下的conf目录下的tongweb.xml文件中找:
    在这里插入图片描述
    在这里插入图片描述

    金蝶

    新建域

    在这里插入图片描述
    按提示一步步执行,比较长我就不细说了。

    启动域

    新建完域之后,进入这个域的bin目录,前台启动(第一次先前台启动,要输入管理员初始化密码)
    前台启动命令:

    ./startapusic
    首次启动,请输入管理员初始化密码: XXXXXXX
    请再次输入管理员初始化密码:XXXXXXX
    

    后台启动命令:

    nohup ./startapusic &
    

    部署项目

    启动完之后去浏览器打开控制台http://ip:6888/admin(端口号默认6888,看自己新建域时定义的是多少)
    默认用户名密码应该是admin/admin
    在这里插入图片描述
    找到【应用管理】,部署应用
    在这里插入图片描述

    在这里插入图片描述

    更换war包时需要先停止应用,再卸载,然后重新部署应用
    金蝶控制台按钮点击交互体验不太好,部署完成后和启动应用时都要等待一会,启动应用时可以去【日志监控】模块查看实时日志。

    展开全文
  • 1.1启动、停止服务 进入普元安装目录,执行./startServer.sh,启动DMS控制台;执行./stopServer.sh启动DMS控制台。 cd /root/primeton/PAS/pas6 ./startServer.sh ...点击应用程序–>部署按钮 可以

    1.1启动、停止服务

    进入普元安装目录,执行./startServer.sh,启动DMS控制台;执行./stopServer.sh启动DMS控制台。

    cd  /root/primeton/PAS/pas6
    ./startServer.sh
    ./stopServer.sh
    

    在这里插入图片描述
    在这里插入图片描述

    1.2访问管理界面

    可以通过 http://ip:port/访问管理控制台(默认 port 为 6888),
    管理员账户名: admin
    管理员账户默认密码:manager
    在这里插入图片描述

    1.3部署及应用访问

    点击应用程序–>部署按钮在这里插入图片描述
    可以有2种部署的方式
    1、选择“ 要上传到服务器的打包文件”
    ※点击“选择文件”,上传需要部署的程序包;
    ※“上下文根”填写一下,否则访问会404;
    ※点击“确定”等待部署程序包完成;
    ※点击“应用程序–>访问”按钮,即可查看到访问路径;
    ※不是本地访问需要将域名替换为服务器的IP地址
    在这里插入图片描述
    在这里插入图片描述

    2、选择“可以访问服务器本地的打包文件或目录,支持绝对路径和相对路径”
    ※ 输入程序包存放的相对路径或者绝对路径;
    ※“上下文根”填写一下,否则访问会404;
    ※ 点击“确定”等待部署程序包完成;
    ※点击“应用程序–>访问”按钮,即可查看到访问路径;
    ※不是本地访问需要将域名替换为服务器的IP地址
    在这里插入图片描述

    1.4启用、禁用服务

    点击“应用程序–>启用”按钮
    点击“应用程序–>禁用”按钮
    在这里插入图片描述

    1.5卸载应用

    点击“应用程序–>卸载”按钮
    在这里插入图片描述

    1.6部署报错问题解决

    在这里插入图片描述
    free -h 查看服务器内存使用情况
    cat /proc/meminfo 查看服务器内存使用情况

    登录管理控制台,修改JVM内存大小
    在这里插入图片描述

    展开全文
  • 消息中间件-MQ

    2021-02-06 17:22:00
    中间件是计算机软件,它为操作系统以外的软件应用程序提供服务。它可以被描述为“软件粘合剂”。 中间件使软件开发人员更容易实现通信和输入/输出,因此他们可以专注于应用程序的特定用途。作为解决如何将新的应用...
  • //设置小程序分组中间件 'MiniLogin'=>[ MiniLogin::class ], 然后在路由中让想继承的路由进行继承 //小程序分组中间件 Route::group(['middleware'=>['MiniLogin']],function (){ //列表 Route::get('liebiao',[\...
  • 中间件

    2021-03-17 07:57:51
    中间件(英语:Middleware),又译中间件、中介层,是一类提供系统软件和应用软件之间连接、便于软件各部件之间的沟通的软件,应用软件可以借助中间件在不同的技术架构之间共享信息与资源。中间件位于客户机服务器的...
  • 中间件简介

    2021-10-17 20:50:00
    中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相...
  • Go middleware中间件

    2021-03-03 11:26:54
    先从业务开发角度出发,来逐渐引出中间件。一、刚开始时业务开发开始业务开发时,业务需求比较少。当我们最开始进行业务开发时,需求不是很多。 第一个需求产是品向大家打声招呼:“hello world”。接到需求任务,...
  • Spring中间件 - 什么是中间件

    千次阅读 2021-11-19 18:26:29
    一、前言 在互联网应用开发初期,所有用于支撑系统建设的,框架结构、基础工具、业务逻辑、功能服务包括页面展示等,都是在一个系统中开发完成,最终也只是把系统和数据库部署在...在中间件这一层的建设,基本是来自.
  • 基于MATLAB的条形码识别程序

    千次阅读 2021-04-15 12:07:08
    基于MATLAB的条形码识别程序 软件平台: MATLAB2018(a) 条形码类别:EAN13码 部分程序: clc;clear; close all; Image=imread(‘2.jpg’); %读取图片 % imshow(Image); %显示原图 photo=rgb2gray(Image); %灰度...
  • 中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相...
  • web中间件

    千次阅读 2021-01-29 08:55:38
    也就是说,关于中间件,我们可以理解为:是一类能够为一种或多种应用程序合作互通、资源共享,同时还能够为该应用程序提供相关的服务的软件。(注意:中间件是一类软件的总称,不是单独的一个软件) 我
  • 说明更新日志:2019-10-29 6.0正式版中间件的逻辑改动较大,此篇分析只适用旧版本。新版使用“管道”的形式,最新的分析请看这篇:博客:ThinkPHP 6.0 管道模式与中间件的实现分析接上篇,runWithRequest方法最后...
  • 中间件基础

    2021-01-06 18:03:09
    中间件是位于平台(硬件和操作系统)和应用之间的通用服务,这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,他们有符合接口和协议规范的多种实现 二、分类 1.基础中间件 主要应用于接点之间、...
  • Python 中间件

    2020-12-21 11:38:28
    最新项目简介此模块提供中间件来将NetBox更改发布到Kafka。安装pip install netbox-kafka-producer配置将以下内容添加到您的NetBox设置中。INSTALLE ...2020-12-21已阅读: n次#邮递员回复postman repl使用ipython向...
  • 中间件介绍

    2021-01-18 14:49:25
    本来今天就该讲 MyCat 了,但是我发现还有一个概念值得和大家聊一下,那就是 Java 中间件! 因为 MyCat 是一个分布式数据库中间件,要理解 MyCat ,那你就得先知道到底什么是中间件中间件简介 说起中间件,很多人...
  • 1. 什么是中间件 我国企业从20世纪80年代开始就逐渐进行信息化建设,由于方法和体系的不成熟,以及企业业务和市场需求的不断变化,一个企业可能同时运行着多个不同的业务系统,这些系统可能基于不同的操作系统、不同...
  • 中间件简析

    2021-10-22 15:21:26
    它并没有很严格的定义,但是普遍接受IDC的定义:中间件是一种独立的系统软件服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。...
  • 常用中间件 引言 中间件(middleware)一词每天都被不同的人群所提及,中间件的产品也大量出现在软件市场,但中间件的定义却一直比较模糊,导致中间件的分类也不很统一。也许正因为如此,才使人们不断地设计和开发新...
  • java中间件

    2021-02-06 14:31:00
    中间件(Middleware)是处于操作系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分。人们在使用中间件时,往往是一组中间件集成在一起,构成一个平台(包括开发平台和运行平台),但在这组中间件中...
  • 消息中间件简介

    2021-06-15 21:12:18
    消息中间件(MQ)的定义 其实并没有标准定义,一般认为,消息中间件属于分布式系统中一个子系统,关注于数据的发送和接收,利用高效可靠的异步消息传递机制对分布 式系统中的其余各个子系统进行集成。 几个关键词: ...
  • 怎样在ASP.NET Core应用程序中,配置静态文件中间件?UseFileServer中间件的作用是什么? 最重要的特性之一就是;几乎所有的web应用程序都应该具备直接从文件系统存取静态文件的能力。ASP.NET Core能够直接从客户端...
  • 面向数据库的中间件是促进与数据库通信的中间件,无论是来自应用程序还是数据库之间。 开发人员通常使用面向数据库的中间件作为从本地或远程数据库提取信息的机制。 例如,为了从Oracle数据库提取信息,开发人员可以...
  • 中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相...
  • 之前给大家介绍了很多的java基础知识,今天同样的也是要给大家介绍这方面的内容,那么对于java中间件你都了解多少呢?究竟什么是java中间件?比较常用的java中间件都有哪些?一起来了解一下吧。一、什么是java中间件?...
  • 中间件(英语:Middleware)顾名思义是系统软件和用户应用软件之间连接的软件,以便于软件各部件之间的沟通,特别是应用软件对于系统软件的集中的逻辑,是一种独立的系统软件或服务程序,分布式应用软件借助这种软件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 178,914
精华内容 71,565
关键字:

中间件程序