精华内容
下载资源
问答
  • 客户整体情况,河南郑州大四在校学生,目前在企业实习,从事Java开发工作... 客户购买的是“拜师学艺”服务,按月付款。 经过多次语音,有如下实质性进展 : 1. 客户遇到的最大问题是,职业规划问题。对于...
    客户整体情况,河南郑州大四在校学生,目前在企业实习,从事Java开发工作。有一定的项目开发经验,对Java周边技术有基本的理解。

       客户购买的是“拜师学艺”服务,按月付款。

       经过多次语音,有如下实质性进展

    1. 客户遇到的最大问题是,职业规划问题。对于未来做什么,做到什么程度,希望能找到较为明确的答案。
        对于薪水等,希望实现自己的目标。

    2. 客户对Java技术,有经验,但是对于真实的完整的企业项目研发过程,不太懂。
        希望,能够搞懂所在公司的项目。
       
    3. 客户自己想通过研究某个小游戏-FlappyPig,探索自己的兴趣,希望能对这个项目给予“源码级别的指点”。

      客户购买服务的关键事实: 愿意相信,相信小雷FansUnion有能力有恒心提供靠谱的服务,能够帮他达成自己的目标。

    小雷FansUnion-博学的互联网技术工作者
    2014年11月30日

    湖北-武汉-循礼门 

    原文首发:http://fansunion.cn/case

    转载于:https://my.oschina.net/FansUnion/blog/409604

    展开全文
  • 浪潮大同市烟草专卖局客户服务中心系统采用B/S、C/S混合架构,完成市区客户的电话订货实施,每个座席员每天接听电话满负荷在200个以上,处理订单在160-180个之间,访销员的职能也从原来的手持机获取订单,转变到指导...
  • 浪潮烟草客户服务中心系统采用 B/S、 C/S 混合架构运行稳定,使每个座席员每天接听180个电话,处理120-160个订单,把销员的职能从原来的获取订单,转变到指导客户经营、处理客户关系上来,有利于提高访销员的工作...
  • 搜狐客户服务中心系统基于ZingServ呼叫中心平台实现,系统主要由ZingServ平台、数据库服务器、应用服务器、TTS/FAX/实时录音服务器、座席软件、班长席软件、呼叫监控管理软件、实时录音管理软件、统计管理软件、系统...
  • 相信在销售管理的你一定需要一款客户服务系列:顾客满意案例剖析学习参考,而客户服务系列:顾客满意案例...该文档为客户服务系列:顾客满意案例剖析,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载...
  • 福建移动BOSS客服系统存在的问题福建移动BOSS系统的前身是\\\"福建移动通信联机计费及营业业务综合管理系统\\\"(简称 MBSS系统)。其主要设计思路是以计费、结算、营业系统为基础建立省地两级结构,在应用结构上...
  • 上海麦考林国际邮购有限公司成立于1996年1月8日,是由美国麦考林邮购有限公司和上海国际服务贸易公司共同投资兴办的中外合作企业,是目前国内实际投入资金和规模最大的邮购公司。麦考林国际邮购呼叫中心成功实施后...
  • 案例分析 沈佳 什么是分析 对客户全方位的了解 为什么要分析 控制风险 怎样进行分析 收集信息并检验信息 分析的目的 分析的内容 还款能力 财务信息 还款意愿 软信息 口头信息与客户面谈 分析的渠道 数据信息各种合同...
  • 中国移动集团重庆有限公司客户服务中心(以下简称“重庆移动客服中心”)成立于1999年4月,是重庆移动有限公司直属管辖下的一个呼叫中心,拥有960余名员工,主要为重庆市辖40个区市县共1300万移动客户及全国31省移动...
  • 东风载重车公司客户服务中心系统基于ZingServ呼叫中心平台,主要由ZingServ平台、数据库服务器、应用服务器、TTS/FAX、实时录音服务器、座席软件、班长席软件、呼叫监控管理软件、实时录音管理软件、统计管理软件、...
  • avaya交换机客服中心经典案例 能够很好了解客服中心硬件环境拓扑结构、avaya交换机配置方式等。
  • 另外,恶意的DoS(Denial of Service拒绝服务)攻击仍然可以分配完你服务器的所有内存。 TLV编码存在许多不同的形式。实际使用的字节数、自定字段的类型和长度都依赖于每一个TLV编码。TLV编码首先放置字段的长度、...

    《Java NIO文档》非阻塞式服务器

    原文连接 原文作者:Jakob Jenkov 译者:higher

    即使你知道Java NIO 非阻塞的工作特性(如Selector,Channel,Buffer等组件),但是想要设计一个非阻塞的服务器仍然是一件很困难的事。非阻塞式服务器相较于阻塞式来说要多上许多挑战。本文将会讨论非阻塞式服务器的主要几个难题,并针对这些难题给出一些可能的解决方案。

     

    查找关于非阻塞式服务器设计方面的资料实在不太容易,所以本文提供的解决方案都是基于本人工作和想法上的。如果各位有其他的替代方案或者更好的想法,我会很乐意听取这些方案和想法!你可以在文章下方留下你的评论,或者发邮件给我(邮箱为:info@jenkov.com )。

    本文的设计思路想法都是基于Java NIO的。但是我相信如果某些语言中也有像Selector之类的组件的话,文中的想法也能用于该语言。据我所知,类似的组件底层操作系统会提供,所以对你来说也可以根据其中的思想运用在其他语言上。

     

    非阻塞式服务器– GitHub 仓库

    我已经创建了一些简单的这些思想的概念验证呈现在这篇教程中,并且为了让你可以看到,我把源码放到了github资源库上了。这里是GitHub资源库地址:

    https://github.com/jjenkov/java-nio-server

     

    非阻塞式IO管道(Pipelines)

    一个非阻塞式IO管道是由各个处理非阻塞式IO组件组成的链。其中包括读/写IO。下图就是一个简单的非阻塞式IO管道组成:

    non-blocking-server-1

    一个组件使用 Selector 监控 Channel 什么时候有可读数据。然后这个组件读取输入并且根据输入生成相应的输出。最后输出将会再次写入到一个Channel中。

    一个非阻塞式IO管道不需要将读数据和写数据都包含,有一些管道可能只会读数据,另一些可能只会写数据。

    上图仅显示了一个单一的组件。一个非阻塞式IO管道可能拥有超过一个以上的组件去处理输入数据。一个非阻塞式管道的长度是由他的所要完成的任务决定。

    一个非阻塞IO管道可能同时读取多个Channel里的数据。举个例子:从多个SocketChannel管道读取数据。

    其实上图的控制流程还是太简单了。这里是组件从Selector开始从Channel中读取数据,而不是Channel将数据推送给Selector进入组件中,即便上图画的就是这样。

     

    非阻塞式vs. 阻塞式管道

    非阻塞和阻塞IO管道两者之间最大的区别在于他们如何从底层Channel(Socket或者file)读取数据。

    IO管道通常从流中读取数据(来自socket或者file)并且将这些数据拆分为一系列连贯的消息。这和使用tokenizer(这里估计是解析器之类的意思)将数据流解析为token(这里应该是数据包的意思)类似。相反你只是将数据流分解为更大的消息体。我将拆分数据流成消息这一组件称为“消息读取器”(Message Reader)下面是Message Reader拆分流为消息的示意图:

    non-blocking-server-2

    一个阻塞IO管道可以使用类似InputStream的接口每次一个字节地从底层Channel读取数据,并且这个接口阻塞直到有数据可以读取。这就是阻塞式Message Reader的实现过程。

    使用阻塞式IO接口简化了Message Reader的实现。阻塞式Message Reader从不用处理在流没有数据可读的情况,或者它只读取流中的部分数据并且对于消息的恢复也要延迟处理的情况。

    同样,阻塞式Message Writer(一个将数据写入流中组件)也从不用处理只有部分数据被写入和写入消息要延迟恢复的情况。

     

    阻塞式IO管道的缺陷

    虽然阻塞式Message Reader容易实现,但是也有一个不幸的缺点:每一个要分解成消息的流都需要一个独立的线程。必须要这样做的理由是每一个流的IO接口会阻塞,直到它有数据读取。这就意味着一个单独的线程是无法尝试从一个没有数据的流中读取数据转去读另一个流。一旦一个线程尝试从一个流中读取数据,那么这个线程将会阻塞直到有数据可以读取。

    如果IO管道是必须要处理大量并发链接服务器的一部分的话,那么服务器就需要为每一个链接维护一个线程。对于任何时间都只有几百条并发链接的服务器这确实不是什么问题。但是如果服务器拥有百万级别的并发链接量,这种设计方式就没有良好收放。每个线程都会占用栈32bit-64bit的内存。所以一百万个线程占用的内存将会达到1TB!不过在此之前服务器将会把所有的内存用以处理传经来的消息(例如:分配给消息处理期间使用对象的内存)

    为了将线程数量降下来,许多服务器使用了服务器维持线程池(例如:常用线程为100)的设计,从而一次一个地从入站链接(inbound connections)地读取。入站链接保存在一个队列中,线程按照进入队列的顺序处理入站链接。这一设计如下图所示:(译者注:Tomcat就是这样的)

    non-blocking-server-3

    然而,这一设计需要入站链接合理地发送数据。如果入站链接长时间不活跃,那么大量的不活跃链接实际上就造成了线程池中所有线程阻塞。这意味着服务器响应变慢甚至是没有反应。

    一些服务器尝试通过弹性控制线程池的核心线程数量这一设计减轻这一问题。例如,如果线程池线程不足时,线程池可能开启更多的线程处理请求。这一方案意味着需要大量的长时链接才能使服务器不响应。但是记住,对于并发线程数任然是有一个上限的。因此,这一方案仍然无法很好地解决一百万个长时链接。

    基础非阻塞式IO管道设计

    一个非阻塞式IO管道可以使用一个单独的线程向多个流读取数据。这需要流可以被切换到非阻塞模式。在非阻塞模式下,当你读取流信息时可能会返回0个字节或更多字节的信息。如果流中没有数据可读就返回0字节,如果流中有数据可读就返回1+字节。

    为了避免检查没有可读数据的流我们可以使用 Java NIO Selector. 一个或多个SelectableChannel 实例可以同时被一个Selector注册.。当你调用Selectorselect()或者 selectNow() 方法它只会返回有数据读取的SelectableChannel的实例. 下图是该设计的示意图:

    non-blocking-server-4

    读取部分消息

    当我们从一个SelectableChannel读取一个数据包时,我们不知道这个数据包相比于源文件是否有丢失或者重复数据(原文是:When we read a block of data from a SelectableChannel we do not know if that data block contains less or more than a message)。一个数据包可能的情况有:缺失数据(比原有消息的数据少)、与原有一致、比原来的消息的数据更多(例如:是原来的1.5或者2.5倍)。数据包可能出现的情况如下图所示:

    non-blocking-server-5

    在处理类似上面这样部分信息时,有两个问题:

    1. 判断你是否能在数据包中获取完整的消息。
    2. 在其余消息到达之前如何处理已到达的部分消息。

    判断消息的完整性需要消息读取器(Message Reader)在数据包中寻找是否存在至少一个完整消息体的数据。如果一个数据包包含一个或多个完整消息体,这些消息就能够被发送到管道进行处理。寻找完整消息体这一处理可能会重复多次,因此这一操作应该尽可能的快。

    判断消息完整性和存储部分消息都是消息读取器(Message Reader)的责任。为了避免混合来自不同Channel的消息,我们将对每一个Channel使用一个Message Reader。设计如下图所示:

    non-blocking-server-6

    在从Selector得到可从中读取数据的Channel实例之后, 与该Channel相关联的Message Reader读取数据并尝试将他们分解为消息。这样读出的任何完整消息可以被传到读取通道(read pipeline)任何需要处理这些消息的组件中。

    一个Message Reader一定满足特定的协议。Message Reader需要知道它尝试读取的消息的消息格式。如果我们的服务器可以通过协议来复用,那它需要有能够插入Message Reader实现的功能 – 可能通过接收一个Message Reader工厂作为配置参数。

     

    存储部分消息

    现在我们已经确定Message Reader有责任存储部分消息,直到收到完整的消息,我们需要弄清楚这些部分消息的存储应该如何实现。

    有两个设计因素我们要考虑:

    1. 我们想尽可能少地复制消息数据。复制越多,性能越低。
    2. 我们希望将完整的消息存储在连续的字节序列中,使解析消息更容易。

    每个Message Reader的缓冲区

    很显然部分消息需要存储某些缓冲区中。简单的实现方式可以是每一个Message Reader内部简单地有一个缓冲区。但是这个缓冲区应该多大?它要大到足够储存最大允许储存消息。因此,如果最大允许储存消息是1MB,那么Message Reader内部缓冲区将至少需要1MB。

    当我们的链接达到百万数量级,每个链接都使用1MB并没有什么作用。1,000,000 * 1MB仍然是1TB的内存!那如果最大的消息是16MB甚至是128MB呢?

     

    大小可调的缓冲区

    另一个选择是在Message Reader内部实现一个大小可调的缓冲区。大小可调的缓冲区开始的时候很小,如果它获取的消息过大,那缓冲区会扩大。这样每一条链接就不一定需要如1MB的缓冲区。每条链接的缓冲区只要需要足够储存下一条消息的内存就行了。

    有几个可实现可调大小缓冲区的方法。它们都各自有自己的优缺点,所以接下来的部分我将逐个讨论。

     

    通过复制调整大小

    实现可调大小缓冲区的第一种方式是从一个大小(例如:4KB)的缓冲区开始。如果4KB的缓冲区装不下一个消息,则会分配一个更大的缓冲区(如:8KB),并将大小为4KB的缓冲区数据复制到这个更大的缓冲区中去。

    通过复制实现大小可调缓冲区的优点在于消息的所有数据被保存在一个连续的字节数组中,这就使得消息的解析更加容易。它的缺点就是在复制更大消息的时候会导致大量的数据。

    为了减少消息的复制,你可以分析流进你系统的消息的大小,并找出尽量减少复制量的缓冲区的大小。例如,你可能看到大多数消息都小于4KB,这是因为它们都仅包含很小的 request/responses。这意味着缓冲区的初始值应该设为4KB。

    然后你可能有一个消息大于4KB,这通常是因为它里面包含一个文件。你可能注意到大多数流进系统的文件都是小于128KB的。这样第二个缓冲区的大小设置为128KB就较为合理。

    最后你可能会发现一旦消息超过128KB之后,消息的大小就没有什么固定的模式,因此缓冲区最终的大小可能就是最大消息的大小。

    根据流经系统的消息大小,上面三种缓冲区大小可以减少数据的复制。小于4KB的消息将不会复制。对于一百万个并发链接其结果是:1,000,000 * 4KB = 4GB,对于目前大多数服务器还是有可能的。介于4KB – 128KB的消息将只会复制一次,并且只有4KB的数据复制进128KB的缓冲区中。介于128KB至最大消息大小的消息将会复制两次。第一次复制4KB,第二次复制128KB,所以最大的消息总共复制了132KB。假设没有那么多超过128KB大小的消息那还是可以接受的。

    一旦消息处理完毕,那么分配的内存将会被清空。这样在同一链接接收到的下一条消息将会再次从最小缓冲区大小开始算。这样做的必要性是确保了不同连接间内存的有效共享。所有的连接很有可能在同一时间并不需要打的缓冲区。

    我有一篇介绍如何实现这样支持可调整大小的数组的内存缓冲区的完整文章:

    Resizable Arrays(http://tutorials.jenkov.com/java-performance/resizable-array.html)

    文章包含一个GitHub仓库连接,其中的代码演示了是如何实现的。

     

    通过追加调整大小

    调整缓冲区大小的另一种方法是使缓冲区由多个数组组成。当你需要调整缓冲区大小时,你只需要另一个字节数组并将数据写进去就行了。

    这里有两种方法扩张一个缓冲区。一个方法是分配单独的字节数组,并将这些数组保存在一个列表中。另一个方法是分配较大的共享字节数组的片段,然后保留分配给缓冲区的片段的列表。就个人而言,我觉得片段的方式会好些,但是差别不大。

    通过追加单独的数组或片段来扩展缓冲区的优点在于写入过程中不需要复制数据。所有的数据可以直接从socket (Channel)复制到一个数组或片段中。

    以这种方式扩展缓冲区的缺点是在于数据不是存储在单独且连续的数组中。这将使得消息的解析更困难,因为解析器需要同时查找每个单独数组的结尾处和所有数组的结尾处。由于你需要在写入的数据中查找消息的结尾,所以该模型并不容易使用。

     

    TLV编码消息

    一些协议消息格式是使用TLV格式(类型(Type)、长度(Length)、值(Value))编码。这意味着当消息到达时,消息的总长度被存储在消息的开头。这一方式你可以立即知道应该对整个消息分配多大的内存。

    TLV编码使得内存管理变得更加容易。你可以立即知道要分配多大的内存给这个消息。只有部分在结束时使用的缓冲区才会使得内存浪费。

    TLV编码的一个缺点是你要在消息的所有数据到达之前就分配好这个消息需要的所有内存。一些慢连接可能因此分配完你所有可用内存,从而使得你的服务器无法响应。

    此问题的解决方法是使用包含多个TLV字段的消息格式。因此,服务器是为每个字段分配内存而不是为整个消息分配内存,并且是字段到达之后再分配内存。然而,一个大消息中的一个大字段在你的内存管理有同样的影响。

    另外一个方案就是对于还未到达的信息设置超时时间,例如10-15秒。当恰好有许多大消息到达服务器时,这个方案能够使得你的服务器可以恢复,但是仍然会造成服务器一段时间无法响应。另外,恶意的DoS(Denial of Service拒绝服务)攻击仍然可以分配完你服务器的所有内存。

    TLV编码存在许多不同的形式。实际使用的字节数、自定字段的类型和长度都依赖于每一个TLV编码。TLV编码首先放置字段的长度、然后是类型、然后是值(一个LTV编码)。 虽然字段的顺序不同,但它仍然是TLV的一种。

    TLV编码使内存管理更容易这一事实,其实是HTTP 1.1是如此可怕的协议的原因之一。 这是他们试图在HTTP 2.0中修复数据的问题之一,数据在LTV编码帧中传输。 这也是为什么我们使用TLV编码的VStack.co project 设计了我们自己的网络协议。

     

    写部分数据

    在非阻塞IO管道中写数据仍然是一个挑战。当你调用一个处于非阻塞式Channel对象的write(ByteBuffer)方法时,ByteBuffer写入多少数据是无法保证的。write(ByteBuffer)方法会返回写入的字节数,因此可以跟踪写入的字节数。这就是挑战:跟踪部分写入的消息,以便最终可以发送一条消息的所有字节。

    为了管理部分消息写入Channel,我们将创建一个消息写入器(Message Writer)。就像Message Reader一样,每一个要写入消息的Channel我们都需要一个Message Writer。在每个Message Writer中,我们跟踪正在写入的消息的字节数。

    如果达到的消息量超过Message Writer可直接写入Channel的消息量,消息就需要在Message Writer排队。然后Message Writer尽快地将消息写入到Channel中。

    下图是部分消息如何写入的设计图:

     

    non-blocking-server-8

     

    为了使Message Writer能够尽快发送数据,Message Writer需要能够不时被调用,这样就能发送更多的消息。

    如果你又大量的连接那你将需要大量的Message Writer实例。检查Message Writer实例(如:一百万个)看写任何数据时是否缓慢。 首先,许多Message Writer实例都没有任何消息要发送,我们并不想检查那些Message Writer实例。其次,并不是所有的Channel实例都可以准备好写入数据。 我们不想浪费时间尝试将数据写入无法接受任何数据的Channel。

    为了检查Channel是否准备好进行写入,您可以使用Selector注册Channel。然而我们并不想将所有的Channel实例注册到Selector中去。想象一下,如果你有1,000,000个连接且其中大多是空闲的,并且所有的连接已经与Selector注册。然后当你调用select()时,这些Channel实例的大部分将被写入就绪(它们大都是空闲的,记得吗?)然后你必须检查所有这些连接的Message Writer,以查看他们是否有任何数据要写入。

    为了避免检查所有消息的Message Writer实例和所有不可能被写入任何信息的Channel实例,我们使用这两步的方法:

    1. 当一个消息被写入Message Writer,Message Writer向Selector注册其相关Channel(如果尚未注册)。
    2. 当你的服务器有时间时,它检查Selector以查看哪些注册的Channel实例已准备好进行写入。 对于每个写就绪Channel,请求其关联的Message Writer将数据写入Channel。 如果Message Writer将其所有消息写入其Channel,则Channel将再次从Selector注册。

    这两个小步骤确保了有消息写入的Channel实际上已经被Selector注册了。

     

    汇总

    正如你所见,一个非阻塞式服务器需要时不时检查输入的消息来判断是否有任何的新的完整的消息发送过来。服务器可能会在一个或多个完整消息发来之前就检查了多次。检查一次是不够的。

    同样,一个非阻塞式服务器需要时不时检查是否有任何数据需要写入。如果有,服务器需要检查是否有任何相应的连接准备好将该数据写入它们。只有在第一次排队消息时才检查是不够的,因为消息可能被部分写入。

    所有这些非阻塞服务器最终都需要定期执行的三个“管道”(pipelines)::

    • 读取管道(The read pipeline),用于检查是否有新数据从开放连接进来的。
    • 处理管道(The process pipeline),用于所有任何完整消息。
    • 写入管道(The write pipeline),用于检查是否可以将任何传出的消息写入任何打开的连接。

    这三条管道在循环中重复执行。你可能可以稍微优化执行。例如,如果没有排队的消息可以跳过写入管道。 或者,如果我们没有收到新的,完整的消息,也许您可以跳过流程管道。

    以下是说明完整服务器循环的图:

    non-blocking-server-9

    如果仍然发现这有点复杂,请记住查看GitHub资料库:https://github.com/jjenkov/java-nio-server

    也许看到正在执行的代码可能会帮助你了解如何实现这一点。

     

    服务器线程模型

    GitHub资源库里面的非阻塞式服务器实现使用了两个线程的线程模式。第一个线程用来接收来自ServerSocketChannel的传入连接。第二个线程处理接受的连接,意思是读取消息,处理消息并将响应写回连接。这两个线程模型的图解如下:

    non-blocking-server-10

     

    转载于:https://www.cnblogs.com/lulu638/p/6689611.html

    展开全文
  • 华为云昇腾云服务器简介、华为云昇腾云服务器开发环境介绍、华为云昇腾云服务器业务开发流程、华为云昇腾云服务器解决方案、华为云昇腾云服务器客户案例
  • 中国移动集团重庆有限公司客户服务中心(以下简称“重庆移动客服中心”)成立于1999年4月,是重庆移动有限公司直属管辖下的一个呼叫中心,拥有960余名员工,主要为重庆市辖40个区市县共1300万移动客户及全国31省移动...
  • 通过专属服务群第一时间与业务方联系,与业务方确认是否有正在执行的定时任务,或者大范围拉取账单等业务操作。然而仔细分析了业务日志后,确认当时业务上并没有进行会消耗大量计算资源和网络资源的操作。 二、...

    一、问题背景

    某日袋鼠云运维小哥进行例行运维巡检,通过监控视图发现客户应用服务器cpu使用率突然呈上升趋势。通过专属服务群第一时间与业务方联系,与业务方确认是否有正在执行的定时任务,或者大范围拉取账单等业务操作。然而仔细分析了业务日志后,确认当时业务上并没有进行会消耗大量计算资源和网络资源的操作。

     

    二、异常现象

    随着时间推移,运维人员收到不同应用系统主机系统资源占用过高的告警通知,但客户反馈业务上并没有受到明显影响,且处于业务低峰期。

    进一步分析排查,发现异常实例cpu使用率,负载,网络流量,磁盘IO,TCP连接数都先后出现上升趋势,现象如下图:

    CPU使用率:持续10分钟维持在90%

    系统平均负载:平均1分钟负载超过25

    网络流量:持续10分钟高于日常水平

    磁盘IO:每秒写入的字节数迅速上升

    TCP 连接数:established连接数持续10分钟上升

     

    三、异常分析

    1) 在排除业务上并没有相关的异常操作后,运维人员进一步分析了系统是否有受到外部攻击。通过阿里云云盾安全产品,确认基线检查及流量检测并无异常,业务入口SLB流入流出流量也呈正常趋势,可以排除受到外部攻击的可能。

    2) 运维人员登录机器继续排查,连接服务器间接出现请求被拒绝的情况,提示connection reset by peer错误信息。

    成功登入机器后发现有大量ssh登入链接。

    大量的sshd进程引起cpu占用过高。

     

    四、异常处理

    经过上述分析,与业务方确认ssh 连接客户端是否为内部系统IP地址,最终定位异常实例被内网其他机器恶意破解,进行非法访问入侵。运维人员第一时间对异常实例进行恢复操作,包括关闭已建立的连接,清除可疑执行程序,修改sshd服务默认端口,重置服务器登录密码,调整安全组访问策略,检查服务器是否有其它后门等一些列安全加固操作后,主机性能恢复正常。

     

    五、案例总结

    从服务器安全防护的角度出发,应将业务部署在云上隔离的网络环境,并修改默认远程服务监听端口,按需开放安全组访问限制。如果业务部署早期未做相关规划,建议尽快迁移经典网络下的服务器到专有网络环境,同时需要定期对服务器进行体检及安全检查,以确保服务器安全。


    本文首发于:数栈研习社

    数栈是云原生—站式数据中台PaaS,我们在github上有一个有趣的开源项目:FlinkX。FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,比如MySQL,HDFS等,也可以采集实时变化的数据,比如MySQL binlog,Kafka等,是全域、异构、批流一体的数据同步引擎,大家如果有兴趣,欢迎来github社区找我们玩~

    展开全文
  • 酒店管理一直遵循着为客户服务的准则,相信你也需要了解一下酒店服务管理案例教程,赶快来下载酒店服务管...该文档为酒店服务管理案例教程,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
  • 最近,慕名而来一个客户。 客户的目标 网站来一个用户,选择模版,上传图片等素材,生成自定义的图片,或者静态网站,然后分享到社交网站。有点类似于,网上制作名片,选择模版,输入个人信息,生成名片的设计图。...
    最近,慕名而来一个客户。

        客户的目标
        网站来一个用户,选择模版,上传图片等素材,生成自定义的图片,或者静态网站,然后分享到社交网站。有点类似于,网上制作名片,选择模版,输入个人信息,生成名片的设计图。可以下载名片设计图,或者直接让别人打印名片,寄给自己。
         客户做这个产品的目的,是自己用,还是卖给别人,我是不用关心的。我需要做的,就是帮助客户实现他的目标。

       客户的背景
       计算机专业毕业,有iOS UI设计经验,了解Object-C和Java,对于JavaScript等Web前端技术有大概的了解。毕业后从事的工作可能比较多,比较杂。以前开发项目都是参与一部分功能,现在要自己去负责实现一个独立的项目。
       对于这个项目的整体实现,还需要有丰富经验的人指导。

       解决方案
    1.访问目标类似网站,研究别人是大致怎么做的。
       比如通过Chrome控制台,看看别人用到了哪些JS库、CSS库,怎么实现的动画效果。
    2.简要学习HTML和CSS,重点学习JavaScript和JQuery。
       看看jquery等JS库提供了哪些API,比如动画效果。
       看看Bootstrap的中文网站,了解下更多的前端技术。
    3.利用三种主要Web前端技术,做一个简单的静态Demo网站。
    4.用Java新建一个应用程序(不是Web项目),动态生成目标HTML文件。
    5.新建Java Web项目,生成目标HTML,响应请求。
    6.根据用户上传的图片素材,动态生成包含用户素材的HTML。
    7.后端制作多项模版,供用户选择。
    8.增加社交分享功能。
       使用百度分享或者QQ空间等社交网站提供的原生API,实现分享功能。
    9.分享之后的链接响应。
      分享中,绑定用户id等信息,根据标志信息,选择特定的html响应请求。
        
      服务价格
      第1个月,N元,第2个月开始,N/2元。

      服务方式
      每周,文字答疑,抽空QQ语音。 

    ------------------------------------------------------------------------------------
      小雷FansUnion-博学的互联网技术工作者,全栈式多屏开发工程师
      2015年1月19日
      湖北-武汉-循礼门 
    展开全文
  • 德迅(中国)货运代理有限公司(简称:德迅(中国))研发的货运代理客户服务平台,可有效帮助物流公司的财务人员线上完成数据获取、模板管理、对账、提交等财务结算工作。通过嵌入 SpreadJS,该平台还提供了高度...
  • CS系统示例 数据流程图是图的层次结构,包括: 上下文图(概念上为零级) 1级DFD 以及可能的2级DFD和进一步的功能分解,具体取决于系统的复杂性 上下文DFD 下图显示了为铁路公司的客户服务系统绘制的上下文数据流程...
  • 本文是 IBM 最近国际六家客户成功应用 SOA 案例。由于 IBM 公司的 WebSphere 应用服务器平台支持虚拟化技术,Luxottica 能够全面了解服务器的整体资源消耗情况,进而制定升级和资源配置计划。面向服务的架构(SOA
  • Equinix客户成功案例

    2020-03-03 19:29:32
    领先金融服务公司通过部署Equinix Permance Hub将延迟降低35%并提升应用程序性能。
  • PCB行业客户案例

    千次阅读 2016-09-05 13:33:16
    常州澳弘电子有限公司是一家极富活力、反应迅捷的专业印制线路板(PCB)生产服务企业,公司由“常州海弘电子有限公司”和“常州澳弘电子有限公司”组成。 随着家电产品日益向数字化方向的发展,市场对高端多层精密...
  • 解决方案: 在业务规模大、复杂程度高场景下,镭速传输通过部署镭速加速迁移服务,应用智能分布式传输方案,提升了数倍的传输速度,优化了网络带宽的使用。镭速数据迁移系统集群多机器并行传输,最大传输速率可达到...
  • 客户整体情况: 合肥薪火科技,是安徽合肥一家主营微信开发和... 客户某个客户是做P2P网络借贷的,之前他们帮助客户做了移动端的,比如微信运营。现在,客户让他们帮忙升级PC端的Java实现的网站。 经过1个多小时的语
  • php-csms:客户服务管理系统IBEDC(公用事业公司)的回购案例研究

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,584
精华内容 1,033
关键字:

服务客户案例