- 博客(506)
- 资源 (14)
- 收藏
- 关注
原创 并发编程--Disruptor框架
Disruptor它是一个开源的并发框架,并获得2011 Duke’s 程序框架创新奖,能够在无锁的情况下实现网络的Queue并发操作;它是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式的实现,或者事件监听模式的实现;它是基于使用CAS机制实现的。CAS:Compare And Swap/Set 顾名思义比较和交换CPU级别的指令,cpu去更新一个值,但如果跟新过程中值发生了变化,操作就失败,然后重试,直到更新成功!Disruptor的seque
2020-07-20 14:11:30 288
原创 CPU密集型 vs IO密集型
CPU密集型(CPU-bound)CPU密集型线程的作用是进行无阻塞的逻辑运算的线程。比如:RPG游戏中的游戏逻辑服务器(也叫地图服务器)里面的主逻辑线程,这个主逻辑线程需要进行大量的无阻塞的逻辑处理。当被操作系统内核调度的时候,这个线程就在给定的CPU执行时间内进行无阻塞的操作。如果这个游戏逻辑服务器还创建更多的线程来进行逻辑操作的话,这样的行为是得不尝失的。因为,本进程的线程越多,而本进程获取的CPU执行时间又是固定的,导致了进程内每个线程的执行时间很短。所以,像游戏逻辑服务器中的线程应该属于CPU密
2020-07-11 16:09:02 1210
原创 设计模式的六大原则
一、单一职责原则 Single Responsibility Principle,应该有且仅有一个原因引起类的变更,实际中比较不好把握,因为职责的划分没有一个统一的标准。 二、里氏替换原则 Liskov Substitution Principle,通俗点讲,只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。但是,反过来就不行了,有子类出现的地方,父类未必就能适应。 三、依赖倒置原则 Dependence I.
2020-07-09 16:15:22 318
原创 线程池简介
线程池的概念: 线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。 线程池的工作机制: 在线程池的编程模式下,任务是提交给整个线程池,而不是直接提交给某个线程,线程池在拿到任务后,就在内部寻找是否有空闲的线程,如果有,则将任务交给某个空闲的...
2020-06-06 08:17:14 222
原创 线程安全问题
当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。先了解一下java内存模型上图描述了一个多线程执行场景。 线程 A 和线程 B 分别对主内存的变量进行读写操作。其中主内存中的变量为共享变量,也就是说此变量只此一份,多个线程间共享。但是线程不能直接读写主内存的共享变量,每个线程都有自己的工作内存,线程需要读写主内存的共享变量时需要先将该变量拷贝一份副本到自己的工作内存,然后在自己的工作内存中对该变量进行所有
2020-05-22 14:10:51 465
原创 线程的状态及join方法
线程运行状态包括新建状态、就绪状态、运行状态、阻塞状态及死亡状态。New (新创建) 当用new操作符创建一个线程时,如new Thread(r),该线程还没有开始运行。这意味它的状态是new。此时程序还没有开始运行线程中的代码,在线程运行之前还有一些基础工作要做。Runnable (可运行/就绪) 一个新创建的线程并不自动开始运行,要执行线程,必须调用线程的start()方法。当线程对象调用start()方法(如图中1所示)即启动了线程,start()方法创建线程运行的系统资源,并调度
2020-05-20 14:51:09 1835
原创 进程与线程
进程 进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程具有的特征:动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;并发性:任何进程都可以同其他进行一起并发执行;独立性:进程是系统进行资源分配和调度的一个独立单位;结构性:进程由程序,数据和进程控制块三部分组成线程 随着计算机的发展,对CPU的要求越来越高,进程之间的切换开销较大,已经无法满足越来越复杂的程序...
2020-05-20 13:15:36 254
原创 多媒体媒体分类
媒体的概念范围相当广泛,按照国际电话电报咨询委员会(Consultative Committee on International Telephone and Telegraph,CCITT)的定义,媒体可以分为如下5类。(1)感觉媒体(Perception Medium):指直接作用于人的感觉器官,使人产生直接感觉的媒体。如引起听觉反应的声音,引起视觉反应的图像等。(2)表示媒体(r...
2020-04-15 14:10:45 3246
原创 动态主机配置协议(DHCP)
什么是DHCP DHCP,动态主机配置协议,前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,常用的2个端口:67(DHCP server),68(DHCP client)。DHCP通常被用于局域网环境,主要作用是集中的管理、分配IP地址,使client动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。简单来说,DHC...
2020-04-14 16:00:42 4939
原创 Netty简介及应用场景
什么是NettyNetty 是一个基于 JAVA NIO 类库的异步通信框架,它的架构特点是:异步非阻塞、基于事件驱动、高性能、高可靠性和高可定制性。Netty是基于Java NIO client-server的网络应用框架,使用Netty可以快速开发网络应用,例如服务器和客户端协议。Netty提供了一种新的方式来开发网络应用程序,这种新的方式使它很容易使用和具有很强的扩展性。Netty的内...
2020-04-08 14:14:03 14576 2
原创 结构化布线子系统
结构化布线分为6个子系统:工作区子系统(Work Location):是由终端设备到信息插座的整个区域。一个独立的需要安装终端设备的区域划分为一个工作区。工作区应支持电话、数据终端、计算机、 电视机、监视器以及传感器等多种终端设备。水平子系统(Horizontal):各个楼层接线间的配线架到工作区f息插座之间所安装的线缆属于水平子系统。水平子系统的作用是将干线子系统线路延伸到用户工作区。...
2020-04-07 15:44:01 1082
原创 线性规划问题
线性规划的可行解域是由一组线性约束条件形成的,从几何意义来说,就是由一些线性解面围割形成的区域。由于线性规划的目标函数也是线性的,因此,目标函数的等值域是线性区域。如果在可行解域中的某内点处目标函数达到最优值,则通过该内点的目标函数等值域与可行解域边界的交点也能达到最优解。所以,第一步的结论是:最优解必然会在可行解域的边界处达到。由于目标函数的各个等值域是平行的,而且目标函数的值将随着该等值域向某...
2020-04-07 11:07:51 2709
原创 敏捷开发方法之Scrum
介绍Scrum 是一个增量的、迭代的敏捷软件开发过程。某软件公司计划开发一个基于Web的 Scrum项目管理系统,用于支持项目团队采用Scrum敏捷开发方法进行软件开发,辅助主管智能决策。此项目管理系统提供的主要服务包括项目团队的管理、敏捷开发过程管理和工件的管理。 Scrum敏捷开发中,项目团队由Scrum主管、产品负责人和开发团队人员三种不同的角色组成,其开发过程由若干个Sp...
2020-04-03 11:12:30 1459
原创 电子政务简述
广义的政务包括各类行政管理活动,狭义的政务指政府部门的管理和服务活动。电子政务是政务的一种形式,是指国家机关在政务活动中全面应用现代信息技术进行管理和办公,以及为社会提供服务。电子政务作为电子信息技术和政务的结合,其重心在“政务”而不是电子,电子信息技术只是政务活动的实现手段。电子政务不仅能够将原来的政务流程电子化,而且为了实现资源的最优化配置,提高政府部门的效率、降低运行成本,在进行电子政务...
2020-04-02 17:52:38 1079
原创 系统集成方式:数据集成、控制集成
为了完成控制集成和业务流程集成,必须首先解决数据和数据库的集成问题。在集成之前,必须首先对数据进行标识并编成目录,另外还要确定元数据模型,保证数据在数据库系统中分布和共享。通常在以下情况下,将会使用数据集成:(1)需要对多种信息源产生的数据进行综合分析和决策。(2)要处理一些多个应用程序需要访问的公用信息库。(3)当需要从某数据源获得数据来更新另一个数据源时,特别是它们之间的数据格式不相同...
2020-04-02 14:45:57 13364
原创 信息技术软件生存周期过程
在GBT8566—2007(信息技术软件生存周期过程)标准中,软件生存周期的基本过程包括五个,分别是获取过程、供应过程、开发过程、运作过程、维护过程。其中获取过程是为获取系统、软件产品或软件服务的组织即需方而定义的活动;供应过程是为向需方提供系统、软件产品或软件服务的组织即供方定义的活动;开发过程是为定义并开发软件产品的组织即开发方而定义的活动;运作过程是为在规定的环境中为其用...
2020-03-30 15:33:50 2158
原创 信息系统可行性分析
可行性是指在企业当前的条件下,是否有必要建设新系统,以及建设新系统的工作是否具备必要的条件。也就是说,可行性包括必要性和可能性。参考国家标准《计算机软件文档编制规范》(GB/T 8567-2006),在信息系统建设项目中,可行性研究通常从经济可行性、技术可行性、法律可行性和用户使用可行性四个方面来进行分析,其中经济可行性通常被认为是项目的底线。1.经济可行性经济可行性也称为投资收益分析或成...
2020-03-24 16:26:39 23676
原创 需求调研获取方式
用户访谈:用户访谈是最基本的一种需求获取手段,其形式包括结构化和非结构化两种。用户访谈是通过1对1(或1对2,1对3)的形式与用户面对面进行沟通,以获取用户需求。用户访谈具有良好的灵活性,有较宽广的应用范围。但是,也存在着许多困难,例如,用户经常较忙,难以安排时间;面谈时信息量大,记录较为困难;沟通需要很多技巧,同时需要系统分析师具有足够的领域知识等。另外,在访谈时,还可能会遇到一些对于企业来说比...
2020-03-24 16:21:06 791
原创 多核处理器介绍
多核是多微处理器核的简称,是将两个或更多的独立处理器封装在一起,集成在一个电路中。多核处理器是单枚芯片(也称为硅核),能够直接插入单一的处理器插槽中,但操作系统会利用所有相关的资源,将它的每个执行内核作为分立的逻辑处理器。通过在多个执行内核之间划分任务,多核处理器可在特定的时钟周期内执行更多任务。多线程是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同...
2020-03-24 11:18:22 7976
转载 利用开源软件搭建JAVA工程CI&CD自动化工具链(K8S)
JAVA传统项目交付流程的问题开发和运维间环境有明显差异 代码缺乏统一质量度量 客户要求上线时间紧,人工测试慢,导致测试不充分,时常做线上BUG修复打造工具链源码管理Gitlab 持续集成Jenkins 代码扫描SonarQube 接口测试PostMan+NewMan 制品管理ArtifactoryOSS版本(仅支持Maven) 自动部署AnsibleGi...
2020-03-16 17:24:15 764
原创 网络技术的选择考虑哪些因素?
根据用户需求选择网络技术时应考虑如下因素:①通信带宽。所选择的网络技术必须保证足够的带宽,能够保证用户快速地访问应用系统。在进行选择时,不仅局限于现有的应用需求,还要适当考虑将来的带宽增长需求。②技术成熟性。所选择的网络技术必须是成熟稳定的技术,有些新的网络技术在尚没有大规模投入使用时,还存在着较多不确定因素,这将会给网络建设带来很多无法估量的损失。对于大型网络工程来说,项目本身不能成为新...
2020-03-13 10:15:29 2419
原创 Kafka与RabbitMQ的区别
作为消息队列来说,企业中选择mq的还是多数,因为像Rabbit,Rocket等mq中间件都属于很成熟的产品,性能一般但可靠性较强,而kafka原本设计的初衷是日志统计分析,现在基于大数据的背景下也可以做运营数据的分析统计,而redis的主要场景是内存数据库,作为消息队列来说可靠性太差,而且速度太依赖网络IO,在服务器本机上的速度较快,且容易出现数据堆积的问题,在比较轻量的场合下能够适用。Ra...
2020-03-12 17:24:10 7971
原创 层次化网络设计
三层模型主要将网络划分为核心层、汇聚层和接入层,每一层都有着特定的作用。核心层提供不同区域或者下层的髙速连接和最优传送路径;汇聚层将网络业务连接到接入层,并且实施与安全、流量负载和路由相关的策略,为了保证核心层连接运行不同协议的区域,各种协议的转换都应在汇聚层完成;接入层为局域网接入广域网或者终端用 户访问网络提供接入,接入层负责一些用户管理功能,包括地址认证、用户认证和计费管理等内容...
2020-03-11 17:11:21 2203
原创 数据库的三级模式结构
数据库的三级模式结构中,视图对应外模式、基本表对应模式、存储文件对应内模式。数据库系统在三级模式之间提供了两级映像:模式/内模式映像、外模式/模式映像。正因为这两级映像保证了数据库中的数据具有较髙的逻辑独立性和物理独立性。①外模式/模式的映像:存在于外部级和概念级之间,实现了外模式到概念模式之间的相互转换。数据的逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构发生...
2020-03-11 10:25:37 3367
原创 螺旋模型与增量模型
1988年,Barry Boehm正式发表了软件系统开发的“螺旋模型”,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。但是,螺旋模型也有一定的限制条件,具体如下:①螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是...
2020-03-10 14:52:01 3766
原创 敏捷开发原则及方法
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。敏捷开发的原则包括:①最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。②即使到了开发的后期,也欢迎改变需求。敏捷过...
2020-03-10 11:41:28 3570
原创 软件质量保证和软件配置管理
对于软件开发项目而言,控制是十分重要的管理活动。软件质量保证 (Software Quality Insurance, SQA)是在软件过程中的每一步都进行的“保护性活动”。SQA主要由基于非执行的测试(也称为评审)、基于执行的测试(即通常所说的测试) 和程序正确性证明。软件评审是最为重要的SQA活动之一。它的作用是,在发现及改正错误的成本相对较小时就及时发现并排除错误。审查和走查是进...
2020-03-10 11:31:34 1964
原创 I/O设备和CPU之间数据传送控制方式
常用的I/O设备和CPU之间数据传送控制方式有4种,分别为程序直接控制方式、中断控制方式、DMA方式和通道方式。程序直接控制方式和中断控制方式都只适用于简单的、外设很少的计算机系统,因为程序直接控制方式耗费大量的CPU时间,而且无法检测发现设备或其他硬件产生的错误,设备与CPU、设备与设备只能串行工作。中断控制方式虽然在某种程度上解决了上述问题,但由于中断次数多,因而CPU仍需要花费较多的...
2020-03-10 11:21:01 12218
原创 RISC(精简指令集计算机)和CISC(复杂指令集计算机)
RISC(精简指令集计算机)和CISC(复杂指令集计算机)是目前设计制造微处理器的两种典型技术,虽然它们都试图在体系结构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出某种平衡,以求达到高效的目的,但采用的方法不同,主要区别有:①指令系统:RISC设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC机器上实现特殊...
2020-03-10 10:56:57 6705
原创 服务降级、服务隔离、服务熔断、服务限流简介
服务降级:在高并发的情况下,防止用户一直等待,使用服务降级方式进行处理(返回友好的提示给客户端,fallback回调方法)。当服务不可用的时候(正在等待的时候、网络延迟、响应时间过长),客户端会处于一直等待的状态。显然一直等待是不合理的,所以我们应该给客户端返回一个友好的提示,使用fallback(回调方法)进行服务降级处理。服务降级目的:为了提高用户体验(自定义消息返回给客户端),防止服务雪...
2020-03-06 15:22:19 875 1
原创 面向对象设计原则
面向对象设计原则可以有效地提高系统的复用性和可维护性。1、单一职责原则定义:一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。单一职责原则是实现高内聚、低耦合的指导方针,是最简单却最难运用的原则,需要设计人员发现类的不同职责并将其分离2、开闭原则定义:软件实体应当对扩展开放,对修改关闭。指软件实体应尽量在不修改原有代码的情况下进行扩展。3、里氏替换原则定义:...
2020-03-06 14:05:17 267
原创 软件开发方法简介
如何选择一个合适的开发方法,以保证在多变的市场环境下,在既定的预算和时间要求范围内,开发出让用户满意的信息系统,是系统分析师必须要面对的问题。面向对象方法使系统的描述及信息模型的表示与客观实体相对应,符合人们的思维习惯,有利于系统开发过程中用户与开发人员的交流与沟通,缩短开发周期,提供系统开发的正确性和效率。模型驱动开发(MDD Model-Driven Development):一种新型...
2020-03-03 14:54:36 1713
原创 软件配置项的基本概念
随着软件开发工作的开展,会得到许多工作产品或阶段产品,还会用到许多工具软件。所有这些独立的信息项都要得到妥善的管理,决不能出现混乱,以便于在提出某些特定的要求时,将它们进行约定的组合来满足使用的目的。这些信息项目是配針管理的对象,称为软件配置项。软件配置项目可以分为以下几类:(1)环境类,指软件开发环境或软件维护环境,例如编译器、操作系统、编辑器、数据库管理系统、开发工具、项目管理工具、文...
2020-03-03 11:53:05 10774
原创 敏捷方法简介
敏捷方法是一种以人为核心、迭代、循序渐进的开发方法。在敏捷方法中,软件项目的构建被切分成多个子项目,各个子项目成果都经过测试,具备集成和可运行的特征。 在敏捷方法中,从开发者的角度来看,主要的关注点有短平快的会议、小版本发布、较少的文档、合作为重、客户直接参与、自动化测试适应性计划调整和结队编程;从管理者角度来看,主要的关注点有测试驱动开发、持续集成和重构。敏捷方法在几周或几个月的时间内完成...
2020-02-27 10:42:38 2094
原创 模型驱动架构(DMA)
简介 模型驱动架构是指一种用于应用系统开发的软件设计方法(信息系统开发的重点是应用软件的设计),它提供了一套软件设计的指导规范,这套指导规范是用模型来表示的。模型驱动架构是由一个名叫OMG(Object Management Group,即对象管理组织)的国际联盟于2001年颁布的。建模方法 MDA基于三种建模方法。 第一种建模方法就是著名的统一建模语言(Unified M...
2020-02-26 16:02:03 2085
原创 视频协议整理
GB/T 28181协议:GB/T 28181协议是由公安部科技信息化局提出,由全国安全防范报警系统标准化技术委员会(SAC/TC100)归口,公安部一所等多家单位共同起草的一部国家标准。ONVIF协议:摄像机中较常用的一种协议,它是是一种兼容协议。由安讯士联合博世及索尼三方共同成立的一个国际开放型网络视频产品标准网络接口开发论坛,取名为ONVIF(Open Network Video I...
2020-02-26 11:15:41 3429 1
原创 Logstash介绍
简介 Elasticsearch是当前主流的分布式大数据存储和搜索引擎,可以为用户提供强大的全文本检索能力,广泛应用于日志检索,全站搜索等领域。Logstash作为Elasicsearch常用的实时数据采集引擎,可以采集来自不同数据源的数据,并对数据进行处理后输出到多种输出源,是Elastic Stack 的重要组成部分。本文从Logstash的工作原理,使用示例,部署方式及性能调优等方面...
2020-01-15 09:53:25 1347
原创 ElasticSearch集群
ES为什么要实现集群在单台ES服务器节点上,随着业务量的发展索引文件慢慢增多,会影响到效率和内存存储问题等。如果使用ES集群,会将单台服务器节点的索引文件使用分片技术,分布式的存放在多个不同的物理机器上,从而可以实现高可用、容错性等。es核心存放的是索引。什么是分片技术将数据拆分成多台节点进行存放。ElasticSearch集群中索引可能由多个分片构成,并且每个分片可以拥有多个...
2020-01-14 10:02:13 756
原创 ES分词及文档映射简介
文档(Document):一般搜索引擎的处理对象是互联网网页,而文档这个概念要更宽泛些,代表以文本形式存在的存储对象,相比网页来说,涵盖更多种形式,比如Word,PDF,html,XML等不同格式的文件都可以称之为文档。再比如一封邮件,一条短信,一条微博也可以称之为文档。 文档集合(Document Collection):由若干文档构成的集合称之为文档集合。比如海量的...
2020-01-10 10:16:40 1779
原创 Elasticsearch介绍
Lucene是一种高性能、可伸缩的信息搜索(IR)库,在2000年开源,最初由鼎鼎大名的Doug Cutting开发,是基于Java实现的高性能的开源项目。Lucene采用了基于倒排表的设计原理,可以非常高效地实现文本查找,在底层采用了分段的存储模式,使它在读写时几乎完全避免了锁的出现,大大提升了读写性能。 Elasticsearch (ES)是一个基于Lucene构建的开源、分布...
2020-01-06 17:13:57 402
Zabbix 简单介绍
2018-11-21
itop使用手册
2018-04-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人