欢迎访问小程序员!

在CoreText里进行全文搜索,搜索的结果需要高亮显示,这个已经是很普遍的做法了。 在搜索结果列表中可以通过UILabel直接显示 [attributedString addAttribute: NSBackgroundColorAttributeName value:[UIColor orangeColor] range:range]; _conLabel.attributedText=attributedString; 但是当我开始进行CoreText文字高亮显示的时候发现了一个问题,CoreT ....

模式匹配 使用用模式匹配实现斐波那契 def fibonacci(in: Any): Int = in match { case 0 => 0 case 1 => 1 case n: Int if(n > 1)=> fibonacci(n - 1) + fibonacci(n - 2) case _ => 0 } println(fibonacci(3)) 元组tuple 元组可以保存不同类型的值,不能通过名称获取字段,而是使用位 ....

现在的开发人员都趋向于使用新的编程语言,那么旧的编程语言呢?它们的前途一般是这样两种:仍然可以使用,但逐渐不受大家欢迎;直接完全死去。和之前的十佳最受欢迎的编程语言相反,本文我们预测以下这几种编程语言面临着死亡威胁: Perl 曾几何时,几乎每个人都在使用Perl语言编程。但是那些经常使用的人慢慢地发现,关于这个Perl语言似乎总是有点不对劲。至少我知道有这么个叫做“piecemeal”的编程语言,它的创造者似乎就只是将这个功能堆在另一个功能上面而已,并没有好好考虑将它们结合在一起。 事实上,甚至是它的创造 ....

我不理解为什么人们会对面向对象编程和函数式编程做无休无止的争论。就好象这类问题已经超越了人类智力极限,所以你可以几个世纪的这样讨论下去。经过这些年对编程语言的研究,我已经清楚的看到了问题的答案,所以,我经常的发现,人们对这些问题做的都是一些抓不住要领、无意义的争论。 简言之,不论是面向对象编程还是函数式编程,如果你走了极端,那都是错误的。面向对象编程的极端是一切都是对象(纯面向对象)。函数式编程的极端是纯函数式编程语言。 面向对象编程的问题 面向对象的问题在于它对“对象”的定义,它试图将所有 ....

NSdata的概念 1、使用文件时需要频繁地将数据读入一个临时存储区,它通常称为缓冲区 2、NSdata类提供了一种简单的方式,它用来设置缓冲区,将文件的内容读入缓冲区,或者将缓冲区内容写到一个文件。 3、对于32位应用程序,NSdata缓存最多2GB 4、我们有两种定义 NSData(不可变缓冲区),NSMutableData(可变缓冲区) 上面的描述有点片面,再补充一些: NSData就是字节流的数据,它为字节流提供面向对象的存储空间,能够把一些字符串或图片等等一些非常复杂的数据类型转换成01字节流。在 ....

最近有个家伙抱怨道“为什么我还要再用C?”-虽然我不同意他的说法,但至少他随口提到如果你“在一台拇指大小的电脑”上编程,或者为一门语言写引导程序,那么可以用C语言。要我说,写设备驱动,或者特定平台的内核,不管怎么说都可以使用C。 几年之前,我用C语言写下了我的第一个网络程序,但我并不推荐这么做。现在,我只用P打头的,尤其是P-y打头的语言写网络程序(译者注:绕什么圈子,不就是Python嘛…)。但在当时,我刚从DOS和TSRs的世界中出来,在那儿用上10KB的RAM我都会觉得大得惊人。 现在我是一名Web开 ....

最近在研究OpenCv对摄像头的调用。现将代码贴出,供大家批评指正。 1、申明 #include"./opencv2/opencv.hpp" #ifdef _DEBUG #pragma comment(lib,"opencv_core249d.lib") #pragma comment(lib,"opencv_highgui249d.lib") #else #pragma comment(lib,"opencv_core249. ....

【译注】:Eric Raymond是开源运动的领袖人物,对于UNIX开发有很深的造诣,主持开发了fetchmail。他的《大教堂与集市》被奉为开源运动的经典之作。下面对几大开发语言的评价非常中肯,是我近年来看到的比较出色的评论。特别是他评价中抱有的那种“简单就是好”的思想,很值得我们深思。我特别选译出一些段落,供大家阅读思考。 Raymond 此文不是在泛泛地去谈语言的优劣,而是要回答一个问题:在UNIX下开发开源项目,如何选择开发工具?我翻译的很零散,建议大家去看原文。 C 语言 虽说C语言在内存管理方面 ....

这10分钟教程并不是Java和Perl的比较。目标是探索作为Java开发人员如何快速学习Perl。以下是一些从我的角度来看的关键笔记。 1.从基础开始 不像java,Perl不需要“main”方法作为入口点。要运行一个简单的Perl程序如下: # comment starts with "#" # the name is hello.pl print "Hello Perl!"; perl hello.pl 2. 日期类型 在Per ....

保持领先是任何软件工程师面临的最大挑战之一。那么哪种编程语言的需求最经久不衰? 我们统计了一些在2014年仍能保持竞争力的编程语言,下面按照排名一一道来。 10. ASP.NET ASP.NET是服务器端的Web应用程序框架语言,目的是为Web开发制作设计动态网页。它是由微软开发的,该语言允许程序员构建动态的web站点,web应用程序和web服务。2002年1月首次发布的.NET Framework1.0版本,是对微软的动态网页技术(ASP)的继承和扩展。ASP.NET建立在公共语言运行时(CLR)的基础上 ....

正如任何一个程序员跟你说的那样,你在编程中有时会被气得咒骂它们几句。但是你知不知道C++程序员比PHP程序员会吐槽更多,下图是Github上对各种编程语言被吐槽的统计: 一个叫Andrew Vos的开发者在业余时间做一个项目的时候突然想到一个有趣的点子,他从Github中抓取了100万条评论信息,然后统计出里面有多少吐槽咒骂的脏话。他只提取了George Carlin 所说的七个脏词,然后按编程语言分类统计出其中包含的吐槽脏词。为了避免语言流行度对统计的影响,Andrew Vos对每一种语言都抓取了同样数目 ....

有一次,我参加了一个叫做“Ruby集训”的活动,那是一个由想学习Ruby的年轻人参加的,历时5天4夜的Ruby编程学习活动,对参加者来说是一次非常宝贵的经验。第1天是入门培训,第2天将Ruby系统学习一遍,然后第3天到第4天分组各自制作一个相当规模的游戏,并在最后一天进行展示,可以说是一次十分军事化的集训活动。我只到现场去了大概两天,不过那些勇于向高难度课题发起挑战的年轻人还是给我留下了深刻的印象。在那次集训活动中,有一位参加者问:“闭包是什么?”担任讲师的是我的学生,不过他也没有做出准确的理解,因此借这个 ....

多线程单例模式的实现。通过双重锁定,自旋处理,实现安全的多线程单例和共享区数据的访问。资源访问的形式采用简单等待处理.同时使用std::bind进行函数绑定。 // atomic_lock_flag_p202_6-3-3.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <atomic> #include <iostream> #include <thread> #include &l ....

Select() 和 SelectMany() 的工作都是依据源值生成一个或多个结果值。   Select() 为每个源值生成一个结果值。因此,总体结果是一个与源集合具有相同元素数目的集合。与之相反,SelectMany() 将生成单一总体结果,其中包含来自每个源值的串联子集合。作为参数传递到 SelectMany() 的转换函数必须为每个源值返回一个可枚举值序列。然后,SelectMany() 将串联这些可枚举序列以创建一个大的序列。   string[] text ={ "Albert was ....

#include<stdio.h> int main() { int a,b;//两个数 int x,y;//暂时保存a,b以便后面求最小公倍数p=(a*b)/a int p;//最小公倍数 int temp; while(scanf("%d %d",&a,&b)!=EOF)//ctrl+Z退出循环 { x=a; y=b;//暂时保存a,b的原值到x,y中,因为后面a,b的值要变。 while(b!=0) { ....

服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型。 (2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。 (3)IO多路复用(IO Multiplexing):即经典的Reactor设计模式,有时也称为异步阻塞IO,Java中的Selector和Linux中的epoll都是这种模型 ....

屏蔽鼠标功能需要用到钩子,使用过程如下: 1、定义全局变量 HHOOK g_hMouse = NULL; 2、定义全局回调函数 LRESULT CALLBACK MouseProc(int nCode,WPARAM wParam,LPARAM lParam) { return 1; } 3、安装钩子 g_hMouse = SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId()); 执行此行代码后,应用程序的鼠标便 ....

背景 GMock 我们项目中现在的模块测试框架使用了CATCH+GMock的方式实现回归测试和打桩。 GMock的介绍在官网上有,这里为了铺垫,大概地描述一下GMock能实现的效果。大约可以看成这样: void A() {     if(B()) {         //...     }     Else{         //...     }   } A是被测函数,B是桩函数。 在测试的,使用GMock的话,我们可以这样写测试代码: TEST_CASE(Test As normal case) {   ....

javascript 本身虽是一门面向对象的编程语言, 但并没有明确提供继承方式.二十多年间,众多高手提供很多模拟继承的实现, 主要的有:对象冒充,call/apply,prototype,以及深复制等. 网上有很多此类教程,在这里就不再赘述这些实现.我所在的团队正在做的项目,需要使用js和lua实现同一份API接口,已达到js和lua的无缝切换.所以,实现类的继承方案至关重要. 接下来,就是具体实现过程, 如有不到之处,还望大家指正. Lua ,是一门很优秀的动态语言,为嵌入而生,如果只是当成脚本使用的话 ....

strcpy和memcpy都是标准C库函数,它们有下面的特点。 strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。 已知strcpy函数的原型是:char* strcpy(char* dest, const char* src); memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。 void *memcpy( void *dest, const void *src, size_t count ); c ....