PHPOA!国内首家专业OA办公软件、OA系统、政务办公开源oa系统服务提供商,采用PHP+MYSQL开源语言,一直致力于应用管理软件基层研发,现己推出企业OA、政府OA、集团OA、SAAS版OA等应用平台,详细咨询13807814037
现在论坛购买,只需588元
阆中市政府
政务OA系统:夹江县政府机关oa中一起学习设计模式--05.原型模式证照管理,能够使企业、员工所有证照原件得到妥善的管理,在使用的时候确保证照的完整性,防止损坏或遗失。 证照管理的人对工作周报的创建和编写模块产生了抱怨。究其原因,a公司的oa管理员发现,由于某些岗位每周工作存在重复性,工作周报内容都大同小异。如图:
这些周报只有一些小地方存在差异,但是先行系统每周默认创建的周报都是空白报表,用户只能通过重新输入或不断复制、粘贴来填写重复的周报内容,极大降低了工作效率,浪费宝贵的时间。如何快速创建相同或相似的工作周报,成为a公司oa开发人员面临的一个问题。
开发人员通过对问题仔细分析,决定按照以下思路对工作周报模
央行统筹协调,长安链协作网络征信关键节点启用:日前,依托长安链建设的“京津冀征信链”首款产品在朴道征信有限公司正式上链发布,这标志着长安链协作网络征信节点建设和应用已全面启动,将在推动京津冀协同发展方面发挥重要作用,并逐步建设成为国内领先的征信科技服务网络体系
”具有高性能、强隐私、广协作的技术特点,在96核区块链专用加速芯片的助力下,不仅可以从容应对海量数据的可信连接,还可以构建实现物理隔离的数据处理“安全屋”,具备强大的隐私保护能力,高效支撑能源、金融、政务服务等业务的开展
近一年来,紧密围绕长安链组建的生态联盟已经拥有国家电网、建设银行等50家成员单位,长安链协作网络已接入政务、金融、医疗、通信、能源、工业互联等多个关键领域,搭建起一个个节点。
tips
更多长安链开源项目qa,可登录开源社区、技术文档库查看。
4.29看点 | 智慧城市探路者——《智慧城市安全体系研究报告》揭晓:公安部网络安全保卫局郭启全总工程师、北京市委网信办陈祥副主任、国家安监总局研究中心贺定超副主任、北京网安总队党委委员田广辉书记、交通部信息中心王林处长、北京经信委史宜会处长、海淀区经信委李鑫处长、中国网络安全产业联盟关键基础设施保护工作委员会孙一桉主任出席此次论坛并发表致辞
公安部网络安全保卫局郭启全总工程师致辞中指出,网络安全在平安城市和智慧城市建设中起到了关键性作用。在其涉及到的市政行业水电、轨道交通等实体安全和网络安全方面,离不开所有网络安全企业的技术支撑。 ?
▲ 公安部网络安全保卫局郭启全总工程师发表致辞?▲ 北京市委网信办陈祥副主任发表致辞论坛上中国网络安全产业联盟联合安恒信息等多家单位,重磅发布了《智慧城市安全体系研究报告》。
2014年8月,国家发改委等八部委联合印发了《关于促进智慧城市健康发展的指导意见》。在国家政策引领下,全国智慧城市建设快速发展,国家的“十三五”规划对建设新型智慧城市提出了新要求。
《智慧城市安全体系研究报告》之中,其中由安恒信息编写的《丽水智慧政务案例》被报告选为优秀案例。
1分钟链圈 | ibm再砸550万美金,开设圣保罗区块链中心,业务辐射拉美;区块链珠宝平台获1040万美元融资:观点瑞波联合创始人:数字货币需要一个成功的分散网络北大刘晓蕾:区块链最核心的发展潜力是解决数字资产的确权问题丹华资本dovey wan:硅谷技术大神钻研区块链财政部副部长朱光耀:g20正在深入讨论对数字经济征税全球英澳加强有关数字货币的金融合作马来西亚
瑞波联合创始人:数字货币需要一个成功的分散网络瑞波联合创始人jed mccaleb采访中表示,数字货币和区块链技术需要一个分散的网络才能成功,而使用一个集中支付的网络将导致系统不如一个swift或者paypal
财政部副部长朱光耀:g20正在深入讨论对数字经济征税财政部副部长朱光耀在中国发展高层论坛上表示,数字经济还处在发展的过程中,要以科普、推动的态度来推进数字经济发展。
ibm在圣保罗投资550万美元开设区块链中心,业务将辐射整个拉丁美洲根据ibm公司拉丁美洲区域总经理ana paula assis透露,这家“蓝色巨人”将投资550万美元在巴西圣保罗开设全新的区块链中心
,这也是拉丁美洲第一个致力于区块链行业的技术中心,预计将会在今年二季度为整个地区的客户提供服务。
数据图处处有陷阱?五个案例教你轻松辨真伪:此图有好几个问题值得商榷。首先,在数据图里用图形元素作单位从来都不是个好主意。用五本书代表75%、或者用16本书代表82%是几个意思?这到底是个柱状图,y轴就应该以零作为起始值。
这也说明政府的数据分类做的太糟糕,即使是毕业率这样简单的指标他们也需要好几张数据表才拼凑得出。
4.背景不了解,制图出偏颇——以美国政府开支分布图为例以下是2015年初疯传的政府开支饼图:?politifact发现,这是一个对于政府开支实际运作方式根本上的误读。
该图展现的仅仅是政府可以自由决定的部分,完全忽略了硬性开支。实际上,医疗保健、医疗补助、社会保障等法定项目占去了政府总开支的60%。
该图显示政府给低收入者发放的“食品券”一项已被归入食品和农村预算一项(可由政府自由决定),实际上是硬性项目的一部分,并没有在图中体现出来。以下则是包括硬性开支后的2015年政府开支图:?
阆中市政府政务OA系统:夹江县政府机关oa中一起学习设计模式--05.原型模式,按分类:于企业而言,证照分有:营业执照、安全生产许可证、税务登记证、建筑方面的相关证件等等;于员工而言,证照可分为:健康证、会计证等等,这些都关系着员工个人与企业发展。 为了企业能够做好证照管理,适应企业发展的需求,
政务OA系统实现与证照管理对接,提高对证照管理规范化,满足企业对各种证照及个人证件实行分层管理。
政务OA系统人事管理系统,使企业能够对所有的证照能够状态及时掌握,证照是否生效、是否过期,都能在证照管理中,保证按时年检。前言
《西游记》中的孙悟空吹猴毛变出很多猴兵的故事想必大家都知道,《火影》中鸣人的多重影分身大部分人应该也是都知道,他们都可以根据自己的形象,复制(又称克隆)出很多和自己一摸一样的“身外身”来。在设计模式中也存在一个类似的模式,可以通过一个原型对象克隆出多个一模一样的对象,该模式被成为原型模式。
一、大小异同的工作周报
a公司一直使用自行开发的一套
政务OA系统进行日常工作办理,但在使用过程中,越来越多的人对工作周报的创建和编写模块产生了抱怨。究其原因,a公司的oa管理员发现,由于某些岗位每周工作存在重复性,工作周报内容都大同小异。如图:
这些周报只有一些小地方存在差异,但是先行系统每周默认创建的周报都是空白报表,用户只能通过重新输入或不断复制、粘贴来填写重复的周报内容,极大降低了工作效率,浪费宝贵的时间。如何快速创建相同或相似的工作周报,成为a公司oa开发人员面临的一个问题。
开发人员通过对问题仔细分析,决定按照以下思路对工作周报模块进行重构设计和实现:
除了运行用户创建新的周报外,还允许用户将创建好的周报保存为模板。
用户在再次创建周报时,可以创建全新的周报,也可以选择合适的模板复制生成一份相同的周报,然后对新生成的周报根据实际情况进行修改,产生新的周报。
只要按以上步骤,就可以大大的提高工作周报的创建效率。但是如何在一个面向对象系统中实现对象的复制和粘贴呢?接下来要学习的原型模式正为解决这类问题而诞生。
二、原型模式概述
在使用原型模式时,需要首先创建一个原型对象,然后再通过复制这个原型对象来创建更多同类型的对象。定义如下:
原型模式(prototype pattern):使用原型实例指定创建对象的种类,并且通过克隆这些原型创建新的对象。原型模式是一种创建型模式。
原型模式的工作原理很简单:将一个原型对象传给要发动创建的对象,这个要发动创建的对象通过请求原型对象克隆自己来实现创建过程。通过克隆方法所创建的对象是全新的对象,他们在内存中拥有新的地址。对克隆产生的新对象进行修改不会对原型对象造成任何影响,每个克隆对象都是相互独立的。
原型模式的结构如图:
原型模式结构图中包含以下3个角色:
prototype(抽象原型类):它是声明克隆方法的接口,是所有具体原型类的公共父类,可以是抽象类也可以是接口,甚至还可以是具体的实现类。
concreteprototye(具体原型类):它实现在抽象原型类声明的克隆方法,在克隆方法中返回自己的一个克隆对象。
clinet(客户类):让一个原型对象克隆自身从而创建一个新的对象,在客户类中只需要直接实例化或通过工厂方法等方式创建一个原型对象,再通过调用该原型对象的克隆方法即可得到多个相同的对象。由于客户类针对抽象原型类 prototype 编程,因此用户可以根据需要选择具体原型类,系统具有较好的可扩展性,增加或更换具体的圆形类都很方便。
1、通用实现方法
通用的克隆实现方法是在具体圆形类的克隆方法中实例化一个与自身类型相同的对象并将其返回,并将相关的参数传入新创建的对象中,保证它们的成员变量相同。
代码语言:javascript
复制
/// <summary>
/// 抽象原型类
/// </summary>
public abstract class prototype
{
public string id { get; private set; }
protected prototype(string id)
{
this.id = id;
}
//抽象类关键就是这样一个clone方法
public abstract prototype clone();
}
/// <summary>
/// 具体原型类
/// </summary>
public class concreteprototypea : prototype
{
public concreteprototypea(string id) : base(id)
{
}
public override prototype clone()
{
prototype prototype = new concreteprototypea(id);
return prototype;
}
}
客户端测试代码:
代码语言:javascript
复制
class program
{
static void main(string[] args)
{
prototype cp1 = new concreteprototypea("123");
prototype cp2 = cp1.clone();
console.writeline("cloned:{0}", cp2.id);
console.readkey();
}
}
2、c#语言提供的 clone 方法
c# 中要想能够实现克隆的类,必须实现一个标识接口 icloneable,表示这个类支持被复制。
代码语言:javascript
复制
public class concreteprototypeb : icloneable
{
public object clone()
{
return (object) this.memberwiseclone();
}
}
3、完整解决方案
a公司开发人员决定使用原型模式来实现工作周报的快速创建,结构如图:
weeklylog 充当具体原型类, object 充当抽象原型类,clone() 方法为原型方法。weeklylog 代码如下:
代码语言:javascript
复制
class program
{
static void main(string[] args)
{
weeklylog logpre = new weeklylog();
logpre.name = "张无忌";
logpre.date = "第12周";
logpre.content = "这周工作很忙,每天加班!";
printlog(logpre);
weeklylog lognew = logpre.clone() as weeklylog;//调用克隆方法创建克隆对象
lognew.date = "第13周";
printlog(lognew);
weeklylog lognext = lognew.clone() as weeklylog;
lognext.date = "第14周";
lognext.content = "这周还好,调休了2天";
printlog(lognext);
console.readkey();
}
static void printlog(weeklylog log)
{
if (log == null) return;
console.writeline("***周报***");
console.writeline("周次:{0}", log.date);
console.writeline("姓名:{0}", log.name);
console.writeline("内容:{0}", log.content);
console.writeline("-----------------------------------------------");
}
}
输出结果:
通过已创建的工作周报可以快速的创建新的周报,然后再根据需要修改周报,无须再从头开始创建。原型模式为
公文系统系统中任务单的快速生成提供了一种解决方案。
四、带附件的周报
通过引入原型模式,
政务OA系统工作周报的编写效率得到了很大提升,受到了员工的一致好评。但是有些员工发现了一个问题,当周报中带有附件时,使用原型模式来复制周报,虽然周报可以复制,但是周报的附件并不能复制。那怎么解决呢?
在回答这个问题之前,先介绍两种不同的克隆方法,浅克隆(shallow clone)和深克隆(deep clone)。两种方法的主要区别就是是否支持引用类型的成员变量的复制。
值类型包括:int、double、byte、bool、chart等简单数据类型。引用类型包括:类、接口、数组等复杂类型。
1、浅克隆
在浅克隆中,如果原型对象的成员变量是值类型,将复制一份给克隆对象;如果原型对象的成员变量是引用类型,则将引用对象的地址复制一份给克隆对象,也就是说原型对象和克隆对象的引用类型成员变量指向相同的内存地址。
代码:
代码语言:javascript
复制
/// <summary>
/// 附件类
/// </summary>
public class attachment
{
public string name { get; set; }
public attachment(string name)
{
name = name;
}
public void download()
{
console.writeline("下载文件,文件名为" + name);
}
}
public class weeklylog : icloneable
{
public string name { get; set; }
public string date { get; set; }
public string content { get; set; }
public list<attachment> attachments { get; set; }
public weeklylog()
{
attachments = new list<attachment>();
}
public object clone()
{
//使用c#提供的方法实现浅克隆
return this.memberwiseclone();
}
}
客户端代码:
代码语言:javascript
复制
class program
{
static void main(string[] args)
{
v2.weeklylog logpre, lognew;
logpre = new v2.weeklylog();
logpre.attachments.add(new attachment("第16周工作周报.txt"));
lognew = logpre.clone() as v2.weeklylog;
console.writeline("周报是否相同:{0}", logpre == lognew);
console.writeline("附件是否相同:{0}", logpre.attachments[0] == lognew.attachments[0]);
}
}
编译并运行,输出结果:
由此可见,由于使用的是浅克隆技术,通过“==”来比较原型对象和克隆对象的内存地址时输出 false,说明这两个对象在内存中分别有不同的地址,因此工作周报对象复制成功。但是比较附件对象的内存地址时输出 true,说明两个附件对象在内存中是同一个对象。
2、深克隆
在深克隆中无论原型对象的成员变量是值类型还是引用类型,都将复制一份都克隆对象,深克隆将原型对象的所有引用对象也复制一份给克隆对象。也就是说,深克隆除了对像本身被复制外,对象所包含的所有成员变量也将被复制。
c#中,如果要使用深克隆,可以通过序列化(serialization)等方式来实现。序列化就是将对象写到流的过程,写到流中的对象是原有对象的一个复制品,而元对象仍然存在于内存中。
克隆流程:通过序列化将对象写到一个流中,再从流里将其 读出来,就是实现了深克隆。
要实现序列化的对象,其类必须添加 serializable 属性标签,不然无法实现序列化。
修改后代码如下:
代码语言:javascript
复制
/// <summary>
/// 附件类
/// </summary>
[serializable]
public class attachment
{
public string name { get; set; }
public attachment(string name)
{
name = name;
}
public void download()
{
console.writeline("下载文件,文件名为" + name);
}
}
[serializable]
public class weeklylog
{
public string name { get; set; }
public string date { get; set; }
public string content { get; set; }
public list<attachment> attachments { get; set; }
public weeklylog()
{
attachments = new list<attachment>();
}
public object deepclone()
{
memorystream ms = new memorystream(); // 初始化一个内存流
binaryformatter bf = new binaryformatter(); // 以二进制的格式来序列化和反序列化对象
bf.serialize(ms, this); // 将档案对象序列化到内存流中
//设置流的位置,seekorigin.begin表示流的开始,0表示相对于seekorigin.begin的偏移量
ms.seek(0, seekorigin.begin);
return bf.deserialize(ms); // 反序列化,实现深克隆
}
}
客户端代码如下:
代码语言:javascript
复制
class program
{
static void main(string[] args)
{
v3.weeklylog logpre, lognew = null;
logpre = new v3.weeklylog();
logpre.attachments.add(new v3.attachment("第16周工作周报.txt"));
try
{
lognew = logpre.deepclone() as v3.weeklylog;
}
catch (exception ex)
{
console.writeline("克隆失败");
}
console.writeline("周报是否相同:{0}", logpre == lognew);
console.writeline("附件是否相同:{0}", logpre.attachments[0] == lognew.attachments[0]);
}
}
编译并运行,结果如图:
从结果就可以看出,由于使用了深克隆,所以附件对象也复制了,因此使用“==”比较结果均为 false。深克隆技术实现了原型对象和克隆对象的完全独立,无论对克隆对象做任何修改,都不会影响原型对象,是一种更为理想的克隆方式。
浅克隆:只克隆原型对象和原型对象中的值类型成员变量(变双份),引用类型成员变量两个对象共用深克隆:原型对象、原型对象中的值类型成员变量和原型对象中的引用类型成员变量全部复制一份新的
五、原型管理器的引入和实现
1、原型管理器概念
原型管理器(prototype manager)是将多个原型对象存储在一个集合中供客户端使用,它是一个专门负责克隆对象的工厂,其中定义了一个集合用于存储原型对象,如果需要某个原型对象的一个克隆,可以通过复制集合中对应的原型对象来获得。在原型管理器中针对抽象原型类进行编程,以便扩展。
带原型管理器的结构如图:
2、原型管理器的设计和实现
a公司在日常办公中有许多公文需要创建、递交和审批,比如《可行性分析报告》《立项建议书》《软件需求规格说明书》等。为了提高工作效率,在
政务OA系统中为各类公文均创建了模板,用户可以通过这些模板创建新的公文,这些公文模板需要统一进行管理,系统根据用户请求的不同生成不同的新公文。
开发人员使用带原型管理器的原型模式来实现公文管理器的设计,结构如图:
代码如下:
代码语言:javascript
复制
/// <summary>
/// 抽象公文接口,也可以定义为抽象类
/// </summary>
public interface iofficialdocument : icloneable
{
new iofficialdocument clone();//隐藏icloneable的clone方法接口
void display();
}
/// <summary>
/// 可行性分析报告
/// </summary>
public class far : iofficialdocument
{
public iofficialdocument clone()
{
return (iofficialdocument) base.memberwiseclone();
}
public void display()
{
console.writeline("《可行性分析报告》");
}
object icloneable.clone()
{
return this.clone();
}
}
/// <summary>
/// 软件需求规格说明书
/// </summary>
public class srs : iofficialdocument
{
public iofficialdocument clone()
{
return (iofficialdocument) base.memberwiseclone();
}
public void display()
{
console.writeline("《软件需求规格说明书》");
}
object icloneable.clone()
{
return clone();
}
}
/// <summary>
/// 原型管理器(使用饿汉式单例)
/// </summary>
public class prototypemanager
{
private dictionary<string, iofficialdocument> oddic = new dictionary<string, iofficialdocument>();
private static prototypemanager pm = new prototypemanager();
private prototypemanager()
{
oddic.add("far", new far());
oddic.add("srs", new far());
}
public static prototypemanager getprototypemanager() => pm;
/// <summary>
/// 增加新的公文对象
/// </summary>
public void addofficialdocument(string key, iofficialdocument doc)
{
oddic.add(key, doc);
}
/// <summary>
/// 通过浅克隆获取新的公文对象
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public iofficialdocument getofficialdocument(string key)
{
return oddic[key].clone();
}
}
客户端代码如下:
代码语言:javascript
复制
class program
{
static void main(string[] args)
{
var pm = prototypemanager.getprototypemanager();
iofficialdocument doc1, doc2, doc3, doc4;
doc1 = pm.getofficialdocument("far");
doc1.display();
doc2 = pm.getofficialdocument("far");
doc2.display();
console.writeline(doc1 == doc2);
doc3 = pm.getofficialdocument("srs");
doc3.display();
doc4 = pm.getofficialdocument("srs");
doc4.display();
console.writeline(doc3 == doc4);
}
}
编译并运行输出结果:
原型管理器中使用了一个字典来保存原型对象,客户端可以通过 key 来获取原型对象的克隆对象。另外本例中将原型管理器设计为单例类,并通过饿汉式方式实现,确保系统中只有一个原型管理器,有利于节省系统资源,并可以更好的对原型管理器进行控制。
六、原型模式总结
1、主要优点
当创建新的对象实例比较复杂时,使用原型模式可以简化对象的创建过程,通过复制一个已有实例可以提高新实例的创建效率。
扩展性较好。原型模式中提供了抽象原型类,客户端可以针对抽象原型类编程,而将具体原型类写在配置文件中,增加或减少具体原型类对原有系统不会产生任何影响。
原型模式提供了简化的创建结构。原型模式中产品的复制是通过封装在原型类中的克隆方法实现的,无须专门的工厂类来创建产品。
可以使用深克隆的方式保存对象的状态。使用原型模式将对象复制一份并将其状态保存起来,以便在需要的时候使用。
2、主要缺点
需要为每个类提供一个克隆方法,而且该克隆方法位于一个类的内部。当对已有的类进行改造时,需要修改源码,违背了开闭原则。
在实现深克隆时需要编写较为复杂的代码,而且当对象之间存在多重嵌套引用时,为了实现深克隆,需要为每一层对象对应的类提供深克隆方法,实现起来比较麻烦。
3、适用场景
创建新对象的成本比较大时,新对象可以通过原型模式对已有对象进行复制来获得,如果是相似对象,则可以对其成员变量稍作修改。
如果系统需要保存对象的状态
避免使用工厂来创建分层次的对象(多重嵌套),并且类的实例对象只有一个或很少的几个组合状态,通过复制原型对象得到实例会更加方便。
示例代码:
https://github.com/crazyliuxp/designpattern.simples.csharp
参考资料:
“游云南”大数据中心发布《2019云南省“十一”黄金周旅游大数据报告》:“一中心、两平台”的总体设计 在“一中心,两平台”中,游云南大数据中心整合打通了景区、酒店、通讯运营商、公安、交通、气象、等多种旅游相关数据,为政府部门、旅游企业和游客提供大数据应用服务。
,建立省、州市、县三级旅游行业监管和应急指挥平台,构建产业运行分析、旅游安全监管、应急指挥、投诉管理、导游执业管理、景区客流监测等旅游行政管理与市场治理体系。
对云南省与腾讯合力打造的“一部手机游云南”来说,这算是一个省级政府首次很大力度,以新型产品之手强势介入文旅资源的整合、产品开发、市场环境整治等,足以显示一个旅游大省做大做好旅游的决心。
据统计,国庆期间,建水县共接待游客154.63万人次,同比增长65.77%;弥勒市共接待游客87.88万人次,同比增长39.89%。
10月5日,位于昆明市寻甸县凤龙湾特色小镇,3次登上央视,开启了“霸屏”模式。据统计,10月1日至5日,凤龙湾特色小镇日均接待游客人次均破万。 ?
2017年信息消费将达900亿 云计算带动产值超1000亿:近日,东莞市政府印发了《促进信息消费实施方案(2015—2017 年)》(下称《方案》)。《方案》提出,到2017年,全市信息消费总额要达到900亿元,年均增长20%以上。
在物联网应用消费上,东莞将推动智慧城管、智慧医疗、智慧商务、智慧环保、智慧交通等物联网示范应用建设,深入开展石龙、东城、松山湖、虎门港等智慧东莞试点区域建设。
■延伸阅读东莞信息消费空间有多大?1993年,美国政府提出“国家信息基础设施”工程计划,被通俗的称为“信息高速公路”。
在今年1月19日的东莞市政府常务会议上,市长袁宝成表示,信息消费对第三产业尤其是生产性服务业具有重要的引导、带动和提升作用,不是简单的传统的消费概念。
他说,东莞的信息产值位列全国第七,要进一步巩固地位。信息服务带来的变革,将从根本上改变东莞的产业结构,要争取让信息服务产业成为东莞产业转型升级的一个龙头。
冰火两重天,百度痛失大将的第二天腾讯招来了ai专家张潼 | 大数据24小时:尤其是对于刚刚在中国起步的人工智能、大数据等领域而言,具有相关经验的技术人才更是凤毛麟角,成为众多企业抢夺的目标。
此轮融资完成之后,资金将全部用于技术开发、品牌推广以及分支机构建设中。?
此外,该公司的智能机器人买房顾问系统,可以为购房者提供决策辅助,实现针对性的营销服务。
五、深圳市今年年底将建立政府大数据中心日前,在最新一期的《市政府公报》上发布的《深圳市2017年推进“互联网+政务服务”改革工作计划要点》中显示,为加强深圳市政务信息资源的开放共享,政府计划将于今年年底建立政府大数据中心
六、中国电子与北京大学合作,共建大数据国家实验室近日,中国电子与北京大学宣布已经达成了战略合作关系,双方并联合多家高校、企业共同建立了大数据分析与应用技术国家工程实验室。
ps成美国制裁手段:禁运国家停止服务但不退款,用户被迫找盗版:今年7月份,github也以美国政府行政命令为由对伊朗、克里米亚等地的账户断供,而且毫无预警。adobe事件,可以说是这一断供手法再度上演,而且来得更加猛烈。
封禁账号,付费也不退钱对于断供的细节,adobe也在公司官网上给出了详细的文档说明。他们所遵守的美国政府行政命令, 编号13884,于今年8月份颁布。?
至于何时解禁,adobe也给出了说法:第13884号行政命令没有到期日,是否撤销完全由美国政府决定。我们将继续密切监视事态发展,并将在法律允许的范围内尽一切努力恢复委内瑞拉的服务。
而且, 这家公司也正在放弃对基于激活序列号版本软件的支持。这两天,一些升级了mac新操作系统catalina用户发现,他们此前够购买的cs6版本软件,已经无法使用。
与此同时,他也提出了一个问题:我们应该采取什么措施来减轻这些措施对委内瑞拉人的影响?同样,在社交媒体上也有不少人对美国这一制裁政策展开批评,认为这并没有达到自己想要的政治目的,反而残害了更多的老百姓。
转载请注明出处,本站网址:
http://gov.515158.com/news_1733.html