- 博客(84)
- 收藏
- 关注
原创 pandas详细介绍
pandas 详细介绍1 pandas官网1.1 官网1.2 其他可用网站2 pandas 概要介绍3 pandas之Series3.1 常用属性3.2 常见函数4 pandas之DataFrame4.1 常用属性4.2 常见函数5 pandas之其他函数1 pandas官网1.1 官网https://pandas.pydata.org/1.2 其他可用网站2 pandas 概要介绍Pandas 库是一个免费、开源的第三方 Python 库,是 Python 数据分析必不可少的工具之一。Pan
2021-11-30 09:48:20 5363
原创 网站框架的区别
根据上图可以看到:自己写一个网站,需要a\b\c三方面的工作。而web框架也就是将这几方面的工作不用自己再去进行了,框架都提供了。比如tornado框架就是提供了abc三方面都提供了。django框架提供了bc,但是没有提供a,因此a也使用第三方的框架wsgiref来完成。flash的框架提供了b,没有提供a、c。ngix就是web服务a的第三方框架...
2021-09-23 10:42:49 231
原创 django第一课:如何开始一个django项目
之前陆陆续续学过一段django,无奈总是被工作中的各种事情打断。从今天开始又要重新学习,每天抽出2个小时来继续每天的学习和进步,加油。如何开启一个django项目?方法一:不用pycharm环境。进入python的安装目录,C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\Scripts如下图所示看到有django-admin,使用它来新建项目:即django-admin startproject mysit
2021-09-15 10:42:35 312
原创 django学习1:web框架的内部原理——http请求的生命周期
内容摘要1. 自己开发web框架(1)tcpip、socket、http tcpip是协议,是约定好的规范,位于网络5层模型的传输层。tcpip表示的是一系列协议。 规定好的协议总要操作系统实现了才能使用,而socket就是操作系统实现的,tcpip协议族的接口,用于创建一个套接字,可以理解为,通过网络读写的文件描述符,socket、bind、listen、accept、connect一系列都是操作系统提供的接口用于实现tcp协议相关的功能。 tcp协议可以让两个进程通过三次握手建立稳定
2021-09-10 11:37:02 295
原创 查看、杀掉进程
ps -ef | grep字段含义如下:UID PID PPID C STIME TTY TIME CMDUID :程序被该 UID 所拥有PID :就是这个程序的 IDPPID :则是其上级父程序的IDC :CPU使用的资源百分比STIME :系统启动时间TTY :登入者的终端机位置TIME :使用掉的CPU时间。CMD :所下达的是什么指令sy.
2021-09-01 10:27:18 234
原创 docker 初入门
一.docker 技术入门https://juejin.cn/post/6844903957291237390二. docker 镜像、容器、仓库区别https://zhuanlan.zhihu.com/p/99330628三. docker指令查看docker 状态sysadm@SCT230A:~$ docker infoContainers: 0 Running: 0 Paused: 0 Stopped: 0Images: 1Server Version: 18.09.6S
2021-08-26 14:32:44 398 2
原创 awk小记录
sysadm@SCT230A:~/container$ cat container_disk_log c_data: disk: 1024mc_peidian: disk: 1024mc_base: disk: 1024mc_iot: disk: 1024mc_yingxiao: disk: 1024msysadm@SCT230A:~/container$ awk '/c_iot/{getline a;printf a}' container_disk_log di
2021-08-26 14:32:31 87
原创 typedef及函数指针
typedef的用法https://www.cnblogs.com/moon-lights/p/7079233.html函数指针http://c.biancheng.net/view/228.html
2021-08-24 14:01:50 75
原创 MQTT开源库mosquitto(三)几个接口流程
https://blog.csdn.net/skytering/article/details/108540245
2021-08-20 16:03:52 268
原创 Linux程序Segmentation fault (core dumped)
https://www.cnblogs.com/kuliuheng/p/11698378.html
2021-08-19 17:57:50 319
原创 vector 相关操作
vector的定义形式?std::vector<类型定义> 变量名称如何初始化??3.如何新增元素?v.push_back(此类型元素);4.如何判断非空?if(v.empty())或者if(v.size() == 0)如何删除元素?std::vector::erase()...
2021-08-19 15:13:40 100
转载 linux 写入单行和多行内容到文件
使用echo写入单行内容[root@redis-01 kubernetes]# echo "ETCD_DATA_DIR=/var/lib/etcd">test.conf[root@redis-01 kubernetes]# cat test.conf ETCD_DATA_DIR=/var/lib/etcd单行内容追加[root@redis-01 kubernetes]# echo "ETCD_NAME=etcd-test">>test.conf [root@redis-01
2021-08-13 10:59:05 778
原创 细说交叉编译工具
CPU的设计规范设计一款CPU,要遵循CPU设计规范,也就是指令集。目前的指令集主要有两种,一种是X86架构,一种的ARM架构。(当然非主流的还有MIPS指令集、RISC-V指令集,二者基于RISC精简指令集)英特尔和AMD采用的都是X86的指令集架构。手机、平板采用的是ARM的指令架构。ARM架构和X86架构的区别ARM主要是RISC精简指令集。 X86主要是复杂指令集CISC。微架构指的是芯片的电路结构。相同的指令集可能会有不同的微架构。比如英特尔和AMD都是X86的指令集,..
2021-08-12 18:55:46 883
转载 char *, string等之间的转化
https://blog.csdn.net/rongrongyaofeiqi/article/details/52442169
2021-08-10 16:03:25 134
原创 linux下编译找不到iostream等文件
首先iostream是c++的头文件,因此需要找到linux下g++的头文件安装目录。echo | g++ -v -x c++ -E -查看到如下结果#include "..." search starts here:#include <...> search starts here: /usr/include/c++/5 /usr/include/x86_64-linux-gnu/c++/5 /usr/include/c++/5/backward /usr/lib/gcc/.
2021-08-10 11:10:56 10610 1
原创 C++2.0 系列讲解之二——Variadic Templates
Variadic Templates 数量不定的模板参数使用:void print()template <typename T, typename… Types>void print(const T& firstArg, const Types&… args){cout << fisrtArg<<endl;print(args);}由上可以看到,任意参数,任意类型。用于递归。由于最后肯定会递归到参数都结束,因此需要增加参数为空的函数,即
2021-08-05 15:28:33 145
原创 C++2.0系列讲解之一
1.语言标准C++标准的演变:版本代目 版本号 年份C++1.0 第一版 c++98 1998第二版 c++03 2003(过渡版本)C++2.0 第三版 c++11 2011第四版 c++14 2014新特性新特性包括语言和标准库两个层面。后者以header files形式呈现。C++ 2.0 标准库的header files不带h例如:#include #include #include #include 等因为都在using namespace
2021-08-05 14:52:17 200
原创 C++ include
#include “” 自定义的头文件#include <> 系统或者第三方定义的头文件系统在编译前会进行预编译,预编译就是将所有include行,都进行内容替换。如果include的文件还包含include,则反复替换,直到无include为之。可能某些文件会重复被包含怎么办?在.h的第一行增加#pragma once即可。...
2021-08-05 13:59:25 392
原创 C++语言编译-链接--运行
编译单位源文件: .c文件 .cpp文件 .cu文件等。头文件: .h 和.hpp等文件。头文件分为三类:自编头文件,系统头文件,第三方头文件。上述编译生成目标文件obj文件。此时编译生成的obj文件仅包含自己定义的文件内容,对于系统头文件和第三方头文件的里的内容并没有包含,因此需要去.lib系统静态库和.lib第三方静态库中寻找这些文件的定义。这也就是链接。上述链接生成.exe。为何系统文件和第三方文件只提供lib,而不提供源码呢?第一个原因是知识产权的原因。第二个原因是提高效..
2021-08-05 11:00:51 225
原创 C++ 类 直接定义对象与new对象的区别
https://blog.csdn.net/fly_yr/article/details/48164567比如:使用new定义对象如下CheckHealth * checkHandle = new CheckHealth;传参时,传入对象指针g_dbHandle.UpdateResultDB(checkHandle);则接收时也需要使用指针来接收int DatabaseOperate::UpdateResultDB(CheckHealth *pcheckHandle)...
2021-08-04 14:25:18 242
原创 C++ 传参
C++ 函数传参有三种方式:传值形参和实参各占一个独立的存储空间。形参的存储空间是函数被调用时临时分配的存储区,然后将实参的值传递给形参,形参的值改变不影响实参。传地址形参和实参各占一个独立的存储空间。形参是指针,实参是地址。把地址传递给指针,是要指针指向此地址。因此被调用函数中对指针所指向地址的任何改变都会影响实参。如:void swap2(int *a, int *b);swap2(&x, &y);传引用形参是实参的别名,二者是同一个变量,使用同一块内存,有相同的地
2021-08-04 14:14:20 2429
原创 多线程同步技术概要
多线程同步多线程之间存在的对同一全局变量读写的可能性。这时候多线程如果同时操作此变量,由于内存的读写均需要速度和寄存器的配合,可能会导致读写错误。所谓的全局变量读写的区域,就被称为临界区。为了防止此类错误,需要对临界区做线程的同步。同步技术(1) 互斥锁pthread_mutex_t 类;https://blog.csdn.net/mengxiao12345678/article/details/119329402?spm=1001.2014.3001.5501(2) 读写锁pthre..
2021-08-03 11:38:40 78
原创 多线程同步系列之——条件变量
条件变量引用头文件pthread.h条件变量定义:pthread_cond_t cond;涉及的函数:pthread_mutex_init();初始化函数pthread_mutex_destory; 销毁函数pthread_wait()函数,实参为条件变量,互斥锁pthread_timewait()函数pthread_signal()函数:通知对方醒一个线程pthread_broadcast()函数:通知对方所有线程都醒。在其中增加线程的创建函数:...
2021-08-03 10:24:57 109
原创 多线程系列之同步——信号量
1.什么是信号量?信号量是线程同步的一种机制。其引用的头文件是semaphore.h定义的信号量格式为:sem_t sem;涉及的函数有:sem_init函数:初始化函数sem_destory函数:销毁函数sem_wait函数:检测自己的资源量,如果无资源则阻塞,,如果有资源,给自己的资源-1sem_post函数:给对方的资源+1sem_getValue函数:检测自身的资源数2.信号量与条件变量的区别条件变量更复杂,因为条件变量是否满足条件需要自己判断。但信号量是由信号量本身自己判断是
2021-08-03 10:10:40 499
原创 多线程之同步——通过读写锁来实现线程同步
什么是读写锁读写锁是互斥锁的升级版。其与互斥锁的区别是:互斥锁是凡是锁住的临界区都不可以访问。但读写锁是,读的部分可以并行访问,写的部分不可以并行访问。如何实现?pthread_rwlock_t rwlock;pthread_rwlock_init()pthread_rwlock_destory()pthread_rwlock_rdlock()pthread_rwlock_wrlock()pthread_rwlock_trywrlock()pthread_rwlock_unloc..
2021-08-02 18:14:32 357
原创 多线程系列之——死锁
什么是死锁死锁就是各个锁都已经锁住,没有开启,线程均变为阻塞态。什么原因导致死锁(1) lock后无unlock()(2) 重复加锁:则会锁在第二次加锁的地方(3) 多把锁的情况。有多少个共享资源(也就临界资源),就会有多少把锁。锁1被 线程A锁住,锁2被线程B锁住。但是线程A要访问锁2的资源,线程B要访问锁1锁住的资源。就成了无解。如何解决死锁(1) 用trylock(2) 检查(3) 第三方程序库有可以检查死锁模块的。...
2021-08-02 17:50:15 73
原创 多线程同步系列之一——通过互斥锁实现线程同步
什么叫线程同步线程同步就是线程因为涉及到对同一内存的读写操作,不可同时运行,必须要有先后关系。如何实现线程同步通过互斥锁:pthread_mutex_t mutex上述锁需要定义为全局变量。(1) 定义全局变量:互斥锁(2) 实现互斥锁的初始化——通过pthread_mutex_init(&mutex,NULL)实现。(3) 找到临界区什么叫临界区?即对全局变量上下文相关的最小程序段。为何要最小?因为锁的增加会降低效率。最小程序段,保证在数据安全的情况下的最大效率。(..
2021-08-02 17:14:46 268
原创 多线程系列之——线程分离
为了避免出现主线程退出影响到子线程的问题,需要将主线程与子线程进行分离。如下所示,在主线程中增加pthread_detach将主线程与子线程分离,增加pthread_exit(),退出主线程。
2021-08-02 16:35:04 286
原创 线程运行结果回收
主线程如何回收子线程的返回值通过pthread_exit()和pthread_join()二者配合完成。如下:子线程中如下:主线程如下:pthread_exit(&) 将数值返回,pthread_join()回收。但是上面的例子并没有成功的返回值,原因是返回的值为栈区的地址,当子线程退出后,栈区也释放了,因此栈区此地址的值不再存放当时计算的值。解决方案:将栈区地址定义在主线程中,通过pthread_create中的参数传入给callback函数。通过全局变量。...
2021-08-02 16:22:47 171
原创 多线程系列之三——线程回收
主线程与子线程子线程的退出不会影响主线程,但是主线程的退出会释放资源,会一并将子线程的资源也释放,导致子线程不会被运行。因此需要使用线程回收。回收函数void pthread_exit(void *retval);在主线程中可以调用pthread_exit(null)来实现主线程自己的退出,但是不会退出子线程。子线程会在自己运行完毕之后释放自己的资源。...
2021-08-02 16:07:05 414
原创 多线程系列之二——创建线程
概述原本单进程运行的程序,在创建了线程之后就会由单进程变为多线程。原来的进程叫做主线程,创建出来的线程叫做子线程。创建线程创建线程的函数:int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);第一个参数为线程的id号。第二个为线程的传入的属性,可以传入null,使用默认的属性即可。第三个为回调函数。第四个是传入回调函数的参数。..
2021-08-02 15:58:44 75
原创 多线程系列之一:概念
linux下线程与进程的由来windows下多线程使用的很多,但是linux的设计是没有线程的概念的,只有进程。为了在linux下使用线程,也就是轻线程。linux的内存分区可以通过下图看到linux的内存分区图。linux的多线程是共用内存的,说是共用内存,其实栈区,也就是临时变量区还是每个线程一块。而其他的区域,都是公用的。程序的执行关键是理解“多线程分时复用CPU时间片”。即原本CPU的时间都给了一个进程,现在分出了很多个线程,则需要各线程去抢占CPU时间片。并不是线程越多越好,一来是.
2021-08-02 15:36:27 67
转载 typedef void(*Func)(void) 用法
https://blog.csdn.net/flyztek/article/details/73610255
2021-07-28 09:43:42 308
原创 C++ 函数、变量、类命名规范
1.变量命名(1)成员变量在变量名前加上""表示或者“m”例如:_curValue;_oldValue;或者用下滑杠连接各个单词。(2)全局变量在变量名前加g_g_curValue(3)静态变量static int s_initValue;2.函数命名void SetValue();void GetValue();类名:C开头,各单词大写,...
2021-07-26 10:00:28 722
原创 C++中指针前还加&是什么意思
C++中指针前还加&是什么意思区分使用位置,有两种可能:1 在定义时使用,如int *a;int * &p = a;这种是C++中的引用,p本身不占用内存空间,只是a的一个别名,对p的访问完全等同于对a的访问。2 在非定义时,指针前加&表示取指针的地址。如int * a;int **p = &a;这里a本身是指针变量,在C语言中每个变量都有自己的内存空间,对变量做&操作,可以取得这个空间的首地址。于是&a就是取a的地址赋值给p,这样,*p就
2021-07-23 16:00:47 3918
原创 转Linux下如何编译C程序?
https://mp.weixin.qq.com/s?__biz=MzU5MzcyMjI4MA==&mid=100006132&idx=1&sn=6203d6e6a4a67e0c5bac1d6b458106a3&chksm=7e0d7633497aff25985f5366684db695fb134bf3b0e2c53bd2dd5853478765134fdfe410d394#rd
2021-07-21 15:09:30 48
原创 ubuntu中升级软件
sudo apt-get update更新软件源然后:sudo apt-get upgrade 更新所有软件或者sudo apt-get upgrade *** 更新某一软件
2021-07-21 10:53:04 203
原创 ubuntu不能满屏的问题
首先安装vmware-tools这个在虚拟机-重新安装vmware-tools,发现是灰色。方法:将虚拟机-设置下面的这两项,均改为自动检测。即可安装。调整分辨率安装后,发现屏幕的确变大了一些,但是高是满高的,宽却是只占了满屏的3/4左右。经思考,觉得是分辨率问题。分辨率中有宽高比,原来设置的是4:3. 选择了一个16:10的,可以了。...
2021-07-21 10:41:21 441
原创 ubuntu下安装eclipse
安装jdk主要分为以下几步:第一步:windows下载jdk,第二步:传到ubuntu下, 第三步:解压,第四步:设置环境变量。step1:window下下载jdk地址: http://www.oracle.com/technetwork/articles/javase/index-jsp-138363.html 选择相应的 .gz包下载step2:传到ubuntu下使用winCP实现传输step3:解压tar包的解压方法:sudo tar -zxvf jdk-7u60-linux-x6.
2021-07-15 15:31:45 159
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人