
暂无个人介绍
.1. 何谓Galera Cluster何谓Galera Cluster?就是集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera Cluster有两个版本,分别是Percona Xtradb Cluster及MariaDB Cluster,都是基于Galera的,所以这里都统称为Galera Cluster了,因为Galera本身是具有多主特性的,所以Galera Cluster也就是multi-master的集群架构,如图1所示: 图1 Galera Cluster架构 图1中有三个实例,组成了一个集群,而这三个节点与普通的主从架构不同,它们都可以作为主节点,三个节点是对等的,这种一般称为multi-master架构,当有客户端要写入或者读取数据时,随便连接哪个实例都是一样的,读到的数据是相同的,写入某一个节点之后,集群自己会将新数据同步到其它节点上面,这种架构不共享任何数据,是一种高冗余架构。 一般的使用方法是,在这个集群上面,再搭建一个中间层,这个中间层的功能包括建立连接、管理连接池,负责使三个实例的负载基本平衡,负责在客户端与实例的连接断开之后重连,也可以负责读写分离(在机器性能不同的情况下可以做这样的优化)等等,使用这个中间层之后,由于这三个实例的架构在客户端方面是透明的,客户端只需要指定这个集群的数据源地址,连接到中间层即可,中间层会负责客户端与服务器实例连接的传递工作,由于这个架构支持多点写入,所以完全避免了主从复制经常出现的数据不一致的问题,从而可以做到主从读写切换的高度优雅,在不影响用户的情况下,离线维护等工作,MySQL的高可用,从此开始,非常完美。 2.为什么需要Galera ClusterMySQL在互联网时代,可谓是深受世人瞩目的。给社会创造了无限价值,随之而来的是,在MySQL基础之上,产生了形形色色的使用方法、架构及周边产品。本文所关注的是架构,在这方面,已经有很多成熟的被人熟知的产品,比如MHA、MMM等传统组织架构,而这些架构是每个需要数据库高可用服务方案的入门必备选型。 不幸的是,传统架构的使用,一直被人们所诟病,因为MySQL的主从模式,天生的不能完全保证数据一致,很多大公司会花很大人力物力去解决这个问题,而效果却一般,可以说,只能是通过牺牲性能,来获得数据一致性,但也只是在降低数据不一致性的可能性而已。所以现在就急需一种新型架构,从根本上解决这样的问题,天生的摆脱掉主从复制模式这样的“美中不足”之处了。 幸运的是,MySQL的福音来了,Galera Cluster就是我们需要的——从此变得完美的架构。 相比传统的主从复制架构,Galera Cluster解决的最核心问题是,在三个实例(节点)之间,它们的关系是对等的,multi-master架构的,在多节点同时写入的时候,能够保证整个集群数据的一致性,完整性与正确性。 在传统MySQL的使用过程中,也不难实现一种multi-master架构,但是一般需要上层应用来配合,比如先要约定每个表必须要有自增列,并且如果是2个节点的情况下,一个节点只能写偶数的值,而另一个节点只能写奇数的值,同时2个节点之间互相做复制,因为2个节点写入的东西不同,所以复制不会冲突,在这种约定之下,可以基本实现多master的架构,也可以保证数据的完整性与一致性。但这种方式使用起来还是有限制,同时还会出现复制延迟,并且不具有扩展性,不是真正意义上的集群。 3.Galera Cluster如何解决问题3.1 Galera的引入现在已经知道,Galera Cluster是MySQL封装了具有高一致性,支持多点写入的同步通信模块Galera而做的,它是建立在MySQL同步基础之上的,使用Galera Cluster时,应用程序可以直接读、写某个节点的最新数据,并且可以在不影响应用程序读写的情况下,下线某个节点,因为支持多点写入,使得Failover变得非常简单。 所有的Galera Cluster,都是对Galera所提供的接口API做了封装,这些API为上层提供了丰富的状态信息及回调函数,通过这些回调函数,做到了真正的多主集群,多点写入及同步复制,这些API被称作是Write-Set Replication API,简称为wsrep API。 通过这些API,Galera Cluster提供了基于验证的复制,是一种乐观的同步复制机制,一个将要被复制的事务(称为写集),不仅包括被修改的数据库行,还包括了这个事务产生的所有Binlog,每一个节点在复制事务时,都会拿这些写集与正在APPLY队列的写集做比对,如果没有冲突的话,这个事务就可以继续提交,或者是APPLY,这个时候,这个事务就被认为是提交了,然后在数据库层面,还需要继续做事务上的提交操作。 这种方式的复制,也被称为是虚拟同步复制,实际上是一种逻辑上的同步,因为每个节点的写入和提交操作还是独立的,更准确的说是异步的,Galera Cluster是建立在一种乐观复制的基础上的,假设集群中的每个节点都是同步的,那么加上在写入时,都会做验证,那么理论上是不会出现不一致的,当然也不能这么乐观,如果出现不一致了,比如主库(相对)插入成功,而从库则出现主键冲突,那说明此时数据库已经不一致,这种时候Galera Cluster采取的方式是将出现不一致数据的节点踢出集群,其实是自己shutdown了。 而通过使用Galera,它在里面通过判断键值的冲突方式实现了真正意义上的multi-master,Galera Cluster在MySQL生态中,在高可用方面实现了非常重要的提升,目前Galera Cluster具备的功能包括如下几个方面: 多主架构:真正的多点读写的集群,在任何时候读写数据,都是最新的。同步复制:集群不同节点之间数据同步,没有延迟,在数据库挂掉之后,数据不会丢失。并发复制:从节点在APPLY数据时,支持并行执行,有更好的性能表现。故障切换:在出现数据库故障时,因为支持多点写入,切的非常容易。热插拔:在服务期间,如果数据库挂了,只要监控程序发现的够快,不可服务时间就会非常少。在节点故障期间,节点本身对集群的影响非常小。自动节点克隆:在新增节点,或者停机维护时,增量数据或者基础数据不需要人工手动备份提供,Galera Cluster会自动拉取在线节点数据,最终集群会变为一致。对应用透明:集群的维护,对应用程序是透明的,几乎感觉不到。 以上几点,足以说明Galera Cluster是一个既稳健,又在数据一致性、完整性及高性能方面有出色表现的高可用解决方案。不过在运维过程中,有些技术特点还是需要注意的,这样才能做到知此知彼,百战百胜,因为现在MySQL主从结构的集群已经都是被大家所熟知的了,而Galera Cluster是一个新的技术,是一个在不断成熟的技术,所以很多想了解这个技术的同学,能够得到的资料很少,除了官方的手册之外,基本没有一些讲得深入的,用来传道授业解惑的运维资料,这无疑为很多同学设置了不低的门槛,最终有很多人因为一些特性,导致最终放弃了Galera Cluster的选择。 目前熟知的一些特性,或者在运维中需要注意的一些特性,有以下几个方面: Galera Cluster写集内容:Galera Cluster复制的方式,还是基于Binlog的,这个问题,也是一直被人纠结的,因为目前Percona Xtradb Cluster所实现的版本中,在将Binlog关掉之后,还是可以使用的,这误导了很多人,其实关掉之后,只是不落地了,表象上看上去是没有使用Binlog了,实际上在内部还是悄悄的打开了的。除此之外,写集中还包括了事务影响的所有行的主键,所有主键组成了写集的KEY,而Binlog组成了写集的DATA,这样一个KEY-DATA就是写集。KEY和DATA分别具有不同的作用的,KEY是用来验证的,验证与其它事务没有冲突,而DATA是用来在验证通过之后,做APPLY的。Galera Cluster的并发控制:现在都已经知道,Galera Cluster可以实现集群中,数据的高度一致性,并且在每个节点上,生成的Binlog顺序都是一样的,这与Galera内部,实现的并发控制机制是分不开的。所有的上层到下层的同步、复制、执行、提交都是通过并发控制机制来管理的。这样才能保证上层的逻辑性,下层数据的完整性等。图2 galera原理图 图2是从官方手册中截取的,从图中可以大概看出,从事务执行开始,到本地执行,再到写集发送,再到写集验证,再到写集提交的整个过程,以及从节点(相对)收到写集之后,所做的写集验证、写集APPLY及写集提交操作,通过对比这个图,可以很好的理解每一个阶段的意义及性能等,下面就每一个阶段以及其并发控制行为做一个简单的介绍: 本地执行:这个阶段,是事务执行的最初阶段,可以说,这个阶段的执行过程,与单点MySQL执行没什么区别,并发控制当然就是数据库的并发控制了,而不是Galera Cluster的并发控制了。 写集发送:在执行完之后,就到了提交阶段,提交之前首先将产生的写集广播出去,而为了保证全局数据的一致性,在写集发送时,需要串行,这个就属于Galera Cluster并发控制的一部分了。 写集验证:这个阶段,就是我们通常说的Galera Cluster的验证了,验证是将当前的事务,与本地写集验证缓存集来做验证,通过比对写集中被影响的数据库KEYS,来发现有没有相同的,来确定是不是可以验证通过,那么这个过程,也是串行的。 写集提交:这个阶段,是一个事务执行时的最后一个阶段了,验证完成之后,就可以进入提交阶段了,因为些时已经执行完了的,而提交操作的并发控制,是可以通过参数来控制其行为的,即参数repl.commit_order,如果设置为3,表示提交就是串行的了,而这也是本人所推荐的(默认值)的一种设置,因为这样的结果是,集群中不同节点产生的Binlog是完全一样的,运维中带来了不少好处和方便。其它值的解释,以后有机会再做讲解。 写集APPLY:这个阶段,与上面的几个在流程上不太一样,这个阶段是从节点做的事情,从节点只包括两个阶段,即写集验证和写集APPLY,写集APPLY的并发控制,是与参数wsrep_slave_threads有关系的,本身在验证之后,确定了相互的依赖关系之后,如果确定没有关系的,就可以并行了,而并行度,就是参数wsrep_slave_threads的事情了。wsrep_slave_threads可以参照参数wsrep_cert_deps_distance来设置。 3.2 流量控制 在PXC中,有一个参数叫fc_limit,它的全名其实是叫flow control limit,顾名思义,是流量控制大小限制的意思,它的作用是什么呢? 如果一套集群中,某个节点,或者某几个节点的硬件资源比较差,或者由于节点压力大,导致复制效率低下,等等各种原因,导致的结果是,从节点APPLY时,非常慢,也就是说,主库在一秒钟之内做的操作,从库有可能会用2秒才能完成,那么这种情况下,就会导致从节点执行任务的堆积,接收队列的堆积。 假设从节点真的堆积了,那么Galera会让它一直堆积下去么?这样延迟会越来越严重,这样Galera Cluster就变成一个主从架构的集群了,已经失去了强一致状态的属性了,那么很明显,Galera是不会让这种事情发生的,那么此时,就说回到开头提到的参数了,gcs.fc_limit,这个参数是在MySQL参数wsrep_provider_options中来配置的,这个参数是Galera的一个参数集合,有关于Flow Control的,还包括gcs.fc_factor,这两个参数的意义是,当从节点堆积的事务数量超过gcs.fc_limit的值时,从节点就发起一个Flow Control,而当从节点堆积的事务数小于gcs.fc_limit * gcs.fc_factor时,发起Flow Control的从节点再发起一个解除的消息,让整个集群再恢复。 但我们一般所关心的,就是如何解决,下面有几个一般所采用的方法: 发送FC消息的节点,硬件有可能出现问题了,比如IO写不进去,很慢,CPU异常高等发送FC消息的节点,本身数据库压力太高,比如当前节点承载太多的读,导致机器Load高,IO压力大等等。发送FC消息的节点,硬件压力都没有太大问题,但做得比较慢,一般原因是主库并发高,但从节点的并发跟不上主库,那么此时可能需要观察这两个节点的并发度大小,可以参考状态参数wsrep_cert_deps_distance的值,来调整从节点的wsrep_slave_threads,此时应该是可以解决或者缓解的,这个问题可以这样去理解,假设集群每个节点的硬件资源都是相当的,那么主库可以执行完,从库为什么做不过来?那么一般思路就是像处理主从复制的延迟问题一样。检查存不存在没有主键的表,因为Galera的复制是行模式的,所以如果存在这样的表时,主节点是通过语句来修改的,比如一个更新语句,更新了全表,而从节点收到之后,就会针对每一行的Binlog做一次全表扫描,这样导致这个事务在从节点执行,比在主节点执行慢十倍,或者百倍,从而导致从节点堆积进而产生FC。可以看出,其实这些方法,都是用来解决主从复制延迟的方法,没什么两样,在了解Flow Control的情况下,解决它并不是难事儿。 3.3 有很多坑? 有很多同学,在使用过Galera Cluster之后,发现很多问题,最大的比如DDL的执行,大事务等,从而导致服务的不友好,这也是导致很多人放弃的原因。 DDL执行卡死传说:使用过的同学可能知道,在Galera Cluster中执行一个大的改表操作,会导致整个集群在一段时间内,是完全写入不了任何事务的,都卡死在那里,这个情况确实很严重,导致线上完全不可服务了,原因还是并发控制,因为提交操作设置为串行的,DDL执行是一个提交的过程,那么串行执行改表,当然执行多久,就卡多久,直到改表执行完,其它事务也就可以继续操作了,这个问题现在没办法解决,但我们长期使用下来发现,小表可以这样直接操作,大一点或者更大的,都是通过osc(pt-online-schema-change)来做,这样就很好的避免了这个问题。挡我者死:由于Galera Cluster在执行DDL时,是Total Ordered Isolation(wsrep_OSU_method=TOI)的,所以必须要保证每个节点都是同时执行的,当然对于不是DDL的,也是Total Order的,因为每一个事务都具有同一个GTID值,DDL也不例外,而DDL涉及到的是表锁,MDL锁(Meta Data Lock),只要在执行过程中,遇到了MDL锁的冲突,所有情况下,都是DDL优先,将所有的使用到这个对象的事务,统统杀死,不管是读事务,还是写事务,被杀的事务都会报出死锁的异常,所以这也是一个Galera Cluster中,关于DDL的闻名遐迩的坑。不过这个现在确实没有办法解决,也没办法避免,不过这个的影响还算可以接受,先可以忍忍。不死之身:继上面的“挡我者死”,如果集群真的被一个DDL卡死了,导致整个集群都动不了了,所有的写请求都Hang住了,那么可能会有人想一个妙招,说赶紧杀死,直接在每个节点上面输入kill connection_id,等等类似的操作,那么此时,很不愿意看到的信息报了出来:You are not owner of thread connection_id。此时可能有些同学要哭了,不过这种情况下,确实没有什么好的解决方法(其实这个时候,一个故障已经发生了,一年的KPI也许已经没有了,就看敢不敢下狠手了),要不就等DDL执行完成(所有这个数据库上面的业务都处于不可服务状态),要不就将数据库直接Kill掉,快速重启,赶紧恢复一个节点提交线上服务,然后再考虑集群其它节点的数据增量的同步等,这个坑非常大,也是在Galera Cluster中,最大的一个坑,需要非常小心,避免出现这样的问题。 . 4. 适用场景现在对Galera Cluster已经有了足够了解,但这样的“完美”架构,在什么场景下才可以使用呢?或者说,哪种场景又不适合使用这样的架构呢?针对它的缺点,及优点,我们可以扬其长,避其短。可以通过下面几个方面,来了解其适用场景。 数据强一致性:因为Galera Cluster,可以保证数据强一致性的,所以它更适合应用于对数据一致性和完整性要求特别高的场景,比如交易,正是因为这个特性,我们去哪儿网才会成为使用Galera Cluster的第一大户。多点写入:这里要强调多点写入的意思,不是要支持以多点写入的方式提供服务,更重要的是,因为有了多点写入,才会使得在DBA正常维护数据库集群的时候,才会不影响到业务,做到真正的无感知,因为只要是主从复制,就不能出现多点写入,从而导致了在切换时,必然要将老节点的连接断掉,然后齐刷刷的切到新节点,这是没办法避免的,而支持了多点写入,在切换时刻允许有短暂的多点写入,从而不会影响老的连接,只需要将新连接都路由到新节点即可。这个特性,对于交易型的业务而言,也是非常渴求的。性能:Galera Cluster,能支持到强一致性,毫无疑问,也是以牺牲性能为代价,争取了数据一致性,但要问:”性能牺牲了,会不会导致性能太差,这样的架构根本不能满足需求呢?”这里只想说的是,这是一个权衡过程,有多少业务,QPS大到Galera Cluster不能满足的?我想是不多的(当然也是有的,可以自行做一些测试),在追求非常高的极致性能情况下,也许单个的Galera Cluster集群是不能满足需求的,但毕竟是少数了,所以够用就好,Galera Cluster必然是MySQL方案中的佼佼者。 .5. 总结综上所述,Galera Cluster是一个完全可依赖的,MySQL数据一致性的绝杀利器,使用中完全不需要担心数据延迟,数据不一致的问题,DBA从此就从繁复的数据修复、解决复制延迟、维护时担心影响业务的问题中彻底解脱了。可以说Galera Cluster是DBA及业务系统的福音,也是MySQL发展的大趋势,我希望它会越来越好,也希望也有越来越多的人使用它,共同维护这个美好的大环境。 原文来自微信公众号:Qunar技术沙龙
定义:工业大数据即工业数据的总和,分成三类,即企业信息化数据、工业物联网数据,以及外部跨界数据。空间分布:不仅存在于企业内部,还存在于产业链和跨产业链的经营主体中,如SCM、CRM。产生主体:人和机器。人产生的数据如:设计数据、业务数据、产品数据。机器数据有生产设备(生产调度、质量控制与绩效数据)和工业产品(智能服务) 从数据流动的视角来看,数字化解决了“有数据”的问题,网络化解决了“能流动”的问题,智能化要解决数据“自动流动”的问题,即能够把正确的数据在正确的时间以正确的方式传递给正确的人和机器,能够把海量的工业数据转化为信息,信息转化为知识,知识转化为科学决策,以应对和解决制造过程的复杂性和不确定性等问题。 1、本质特征:具有复杂动态系统特性。确定性是工业系统本身有效运行的基础。应对不确定性的前提是感知信息、消除不确定性。2、4V特征:大规模(Volumn)、速度快(Velocity)、类型杂(Variety)、低质量(Veracity)所谓“大规模”,就是指数据规模大,而且面临着大规模增长。所谓“速度快”,不仅是采集速度快,而且要求处理速度快。所谓“类型杂”,就是复杂性,主要是指各种类型的碎片化、多维度工程数据,包括设计制造阶段的概念设计、详细设计、制造工艺、包装运输等各类业务数据,以及服务保障阶段的运行状态、维修计划、服务评价等类型数据。所谓“低质量”,就是真实性(Veracity),相对于分析结果的高可靠性要求,工业大数据的真实性和质量比较低。 3、工业大数据新特征归纳为多模态、强关联、高通量等。“多模态”:工业大数据是工业系统在赛博空间的映像,必须反映工业系统的系统化特征,必须要反映工业系统的各方面要素。数据记录必须追求完整。“强关联”:工业数据之间的关联并不是数据字段的关联,其本质是物理对象之间和过程的语义关联。1)产品部件之间的关联。2)生产过程的数据关联。3)产品生命周期不同环节的数据之间的关联。4)不同学科不同专业的数据关联。“高通量”:嵌入了传感器的智能互联产品已成为工业互联网时代的重要标志。物联网数据已成为工业大数据的主体。 4、应用特征归纳为跨尺度、协同性、多因素、因果性、强机理等几个方面。(“跨尺度”、“协同性”主要体现在大数据支撑工业企业的在线业务活动、推进业务智能化的过程中)“跨尺度”:工业4.0 强调的横向、纵向、端到端集成,就是把不同空间、时间尺度的信息集成到一起。为此,需要综合利用云计算、物联网、边缘计算等技术。“协同性”:工业系统强调系统的动态协同,工业大数据就要支持这个业务需求。我们进行信息集成的目的,是促成信息和数据的自动流动,加强信息感知能力、减少了决策者所面临的不确定性,进而提升决策的科学性。“多因素”是工业对象的特性(复杂的动态系统)所决定的。“因果性”源于工业系统对确定性的高度追求。为了把数据分析结果用于指导和优化工业过程,其本身就要高度的可靠性。“强机理”是获得高可靠分析结果的保证。分析结果的可靠性体现在因果和可重复性,需要排除来自各方面的干扰。在数据维度较高的前提下,人们往往没有足够的数据用于甄别现象的真假。这时,领域中的机理知识实质上就起到了数据降维的作用,分析的结果必须能够被领域的机理所解释。 注:文章内容是学习《中国工业大数据技术与应用白皮书》过程中提炼。
SQL与NoSQL的区别1、NoSQL的数据结构比较简单,数据库的SQL语句强大,支持更为复杂的计算2、NoSQL的数据主要存储在内存中(部分可以持久化到磁盘),而数据库主要是磁盘3、NoSQL的数据完整性、事务能力、安全性、可靠性及可扩展性远不及数据库4、NoSQL基于内存存储,停电或者机器故障容易造成数据丢失,持久化能力有限,而数据库基于磁盘,不存在这个问题 SQL数据库: · 使用表存储相关的数据 · 在使用表之前需要先定义标的模式 · 鼓励使用规范化来减少数据的冗余 · 支持使用JOIN操作,使用一条SQL语句从多张表中取出相关的数据 · 需要满足数据完整性约束规则 · 使用事务来保证数据的一致性 · 能够大规模的使用 · 使用强大的SQL语言进行查询操作 · 提供大量的支持,专业技能和辅助工具 NoSQL数据库: · 使用类JSON格式的文档来存储键值对信息 · 存储数据不需要特定的模式 · 使用非规范化的标准存储信息,以保证一个文档中包含一个条目的所有信息 · 不需要使用JOIN操作 · 允许数据不用通过验证就可以存储到任意的位置 · 保证更新的单个文档,而不是多个文档 · 提供卓越的性能和可扩展性 · 使用JSON数据对象进行查询 · 是一种新型的技术 SQL数据库适合那些需求确定和对数据完整性要去严格的项目。NoSQL数据库适用于那些对速度和可扩展性比较看重的那些不相关的,不确定和不断发展的需求。简单来说就是:· SQL是精确的。它最适合于具有精确标准的定义明确的项目。典型的使用场景是在线商店和银行系统。· NoSQL是多变的。它最适合于具有不确定需求的数据。典型的使用场景是社交网络,客户管理和网络分析系统。很少有项目能够很好的适用于一种数据库。如果你对数据的需求比较小或是非标准化的数据任何一种数据库都是可以的。你比我更了解你的项目,我不建议你将SQL上的数据移植到NoSQL上反之亦然,除非它能够提供非常可观的收益。当然选择权在于你自己。在项目的一开始就要考虑好使用它们的利弊,这样才不会导致选择错误。 本文出自 “北林” 博客,请务必保留此出处:http://www.cnblogs.com/beilin/p/6007080.html
大家在学习计算机的时候,对于最常用的几个端口比如80端口肯定有很深的印象,但是对于其他一些不是那么常用的端口可能就没那么了解。所以,在一些使用频率相对较高的端口上,很容易会引发一些由于陌生而出现的错误,或者被黑客利用某些端口进行入侵。对于这件事情,大部分人都很头疼——最多可达65535个的端口,让人怎么记? 别怕,这次专门给大家整理了一些比较常见端口信息,遇到问题,一查就好! 注意:一个计算机最多有65535个端口,端口不能重复。常用端口号: IIS(HTTP):80 SQLServer:1433 Oracle:1521 MySQL:3306 FTP:21 SSH:22 Tomcat:8080 常用和不常用端口一览表 端口:0 服务:Reserved 说明:通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端口,当你试图使用通常的闭合端口连接它时将产生不同的结果。一种典型的扫描,使用IP地址为0.0.0.0,设置ACK位并在以太网层广播。 端口:1 服务:tcpmux 说明:这显示有人在寻找SGI Irix机器。Irix是实现tcpmux的主要提供者,默认情况下tcpmux在这种系统中被打开。Irix机器在发布是含有几个默认的无密码的帐户,如:IP、GUEST UUCP、NUUCP、DEMOS 、TUTOR、DIAG、OUTOFBOX等。许多管理员在安装后忘记删除这些帐户。因此HACKER在INTERNET上搜索tcpmux并利用这些帐户。 端口:7 服务:Echo 说明:能看到许多人搜索Fraggle放大器时,发送到X.X.X.0和X.X.X.255的信息。 端口:19 服务:Character Generator 说明:这是一种仅仅发送字符的服务。UDP版本将会在收到UDP包后回应含有垃圾字符的包。TCP连接时会发送含有垃圾字符的数据流直到连接关闭。HACKER利用IP欺骗可以发动DoS攻击。伪造两个chargen服务器之间的UDP包。同样Fraggle DoS攻击向目标地址的这个端口广播一个带有伪造受害者IP的数据包,受害者为了回应这些数据而过载。 端口:21 服务:FTP 说明:FTP服务器所开放的端口,用于上传、下载。最常见的攻击者用于寻找打开anonymous的FTP服务器的方法。这些服务器带有可读写的目录。木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所开放的端口。 端口:22 服务:Ssh 说明:PcAnywhere建立的TCP和这一端口的连接可能是为了寻找ssh。这一服务有许多弱点,如果配置成特定的模式,许多使用RSAREF库的版本就会有不少的漏洞存在。 端口:23 服务:Telnet 说明:远程登录,入侵者在搜索远程登录UNIX的服务。大多数情况下扫描这一端口是为了找到机器运行的操作系统。还有使用其他技术,入侵者也会找到密码。木马Tiny Telnet Server就开放这个端口。 端口:25 服务:SMTP 说明:SMTP服务器所开放的端口,用于发送邮件。入侵者寻找SMTP服务器是为了传递他们的SPAM。入侵者的帐户被关闭,他们需要连接到高带宽的E-MAIL服务器上,将简单的信息传递到不同的地址。木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口。 端口:31 服务:MSG Authentication 说明:木马Master Paradise、Hackers Paradise开放此端口。 端口:42 服务:WINS Replication 说明:WINS复制 端口:53 服务:Domain Name Server(DNS) 说明:DNS服务器所开放的端口,入侵者可能是试图进行区域传递(TCP),欺骗DNS(UDP)或隐藏其他的通信。因此防火墙常常过滤或记录此端口。 端口:67 服务:Bootstrap Protocol Server 说明:通过DSL和Cable modem的防火墙常会看见大量发送到广播地址255.255.255.255的数据。这些机器在向DHCP服务器请求一个地址。HACKER常进入它们,分配一个地址把自己作为局部路由器而发起大量中间人(man-in-middle)攻击。客户端向68端口广播请求配置,服务器向67端口广播回应请求。这种回应使用广播是因为客户端还不知道可以发送的IP地址。 DHCP (UDP ports 67 and 68) 端口:69 服务:Trival File Transfer 说明:许多服务器与bootp一起提供这项服务,便于从系统下载启动代码。但是它们常常由于错误配置而使入侵者能从系统中窃取任何文件。它们也可用于系统写入文件。 端口:79 服务:Finger Server 说明:入侵者用于获得用户信息,查询操作系统,探测已知的缓冲区溢出错误,回应从自己机器到其他机器Finger扫描。 端口:80 服务:HTTP 说明:用于网页浏览。木马Executor开放此端口。 端口:99 服务:Metagram Relay 说明:后门程序ncx99开放此端口。 端口:102 服务:Message transfer agent(MTA)-X.400 over TCP/IP 说明:消息传输代理。 端口:109 服务:Post Office Protocol -Version3 说明:POP3服务器开放此端口,用于接收邮件,客户端访问服务器端的邮件服务。POP3服务有许多公认的弱点。关于用户名和密码交换缓冲区溢出的弱点至少有20个,这意味着入侵者可以在真正登陆前进入系统。成功登陆后还有其他缓冲区溢出错误。 端口:110 服务:SUN公司的RPC服务所有端口 说明:常见RPC服务有rpc.mountd、NFS、rpc.statd、rpc.csmd、rpc.ttybd、amd等 端口:113 服务:Authentication Service 说明:这是一个许多计算机上运行的协议,用于鉴别TCP连接的用户。使用标准的这种服务可以获得许多计算机的信息。但是它可作为许多服务的记录器,尤其是FTP、POP、IMAP、SMTP和IRC等服务。通常如果有许多客户通过防火墙访问这些服务,将会看到许多这个端口的连接请求。记住,如果阻断这个端口客户端会感觉到在防火墙另一边与E-MAIL服务器的缓慢连接。许多防火墙支持TCP连接的阻断过程中发回RST。这将会停止缓慢的连接。 端口:119 服务:Network News Transfer Protocol 说明:NEWS新闻组传输协议,承载USENET通信。这个端口的连接通常是人们在寻找USENET服务器。多数ISP限制,只有他们的客户才能访问他们的新闻组服务器。打开新闻组服务器将允许发/读任何人的帖子,访问被限制的新闻组服务器,匿名发帖或发送SPAM。 端口:135 服务:Location Service 说明:Microsoft在这个端口运行DCE RPC end-point mapper为它的DCOM服务。这与UNIX 111端口的功能很相似。使用DCOM和RPC的服务利用计算机上的end-point mapper注册它们的位置。远端客户连接到计算机时,它们查找end-point mapper找到服务的位置。HACKER扫描计算机的这个端口是为了找到这个计算机上运行Exchange Server吗?什么版本?还有些DOS攻击直接针对这个端口。 端口:137、138、139 服务:NETBIOS Name Service 说明:其中137、138是UDP端口,当通过网上邻居传输文件时用这个端口。而139端口通过这个端口进入的连接试图获得NetBIOS/SMB服务。这个协议被用于windows文件和打印机共享和SAMBA。还有WINS Regisrtation也用它。 端口:143 服务:Interim Mail Access Protocol v2 说明:和POP3的安全问题一样,许多IMAP服务器存在有缓冲区溢出漏洞。记住:一种Linux蠕虫(admv0rm)会通过这个端口繁殖,因此许多这个端口的扫描来自不知情的已经被感染的用户。当REDHAT在他们的LINUX发布版本中默认允许IMAP后,这些漏洞变的很流行。这一端口还被用于IMAP2,但并不流行。 端口:161 服务:SNMP 说明:SNMP允许远程管理设备。所有配置和运行信息的储存在数据库中,通过SNMP可获得这些信息。许多管理员的错误配置将被暴露在Internet。Cackers将试图使用默认的密码public、private访问系统。他们可能会试验所有可能的组合。SNMP包可能会被错误的指向用户的网络。 端口:177 服务:X Display Manager Control Protocol 说明:许多入侵者通过它访问X-windows操作台,它同时需要打开6000端口。 端口:389 服务:LDAP、ILS 说明:轻型目录访问协议和NetMeeting Internet Locator Server共用这一端口。 端口:443 服务:Https 说明:网页浏览端口,能提供加密和通过安全端口传输的另一种HTTP。 端口:456 服务:[NULL] 说明:木马HACKERS PARADISE开放此端口。 端口:513 服务:Login,remote login 说明:是从使用cable modem或DSL登陆到子网中的UNIX计算机发出的广播。这些人为入侵者进入他们的系统提供了信息。 端口:544 服务:[NULL] 说明:kerberos kshell 端口:548 服务:Macintosh,File Services(AFP/IP) 说明:Macintosh,文件服务。 端口:553 服务:CORBA IIOP (UDP) 说明:使用cable modem、DSL或VLAN将会看到这个端口的广播。CORBA是一种面向对象的RPC系统。入侵者可以利用这些信息进入系统。 端口:555 服务:DSF 说明:木马PhAse1.0、Stealth Spy、IniKiller开放此端口。 端口:568 服务:Membership DPA 说明:成员资格 DPA。 端口:569 服务:Membership MSN 说明:成员资格 MSN。 端口:635 服务:mountd 说明:Linux的mountd Bug。这是扫描的一个流行BUG。大多数对这个端口的扫描是基于UDP的,但是基于TCP的mountd有所增加(mountd同时运行于两个端口)。记住mountd可运行于任何端口(到底是哪个端口,需要在端口111做portmap查询),只是Linux默认端口是635,就像NFS通常运行于2049端口。 端口:636 服务:LDAP 说明:SSL(Secure Sockets layer) 端口:666 服务:Doom Id Software 说明:木马Attack FTP、Satanz Backdoor开放此端口 端口:993 服务:IMAP 说明:SSL(Secure Sockets layer) 端口:1001、1011 服务:[NULL] 说明:木马Silencer、WebEx开放1001端口。木马Doly Trojan开放1011端口。 端口:1024 服务:Reserved 说明:它是动态端口的开始,许多程序并不在乎用哪个端口连接网络,它们请求系统为它们分配下一个闲置端口。基于这一点分配从端口1024开始。这就是说第一个向系统发出请求的会分配到1024端口。你可以重启机器,打开Telnet,再打开一个窗口运行natstat -a 将会看到Telnet被分配1024端口。还有SQL session也用此端口和5000端口。 端口:1025、1033 服务:1025:network blackjack 1033:[NULL] 说明:木马netspy开放这2个端口。 端口:1080 服务:SOCKS 说明:这一协议以通道方式穿过防火墙,允许防火墙后面的人通过一个IP地址访问INTERNET。理论上它应该只允许内部的通信向外到达INTERNET。但是由于错误的配置,它会允许位于防火墙外部的攻击穿过防火墙。WinGate常会发生这种错误,在加入IRC聊天室时常会看到这种情况。 端口:1170 服务:[NULL] 说明:木马Streaming Audio Trojan、Psyber Stream Server、Voice开放此端口。 端口:1234、1243、6711、6776 服务:[NULL] 说明:木马SubSeven2.0、Ultors Trojan开放1234、6776端口。木马SubSeven1.0/1.9开放1243、6711、6776端口。 端口:1245 服务:[NULL] 说明:木马Vodoo开放此端口。 端口:1433 服务:SQL 说明:Microsoft的SQL服务开放的端口。 端口:1492 服务:stone-design-1 说明:木马FTP99CMP开放此端口。 端口:1500 服务:RPC client fixed port session queries 说明:RPC客户固定端口会话查询 端口:1503 服务:NetMeeting T.120 说明:NetMeeting T.120 端口:1524 服务:ingress 说明:许多攻击脚本将安装一个后门SHELL于这个端口,尤其是针对SUN系统中Sendmail和RPC服务漏洞的脚本。如果刚安装了防火墙就看到在这个端口上的连接企图,很可能是上述原因。可以试试Telnet到用户的计算机上的这个端口,看看它是否会给你一个SHELL。连接到600/pcserver也存在这个问题。 端口:1600 服务:issd 说明:木马Shivka-Burka开放此端口。 端口:1720 服务:NetMeeting 说明:NetMeeting H.233 call Setup。 端口:1731 服务:NetMeeting Audio Call Control 说明:NetMeeting音频调用控制。 端口:1807 服务:[NULL] 说明:木马SpySender开放此端口。 端口:1981 服务:[NULL] 说明:木马ShockRave开放此端口。 端口:1999 服务:cisco identification port 说明:木马BackDoor开放此端口。 端口:2000 服务:[NULL] 说明:木马GirlFriend 1.3、Millenium 1.0开放此端口。 端口:2001 服务:[NULL] 说明:木马Millenium 1.0、Trojan Cow开放此端口。 端口:2023 服务:xinuexpansion 4 说明:木马Pass Ripper开放此端口。 端口:2049 服务:NFS 说明:NFS程序常运行于这个端口。通常需要访问Portmapper查询这个服务运行于哪个端口。 端口:2115 服务:[NULL] 说明:木马Bugs开放此端口。 端口:2140、3150 服务:[NULL] 说明:木马Deep Throat 1.0/3.0开放此端口。 端口:2500 服务:RPC client using a fixed port session replication 说明:应用固定端口会话复制的RPC客户 端口:2583 服务:[NULL] 说明:木马Wincrash 2.0开放此端口。 端口:2801 服务:[NULL] 说明:木马Phineas Phucker开放此端口。 端口:3024、4092 服务:[NULL] 说明:木马WinCrash开放此端口。 端口:3128 服务:squid 说明:这是squid HTTP代理服务器的默认端口。攻击者扫描这个端口是为了搜寻一个代理服务器而匿名访问Internet。也会看到搜索其他代理服务器的端口8000、8001、8080、8888。扫描这个端口的另一个原因是用户正在进入聊天室。其他用户也会检验这个端口以确定用户的机器是否支持代理。 端口:3129 服务:[NULL] 说明:木马Master Paradise开放此端口。 端口:3150 服务:[NULL] 说明:木马The Invasor开放此端口。 端口:3210、4321 服务:[NULL] 说明:木马SchoolBus开放此端口 端口:3333 服务:dec-notes 说明:木马Prosiak开放此端口 端口:3389 服务:超级终端 说明:WINDOWS 2000终端开放此端口。 端口:3700 服务:[NULL] 说明:木马Portal of Doom开放此端口 端口:3996、4060 服务:[NULL] 说明:木马RemoteAnything开放此端口 端口:4000 服务:QQ客户端 说明:腾讯QQ客户端开放此端口。 端口:4092 服务:[NULL] 说明:木马WinCrash开放此端口。 端口:4590 服务:[NULL] 说明:木马ICQTrojan开放此端口。 端口:5000、5001、5321、50505 服务:[NULL] 说明:木马blazer5开放5000端口。木马Sockets de Troie开放5000、5001、5321、50505端口。 端口:5400、5401、5402 服务:[NULL] 说明:木马Blade Runner开放此端口。 端口:5550 服务:[NULL] 说明:木马xtcp开放此端口。 端口:5569 服务:[NULL] 说明:木马Robo-Hack开放此端口。 端口:5632 服务:pcAnywere 说明:有时会看到很多这个端口的扫描,这依赖于用户所在的位置。当用户打开pcAnywere时,它会自动扫描局域网C类网以寻找可能的代理(这里的代理是指agent而不是proxy)。入侵者也会寻找开放这种服务的计算机。,所以应该查看这种扫描的源地址。一些搜寻pcAnywere的扫描包常含端口22的UDP数据包。 端口:5742 服务:[NULL] 说明:木马WinCrash1.03开放此端口。 端口:6267 服务:[NULL] 说明:木马广外女生开放此端口。 端口:6400 服务:[NULL] 说明:木马The tHing开放此端口。 端口:6670、6671 服务:[NULL] 说明:木马Deep Throat开放6670端口。而Deep Throat 3.0开放6671端口。 端口:6883 服务:[NULL] 说明:木马DeltaSource开放此端口。 端口:6969 服务:[NULL] 说明:木马Gatecrasher、Priority开放此端口。 端口:6970 服务:RealAudio 说明:RealAudio客户将从服务器的6970-7170的UDP端口接收音频数据流。这是由TCP-7070端口外向控制连接设置的。 端口:7000 服务:[NULL] 说明:木马Remote Grab开放此端口。 端口:7300、7301、7306、7307、7308 服务:[NULL] 说明:木马NetMonitor开放此端口。另外NetSpy1.0也开放7306端口。 端口:7323 服务:[NULL] 说明:Sygate服务器端。 端口:7626 服务:[NULL] 说明:木马Giscier开放此端口。 端口:7789 服务:[NULL] 说明:木马ICKiller开放此端口。 端口:8000 服务:OICQ 说明:腾讯QQ服务器端开放此端口。 端口:8010 服务:Wingate 说明:Wingate代理开放此端口。 端口:8080 服务:代理端口 说明:WWW代理开放此端口。 端口:9400、9401、9402 服务:[NULL] 说明:木马Incommand 1.0开放此端口。 端口:9872、9873、9874、9875、10067、10167 服务:[NULL] 说明:木马Portal of Doom开放此端口。 端口:9989 服务:[NULL] 说明:木马iNi-Killer开放此端口。 端口:11000 服务:[NULL] 说明:木马SennaSpy开放此端口。 端口:11223 服务:[NULL] 说明:木马Progenic trojan开放此端口。 端口:12076、61466 服务:[NULL] 说明:木马Telecommando开放此端口。 端口:12223 服务:[NULL] 说明:木马Hack’99 KeyLogger开放此端口。 端口:12345、12346 服务:[NULL] 说明:木马NetBus1.60/1.70、GabanBus开放此端口。 端口:12361 服务:[NULL] 说明:木马Whack-a-mole开放此端口。 端口:13223 服务:PowWow 说明:PowWow是Tribal Voice的聊天程序。它允许用户在此端口打开私人聊天的连接。这一程序对于建立连接非常具有攻击性。它会驻扎在这个TCP端口等回应。造成类似心跳间隔的连接请求。如果一个拨号用户从另一个聊天者手中继承了IP地址就会发生好象有很多不同的人在测试这个端口的情况。这一协议使用OPNG作为其连接请求的前4个字节。 端口:16969 服务:[NULL] 说明:木马Priority开放此端口。 端口:17027 服务:Conducent 说明:这是一个外向连接。这是由于公司内部有人安装了带有Conducent”adbot”的共享软件。Conducent”adbot”是为共享软件显示广告服务的。使用这种服务的一种流行的软件是Pkware。 端口:19191 服务:[NULL] 说明:木马蓝色火焰开放此端口。 端口:20000、20001 服务:[NULL] 说明:木马Millennium开放此端口。 端口:20034 服务:[NULL] 说明:木马NetBus Pro开放此端口。 端口:21554 服务:[NULL] 说明:木马GirlFriend开放此端口。 端口:22222 服务:[NULL] 说明:木马Prosiak开放此端口。 端口:23456 服务:[NULL] 说明:木马Evil FTP、Ugly FTP开放此端口。 端口:26274、47262 服务:[NULL] 说明:木马Delta开放此端口。 端口:27374 服务:[NULL] 说明:木马Subseven 2.1开放此端口。 端口:30100 服务:[NULL] 说明:木马NetSphere开放此端口。 端口:30303 服务:[NULL] 说明:木马Socket23开放此端口。 端口:30999 服务:[NULL] 说明:木马Kuang开放此端口。 端口:31337、31338 服务:[NULL] 说明:木马BO(Back Orifice)开放此端口。另外木马DeepBO也开放31338端口。 端口:31339 服务:[NULL] 说明:木马NetSpy DK开放此端口。 端口:31666 服务:[NULL] 说明:木马BOWhack开放此端口。 端口:33333 服务:[NULL] 说明:木马Prosiak开放此端口。 端口:34324 服务:[NULL] 说明:木马Tiny Telnet Server、BigGluck、TN开放此端口。 端口:40412 服务:[NULL] 说明:木马The Spy开放此端口。 端口:40421、40422、40423、40426、 服务:[NULL] 说明:木马Masters Paradise开放此端口。 端口:43210、54321 服务:[NULL] 说明:木马SchoolBus 1.0/2.0开放此端口。 端口:44445 服务:[NULL] 说明:木马Happypig开放此端口。 端口:50766 服务:[NULL] 说明:木马Fore开放此端口。 端口:53001 服务:[NULL] 说明:木马Remote Windows Shutdown开放此端口。 端口:65000 服务:[NULL] 说明:木马Devil 1.03开放此端口。 端口:88 说明:Kerberos krb5。另外TCP的88端口也是这个用途。 端口:137 说明:SQL Named Pipes encryption over other protocols name lookup(其他协议名称查找上的SQL命名管道加密技术)和SQL RPC encryption over other protocols name lookup(其他协议名称查找上的SQL RPC加密技术)和Wins NetBT name service(WINS NetBT名称服务)和Wins Proxy都用这个端口。 端口:161 说明:Simple Network Management Protocol(SMTP)(简单网络管理协议)。 端口:162 说明:SNMP Trap(SNMP陷阱) 端口:445 说明:Common Internet File System(CIFS)(公共Internet文件系统) 端口:464 说明:Kerberos kpasswd(v5)。另外TCP的464端口也是这个用途。 端口:500 说明:Internet Key Exchange(IKE)(Internet密钥交换) 端口:1645、1812 说明:Remot Authentication Dial-In User Service(RADIUS)authentication(Routing and Remote Access)(远程认证拨号用户服务) 端口:1646、1813 说明:RADIUS accounting(Routing and Remote Access)(RADIUS记帐(路由和远程访问)) 端口:1701 说明:Layer Two Tunneling Protocol(L2TP)(第2层隧道协议) 端口:1801、3527 说明:Microsoft Message Queue Server(Microsoft消息队列服务器)。还有TCP的135、1801、2101、2103、2105也是同样的用途。 端口:2504 说明:Network Load Balancing(网络平衡负荷) 网络层—数据包的包格式里面有个很重要的字段叫做协议号。比如在传输层如果是TCP连接,那么在网络层IP包里面的协议号就将会有个值是6,如果是UDP的话那个值就是17—传输层。 传输层—通过接口关联(端口的字段叫做端口)—应用层。 用netstat –an 可以查看本机开放的端口号。 代理服务器常用端口 (1). HTTP协议代理服务器常用端口号:80/8080/3128/8081/9080 (2). SOCKS代理协议服务器常用端口号:1080 (3). FTP(文件传输)协议代理服务器常用端口号:21 (4). Telnet(远程登录)协议代理服务器常用端口:23 HTTP服务器,默认的端口号为80/tcp(木马Executor开放此端口); HTTPS(securely transferring web pages)服务器,默认的端口号为443/tcp 443/udp; Telnet(不安全的文本传送),默认端口号为23/tcp(木马Tiny Telnet Server所开放的端口); FTP,默认的端口号为21/tcp(木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所开放的端口); TFTP(Trivial File Transfer Protocol ),默认的端口号为69/udp; SSH(安全登录)、SCP(文件传输)、端口重定向,默认的端口号为22/tcp; SMTP Simple Mail Transfer Protocol (E-mail),默认的端口号为25/tcp(木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口); POP3 Post Office Protocol (E-mail) ,默认的端口号为110/tcp; WebLogic,默认的端口号为7001; Webshpere应用程序,默认的端口号为9080; webshpere管理工具,默认的端口号为9090; JBOSS,默认的端口号为8080; TOMCAT,默认的端口号为8080; WIN2003远程登陆,默认的端口号为3389; Symantec AV/Filter for MSE ,默认端口号为 8081; Oracle 数据库,默认的端口号为1521; ORACLE EMCTL,默认的端口号为1158; Oracle XDB( XML 数据库),默认的端口号为8080; Oracle XDB FTP服务,默认的端口号为2100; MS SQL*SERVER数据库server,默认的端口号为1433/tcp 1433/udp; MS SQL*SERVER数据库monitor,默认的端口号为1434/tcp 1434/udp; QQ,默认的端口号为1080/udp TcpMux0 1 Tcp端口服务多路复用器 Echo 1 7 回送(echo回送所有的接收数据) Discard2 9 删除(静态删除所有接受的数据) Systat3 11 当前用户 Daytime 13 白天 Quotd 17 每天的引用 Chargen 19 产生字符 Ftp-data 20 文件传送(默认数据) Ftp 21 文件传送(控制端口) Telnet 23 远程通信网 Smtp 25 简单邮件传输协议 Time 37 时间 Nicname 43 谁 Domain 53 域名服务器 Bootps 67 引导程序协议服务器 Bootpc 68 引导程序协议客户 Tftp 69 普通文件传输协议 Gopher 70 Gopher Finger 79 拨号 WWW-http 80 WWW-Http Kerberos 88 Kerberos Pop2 109 邮政协议版本2 Pop3 110 邮政协议版本3 Sunrpc 111 Sun运端程序呼叫 nntp 119 网络新闻传输协议 Ntp 123 网络时间协议 Netbios-ns 137 网络基本输入输出系统命名服务 Netbios-ns 138 网络基本输入输出系统数据报服务 Netbios-ssn 139 网络基本输入输出系统期间服务 Imap2 143 中间邮件访问协议V2 Snmp 161 简单网络管理协议 Bgp 179 边界网关协议 Syslog 514 系统登陆器 本文出自 “马哥Linux培训” 博客,请务必保留此出处http://mageedu.blog.51cto.com/4265610/1921073
操作系统级的可以设置环境变量中的path; 开发平台IDE中,有指定JDK目录,设置一下。
有阿里云个人账号时,可到 https://mail.aliyun.com/ 中注册。 帮助请看 https://mailhelp.aliyun.com/freemail/List.htm?catId=8311317
1.安装mysql,学习数据库知识,学习mysql的最基础的知识。 2.适度编写SQL语句,从 SQL 概念开始,在 MySQL 数据库中学习并实践 SQL 常用语法及约束、索引、视图、SELECT 查询、修改与删除等基本操作。这样可以将学到的数据库理论知识理解的更加透彻。 3.适当买些书看看。
大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理。换言之,如果把大数据比作一种产业,那么这种产业实现盈利的关键,在于提高对数据的“加工能力”,通过“加工”实现数据的“增值”。
即关键在大数据挖掘,意义就是利用潜在的规则和规律预测到人类预测不到的、未来一定会发生的事情。
云栖社区是面向开发者的开放型技术平台。源自阿里云,服务于云计算技术全生态。包含博客、问答、培训、设计研发、资源下载等产品。
使用泛型的理由有三:
1、编译时的强类型检查
2、消除显示的类型强制转换
3、更好的代码复用性,比如实现泛型算法
Java中的泛型仅仅是一个编译时的概念,在运行时,所有的泛型信息都被消除了,这被称为泛型擦除。
依赖注入的类是这样的:
class Obj : IObj{
private IPropObj mPropObj=null;
//注入--设置值注入方式
publc void SetPropObj(IPropObj propObj){
mPropObj=propObj;
}
}
工厂模式的类是这样的:
class Obj : IObj{
private IPropObj mPropObj=null;
//构造函数
public Obj(){
mPropObj=Factory.CreatObj<IPropObj>();
}
}
依赖注入的框架创建对象时(创建Obj时),会自动找到类的注入法SetPropObj(或者类构造函数中接口定义参数--构造注入法),创建对应的对象(IPropObj的实现类),这样你的程序中任何地方都找不到创建IPropObj的地方,只会在框架的配置文件中找到IPropObj是用哪个实现类--你想改用另一个实现类,就要在配置文件中修改。
工厂模式下,那个Factory是工厂框架的对象,如果你要改换IPropObj的实现类,那个就应该改工厂的配置文件中IPropObj的定义,或者框架指定的定义地方(你在那里可以看到IPropObj是怎样创建的)。
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
如果你的xshell是设置隧道关联xmanager,能展示图形桌面的话,说明ECS设置没问题,可在ECS管理控制台的管理终端下按Ctrl+Alt+F1,进入图形界面。
视图只是简化查询代码, 特别是对于复杂关联查询时,能够大大简化应用程序的代码,与性能关系不大。
索引视图可以提高性能, 但会增加数据变更的开销, 因此数据变更涉及索引视图中的索引时, 会产生维护索引的开销。
看提示:
响应: 150 Opening data channel for directory listing of "/"
响应: 425 Can't open data connection for transfer of "/"
这个问题主要是由于使用Passive Mode模式造成的,解决这个问题:
1、进入FileZilla Server-->Edit-->Settings,找到右边的Passive mode settings,启用被动模式,并且设置端口,把端口添加到安全组里。
2、检查服务器文件目录的访问权限是否足够,适当给目录增加权限。
前后端分离的意思是让负责写展示代码的人和写业务逻辑代码的人能够尽量少的交流。尽量确定尽量少的接口,两部分人的开发可以相互独立,不需要其中一个写完才能写另一个,可以独立测试。
1.首先要知道所有的程序都是一数据为基础的,没有数据的程序没有实际意义,程序的本质就是对程序的增删改查。
2.前后端分离就是把数据操作和显示分离出来。前端专注做数据显示,通过文字,图片或者图标等方式让数据形象直观的显示出来。后端专注做数据的操作。前端把数据发给后端,有后端对数据进行修改。
线程是进程内部的控制序列,是进程的一个实体,是进程的一条执行路径。线程也就是一个轻量级进程,每个线程都有自己的线程控制块,即一个进程至少有一个轻量级进程。
针对企业级应用,可以选用ECS+OSS+CDN组合,可参考帮助流程进行配置选型,https://help.aliyun.com/document_detail/58291.html
在 Java 7 中,ArrayList 的默认大小是 10 个元素,HashMap 的默认大小是16个元素(必须是2的幂)。
源码如下:
/**
private static final int DEFAULT_CAPACITY = 10;
//from HashMap.java JDK 7
static final int DEFAULT_INITIAL_CAPACITY = 1<< 4;// aka 16
Spring Cloud Netflix Hystrix 熔断器,容错管理工具。
阿里研发的Sentinel 的设计则更为简单,相比 Hystrix 强依赖隔离规则,Sentinel 的资源定义与规则配置的耦合度更低。
spring的追求一定是大道至简,让java的开发变得更加简单、容易。spring boot就是朝着这一追求更近了一步,一个在spring基础上的一整套实现。
spring boot最最核心和强大的地方是它的AutoConfiguration和ParentPom。
为用户显示标题中含有被搜索关键词的全部文章。整个搜索的过程如下:
1、用户在搜素框中输入搜索关键词,假设为 “django”,然后用户点击了搜索按钮提交其输入的结果到服务器
2、服务器接收到用户输入的搜索关键词 “django” 后去数据库查找文章标题中含有该关键词的全部文章
3、服务器将查询结果返回给用户
均衡负载能够平均分配客户请求到服务器列阵,基于此提供快速获取重要数据,解决大量并发访问服务问题。负载均衡主要分为两种:
一种是通过硬件来进行进行,常见的硬件有比较昂贵的NetScaler、F5、Radware和Array等商用的负载均衡器。
另一种负载均衡的方式是通过软件:比较常见的有LVS、Nginx、HAproxy等。
微服务是一种架构设计模式。在微服务架构中,业务逻辑被拆分成一系列小而松散耦合的分布式组件,共同构成了较大的应用。每个组件都被称为微服务,而每个微服务都在整体架构中执行着单独的任务,或负责单独的功能。
服务导向式架构(SOA)是集成多个较大组件(一般是应用)的一种机制,它们将整体构成一个彼此协作的套件。一般来说,每个组件会从始至终执行一块完整的业务逻辑,通常包括完成整体大action所需的各种具体任务与功能。SOA一般使用某种集中式管理,比如审查委员会、主架构师或架构委员会来严格定义每个系统组件应当做什么,如何执行。
微服务是SOA发展出来的产物,它是一种比较现代化的细粒度的SOA实现方式。