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

首页 / 操作系统 / Linux

使用GCC和GNU Binutils编写能在x86实模式运行的16位代码

使用GCC和GNU Binutils编写能在x86实模式运行的16位代码

不可否认,这次的标题有点长。之所以把标题写得这么详细,主要是为了搜索引擎能够准确地把确实需要了解GCC生成16位实模式代码方法的朋友带到我的博客。先说一下背景,编写能在x86实模式下运行的16位代码,这个话题确实有点复古,所以能找到的资料也相应较少。要运行x86实模式的程序,目 前我知道的只有两种方式,一种是使用DOS系统,另一种是把它写成引导扇区的代码,在系统启动时直接运行。很显然,许多讲自己实现操作系统的书籍都会讲到 x86实模式,也只有自己实现操作系...
C++编程 –安全并发访问容器元素

C++编程 –安全并发访问容器元素

C++ 安全并发访问容器元素2014-9-24 flyfish标准库STL的vector, deque, list等等不是线程安全的例如线程1正在使用迭代器(iterator)读vector线程2正在对该vector进行插入操作,使vector重新分配内存,这样就造成线程1中的迭代器失效STL的容器多个线程读是安全的,在读的过程中,不能对容器有任何写入操作多个线程可以同时对不同的容器做写入操作。不能指望任何STL实现来解决线程难题,必须手动做同步控制.《C...
OpenCV 中结构体IplImage 成员width,widthStep使用注意事项

OpenCV 中结构体IplImage 成员width,widthStep使用注意事项

OpenCV 中结构体IplImage 成员width,widthStep使用注意事项width 是指的图片宽度是多少个像素,而这里widthStep是指的图片中的每一行占用多少个字节.而且,widthStep会有字节对齐.当需要对每个像素进行操作的时候,这里最好用widthStep做行递增变换。比方说这里就是一个例子,明显,ptr_pixel_tmp是指向double类型的三通道图像,而ptr_pixel_img是unsigned char类型的三通道图...
iOS开发之Swift调用Objective-C代码

iOS开发之Swift调用Objective-C代码

iOS开发之Swift调用Objective-C代码,添加Bridging-Header头文件目录为什么要使用Swift调用Objective-C代码如何去调用Objective-C代码Xcode自动生成方案自定义方案本文写于2014.09.25最近iOS开发之新编程语言Swift在iOS开发圈内反响比较大,国内外都有很多教程或小示例。 虽然Swift这门语言仍然在不断的进化之中,而且变动还是比较大,苹果公司也不承诺目前所写代码会在将来兼容,但仍挡不住iO...
使用 Meteor 轻松开发实时网站

使用 Meteor 轻松开发实时网站

使用 Meteor 轻松开发实时网站快速实现几乎实时地响应用户交互的数据驱动应用程序由于 Web 无处不在,即便是很小的数据交付延迟都有可能刺激到用户。他们希望数据即时更新。不幸的是,Web 技术无法实现这种实时访问。尽管数据访问正快速标准化为一些对象关系映射 (Object-Relational Mapping, ORM) 模型,但实时通信没有任何类似的解决方案。本文将讨论 Meteor,这是一个旨在解决此问题的激动人心的新 JavaScript 框架。...
Linux线程-sysconf系统变量

Linux线程-sysconf系统变量

了解系统的线程资源限制是使得应用程序恰当地管理它们的关键。前面已经讨论了利用系统资源的示例。当设置线程的栈大小时,最小值为PTHREAD_MIN_STACK。栈大小不应当低于由pthread_attr_getstacksize( )返回的默认栈大小的最小值。每个进程的最大线程数决定了能够为每个进程创建的worker线程的上限。函数sysconf( )用于返回可配置系统限制或选项的当前值。系统中定义了同线程、进程和信号量相关的多个变量和常量。在表6-8中,列...
Log4j 日志详细用法

Log4j 日志详细用法

简单的说log4j就是帮助开发人员进行日志输出管理的API类库。它最重要的特点就可以配置文件灵活的设置日志信息的优先级、日志信息的输出目的地、日志信息的输出格式Log4j 除了可以记录程序运行日志信息外还有一重要的功能就是用来显示调试信息。程序员经常会遇到脱离java ide环境调试程序的情况,这时大多数人会选择使用System.out.println语句输出某个变量值的方法进行调试。这样会带来一个非常麻烦的问题:一旦哪天程序员决定不要显示这些System...
程序、进程、线程的联系与区别

程序、进程、线程的联系与区别

程序:一组指令的有效集合进程:程序的执行就是进程。也可以把进程看成一个独立的程序,在内存中有其对应的代码空间和数据空间,一个进程所拥有的数据和代码只属于自己。进程是资源分配的基本单位,也是调度运行的基本单位。线程:线程被人们认为是轻量级的进程,它是进程中单独运行的一路程序。换句话说,就是一个进程可以包含多个线程,并且至少有一个主线程,同时同一进程的线程共享该进程的代码和数据。于此同时,每一个线程又都有自己的堆栈,这些堆栈对于线程来说是私有的。线程是处理机调...
Handler的使用与原理

Handler的使用与原理

一、Handler的定义:主要接受子发送的数据, 并用此数据配合主线程更新.解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI,进行事件分发, 比如说, 你要是点击一个 Button ,Android会分发事件到Button上,来响应你的操作。 如果此时需要一个耗时的操作,例如: 联网读取数据,或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,,如果你放在主线程中的话,界面会出现假死...
最大连续乘积字串

最大连续乘积字串

首先解释一下字串和子序列的区别:子串:连续子序列:不连续问题描述:给定一个浮点数序列,取最大乘积连续子串的值。输入:-2.5,4,0,3,0.5,8,-1输出:3,0.5,8解决这个问题的思路两个:一、暴力二、动态规划第一种思路就不分析了。对于动态规划,假定给定的浮点数组为a[],考虑到可能有负数,可以用MaxA来表示以a结尾的最大的连续子串的乘积值,用MinA表示以a结尾的最小的子串的乘积值,动态规划函数如下:MaxA[i]=Max{a[i],MaxA[...
Java中23种常见的设计模式

Java中23种常见的设计模式

Java总共有23中常见的设计模式。它们主要可以分为3类,创建型,结构型以及行为型。大话设计模式(带目录完整版) PDF+源代码 http://www.linuxidc.com/Linux/2014-08/105152.htm创建型的设计模式有:一、Singleton,单例模式:保证一个类只有一个实例,并提供一个唯一的全局访问点。二、Abstract Factory,抽象工厂:提供一个创建一系列相关或者互相依赖的对象的接口,而无需指定它们的具体类。三、Fa...
冒泡排序及其改进

冒泡排序及其改进

冒泡排序作为最经典的算法,虽然对大数据无用武之地。但是对于少量的数据,我们用冒泡排序,在时间复杂度上也是可以接受的,又因为它实现起来比较简单,所以也经常的被人们使用。并且可以通过一些方法来改进最原始的冒泡排序,这种改进算法的思路也有可取之处。前一两天参加宜搜科技的笔试,就考到了冒泡排序。我当时就想写一个改进之后的算法。还是稍稍的考虑了一下的。所以现在整理一下,希望下次会更加的熟练。冒泡排序的思路非常的简单,即将相邻的两个数相比较,将较大的数向后移动。我们可...
冒泡排序的三种实现

冒泡排序的三种实现

冒泡排序是非常容易理解和实现,以从小到大排序举例:设数组长度为N。1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。3.N=N-1,如果N不为0就重复前面二步,否则排序完成。按照定义很容易写出代码://冒泡排序1void BubbleSort1(int a[], int n){ int i, j; for ...
直接插入排序的三种实现

直接插入排序的三种实现

直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。设数组为a[0…n-1]。1. 初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=12. 将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间。3. i++并重复第二步直到i==n-1。排序完成。下面给出严格...
希尔排序的实现

希尔排序的实现

希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率上比前两种方法有较大提高。...
直接选择排序及交换二个数据的正确实现

直接选择排序及交换二个数据的正确实现

直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接播放排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后。设数组为a[0…n-1]。1. 初始时,数组全为无序区为a[0..n-1]。令i=02. 在无序区a[i…n-1]中选取一个最小的元素,将其与a[i]交换。交换之后a[0…i]就形成了一个有序区。3. ...
<< 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 >>