MySql
启动mysql
1sudo mysql.server start
12345678910错误:ERROR! MySQL server PID file could not be found!Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/var/mysql/XXdeMacBook-Pro.local.pid).解决:1.输入命令:sudo chown -R _mysql /usr/local/var/mysql2.再次重启:sudo mysql.server restart
登陆mysql
12sudo -uroot -p密码:无
1.如何查看有什么数据库?
1show databases;
2.如何选择数据库?
1use databasesName;
3.如何查看该数据库中有哪些表?
1show tables;
4.如何显示某一表中的所有数据?
1select * from tableName;
5.如何退出数据库服务器?ex ...
进程通信上
title: 函数对象date: 2020-11-04 22:12:23tags: linuxcategory: linux
进程通信1.进程通信的概述1.1进程通信的目的:1.数据传输:一个进程要将它的数据发送给另一个进程2.资源共享:多个进程之间共享资源3.通知事件:一个进程需要通知另一个进程某一个事件已经发生4.进程控制:有些进程希望控制另一个进程的执行(如Debug进程),此时控制进程希望拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变
5.共享数据:多个进程之间共享数据时,一个进程对共享数据进行了修改,另一个进程应该立马能看见
2.管道通信2.1管道性质: 管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递。调用pipe系统函数即可创建一个管道。其本质是一个伪文件(实为内核缓冲区),由两个文件描述符引用,一个表示读端,一个表示写端。规定数据从管道的写端流入管道,从读端流出。
2.2管道的原理:管道实为内核使用环形队列机制,借助内核缓冲区(4k)实现。
2.3管道的局限性:① 数据自己读不能自己写。
② 数据一旦被读走,便不在管道中存在, ...
C++内存池
C++ 应用程序性能优化,第 6 章:内存池文章来自
系列内容:此内容是该系列的一部分:developerWorks 图书频道引言本书主要针对的是 C++ 程序的性能优化,深入介绍 C++ 程序性能优化的方法和实例。全书由 4 个篇组成,第 1 篇介绍 C++ 语言的对象模型,该篇是优化 C++ 程序的基础;第 2 篇主要针对如何优化 C++ 程序的内存使用;第 3 篇介绍如何优化程序的启动性能;第 4 篇介绍了三类性能优化工具,即内存分析工具、性能分析工具和 I/O 检测工具,它们是测量程序性能的利器。
本章首先简单介绍自定义内存池性能优化的原理,然后列举软件开发中常用的内存池的不同类型,并给出具体实现的实例。
6.1 自定义内存池性能优化的原理如前所述,读者已经了解到”堆”和”栈”的区别。而在编程实践中,不可避免地要大量用到堆上的内存。例如在程序中维护一个链表的数据结构时,每次新增或者删除一个链表的节点,都需要从内存堆上分配或者释放一定的内存;在维护一个动态数组时,如果动态数组的大小不能满足程序需要时,也要在内存堆上分配新的内存空间。
6.1.1 默认内存管理函数的不足利用默认的内 ...
linux进程基础
LinuxPthread_11.Linux中thread和process的异同1.1thread的基本概念线程是操作系统能够调度和执行的基本单位,在Linux中也被称之为轻量级进程。从定义中可以看出,线程它是操作系统的概念,在不同的操作系统中的实现是不同的。
对于Linux操作系统而言,它对Thread的实现方式比较特殊。在Linux内核中,其实是没有线程的概念的,它把所有的线程当做标准的进程来实现,也就是说Linux内核,并没有为线程提供任何特殊的调度语义,也没有为线程实现特定的数据结构。取而代之的是,线程只是一个与其他进程共享某些资源的进程。创建线程使用的底层函数和进程底层一样,都是clone,每一个线程拥有一个唯一的task_struct结构,Linux内核它仅仅把线程当做一个正常的进程,或者说是轻量级进程,LWP(Lightweight processes)。
对于其他的操作系统而言,比如windows,线程相对于进程,只是一个提供了更加轻量、快速执行单元的抽象概念。
总结一下,Linux线程是进程资源共享的一种方式,而其他操作系统,线程则是一种实现轻量、快速执行单元的抽象概念 ...
linux常用小技巧
linux中常用的编程小技巧在代码中执行shell命令1.system(“shell”);在代码中执行shell命令可以通过“stdlib.h”中的system来执行。代码示例如下:
1234567#include "stdio.h"#include "stdlib.h"#include "unistd.h"int main(void){ int res = system("ls -l /home"); return 0;}
细心的朋友应该发现了,*system函数是有返回值*的。那么他的返回值是用来干什么的呢?
system函数对返回值的处理,涉及3个阶段:
为了更好的理解system()函数返回值,需要了解其执行过程,实际上system()函数执行了三步操作:
1.fork一个子进程;失败返回-1.
2.在子进程中调用exec函数去执行comman ...
linux多线程
Linux多线程Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。Linux下pthread是通过系统调用clone()来实现的。clone()是Linux所特有的系统调用,它的使用方式类似于fork()。
线程创建123int pthread_create(pthread_t * restrict tidp,const pthread_attr_t * restrict attr,void *(* start_rm)(void *),void *restrict arg );
函数说明:tidp参数是一个指向线程标识符的指针,当线程创建成功后,用来返回创建的线程ID;attr参数用于指定线程的属性,NULL表示使用默认属性;start_rtn参数为一个函数指针,指向线程创建后要调用的函数,这个函数也称为线程函数;arg参数指向传递给线程函数的参数。
返回值:线程创建成功则返回0,发生错误时返回错误码。
因为pthread不是Linux系统的库,所以在进行编译时 ...
课程设计开发笔记
课程设计开发笔记(已完成)这个笔记记录的是ADDA模数转换存minisql的课程设计开发历程。
(额外添加了minigui实时显示)
涉及环境GY-39光照采集模块用的是粤嵌6818开发板,用的串口是tty1,开发环境是18.04Ubuntu,arm-Linux-gcc版本是5.20
Socket设计CS模型中CS走的是TCPIP协议,默认的IP地址是192.168.10.113,端口号是8000。
server会自动启动insert,insert会自启动qvfb,默认是在同一路径下。会创建一个data.txt。
minisql设计编译要用到好几个链接库,编译建议把编译库直接拖进去,插入的数据库是下文的要自己先手动创建。
1create table sunlight (shine int)
之后minisql会启动qvfb。
minigui设计minigui默认分辨率是*800600,显示数据来源并非数据库,而是通路径下的gui.txt**。
选题思路:一开选题的时候考虑到,首先此题目的技术构成较为简单,组员这组长的指导下有完成的可能,其次是我对这个题目比较感兴趣,又恰好华为杯的选题 ...
进程通信下
共享内存概念解释共享内存允许两个或多个进程共享一定的存储区。就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。因为数据不需要在客户机和服务器端之间复制,数据直接写到内存,不用若干次数据拷贝,所以这是最快的一种IPC。
注:共享内存没有任何的同步与互斥机制,所以要使用信号量来实现对共享内存的存取的同步。
共享内存的优势两个进程地址通过页表映射到同一片物理地址以便于通信,可以给一个区域里面写入数据,也可以从中拿取数据,这也就构成了进程间的双向通信,而且共享内存是IPC通信当中传输速度最快的通信方式没有之一,理由很简单,客户进程和服务进程传递的数据直接从内存里存取、放入,数据不需要在两进程间复制,没有什么操作比这简单了。再者用共享内存进行数据通信,它对数据也没啥限制。
最后就是共享内存的生命周期随内核。即所有访问共享内存区域对象的进程都已经正常结束,共享内存区域对象仍然在内核中存在(除非显式删除共享内存区域对象),在内核重新引导之前,对该共享内存区域对象的任何改写操作都将一直保留;简单地说,共享内存 ...
函数对象
函数对象重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象。又称仿函数。以下内容主要包括`lambda和function’(函数包装器)。
仿函数(functor),就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。
lambda表达式Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。
匿名函数所谓匿名函数,其实类似于python中的lambda函数,其实就是没有名字的函数。使用匿名函数,可以免去函数的声明和定义。这样匿名函数仅在调用函数的时候才会创建函数对象,而调用结束后立即释放,所以匿名函数比非匿名函数更节省空间。
必包闭包就是能够读取其他函数内部变量的函数。例如在C++中,只有函数内部的子函数才能读取局部变量,所以 ...
C++C文件io
C语言版本的文件io1.打开文件,确定权限12345FILE * fp = fopen("filename","rw")/*fopen("文件路径","权限")有返回值,返回0时表示关闭文件失败 *文件路径:绝对路径或者相对路径 *权限w(写),r(读),a(追加),r+,w+,a+(+号表示文件必须存在才能进行操 作,没有加号时文件不存在会自动创建) */
2.获取文件流,写入文件句柄12345678char buffer[] = "hello wolrd";fwrite(buffer,sizeof(char),sizeof(buffer),fp);/***有返回值,返回0时表示关闭文件失败 *buffer指的是要写入文件的数据流 *sizeof(char)表示要写入的数据流类型为char类型 *sizeof(buffer)表示要写入的文件长度为一个buffer长度 *fp表示要操作的文件句柄
3.读取文件内容12345678char Buf[12];//数组要提前确定长度frea ...