logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

C++:std::function的libc++实现

`std::function`是个有点神奇的模板,无论是普通函数、函数对象、lambda表达式还是`std::bind`的返回值(以上统称为可调用对象),无论可调用对象的实际类型是什么,无论是有状态的还是无状态的,只要它们有相同参数类型和返回值类型,就可以使用同一类型的`std::function`进行存储和调用。这种特性被称作类型擦除

#c++
前置声明与C++头文件互相包含导致的error: 'xxx' does not name a type问题

在一个源文件中,要声明或定义一个类的指针时,必须在使用前声明或定义该类,因此下面的代码会报错:class A{public:B *b;};class B{public:A *a;};int main(){return 0;}报错为“error: ‘B’ does not name a type”,就是因为在A类中使用B *b之前没有声明或定义B类,如果在

#c++#c语言
自动控制原理:二阶系统的动态性能分析

系统在欠阻尼情况时的单位跃迁响应为:c(t)=1−e−ζωnt1−ζ2−−−−−√sin(ωdt+θ)c(t)=1-\frac{e^{-\zeta\omega_nt}}{\sqrt{1-\zeta^2}}sin(\omega_dt+\theta)其中ωd=ωn1−ζ2−−−−−√\omega_d=\omega_n\sqrt{1-\zeta^2},θ=arctan1−ζ2√ζ\theta=ar

C++11中静态局部变量初始化的线程安全性

前言大家都知道,在C++11标准中,要求局部静态变量初始化具有线程安全性,所以我们可以很容易实现一个线程安全的单例类:class Foo{public:static Foo *getInstance(){static Foo s_instance;return &s_instance;}private:F...

Qt使用OpenGL进行多线程离屏渲染

基于Qt Widgets的Qt程序,控件的刷新默认情况下都是在UI线程中依次进行的,换言之,各个控件的QWidget::paintEvent方法会在UI线程中串行地被调用。如果某个控件的paintEvent非常耗时(等待数据时间+CPU处理时间+GPU渲染时间),会导致刷新帧率下降,界面的响应速度变慢。假如这个paintEvent耗时的控件没有使用OpenGL渲染,完全使用CPU渲染。这种情况处.

使用bash和graphviz分析并可视化C/C++源文件依赖关系

流程流程并不复杂:使用find命令搜索指定目录所有C/C++源文件扫描所有源文件,使用cpp(The C Preprocessor)过滤掉注释后,使用sed提取#include,生成依赖条目将所有依赖条目拼成.dot文件,然后使用graphviz中的dot工具将.dot文件转为.png图片代码代码的Github仓库为dep,为了方便~~(以及凑字数)~~放在这里一份:#!/bin...

虚拟机中 CentOS 无法上网(connect: network is unreachable)

以往记得在VirtualBox中安装完CentOS后是可以直接使用的,今天安装好了以后发现上不了网,表现为使用ping时提示connect network is unreachable。通过ifconfig发现网卡没有分配IP地址,考虑是DHCP的问题,遂sudo dhclient,发现就能上网了。然而重启以后就又没有IP了,所以还要修改一下etc目录下这个网卡的配置文件(/etc/sysconf

#centos#虚拟机#网络
gettimeofday和clock_gettime是不是系统调用?

在《Linux多线程服务端编程》一书5.1节中提到过,在x86-64的Linux上,gettimeofday不是系统调用,不会陷入内核。其实这种说法有点小问题,因为gettimeofday确实是个系统调用,但是linux的vdso(virtual dynamic shared object)机制帮我们做到了在调用这些系统调用时不陷入内核,从而提高了性能。vdso机制说白了就是在用户空间帮我们实现.

#linux
linux GB2312转UTF-8 shell脚本

#!/bin/bashIFSBACKUP=$IFS#备份IFS变量IFS=$(echo -en "\n\b")#设置IFS变量不含空格,防止文件名中有空格时出现异常dst=$(echo $1|sed 's/\/$//')#如果路径末尾有“/”,删除掉,后面再添加for file in $(ls "$dst"|grep .txt)dogb231

#linux
Linux:getrusage的用法

名称getrusage - get resource usage,该函数可以程序统计对系统资源的使用量。(实际上是统计了进程执行直到调用该函数时的资源用量,如果在不同的时间调用该函数,会得到不同的结果)概要所需头文件:sys/time.h(为了得到timeval结构体的声明,这个结构体实际上在bits/time.h中声明),sys/resource.h原型int getrusage(int who

#linux
    共 13 条
  • 1
  • 2
  • 请选择