分类:计算机科普级别

Shell And Base

Bash是什么?bash是shell的一种是被采用的最多的shell版本。 ##Shell 是什么? shell在翻译来看: n. 外壳; 炮弹; (贝、卵、坚果等的) 壳; (人的) 表面性格; 那它到底是什么呢?我们可以理解为shell是Linux内核的“外壳”程序?的确,shell是Linux内核和操作系统的「桥梁」,我们在操作系统的所有任务都可以通过shell来与Linux内核...

发布于 计算机科普级别

HTML DOM (Document Object Model)

HTML DOM是HTML Document Object Model(文档对象模型)的缩写,HTML DOM则是专门适用于HTML/XHTML的文档对象模型。 熟悉软件开发的人员可以将HTML DOM理解为网页的API。它将网页中的各个元素都看作一个个对象,从而使网页中的元素也可以被计算机语言获取或者编辑。 例如Javascript就可以利用HTML DOM动态地修改网页。 相...

发布于 计算机科普级别

ICMP协议与Ping原理

一、ICMP协议分析ICMP:Internet控制报文协议。由于IP协议并不是一个可靠的协议,它不保证数据被成功送达,那么,如何才能保证数据的可靠送达呢? 这里就需要使用到一个重要的协议模块ICMP(网络控制报文)协议。它传递差错报文以及其他需要注意的信息,经常供IP层或更高层协议(TCP或UDP)使用。所以它经常被认为是IP层的一个组成部分。它在IP数据报文中的封装如下: ICMP的数据...

发布于 计算机科普级别

Wi-Fi定位原理

Wi-Fi能够对用户进行定位。因为在Android、iOS和Windows Phone这些手机操作系统中内置了位置服务,由于每一个Wi-Fi热点都有一个独一无二的Mac地址,智能手机开启Wi-Fi后就会自动扫描附近热点并上传其位置信息,这样就建立了一个庞大的热点位置数据库。这个数据库是对用户进行定位的关键。如果你的智能手机连接上了某个Wi-Fi热点,那么就可以调用数据库中附近所有热点的地理位置信息,而服务器会参考每个热点的信号强弱计算出设备的大致地理位置.下面就一起来看看手机是如何通过wifi定位的? 一、Wi-Fi定位的原理 具体来说,Wi-Fi能够定位,原理是这样的: 1、每一个无线AP(路由器)都有一个全球唯一的MAC地址,并且一般来说无线AP在一段时间内不会移动; 2、设备在开启Wi-Fi的情况下,即可扫描并收集周围的AP信号,无论是否加密,是否已连接,甚至信号强度不足以显示在无线信号列表中,都可以获取到AP广播出来的MAC地址; 3、设备将这些能够标示AP的数据发送到位置服务器,服务器检索出每一个AP的地理位置,并结合每个信号的强弱程度,计算出设备的地理位置并返回到用户设备; 4、位置服务商要不断更新、补充自己的数据库,以保证数据的准确性。 二、位置服务数据库的搭建 数据库中的数据主要来自于两个方面,一是用户提交的数据。Android手机用户在开启“使用无线网络定位”时会提示是否允许使用Google的定位服务,如果允许,用户的位置信息就被谷歌收集到。iPhone则会自动收集Wi-Fi的MAC地址、GPS位置信息、运营商基站编码等,并发送给苹果公司的服务器。 同时谷歌、Skyhook两家位置服务提供商也在主动搜集Wi-Fi等热点的位置信息。Google的街景拍摄车有一个重要的功能就是采集沿途的无线信号,并打上通过GPS定位出的坐标回传至服务器。Skyhook在美国及欧洲一些国家也是直接开着信号采集车采集AP和基站的信号数据。 三、如何防止被定位? 最直接的办法是关掉手机系统中的位置服务选项,以避免他人看到你的位置信息。 如果要杜绝位置服务商获取数据,难度就会比较高。用户需要不连接任何Wi-Fi热点,并且不使用相关的位置服务。也可以使用某些工具。例如谷歌曾发布一款选择退出工具,让无线路由器用户有效阻止谷歌搜集他们的数据。  

发布于 计算机科普级别

内部排序和外部排序

外排序外排序(External sorting)是指能够处理极大量数据的排序算法。通常来说,外排序处理的数据不能一次装入内存,只能放在读写较慢的外存储器(通常是硬盘)上。外排序通常采用的是一种“排序-归并”的策略。在排序阶段,先读入能放在内存中的数据量,将其排序输出到一个临时文件,依此进行,将待排序数据组织为多个有序的临时文件。尔后在归并阶段将这些临时文件组合为一个大的有序文件,也即排序结果...

发布于 计算机科普级别

哈希排序

第一部分:Top K 算法详解问题描述百度面试题: 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。 假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。) 请你统计最热门的10个查询串,要求使用的内存不能超过1G。 必备知识: 什么...

发布于 计算机科普级别

加密安全大补药

Base64 编码 Base 64 编码后的结果能够反算,非常不安全。 用 base64 编码之后,结果会变大,增加了约 1/3。 用 base64 编码的结果有非常明显的特点,末尾有 = 。 对称算法 算法公开、计算量小、加密速度快、加密效率高,可以对大数据进行加密。 双方使用相同钥匙,安全性得不到保证。秘钥的安全性非常重要,普遍采用的方法是使用 RSA 的加密算...

发布于 计算机科普级别

查缺补漏 2017.04.11

C++与多态性与虚函数多态与非多态的实质区别就是函数地址是早绑定还是晚绑定。如果函数的调用,在编译器编译期间就可以确定函数的调用地址,并生产代码,是静态的,就是说地址是早绑定的。而如果函数调用的地址不能在编译器期间确定,需要在运行时才确定,这就属于晚绑定。那么多态的作用是什么呢,封装可以使得代码模块化,继承可以扩展已存在的代码,他们的目的都是为了代码重用。而多态的目的则是为了接口重用。也就是...

发布于 计算机科普级别

rpm和yum详解

Linux中软件的安装Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装。 不论是通过那种途径安装软件都具有一下4个特点: 1.都有配置文件,通过设置配置文件来改变程序启动时的运行特征 2.都具有二进制的程序主体 3.都自带库文件,供程序主体进行调用 4.都带有帮助文件,对程序的使用方法进行说明 软件的安装路径: 除了自行下载源码编...

发布于 计算机科普级别

非对称加密算法和摘要算法

CA证书非对称加密算法和摘要算法 如果用户想得到一份属于自己的证书,他应先向 CA 提出申请。在 CA 判明申请者的身份后,便为他分配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。 如果一个用户想鉴别另一个证书的真伪,他就用 CA 的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。证书实际是由证书签证机关(CA)签发的对用...

发布于 计算机科普级别

SSH——Secure SHell(安全外壳协议)

SSH是建立在应用层和传输层基础上,默认端口是22,为远程登录会话和其他网络服务提供安全性的协议。SSH是替代Telnet(默认端口是23)和其他远程控制台管理应用程序的行业标准。 SSH服务最早是由芬兰的一家公司开发的UNIX系统上的一个程序,后来迅速扩展到其他操作平台,现在已经发展到SSH2版本。SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。由于版权和加密算法等因素的影响...

发布于 计算机科普级别

编译型与解释型、动态语言与静态语言、

编译型与解释型编译型与解释型,两者各有利弊。前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object   Pascal(Delphi)、VB等基本都可视为编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性...

发布于 计算机科普级别

Java和C++的区别(转载)

  1.Java没有显式指针,而在C++中却可以用。 2.Java是主动多态的,你不用关心具有继承关系的多个类之间的同名成员函数会调用哪个,Java会主动地从祖父类、祖祖父类……追溯至最高一级父类,然后从上至下开始寻找并调用。C++不会主动使用多态,要使用多态,就要用虚函数。 3.Java是隐式继承的,你不说你是谁的子类,那么你就是Object的子类,甚至你说你不是类都不可以,你必须是类,然后才能谈到实例化的对象。这时,Java看上去是强制面向对象。C++却把话都说明白了,你继承谁就继承谁,继承多个都可以,你什么都不说那么就不继承。但是C++当中,不继承不代表不能被继承,实际上C++禁止这么做。原因前面已经说过了,C++是被动多态的。你不用virtual去修饰基类的成员函数,程序执行时函数调用就不会自动调到派生类。 4.Java有接口,C++中却没有。这不是说C++不好,只是C++没有明确提出这样一个概念。C++中定义一个抽象类,把成员函数设为常量,并改成纯虚函数,数据域也设成常量,那么在C++中这样的抽象类就是接口。你可以说它不是,因为C++中没有接口,但是我要说明的是,C++可以做出一个接口来。 5.Java是单根继承(Single inheritance)的,但是允许一个类实现多个接口。C++却支持多继承,尽管很少有人去用它。 6.Java和C++最显著的区别体现在对象的处理上。Java中,对象变量在内部被当作指针处理。Java文献指出将对象变量作为引用,不过它们与C++中的引用并不完全相同。所谓引用,就是一个介于指针和变量之间的东西。 7.Java中所有的函数都与类相关,没有全局变量和非成员函数,而C++却支持这些。从这个角度上讲,C++又是强制面向对象的。因为C++当中可以没有类,即使没有类,程序依然执行得好好的,并且在程序设计的功能很少的时候,我就喜欢这么干。偶尔面向过程编程,又有什么不好呢? 8.C++中,你使用的动态内存怎么用就怎么还,Java中你不用管,Java包含一个垃圾收集系统,作为运行时库的一部分。它会监视正在运行的程序,当内存不足的时候自动去回收它,当然你也可以干预这个过程,不过如无必要,你不必惦记这件事,Java总会把你的硬件想象得比较好,不到万不得已不回收动态内存,这也解决了C++程序的内存泄漏问题,虽然这是程序员自己的不负责任。 9.Java有很紧凑的异常处理机制,而C++稍微显得草率了一些。但是这并不代表C++异常处理机制不强大,因为Java只能抛出Throwable子类的异常,C++却什么都可以。   10.Java标准库又是Java庞大的体现,涵盖了国际化、网络化、数学、声音、Web应用和服务以及数据库等。你可以说Java语言在JSP、JavaScipt、网络编程、分布计算交易管理应用、Java ME应用、Web应用上风光无限,说Java是一门小巧的语言,但是Java的小巧也主要就小巧这些方面。

发布于 计算机科普级别

动态库与静态库优缺点比较

动态库与静态库优缺点比较      我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效率,并且影响代码的可读性,更不利于后期的代码维护。我们可以把他们制作成相应的功能函数,使用时直接调用就会很方便,还可以进行后期的功能升级。例如我要在一段代码中多次交换两个变量的值,我可以在代码中多次写入 i=x; x=y; y...

发布于 计算机科普级别

惰性加载(lazyload)

维基百科的解释 惰性加载(英语:Lazy loading、Infinite Scroll,又称延迟加载[1]、懒加载[2][3]、无限滚动[4]、瀑布流[4]),是一种设计模式,被运用在软件设计和网页设计当中[5],对于网页界面,其特征为用户通过鼠标,滚动浏览页面,直到页面下方时,就会自动加载更多内容;有多数网站采用这项网页设计,例如Google图片搜索、Google+、Facebook、T...

发布于 计算机科普级别

Cookie/Session机制详解

HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。 其中 Cookie和Session就是一种跟踪技术,Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。 什么是Cookie(实际上是一小段文本信息)Cookie意为“甜饼”,是由W3C组织提出,最早...

发布于 计算机科普级别

HTTP (笔记)

HTTP协议是无状态的http协议是无状态的,同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。 为了解决这个问题, Web程序引入了Cookie机制来维护状态. 打开一个网页需要浏览器发送很多次Request1. 当你在浏览器输入URL http://www.cnblogs.com 的时候,浏览器发送一个Request去获取 h...

发布于 计算机科普级别

数组和链表的区别

数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中。同样的道理,如果想删除一个元素,同样需要移动大量元素去填掉被移动的元素。如果应用需要快速访问数据,很少或不插入和删除元素,就应该用数组。 链表恰好相反,链表中的元素在内存中不是顺序存储的,而是通...

发布于 计算机科普级别

设计模式

前言在某些人看来学习设计模式没有什么意义,因为在实际工作中基本用不上,因此没有什么学习的必要。但是在我看来,学习设计模式非常有必要,暂且不论在实际工作中能否用得上,理解了设计模式的原理和其中所蕴含的大智慧后可以帮助我们写出结构更合理、风格更优雅、更容易复用的代码。 设计模式的基本原则设计模式的基本原则非常重要,只要真正深入地理解了设计原则,很多设计模式其实就是原则的应用而已,或许在不知不觉中...

发布于 计算机科普级别

理解RESTful架构

Representational State Transfer的缩写。我对这个词组的翻译是”表现层状态转化”。 如果一个架构符合REST原则,就称它为RESTful架构。 要理解RESTful架构,最好的方法就是去理解Representational State Transfer这个词组到底是什么意思,它的每一个词代表了什么涵义。如果你把这个名称搞懂了,也就不难体会REST是一种什么样的设计...

发布于 计算机科普级别

Web工作方式(转载)

对于普通的上网过程,系统其实是这样做的:浏览器本身是一个客户端,当你输入URL的时候,首先浏览器会去请求DNS服务器,通过DNS获取相应的域名对应的IP,然后通过IP地址找到IP对应的服务器后,要求建立TCP连接,等浏览器发送完HTTP Request(请求)包后,服务器接收到请求包之后才开始处理请求包,服务器调用自身服务,返回HTTP Response(响应)包;客户端收到来自服务器的响应...

发布于 计算机科普级别

线程和进程的区别是什么?

进程和线程的区别? 进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享...

发布于 计算机科普级别

tcp的思考(挺有意思的思考,没有标准答案)

  tcp为什么要三次握手,而不能二次握手?谢希仁版《计算机网络》中的例子是这样的,“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的...

发布于 计算机科普级别

计算机小知识(小知识摘抄)

字符编码我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最...

发布于 计算机科普级别