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

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

首页 / 操作系统 / Linux

对Linux中多线程编程中pthread_join的理解

对Linux中多线程编程中pthread_join的理解

在Linux中,默认情况下是在一个线程被创建后,必须使用此函数对创建的线程进行资源回收,但是可以设置Threads attributes来设置当一个线程结束时,直接回收此线程所占用的系统资源,详细资料查看Threads attributes。其实在Linux中,新建的线程并不是在原先的进程中,而是系统通过一个系统调用clone()。该系统copy了一个和原先进程完全一样的进程,并在这个进程中执行线程函数。不过这个copy过程和fork不一样。 copy后的...
Linux网络编程中的pol和epolll函数总结

Linux网络编程中的pol和epolll函数总结

poll()函数:这个函数是某些Unix系统提供的用于执行与select()函数同等功能的函数,下面是这个函数的声明:#include <poll.h>int poll(struct pollfd fds[], nfds_t nfds, int timeout);参数说明:fds:是一个struct pollfd结构类型的数组,用于存放需要检测其状态的Socket描述符;每当调用这个函数之后,系统不会清空这个数组,操作起来比较方便;特别是对于s...
C/C++中char* 与char []定义的区别

C/C++中char* 与char []定义的区别

C/C++初学者很可能会以为这两个是一样的,其实如果不需要去修改字符串的话,那它们的效果的确是一样的。那它们的区别到底在哪儿呢?char* s1="abc"; s1是一个指针,这个指针可以被修改,它可以指向新的地址。现在它指向的是字符串常量“abc”,字符串常量存储在constant section里,不可被修改。char s2[10]="abc"; s2是数组指针,指针指向的位置就是数组的第一个元素所在的位置,一经分配是不能被修改...
使用 C++ 的 StringBuilder 提升 4350% 的性能

使用 C++ 的 StringBuilder 提升 4350% 的性能

介绍经常出现客户端打电话抱怨说:你们的程序慢如蜗牛。你开始检查可能的疑点:文件IO,数据库访问速度,甚至查看web服务。 但是这些可能的疑点都很正常,一点问题都没有。你使用最顺手的性能分析工具分析,发现瓶颈在于一个小函数,这个函数的作用是将一个长的字符串链表写到一文件中。你对这个函数做了如下优化:将所有的小字符串连接成一个长的字符串,执行一次文件写入操作,避免成千上万次的小字符串写文件操作。这个优化只做对了一半。你先测试大字符串写文件的速度,发现快如闪电。...
Linux下可执行程序调试信息的分离及release程序的调试

Linux下可执行程序调试信息的分离及release程序的调试

前两天在群里看到在讨论如何把debug版中的符号表加到release版本中,觉得这个非常有用,所以学习一下。使用的工具是objcopy。如果要生成单独的调试信息文件,命令如下:objcopy –only-keep-debug foo foo.dbg如果要去除调试信息(还可以使用strip命令),命令如下:objcopy --only-keep-debug foo foo.dbg如果要添加调试信息文件链接,命令如下:objcopy --add-g...
探究Linux下参数传递及查看和修改方法

探究Linux下参数传递及查看和修改方法

X86-64下有16个64位寄存器,其中%rdi、%rsi、%rdx,%rcx、%r8、%r9用作传递函数参数,分别对应第1个参数、第2个参数直到第6个参数,如下图所示(图片来自网络):如果函数的参数个数超过6个,则超过的参数直接使用栈来传递。在被调用函数执行前,会先将寄存器中的参数压入堆栈,之后的访问会通过栈寄存器加上偏移位置来访问。下面我们结合程序及其反汇编的结果来看一看。相关阅读:MIPS架构UBOOT和Linux参数传递 http://www.li...
Android开发切换host应用

Android开发切换host应用

由于在工作过程中常需要切换手机的host来测试不同服务器上的接口,所以想到需要这么个软件。SwitchHost在PC上是一款很好用的修改Host的软件,手机上也需要这么一款App(当然手机需要已经ROOT),于是就尝试做这么个手机应用SwitchHost,主要的功能是要能在不同的Host方案之间进行切换。代码在git上:https://github.com/jianfengye/Android_Works/tree/master/SwitchHost里面的...
我理解的Android加载器

我理解的Android加载器

Android的加载器(loader)是从Android 3.0开始出来的东西。要理解这里需要先理解为什么会出现加载器(也有地方把它说成是装载器)呢?如果没有加载器...首先Activity是我们的前端页面展现,数据库是我们的数据持久化地址,那么正常的逻辑就是在展示页面的渲染页面的阶段进行数据库查询。拿到数据以后才展示页面。但是这个逻辑有一些缺点:首先是查询数据的逻辑放在了UI生成的同个线程中,这个就意味着在查询数据的时候,UI页面生成的工作被阻塞住了。U...
Android基础总结篇之一:Activity生命周期

Android基础总结篇之一:Activity生命周期

近来回顾了一下关于Activity的生命周期,参看了相关书籍和官方文档,也有了不小的收获,对于以前的认知有了很大程度上的改善,在这里和大家分享一下。熟悉javaEE的朋友们都了解servlet技术,我们想要实现一个自己的servlet,需要继承相应的基类,重写它的方法,这些方法会在合适的时间被servlet容器调用。其实Android中的Activity运行机制跟servlet有些相似之处,Android系统相当于servlet容器,Activity相当于...
Android程序ToDoList

Android程序ToDoList

本文的目的是创建一个简单的ToDoList列表。这个应用的功能是记录我的代办事项,简单到不需要本地存储,所有的代办事项都只是存储在内存中,就是只有程序打开的时候可以增加查看代办事项,当程序关闭的时候,代办事项就清空了。代码在:https://github.com/jianfengye/Android_Works/tree/master/ToDoList1 流程流程和Windows Form的开发一样:首先是界面设计,res/layout/main.xml ...
Android程序ToDoList增加配置项页面

Android程序ToDoList增加配置项页面

本文要做的事情就是在前面做的简单的ToDoList程序上增加一个配置项页面(Reference)。这个Reference页面也非常简单: 这个ToDoList现在有两个页面,主页面能填写待办事项,然后manu键弹出可以跳转到Reference页面,在Reference页面只有一个checkbox,来给用户确认是否要本地保存(具体的本地存储的功能没有具体实现),Reference页面还有两个按钮,保存和返回。点击保存按钮,程序会存储用户是否已经选定了本地保存...
<< 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 >>