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

首页 / 操作系统 / Linux

Linux静态库和动态库的编写和使用

Linux静态库和动态库的编写和使用

库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 1 静态库和动态库的区别 1.1. 静态函数库 (1)静态函数库的名字一般是lib[name].a (2)利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,它的优点是编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。这给它带来的缺点为如果静态函数库改变了,那么你的程序必须重新编译。 1.2. 动态函数库 (...
使用 Lua 编写一个 Nginx 认证模块

使用 Lua 编写一个 Nginx 认证模块

过去两天里,我解决了一个非常有趣的问题。我用一个nginx服务器作为代理,需要能够向其中添加一个认证层,使其能够使用外部的认证源(比如某个web应用)来进行验证,如果用户在外部认证源有账号,就可以在代理里认证通过。需求一览我考虑了几种解决方案,罗列如下:用一个简单的Python/Flask模块来做代理和验证。一个使用subrequests做验证的nginx模块(nginx目前可以做到这一点)使用Lua编写一个nginxren认证模块很显然,给整个系统添加额...
Servlet原理与生命周期

Servlet原理与生命周期

Servlet何时被实例化?何时又被销毁?·加载: 默认情况下,如果没有在web.xml中配置自动装入(load-on-startup),那么当客户端第一次请求Servlet时,web服务器 才对Servlet类加载到内存并进行实例化,如果配置了自动装入,那么在tomcat启动时就进行加载实例化。(一个周期内 只实例化一次,即服务器里只有一个该Servlet类的实例化对象)·初始化:Servlet被实例...
跨域Servlet调用Servlet的实现

跨域Servlet调用Servlet的实现

跨域Servlet调用Servlet的实现跨域后,Servlet容器之间彼此是未知的环境,也不能获取到对方的ServetContext。因此使用内部跳转和重定向(需要带请求参数)调用都是错误的,也是无效的。通过HttpClinet模拟发起请求,可以实现跨域Servlet调用Servlet。实现方法:在Servlet的service方法中创建httpclient对象,来发起第二次请求。将请求转发个另一个域的servlet。public void servic...
Java静态和动态代理学习笔记

Java静态和动态代理学习笔记

代理的概念:用一个角色来代替另一个角色完成某些特定的功能。(引用某大神对代理的理解的原话,个人感觉很贴切)。代理需要有三种角色:1、接口角色,2、代理对象角色(概念中的一个角色),3、被代理对象。(注意,代理对象和被代理对象必须实现相同的接口。个人理解,不懂对不对,请高手指正)静态代理比较好理解,说白了就是两个实现类A和B实现同一个接口,我们可以定义类A为代理类,而类B为被代理类。A类在实现接口的同时还新增了一些处理方法,而这些方法就是在对目标对象方法进行...
Java输出流在txt文件中的换行控制

Java输出流在txt文件中的换行控制

有时候需要将一段内容输出到txt文件,在程序中将内容字符串拼接好,包括 以及 等符号,然后利用java.io中的writer将字符串写到txt文件中,本以为很简单的一件事,结果打开txt文件一看,格式完全是乱的,txt根本就没有识别我在程序中写的 符号,所以没办法,只能变通一下:利用BufferedReader的readLine()方法进行换行读入,然后逐行writeOutputStream s = resp.getOutputStream()...
使用 Spring 进行单元测试

使用 Spring 进行单元测试

简介: 通过本文,您能够在较短的时间内掌握使用 Spring 单元测试框架测试基于 Spring 的应用程序的方法,这套方法主要涵盖如何使用 Spring 测试注释来进行常见的 Junit4 或者 TestNG 的单元测试,同时支持访问 Spring 的 beanFactory 和进行自动化的事务管理。概述单元测试和集成测试在我们的软件开发整个流程中占有举足轻重的地位,一方面,程序员通过编写单元测试来验证自己程序的有效性,另外一方面,管理者通过持续自动的执...
Hadoop实现AbstractJob简化Job设置

Hadoop实现AbstractJob简化Job设置

在Hadoop中编写一个job一般都是采用下面的方式:Job job=new Job();job.setXxx();...这样感觉代码很多,而且参数还不好控制。比如,我想对输入的参数进行控制,还要自己写一些控制解析之类的代码,如下:if(args.length!=2){ System.err.out("Usage<input> <output>")}而且上面只是大概的判断下,没有很精确的判断。有没有比较好的方法可以不用设置,而且减...
Java Matlab混合编程之返回值Struct类型

Java Matlab混合编程之返回值Struct类型

java matlab混合编程的时候当返回值是Struct类型(matlab中的返回类型)如何来取得(java中)其值?上网找,看到这个网页:http://www.mathworks.cn/cn/help/matlab/matlab_external/passing-data-to-a-java-method.html ,上面说Struct类型不支持;如下图:然后我就没办法了,但是获得的Object值应该是可以设置断点操作的吧,然后我就设置断点来看到到底是...
Mahout驾驭Hadoop之详解

Mahout驾驭Hadoop之详解

众所周知,Mahout是基于Hadoop分布式系统的,要想看懂Mahout的源码,首先得明白mahout是如何使用hadoop的!首先,在我的<<Hadoop运行原理详解>>一篇中,详细介绍了hadoop的运行机制,这里就不多说了!下面我就以Kmeans聚类算法为例,讲讲mahout如何利用hadoop实现数据挖掘算法并行化.如以下类图所示,该图描述了整个mahout实现Kmeans算法的架构图,首先KmeansCluster继承C...
Java中用JDBC调用Oracle存储过程和函数

Java中用JDBC调用Oracle存储过程和函数

Java中通过JDBC可以调用数据库提供的存储过程,Oracle中的存储过程分成2种:1.procedure: 没有返回值,但可以有多个输出参数,相当于返回值。2.function:有一个返回值,也可以有多个输出参数。Java中调用function的语法和调用procedure的不一样,调用procedure需要的特定语法为:{ call 存储过程名(参数1, 参数2,……) }在java中的写法是:con.prepareCal...
单片机C语言实现的采用DS18B20的温度检测装置

单片机C语言实现的采用DS18B20的温度检测装置

老师布置了一个课程设计题目:采用51单片机控制的DS18B20温度检测系统。大概花了我一个礼拜的时间,幸好我的C语言学得还可以,最后还是让我搞出来了,真是高兴,我是采用STC-52单片机和DS18B20数字温度传感器做的一个温度检测系统:实现的主要功能是:能够通过按键设置报警温度,报警温度分为上限温度和下限温度,就是说当温度超过上限温度和下限温度时蜂鸣器就会报警,同时流水灯开始流动。并且由于温度的上下限是写入到DS18B20的ROM中,所以断电之后还是可以...
C++数据结构之二叉树

C++数据结构之二叉树

之前打算编算法类的程序,但是搞了几次英雄会后,觉得作为一个还在学习阶段的学生,实在是太浪费时间了,并不是没意义,而是我的基础还不牢固啊。所以转变了思路,这个学期打算分别用C++、Python、Java实现数据结构。下个学期再做算法的打算吧。不过Java没学过,可能要一点时间了。小弟喜欢编程,但是学习高级应用觉得时间长了就都忘了,至今在探索大学阶段该怎么规划,希望大神指教。用C++实现的二叉树,有递归和非递归两种操作方式,其中非递归只实现了中序遍历,和求树的...
Linux多线程编程时如何查看一个进程中的某个线程是否存活

Linux多线程编程时如何查看一个进程中的某个线程是否存活

pthread_kill:别被名字吓到,pthread_kill可不是kill,而是向线程发送signal。还记得signal吗,大部分signal的默认动作是终止进程的运行,所以,我们才要用signal()去抓信号并加上处理函数。int pthread_kill(pthread_t thread, int sig);向指定ID的线程发送sig信号,如果线程代码内不做处理,则按照信号默认的行为影响整个进程,也就是说,如果你给一个线程发送了SIGQUIT,但...
对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服务。 但是这些可能的疑点都很正常,一点问题都没有。你使用最顺手的性能分析工具分析,发现瓶颈在于一个小函数,这个函数的作用是将一个长的字符串链表写到一文件中。你对这个函数做了如下优化:将所有的小字符串连接成一个长的字符串,执行一次文件写入操作,避免成千上万次的小字符串写文件操作。这个优化只做对了一半。你先测试大字符串写文件的速度,发现快如闪电。...
<< 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 >>