基本技术知识
wtq1993
专注于机器学习,深度学习
展开
-
Http通信过程(7步)
(1)建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是8原创 2016-01-22 16:26:22 · 1456 阅读 · 0 评论 -
为什么MongoDB采用B树索引,而Mysql用B+树做索引
先从数据结构的角度来答。题主应该知道B-树和B+树最重要的一个区别就是B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域。这就决定了B+树更适合用来存储外部数据,也就是所谓的磁盘数据。从Mysql(Inoodb)的角度来看,B+树是用来充当索引的,一般来说索引非常大,尤其是关系性数据库这种数据量大的索引能达到亿级别,所以为了减少内存的占用,索引也会被存储原创 2016-06-28 15:48:42 · 9178 阅读 · 4 评论 -
五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT) – 整理
当Adobe、Microsoft、Sun等一系列巨头开始表现出对”开源”的青睐时,”开源”的时代即将到来!最初来自:sinoprise.com/read.php?tid-662-page-e-fpage-1.html(遗憾的是这个链接已经打不开了),我基本未改动,只是进行了一些排版和整理。参考文献:http://www.fsf.org/licensing/licenses/现今存在的开转载 2016-06-29 20:30:27 · 523 阅读 · 0 评论 -
python 查询 MongoDB 数据库pymongo.errors.OperationFailure: cursor id '26777532088498352' not valid at se
python 查询 MongoDB 数据库。偶尔会遇到pymongo.errors.OperationFailure: cursor id '26777532088498352' not valid at server这样的问题。今天看了下文档,找到了原因。你在用db.collection.find()的时候,它返回的不是所有的数据,而实际上是一个“cursor”。它的默认行为是:第一转载 2016-06-16 22:28:05 · 4657 阅读 · 1 评论 -
GCC编译器使用
GCC编译器使用来源:archimedes | 时间:2014-12-31 11:03:18 | 阅读数:34393[导读] 一、GCC简介通常所说的GCC是GUN Compiler Collection的简称,除了编译程序之外,它还含其他相关工具,所以它能把易于人类使用的高级语言编写的源代码构建成计算机能够直接执行的二进制代码。GCC是Linux平台下最一、GCC简介转载 2016-08-02 09:48:52 · 654 阅读 · 0 评论 -
linux下查看哪个端口被哪个进程占用
比如我们要查看50070的端口被哪个进程占用,先使用sudo netstat -ap|grep 50070 ,这时可以得出 由哪个进程号占用了50070端口,再由该pid号aaaa,使用ps -aux|grep aaaa 来得出该进程号对用的进程。原创 2016-09-03 19:28:05 · 699 阅读 · 0 评论 -
深度解析mysql登錄原理
使用mysql数据库的第一步必然是建立连接登录,然后在上面执行SQL命令。无论是通过mysql的客户端,还是通过C-API,JDBC标准接口连接数据库,这个过程一定少不了。今天我们聊一聊mysql登陆具体过程,里面会涉及client与server的交互,并通过tcpdump抓包给大家展现这一过程。TCP握手协议 远程连接数据库,mysql采用TCP协议通信,第一步是建立连接,即T转载 2016-08-26 21:14:53 · 606 阅读 · 0 评论 -
python decode encode问题
为什么会报错“UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)”?本文就来研究一下这个问题。字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(deco原创 2016-10-05 10:21:27 · 628 阅读 · 0 评论 -
Linux IO模式及 select、poll、epoll详解
t同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。本文讨论的背景是Linux环境下的network IO。一 概念说明在进行解释之前,首先要说明几个概念:- 用户空间和内核空间- 进程切换- 进程的阻塞- 文件描述符- 缓存 I/O用户空间与内核空间现在操作系统都是转载 2016-10-08 09:33:02 · 461 阅读 · 0 评论 -
解决 .gitignore无效,不能过滤某些文件
刚开始新建一个项目可能会把.idea/workspace.xml等这种系统文件或编译中间过程的文件都用git add添加到了git版本库中来管理,这样即使后来添加了.gitignore文件也不能忽略掉已经添加到版本库中的文件,这时需要用 git rm --cache xxx文件 再在.gitignore中添加该文件从而实现了对该文件的忽略。。。(.gitignore 与 .git添加到同一级目原创 2016-06-01 16:16:40 · 5300 阅读 · 0 评论 -
Linux中profile、bashrc、bash_profile之间的区别和联系
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.英文描述为:# /etc/profile# System wide environment and startup programs, for login setup# Functions and aliases转载 2016-05-05 15:46:29 · 286 阅读 · 0 评论 -
大牛算法学习之路
初学第一次接触数据结构是在大二下学期的数据结构课程。然而这门课程并没有让我入门——当时自己正忙于倒卖各种MP3和耳机,对于这些课程根本就不屑一顾——反正最后考试划个重点也能过,于是这门整个计算机专业本科最重要的课程就被傻逼的我直接忽略过去了。直到大三我才反应过来以后还要找工作——而且大二的折腾证明了我并没有什么商业才能,以后还是得靠码代码混饭吃,我当时惊恐的原创 2016-01-25 21:28:42 · 3061 阅读 · 1 评论 -
栈与堆的区别(经典)
问题描述编程语言书籍中经常解释值类型被创建在栈上,引用类型被创建在堆上,但是并没有本质上解释这堆和栈是什么。我仅有高级语言编程经验,没有看过对此更清晰的解释。我的意思是我理解什么是栈,但是它们到底是什么,在哪儿呢(站在实际的计算机物理内存的角度上看)?1、在通常情况下由操作系统(OS)和语言的运行时(runtime)控制吗?2、它们的作用范围是什么?原创 2016-01-25 22:00:35 · 493 阅读 · 0 评论 -
智力题
【绳子类】1、 一条绳子(粗细不均,长短不一),从一头点燃,全部烧完要耗时1个小时,问如何用这条绳子测出半个小时?(初级)2、 有一些绳子(粗细不均,长短不一),但是每根绳子点燃后都烧一个小时,问用什么方法可以用这些绳子计算45分钟的时间,计算1小时15分钟时间呢?(中级)(分析)这类题目比较简单。由于绳子是双向的,只需同时点燃绳子的两端,便可得到1/2小时的时间,这种方法原创 2016-02-08 19:38:33 · 689 阅读 · 0 评论 -
如何在github上fork一个项目来贡献代码以及同步原作者的修改
作为一个IT人,通过github进行学习是最快的成长手段。我们可以浏览别人的优秀代码。但只看不动手还是成长得很慢,因此为别人贡献代码才是明智之举。比如我们看下片看,许多大片都是由字幕组免费翻译压制的。为什么他们要这样做呢?因为他们都是聪明的大学生,为了提高听力水平,提高笔译水平才这样干的!中国人都是非常实务的!因此贡献代码,参与开源项目都是有益无害的!好了,让我们开始吧!如何贡献自己的力量原创 2016-03-06 12:25:52 · 448 阅读 · 0 评论 -
静态链接库与动态链接库的区别
静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件;动态链接就是把调用的函数所在文件模块(DLL)和调用函数在文件中的位置等信息链接进目标程序,程序运行的时候再从DLL中寻找相应函数代码,因此需要相应DLL文件的支持。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的原创 2016-03-30 17:08:47 · 413 阅读 · 0 评论 -
图解堆算法、链表、栈与队列
什么是堆堆(heap),是一类特殊的数据结构的统称。它通常被看作一棵树的数组对象。在队列中,调度程序反复提取队列中的第一个作业并运行,因为实际情况中某些时间较短的任务却可能需要等待很长时间才能开始执行,或者某些不短小、但很重要的作业,同样应当拥有优先权。而堆就是为了解决此类问题而设计的数据结构。二叉堆是一种特殊的堆,二叉堆是完全二叉树或者近似完全二叉树,二叉原创 2016-03-19 22:24:27 · 684 阅读 · 0 评论 -
python爬虫安装scrpay时遇到问题及解救方式
在虚拟环境中pip install scrapy 时遇到了问题报错:error: command 'x86_64-linux-gnu-gcc' failed with exit status 1解决方式:sudo apt-get install libxslt1-dev libxslt1.1 libxml2-dev libxml2 libssl-dev原创 2016-04-06 21:07:32 · 621 阅读 · 0 评论 -
Python使用traceback.print_exc()来代替print e 来输出详细的异常信息
[python] view plain copytry: 1/0 except Exception,e: print e 输出结果是integer division or modulo by zero,只知道是报了这个错,但是却不知道在哪个文件哪个函数哪一行报的错。下面使用traceback模块[pyt原创 2016-04-19 21:17:23 · 14807 阅读 · 0 评论 -
Python执行shell脚本的几种方式(最好用subprocess.Popen来替代os.system)
1. 使用os.system("cmd")这是最简单的一种方法,特点是执行的时候程序会打出cmd在linux上执行的信息。使用前需要import os。[python] view plain copy print?os.system("ls") 2. 使用Popen模块产生新的process现在大部分人都喜欢使用Popen。Popen方法不原创 2016-04-19 21:24:31 · 12330 阅读 · 0 评论 -
使用jad批量将class反编译为java时出现阻塞--解决办法
在使用jad反编译calss时,遇到难以反编译的class时会出现阻塞现象, 解决方式就是使用timeout来执行jad,如timeout 5 jad -sjava /home/,,,,,,,。这样就可以在发生阻塞时程序最多停止5s,再进行下次执行,而不是在这阻塞不动了原创 2016-04-19 22:03:38 · 454 阅读 · 0 评论 -
ubuntu14.04 安装 paramkio
paramkio是个python库实现了ssh协议,利用这个库可以实现ssh远程链接并执行远程命令。安装中可以使用 pip install paramiko,安装后使用时会提示importerror no module named cryptography.hazmat.backends ,此时使用 pip install cryptography来安装这个依赖,安装此依赖时还会提示No pa原创 2017-01-24 14:47:17 · 782 阅读 · 0 评论