源码

源码编译搭建LAMP

有些话、适合烂在心里 提交于 2020-03-15 08:58:30
环境版本信息: RHEL 5.3 Apache / 2.4.16 PHP / 5.4.45 mysql-5.5.45 源代码编译 安装方式 1: configure 配置 以及定制我们的软件包 2: make 把源代码包中的源代码 编译成 链接文件 目标文件 .0 Object 3: make install 安装到 我们configure制定的目录中去 一、关闭有可能会影响到访问的一些限制的服务: 1、暂时清空防火墙: iptables -F 2、关闭selinux: vim /etc/selinux/config SELINUX=disabled 或: setenforce 0 3、关闭:NetworkManager service NetworkManager stop 主配置文件, 服务器的启动脚本 记得给+x [apache 安装配置] 1、下载地址 http://apache.fayea.com//httpd/httpd-2.4.16.tar.gz (linux端下载地址) http://httpd.apache.org/download.cgi (官网) httpd-2.4.16.tar.gz 2、配置环境 安装:gcc gcc-c++ openssl 3、上传源码包 一般上传到OPT目录: cd /opt/apache/httpd-2.4.16 rz –aeb

Linux软件安装管理---源码安装

半世苍凉 提交于 2020-03-15 07:27:25
在Linux平台下,软件包的类型可以划分为两类:源码包、二进制包。 源码包: 即程序软件的源代码(一般也叫Tarball,即将软件的源码以tar打包后再压缩的资源包)。 二进制包: 如 Red Hat发行版的.rpm包,Debian发行版的.deb包。 源码安装的主要步骤 : 1)获取源代码文件:一般为压缩包,并解压。 2)执行config: 一般在源代码目录中有install 或 readme等说明。 运行./config --prefix=PREFIX或者 ./config, config是一个可执行文件,其作用是检测操作系统,并生成makefile文件。其检测的内容有:系统中是否有合适的编译器来编译本软件,是否已经存在本软件所需要的函数库或其他相关软件,操作系统版本是否符合要求等。其中,PREFIX为安装位置。 曾经自己编译qt源码时,运行config时,其先生成了qmake,然后qmke根据.pro文件生成makefile文件。 3)执行make命令。 make根据makefile中指定的规则来将源代码编译成可执行文件。但是,这些可执行文件被放在当前目录下,不会安装到预定的安装目录中。 4)执行make install make会根据makefile中关于install的选项,将上一步编译出来的东西(?)搞到指定的安装目录中。 -----------------------

Redis源码阅读(一)事件机制

Deadly 提交于 2020-03-15 04:24:54
Redis 源码阅读(一)事件机制   Redis 作为一款 NoSQL 非关系内存数据库,具有很高的读写性能,且原生支持的数据类型丰富,被广泛的作为缓存、分布式数据库、消息队列等应用。此外 Redis 还有许多高可用特性,包括数据持久化,主从模式备份等等,可以满足对数据完整性有一定要求的场景。   Redis 的源码结构简单清晰,有大量材料可以参阅;通过阅读 Redis 源码,掌握一些常用技术在 Redis 中的实现,相信会对个人编程水平有很大帮助。这里记录下我阅读 Redis 源码的心得。从我自己比较关心的几个技术点出发,每个技术点都是来自个人使用 Redis 过程中产生的问题。这里也参考了黄建宏老师的《 Redis 设计与实现》部分内容,不得不说参考这本书再结合源码注释,看起来绝对事半功倍。   当初选用 Redis 的时候,很大程度上是由于 Redis 的并发性能很高,可以支持大量并发请求。那 Redis 是如何支持高并发请求的呢?这里就引入了第一个技术点,事件处理机制。在 Redis 中使用了单线程的 Reactor 模式,属于 I/O 多路复用的一种常见实现模式。这里简单介绍下 Reactor 模式。 1. Reactor 模式 从网上切一个类图,简单描述一下Reactor模式的主体结构 基本概念: Handle : I/O 操作的基本文件句柄,在 linux 下就是

Java 基础 String 的详解

你离开我真会死。 提交于 2020-03-14 20:50:27
写在前面 String 算是 Java 源码中先要学习的,今天就从源码的角度来重新认识一下 1.存储结构 看主流的 JDK 版本 1.8 ,String 内部实际存储结构为 char 数组,源码如下: public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char value[]; /** Cache the hash code for the string */ private int hash; // Default to 0 //其他内容...... 2.常用方法 2.1.构造方法 其中 StringBuffer 和 StringBuilder 为参数的构造函数用的比较少,但也要知道 /** * String 为参数的构造方法 * @param original * A {@code String} */ public String(String original) { this.value = original.value; this.hash = original.hash; } /** * char[]

libevent源码剖析

Deadly 提交于 2020-03-14 14:33:40
安装与使用   libevent安装:下载地址: http://libevent.org/ 解压文件:tar -zxvf libevent- 2.1 .8-stable.tar.gz 解压后进入目录,进行配置,把库安装到/usr目录下: ./configure -- prefix= /usr 编译安装:sudo make,sudo make install   libevent将I/O事件、信号事件、定时事件三种事件进行了同一事件源,将所有的就绪事件,放入到激活链表中;然后对激活链表中的事件,调用事件的回调函数执行事件处理 一、event_base   The event_base lies at the center of Libevent; every application will have one.对应的为Reactor实例,使用 libevent 函数之前需要分配一个或者多个 event_base 结构体。每个event_base 结构体持有一个事件集合,可以检测以 确定哪个事件是激活的(相当于epoll红黑树的树根)。   因为不是所有的安插在event_base的事件在调用fork()之后都可以正常工作,所以,如果在使用fork()或者其他相关系统调用启动一个新的进程之后,要想在子进程中使用base变量,但是又想让该base变量是一个全新的没有安插事件的变量

Libevent源码分析—event_init()

拜拜、爱过 提交于 2020-03-14 13:43:53
下面开始看初始化event_base结构的相关函数。相关源码位于 event.c event_init() 首先调用event_init()初始化event_base结构体 struct event_base * event_init(void) { struct event_base *base = event_base_new(); //event_init()调用event_base_new() if (base != NULL) current_base = base; return (base); } 我们发现event_init()工作量很少,只是调用event_base_new()函数,所以真正初始化event_base的工作是在event_base_new()函数内完成。 event_base_new() struct event_base * event_base_new(void) //初始化libevent的event_base { int i; struct event_base *base; if ((base = calloc(1, sizeof(struct event_base))) == NULL) //在堆上分配内存存储event_base,所有字段初始化为0 event_err(1, "%s: calloc", __func__); event

PHP 的源码编译安装

≯℡__Kan透↙ 提交于 2020-03-13 23:55:59
PHP 架构和安装扩展的几种方式 PHP 三大模块: SAPI:接受并处理请求。 Zend Engine:PHP 的核心,负责分析 PHP 代码并转为 opcode,然后在 Zend VM 虚拟机上执行。 PHP 功能函数及扩展层:实现各种功能,例如 curl 通信、连接 MySQL 等。 PHP 中,有以下几种方式添加扩展: 把扩展编译进 PHP 通过 pecl 命令或 Linux 发行版自带的 yum、apt-get 等命令安装,动态加载(Linux 下是 *.so 文件,Windows 下是 *.dll 文件) 用 phpize 从源码编译共享 PECL 扩展库 相比通过 yum install 或 apt-get 等各大 Linux 发行版自带的安装方向,源码编译安装略显复杂,但是灵活性也更高,比如要安装 PCNTL 等扩展,就只能通过源码编译安装。 注意:源码编译安装时,只会安装指定的扩展,而好多扩展是默认不安装的。对于常用的数据库驱动、OpenSSL、GD 库等都需要指定。如果安装后发现遗漏,可以重新编译,加上相应的参数可得到驱动程序(Linux 下是 *.so 文件),然后复制到 PHP 的扩展目录(一般是 /usr/local/php/include/php/ext)下,并在 php.ini 配置文件中开启扩展既可以。 通过 yum list php72w-*

源码分析系列:1. HashSet

血红的双手。 提交于 2020-03-13 23:44:54
package java.util; import java.io.InvalidObjectException; import sun.misc.SharedSecrets; public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable { static final long serialVersionUID = -5024744406713321676L; private transient HashMap<E,Object> map; // Dummy value to associate with an Object in the backing Map private static final Object PRESENT = new Object(); public HashSet() { map = new HashMap<>(); } public HashSet(Collection<? extends E> c) { map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16)); addAll(c); } public HashSet(int

IFreeSql 注入与 AspectCore 解决冲突的说明

一个人想着一个人 提交于 2020-03-13 21:17:18
FreeSql 以 MIT 开源协议托管于 github: https://github.com/2881099/FreeSql IFreeSql 作为 ORM 顶级对象,没有设置 NameSpace(命名空间),作者的用意是不想使用者在 .cs 文件顶部,多出一堆不必要的 using FreeSql.xxx。 最近有同学尝试用 AspectCore 翻车了。 经过定位以及源码调试发现,AspectCore 默认不支持 Ioc 容器内注入没有 NameSpace(命名空间)的类型。这个问题已经向作者反馈,但是作者并不想改,他的观点:没有 NameSpace(命名空间)是使用者的问题。 这种情况兼容一下其实只判断加个 if 判断即可。 好吧,绕道而行: 方法一:自己定义带 namespace 的类注入,包一层再注入使用。 namespace xxx { public class MyClass { public IFreeSql orm {get;set;} } } 方法二:修改 AspectCore 源码 参考资料 《新人学习指引》 | 《Select》 | 《Update》 | 《Insert》 | 《Delete》 《表达式函数》 | 《CodeFirst》 | 《DbFirst》 | 《BaseEntity》 《Repository》 | 《UnitOfWork》 |

php源码建博客2--实现单入口MVC结构

亡梦爱人 提交于 2020-03-13 05:49:43
主要: MVC目录结构 数据库工具类制作 创建公共模型类和公共控制器类 --------------文件结构:-------------------------------------- blog├─index.php 入口文件├─Model 模型│ └─UserModel.class.php 用户模型类├─View 视图│ └─login.html 登录表单页面├─Controller 控制器│ └─UserController.class.php 用户控制器├─Frame 公共使用的类│ ├─BaseModel.class.php 数据库连接类│ ├─BaseController.class.php 控制器公共操作(设置编码,信息跳转)│ └─Db.class.php 数据库操作工具类└─Public 静态公共文件(js,css,images) ├─js/ js文件 ├─css/ css样式文件 └─images img图片 ----------------------------------------------------------------- MVC目录结构   1)准备: 创建分支 1 $ git checkout master 2 $ git checkout -b "mvc-dbtools-base"   2) 创建目录结构:       MVC目录: