当前位置:  技术问答>linux和unix

[在现等]一个程序的架构问题?

    来源: 互联网  发布时间:2016-12-23

    本文导语:      现在公司安排我做个企业层级管理的媒体服务器的项目。     功能主要就是:     1、一个部门说话,包括本部门在内,以及本部门管辖的所有下级部门都可以听到语音。当有上级部门说话执行功能2的情况     2、...

    现在公司安排我做个企业层级管理的媒体服务器的项目。

    功能主要就是:
    1、一个部门说话,包括本部门在内,以及本部门管辖的所有下级部门都可以听到语音。当有上级部门说话执行功能2的情况
    2、当在部门说话的期间,有上级部门发话,这时直接挂断本部门的话语权,这时上级部门执行功能1的情况。

    起初认为是简单的树状结构。后来细细一想并不是简单的树状结构。有可能一个结点(部门)的子结点(下属部门)指向所有兄弟结点(同级部门)的子结点(下属部门)。这样子与我的设计之初就有了出入,最开始想的就是一个简单的树状结构,每个结点(部门)都有一个父结点(上级部门)。每个子结点(下级部门)只隶属于自己的结点(部门),这些子结点不同时隶属于兄弟结点(同级部门)。
    从现在来看是不能像普通树的做法来做了,想问一下现在应该用什么样的框架来管理这些企业内部的关系网络。我现在想的方法是有两个,一个是用有向图来管理,另一个是为每个部门维护一个自己的树状结构。但是这两个架构都是有一个小问题就是无法快速定位上级部门是否有话语权,可能都需要遍历大边的结点才能得知是否有上级部门在说话。

    想请教一下做过类似,或有一些自己看法的高人们给点建议。急,在线等,先谢过了
       

|
能不能2个人同时说话
还有例如  1 2 3 属于 A的下属部门  3 4 5 属于 B 的下属部门
当A B 同时有人说话 那部门3 有什么反应

|

|
我想法很简单啊,树(不用图,这样优先级才好确定)+优先级队列(不过得先确定有多少个部门才能确定优先级)。
树正如你们说的,用来记录他们之间关系,有了优先权其实都很好办对吧?要说话先进队列,队列一更新马上进行调度。

你说的那个下级部门可能可以管理上级部门的情况可以加一个标记,每次对队列进行调度的时候通过标记+优先级进行调度。

不过要注意的是,树需要有两个指针,一个是指向当前节点能管理的部门(部门低管理部门高的),另外一个也一样,不过是从部门高到部门低,有这种情况就需要加标记。


其实如果是问实际上来做,如果不考虑空间复杂度,我会开若干个很大的数组去管理。

|
你这样就没法弄了,最后程序会乱。
尝试把两个功能分开呢?
1 部门管理本身就是树形
2 业务相关的通过其它模块控制

|
如果是我,用最笨的方法
直接每个部门建立一个上级部门库,和一个下级部门库

这样就可以了,除非这个公司很庞大,几百上千个部门,导致这个单独建库的方法比用树和图算法花费的时间和精力还多。
用不用算法,在我看来要计算投入和收益才决定

|
依照我来看,直接用HASH表存储节点(存取快一些),节点中有一个关于权限的成员变量。
说话的时候谁的权限大就允许谁说话
想不出来用什么树来解决,部门少的话可以考虑。

|
菜鸟,个人觉得什么图,什么树要是麻烦的话,直接部门编码得了

比如:董事会 是最高部门 01;总经理0101,技术部010101 ,etc

编码两位一个等级,这样的话通过编码来判断说话人的等级,

例如:技术部的人在说话,系统存入他们的等级编码,当另外一个要说话的时候直接判断编码

只要位数比她少的。直接切断,让老大说话。呵呵

|
每个部门给个权限优先级不行吗。。
然后按照优先顺序来

权限设计可以这么作:首先建立一个有向无圈图,然后找到一个极大元,权限设最高,然后剔出这个节点。

迭代计算便可获得所有部门的优先级

程序运行只要比较优先级就行了

    
 
 

您可能感兴趣的文章:

  • 一个老程序员的观点:Linux程序/内核设计是一门技术,Windows下的可扩展、可复用架构设计是一门艺术!
  • 高性能网络服务程序架构的一点困惑(请高手多提点意见)
  • 关于线程的使用,程序架构的问题
  • c/c++服务器程序内存泄露问题分析及解决
  • unix程序中调用其他程序的问题
  • 走虚拟网卡内核程序和走物理网卡应用程序结合问题
  • wine中安装windows程序,程序崩溃的问题
  • 一个信息添加,修改,删除,查询的问题,程序出了一个问题实在不知道为什么,各位帮看一下程序如下
  • 请问linux下一个很简单的问题:我们的控制台下直接输入某个程序名就可以执行该程序,原理是什么?
  • Linux下面的开发好的Java程序,如何部署到其他机器?开发好的Java图形程序,终端上能否用?等问题
  • 程序发布的问题(动态连接库的问题)
  • linux初学者一简单问题!在线送分!linux设备驱动程序一书的第一个程序.
  • 紧急问题:我启动一个java程序之后用ps一看,为和显示我启动了多个程序?然后我kill-9第一个pid之后,又全部没了
  • ./configure时,提示 missing /usr/.../version.h文件?是系统问题?还是安装程序的问题?
  • jbuilder7问题 编译没有问题,内部运行编写的的java程序就退出了???
  • 请教高手一个简单问题:给定一个文件名,如何去查找该文件正在被几个程序使用,并怎么样才可以切断这个文件与正在打开该文件的程序之间的
  • 请教多线程程序的内存占用问题
  • 关于软件或者程序的源代码问题??
  • 几个Linux应用程序开发的问题请教LINUX程序员!
  • linux可执行程序运行速度问题
  • 多线程网络通讯程序的稳定性问题
  • 程序输出的问题
  • linux基础问题,configure,make生成应用程序问题
  • shell脚本变量与应用程序同步的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 重装服务器后IIS网站错误(应用程序中的服务器错误)
  • 为什么我在java程序里启动的一个程序在java程序关闭后,该程序的所有进程都关掉了
  • windows server2008上PowerBuilder程序系统错误解决方法
  • Linux 编程怎么样在程序开启一个程序,和关闭一个程序?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • 请问从一个java程序中如何调用另一java程序,并控制可以其状态(最小化、最大化、结束程序),还有怎样知道那个被调用的程序结束。
  • 程序员的八种级别,你属于哪一级?
  • Linux下的程序是在内存中运行的吗?为什么在程序运行的时候可以删除程序文件?
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 我的程序是用c写的gtk+程序,有个函数的参数要传给它图片的文件名,但是图片和原程序不在同一目录下怎么办?怎么在程序里指定文件的路径
  • 在docker容器中通过apt-get安装新的程序
  • 为什么linux下的C++程序这么少见? 请问那里有linux下的C++程序?什么类型的程序都可以.
  • linux下通过crond实现自动执行程序
  • 我写了个linux下的网络程序,程序在多个电脑间通信,但是我没有多个电脑,怎么调试这样的程序啊?
  • http协议介绍,文件上传分析及程序举例
  • 在java控制台程序中,可以用System.exit(0);使用一个程序终止,那么在servlet中如何使一个servlet程序终止呢?
  • 程序员赚钱致富的6种方法
  • 程序调用脚本,脚本启动另一个程序,如何让原始程序彻底释放资源?
  • HASH查找的程序实现及性能分析
  • python计算程序开始到程序结束的运行时间和程序运行的CPU时间
  • 程序员为了健康必看!早晨空腹喝水,是对还是错?
  • linux下,一个程序如何向另一个程序发送消息,另一个程序如何接收


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3