Linux & 计算机基础
文章平均质量分 57
Linux & 计算机基础
master-dragon
weixin:dwl_1270530306
展开
-
抽样随机算法
水塘抽样/蓄水池抽样算法(Reservoir Sampling)问题:对一个数量未知的样本,希望只经过一次遍历就完成随机抽样,即时间复杂度O(n)。因为样本数量未知,因此就不能通过random函数直接随机抽样。解法:我们总是选择第一个对象,以1/2的概率选择第二个,以1/3的概率选择第三个,以此类推,以1/m的概率选择第m个对象。当该过程结束时,每一个对象具有相同的选中概率,即1/n第m个对象最终被选中的概率P=选择m的概率*其后面所有对象不被选择的概率,即选择m的概率 : 1 / mm后某个原创 2022-04-25 22:54:15 · 1341 阅读 · 0 评论 -
几种垃圾回收机制
参考 http://www.2cto.com/kf/201110/108419.htmlhttp://www.cnblogs.com/nele/p/5673215.html1.引用计数算法引用计数(Reference Counting)算法是每个对象计算指向它的指针的数量,当有一个指针指向自己时计数值加1;当删除一个指向自己的指针时,计数值减1,如果计数值减为0,说明已经不存在指向该对象的指针了,转载 2016-12-18 16:44:17 · 5916 阅读 · 0 评论 -
linux yum命令
yum常用命令在软件包详细信息中搜索指定字符串$yum search tree列出可以安装的所有软件包$yum list列出已经安装了的软件包 (结合 | grep wc等命令)$ yum list installed列出所有可更新的软件包$ yum list updates查看gcc是否安装,是否可以更新 更新软件$yum update 软件名称 例 yum update gcc原创 2017-06-24 12:52:27 · 335 阅读 · 0 评论 -
Centos下 rpm 打补丁,patch
CentOS下 helloworld rpm制作参考http://blog.csdn.net/qq_26437925/article/details/73691983请务必先学会如何制作rpm, 再看本文修改源文件,生成补丁文件/SOURCES 下是原来的的tar.gz可以先备份下,先解压tar包,然后修改里面的源文件。明确一点,我们拥有原来的文件,加上补丁文件(补丁就是新与就的区别),就可以重新生原创 2017-06-28 21:37:14 · 10744 阅读 · 1 评论 -
linux 线程同步问题
互斥量和条件变量#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <pthread.h>#include <time.h>#define MAX 10pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;pthread_cond_t cond = PTHREAD_转载 2017-03-12 21:59:13 · 345 阅读 · 0 评论 -
linux下动态库.so制作与使用实践(ubuntu14.04)
静态库制作和使用实践,见上一篇博文 http://blog.csdn.net/qq_26437925/article/details/51541717linux 动态库 .so 实践如下: 基本文件同上一个静态库的文件,目录如下 除了Makefile文件外,其他文件都是相同的。动态库生成需要使用的是 gcc -shared -fPIC 而不是 静态库的ar名利Makefile.PHONY:原创 2017-03-07 11:12:33 · 1617 阅读 · 0 评论 -
linux socket 封装HTTP请求数据
HTTP协议数据格式参考如下 http://www.tuicool.com/articles/jMFfIv懂得数据格式就可以开始模拟HTTP 请求了nginx+lua 服务端搭建服务器采用了nginx + lua,写一个简单的处理http请求的例子 具体参考如下 http://blog.csdn.net/qq_26437925/article/details/50946025检测一下curl原创 2017-03-18 14:13:24 · 5178 阅读 · 0 评论 -
linux c cal简单实现
源码地址: https://github.com/doctording/mycal原创 2016-10-05 19:10:19 · 1147 阅读 · 0 评论 -
进程同步问题-生产者消费者问题(linux semaphore实现)
本文地址:学习目标: * linux 线程 * linux 信号(Semaphore)的使用 * makefile书写 * 生产者,消费者问题理解原文参考 csdn博客专家:MoreWindows 秒杀多线程第十篇 生产者消费者问题 http://blog.csdn.net/lisonglisonglisong/article/details/45390227linux ftok()原创 2016-09-23 15:16:03 · 3969 阅读 · 0 评论 -
rpm常用命令,需要对比学习yum命令
查询某个已安装的文件(程序,命令)属于哪个rpm包rpm -q查询已安装软件包都安装到何处(例关于上面的helloworld,都安装了那些内容)rpm -ql 软件名 #ql都要,不要漏掉q查看已安装软件的配置文件,文档rpm -qc # 配置文件rpm -qd # 文档查看一件软件包(.rpm文件)所包含的文件rpm -qpl xx.rpm查看一下已安装软件所依赖的软件包及文件原创 2017-07-01 10:42:32 · 551 阅读 · 0 评论 -
Linux判断当前机器是虚拟机还是物理机--dmidecode命令
术语(自行google,baidu)DMI DMI (Desktop Management Interface, DMI)的主要组成部分是Management InformationFormat (MIF)数据库。这个数据库包括了所有有关电脑系统和配件的信息。通过DMI,用户可以获取序列号、电脑厂商、串口信息以及其它系统配件信息。SMBIOS System Management BIOS,S原创 2017-07-17 20:59:17 · 6881 阅读 · 0 评论 -
Centos 建立本地yum仓库 查看,安装,卸载
准备一个rpm,参考helloworld rpm的制作http://blog.csdn.net/qq_26437925/article/details/73691983安装createrepo rpm(createrepo命令使用自行搜索)创建一个目录/home/john/mypakages/local-yum// 该命令建立repodata文件夹,自定的yum源$createrepo -p原创 2017-06-24 19:10:36 · 7141 阅读 · 0 评论 -
Centos环境下 helloworld rpm的制作,安装,卸载
安装rpm-build,rpmdevtools等工具我的制作目录在 /root/rpmbuild/下,用户直接root刚开始的目录文件如下,其他目录都是空的SOURCES│ └── helloworld-0.1-1.tar.gzSPECS│ └── helloworld.spectar中的文件内容如下├── helloworld│ ├── configure│ ├── h原创 2017-06-24 14:56:39 · 1814 阅读 · 0 评论 -
Linux expect(自动化控制和测试工具)
http://www.jb51.net/article/103075.htm#!/usr/bin/expectset user [lindex $argv 0]set ip [lindex $argv 1]set passwd [lindex $argv 2] set timeout 10 spawn ssh $user@$ipexpect {"(yes/no)" { send "yes\r转载 2017-09-13 16:12:50 · 662 阅读 · 1 评论 -
linux 平均负载即相关命令
转载http://www.cnblogs.com/ghj1976/p/5611220.htmlhttp://www.cnblogs.com/kaituorensheng/p/3602812.html平均负载(load average)是指系统的运行队列的平均利用率,也可以认为是可运行进程的平均数。一般的进程需要消耗CPU、内存、磁盘I/O、网络I/O等资源,在这种情况下,平均负载就不是单独指的CPU转载 2017-09-19 15:02:58 · 533 阅读 · 0 评论 -
Linux traceroute命令
基本功能该命令用于测试两个TCP/IP系统之间的网络层连通性和显示传输路径中每一跳地址,又称为路径跟踪,如果Traceroute命令测试成功,我们能够观察到从源主机到目的主机之间的一条完整的通信路径,能够明确的观察到路径的每一跳信息;该命令还能准确输出测试包到每一跳的通信延迟时间。如果测试失败,也能够明确定位是哪一跳设备不能正常转发,该工具还能够测试路由是否选择最佳路径,是否存在非对称路径等问题,在转载 2017-09-21 11:14:08 · 1051 阅读 · 0 评论 -
shell 编程实例学习
1 删除普通空文件当前目录下 新建 rm_empty_file.sh ,运行后删除当前目录下的空文件#!/bin/bashls > filesfor file in `cat files`do if [ ! -s $file ] then rm -i $file fi donerm -rf files#!/bin/bashfor file in $(l原创 2016-04-28 20:13:56 · 5153 阅读 · 0 评论 -
linux fork相关题目
求解可以采用如下的方式 i = 2的情况,在ubuntu下能打印出6个* printf(“\n”) 与否例子fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值: 1)在父进程中,fork返回新创建子进程的进程ID; 2)在子进程中,fork返回0; 3)如果出现错误,fork返回一个负值;fork出错可能有两种原因: 1)当前的进程数已经达原创 2017-02-15 17:50:59 · 443 阅读 · 0 评论 -
find grep等命令的使用整理,提高效率,Todo
主要是实际工作中比较常用的一些,长期不玩,容易忘记,稍微整理回顾下以下通过mac bash实践,linux可能不一样,man find命令查看下find根据文件名称的查找最常用,特别是模糊文件名的查找,工作中总是容易忘记具体是什么文件,记得很模糊查找当前目录即其所有子目录下的 以t打头,.txt结尾的文件(这里的文件指所有类型,当然包括了目录之类的文件)find ...转载 2018-05-09 13:02:57 · 1538 阅读 · 0 评论 -
linux 文件恢复
原文地址: IBM developerWorks 曹元其 软件工程师 http://www.ibm.com/developerworks/cn/linux/1312_caoyq_linuxrestore/转载 2016-09-21 18:47:58 · 330 阅读 · 0 评论 -
shell学习
Shell基础shell概述1 shell是什么2 脚本执行方式脚本例子#!/bin/bash#这是第一个shell脚本的注释echo -e "\e[1;36m 从hello world开始 \e[0m"赋予执行权限,直接运行 chmod 755 hello.sh ./hell.sh通过bash调用执行脚本 bash hello.shBash的基本功能命名别名与快捷键原创 2016-04-24 21:16:30 · 641 阅读 · 0 评论 -
分析一个设备驱动程序结构
http://blog.jobbole.com/86531/原创 2015-10-31 13:51:33 · 507 阅读 · 0 评论 -
linux 学习网址
实验楼 https://www.shiyanlou.com/原创 2015-10-15 11:25:34 · 317 阅读 · 0 评论 -
编写字符驱动程序 - 读取cmos中的时间
要求:该驱动程序主设备文件名为:/dev/cmos , 主设备号位 211 ,次设备号为0cmos.c#include #include #include #include #include #include //kmalloc()#include //copy_from_user#include #include #include MODULE_LICE原创 2015-10-31 11:29:33 · 1703 阅读 · 0 评论 -
反汇编一个简单的C程序
#include int g(int x){ return x + 3;}int f(int x){ return g(x);}int main(void){ return f(8) + 1;}gcc -S -o test.s test.c -m32 .file "test.c" .text .globl g .type g,原创 2015-10-15 09:02:36 · 559 阅读 · 0 评论 -
linux strace 命令学习网址
参考学习:http://man.linuxde.net/stracehttp://linuxtools-rst.readthedocs.org/zh_CN/latest/tool/strace.htmlhttp://www.cnblogs.com/itech/archive/2013/02/28/2937836.html原创 2015-10-31 14:48:55 · 422 阅读 · 0 评论 -
ubuntu下C/C++集成环境 -- codeblocks
codeblocks 在ubuntu上,直接用 uk软件中心安装使用(好像自带的) 也可以百度教程,自己安装更新可以在电脑上搜索下 , 然后固定到左侧栏打开后直接可以建立项目 , 跟vc6.0 , vs一样的使用快捷键有些不同如下,具体可以在(Settings>Editor>keyboard shortcuts):下面是整理的一些常用设置,基本上原创 2015-10-23 14:38:51 · 522 阅读 · 0 评论 -
linux 系统调用分析 使用strace工具
test.c#include #include #include #include //using namespace std;#define MAX_PARA_NUMS 10#define MAX_CHAR_EACH_PARA 256/**把带空格的input字符串 分割成几个不带空格的字符串例如:input = "ls /homg/ding"那么ou原创 2015-11-07 10:31:15 · 746 阅读 · 0 评论 -
如何解决U盘拷贝时提示文件过大问题
http://jingyan.baidu.com/article/6f2f55a181fdadb5b93e6c0f.html原创 2015-10-03 21:56:17 · 3772 阅读 · 0 评论 -
linux windows 动态库 静态库
Linux和windows动态库 分析比较:http://www.cnblogs.com/chio/archive/2008/11/13/1333119.htmllinux 静态库 和 动态库的区别:http://blog.163.com/gene_lu/blog/static/6402542120138181597392/C++动态静态库讲解:http://www.cnblogs.com转载 2016-03-16 10:57:59 · 535 阅读 · 0 评论 -
实习过程中linux相关开发学习总结(四)
lua+nginx开发经常要模拟请求api,以此判断自己的api是否足够完善 curl敲个get,post请求是容易的,简单的传值命令很简单 curl url curl -d url 至于form形式的,可以编个html去模拟,或者下个集成工具,去模拟请求,总之一切都要快,能快速的解决问题.(至少使用命令行,比使用其它方式更快,查看结果也清晰明白),可以(man baidu,google c原创 2016-04-22 13:15:30 · 867 阅读 · 0 评论 -
ubuntu14.04 搭建ftp
百度经验 http://jingyan.baidu.com/article/67508eb4d6c4fd9ccb1ce470.html运行后,需要用户名和密码(之前自己设定过了的)转载 2016-07-15 16:59:39 · 313 阅读 · 0 评论 -
linux 静态库,makefile
mkdir testlib,组织文件目录如下my_math.hint add(int a, int b);int subtract(int a, int b);my_math.c#include "../include/my_math.h"int add(int a, int b){ return a + b;}int subtract(int a,转载 2016-05-30 22:44:49 · 1012 阅读 · 0 评论 -
实习过程中linux相关开发学习总结(一)
在实习前,作为一个科班出身的我来说,是有linux基础的,不过仅仅是会用些简单的。诸如vim使用,文件管理,网络等等确实不会,有种望而生畏的感觉。牛客网上刷题也只能呵呵。但是既然选择了linux C,nginx,redis等等这一套,就应该走下去。工作了几天,确实有些熟了,至少各种linux版本的操作系统是会安装的,常用的ls,cp,pwd,简单的正则等还是会用的,vim也知道切换模式,插入,保存等原创 2016-04-19 23:01:16 · 1217 阅读 · 0 评论 -
实习过程中linux相关开发学习总结(三)
测试环境下,文件当然可以乱来一点(当然是相对于线上环境来说).要快速理解代码,当然是实践.lua+nginx开发,配置文件是经常要改的.文档备份是很重要的,因为你在修改,你需要恢复到原来的情况,这也能保证你干了什么坏事后,还有机会去挽救.cp非常重要.玩了一会儿,你运行不起来,原来的却可以运行起来.什么情况,你需要看下文件,你到以改动了什么,文档对比也是很重要的,想想svn,github.文档对比原创 2016-04-21 12:55:53 · 528 阅读 · 0 评论 -
实习过程中linux相关开发学习总结(二)
在使用lua+ngin-redis开发过程中,总是线上,线下看代码,修改代码,这里涉及到一些常用的linux命令。首先你管理的机器会很多,你不确定某台机器上是否安装过这些软件,或者安装在哪里.whereis 可以解决,正如 who ,uname,man这些常用的命令一样。当输入redis-cli 你可能连不上redis,应该想到,redis服务到底开没有,redis是不是开了别的端口或者很多端口,原创 2016-04-20 23:42:14 · 720 阅读 · 0 评论 -
linux 帮助命令
参考学习教程:慕课网>Linux达人养成计划 (讲解的很好) http://www.imooc.com/learn/175 whereis, man, help, –help, infowhereis 查看命令的文档,若/bin下面没有相应命令的文档,则该命令是shell内部命令,如 cd,则可以用help cd查看cd命令的相关信息,否则如ls(ls是安装的命令,是个可执行文件,放到了/bin原创 2016-04-23 21:02:04 · 1236 阅读 · 0 评论 -
linux 权限
chmodchmode [选项] 模式 文件名-选项-R 递归-模式[ugoa] [+-=] [rwx][mode=421]例如:chmod u+x filechmod g+w,o+w filechmod a=rwx filechmod u-x filechmod 755 filechown 用户名 文件名改变文件的所有者chgrp 组名 文件名改变文件的所属组,创建文件时就原创 2016-05-02 15:55:45 · 1434 阅读 · 0 评论 -
apue.h头文件错误和error错误处理
参考网址 http://www.linuxidc.com/Linux/2013-01/77467.htm 注意点:按要求解压到/root目录 tar -xzvf src.tar.gz -C /root 上面网址的第4点(将/root/apue.2e/ipp/printd.h中第977行中的status替换为Status。) 没有printd.h文件 是printd.c文件按要求即可编程原创 2016-05-12 09:51:00 · 3582 阅读 · 0 评论