<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[aweii的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/aweii</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; aweii]]></copyright><item><title><![CDATA[关于“给PHP源代码加密“的代码分析]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/122396058</link><guid>https://blog.youkuaiyun.com/aweii/article/details/122396058</guid><author>aweii</author><pubDate>Sun, 09 Jan 2022 17:23:46 +0800</pubDate><description><![CDATA[/*
时间：2022-1-9
作者：aweii
内容：关于"给PHP源代码加密"的代码分析[原创]
*/
网上看到一则"给PHP源代码加密"的代码，饶有兴趣研究了下（https://www.jb51.net/article/134506.htm）。代码如下：   


&lt;?php

function RandAbc($length = "") { // 返回随机字符串
 $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopq...]]></description><category></category></item><item><title><![CDATA[2021-06-21 php偏随机数实现概率抽奖的实例]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/118092452</link><guid>https://blog.youkuaiyun.com/aweii/article/details/118092452</guid><author>aweii</author><pubDate>Mon, 21 Jun 2021 18:45:05 +0800</pubDate><description><![CDATA[偏随机数是使随机数范围偏向于权重大的范围。
比如随机抽奖的概率规定如下：
一等奖概率10%，二等奖概率20%，三等奖概率30%，四等奖概率40%。
要达到此目的，编制抽奖程序如下：

/////////偏随机数实现概率抽奖
$lottery=["一等奖"=&gt;10,"二等奖"=&gt;20,"三等奖"=&gt;20,"四等奖"=&gt;40];

//生成权重数组
function rand_weighted($numbers){
  $total=0;
  $weight=[];
  fo...]]></description><category></category></item><item><title><![CDATA[《PHP与MySQL程序设计(第四版)》中第73页4.2.6节分期还贷计算器数学原理分析]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/107071390</link><guid>https://blog.youkuaiyun.com/aweii/article/details/107071390</guid><author>aweii</author><pubDate>Wed, 01 Jul 2020 20:27:30 +0800</pubDate><description><![CDATA[-----------------------------《PHP与MySQL程序设计(第四版)》中第73页4.2.6节分期还贷计算器数学原理分析。
《PHP与MySQL程序设计(第四版)》中73页4.2.6节，代码清单4-1是还贷计算器函数amortizationTable，代码如下。
其使用的是等额本息分期还款模型。要理解这段代码，关键是理解月还款额b的计算公式背后的数学原理。
设本金a，还款月数n，月利率r,每月还款b。还款计算如下：
首月利息a*r,还款后，余额a1=a(1+r)-b;次月利息a1*]]></description><category></category></item><item><title><![CDATA[Linux内核2.4.18创建硬链接的系统调用sys_link]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/69364820</link><guid>https://blog.youkuaiyun.com/aweii/article/details/69364820</guid><author>aweii</author><pubDate>Wed, 05 Apr 2017 22:27:16 +0800</pubDate><description><![CDATA[1、磁盘目录项结构
/*
 * The new version of the directory entry.  Since EXT2 structures are
 * stored in intel byte order, and the name_len field could never be
 * bigger than 255 chars, it's safe to recla]]></description><category></category></item><item><title><![CDATA[两种文件写操作的页缓存数据刷出操作和函数调用路径分析]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/69061345</link><guid>https://blog.youkuaiyun.com/aweii/article/details/69061345</guid><author>aweii</author><pubDate>Tue, 04 Apr 2017 13:06:31 +0800</pubDate><description><![CDATA[一、内存映射文件的写操作(MAP_SHARED模式)：
1、写内存时按以下流程标记页为脏：pte_mkdirty(pte),swap_out->……->try_to_swap_out时set_page_dirty(page)
2、文件映射内存同步到磁盘（调用sys_msync）
(1)sys_msync->msync_interval:调用filemap_sync、filemap_fdata]]></description><category></category></item><item><title><![CDATA[Linux内核PROC文件系统的初始化和主要函数分析]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/68948712</link><guid>https://blog.youkuaiyun.com/aweii/article/details/68948712</guid><author>aweii</author><pubDate>Sat, 01 Apr 2017 22:57:18 +0800</pubDate><description><![CDATA[简要介绍了linux2.4.0内核proc文件系统的初始化和部分函数代码。]]></description><category></category></item><item><title><![CDATA[C语言标准库函数getenv的实现]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/52494708</link><guid>https://blog.youkuaiyun.com/aweii/article/details/52494708</guid><author>aweii</author><pubDate>Sat, 10 Sep 2016 14:02:57 +0800</pubDate><description><![CDATA[C语言标准库函数getenv可获取环境参数（根据参数名称），
函数声明：char* getenv(char*name);


其实现如下：


---------------glibc-1.09.1/sysdeps/generic/getenv.c
/* Return the value of the environment variable NAME.  */
char *
DE]]></description><category></category></item><item><title><![CDATA[测试]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/51924947</link><guid>https://blog.youkuaiyun.com/aweii/article/details/51924947</guid><author>aweii</author><pubDate>Sat, 16 Jul 2016 16:16:20 +0800</pubDate><description><![CDATA[//test1]]></description><category></category></item><item><title><![CDATA[上楼梯问题的解法]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/47910157</link><guid>https://blog.youkuaiyun.com/aweii/article/details/47910157</guid><author>aweii</author><pubDate>Sun, 23 Aug 2015 20:52:15 +0800</pubDate><description><![CDATA[/*
  问题：有20级楼梯，每次只能上一级或两级，请问有几种上法。（《少年班》中老师问大法的一个问题，大法通过神奇的心算[Fibonacci数列]得出10946）
  本问题的本质及求解斐波那契数列的第n项。常见的计算机算法有递归和线性规划法。当n较大时，用法二更好。
  递推公式为：F(n)=F(n-1)+F(n-2)，其中F(1)=1,F(2)=2。


  2015-8-23]]></description><category></category></item><item><title><![CDATA[VirtualBox虚拟机中运行Android]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/17967963</link><guid>https://blog.youkuaiyun.com/aweii/article/details/17967963</guid><author>aweii</author><pubDate>Tue, 07 Jan 2014 20:20:17 +0800</pubDate><description><![CDATA[在PC上，运行ADB模拟器速度很慢，可以在VirtualBox中运行x86版的android虚拟机解决这个问题，然后通过虚拟机实现系统调试功能。步骤如下：
1、下载android-x86,
安装光盘映像网址：http://www.android-x86.org/download
现成的虚拟机映像下载网址：http://dl.iplaysoft.com/files/1677.html#down]]></description><category></category></item><item><title><![CDATA[Android源代码下载]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/17882031</link><guid>https://blog.youkuaiyun.com/aweii/article/details/17882031</guid><author>aweii</author><pubDate>Sun, 05 Jan 2014 12:56:38 +0800</pubDate><description><![CDATA[以下操作在VirtualBox中的Fedora-17虚拟机上进行，工作目录为/mnt/disk2/source/android/2.2/
1、 下载python脚本repo
#curl"http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo"> ./repo
#chmod 777 ./repo
成功！
标准的地址不可用：curl]]></description><category></category></item><item><title><![CDATA[VirtualBox虚拟机下Fedora17与windows宿主机共享文件夹的设置]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/17754721</link><guid>https://blog.youkuaiyun.com/aweii/article/details/17754721</guid><author>aweii</author><pubDate>Thu, 02 Jan 2014 13:21:05 +0800</pubDate><description><![CDATA[VirtualBox虚拟机下Fedora17与windows宿主机共享文件夹的设置
  笔者以VirtualBox虚拟机安装了Fedora17操作系统，宿主机操作系统是win2003,尝试着在两者之间共享文件夹。以下是设置步骤：
1、         windows下建立一个目录N:\temp\作为共享文件夹用。Vbox界面上，选中虚拟机Fedora17后，
单击右侧的共享文件夹，出现设置窗]]></description><category></category></item><item><title><![CDATA[2.6.11内核CPU频率(khz)的计算]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/8683007</link><guid>https://blog.youkuaiyun.com/aweii/article/details/8683007</guid><author>aweii</author><pubDate>Sun, 17 Mar 2013 11:07:32 +0800</pubDate><description><![CDATA[CPU频率的计算使用了两个函数init_cpu_khz()和calibrate_tsc()
 
 
----------------------------arch/i386/kernel/timers/Common.c--------------------
//tsc_quotient中保存通过calibrate_tsc()计算得出(CPU单个时钟周期的微秒数)*(2^32)的值，然后]]></description><category></category></item><item><title><![CDATA[无符号数(unsigned) 和带符号数(int)的循环变量 在for循环条件判断使用中的区别1例]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/8278890</link><guid>https://blog.youkuaiyun.com/aweii/article/details/8278890</guid><author>aweii</author><pubDate>Mon, 10 Dec 2012 16:53:07 +0800</pubDate><description><![CDATA[先看一段代码：
unsigned i1 ;
for (i1=9;i1>=0;i1--)
{
  printf("%u\n",i1);
}
由于作为无符号整型的i1始终大于等于0，所以是个死循环，如果把i1改为int类型，就不再是死循环了。那么，编译以后，汇编指令怎么分别判断无符号类型或整型变量与0的大小呢？经过以下程序调试过程中的反汇编代码得知，当i1为unsigned类型是，i1>=0是通过]]></description><category></category></item><item><title><![CDATA[linux-2.0.35的打开文件系统调用sys_open分析]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/8273865</link><guid>https://blog.youkuaiyun.com/aweii/article/details/8273865</guid><author>aweii</author><pubDate>Sat, 08 Dec 2012 21:58:36 +0800</pubDate><description><![CDATA[----sys_open:linux\fs\open.c----
asmlinkage int sys_open(const char * filename,int flags,int mode)
{
char * tmp;
int fd, error;
//获取打开文件描述符(进程打开文件结构指针数组的下标)
fd = get_unused_fd();
if (fd < 0)
return fd]]></description><category></category></item><item><title><![CDATA[linux-1.2.13内核的编译生成和引导]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/8273857</link><guid>https://blog.youkuaiyun.com/aweii/article/details/8273857</guid><author>aweii</author><pubDate>Sat, 08 Dec 2012 21:56:43 +0800</pubDate><description><![CDATA[在linux目录下运行命令 make zimage即生成内核，过程是这样的。
linux/makefile中有这一句：include arch/$(ARCH)/Makefile，指向了linux/arch/i386/makefile,
其中有目标：
--linux/makefile--
MAKEBOOT = $(MAKE) -C arch/$(ARCH)/boot
zImage: vmlin]]></description><category></category></item><item><title><![CDATA[vsyscall page]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/7202367</link><guid>https://blog.youkuaiyun.com/aweii/article/details/7202367</guid><author>aweii</author><pubDate>Sun, 15 Jan 2012 11:08:28 +0800</pubDate><description><![CDATA[-----------------------------------vsyscall page-------------------------------------
内核中有一个永久固定映射页面(位于0xffffe000-0xffffefff)，名为vsyscall页。这个区域存放了
系统调用入口kernel_vsyscall的代码，以及信号处理程序的返回代码kernel_sigretu]]></description><category></category></item><item><title><![CDATA[linux2.6.11的工作队列机制分析]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/7032770</link><guid>https://blog.youkuaiyun.com/aweii/article/details/7032770</guid><author>aweii</author><pubDate>Thu, 01 Dec 2011 23:24:00 +0800</pubDate><description><![CDATA[一、概述
  工作队列提供了一种通过线程同步或者异步运行内核函数的通用机制。通过completion和等待队列实现了同步运行功能(调用者等待被调用函数执行完毕)，不使用completion则可实现异步运行的功能。相关的定义和代码主要在以下文件中：
linux\kernel\Workqueue.c
linux\include\linux\Workqueue.h


二、数据结构]]></description><category></category></item><item><title><![CDATA[linux kernel2.6中软中断运行线程ksoftirqd的创建]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/6963129</link><guid>https://blog.youkuaiyun.com/aweii/article/details/6963129</guid><author>aweii</author><pubDate>Sat, 12 Nov 2011 17:02:28 +0800</pubDate><description><![CDATA[1、软中断由内核线程ksoftirqd处理,下面说一下它的创建过程。
start_kernel()创建init线程，init()调用do_pre_smp_initcalls()->spawn_ksoftirqd(
),spawn_ksoftirqd()分两次调用cpu_callback()，
分别使用参数CPU_UP_PREPARE和CPU_ONLINE。使用CPU_UP_PREPARE调用]]></description><category></category></item><item><title><![CDATA[一个计算平方根的简单算法]]></title><link>https://blog.youkuaiyun.com/aweii/article/details/6960983</link><guid>https://blog.youkuaiyun.com/aweii/article/details/6960983</guid><author>aweii</author><pubDate>Fri, 11 Nov 2011 19:50:05 +0800</pubDate><description><![CDATA[#include 
#include 
using namespace std;
double abs1(double a)
{
 return a>=0?a:-a;
}
int main()
{
 double a,m,e=1e-6;
 int i=0;
 printf("Please input number:");
 scanf("%lf",&a);
    if(]]></description><category></category></item></channel></rss>