Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器 软件资源

软件开发小程序制作系统集成与运维空间租用硬件开发视频监控技术咨询与支持——联系电话:0311-88999002/88999003

首页 / 操作系统 / Linux

设计模式之备忘录模式

设计模式之备忘录模式

问题引入,把‘游戏角色’的存取状态细节封装起来,而且最好是封装在外部的类当中,以体现职责分离。备忘录模式(Memento),在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象回复到原先保存的状态。备忘录模式的结构图涉及角色:1.Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以根据需要决定...
Linux下Shell脚本编程

Linux下Shell脚本编程

1、 shell脚本是什么它是一种脚本语言,并非编程语言。可以使用一些逻辑判断、循环等语法。可以自定义子函数,是系统命令的集合。shell脚本可以实现自动化运维,大大增加我们的工作效率。2、shell脚本结构以及执行方法开头行指定bash路径: #! /bin/bash以#开头的行作为解释说明#注释自己的脚本内容,方便自己查阅;utf8字符集,支持中文;脚本的名字以.sh结尾,用于区分这是一个shell脚本执行脚本方式有两种:chmod a+x 1.sh ...
Java 8 Lambda实现原理分析

Java 8 Lambda实现原理分析

为了支持函数式编程,Java 8引入了Lambda表达式,那么在Java 8中到底是如何实现Lambda表达式的呢? Lambda表达式经过编译之后,到底会生成什么东西呢? 在没有深入分析前,让我们先想一想,Java 8中每一个Lambda表达式必须有一个函数式接口与之对应,函数式接口与普通接口的区别,可以参考前面的内容,那么你或许在想Lambda表达式是不是转化成与之对应的函数式接口的一个实现类呢,然后通过多态的方式调用子类的实现呢,如下面代码是一个La...
JVM内存堆布局图解分析

JVM内存堆布局图解分析

JAVA能够实现跨平台的一个根本原因,是定义了class文件的格式标准,凡是实现该标准的JVM都能够加载并解释该class文件,据此也可以知道,为啥Java语言的执行速度比C/C++语言执行的速度要慢了,当然原因肯定不止这一个,如在JVM中没有数据寄存器,指令集使用的是栈来保存中间数据...等,尽管Java的贡献者们为执行速度的提高想了各种办法,如JIT、动态编译器等,以下是Leetcode中一道题目用不同的语言实现时的执行性能对比图...以下是JVM的一...
Java中停止线程执行的方法

Java中停止线程执行的方法

一、暂停或停止线程的理论在Java编程中,要暂停或停止当前正在运行的线程,有几种方法。对于把线程转入睡眠Sleep状态,使用Thread.sleep()是最正确的方式。或许有人会问,为什么不使用等待wait()或通知notify()?要知道,使用等待或通知都不是很好的方式。线程可以使用等待wait()实现被阻塞,这属于条件等待的方式,当条件满足后,又会从阻塞转为等待状态。尽管可以在等待wait()条件那里放一个超时设置,但等待wait()的设计目的不是这样...
Storm如何保证at least once语义?

Storm如何保证at least once语义?

背景前期收到的问题:1、在Topology中我们可以指定spout、bolt的并行度,在提交Topology时Storm如何将spout、bolt自动发布到每个服务器并且控制服务的CPU、磁盘等资源的?2、Storm处理消息时会根据Topology生成一棵消息树,Storm如何跟踪每个消息、如何保证消息不丢失以及如何实现重发消息机制?本篇看看storm是通过什么机制来保证消息至少处理一次的语义的,并回答第2个问题。storm中的一些原语要说明上面的问题,得...
Storm基础框架分析

Storm基础框架分析

背景前期收到的问题:1、在Topology中我们可以指定spout、bolt的并行度,在提交Topology时Storm如何将spout、bolt自动发布到每个服务器并且控制服务的CPU、磁盘等资源的?2、Storm处理消息时会根据Topology生成一棵消息树,Storm如何跟踪每个消息、如何保证消息不丢失以及如何实现重发消息机制?上篇:Storm是如何保证at least once语义的回答了第2个问题。本篇来建立一个基本的背景,来大概看下构成stor...
Storm如何分配任务和负载均衡?

Storm如何分配任务和负载均衡?

背景在上篇:Storm的基础框架分析基本探讨了storm的:worker、executor等组件的关系.线程模型和消息系统.任务分配流程.topology提交到执行的过程.但,感觉对nimbus、supervisor、并行度,任务分配和负载均衡的关系没有交代清楚,而且细节上也有些瑕疵,本篇做一个补充。基础组件之间的关系这里做一些补充:worker是一个进程,由supervisor启动,并只负责处理一个topology,所以不会同时处理多个topology....
十七项编程比赛,你敢试试吗?

十七项编程比赛,你敢试试吗?

众所周知,编程几乎已经成为各行各业不可或缺的重要技能储备,它能够以无法替代的方式帮助我们组织并维护大型系统,因此如今越来越多的人才也开始踏上这条学习之路。5 Coding Challenges to Help You Train Your Brain大家可以通过交互式平台学习编程,也可以从各类教程及论著当中汲取营养——每个人的学习轨迹不同,选择的学习方式亦有所区别。不过,有时候单凭这些资源还不足完全解决问题,我们更需要找到新的实践锻...
Spring WebSocket详解

Spring WebSocket详解

Spring框架从4.0版开始支持WebSocket,下面我将详述Spring WebSocket库的相关内容。内容包括Spring框架是如何在Web应用中支持WebSocket方式的消息通信,以及如何利用STOMP协议作为应用层的协议——WebSocket的子协议。1、WebSocket协议介绍WebSocket协议是RFC-6455规范定义的一个Web领域的重要的功能:全双工,即客户端和服务器之间的双向通信。它是一个令人兴奋的功...
STOMP协议详解

STOMP协议详解

一、STOMP协议介绍STOMP即Simple (or Streaming) Text Orientated Messaging Protocol,简单(流)文本定向消息协议,它提供了一个可互操作的连接格式,允许STOMP客户端与任意STOMP消息代理(Broker)进行交互。STOMP协议由于设计简单,易于开发客户端,因此在多种语言和多种平台上得到广泛地应用。STOMP协议的前身是TTMP协议(一个简单的基于文本的协议),专为消息中间件设计。STOMP是...
Servlet 3.0的AsyncListener接口

Servlet 3.0的AsyncListener接口

一、Servlet 3.0介绍Servlet 3.0作为 JavaEE 6规范中一部分,随着JavaEE 6规范一起发布。该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化Web应用的开发和部署。其中有几项特性的引入让开发者感到非常兴奋,同时也获得了Java社区的一片赞誉之声:1)异步处理支持在Servlet 3.0版本之前,Servlet线程需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结束该Servlet线程。而有了异步处...
Java静态代码分析工具Infer

Java静态代码分析工具Infer

一、Infer介绍Infer是Facebook最新开源的静态程序分析工具,用于在发布移动应用之前对代码进行分析,找出潜在的问题。目前Facebook使用此工具分析Facebook的App,包括Android、iOS、Facebook Messenger和Instagram等。Facebook称该工具帮助其每个月检查出应用潜在的数百个Bug,例如一些空指针访问、资源和内存泄漏等。Infer支持Android的Java和iOS的C和Objective-C代码。...
Java并行框架学习之ForkJoin

Java并行框架学习之ForkJoin

当硬件处理能力不能按照摩尔定律垂直发展的时候,选择了水平发展,多核处理器已经广泛应用。未来随着技术的进一步发展,可能出现成百上千个处理核心,但现有的程序运行在多核心处理器上并不能得到较大性能的提升,主要的瓶颈在于程序本身的并发处理能力不强,不能够合理的利用多核心资源。现有的处理方案是从软件入手,试图采用多线程,是程序在同一时间支持多个任务的计算,这种多线程的处理方案在处理器数目较少的情况下可以较为明显的提高应用性能,但我们更加青睐于由硬件实现的多线程处理模...
C#和JavaScript中数组去重总结

C#和JavaScript中数组去重总结

一.前言去重在我们的开发过程中经常遇到,避免重复元素的添加,我们需要对获取到的集合(包括List、Array等)做相关的过滤操作。确保对象的唯一性,从而达到保证数据不冗余重复。由于自己是做.net方面的开发,所以就拿C#语言中常用的去重方式来学习。如果有其他更好的方式,希望各位大牛指出来,自己也学习学习,在此十分感谢!二.C#一般性去重static void Main(string[] args) { //1.集合的定义 List...
Android浮动小球与开机自启动

Android浮动小球与开机自启动

看着手机上的360浮动小球,不评价其具体的功能与实用性,至少在UI设计与交互方面是个不小的创新。 如图片左上角所示,球中还会显示当前手机的运行状况,向下拉动还会有弹射来达到加速、清理等目的。 那好,先来实现一个类似的小球(仅限于形状,功能你懂得)。 查阅了相关资料,整个界面除了小球以外,其他部分均是做透明处理。 1、由于用到了CompatModeWrapper,所以需要在AndroidManifest.xml中添加以下权限:<uses-per...
Struts2学习笔记-Value Stack(值栈)和OGNL表达式

Struts2学习笔记-Value Stack(值栈)和OGNL表达式

只是本人的Struts2学习笔记,关于Value Stack(值栈)和OGNL表达式,把我知道的都说出来,希望对大家有用。一,值栈的作用记录处理当前请求的action的数据。二,小例子有两个action:Action1和Action2 Action1有两个属性:name和passwd Action2有两个属性:name2和passwd2 请求从Action1进入,chain方法导向Action2 Struts.xml配置信息:<?xml versio...
<< 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 >>