博客地址 此博客记录了搭建网站的详细过程,以及建站过程中遇到的一些坑。博客介绍了安装homebrew,nodejs,hexo,域名注册,github设置,DNS解析等过程。此次建站过程基于mac系统。...这个设置是防止别人往你的项目里提交内容。 注意: 输入密码的时候没有*字样的,你直接输入就可以了。 最后看到这样的界面,就成功设置ssh key了: ?...GitHub 也是用这些信息来做权限的处理,输入下面的代码进行个人信息的设置,把名称和邮箱替换成你自己的,名字必须是你的真名,而不是GitHub的昵称。...添加记录 其中A的两条记录指向的ip地址是github Pages的提供的ip 192.30.252.153 192.30.252.154 如博客不能登录,有可能是github更改了空间服务的ip地址,...www指定的记录是你在github注册的仓库。
同时在多数情况下,必须尽量限制pMOS型晶体管的出现,因为在制造过程的后期,需要将N型材料植入P型衬底当中,而这一过程会导致pMOS管的形成。 在掺入化学物质的工作完成之后,标准的切片就完成了。...● 光刻蚀 这是目前的CPU制造过程当中工艺非常复杂的一个步骤,为什么这么说呢?光刻蚀过程就是使用一定波长的光在感光层中刻出相应的刻痕, 由此改变该处材料的化学特性。...这项技术对于所用光的波长要求极为严格,需要使用短波长的紫外线和大曲率的透镜。刻蚀过程还会受到晶圆上的污点的影响。每一步刻蚀都是一个复杂而精细的过程。...这个掺杂过程创建了全部的晶体管及彼此间的电路连接,没个晶体管都有输入端和输出端,两端之间被称作端口。 ● 重复这一过程 从这一步起,你将持续添加层级,加入一个二氧化硅层,然后光刻一次。...在CPU的包装过程完成之后,许多产品还要再进行一次测试来确保先前的制作过程无一疏漏,且产品完全遵照规格所述,没有偏差。
感谢苹果与三星的专利“核战”,苹果才稍微肯让人知道他们是如何开发产品的——如果你以为在苹果内部,产品的开发就好像外界传言般浪漫,这绝对是误解。...现在,Wired的记者 Fred Vogelstein 对苹果的前员工进行采访,挖掘更多更深的内幕。...为了达到理想中的演示效果,Steve Jobs 让工程师们花几个星期的时间,改造舞台的影像传输网路,还有 iPhone 的机身后盖。...当时日本的的 Wi-Fi 禁止在美国使用。 Grignon 当时拥有来自 AT&T 的携带式无线基站,因此他知道现场的无线信号是强劲的。...Tim Bucher,当时的苹果高级主管称,在利用多点触摸技术的时候,公司所遭遇最大的难题在于软件部分。OS X 最初的设计是为鼠标设计的,而非手指。
当我们提到一些常见的功能时,可以一笔带过,简单的描述一下就可以了,比如:对于微信登录,手机号注册。 那如果我们提到的是一些比较复杂的,具备一定创造性功能的时候,又该如何呢?...对于产品经理而言,我们有义务将一个idea转化成可用代码实现的方案,实际上这个转化过程正是产品经理重要技能的一环。 不仅仅是想到需求,还要确保需求可被实现。 ?...扩展 我们所说的异常保护,就是在上述的过程中,每一个环节都有可能出现错误,我们无法将所有的错误都进行预设,通常会将异常做分类。 没有返回以及返回的信息,不是“对”,也不是“错”。...这个是基于分享的泳道图,他能满足我们分享的需求,但显然,这不能完成案例中的复杂逻辑。我们来看看另外一副泳道图。 ? 这个图补充了B用户在微信打开被分享出来的链接所对应的操作,但是这任然是不够的。...访问者ID加上分享者ID再加上一些其他的参数,生成一个新的参数,我们可以将其称为幸运ID。 B用户只要在注册过程中,甚至注册以后的正常使用过程中,输入这个幸运ID,就能建立起这道桥梁。
接口的诞生 接口其实就是一种标准一种规范。 先从生活中的例子讲起,理解含义和概念后,再去理解程序会更容易理解一些。...生活中的例子讲完,我们来延申到程序。 每项技术的产生,肯定是有其原因的。理解了技术的诞生经过,一般也就理解了技术本身。 那接口是如何诞生的呢?...这时候我们就可以将,父类的方法抽象出来,抽象类就这么诞生了,这里的抽象类其实已经有了标准和规范的意思,抽象方法就可以理解为一个对外的标准,子类就是这些标准的实现方,然后我们会发现,抽象类还不算彻底的抽象...在接口诞生中说过,这种类是没有必要创建实例对象的,所以第二个相同点就是不能创建本类对象,只能由子类去实例化子类对象。...在接口的诞生我们说过,抽象类更进一步地抽象后就诞生了接口,接口比抽象类更纯粹,因为它没有成员属性,只有方法,子类实现接口后,唯一能做的就是重写方法,不像抽象类,子类继承抽象类后,连带父类的成员属性一起继承了
懵懂的记得从前有个叫委托的东西是那么的高深难懂。 委托的使用 例一: ? 什么是委托? 个人理解:用来传递方法的类型。...(用来传递数字的类型有int、float、double,用来传递方法的就有委托) 例二: ? 又经过了很久很久... 匿名方法 很多时候委托接收的方法是一次性的或者方法体是非常简单的......细心的朋友可能看到了,Func相对于AddDelegate多定义了一个int。多出了的那个是指的是返回类型。我们F12看对应的定义: ?...C#4中的Action和Func有16个参数,足够你用了。 我们等了又等,又过了好久好久... Lambda的诞生 ? 我XX,这TM就是亲兄弟啊。...关于第2点,我们使用扩展方法的链式编程来解决。 如:(用链式来解决第二点) ? 从此,我们过上了幸福的生活... 借《深入理解C#》中的一图: ?
这里向大家推荐一篇文章,本文转载自「码农翻身」的「JDBC的诞生」 网络访问 随着 Oracle, Sybase, SQL Server, DB2, Mysql 等人陆陆续续住进数据库村,这里呈现出一片兴旺发达的景象...外部的花花世界一下全部打开,很多程序开始离开这个拥挤的城镇,住到更加宜居的地方去。 可是他们的工作还是要读写数据库, 大家都在想办法能不能通过网络来访问数据库镇的数据库。...更让人恶心的是,每套代码都得处理非常多的协议细节,每个使用Java进行数据库访问的程序都在喋喋不休的抱怨:我就想通过网络给数据库发送SQL语句,怎么搞的这么麻烦?...SQL返回的结果也得有个抽象的概念:ResultSet。 他们之间的关系如图所示: ?...无论是任何数据库,只要正确实现了 Driver,Connection 等接口,就可以轻松的纳入到JDBC框架下了。 Java终于可以高兴的宣布: “JDBC正式诞生了!”
这一篇大致说一下进程的创建,有兴趣的可以参考之前的一些文章或者直接上代码https://github.com/theanarkh/read-linux-0.11。 系统有一个GDT表。...该表保存了系统和所有进程的tss和ldt描述符信息。tss就是我们平时说的进程上下文。每个进程有一个ldt数组,里面保存了代码段和数据段的描述符信息。 首先,从一个进程的诞生说起。...下面我们来看一下fork的过程都做了什么事情。先通过find_empty_process获取一个可用的进程id和pcb。pid是进程id。pcb是管理进程的结构体。...在这里插入图片描述 进程创建的本质就是申请一个新的pcb,里面保存了该进程的相关信息,假设现在轮到该进程执行。系统会根据tss选择子到gdt表中找到tss结构体的地址。...cs寄存器里存的是代码段的选择子。是0x17。即ldt的第二项,和数据段一样。从ldt第二项中找出基地址和限长。基地址+ip得到线性地址的值。然后再根据页目录和页表就能得到物理值。
在科技界的浩瀚星空中,有那么一颗星星,它以一种近乎“恶作剧”的方式,悄然点亮了整个世界——这就是Linux的诞生故事,一场由Linus Torvalds这位“代码界的魔术师”亲手策划的“惊天一敲”。...Linus没有选择抱怨或等待,他拿起键盘,就像是一位勇敢的探险家,踏入了未知的编程领域。他心中只有一个念头:“我要创造一个更好的操作系统!”于是,Linux内核的雏形,就在这一连串的敲击声中诞生了。...Linux内核的“首秀”:一场低调而华丽的盛宴当Linus完成了他的杰作,并决定将它公之于众时,他或许并没有意识到,自己即将成为科技史上的一个重要人物。...他们被Linux的开源、免费和高效所吸引,纷纷加入到这个项目中来,共同为Linux添砖加瓦。很快,Linux就不再是Linus一个人的作品,而是成为了全球开发者共同的心血结晶。...Linux内核以其卓越的性能和无限的潜力,赢得了无数人的青睐。它就像是一位初出茅庐的明星,一出场就光芒四射,让人无法忽视。
Linux下PHP执行的流程 在查看PHP执行过程前,我们要学习一个linux命令,也就是strace 命令 strace 命令介绍 strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统调用及它所接收的系统信息...strace 参数有哪些 -c 统计每一系统调用的所执行的时间,次数和出错的次数等....-u username 以username 的UID和GID执行被跟踪的命令 知道这个命令之后,我们就可以来进行查看PHP解析器的调用过程 查看调用 新建一个test.php 文件,输出 hello...首先咱们看到的是一个execve函数,而execve函数则是linux内核系统调用函数,通过百度,咱们可以了解到这个函数的相关概念以及参数,其实第一个参数就是elf可执行文件的路径,也说"/usr/bin...可执行文件则分为一下几种 exec可执行文件、REL可重定位文件、共享目标文件Shared Object File、core dump 文件,其中利用readelf -h 命令即可查看 2、 通过查看php文件执行过程
本文所要介绍的将C/C++语言编写的程序转换成为处理器能够执行的二进制代码的过程即由编译器完成。...静态库和动态库的不同点在于代码被载入的时刻不同。静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小。...与C语言类似,C++也定义了自己的标准,同时提供相关支持库,称为C++运行时库。 准备工作 由于GCC工具链主要是在Linux环境中进行使用,因此本文也将以Linux系统作为工作环境。...\n"); return 0; } 编译过程 1.预处理 预处理的过程主要包括以下过程: 将所有的#define删除,并且展开所有的宏定义,并且处理所有的条件预编译指令,比如#if #ifdef #...在Linux系统中,可以用ldd命令查看一个可执行程序依赖的共享库。
前言 有时候会遇到服务器不能联网的情况,这样就没法用yum安装软件,docker也是如此,针对这种情况,总结了一下离线安装docker的步骤 1....准备docker离线包 docker官方离线包下载地址 下载需要安装的docker版本,这里已docker-17.03.2-ce.tgz版本为例子。...docker --help 查看docker命令,从现在开始你就可以自己安装image和container了 4.3 如果你想卸载docker,此时执行脚本 sh uninstall.sh 即可 5 离线下容器的导入导出...镜像的导出及导入 docker save -o update1.tar update //镜像的导出 docker load < update1.tar //镜像的导入 docker load...-i update1.tar //镜像的导入 ocker import - update < update.tar //容器导出用这种方式导入 docker export cbe3cb7799ed
分析Linux系统的执行过程 一、阅读理解task_struct数据结构 二、分析fork函数对应的内核处理过程do_fork 三、使用gdb跟踪分析一个fork系统调用内核处理函数do_fork 四、...do_execve ,验证您对Linux系统加载可执行程序所需处理过程的理解 七、特别关注新的可执行程序是从哪里开始执行的?...()函数 ,验证对Linux系统进程调度与进程切换过程的理解 十、分析switch_to中的汇编代码,理解进程上下文的切换机制,以及与中断上下文切换的关系 总结 原创作品转载请注明出处 + https:...六、使用gdb跟踪分析一个execve系统调用内核处理函数do_execve ,验证您对Linux系统加载可执行程序所需处理过程的理解 $ b do_execve 由跟踪结果可知,当调用新的可执行程序时...从现在开始,next 进程就成为当前进程而真正开始执行 总结 Linux 系统中的fork系统调用。fork会创建一个新的进程,加载文件并进行执行。在这个过程中,涉及到了两个进程之间的切换。
Lucene 的诞生 故事发生于 1997 年的某个下午,Doug Cutting 在电脑上敲下 Lucene 第一个版本的代码。 Apache Lucene 是一款搜索引擎,可以理解为百度。...这个时候,Cuting 发现很多人开始使用他开发的软件了,并且很多人向他反馈使用过程的问题和希望改进的地方。再过了一年,Lucene 迁移到了 Apache Software Foundation。...这个新系统的主要目的是抽象集群的存储,使其呈现为一个可靠的文件系统,从而向用户隐藏所有操作的复杂性。...与以前的分布式编程模型相比,这证明了 API 的优雅程度。 MapReduce 的贡献的一个很核心的思路是不应该为了处理数据而被迫移动数据。相反,应该将程序发送到数据所在的位置。...Facebook 贡献了 Hive,它是基于 MapReduce 的 SQL 引擎。 2008 年,也是第一家专注于 Hadoop 的专业系统集成商诞生的一年。
环境:centos 6.4 x64 先下载mysql安装包 打开 http://dev.mysql.com/downloads/mysql/ 选择 linux - Generic 再选择 下载完毕后,...得到安装包 mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz 此包不再需要make编译源代码(真是扛扛的),之前的mysql-5.6.4.tar.gz包是源码包,需要先...cmake,再make & make install 上传到centos6.4的/software目录下(可以改为你需要的目录,这里只是演示) ssh登录到centos6.4,开始执行以下命令 1.解压...tar包 cd /software tar -xzvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz mv mysql-5.6.21-linux-glibc2.5-...使用mysqld_safe 登进去,发现user表居然是空的,没有一个用户,郁闷。 于是从其它地方导出了一份user表的sql语句,手动插入了一个用户,再登录就可以了。
一.命令分类 Linux命令分为两类,具体为内部命令和外部命令 内部命令: 指shell内部集成的命令,此类命令无需人为安装,开机后自动运行在内存中,命令help查看所有内部命令的详情,如cd、type...-l 显示hash缓存 -d 清楚具体缓存命令路径 -r 删除所有命令路径 5.alias 定义别名 ualias取消别名 四.命令执行过程 ls命令执行过程: 下面进行简单分析: 1、shell...ls的main(int argc, string ** argv)函数的参数就是从shell那里得来的。若不存在就会提示用户”command not found”。...4、ls程序执行后,会分析argc和argv,”-l”表示这是一个选项开关,表明用户想得到文件的详细信息,并把这个开关量保存,以便最后输出的时候选择信息的格式。...5、ls执行完既定的步骤后,退出并返回退出码,若成功则返回0,否则根据错误的不同返回不同的非零数字。 6、shell在得到成功退出码后,继续等待用户输入。
大家好,又见面了,我是全栈君 前一阵子在公司移植Linux2.6到一块ARM11的开发板上,下面粗略讲讲移植Linux的一般过程。 一开始的UBOOT的移植不多说了。...另外,arm下引导linux时R0和R1寄存器的值是必须设置的,分别为你的CPU(好像是,不记得了)和BOARD类型,否则在Linux刚开始的汇编部分会出错,这个要注意。...http://hovertree.com/menu/linux/ 此外,linux也有两种方式的引导,一种是zImage,另一种是Image。...接下来是系统自带的printk的输出,因为linux内核自身的调试信息都是通过printk输出的。...网卡启动之后在命令行参数中设置nfs方式的根文件系统,并把文件系统放在一台linux的服务器上面通过NFS导出。这样,就基本上移植成功了一个最简单的linux系统。
要了解Android手机启动过程,我们先来了解一下基于linux系统的电脑从按下电源键的那一刻起,发生了什么,这样类比可以更好的理解Android手机的启动过程。...基于Linux的pc启动过程 我们都知道,所有的程序软件包括操作系统都是运行在内存中的,然而我们的操作系统一般是存放在硬盘上的,当我们按下开机键的时候,此时内存中什么程序也没有,因此需要借助某种方式,将操作系统加载到内存中...Android手机的启动过程 Android系统虽然也是基于linux系统的,但是由于Android属于嵌入式设备,并没有像pc那样的BIOS程序。取而代之的是Bootloader——系统启动加载器。...ROM预先映射到该地址上,当开机加电的时候,cpu就会从该地址执行/boot分区下的Bootloader程序,载入linux内核到RAM中。...当linux内核启动后会初始化各种软硬件环境,加载驱动程序,挂载根文件系统,并开始执行根文件系统的init程序,init程序是Android启动过程中最重要的核心程序。
ARMv8中的访问内存流程 我喜欢用图的方式来说明问题,简单直接: ? 蓝色部分是cpu,灰色部分是内存,白色部分就是cpu访问内存的过程,也是地址转换的过程。...在解释地址转换的本质前我们先理解下几个概念: TLB:MMU工作的过程就是查询页表的过程。如果把页表放在内存中查询的时候开销太大,因此为了提高查找效率,专门用一小片访问更快的区域存放地址转换条目。...有了宏观概念,下面我们以内核态寻址过程为例看下是如何把虚拟地址转换为物理地址的。...可以看出虚拟地址ffff99b488d48000对应的物理地址是80000000c8d48000。这个过程也是mmu的过程。...下一篇我们正式进入内存管理的大门——linux内存管理。
领取专属 10元无门槛券
手把手带您无忧上云