自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

chuncanL的博客

与 chuquanl.com 同步更新

  • 博客(55)
  • 收藏
  • 关注

原创 风骚的lambda

在c++11中,增加了不少的特性,才发现先的c++是如此的风骚lambda一个lambda表达式表示一个可调用的代码单元。我们可以将其理解为一个未命名的内联函数。与任何函数类似,一个lambda具有一个返回类型、一个参数列表、和一个函数体,但与函数不同,lambda可能定义在函数内部。一个lambda表达式具有如下形式[capture list](parameter list)-> return t

2017-05-02 22:11:40 514

原创 构造函数那些事儿

对于一个没有实例化的空类,编译器不会给他默认任何函数,当实例化一个空类后,编译器将根据需要生成相应的函数,包括: * 构造函数 * 析构函数 * 拷贝构造函数 * 赋值运算符号 * 地址操作符构造函数默认构造函数默认构造函数是在未提供显示初始化值时,被用来创建对象的构造函数。它可能是如下形式的。stock::stock(){} //stock是一个类如果为类定义了一个构造函数,那么也必

2017-04-21 14:26:52 582

原创 C++类的大小及虚函数表

之前用C的时候,停挺经常计算结构体空间的,现在突然用C++了,好像还不知道C++类大小怎么算的。 1. 类的组成我也不知道这么说是否正确,我觉得类主要有两类成员:数据成员,成员函数,并且 * 数据成员有静态和非静态之分 * 函数成员有静态,非静态和虚函数(virtual)之分 数据成员 在C++类中,数据成员的初始化是按照类中声明的先后顺序初始化,而与函数参数的传入顺序没有关系

2017-04-20 23:46:16 2126

原创 堆排序算法

一、堆排序算法的基本特性时间复杂度:O(nlgn) 与归并排序相同 最坏:O(nlgn) 空间复杂度:O(1). 不稳定。 二、堆堆的实现通过构造二叉堆(binary heap),实为二叉树的一种;由于其应用的普遍性,当不加限定时,均指该数据结构的这种实现。这种数据结构具有以下性质。 * 任意节点小于(或大于)它的所有后裔,最小元(或最大元)在堆的根上(堆序性)。 * 堆总是一棵完全

2017-04-19 17:46:56 469

原创 强大的find和grep命令

悲哀,写这个的时候快写完了去上课,下课回来关闭了软件啥都没了,心塞塞,简单再写一遍吧 find 命令命令行 man find 基本都在里面了 find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point...] [expression]The -H, -L and -P options control the treatmen

2017-04-17 15:09:54 1239

原创 写string类学C++ 构造函数 重载 友元

一直没有系统学过c渣渣,现来写个string类学习下吧,不然找不的offer的这个mystring类是作为学习写构造函数,析构函数,函数重载,友元函数等。并没有将很多问题比如效率 mystring.cpp#ifndef _MYSTRING_H_#define _MYSTRING_H_#include<iostream>class Mystring{ private: ch

2017-04-16 20:22:51 418

原创 二叉树

一、基本概念二叉树的每个结点最多有两棵子树,左子树和右子树,次序不可以颠倒。 结点的层次(Level)从根开始定义,根为第一层,根的孩子为第二层。 二叉树的高度:树中结点的最大层次称为树的深度(Depth)或高度。 性质: 1、非空二叉树的第n层上至多有2^(n-1)个元素。 2、深度为h的二叉树至多有2^h-1个结点。 这个其实画个图也能明白 其他二叉

2017-04-15 10:29:32 342

原创 ubuntu wordpress建站

之前写过,但是太笼统了,现在刚好网站服务器被我整太乱了,想重装下,写一写过程吧1.在服务器安装系统这里我选择安装ubuntu64位 2.使用工具连接服务器使用工具putty等连接服务器,这里因为我使用的是linux系统,直接使用ssh命令 第一次登录要保存下key xx.xx.xx.xx为服务器ipcan@CAN:~$ ssh [email protected]@xx.x

2017-04-13 14:20:17 1404

原创 tcp基本套接字编程函数

基本套接字函数1、socket()#include <sys/socket.h>int socket (int family, int type, int protocol); //Returns: non-negative descriptor if OK, -1 on error2、connect函数TCP客户使用connect函数来建立与tcp服务器的连接

2017-04-09 13:42:19 582

原创 socket基础

IPv4套接字地址结构通用套接字IPv6套接子地址结构值-结果参数字节排序大小端判断大小端函数主机字节序与网络字节序转换函数字节操纵函数地址转换函数inet_aton inet_addr and inet_ntoainet_pton and inet_ntop FunctionsExampleIPv4套接字地址结构IPv4套接字地址结构以“sockaddr_in”命名,定义在头

2017-04-08 16:49:48 298

原创 io多路复用 select

io多路复用 select

2017-04-08 12:13:17 501

原创 某公司笔试题,逆序对

今天听同学说做了某顶尖公司笔试,有一题是求逆序对的个数 所谓逆序对,就是在数组中符合 A[i]>A[j] 且 i/************************************************************************* > File Name: nixudui.cpp > Author: chunquanL > Created T

2017-04-03 23:10:00 830

原创 C/C++的奇技淫巧

交换a,ba = a^b;b = a^b;a = a^b;//不担心越界计算二进制1的个数int num = 999;int counter=0;while(num){ counter++; m&=(m-1);}计算结构体内元素的偏移量宏#define FIND(struc,e) (size_t)&(((struc *)0)->e)

2017-04-02 18:34:01 752

原创 stm32 tim8 pwn 无输出问题

在stm32中 使用定时器8 输出pwn要调用下面这句话 否则不输出TIM_CtrlPWMOutputs(TIM8, ENABLE); 一句话坑我一晚上

2017-03-30 10:07:34 3262 3

原创 文件IO(章节3)

英文版本书地址http://chuquanl.com/?page_id=55可用的文件IO函数:打开文件,读文件,写文件等 绝大多数文件IO只需要用到5个函数:open,read,write,lseek,以及close 文件描述符文件描述符是一个非负整数,打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。当读写一个文件时,使用文件描述符标识该文件,作为参数传递给read或者w

2017-03-28 16:10:43 283

原创 unix 基础知识(章节1)

输入和输出1. 文件描述符文件描述符(file descriptor)通常是一个小的非负整数,内核用以标识一个特定进程正在访问的文件,在内核创建或者打开一个文件时,都返回一个文件描述符。可以使用这个文件描述符读写文件。 2.标准输入 标准输出和标准错误如果不做特殊处理,这三个描述符都链接向终端 但大多数shell提供一种方法,使其中一个或所有重新定向到某个文件 如 ls>file.lis

2017-03-28 16:09:45 281

原创 计算字符串运算的结果 如 (10.5*((1+4/2)-5+(9+1)))/2.0

某公司的笔试题,做出来还是花了点时间 用比较笨的方法/************************************************************************* > File Name: numstr_calculate.cpp > Author: chunquanL > Created Time: 2017-03-22 *****

2017-03-27 15:40:27 987

原创 计算机网络--运输层

运输层(传输层),解决计算机程序到计算机程序之间的通信问题,即端对端的通信,向高层屏蔽下面网络核心的细节 引入原因:增加复用和分用的功能,消除网络层的不可靠信,提供可靠的,与实际使用的网络无关的信息传输 tcp/ip运输层的两个协议: 面向数据报协议UDP( User Datagram Protocol):提供无连接服务 传输控制协议TCP(Transmission Contr

2017-03-20 09:37:56 812

原创 线程

线程Unix 环境高级编程原配代码 https://github.com/can130/apue3e/tree/master/threads线程标示线程的身份id 使用 pthread_t 数据类型表示 头文件 : pthread.h//比较连个线程id是否相等的函数//相等返回非0 数值 否则 返回0int pthread_equal(pthread_t tid1,pthread_t

2017-03-19 22:08:49 287

原创 更改const的值

今天突发奇想,如果用一个指针指向const变量,再通过指针修改这个值会怎样?实验1const int a=1;int *b = &a;结果 test.c:20:14: error: invalid conversion from ‘const int*’ to ‘int*’ [-fpermissive]实验2#include<stdio.h>void b(int *a){ *a=*a

2017-03-18 09:54:41 3854

原创 线程和进程

简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。 进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。进程是系统进行资源分配和调度的一个独立单位. 线程

2017-02-27 22:56:26 216

原创 返回字符串中第一个不重复字符的下标 下标从0开始

#include<stdio.h>int findchar(const char *str){ char remember[256]={0}; const char *pstr=str; while(*pstr) { ++remember[*pstr]; pstr++; } pstr=str; w

2017-02-27 09:43:56 1240

原创 scp 错误 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

原因 不知道解决方法 删除 ~/.ssh/known_hosts

2017-02-20 16:06:34 470

原创 错误 implicit declaration of function 'class_create' implicit declaration of function 'class_device_

在使用linux3.8 编译的时候出现了上面的错误 原因是由于内核版本不同导致的 解决 包含头文件#include <linux/device.h>使用 device_create() 和device_unregister() 代替 class_device_create() class_device_unregister()

2017-02-20 15:57:00 4047

原创 全排列 字典序排列

智商是个好东西,自己写了一下午没写出来,最后还得靠剑指offer书上的思路上剑指 根据以上的思路写出的代码#include<iostream> using namespace std; int counter=0;void permutation(char * str,char *begin){ if(*begin == '\0') {

2017-01-31 21:50:37 686

原创 学习rt-thread

隐隐感觉自己要把 一起来学rt-thread 抄一遍了官方网站http://www.rt-thread.org/查看代码以stm32f10x为例 使用keil mdk 下载源码进入\bsp\stm32f10x目录 打开工程启动过程在startup.c中找到main函数 如下int main(void){ /* disable interrupt first */ rt_hw_int

2017-01-30 22:39:19 3337

原创 linux 基础知识大杂烩

inode,中文译名为”索引节点”,包括内容: * 文件的字节数 * 文件拥有者的User ID * 文件的读、写、执行权限 * 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。 * 链接数,即有多少文件名指向这个inode * 文件数据block的位置

2017-01-30 00:21:35 427

原创 Ubuntu make menuconfig报错

在执行make menuconfig的时候报错*** Unable to find the ncurses libraries or the*** required header files.*** 'make menuconfig' requires the ncurses libraries.*** *** Install ncurses (ncurses-devel) and try

2017-01-29 22:51:12 705

原创 设备驱动中的并发控制 (2)

信号量信号量也是一种保护临界资源的一种方法。信号量与自旋锁的使用方法基本一样。与与自旋锁不同的是,当获取不到信号量时,进程不会原地打转而是进入休眠等待状态。信号量的实现在linux中,信号量的定义如下struct semaphore { spinlock_t lock; unsigned int count; struct list_head wait_list;}成员变量

2017-01-25 15:12:26 431

原创 设备驱动中的并发控制 (1)

中断屏蔽在单 CPU 范围内避免竞态的一种简单方法是在进入临界区之前屏蔽系统的中断。CPU 一般都具备屏蔽中断和打开中断的功能,这项功能可以保证正在执行的内核执行路径不被中断处理程序所抢占,防止某些竞态条件的发生。具体而言,中断屏蔽将使得中断与进程之间的并发不再发生,而且,由于 Linux 内核的进程调度等操作都依赖中断来实现,内核抢占进程之间的并发也就得以避免了。 中断屏蔽的使用方法为: loca

2017-01-25 11:26:17 314

原创 linux设备驱动中的阻塞和同步机制

阻塞与非阻塞阻塞调用 阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。非阻塞调用 在不能立即得到结果之前该函数不会阻塞当前线程,而会立刻返回。等待队列 wait queue可以用等待队列实现阻塞进程 等待队列基本数据结构是一个双向链表,这个链表存储睡眠的进程。等待队列也与进程调度机制紧密结合,能够用于实现内核中异步事件通知机制。它有两种数据结构:等待队列头

2017-01-25 10:28:28 507

原创 securecrt 退出vi 显示历史命令

Options->session options->terminal->emulation->terminal 下拉 选择xterm

2017-01-23 18:38:40 4221

原创 linux字符设备驱动

linux系统设备的3种类型:字符设备驱动、块设备驱动和网络设备驱动 字符设备:只能一个一个字节读写数据的设备,不能随机读取设备内存中的某一数据 块设备:可以从设备的任意位置读取一定长度数据的设备 在 /dev 目录中 执行 ls-l 时 第一个字母为c表示该设备为字符设备,为b表示块设备主设备号和次设备号一个字符设备或者块设备都有一个主设备号和一个此设备号,统称为设备号。主设备号用来表示一

2017-01-23 16:50:25 437

原创 解决使用securecrt登录linux系统中文乱码问题

在使用securecrt登录linux有一个非常蛋疼的问题,linux系统默认编码模式是utf8,而windows是gbk,设置终端编码时要不就系统语言乱码,要不就vi编辑器乱码,解决方案是在~/.vimrc中添加以下两句 let &termencoding=&encoding set fileencodings=utf-8,gbk

2017-01-23 15:24:43 411

原创 将模块编译进内核

示例:将Add_Sub模块编译进内核在内核源码的driver下新建AddSub_Kconfig子目录并将该模块源码放入该目录 can@ubuntu:~/tiny4412/linux-3.8_test/drivers$ tree AddSub_Kconfig/ AddSub_Kconfig/ |– Add_Sub.c |– Add_Sub.h `– test.c

2017-01-23 14:40:51 537

原创 关于linux module 的调用

模块参数设备驱动程序有时候需要接受参数,例如当模块可以实现两种相似功能时,可以传递一个参数到驱动模块以决定其使用哪种功能,例如在加载模块时指定 insmod xxx.ko param=1可以使用 “module_param(参数名,参数数据类型,参数读写权限)” 来为模块定义个参数,例如下列代码定一个了一个长整形和整形参数static long a=1;static int b=1;module

2017-01-22 10:15:32 2857

原创 git 专题

git checkout . #本地所有修改的。没有的提交的,都返回到原来的状态 git stash #把所有没有提交的修改暂存到stash里面。可用git stash pop回复。 git reset –hard HASH #返回到某个节点,不保留修改。 git reset –soft HASH #返回到某个节点。保留修改

2017-01-21 18:12:34 226

原创 排序算法专题

突然对各种排序算法有点感兴趣 写下来以后用的时候直接照搬了插入排序算法适合小数目排序 伪代码如下,摘自算法导论 原理:将从第二个开始的牌放到前面对应的位置上,类似于玩扑克的时候从桌子上牌堆拿起来放到手上对应位置上 linux c代码实现 带计时#include<stdio.h>#include<stdlib.h>#include<sys/time.h>int tim_subtract

2017-01-21 11:04:19 317

原创 tiny 4412 led module

led.c#include <linux/init.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/io.h> #include <linux/fs.h> #include <linux/ioctl.h> #include <linux/miscdevice.h> #define

2017-01-20 11:12:34 613

原创 linux 模块的编译和加载

一个最简单的linux模块//头文件#include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("GPL"); MODULE_AUTHOR("CAN"); int test_module_init(){ printk("module init\n"); return 0;} void te

2017-01-18 10:47:05 526

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除