- 博客(37)
- 资源 (103)
- 收藏
- 关注
原创 字符编码笔记:ASCII,Unicode和UTF-8
前言我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。正文ASCI
2015-11-30 16:28:20 10790
原创 Unix 版权历史
前言从Unix的发展历史,说明现行版权制度具有阻碍社会发展的负面作用。正文Unix诞生于1969年,是贝尔实验室员工Ken Thompson的个人项目。由于贝尔实验室是AT&T(美国电话电报公司)的下属机构,所以Unix的版权归AT&T所有。AT&T垄断了美国长途电话业务,所以美国司法部在1958年
2015-11-30 14:55:12 11666
原创 几种计算机语言的评价
前言对于不同的任务,应该选择哪一种语言了?正文一、CC语言的优点是,运行效率高和接近机器语言。它特别适用于以下几种程序: 1. 对运行速度要求很高的程序。 2. 与操作系统内核关系密切的程序。 3. 必须在多个操作系统上移植的程序。除此之外,学习C语言有一个最大的理由,那就是它能帮助我们学会,在硬件层
2015-11-30 14:28:18 10683
原创 浮点数的二进制表示
前言C语言教材,有一道例题#include void main(void){ int num=9; /* num是整型变量,设为9 */ float* pFloat=# /* pFloat表示num的内存地址,但是设为浮点数 */ printf("num的值为:%d\n",num); /* 显示num的整型值 */ printf("*
2015-11-30 11:13:45 11009
原创 为什么Lisp语言如此先进?
前言John McCarthy本来没打算把Lisp设计成编程语言,至少不是我们现在意义上的编程语言。他的原意只是想做一种理论演算,用更简洁的方式定义图灵机。这种语言本质上不是一种技术,而是数学。应该把它与快速排序(Quicksort)算法进行类比。这种算法是1960年提出的,至今仍然是最快的通用排序方法。Lisp是无意中从纯理论发展为编程语言,而Fortran从
2015-11-27 16:21:17 10879
原创 云主机是什么?
前言所谓"共享主机",就是一台服务器上有许多网站,大家共享这台服务器的硬件和带宽。如果它发生故障,那么上面的所有网站都无法访问。"云主机"(Cloud hosting)可以看成是新一代的共享主机。先,主机公司将它的硬件和网络线路,做成一朵"云",然后提供一些通向这朵"云"的网络接口API,供客户使用。这时,
2015-11-27 15:09:45 10791
原创 计算机的原理及其实现
前言是否想过,计算机为什么会加减乘除?或者更直接一点,计算机的原理到底是什么?Waitingforfriday有一篇详细的教程,讲解了如何自己动手,制作一台四位计算机。从中可以看到,二进制、数理逻辑、电子学怎样融合在一起,构成了现代计算机的基础。正文什么是二进制?首先,从最简单的讲起。计算机内部采用二进制,每一个数位只
2015-11-26 14:52:41 10669
原创 DOS 的历史
前言DOS是历史上一个划时代的产品,标识着PC(个人电脑)的崛起和普及,对计算机行业影响深远。只有了解DOS的历史,才能理解今天的计算机工业从何而来。正文DOS的历史1.1974年4月,Intel推出8位芯片8080。这块芯片的体积和性能,已经能够满足开发微型电脑的需要,标志微机时代即将来临。2
2015-11-26 14:06:49 10809
原创 理解Linux系统负荷
前言正文一、查看系统负荷如果你的电脑很慢,你或许想查看一下,它的工作量是否太大了。 在Linux系统中,我们一般使用uptime命令查看(w命令和top命令也行)。 这行信息的后半部分,显示”load average”,它的意思是”系统的平均负荷”,里面有三个数字,我们可以从中判断系统负荷是大还是小。它们的意思分别是1分钟、5分钟、15分钟内系统的平均负荷。 p s:当CPU完全空闲的时候
2015-11-25 17:14:41 10457
原创 数字签名是什么?
前言一篇好文章。它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么。正文1. 鲍勃有两把钥匙,一把是公钥,另一把是私钥。2.鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。
2015-11-25 15:39:09 10672
原创 每行字符数(CPL)的起源
前言"各种计算机语言的编码风格,有的建议源码每行的字符数(characters per line)不超过72个,还有的建议不超过80个,这是为什么?区别在哪里?怎么来的?"正文命令行状态下,终端窗口的显示宽度,默认是80个字符;至于72个字符,更是从未注意过。在Wikipedia里面找到了答案。每行72个字符的限制,来源于打字
2015-11-25 15:07:20 10826
原创 EOF是什么?
前言EOF:它是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。正文下面这段代码就表示,如果不是文件结尾,就把文件的内容复制到屏幕上。int c; while ((c = fgetc(fp)) != EOF) { putc
2015-11-25 14:54:50 13014
原创 理解inode
前言inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,
2015-11-25 11:24:56 10728
原创 用户的上网设置
前言换到用户的角度,看看用户是如何从上至下,与这些协议互动的。网络通信就是交换数据包。电脑A向电脑B发送一个数据包,后者收到了,回复一个数据包,从而实现两台电脑之间的通信。数据包的结构,基本上是下面这样:发送这个包,需要知道两个地址: * 对方的MAC地址 * 对方的IP地址有了这两个地址,数据包才能准确送到接收者手中
2015-11-25 10:08:13 10509
原创 互联网协议入门(一)
前言上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。正文一、概述
2015-11-24 17:19:59 10465
原创 代码的抽象化原则:当某个功能第三次出现时,才进行“抽象化“
前言开发软件的时候,一方面,我们总是希望使用别人已经写好的代码,另一方面,又希望自己写的代码尽可能重用,以求减少工作量。要做到这两个目标,这需要"抽象化"。美国程序员Derick Bailey的一篇文章,谈到"抽象化"应该遵循的三个原则。正文所谓"抽象化",就是指从具体问题中,提取出具有共性的模式,再使用通用的解决方法加以处理。
2015-11-24 16:20:30 11088
原创 计算机是如何启动的?
前言一句谚语: "pull oneself up by one's bootstraps"字面意思是"拽着鞋带把自己拉起来",最早的时候,工程师们用它来比喻,计算机启动是一个很矛盾的过程:必须先运行程序,然后计算机才能启动,但是计算机不启动就无法运行程序!早期真的是这样,必须想尽各种办法,把一小段程序装进内存,然后计算机
2015-11-24 16:06:28 10520
原创 进程与线程的一个简单解释
前言进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。正文一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是
2015-11-24 15:18:56 10626
原创 字符串匹配的KMP算法(The Knuth-Morris-Pratt Algorithm)
前言字符串匹配是计算机的基本任务之一。Jake Boxer的文章正文1.首先,字符串"BBC ABCDAB ABCDABCDABDE"的第一个字符与搜索词"ABCDABD"的第一个字符,进行比较。因为B与A不匹配,所以搜索词后移一位。2.因为B与A不匹配,搜索词再往后移。3.
2015-11-24 15:11:27 10512
原创 字符串匹配的Boyer-Moore算法:坏字符+好后缀
前言各种文本编辑器的"查找"功能(Ctrl+F),大多采用Boyer-Moore算法。Boyer-Moore算法不仅效率高,而且构思巧妙,容易理解。1977年,德克萨斯大学的Robert S. Boyer教授和J Strother Moore教授发明了这种算法。下面,我根据Moore教授自己的例子来解释这种算法。正文
2015-11-24 14:49:04 10744
原创 RSA算法原理(二):公钥和私钥到底是怎么生成?
前言介绍公钥和私钥到底是怎么生成的。正文密钥生成的步骤例子:假设爱丽丝要与鲍勃进行加密通信,她该怎么生成公钥和私钥呢?第一步,随机选择两个不相等的质数p和q。爱丽丝选择了61和53。(实际应用中,这两个质数越大,就越难破解。)第二步,计算p和q的乘积n。
2015-11-24 14:23:49 13035
原创 RSA算法原理(一)
前言1976年以前,所有的加密方法都是同一种模式: (1)甲方选择某一种加密规则,对信息进行加密; (2)乙方使用同一种规则,对信息进行解密。由于加密和解密使用同样规则(简称"密钥"),这被称为"对称加密算法"(Symmetric-key algorithm)。这种加密模式有一个最大弱点:甲方必须把加密规则告诉乙方,否则无法解密。保存
2015-11-24 11:07:23 11684
原创 Linux 的启动流程
前言探讨操作系统接管硬件以后发生的事情,也就是操作系统的启动流程。在BIOS阶段,计算机的行为基本上被写死了,程序员可以做的事情并不多;但是,一旦进入操作系统,程序员几乎可以定制所有方面正文第一步、加载内核操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。例子,/boot 目录下面大概是这样一些
2015-11-23 17:12:46 10720
原创 为什么寄存器比内存快?
前言计算机的存储层次(memory hierarchy)之中,寄存器(register)最快,内存其次,最慢的是硬盘。同样都是晶体管存储设备,为什么寄存器比内存快呢?Mike Ash写了一篇很好的解释正文原因一:距离不同距离不是主要因。内存离CPU比较远,所以要耗费更长的时间读取。
2015-11-23 16:23:03 10546
原创 Stack的三种含义
前言这个词其实有三种含义,适用于不同的场合,必须加以区分。正文含义一:数据结构stack的第一种含义是一组数据的存放方式,特点为LIFO,即后进先出(Last in, first out)。在这种数据结构中,数据像积木那样一层层堆起来,后面加入的数据就放在最上层。使用的时候,最上层的数据第一个被用掉,这就叫做"
2015-11-23 16:09:01 10582
原创 为什么主引导记录的内存地址是0x7C00?
前言《计算机原理》课本说,启动时,主引导记录会存入内存地址0x7C00。为什么不存入内存的头部、尾部、或者其他位置,而偏偏存入这个比 32KB 小1024字节的地方?正文计算机启动是这样一个过程。(简单描述)通电读取ROM里面的BIOS,用来检查硬件硬件检查通过BIOS根据指定的顺序,检
2015-11-23 15:34:52 10823
原创 数据压缩与信息熵
前言1992年,美国佐治亚州的WEB Technology公司,宣布做出了重大的技术突破。该公司的DataFiles/16软件,号称可以将任意大于64KB的文件,压缩为原始大小的16分之一。业界议论纷纷,如果消息属实,无异于压缩技术的革命。事实上,有一些文件是无法压缩的,哪怕一个二进制位,都压缩不掉。那么,为何不是所有的文件都可以被压缩?是否存在一个
2015-11-20 15:02:02 10768
原创 编译器的工作过程
前言源码要运行,必须先转成二进制的机器码。这是编译器的任务。比如,下面这段源码(假定文件名叫做test.c)。#include stdio.h>int main(void){ fputs("Hello, world!\n", stdout); return 0;}要先用编译器处理一下,才能运行。$ gcc tes
2015-11-20 09:58:25 10497
原创 SSH原理与运用(二):远程操作与端口转发
前言远程操作:SSH不仅可以用于远程主机登录,还可以直接在远程主机上执行操作。正文远程操作上一节的操作,就是一个例子: $ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' 单引号中间的部分,表示在远程主机上执行的操作;后面的输入重定向,表示数据通过
2015-11-19 14:58:32 10372
原创 SSH原理与运用(一):远程登录
前言SSH是一种网络协议,用于计算机之间的加密登录。正文最基本的用法SSH主要用于远程登录。假定你要以用户名user,登录远程主机host,只要一条简单命令就可以了。 $ ssh user@host如果本地用户名与远程用户名一致,登录时可以省略用户名。 $ ssh hos
2015-11-19 11:56:54 10688
原创 JQUERY
前言为什么学习jQuery原生JavaScript写代码很不方便而且容易出错(一直感觉写getElementById非常地烦),再加上浏览器之间差异处理起来就更烦躁了,jQuery刚好能解决这些问题,而且:轻量级 ;链式编程; 隐式迭代 ;丰富的插件支持。正文元素选择及操作用jQuery在选择元素时和用
2015-11-16 17:04:05 10676
原创 通用设计法则:80/20法则
前言正文法则含义80/20法则集中精力在关键功能上(用户80%的时间在20%的功能上)无障碍操作易读性、易操作性、简易性、包容性引导手册说明型和比较型美即适用效应美的设计能促进人们形成正面积极的态度功能可见性
2015-11-16 16:42:47 11258
原创 编译原理之词法分析和语法分析
前言正文词法分析编译器的目的是根据源码生成可以执行的文件,想一步到位完全不靠谱,可以先进行分词处理,那么这就是词法分析要完成的工作了!用正则表达是来描述词法规则是比较简单的,而用状态机进行匹配则是比较迅速的,那么比较重要的就是在他们之间的互相转换:这里有:概念含义
2015-11-16 14:41:05 11299
原创 Linux内存管理
Linux内存管理前言对于内存部分需要知道:地址映射内存管理的方式缺页异常正文在进程看来,内存分为内核态和用户态两部分,经典比例如下:Linux内存-虚拟地址:从用户态到内核态一般通过系统调用、中断来实现。用户态的内存被划分为不同的区域用于不同的目的:
2015-11-08 15:24:57 10822
原创 基于 HTTP 长连接的“服务器推”技术
前沿很多应用譬如监控、即时通信、即时报价系统都需要将后台发生的变化实时传送到客户端而无须客户端不停地刷新、发送请求。Comet - 使用 HTTP 长连接、无须浏览器安装插件的两种“服务器推”方案:基于 AJAX 的长轮询方式;基于 iframe 及 htmlfile 的流方式。正文正文“服务器推”技术的应用
2015-11-05 17:47:39 12099
原创 Java虚拟机:内存管理、GC(垃圾回收)、class文件的结构、JIT中比较常见的优化手段
前言正文内存管理Java虚拟机在执行的过程中管理的内存划分为若干个数据区域,如下图:各部分功能解释如下:GC(垃圾回收)什么是垃圾?引用计数算法:被引用次数为0的对象。根搜索算法:从GC Roots沿着引用找不到的对象。
2015-11-01 17:02:45 10713
iOS AgreementView 简化版的隐私弹框(用户协议及隐私政策弹框)【包含超链接属性、demo支持中英文切换】
2023-07-12
iOS曲线图(例子:商品销售曲线图)
2022-08-09
iOS富文本编辑器(工具栏在富文本编辑器的顶部)
2022-07-08
iOS富文本编辑器(基于WKWebview实现,Editor使用WKWebview加载一个本地editor.html文件)
2022-06-17
iOS小技能:NSLog调试技巧
2022-06-09
新住院患者体验与满意度调查问卷【问卷星版本】
2022-06-08
iOS15 消息推送语音播报【修订版】(处于后台/被杀死的状态仍可进行语音播报)
2022-03-10
iOS15 App处于后台/被杀死的状态仍可进行语音播报( 本地离线合成音频+Service Extension)
2022-03-08
iOS使用CALayer 实现时钟demo
2022-03-02
iOS MVC思想的实现demo
2022-03-01
制作package脚本用于批量部署插件(搭建私有Cydia源)
2021-10-04
WordPress插件:给REST API 新增文章特色图片(缩略图)字段,用于显示文章头图
2021-09-06
iOS防止在WKWebView中打开Universal Link的方法
2021-08-19
iOS集成新浪微博API教程
2021-08-03
iOS支持展开折叠的弹出菜单(水平方向弹出菜单视图)
2021-07-28
iOS 水平方向弹出菜单视图
2021-07-27
iOS添加商品到购物车的动画
2021-07-06
iOS 自定义tab滑块: segment功能+label混合显示;( Slider 双区间)【应用场景:商户交易汇总表使用tab滑块进行切换/筛选不同级别的代
2021-06-23
iOS商品类目选择视图(demo源码)
2021-06-22
iOS OCR:自定义相机进行银行卡/身份证/驾驶证信息识别方案【demo源码】
2021-06-03
iOS分配终端界面功能实现:1、拆分SN 2、计算SN个数( 号段用‘-’连接;每批号段请用‘,’|‘隔开或分行)
2021-06-02
iOS银行卡识别(OCR) 源码
2021-05-31
iOS OCR 之身份证识别 (正反) 源码
2021-05-31
iOS文字识别Demo源码
2021-05-31
iOS Document Scanner: 矩形边缘识别(边缘检测 ) CIDetectorTypeRectangle
2021-05-31
iOS身份证相机: 加一个长方形的框框并裁剪身份证照片(无半透明遮罩层)
2021-05-28
iOS APP 内的国际化切换【案例:中英文切换】
2021-05-26
iOS处理语言的强大工具CFStringTransform : 智能地处理用户的输入内容,经典应用场景【通讯录索引】
2021-05-26
iOS14相册权限适配Demo
2021-05-10
iOS Configuration-Profile-Reference.pdf 【案例:iOS安全之防止手机截屏/录屏导致泄密的方案】
2021-04-28
iOS安全之拦截http请求 ( 为小白用户定制的精简版本)
2021-04-22
iOS安全之【拦截请求,实现特定目的 】(修改HTTPHeaderField、不走全局proxy、设置代理IP和端口、对网络请求的数据进行报文级别的加密)
2021-04-20
iOS使用 NSURLProtocol 拦截 HTTP 请求的简单例子
2021-04-19
iOS安全之敏感逻辑的保护方案【把函数名隐藏在结构体里,以函数指针成员的形式存储】案例:js根据key从本地方法获取设备及签名信息 (完整demo)
2021-04-19
iOS拦截 HTTP 请求demo源码:修改请求的HTTPHeaderField,设置代理IP和端口
2021-04-14
iOS抽奖转盘:概率抽奖算法 & 转盘算法 & 转盘主视图的实现思路
2021-04-13
iOS 广告弹窗(支持显示动画及调整广告比例)采用Masonry进行界面布局
2021-04-09
iOS 抽奖轮盘边框跑马灯动画Demo
2021-04-08
iOS 定点缩放弹窗(利用锚点anchorPoint进行实现)
2021-03-25
上线前的必备步骤
2021-05-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人