开发

ruby的字符串处理函数

不羁岁月 提交于 2020-03-01 08:20:56
1.返回字符串的长度 str.length => integer 2.判断字符串中是否包含另一个串 str.include? other_str => true or false "hello".include? "lo" #=> true "hello".include? "ol" #=> false "hello".include? ?h #=> true 3.字符串插入: str.insert(index, other_str) => str "abcd".insert(0, 'X') #=> "Xabcd" "abcd".insert(3, 'X') #=> "abcXd" "abcd".insert(4, 'X') #=> "abcdX" "abcd".insert(-3, 'X') -3, 'X') #=> "abXcd" "abcd".insert(-1, 'X') #=> "abcdX" 4.字符串分隔,默认分隔符为空格 str.split(pattern=$;, [limit]) => anArray " now's the time".split #=> ["now's", "the", "time"] "1, 2.34,56, 7".split(%r{,\s*}) #=> ["1", "2.34", "56", "7"] "hello".split(//) #

如何开发自己的嵌入式系统

走远了吗. 提交于 2019-12-29 19:22:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 多数Linux系统是在PC平台上运行,然而Linux作为嵌入式系统也是非常稳定的。本文描绘了一个嵌入式系统的概览,并展示嵌入式系统产品是如何使用Linux的。 嵌入式系统比摩西还老的故事 电 脑用于控制设备或嵌入系统的历史几乎电脑自身的历史一样长。在通讯领域,六十年代晚期,电脑被用于电子电话交换机,称为“存储程序控制”系统。“电脑”这 词那时并不普遍,存储程序指内存装有程序和例程信息。存储控制逻辑,而不是将其固化在硬件中,在当时确实是突破性的。今天,我们认为它本来就应如此。 那时的电脑是为每一个应用而定制的,按今天的标准,它们是一些不正常的、由奇怪的特殊指令和I/O设备集成在一部电脑中。 微处理器通过提供构建大系统模块的小型、低成本、CPU引擎改变了这一切。它提出了外设通过总线联接的固定硬件架构及称为编程的一般编程模型。 软件也随着硬件提出。最初,编写和测试软件只有简单的编程开发工具。每个项目实际运行的软件通常来自于草稿的修改。编程常用汇编语言或宏语言,因为编译器常常有缺陷和缺乏完善的调试工具。软件构建模块和标准化库只是到了七十年代才流行起来的概念。 嵌 入式系统的商品化操作系统在1970年代后期才出现,许多是用汇编语言写成的,并且只能用于特定的微处理器,当微处理器被淘汰时,它的操作系统除非为新处 理器重写

利用软件工具开发嵌入式Web应用

久未见 提交于 2019-12-29 19:16:29
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 越来越多的嵌入式设备将添加Web浏览功能,而支持Web功能的嵌入式处理器可以简化这类设备的设计。本文分析了嵌入式Web功能的特点,并详细描述了使用软件工具开发嵌入式Web应用的设计要点。 XML(可 扩展标记语言)正在迅速成为嵌入式系统与应用之间的首选接口技术。我们有许多方法可以实现带XML功能、支持Web浏览的嵌入式设备,从软件到专用硬件。 最简单的方法可能是完全用外部软件执行Web处理,尽管从消耗的处理能力考虑,这种方法的成本也最高。在这种方法中,设计师有可能要利用诸如微软 Windows CE等嵌入式操作系统的性能。 然而,对于资源受限的嵌入式项目,设计师将发现一种更有效的方法是直接用硬件实现Web支持功能。可供选择的解决方案包括全32位处理器+Web服务器,以及兼具低功耗和高数据吞吐量特性的混合解决方案等。 目 前,大部分主要的嵌入式架构都提供Web支持,包括Z80、MIPS、ARM和X86等。由于市面上存在数千种不同的嵌入式IC,因此设计师需要进行调 研:有些芯片只需要软件,而其它芯片常常需要一块外插卡来处理网络连接。当把实现Web支持功能所需的最重要的硬件元件---以太网控制器集成到芯片上 时,这样的解决方案具有最低的成本。Zilog公司的eZ80 Acclaim微控制器正是这样一种方案。 eZ80

渗透测试:正义黑客的渗透测试以及该过程和黑客活动的区别

帅比萌擦擦* 提交于 2019-12-13 18:41:58
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 渗透测试是正义黑客大展身手的地方。他们可以对漏洞评估中识别出的许多漏洞进行测试,以量化该漏洞带来的实际威胁和风险。 当正义黑客执行渗透测试时,他们的最终目标是入侵一个系统,然后从一个系统入侵另一个系统,直到“占领”整个域或环境。所谓“占领”,是指他们在最关键的Unix或Linux 系统上拥有root 权限,或者取得了可以访问和控制网络上的全部资源的管理员账户。这么做的目的是为了向客户(公司)展示在网络的当前环境和安全配置下,真正的攻击者可以采取哪些行动。 很多时候,正义黑客在按照自己的工作过程获得对网络的控制的同时,还会收获一些战利品。这些战利品包括CEO 的密码、公司的商业机密文件、所有边界路由器的管理员密码、CFO 和CIO 的笔记本电脑中标记为“机密”的文档等。沿路收集这些战利品的目的是为了使决策者理解漏洞的危害并引起重视。否则,就算花费几个小时向CEO、CIO或COO 解释有关服务、开放端口、不当配置和可能被攻击之处,他们也不能很形象地理解安全问题并引起足够的重视。但是一旦向CFO 展示其下一年度的规划,向CIO 展示其下一年的生产线蓝图,或者说出CEO 的密码“IAmWearingPanties”,他们自然而然就会想更多地了解防火墙和其他应该就位的防护措施的重要性了。 警告

互联网创业如何更好的规划商业模式

寵の児 提交于 2019-12-11 18:40:25
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>   《获利世代》(Business Model Generation)这本书自2010年问世以来,被翻译成30种以上的语言,被世界各地的新创公司奉为圭臬,许多学校也拿书中所提出的商业模式图(Business Model Canvas),来当作分析个案的教学工具。透过商业模式图,我们的确能够快速得到商业模式的概观,方便沟通、讨论并且持续追踪、更新;然而十分可惜的是,如果我们只是填完商业模式图就打算开始创业,很有可能会发现:这个工具似乎没有帮上什么忙。   我并不是要说商业模式图一文不值。使用这个工具,绝对比写一份没人会看第二次的商业计划书实际多了。但是对于新创事业来说,有几个原因会让这个工具「搔不到痒处」。为什么会这样呢?第一个原因是,许多人在填写商业模式图时,犯了一些常见的错误。如果能避免这些错误,就可以更好地发挥这个工具的威力。    在使用商业模式图时,常犯的错误有哪些呢?    1,没有清楚理解定义   这是最基本的错误。举例来说,我 程序员 客栈www.proginn.com的价值主张(Value Proposition)指的是我们提供什么「价值」,而非我们所提供的产品跟服务。    2,描述不够明确   填写时必须要描述的更明确一点,才会比较有意义。在填写价值主张时,如果我们写「提供卓越的购买体验」

C++基本知识

喜夏-厌秋 提交于 2019-12-09 21:53:21
1.C和C++的主要区别是什么? 答:1.C++语言包括过程性语言部分和类部分,过程性语言部分与C并无本质的差别,类部分是C语言中所没有的,它是面向对象程序设计的主体。 2.程序设计方法上已从结构化程序设计走向面向对象程序设计了. 2.结构程序设计和面向对象程序设计的概念 结构化程序设计的主要思想是功能分解并逐步求精。数据与程序分开存储,编程的主要技巧在于追踪哪些函数调用哪些函数,哪些数据发生了变化。 面向对象程序设计的本质是把数据和处理数据的过程当成一个整体----对象。(对象是一种特殊变量----像结构体变量、又增加了相关的操作行为) 面向对象程序设计的实现需要封装和数据隐藏技术、继承和重用技术、多态性技术。 3.什么是类和对象? 类是一组性质相同的对象的程序描述,它由概括了一组对象共同性质的数据和函数组成。是封装的基本单元. 对象是构成世界的一个独立单位,它具有自己的静态特征(状态)和动态特征(操作)。静态特征即可以用某种数据来描述的特征,动态特征即对象所表现的行为或对象所具有的功能。 类与对象的关系:类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体。所以,一个对象又称作类的一个实例(instance)。对象是类的实例,类定义了属于该类的所有对象的共同特性。 4. 面向对象程序设计的三大特征是什么? 1.封装(encapsulation):

Objective-C对象模型及应用

自作多情 提交于 2019-12-09 17:51:59
本文主要介绍 Objective-C对象模型 的实现细节,以及Objective-C语言对象模型中对isa swizzling和method swizzling的支持。希望本文能加深你对Objective-C对象的理解。 ISA指针 Objective-C是一门面向对象的编程语言。每一个对象都是一个类的实例。在 Objective-C语言 的内部,每一个对象都有一个名为isa的指针,指向该对象的类。每一个类描述了一系列它的实例的特点,包括成员变量的列表,成员函数的列表等。每一个对象都可以接受消息,而对象能够接收的消息列表是保存在它所对应的类中。 在XCode中按Shift + Command + O, 然后输入NSObject.h和objc.h,可以打开NSObject的定义头文件,通过头文件我们可以看到,NSObject就是一个包含isa指针的结构体,如下图所示: 按照面向对象语言的设计原则,所有事物都应该是对象(严格来说Objective-C并没有完全做到这一点,因为它有象int, double这样的简单变量类型)。在Objective-C语言中,每一个类实际上也是一个对象。每一个类也有一个名为isa的指针。每一个类也可以接受消息,例如[NSObject alloc],就是向NSObject这个类发送名为alloc消息。 在XCode中按Shift + Command + O,

应用生命周期终极 DevOps 工具包

江枫思渺然 提交于 2019-12-07 21:45:37
【编者按】本文作者为 Kevin Goldberg,主要介绍了在开发、运营应用的完整生命周期当中,可能用到的 DevOps 工具大集合。文章系 OneAPM 工程师编译整理。 DevOps工具包中合适的工具可以帮助你在企业内成功实施DevOps,增强敏捷发布过程和团队协作。笔者想先声明,DevOps不仅涉及工具,如果背后没有合适的人员与文化,即使拥有最好的工具,也不能成功实施DevOps。不幸的是,没有“文化”工具可供你使用,让你能够立刻在团队之间培养协作和反馈。 合适的工具可以提供框架,帮助公司成功实施DevOps。你选择的工具,应该鼓励反馈,并防止进一步形成孤立。工具还应该帮助统一和协调团队。确定采用的DevOps工具包,是实现DevOps目标和量化成功的关键第一步。虽然工具的特性集和解决方案是很重要的,也要确保重视工具组合起来的效果。无法整合的工具可能会需要过多的维护,成本,或产生冲突的信息。 在一个非常简化的应用生命周期视图中,笔者将过程划分为四个主要步骤:规划,设计,部署和维护。在每一个步骤中,都有可以增强这一环节的工具。同样重要的是,这个过程不是一次性的,这是一个持续的循环。这种持续的反馈周期,是DevOps成功的必要基础。 与其通过一系列的产品列表来选择DevOps工具,你应该考虑自己的应用生命周期,根据特定的目标来做出选择。 ##基础

移动前端开发之viewport的深入理解

淺唱寂寞╮ 提交于 2019-12-07 20:39:14
在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概念以及弄清楚了跟viewport有关的meta标签的使用,才能更好地让我们的网页适配或响应各种不同分辨率的移动设备。 一、viewport的概念 通俗的讲,移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那一块区域,在具体一点,就是浏览器上(也可能是一个app中的webview)用来显示网页的那部分区域,但viewport又不局限于浏览器可视区域的大小,它可能比浏览器的可视区域要大,也可能比浏览器的可视区域要小。在默认情况下,一般来讲,移动设备上的viewport都是要大于浏览器可视区域的,这是因为考虑到移动设备的分辨率相对于桌面电脑来说都比较小,所以为了能在移动设备上正常显示那些传统的为桌面浏览器设计的网站,移动设备上的浏览器都会把自己默认的viewport设为980px或1024px(也可能是其它值,这个是由设备自己决定的),但带来的后果就是浏览器会出现横向滚动条,因为浏览器可视区域的宽度是比这个默认的viewport的宽度要小的。下图列出了一些设备上浏览器的默认viewport的宽度。 二、css中的1px并不等于设备的1px 在css中我们一般使用px作为单位,在桌面浏览器中css的1个像素往往都是对应着电脑屏幕的1个物理像素

关于Web报表FineReport打印的开发应用案例

只愿长相守 提交于 2019-12-07 18:38:33
报表打印是报表使用和开发过程中经常碰到的问题,这里汇总了关于Web报表开发打印功能的一些典型应用案例,以应用最广泛的FineReport为例。 案例一:java直接调用报表打印 当java后台定义定时打印的功能,同时又需要直接调用报表的打印的时候,由于打印机型号和纸张不同,需要指定打印机,从而打印是否成功并设置返回值。那么怎么样可以实现这一过程呢? 实现过程 1、定义报表运行环境 // 定义报表运行环境,才能执行报表 String envPath = "D:\\FineReport\\develop\\code\\build\\package\\WebReport\\WEB-INF"; FRContext.setCurrentEnv(new LocalEnv(envPath)); 2、定义执行模板工作簿 TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook(FRContext.getCurrentEnv(), "GettingStarted.cpt"); 3、 获取报表参数并设置值 // 参数传值 Parameter[] parameters = workbook.getParameters(); HashMap<String, String> paraMap = new HashMap<String