源码

linux php源码包 安装openssl 和curl 扩展

杀马特。学长 韩版系。学妹 提交于 2019-12-07 21:45:02
1. 安装openssl 解压php的源码包 tar zxvf php-5.3.8.tar.gz cd soft/php-5.3.8/ext/openssl mv config0.m4 config.m4 否则报错:找不到config.m4 /opt/local/php-5.3.8/bin/phpize ./configure --with-openssl --with-php-config=/opt/local/php-5.3.8/bin/php-config make make test make install 编辑php.ini文件增加下面的内容 [openssl] extension_dir="/opt/local/php-5.3.8/lib/php/extensions/no-debug-non-zts-20090626/" extension="openssl.so" 2.安装curl 扩展 cd soft/php-5.3.8/ext/curl /opt/local/php-5.3.8/bin/phpize ./configure --with-curl --with-php-config=/opt/local/php-5.3.8/bin/php-config make make test make install 编辑php.ini文件增加下面的内容 [curl]

Linux 内核源码中likely()和unlikely()释疑

吃可爱长大的小学妹 提交于 2019-12-07 20:52:45
ikely()与unlikely()在2.6内核中,随处可见,那为什么要用它们?它们之间有什么区别呢? 首先明确: if (likely(value))等价于if (value) if (likely(a>b)) { fun1(); if (unlikely(value))等价于if (value) 也就是说likely()和unlikely()从阅读和理解的角度是一样的。 这两个宏在内核中定义如下: <linux/compiler> #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) 这里的__built_expect()函数是gcc(version >= 2.96)的内建函数,提供给程序员使用的,目的是将"分支转移"的信 息提供给编译器,这样编译器对代码进行优化,以减少指令跳转带来的性能下降。 __buildin_expect((x), 1)表示x的值为真的可能性更大。 __buildin_expect((x), 0)表示x的值为假的可能性更大。 也就是说,使用likely(),执行if后面的语句的机会更大,使用unlikely(),执行else后面的语句机会更大一些。通过这种 方式,编译器在编译过程中,会将可能性更大的代码紧跟着后面的代码

LLVM每日谈之十二 LLVM的源码分析之Pass相关

…衆ロ難τιáo~ 提交于 2019-12-07 20:07:08
作者: snsn1984 题记:在学习LLVM的过程中,要想学的更加深入,掌握更多的技能,LLVM的源码是必须要读的,但是在这么多的源码中,从哪里下手?很容易让人找不到头脑,本文这里就先拿出几个Pass相关的源码文件进行分析。 1.Pass.h 源码中的位置:llvm源码/include/llvm/Pass.h 网络上位置: http://llvm.org/docs/doxygen/html/Pass_8h_source.html 此头文件的内容:此头文件主要对和Pass相关的几个类进行了声明。主要有Pass、ModulePass、ImmutablePass、 FunctionPass、BasicBlockPass这几个类。之前在关于Pass的博文里也介绍过一些和Pass相关的知识,而这几个类正是 LLVM的Pass框架所最常用的几个类,在Pass的编写或者修改的工作中,基本上都是在和这几个类打交道,所以对于这几个类要想有一个深的了解,这个 头文件是必须读的。 ModulePass、ImmutablePass、FunctionPass、BasicBlockPass这几个类都是Pass的子类,也 是在写Pass的时候最容易直接用到的类。自己编写LLVM的Pass的时候,使用的最多是FunctionPass和ModulePass这两个。而这 两个之中

Spark2.3 RDD之flatMap源码解析

旧街凉风 提交于 2019-12-07 19:32:26
Spark flatMap 源码: /** * Return a new RDD by first applying a function to all elements of this * RDD, and then flattening the results. */ def flatMap[U: ClassTag](f: T => TraversableOnce[U]): RDD[U] = withScope { val cleanF = sc.clean(f) new MapPartitionsRDD[U, T](this, (context, pid, iter) => iter.flatMap(cleanF)) } Scala flatMap 源码: /** Creates a new iterator by applying a function to all values produced by this iterator * and concatenating the results. * * @param f the function to apply on each element. * @return the iterator resulting from applying the given iterator-valued function * `f`

Tomcat源码学习(六)--Tomcat_7.0.70 生命周期管理

给你一囗甜甜゛ 提交于 2019-12-07 18:53:59
想必大家都知道,从server.xml文件解析出来的各个对象都是容器,比如:Server、Service、Connector等。这些容器都具有新建、初始化完成、启动、停止、失败、销毁等状态。Tomcat的实现机制是通过实现org.apache.catalina.Lifecycle接口来管理。 Tomcat--Lifecycle接口 定义了容器生命周期、容器状态转换及容器状态迁移事件的监听器注册和移除等主要接口。代码清单: public interface Lifecycle { public static final String BEFORE_INIT_EVENT = "before_init"; public static final String AFTER_INIT_EVENT = "after_init"; public static final String START_EVENT = "start"; public static final String BEFORE_START_EVENT = "before_start"; public static final String AFTER_START_EVENT = "after_start"; public static final String STOP_EVENT = "stop"; public

ubuntu下编译webkit

泪湿孤枕 提交于 2019-12-07 17:36:17
1. 下载webkit源码,由于ubuntu版本为10.04,所以下载的webkit版本也比较靠前。 2. 解压到文件夹下,运行/WebKit-r58572/WebKitTools/Scripts/build-webkit --gtk 3. 遇到错误: 1). Warning: not running gtk-docize. automake: cannot open < gtk-doc.make: No such file or directory Failed to setup build environment using 'autotools'! 解决方法: sudo apt-get install gtk-doc-tools 2). checking which Unicode backend to use... icu checking for icu-config... no configure: error: Cannot find icu-config. The ICU library is needed. Failed to setup build environment using 'autotools'! 解决方法: sudo apt-get install libicu-dev 3). checking for ENCHANT... configure:

详解discuz源码

不想你离开。 提交于 2019-12-07 17:17:24
打开代码: 敲击:admin.php define('IN_ADMINCP', TRUE); //定义常量IN_ADMINCP为true 这样在后面的每个页面都会判断 if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) { exit('Access Denied'); } //防止外面直接访问后台文件,必须通过admin.php包含才可以访问其他文件,IN_DISCUZ在/sorce/class/class_core.php里定义的常量,后面几行马上包含该文件 define('NOROBOT', TRUE); //定义常量NOROBOT为true,用于阻止搜索引擎爬虫抓取。 define('ADMINSCRIPT', basename(__FILE__));//admin.php //__FILE__是获取文件磁盘位置详细路径,比如:D:\DedeAMPZ\web2013\discuz_video\upload\admin.php //basename(__FILE__)就是取文件名 也就是admin.php define('CURSCRIPT', 'admin'); //定义常量CURSCRIPT为admin,当前脚本为admin define('HOOKTYPE', 'hookscript'); //定义常量HOOKTYPE

深入JDK源码_Index

故事扮演 提交于 2019-12-07 17:16:13
深入JDK源码 深入JDK源码之定时操作Timer类和TimerTask类实现 深入JDK源码之Observer接口和Observable类实现观察者模式 深入JDK源码之集合类图 深入JDK源码之ArrayList类 深入JDK源码之LinkedList类 深入JDK源码之HashMap类 深入JDK源码之Arrays类中的排序查找算法 深入JDK源码之ThreadLocal类 来源: oschina 链接: https://my.oschina.net/u/120166/blog/664883

android手机卫士、3D指南针、动画精选、仿bilibli客户端、身份证银行卡识别等源码

荒凉一梦 提交于 2019-12-07 17:16:01
Android精选源码 android身份证、银行卡号扫描源码 android仿bilibili客户端 android一款3D 指南针 源码 android手机卫士app源码 android提醒应用,Material 风格,可以设置重复提醒 android带箭头指示选中位置 RecyclerView实现的广告图轮播,消息轮播,简单易用 android商品条形码、二维码搜索源码 android全局调整字号源码 android全球动画精选源码 Android优质博客 基于RecyclerView addView时思想改变子View宽高时局部刷新界面 忽然发现很多新技术都没弄过,RecyclerView居然也没用过,于是乎就学习了一下RecyclerView的用法顺带大概看了一下RecyclerView源码,在看到RecyclerView 滑动时调用LayoutManager类的layoutChunk函数addView的时候,我好奇的看了一下,这货为什么滑动中add... 阅读原文 Android性能优化 应用层的性能优化通常可以从以下几个方面考虑1.界面布局优化(merge ,include ,ViewStub,减少布局嵌套层次);merge可进行多余嵌套层次的移除处理,include复用同一布局在多个界面中 ,ViewStub可进行隐藏布局的不加载。2

从源码角度分析Android中的Binder机制的前因后果

梦想与她 提交于 2019-12-07 16:28:28
为什么在Android中使用binder通信机制? 众所周知linux中的进程通信有很多种方式,比如说管道、消息队列、socket机制等。socket我们再熟悉不过了,然而其作为一款通用的接口,通信开销大,数据传输效率低,主要用在跨网络间的进程间通信以及在本地的低速通信。消息队列和管道都是采用存储-转发模式,效率上面也有点低,因为这种模式的数据传输要经过两次的内存拷贝,先从发送方的缓存区拷贝到内核开辟的缓存区中,然后再从内核拷贝到接受方的缓存区。传统的ipc没有任何的安全措施,两个进程之间没有办法鉴别对方的身份,而在Android中,每个应用在安装后都会被分配一个uid,所以这个身份也有了保障,也更安全。为了保障安全和高效率,Android提供了一套全新的ipc通信机制也就是binder。 binder通信模型 一个进程间通信可以简单理解成为Client-server模式,binder机制在Android系统中的一个模型如下: Client获得到server端的proxy对象。 Client通过调用proxy对象的方法向server发送请求。 proxy对象通过binder设备节点,把Client请求信息发送到linux内核空间,由binder驱动获取并发送到服务进程。 服务进程处理Client请求,通过linux内核的binder驱动把结果返回给proxy对象。