零存整取
文章平均质量分 85
andylauren
嵌入式爱好者
展开
-
详解 awk 工具的使用方法
当你第一次拿起双手在电脑上使用 awk 命令处理一个或者多个文件的时候,它会依次读取文件的每一行内容, 然后对其进行处理,awk 命令默认从 stdio 标准输入获取文件内容, awk 使用一对单引号来表示 一些可执行的脚本代码,在可执行脚本代码里面,使用一对花括号来表示一段可执行代码块,可以同时存在多个代码块。 awk 的每个花括号内同时又可以有多个指令,每一个指令用分号分隔,awk 其实就是一个脚本编程语言。说了这么多,你肯定还是一脸的懵逼。你猜对了,上面这些都是废话。先别急,客官请往下看。。。aw转载 2021-04-08 15:36:44 · 773 阅读 · 0 评论 -
视觉直观感受 7 种常用的排序算法
1. 快速排序介绍:快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决转载 2016-05-30 10:46:29 · 589 阅读 · 0 评论 -
相似图片搜索的原理
2011年,Google把“相似图片搜索”正式放上了首页。你可以用一张图片,搜索互联网上所有与它相似的图片。点击搜索框中照相机的图标。一个对话框会出现。你输入网片的网址,或者直接上传图片,Google就会找出与其相似的图片。下面这张图片是美国女演员Alyson Hannigan。上传后,Google返回如下结果转载 2016-05-30 10:49:24 · 403 阅读 · 0 评论 -
为什么寄存器比内存快?
原文: Mike Ash译者: 阮一峰网址: http://www.ruanyifeng.com/blog/2013/10/register.html点击“阅读原文”,加入伯乐在线作者团队计算机的存储层次(memory hierarchy)之中,寄存器(register)最快,内存其次,最慢的是硬盘。同样都是晶体管存储设备,为什么寄存器比内存转载 2016-05-30 13:06:15 · 655 阅读 · 0 评论 -
编程需要知道多少数学知识?
英文: Al Sweigart译者: 伯乐在线 - 唐小娟网址: http://blog.jobbole.com/19348/下面是我在Reddit的子论坛 r/learnprogramming 看到的几个帖子:“要成为一个优秀的程序员需要学习多少数学?”“我应该重新学习数学吗?”“这可能是我提问过转载 2016-05-30 13:07:44 · 593 阅读 · 0 评论 -
如何编写让别人能读懂的代码?
作者:richieyang网址:http://www.cnblogs.com/richieyang/p/4840614.html随着软件行业的不断发展,历史遗留的程序越来越多,代码的维护成本越来越大,甚至大于开发成本。而新功能的开发又常常依赖于旧代码,阅读旧代码所花费的时间几乎要大于写新功能的时间。我前几天看了一本书,书中有这么一句话:“复杂的代码往往都是新转载 2016-05-30 13:09:47 · 753 阅读 · 0 评论 -
如果业界中不用高级算法和数据结构,那为什么还要学?
这个源自 Quora,题主还补充说:我和我认识的人从未用过任何高级算法和数据结构,我们中的有些人已经在业界工作 20 年了。你是如何激励自己去学习高级算法和数据结构的呢?或许,参加编程比赛会有点用…下面是来自 Jerason Banes 的回答,1.4 K+ 顶恭喜你!我刚把你的简历扔到“不要”的那堆中去了,嘴里还碎碎念叨着,「为转载 2016-06-15 13:32:36 · 2232 阅读 · 0 评论 -
大小端模式和处理器
一、一段历史端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。在计算机业Big Endi转载 2016-08-20 16:38:41 · 575 阅读 · 0 评论 -
玩转Bash变量
PS : 注意本文讨论的是Bash,而不一定是/bin/sh所链接的那个shell。这里出现的所有代码片段,默认在顶上都添加了#!/bin/bash。一门自带混淆的语言while (( $# )); do case $1 in -a*) # Error checking [[ ${1#-a} ]] || { echo转载 2016-09-11 15:17:35 · 2003 阅读 · 1 评论 -
具体对比智能家居有线技术和无线技术,各自优劣势在哪?
在技术层面,无线技术都能搞定的厂商做有线技术其实应该不是很大的门槛,同时毫无疑问,有线技术的厂商以后肯定会慢慢向无线技术伸展。一、智能家居有线(总线)技术1、现场总线现场总线是现代控制技术、计算机技术和通信技术相结合的产物。现场总线技术是近十年中蓬勃发展起来的新生事物,在实际工程应用中体现出其强大的生命力,控制网必将沿着现场总线方向发展,现场总线技术也必将是控制网技术的转载 2016-08-22 13:03:05 · 8244 阅读 · 0 评论 -
linux中断处理原理分析
Tasklet作为一种新机制,显然可以承担更多的优点。正好这时候SMP越来越火了,因此又在tasklet中加入了SMP机制,保证同种中断只能在一个cpu上执行。在软中断时代,显然没有这种考虑。因此同一种中断可以在两个cpu上同时执行,很可能造成冲突。Linux中断下半部处理有三种方式:软中断、tasklet、工作队列。曾经有人问我为什么要分这几种,该怎么用。当时用书上的东西蒙混了过去,但是转载 2016-09-17 10:04:12 · 418 阅读 · 0 评论 -
Linux 下 CPU 使用率与机器负载的关系与区别
当我们使用top命令查看系统的资源使用情况时会看到 load average,如下图所示。它表示系统在1、5、15分钟的平均工作负载。那么什么是负载(load)呢?它和CPU的利用率又有什么关系呢?load average:系统平均负载是CPU的Load,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的转载 2016-09-17 10:27:09 · 7786 阅读 · 0 评论 -
Linux VFS 文件系统结构分析
VFS是Linux非常核心的一个概念,linux下的大部分操作都要用到VFS的相关功能。这里从使用者的角度,对VFS进行了简单说明。使用者不但需要知道Linux下有哪些文件操作的函数,还需要对VFS的结构有一个比较清晰的了解,才能更好的使用它。例如hard link 与symbolic,如果没有VFS结构的相了解,就无法搞清楚如何使用它们。本文首先是建立了一个简单的目录模型,然后介绍该目录在V转载 2016-09-17 10:45:02 · 2465 阅读 · 0 评论 -
HTTP 协议入门
HTTP 协议是互联网的基础协议,也是网页开发的必备知识,最新版本 HTTP/2 更是让它成为技术热点。本文介绍 HTTP 协议的历史演变和设计思路。一、HTTP/0.9HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。最早版本是1991年发布的0.9版。该版本极其简单,只有一个命转载 2016-09-17 18:59:41 · 231 阅读 · 0 评论 -
偏执却管用的10条Java编程技巧
经过一段时间的编码(咦,我已经经历了将近20年的编程生涯,快乐的日子总是过得很快),我们开始感谢那些好习惯。因为,你知道…“任何可能出错的事情,最后都会出错。”这就是人们为什么喜欢进行“防错性程序设计”的原因。偏执的习惯有时很有意义,有时则不够清晰也不够聪明,也许当你想到这样写的人的时候还会觉得有点怪异。下面是我列出的的个人感觉最有用而又偏执的 10 项 Java 编程技巧。请看:转载 2016-09-18 09:20:46 · 303 阅读 · 0 评论 -
Leap Motion 的原理
從 API 的角度大概說一下。Leap Motion 傳感器的結構:大體上,Leap 傳感器根據內置的兩個攝像頭從不同角度捕捉的畫面,重建出手掌在真實世界三維空間的運動信息。檢測的範圍大體在傳感器上方 25 毫米到 600 毫米之間,檢測的空間大體是一個倒四棱錐體。首先,Leap Motion 傳感器會建立一個直角座標系,座標的原點是傳感器的中心,座標的 X 軸平行於傳感器,指转载 2016-08-26 11:46:27 · 4060 阅读 · 0 评论 -
HTTP长连接和短连接
1. HTTP协议与TCP/IP协议的关系HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。2. 如何理解HTTP协议是无状态的转载 2016-09-18 10:34:49 · 323 阅读 · 0 评论 -
编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程
原文:http://blog.csdn.net/luoweifu/article/details/46595285 作者:luoweifu 转载请标名出处什么是线程什么是线程?线程与进程与有什么关系?这是一个非常抽象的问题,也是一个特别广的话题,涉及到非常多的知识。我不能确保能把它讲的话,也不能确保讲的内容全部都正确。即使这样,我也希望尽可能地把他讲通俗一点,讲的明白一点,因为转载 2016-09-19 10:09:05 · 297 阅读 · 0 评论 -
编程思想之多线程与多进程(2)——线程优先级与线程安全
原文:http://blog.csdn.net/luoweifu/article/details/46701167 作者:luoweifu 转载请标名出处《编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程》一文详细讲述了线程、进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础。本文将接着讲一下线程优先级和线程安全。线程优先级现在主流转载 2016-09-19 10:18:23 · 411 阅读 · 0 评论 -
字符编码
你是否认为“ASCII码 = 一个字符就是8比特”?你是否认为一个字节就是一个字符,一个字符就是8比特?你是否还认为你是否还认为UTF-8就是用8比特表示一个字符?如果真的是这样认为认真读完这篇文章吧!为什么要有编码?首先大家需要明确的是在计算机里所有的数据都是字节的形式存储,处理的。我们需要这些字节来表示计算机里的信息。但是这些字节本身又是没有任何意义的,所以我们需要对这些字节赋予实转载 2016-09-19 10:49:43 · 303 阅读 · 0 评论 -
DHCP的基本实现原
DHCP几个概念:DHCP Client:DHCP客户端,通过DHCP协议请求IP地址的客户端。DHCP客户端是接口级的概念,如果一个主机有多个以太接口,则该主机上的每个接口都可以配置成一个DHCP 客户端。交换机上每个Vlan接口也可以配置成一个DHCP客户端。DHCP Server:DHCP 服务端,负责为DHCP客户端提供IP地址,并且负责管理分配的IP地址。DHCP Relay转载 2016-09-19 11:18:47 · 1460 阅读 · 0 评论 -
如何写出优美的 C 代码
面向对象的 C面向对象的语言更接近人的思维方式,而且在很大程度上降低了代码的复杂性,同时提高了代码的可读性和可维护性,传统的 C 代码同样可以设计出比较易读,易维护,复杂度较低的优美代码,本文将通过一个实际的例子来说明这一点。基础知识结构体除了提供基本数据类型外,C 语言还提供给用户自己定制数据类型的能力,那就是结构体,在 C 语言中,你可以用结构体来表示任何实体。结构体正是面转载 2016-09-20 09:30:26 · 456 阅读 · 0 评论 -
内存池技术畅想
内容:本文将介绍几种常用的内存池技术的实现,这是我最近学习各大开源的内存池技术遗留下来的笔记,其主要内容包括:STL内存池以及类STL内存池实现Memcached内存池实现固定规格内存池实现 Nginx内存池实现 一.类STL的内存池实现方式SGI STL的内存池分为一级配置器和二级配置器,一级配置器主要处理分配空间大小大于128Byte的需求,其内部实现就是直转载 2016-09-20 09:50:58 · 716 阅读 · 0 评论 -
聊聊同步、异步、阻塞与非阻塞
近来遇到了一些常见的概念,尤其是网络编程方面的概念,如:阻塞、非阻塞、异步I/O等等,对于这些概念自己也没有太清晰的认识,只是很模糊的概念,说了解吧也了解,但是要让自己准确的描述概念方面的具体细节,却说的不那么准确,这也是自己在这几个方面也没有细细考究过的原因吧。经过看了些这几个概念的资料,发现同步、异步、阻塞、非阻塞的概念其实也并不难以理解,在此写下此文,欢迎拍砖,希望多多交流。转载 2016-09-23 12:38:46 · 281 阅读 · 0 评论 -
聊聊Socket、TCP/IP、HTTP、FTP及网络编程
1 这些都是什么既然是网络传输,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或几台主机,另一个是如何进行可靠高效的数据传输。这里就要使用到TCP/IP协议。1.1 TCP/IP协议组TCP/IP协议(传输控制协议)由网络层的IP协议和传输层的TCP协议组成。IP层负责网络主机的定位,数据传输的路由,由IP地址可以唯一的确定Internet上的一台主机。转载 2016-09-23 20:51:34 · 468 阅读 · 0 评论 -
每一个程序员需要了解的10个Linux命令
作为一个程序员,在软件开发职业生涯中或多或少会用到Linux系统,并且可能会使用Linux命令来检索需要的信息。本文将为各位开发者分享10个有用的Linux命令,希望对你会有所帮助。以下就是今天我们要介绍的Linux命令:mantouch, cat and lesssort and grepcutsedtarfinddiffuniqchmod接下来让转载 2016-09-20 17:51:02 · 416 阅读 · 0 评论 -
提高代码质量:如何编写函数
函数是实现程序功能的最基本单位,每一个程序都是由一个个最基本的函数构成的。写好一个函数是提高程序代码质量最关键的一步。本文就函数的编写,从函数命名,代码分布,技巧等方面入手,谈谈如何写好一个可读性高、易维护,易测试的函数。命名首先从命名说起,命名是提高可读性的第一步。如何为变量和函数命名一直是开发者心中的痛点之一,对于母语非英语的我们来说,更是难上加难。下面我来说说如何为函数命名的一些想法转载 2016-09-21 09:30:18 · 321 阅读 · 0 评论 -
73条日常Linux shell命令汇总,总有一条你需要!
1.检查远程端口是否对bash开放:echo >/dev/tcp/8.8.8.8/53 && echo "open"2.让进程转入后台:Ctrl + z3、将进程转到前台:fg4.产生随机的十六进制数,其中n是字符数:openssl rand -hex n5.在当前shell里执行一个文件里的命令:source转载 2016-09-21 09:32:03 · 609 阅读 · 0 评论 -
聊聊 Linux 中的五种 IO 模型
上一篇《聊聊同步、异步、阻塞与非阻塞》已经通俗的讲解了,要理解同步、异步、阻塞与非阻塞重要的两个概念点了,没有看过的,建议先看这篇博文理解这两个概念点。在认知上,建立统一的模型。这样,大家在继续看本篇时,才不会理解有偏差。那么,在正式开始讲Linux IO模型前,比如:同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定转载 2016-09-25 11:18:30 · 435 阅读 · 0 评论 -
聊聊IO多路复用之select、poll、epoll详解
IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合:当客户处理多个描述符时(一般是交互式输入和网络套接口),必须使用I/O复用。当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。如果一个服务转载 2016-09-25 11:22:27 · 465 阅读 · 0 评论 -
Linux Shell 文本处理工具集锦
本文将介绍Linux下使用Shell处理文本时最常用的工具:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk;提供的例子和参数都是最常用和最为实用的;我对shell脚本使用的原则是命令单行书写,尽量不要超过2行;如果有更为复杂的任务需求,还是考虑python吧;find 文件查找查找txt和pdf文件 find转载 2016-09-22 08:49:34 · 414 阅读 · 0 评论 -
4 张 GIF 图帮助你理解二叉查找树
二叉查找树(Binary Search Tree),也称二叉搜索树,是指一棵空树或者具有下列性质的二叉树:任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;任意节点的左、右子树也分别为二叉查找树;没有键值相等的节点。二叉查找树相比于其他数据结构的优势在于查找、插入的时间复杂度较低。为O(log n)。转载 2016-09-22 09:00:46 · 332 阅读 · 0 评论 -
如何选择开源许可证?
如何为代码选择开源许可证,这是一个问题。世界上的开源许可证,大概有上百种。很少有人搞得清楚它们的区别。即使在最流行的六种:GPL、BSD、MIT、Mozilla、Apache和LGPL,如何在这之中做选择,也很复杂。乌克兰程序员 Paul Bagwell,画了一张分析图,说明应该怎么选择。这是我见过的最简单的讲解,只用两分钟,你就能搞清楚这六种许可证之间的最大区别。转载 2016-09-22 09:06:46 · 305 阅读 · 0 评论 -
面试中的排序算法总结
前言 查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想,灵活运用也不是难事。一般在面试中最常考的是快速排序和归并排序,并且经常有面试官要求现场写出这两种排序的代码。对这两种排序的代码一定要信手拈来才行。还有插入排序、冒泡排序、堆排序、基数排序、桶排序等。面试官对于这些排转载 2016-09-25 11:41:37 · 258 阅读 · 0 评论 -
学 Vim 时希望早点知道的建议
从 2009 年开始,我就一直把 Vim 当做我的主要(唯一)文本编辑器。在过去的这些年,我学到了很多好用的 Vim 技巧,它们令我感觉相见恨晚,因为它们极大地提高了我的文本编辑效率。在这篇博文中,我想与你们分享其中的最精华部分。HJKLVim 新手通常会收到的第一条建议是“使用 h/j/k/l 键代替方向键!”在很长一段时间,我都忽略了这一条建议因为我觉得那很荒谬:我究竟为何非得转载 2016-10-16 14:35:40 · 1807 阅读 · 0 评论 -
15 分钟学会使用 Git 和远程代码库
Git是个了不起但却复杂的源代码管理系统。它能支持复杂的任务,却因此经常被认为太过复杂而不适用于简单的日常工作。让我们诚实一记吧:Git是复杂的,我们不要装作它不是。但我仍然会试图教会你用(我的)基本的Git和远程代码库干活的工作步骤,在15分钟内。工作步骤我会展示以下的步骤,通常能帮我独自在一台或多台机器上做项目。创建一个远程的空代码库(在BitBucket上)转载 2016-10-16 14:32:49 · 310 阅读 · 0 评论 -
Linux 平台下阅读源码的工具链
前言看源代码是一个程序员必须经历的事情,也是可以提升能力的一个捷径.个人认为: 要完全掌握一个软件的方法只有阅读源码。在Windows下有sourceinsight这个源码阅读软件(虽然我没用过,但是网上评价还不错),由于我是个Linuxer,并不喜欢用Windows,所以自然是选择在Linux下阅读源码的工具了.下面我将逐一介绍在Linux下阅读源码的工具.vim转载 2016-10-16 14:30:21 · 494 阅读 · 0 评论 -
通过完整示例来理解如何使用 epoll
网络服务器通常使用一个独立的进程或线程来实现每个连接。由于高性能应用程序需要同时处理大量的客户端,这种方法就不太好用了,因为资源占用和上下文切换时间等因素影响了同时处理大量客户端的能力。另一种方法是在一个线程中使用非阻塞 I/O,以及一些就绪通知方法,即当你可以在一个套接字上读写更多数据的时候告诉你。本文介绍了 Linux 的 epoll(7) 机制,它是 Linux 最好的就绪通知机制。转载 2016-09-25 11:48:41 · 1684 阅读 · 0 评论 -
Linux 软中断机制分析
软中断分析最近工作繁忙,没有时间总结内核相关的一些东西。上次更新博客到了linux内核中断子系统。这次总结一下软中断,也就是softirq。之后还会总结一些tasklet、工作队列机制。1.为什么要软中断编写驱动的时候,一个中断产生之后,内核在中断处理函数中可能需要完成很多工作。但是中断处理函数的处理是关闭了中断的。也就是说在响应中断时,系统不能再次响应外部转载 2016-10-29 22:10:09 · 699 阅读 · 0 评论 -
Wireshark基本介绍和学习TCP三次握手
wireshark介绍wireshark的官方下载网站: http://www.wireshark.org/wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。wireshark是开源软件,可以放心使用。 可以运行在Windows和Mac OS上。 使用wireshark的人必须了解网络协议,否则就看不转载 2016-11-28 20:40:55 · 299 阅读 · 0 评论