- 博客(58)
- 资源 (2)
- 收藏
- 关注
原创 传统机顶盒(STB)知识框架
传统机顶盒(STB)知识框架毕业后在现在的这家公司也呆了两年多了,一开始做电视墙,一种广电运营商用于对节目状态如无音轨、马赛克、黑屏等异常事件进行监控并报警的设备。后来因项目需要转去做传统机顶盒开发也将近一年。现在准备走出去到外面看看,吸收其他方面的知识,所以不打算继续在机顶盒行业发展了。所以用XMind做了这张图(XMind平时也可以应用在工作和日常生活上,值得推荐)。
2017-08-14 00:48:00 2362 2
转载 提高 Linux 上 socket 性能
加速网络应用程序的 4 种方法使用 Sockets API,我们可以开发客户机和服务器应用程序,它们可以在本地网络上进行通信,也可以通过 Internet 在全球范围内进行通信。与其他 API 一样,您可以通过一些方法使用 Sockets API,从而提高 Socket 的性能,或者限制 Socket 的性能。
2016-10-27 20:40:16 775
原创 apt-get使用代理
公司限制我们上网,一般查资料只有一台公用电脑可以上网,所以我们在上面装了CCproxy来代理上网。 (吐槽:全公司这么多部门偏偏只有我们软件部不给上网这不科学!!!) Linux上想要安装新软件,以为直接执行一下 export http_proxy="http://192.168.1.155:808" 就好了,结果发现不行。
2016-10-25 01:09:45 5856 1
转载 当你喜刷刷时,你可知为何朋友圈能这么流畅?
朋友圈已让人欲罢不能。有人说,早上睁眼第一件事情,是刷朋友圈;晚上睡觉最后一件事情,还是刷朋友圈。这背后是海量的信息数据和查看请求。如此庞杂的数据,微信却做到了流畅的体验,一切井然有序,刷一下就搞定。只要网络状况良好,再多的数据量,也能“喜刷刷”。 那么,朋友圈如何保障流畅?
2016-10-24 21:21:45 1004
原创 sparse image
在使用make_ext4fs的时候有一个参数为-s,意思是sparse。使用这个参数制作出来的镜像就是sparse image。当时不明白是什么意思,所以查找了一下并记录下来。 简单地来说,sparse image是一种需要多少空间就分配多少的镜像(虚拟机的磁盘镜像文件就是这种镜像,虽然安装系统时候指定了磁盘大小,但占用的磁盘空间并没有那么大,而是随里面的文件大小增大而变大)。
2016-09-12 21:41:20 9454
原创 网络字节序与主机字节序的转换
前言端口号和IP地址都是以网络字节序存储的,不是主机字节序。网络字节序都是大端模式,而我们常用的机器都是小端模式。要把主机字节序和网络字节序相互对应起来,需要对这两个字节存储优先顺序进行相互转化。其实这个转换实质是:字节“搬家”。 先分析一下我们平时使用ntohl、ntohs、htonl、htons函数是怎么实现的,然后在本文最后写一个判断机器是大/小端的函数。
2016-08-12 14:04:56 886
原创 libcurl之cookie操作
C编程需要网页请求时当然首选libcurl库啦,涉及到登录的肯定需要对cookie操作了。所以本文主要是记录一下接收和发送cookie的方法,以及需要注意的地方。 1、发送(往curl导入)cookie的两个方法2、获取(从curl导出)cookie的方法......
2016-07-15 21:38:13 12201 1
原创 关于网页分析一些技巧
这篇文章不是讲网页调试的步骤,只是记录一些调试过程中能给我们带来便利的技巧。主要是最近一直探究网页版微信的协议,都是在实战中得到的比较有用的技巧。 本文以谷歌浏览器为例(F12)1、调试前做一些配置上的准备工作(1)设置网页跳转时,已抓取的数据不被清除掉(2)清除旧的cookie和缓存...
2016-07-14 01:32:41 11847 3
原创 WEB版微信协议部分功能分析
更新不知道是不是因为网页版微信的console.log问题被发现(可以看看知乎这里),中秋假期里出了新版本,有一些地方改了。但具体哪里改了还没时间去深究,不过可以发现同步更新的时间间隔改成了25s,如下图:
2016-06-30 23:03:44 81430 49
原创 函数strdup()
说明 功能:将字符串拷贝到新建的位置处 注意:strdup()在内部调用了malloc()为变量分配内存,不需要使用返回的字符串时,需要用free()释放相应的内存空间,否则会造成内存泄漏。原型char *strdup(const char *s);头文件:#include <string.h>返回值 返回一个指针,指向为复制字符串分配的空间。如果分配空间失败,则返回NULL值。实例#inc
2015-04-09 11:45:50 4271
原创 函数getopt_long_only()
第一次接触这个函数,是因为学习mjpg-streamer的源码。函数作用:对命令行选项进行解析。函数出处 头文件getopt.h中:#include <getopt.h>int getopt_long_only(int argc, char * const argv[], const char *optstring, con
2015-04-09 11:40:45 1176
原创 GTK编程:button控件与消息事件
实现功能:没什么特定功能,只是为了熟悉一下button控件和消息事件而已(弥补上一个程序没有实现的消息事件)/* File: button_hello.c * Date: Tue Mar 24 14:58:06 HKT 2015 * Describe: a simple button show * Autor: won */#include <gtk/gtk.h>#include <st
2015-03-31 23:35:39 2097
原创 GTK编程:将图片文件按指定比例显示
实现功能:将指定的图片文件按指定比例在窗体中显示注意:这段代码没有信号处理的实现,当点击关闭窗体的时候,虽然窗体关闭了,但程序并没有真正退出。/* File: SizeShow.c * Date: Mon Mar 27 15:36:09 HKT 2015 * Describe: Show the picture with the specified size * Autor: won */
2015-03-31 23:21:12 2045
原创 GTK编程:获取屏幕分辨率
最近开始学习GTK+图形界面编程了,先写一些非常基础的程序。这个程序实现的功能是:获取屏幕的分辨率。/* File: ScreenParam.c * Date: Mon Mar 23 16:41:27 HKT 2015 * Describe: Print the screen resolution * Autor: won */#include <gtk/gtk.h>#include <s
2015-03-31 21:09:13 2459
转载 pthread_create如何传递两个参数以上的参数
涉及多参数传递给线程的,都需要使用结构体将参数封装后,将结构体指针传给线程 定义一个结构体 struct mypara { var para1;//参数1 var para2;//参数2 } 将这个结构体指针,作为void *形参的实际参数传递 struct mypara pstru; pthread_create(&ntid, NU
2014-12-04 19:16:42 1102
原创 判断Linux系统是32位还是64位
方法1:执行以下命令:---------------------------$ getconf LONG_BIT---------------------------如果输出32即为32位系统,输出64即为64位系统 方法2:执行以下命令:---------------------------$ uname -a---------------------
2014-11-30 21:38:04 989
原创 uname -a输出内容分析
虽然很早就会用这条命令了,但一直都不知道输出的各部分表示什么,如下:----------------------------------------------------------------------------$ uname -aLinux ubuntu3.2.0-29-generic-pae #46-Ubuntu SMP Fri Jul 27 17:25:43 UTC 20
2014-11-30 21:33:29 51471 4
原创 使用apt-get出现“Could not get lock...”的解决方法
使用apt-get 安装软件的时候出现以下错误--------------------------------------------------------------------------------------------------------------$ sudo apt-get install hostapdE: Could not get lock /var/lib/
2014-11-30 01:32:24 4801
原创 执行make menuconfig出现“Unable to findthe ncurses libraries”的解决方法
更新Ubuntu的内核时,执行make menuconfig出现如下错误:---------------------------------------------------------------------------------------*** Unable to findthe ncurses libraries or the*** required headerfil
2014-11-30 01:27:01 1133 1
原创 ushare编译之 ‘struct sockaddr_storage’ has no member named ‘s_addr’
编译ushare的时候出现‘struct sockaddr_storage’ has no member named ‘s_addr’这是使用libupnp1.6.19出现版本不兼容的错误。解决方法:libupnp换成1.4.2版本配置:-------------------------------------------------------------------
2014-10-31 00:57:34 4998 1
原创 DLNA之 Error, can't findlibavformat ! 解决方法
DLNA库版本为libdlna-0.2.4执行./configure出错:------------------------------Error, can't findlibavformat ! -------------------------------------------- 查看config.log文件:------------------------
2014-10-27 15:07:14 2332
原创 undefined reference to `av_close_input_file' 原因分析
这是使用libdlna0.2.4与ffmpeg2.4.2搭配遇到的问题解决方法是使用ffmpeg2.2.9版本(更久的版本没测试过),或者坚持要使用ffmpeg2.4.2版本的话,只需将…/ffmpeg-2.4.2/libavformat/version.h文件中一点点内容进行修改:
2014-10-27 09:44:00 6907
转载 Linux静态库与动态库的详解
库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 一、静态库和动态库的区别1. 静态函数库这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大--空间,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为
2014-10-25 01:47:55 613
原创 中星ZC3XX摄像头驱动在内核中的配置
前几天有同学要做关于摄像头的项目,是中星微的ZC301摄像头,在配置内核的时候找不到驱动。刚好我之前做过相关的项目,所以一会儿就找到了,现在把它放出来,方便以后需要的道友。执行make menuconfig之后进入:----------------------------------------------------------------------------------------
2014-10-20 14:15:25 2507
转载 Linux文件系统十问,你知道吗?
作者:yanfei,腾讯后台架构师,参与项目为搜搜网页开发和搜搜开放平台。 关于文件系统,相信大家都不陌生。身为攻城狮的我们几乎天天都会与之打交道,但是细深剖一下,其中又有多少是我们理解深度不够的呢。那么让我们一起来看一下下面这一组Linux文件系统相关的问题吧:1、机械磁盘随机读写时速度非常慢,操作系统是采用什么技巧来提高随机读写的性能的?2、touch一个新
2014-10-12 12:48:16 860
转载 lds文件浅析
.lds文件定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。GNU官方网站上对.lds文件形式的完整描述:SECTIONS{...secname start BLOCK(align) (NOLOAD):AT (ldadr) {contents} >region:phdr=fill...}secname和contents是必须的,其他的都是可选的。
2014-10-08 11:39:34 4925
原创 串口初始化
//初始化IO 串口1//pclk2:PCLK2时钟频率(Mhz)//bound:波特率//CHECK OK//091209void uart_init(u32 pclk2,u32 bound){ float temp; u16 mantissa; u16 fraction; temp=(float)(pclk2*1000000)/(bound*16);//得到
2014-09-12 21:19:26 3665
原创 C语言实现对文件内容进行修改
项目中需要实现对文件内容进行修改,所以有了以下的测试程序,其中遇到了很多问题,在这一一记录下来。其实实现原理很简单,首先是要实现定位到所需要的字段的那一行,之后再对指定字段进行修改。在我接触了shell编程后,觉得shell编程会很容易实现(网上说可以用sed命令,还没接触过,有时间再弄弄)。但是由于C语言是面向过程的语言,需要顺序执行的特点,所以,实现中遇到了很多麻烦。首先,需要
2014-09-06 16:10:38 33765 4
转载 Dash与Bash的语法区别
如今Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准,下面简要列举下从bash迁移到dash一般需要注意的问题1.定义函数bash: function在bash中为关键字12345
2014-09-04 19:57:51 2997
原创 定时修改本机ip的脚本
因为测试需要,要写一个定时修改本机ip的程序,听说用shell编写比较简单明了,所以用shell写了(本人第一次用shell编程)。#!/bin/bash while truedoip_last=$((($RANDOM%255)+1))echo now ip is: 192.168.1.$ip_lastifconfig eth0 192.168.1.$ip_lastsl
2014-09-04 19:33:08 1968
原创 结构体转化成字符数组
昨天晚上在解决通过socket发送结构体的问题的时候,知道了可以将结构体先转化成字符串的形式再发送,但今天之前一直有个疑问没有解决(为了方便描述,去掉socket部分),首先看下代码:#include #include #include typedef struct info{ char name[5]; char num[10];}INFO;int main(){ I
2014-09-02 11:07:00 9175 4
原创 Kernel panic之"eth0: no IPv6 routers present"的解决方法
昨天开发板开机启动时候,出现了点状况:PS:根文件系统是通过挂载的形式运行的,之前一直都是好好的没问题。kernel panic的问题不是没遇到过,但下面这错误信息“eth0: no IPv6 routers present”就第一次见了,百度了很久也没找到什么解决方法,然后就走了。今天又过来折腾,没办法,一定要解决啊,不过问题总算是解决了:当时我想,是不是linu
2014-08-30 16:41:01 6553
原创 获取本机ip(成功版)
参照网上用ioctl的SIOCGIFCONF方法获取本地ip成功,代码如下:#include #include /* for exit() */#include #include /* for socket() */#include /* for socket() */#include
2014-08-30 13:12:20 1629
AT指令集.doc
2017-11-30
常用的邮箱服务器(SMTP、POP3)地址、端口
2017-11-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人