- 博客(41)
- 收藏
- 关注
原创 qemu仿真arm9跑linux,使用uboot,vexpress,busybox,
From视频:https://www.bilibili.com/video/av24252815?from=search&seid=10660750066815842067From文档:https://wenku.baidu.com/view/42e93544dcccda38376baf1ffc4ffe473368fdbf.html https://...
2020-01-12 16:57:12 1633
转载 #define的注意事项
1、 用无参宏定义一个简单的常量#define LEN 12这个是最常见的用法,但也会出错。比如下面几个知识点你会吗?可以看下:(1)#define NAME "zhangyuncong"程序中有"NAME"则,它会不会被替换呢?(2)#define 0x abcd可以吗?也就是说,可不可以用不是标识符的字母替换成别的东西?(3)#define NAME "zhang 这个可以吗?(4)#defi...
2018-06-02 15:30:24 1022
原创 APUE学习(三)文件类型
一.文件类型1.普通文件2.目录文件3.块特殊文件,有缓冲4.字符文件,无缓冲5.管道FIFO6.套接字7.符号连接二.stat,lstat,fstat #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> int stat(con...
2018-05-17 20:37:54 178
原创 好用的网址
cmake:http://sewm.pku.edu.cn/src/paradise/reference/CMake%20Practice.pdf
2018-05-11 20:12:43 259
转载 左值、纯右值、将亡值
写在前面 C++中有“左值”、“右值”的概念,C++11以后,又有了“左值”、“纯右值”、“将亡值”的概念。关于这些概念,许多资料上都有介绍,本文在拾人牙慧的基础上又加入了一些自己的一些理解,同时提出了一些需要读者特别注意的地方,主要目的有二: 1.尽可能地将这些概念介绍清楚。 2.为后续介绍完美转发和移动语义做好铺垫。正文一、表达式 要说清“三值”,首先...
2018-05-09 14:21:00 1199
转载 char* char[] char** char*[] char[][]详解
指针和数组是C的比较难搞懂的知识点, 需要结合内存来学习, 非常感谢各位兄弟为我指点迷津.下面总结一下 : 首先说明一下C程序在运行时, 不同的内容或变量分别存储在什么地方?分了几块区域分别是, code, constants, global, heap, stack; (内存地址从低到高)其中constants存储常量(常量值不允许修改), global存储在所有函数以外定义的全局变量(全局变量...
2018-05-05 22:17:49 655
转载 sizeof与strlen的区别
#include <stdio.h>#include <string.h>int main(){ char *s1="abc"; char s2[]="abc"; char s3[10]="abc"; char s4[]={'a','\0','b','c'}; //sizeof()取实际内存长度 printf("sizeof(s1):%d...
2018-05-05 21:30:27 143
原创 APUE学习(二)IO
1.<unistd.h>中规定了文件标识符://头文件多在/usr/include/下* Standard file descriptors. */#define STDIN_FILENO 0 /* Standard input. */#define STDOUT_FILENO 1 /* Standard output. */#define STDERR_FILENO 2 ...
2018-05-03 21:05:03 179
原创 APUE学习(一)基础知识
代码段一:#include "apue.h"#include <dirent.h>intmain(int argc, char *argv[]){ DIR *dp; struct dirent *dirp; if (argc != 2) err_quit("usage: ls directory_name"); if (...
2018-05-01 18:48:45 1545
转载 简述configure、pkg-config、pkg_config_path三者的关系
一、什么是configure 源码安装过程中大多会用到configure这个程序,一般的configure都是一个script,执行时可以传入必要参数告知配置项目。 configure程序它会根据传入的配置项目检查程序编译时所依赖的环境以及对程序编译安装进行配置,最终生成编译所需的Makefile文件供程序Make读入使用进而调用相关编译程式(通常调用编译程序都是gcc)来编译最终的二进制程序...
2018-04-29 18:04:25 202
转载 linux下编译qt5.6.0静态库——configure配置
编译QT是一件比较麻烦的事情。所以如果没有必要,就不要编译了。如果你只需要使用QT的一些基本功能,那么就只编译源码目录下的qtbase目录下的东西即可。下面所介绍的都只是在linux下适用的(windows下使用MinGW也可以,QT提供的MinGW安装包是32位的,需要64位的可以参考)。在编译前,最好先安装完成相关的依赖包,主要是xcb/opengl等。编译器使用gcc5及以上版本速度会比较快...
2018-04-28 19:31:53 1296
原创 strings命令
[root@localhost study]# strings /lib64/libc.so.6 | grep GLIBCGLIBC_2.2.5GLIBC_2.2.6GLIBC_2.3GLIBC_2.3.2GLIBC_2.3.3GLIBC_2.3.4GLIBC_2.4GLIBC_2.5GLIBC_PRIVATE[root@localhost study]# strings qt...
2018-04-28 16:24:49 344
转载 objdump命令:/lib64/libc.so.6: version `GLIBC_2.7' not found 解决方案
Linux开发中,新旧版本不同的系统会遇到的一个很大问题是--兼容性。一般情况是旧系统编译的程序可以在新系统中运行,但是反过来新系统中编译的程序在旧系统中就不行了。最明显的现象是高版本编译的程序在低版本系统中出现错误: /lib64/libc.so.6: version `GLIBC_2.7' not found 当然这个版本号码不一定是本文中的7 还有14也是个新版本,这要看你编译时的系统的...
2018-04-28 16:16:09 2123
转载 Linux环境变量PATH的增添和删除操作
1添加路径到PATH添加路径可以直接给PATH赋值export PATH=$PATH:新添加的路径 (关闭终端失效)$PATH是当前的路径1:路径2:路径3 ,在后面追加:新添加的路径,然后把这个新的路径集赋值给PATH本身,相当于覆盖了原PATH变量.export命令是导出变量,相当于更新PATH2删除PATH中的路径删除PATH中的某个路径也是用以上重新给PATH赋值的方法,比如当前...
2018-04-28 14:41:14 8752
原创 rhel5.3安装yum安装Qt(直接装qt4)
rhel5国内已经不支持了,但是仍有人用,为匹配开发环境不得不用为了安装Qt5,要先安装一些库,所以用到了yum,yum是付费功能,rhel5和centos5是一样的,所以用centos5的库安装一.安装yuma.清除之前的安装rpm -aq|grep yum|xargs rpm -e --nodepsb.下载安装四个包从http://vault.centos.org/5.3/os/x86_64/...
2018-04-25 19:45:39 3599
原创 MFC笔记(一):第一个mfc程序
一.stdafxextern详细参见百度百科extern stdafx.h和stdafx.cpp可用于定义全局变量和包含不常改变的公共头文件(譬如库文件),全局变量.h中声明extern int g_var;在.cpp中定义int g_var=20;引用的文件中包含头文件即可当然还有一种使用全局变量的方法:在1.c中定义全局变量,int g_var2=30;在其他文件中声明extern in...
2018-04-23 14:32:50 390
原创 linux系统编程(一)-系统调用
1.open() #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int open(const char *pathname, int f...
2018-04-22 18:24:47 285
转载 值得推荐的C/C++框架和库
值得学习的C语言开源项目Libeventlibev是一个开源的事件驱动库,基于epoll,kqueue等OS提供的基础设施。其以高效出名,它可以将IO事件,定时器,和信号统一起来,统一放在事件处理这一套框架下处理。基于Reactor模式,效率较高,并且代码精简(4.15版本8000多行),是学习事件驱动编程的很好的资源。下载链接:https://github.com/libevent/libeve...
2018-04-22 15:56:28 464
转载 深入理解Java并发之synchronized实现原理
https://blog.csdn.net/javazejian/article/details/72828483关联文章:深入理解Java类型信息(Class对象)与反射机制深入理解Java枚举类型(enum)深入理解Java注解类型(@Annotation)深入理解Java类加载器(ClassLoader)深入理解Java并发之synchronized实现原理Java并发编程-无锁CAS与Un...
2018-04-01 23:09:47 110
原创 Qt利用qDebug输出信息到文件
1.dlog.h#ifndef DLOG_H#define DLOG_H#include <qapplication.h>#include <QDateTime>#include <QFile>#include <QTextStream>#include <QtMsgHandler>#include <QMessage...
2018-04-01 16:03:56 4986 2
转载 Swing线程之SwingUtilities.invokeLater解释
原文链接:http://www.importnew.com/15761.html事件分发线程:Swing中事件处理和绘画代码都在一个单独的线程中执行,这个线程就叫做事件分发线程。这就确保了事件处理器都能串行的执行,并且绘画过程不会被事件打断。为了避免死锁的可能,你必须极度小心从事件分发线程中创建、修改、查询Swing组件以及模型。注意:我们过去常说只要你没有修改已经实现过的组件,你就能在主进程中创...
2018-03-29 23:35:31 293
转载 Java笔记-Swing线程之SwingUtilities.invokeLater解释
事件分发线程:Swing中事件处理和绘画代码都在一个单独的线程中执行,这个线程就叫做事件分发线程。这就确保了事件处理器都能串行的执行,并且绘画过程不会被事件打断。为了避免死锁的可能,你必须极度小心从事件分发线程中创建、修改、查询Swing组件以及模型。注意:我们过去常说只要你没有修改已经实现过的组件,你就能在主进程中创建GUI。[补充:下面页注中的红色字体。] 已实现过的意思是组件已经在屏幕上描绘...
2018-03-29 23:33:08 632
转载 Java NIO Selector详解(含多人聊天室实例)
目录(?)[-]一Java NIO 的核心组件二Java NIO SelectorSelector简介选择器Selector可选择通道SelectableChannel选择键SelectionKeySelector的使用1创建Selector2将Channel注册到Selector3为SelectionKey绑定附加对象4通过Selector选择通道5停止选择三NIO多人聊天室分析整个程序的流程一...
2018-03-28 15:58:41 226
转载 Java并发编程:Java内存模型和volatile关键字解析
目录(?)[-]一内存模型的相关概念二并发编程中的三个概念三Java内存模型四深入剖析volatile关键字五使用volatile关键字的场景Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机...
2018-03-28 15:43:31 166
转载 Java笔记-并发之Callable接口
原文:https://blog.csdn.net/sunp823/article/details/515693141.接口的定义:public interface Callable<V> { V call() throws Exception; } 12342.Callable和Runnable的异同先看下Runnable接口的定义public interfa...
2018-03-26 14:26:50 117
转载 Java笔记-网络IO(BIO,NIO,AIO)
转自:http://blog.csdn.net/anxpp/article/details/51512200 本文会从传统的BIO到NIO再到AIO自浅至深介绍,并附上完整的代码讲解。 下面代码中会使用这样一个例子:客户端发送一段算式的字符串到服务器,服务器计算后返回结果到客户端。 代码的所有说明,都直接作为注释,嵌入到代码中,看代码时就能更容易理解,代码中会用到一个计算结果的工...
2018-03-25 21:55:39 132
转载 Java笔记-IO流
字符流与字节流https://blog.csdn.net/scgaliguodong123_/article/details/45920829处理流(缓冲流、转换流)https://blog.csdn.net/scgaliguodong123_/article/details/45932481DataInputStream,ObjectInputStream,ByteArrayInputStrea...
2018-03-25 18:51:48 167
原创 Qt最大化最小化
setWindowState(Qt::WindowMaximized);有时候会失灵QRect rect=QApplication::desktop()->availableGeometry(); move(0,0); resize(rect.width(),rect.height());就可以了最小化没见过失灵....setWindowState(Qt::WindowMin...
2018-03-23 22:23:05 3128 1
原创 重写QAbstractTableModel显示数据
#ifndef TABLEMODEL_H#define TABLEMODEL_H#include <QObject>#include <QAbstractTableModel>class TableModel : public QAbstractTableModel{ Q_OBJECTpublic: explicit TableModel(Q...
2018-03-23 22:16:45 5387 3
原创 Java笔记-反射
一.类加载器 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. 加载:将class文件读入内存,并为之创建一个Class对象 连接:为类的静态成员分配内存,并设置默认初始化值等 初始化:创建类的实例,访问类的静态变量,或者为静态变量赋值,调用类的静态方法,使用反射方式来强制创建某个类或接口...
2018-03-22 10:12:32 250
原创 linux qt 打包
1.下载llinuxdeployqt-continuous-x86_64.AppImage 应用程序 https://github.com/probonopd/linuxdeployqt ,重命名linuxdeployqt,并移动到/usr/local/bin2.更改 ~/.bashrc#add QT ENVexport PATH=/opt/Qt/5.10.1/gcc_64/bin:$PATH#...
2018-03-16 13:34:44 409
转载 QThread中的互斥、读写锁、信号量、条件变量
来源: http://syszux.com/blog/article/591 在gemfield的《从pthread到QThread》一文中我们了解了线程的基本使用,但是有一大部分的内容当时说要放到这片文章里讨论,那就是线程的同步问题。关于这个问题,gemfield在《从进 程到线程》中有一个比喻,有必要重新放在下面温习下:QThread中的互斥、读写锁、信号量、条件变量*************...
2018-03-07 10:55:33 263
转载 Qt中使用QSqlDatabase::removeDatabase()的正确方法
如果你用过Qt的QSqlDatabase的话,多半会对下面的警告信息感兴趣:QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, allqueries will cease to work.意思是说,还有某查询引用默认数据库连接"qt_sql_default_conn...
2018-03-07 09:36:36 911
原创 多线程访问数据库问题
最近做一个多线程的远程升级软件,做完后用一个对应的测试程序进行测试,发现线程一多必崩溃,而把所有数据库处理全部删掉后,就可以同时运行几百个线程不崩溃了.原因应该是自己采用了单例模式,在各个线程中发送信号给TcpServer,在server中统一单线程调用SqliteTool的一个单例操作数据库,原以为这样应该是更安全和高效的,现在看应该用多线程加静态函数的方式了.2018/3/23更新: ...
2018-03-06 21:02:23 11220
转载 const T、const T*、T *const、const T&、const T*& 的区别
原文地址:http://blog.csdn.net/luoweifu/article/details/45600415这里的T指的是一种数据类型,可以是int、long、doule等基本数据类型,也可以是自己类型的类型class。单独的一个const你肯定知道指的是一个常量,但const与其他类型联合起来的众多变化,你是不是就糊涂了?下面我们一一来解析。const T定义一个常量,声明的同时必须进...
2018-03-01 11:20:21 237
转载 探索多线程使用同一个数据库connection的后果
在项目中看到有用到数据库的连接池,心里就思考着为什么需要数据库连接池,只用一个连接会造成什么影响?(只用一个connection)?1 猜想:jdbc的事务是基于connection的,如果多线程共用一个connection,会造成多线程之间的事务相互干扰。(connection.setAutoCommit(false);//connection.commit())2 于是就模仿以下场景来做一...
2018-03-01 10:42:35 15560 3
转载 C++全局变量在多个源代码文件中的使用
在比较大的项目中,如果需要使用全局变量,那么就需要注意一些全局变量声明、使用不当引起的问题了。本篇文章主要内容有两个:普通全局变量、静态全局变量、全局常量。1、普通全局变量:假设我们需要在多个不同的编译单元(比如两个.cc文件)中使用全局变量进行传值,如我们有如下三个源码文件:main.cc:运行入口,有一个main函数,其中会打印出全局变量var的值;[cpp] view plain copy#...
2018-02-28 11:35:38 1034
原创 QTcpServer多线程资源释放
采用重写QThread而非moveToThread的方法,难点在于资源的释放.因为一个socket对应一个thread,所以可以利用 socket断开或错误->删除socket->线程exit(0)的方式TcpServer.cpp#include "tcpserver.h"#include "tcpthread.h"#include "../mainwindow.h"#in...
2018-02-27 09:59:56 1284
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人