自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 Python技术练习------自动化处理费用表

一、前言 我们通常在处理表格中数据的时候,主要还是使用VBA代码来对数据进行加工处理。之前也通过VBA代码对表格数据进行了处理,链接:https://blog.csdn.net/YANG_1605/article/details/111998521。最近在学习python编程处理Excel,使用到openpyxl模块的知识。就试着使用python来实现费用表的汇总。首先要导入openpyxl包,下载链接:https://pypi.org/project/openpyxl/#files...

2021-01-29 14:56:29 525

原创 Python练习------实现九九乘法表

一、简述本次主要使用Python 中的openpyxl包,来实现在表格中写乘法表。首先要导入openpyxl包,下载链接:https://pypi.org/project/openpyxl/#files安装方法:输入cmd命令,进入到控制台界面:然后进入到openpyxl包所在的路径(其实进不进路径无所谓,安装时命令会自动在电脑上寻找,作者习惯进入当前路径),执行pip install openpyxl命令:安装完成后,打开Pycharm编辑器,import openpy

2021-01-25 16:39:15 762

原创 Python知识小结------正则表达式

一、前言在平日的的文本查找中,我们只要按下Crtl-F就可以进行内容查找。而正则表达式则是将你要查找的内容固定成为一个“模式”,我们在做查找时会十分方便。例如:我们要判断一串数字是否为电话号码时,使用正则表达式和不使用正则表达式的情况。我们知道电话号码的模式是:400-555-4567不使用正则表达式:def isPhoneNumber(text): if len(text)!=12: #判断长度是否为12位 return False for i in

2021-01-19 15:58:27 296

原创 Python小技术-----三维画图

一、引言 最近一直在学习Python方面的知识,有幸学习到了数据分析与可视化这一模块,感觉绘制三维图形这一块十分有意思。下面是我最近写的几个小的例子,与大家分享。二、简介 首先我们在这一模块需要引入数值计算可视化库matplotlib,这个库主要依赖于numpy模块和tkinter模块,它可以绘制多种样式的图形,包括线图、直方图、饼图、散点图、三维可视化图等,是计算可视化的重要工具。在终端中输入命令安装matplotlib模块:pip install matpl...

2021-01-15 14:44:41 1428

原创 Python小项目-------随机生成考试试卷

一、问题概述 假如你是一位地理老师,班上有29个学生,你想测试一下班里的同学对中国所有省份省会城市的掌握情况。为了避免学生出现作弊的情况,你需要设计试卷题目,使得每张试卷的题目和答案都是随机生成的,这样就不会出现作弊的情况。如果是进行手动出题,那么耗费的时间是巨大的,还好,你懂得一些Python,如何使用代码设计来完成这一任务。二、问题梳理你的程序应该做到以下事情:创建29份不同的测试试卷; 为每份试卷创建29个选择题,次序随机生成; 为每个问题提供一个正确答案,三个错...

2021-01-12 09:26:05 1213

原创 VBA--------实例(费用表数据汇总)

一、前言 自己从进入职场后首次接触的语言是VBA,通过一段时间的学习,感觉自己学到了不少东西,也对VBA相关知识有了一定的了解。本次文章是讲解通过具体代码来对一个实例进行实现,以此来对自己的最近所学进行一个提升与巩固。二、项目简介本次实例中总共包含6个工作表,通过对6张表中的数据进行提取,再进行运算,将其汇总成一张新的表格。这就是本次实例所要实现的功能。六张表分别是:财务费用汇总(入账+未入账)、数据源(入账)、数据源(未入账)、试算表-是、试算表-非和试算表-上月累计额。其中财务费用汇总.

2020-12-31 11:10:19 834

原创 VBA------------实例(表格数据拆分)

通过对VBA的学习,已经基本可以通过代码来操作表格进行数据处理,本次就通过实际编写代码来进行描述:首先,先创建一张表格,用来保存最初始的数据。本次主要实现的功能是:通过所属部门的名称对人员进行分类,并按照部门名称将表格拆分成多个子表。代码实现过程如下:Sub 拆分工作表() Application.DisplayAlerts = False '不显示错误提示窗 Application.ScreenUpdating = False '不闪屏 D.

2020-12-25 14:10:47 1267 1

原创 认识VBA------------------VBA基础

我们来认识一点VBA的代码,代码的主要意思是在两个表中进行数据的操作。Sub 测试() Dim arr() As Variant Dim brr() As Variant Dim i As Integer Dim Length As Integer Dim Longth As Integer Worksheets("利润表").Select Length = Range("A1").End(xlDown).Row For i = 1

2020-12-25 10:43:56 468 1

原创 浅谈c++特性之------多态

(1):解释多态性:函数的多种不同的实现方式即为多态(2):必要性在继承中,有时候基类的一些函数在派生类中也是有用的,但是功能不够全或者两者的功能实现方式就是不一样的,这个时候就希望重载那个基类的函数,但是为了不再调用这个函数时,出现不知道调用基类的还是子类的情况出现,于是就提出了多态。如果语言不知多态,则不能称为面向对象的。(3):多态性是如何实现的多态是实现是依赖于虚函数来...

2019-08-31 13:50:09 188

原创 浅谈c++三大特性之------继承

一、前言 继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。二、继承定义 在c++语言中,我们称已存在用来派生新类的类称为基类,也称为父类。由基类派生出来的新类称为派生类,也称作子类。一个派生类可以从一个类中派生,也可以从多个类中派生。从一个基类中派生的继承称为单继承,从多个基类中派生的继承...

2019-08-23 16:11:44 192

原创 static在c和c++中的用法

static关键字作用有两种:1.限定作用域;2.保持变量内容持久化;C语言中static的用法:(1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持基值不变;(2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所有的函数访问,但不能被模块外其他函数访问。它是一个本地的全局变量。(3)在模块内,一个被声明为静态的函数只可被这一模块内其他的函数调用。也就...

2019-08-22 19:40:05 320

原创 const在c和c++中的用法

C中const的用法总结起来主要分为以下两种:1、在定义变量时使用(由于const常量在定义后不能被修改,所以在定义时一定要进行初始化操作):a)最简单的用法,说明变量为一个常变量(在以下例子里,int和const的先后顺序可以改变的,这无所谓):const int a=100;int const b=100;b)说明指针为指向常数的指针,即指针本身的值是可...

2019-08-22 18:05:51 167

原创 C++------this指针的认识

C++类中this指针的理解1、this指针的概念 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成...

2019-08-22 17:52:53 147

原创 C++三大特性之------封装

面向对象的三个基本特征是:封装、继承、多态。其中,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!我们今天就来认识封装有关的知识。在C++中,类封装通常分为下边两个部分 -类的实现细节 -类的使用方式 在我们使用别人提供的类时,我们只关注于如...

2019-08-22 16:50:36 177

原创 C++-------OOP思想

比如:人为实体。人的属性则有:年龄、性别、职业、身高等。人的行为:跑步、走路、吃饭等。抽象成数据类型:人的属性可以使用变量、结构体变量进行表示,行为则可以通过函数体来进行描述。属性抽象为类中的成员变量,行为抽象为类中的成员方法。类通过实例化生成对象,对象可以使用类中的成员方法,与现实中的实体行为相互对应,模拟了现实中的实体。...

2019-08-22 11:53:41 137

原创 二分查找

二分查找是针对有序数组所用的一种快速查找元素的方法.条件:针对有序数组(元素从小到大或从大到小)优点:查询速度较快,时间复杂度为O(n)缺点:有硬性条件的限制,而且即使查到后,插入与删除困难非递归实现 :int BinarySearch(int arr[],int len,int key){ int left=0,right=len-1; int mid=0; if...

2019-08-20 17:17:57 117

原创 几种常见的排序------(插入、冒泡、快速排序)

一个大佬的快速排序详解:https://blog.csdn.net/vayne_xiao/article/details/53508973简单代码实现://冒泡排序void BubbleSort(int arr[],int len){ int tmp=0; for(int i=0;i<len;i++) { for(int j=0;j&lt...

2019-08-20 12:13:53 144

原创 编程练习(最大乘积数、字符串去重)

1、最大乘积数题目描述:给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大思路:首先我们想到的是先对数组进行排序,然后找出前三大的数据进行相乘,就可以得到最大乘积。例如:3 4 1 2输出:24话不多说,直接上代码:C语言实现:# include <stdio.h># include <stdlib.h> vo...

2019-08-15 16:49:57 244

原创 c++中引用与指针的区别

联系指针是指向一块内存地址的变量,这个变量可以指向其他地址;引用是一个变量的别名,只能是一个变量的别名。一个变量的引用可以转为指向它的指针。不同1、指针是一个实体,需要分配内存空间。引用只是变量的别名,不需要分配内存空间。2、引用在定义的时候必须进行初始化,并且不能够改变。指针在定义的时候不一定要初始化,并且指向的空间可变。(注:不能有引用的值不能为NULL)3、有多级指针,...

2019-08-14 20:39:42 215

原创 c/c++函数符号的生成规则

函数符号(函数的名字修饰):是编译器在编译期间创建的一个字符串,用来指明函数的定义或原型。C和C++程序的函数在内部使用不同的名字修饰方式,下来就来进行详细的介绍:1、C编译器的函数名修饰规则__cdecl调用约定(c标准调用约定):仅在输出函数名前加上一个下划线前缀,例如_sum。__stdcall调用约定(windows标准调用约定):编译器和链接器会在输出函数名前加上一个下...

2019-08-14 20:08:52 879

原创 浅谈守护进程&编程流程

1、引言 之前学习进程方面的东西,在处理孤儿进程时,我们有两种方法,一是父进程调用wait得到子进程的退出码,而是将孤儿进程挂载到守护进程(精灵进程)上。这是第一次接触到守护进程这个概念,按照自己的理解,它应该是一种后台进程,用来管理事务活动。在经过学习后,对守护进程又有了新的认识。2、概念 守护进程也称精灵进程(Daemon),是运行在后台的一种特殊进程。...

2019-08-13 17:54:54 203

原创 Linux下进程间通讯------信号量

在具体介绍信号量之前,先来了解一下在这一块有关的概念:临界资源:同一时刻,只允许一个进程访问的资源; 临界区:访问临界资源的代码; 原子操作:单指令的操作称为原子的,单条指令的执行是不会被打断的; p操作:减一操作,从内存中获取资源,给进程使用; v操作:加一操作,释放资源,将资源归还给内存; 阻塞与非阻塞:**关注的是进程在发出请求后的状态。阻塞:发出请求后,若请求不能被立即响...

2019-08-13 16:52:49 135

原创 Linux下进程间通讯------socket

今天来介绍另外一种通讯方式,socket。具体来说,利用socket套接字来进行进程间通讯,这一方式主要是在TCP和UDP协议那块使用,客户端和服务器端相当于是两个进程,利用socket来发送和接收消息,从而实现通讯。之前介绍过了TCP编程,今天就用UDP协议的实现来进行说明。首先来了解UDP编程流程:UDP Server:Int sockfd=socket();----&gt...

2019-08-13 15:48:01 383

原创 Linux-------利用文件操作函数实现普通文件的拷贝

学习了文件操作函数后,可以使用文件操作函数实现对普通文件的拷贝,具体的文件操作函数如下:如何实现文件的拷贝呢?基本思想:代码实现:#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<string.h>#include<asser...

2019-08-12 20:23:12 1425 1

原创 Linux下进程间通讯------共享内存

接下来总结进程间通讯的另外一种方式----共享内存。1、概念 共享内存是一种最为高效的进程间通信方式,指两个或多个进程共享一个给定的存储区。它通过内核对象将进程中的虚拟地址映射到相同的物理内存上,因此系统分配共享内存是按照"页"为单位。2、特点 共享内存是最快的一种 IPC,因为进程是直接对内存进行存取。 因为多个进程可以同时操作,所以需要进行同步。 ...

2019-08-12 19:41:57 149

原创 Linux下进程间通讯--------消息队列

1、认识消息队列 消息队列就是一个消息的链表,存放于内核中。可以把消息看作一个记录,具有特定的格式以及特定的优先级,一个消息队列由一个标识符(即队列ID)来标识。具有写权限的进程可以往消息队列中添加新消息,具有读权限的进程可以从消息队列中读取消息。2、特点(1)消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。(2)消息队列独立于发送与接收...

2019-08-12 12:03:22 142

原创 Linux学习--gdb调试

一.gdb常用命令二.gdb学习小例:#include <stdio.h>int add_range(int low, int high){ int i, sum; for (i = low; i <= high; i++) sum = sum + i; return sum;}int main(void){ int result[100]...

2019-08-11 17:47:55 137

原创 浅谈IO复用--(select、poll、epoll)

声明:总结主要参考于《Linux高性能服务器编程》这本书,自己总结些许,与君共勉。I/O多路复用形成原因:如果一个I/O流进来,我们就开启一个进程处理这个I/O流。那么假设现在有一百万个I/O流进来,那我们就需要开启一百万个进程一一对应处理这些I/O流(——这就是传统意义下的多进程并发处理)。思考一下,一百万个进程,你的CPU占有率会多高,这个实现方式及其的不合理。所以人们提出了I/O...

2019-08-11 17:10:56 164 3

原创 浅谈HTTP与HTTPS的区别

很多人存在这样的疑惑就是http与https的区别,其实https是http的安全版,相比http,多了一个secure,这个secure是由SSL提供的。我们先来看HTTP与HTTPS的概念:HTTP:http是超文本传输协议在互联网上应用最为广泛的一种网络协议,所有www文件都必须遵守这个标准,基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)连接。http...

2019-08-07 18:48:52 275

原创 浅谈--HTTP通讯原理

HTTP是什么?超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。什么是HTTP请求? 指的是从客户端到服务器端的请求消息。HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列几个...

2019-08-05 19:09:18 340

原创 Linux —— fork()与vfork()的区别与联系

fork()与vfork(): 我们在创建一个进程时主要是通过某个已存在的进程来调用fork()或者vfork()函数来实现的,那些已存在的进程是作为系统启动的一部分由内核来创建的。1.fork函数介绍#include<unistd.h>pid_t fork(void);功能:创建子进程正确返回:父进程中返回子进程的pid,子进程返回0.(单调用双返...

2019-08-02 20:18:51 188

原创 TCP三次握手、四次挥手详解

TCP协议TCP协议全称: 传输控制协议, 顾名思义, 就是要对传输层协议主要有两个:TCP协议和UDP协议。TCP协议相对于UDP协议的特点是:面向连接的、可靠的、字节流服务。数据的传输进行一定的控制.TCP服务的特点: 使用TCP协议通信的双方必须先建立连接,然后才能开始数据的读写。双方都必须为该连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。TCP...

2019-08-02 16:47:31 418

原创 Linux之---多线程编程(线程安全&线程同步)

一、线程概念:线程是进程内部的一条执行序列,一条有序指令的集合。线程是轻量级的进程,一个进程中至少要包含一条线程,main函数代表的执行流称之为主线程。二、进程与线程的区别:根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。1.同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进程中至少包含一个线程。2.进程的创建调...

2019-07-26 14:58:20 234 1

原创 知识总结(new与malloc的区别、线程与进程的区别)

一、new与malloc的区别new delete是运算符,malloc() free()是函数malloc和free是c/c++标准库函数,new和delete是c++运算符。它们都可以用于申请动态内存和释放内存。函数内声明的变量在栈区,代码段运行结束,栈区内存会自动释放malloc和new申请的内存在堆区,使用完毕需要程序员手动释放它们的区别如下:1.属性new/...

2019-07-25 17:26:37 239

原创 Linux下的进程间通讯--------管道

一、进程间通讯进程间通讯,顾名思义,就是在不同进程之间进行数据的传递或者是交换信息。进程间通讯的方式主要有以下几种:信号量、管道、共享内存、消息队列、套接字二、管道管道是进程间通讯中一种最古老的的方式,管道是单向的、先进先出的。一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)从管道的头部读出数据。其主要特点:(1)以文件来做交互媒介,管道文件分为无名管道和...

2019-07-21 16:47:14 148

原创 知识总结(static、gcc与g++、静态库与共享库、深浅拷贝)

1.static关键字的作用?(1)定义全局变量时加上static关键字修饰,表明该全局变量为静态全局变量,作用域为当前文件;(2)函数定义或声明时加static 关键字修饰,为静态函数,只能在本文件中被调用;(3)定义局部变量时,用static关键字表示其为静态局部变量,只被初始化一次,之后每次调用函数时,该变量值为上次函数退出时的值。2.gcc与g++的区别?(1)对...

2019-07-19 15:40:12 1084 2

原创 TCP协议的认识及简单实现

一、TCP协议(一)具体定义:TCP协议即传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。(二)C/S模型:客户端 被动通讯方 数据提供者 服务器端 主动通讯方 数据获取者(三)服务特点: 1.面向连接的传输; 2.端到端的通信; ...

2019-01-21 17:36:55 434 2

原创 C++中的单例模式

1.什么叫单例模式?单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。简单理解就是让类只生成一个对象。通过单例模式, 可以做到:(1)确保一个类只有一个实例被建立(2)提供了一个对对象的全局访问指针(3)在不影响单例类的客户端的情况下允许将来有多个实例2.怎样实现单例模式...

2018-12-04 21:49:27 207 1

原创 c++类和类的封装

1.类和类成员C++提供了如char、int、long、float、double等基本数据类型,足够用来解决大多数哦相对简单的问题,但对于复杂的问题就比较困难了。C++的一个实用特性是自定义数据类型;如之前的枚举和结构体: struct Goods{ char* mname; float mprice; int mamount;}struct 类中默认访问限定符是公有的...

2018-11-28 15:29:56 386

原创 调整数组顺序使奇数位于偶数前面

题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分。思路: 先定义两个pStart、pEnd两个指针,一个放在数组首部,一个放在数组尾部,pStart指针向左移动,pEnd指针向右移动,如果第一个指针指向的偶数,第二个指针指向的是奇数,则交换这两个数字。图解:具体代码实现...

2018-11-28 12:28:10 114

空空如也

空空如也

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

TA关注的人

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