- 博客(49)
- 收藏
- 关注

原创 一步一步教你做微博用户画像分析:Python微博爬虫+词云生成
Python练习项目项目目标Python微博爬虫项目目标用爬虫程序抓取目标用户的全部微博Python微博爬虫微博移动版网页(点此跳转)内容简洁,便于分析,因此选用移动版网页作为爬取对象。...
2020-05-18 18:16:28
8984
6

原创 数据库复习笔记
数据库学习笔记(一)文章目录数据库学习笔记(一)1 绪论1.1 数据库概述1.1.1 四个基本概念1.1.2 数据管理技术发展1.1.3 数据库特点1.2 数据模型1.2.1 两类数据模型1.2.2 数据模型组成要素1.2.3 常用数据模型1.3 数据库系统结构1.3.1 三级模式结构1.3.2 二级映像与数据独立性2 关系数据库2.1 关系数据结构2.1.1 关系概念2.1.2 关系完整性2....
2020-04-26 16:56:20
1704

原创 数据结构:B树、B+树详解和C语言实现
数据结构:B树、B+树详解和C语言实现B树的定义什么是B树为什么要用B树B树的性质B+树B+树与B树的区别B+树的特点C语言实现数据结构定义创建B树初始化一个空节点根据给定的数据集合进行建树节点插入判断节点是否是满节点进行递归插入子树的分裂按层打印B树B树的定义什么是B树B树是专门为磁盘或其他直接存取的辅助存储设备设计的一类平衡查找树,可以实现O(logN)时间复杂度的存取操作。B树类似...
2020-02-14 18:25:54
4339
2

原创 MySQL关系数据库基本操作总结
一、数据库操作DATABASES关键字可以用SCHEMA关键字替代 创建数据库 CREATE DATABASE IF NOT EXISTS db_name --IF NOT EXISTS可以省略DEFAULT CHARACTER SET = charset_name --指定数据库字符集,可以省略DEFAULT COLLATEN = collation_name;...
2020-02-13 19:42:06
990

原创 C++三大IO流类总结——标准IO流、文件IO流、内存IO流
C++三大IO流类总结——标准IO流、文件IO流、内存IO流 IO流类一览标准IO流标准IO流的条件状态条件状态标志条件状态函数标准IO流的输入输出成员函数代码示例条件状态put和get函数getline函数标准IO的格式控制输出格式控制缓冲区控制控制bool类型格式进制控制其他常用输出格式控制输入格式控制文件输入输出流字符串输入输出流类IO流类一览ios:流基类(抽象类)istrea...
2020-02-13 19:40:50
1079

原创 数据结构:红黑树原理分析和C语言实现分步详解
数据结构之红黑树详解红黑树简介什么是红黑树为什么要用B树B树的性质B+树C语言实现数据结构定义创建B树初始化一个空节点根据给定的数据集合进行建树节点插入判断节点是否是满节点进行递归插入子树的分裂红黑树简介什么是红黑树红黑树是一种特殊的二叉查找树通过巧妙的设计,使得其为什么要用B树B树查找数据速度快,和红黑树等平衡二叉查找树相当,同时由于B树的每个节点可以包含多个数据关键字,相当于对数的...
2020-02-10 22:21:51
1355

原创 C++类的继承概念辨析:虚函数,虚函数表,抽象基类,纯虚函数,虚基类,虚继承
C++类的继承概念辨析虚函数和虚函数表动态绑定虚函数应用示例虚函数的实现:虚函数表虚函数的意义抽象类和纯虚函数虚基类和虚继承虚基类的代码实现虚函数和虚函数表在了解什么是虚函数之前,首先要理解什么是动态绑定。动态绑定动态绑定是C++类指针或引用的特性,当编译器遇到一个基类指针或引用时,并不直接确定其类型,而是在运行时根据其具体指向来调用对应的函数。为什么基类指针和引用可以指向派生类呢?因...
2019-06-28 22:39:48
811
1

原创 C++三大IO流类总结——标准IO流、文件IO流、内存IO流
C++三大IO流类总结——标准IO流、文件IO流、内存IO流 IO流类一览标准IO流标准IO流的条件状态条件状态标志条件状态函数标准IO流的输入输出成员函数代码示例条件状态put和get函数getline函数标准IO的格式控制输出格式控制缓冲区控制控制bool类型格式进制控制其他常用输出格式控制输入格式控制文件输入输出流字符串输入输出流类IO流类一览ios:流基类(抽象类)istrea...
2019-06-20 21:53:51
4987
1

原创 阿里云服务器ECS搭建wordpress个人站点指南
尝试了两天终于搞定这个东西了,踩了很多坑,现总结最方便的方法如下:首先,阿里云服务器有安全防护,需要在安全组规则中放行以下端口:20/21端口,20000/30000端口,用于ftp服务80端口,用于http协议22端口,用于ssh客户端登录3306/3307端口,用于mysql服务工具准备安装xshell和xftp客户端,建立连接远程登录服务器安装过程服务器系统:ubuntu...
2019-03-15 07:31:31
1066
1

原创 Java之简单人机五子棋(二)
这一篇接Java之简单人机五子棋(一),讲一下AI算法实现的大致思路。主要思路是分别对黑白棋的局势进行打分,然后在找到评分最高的地方落点。 具体结构如下: - 首先,point函数负责接收某点坐标和棋子颜色,然后返回对该点的评分。评分函数有四个,分别负责四个方向上的评分,即检测连子情况,依据不同的情况给予相应的分数。 - 其次,wholePoints负责在全局上对每一个点针对某种颜色进行...
2018-02-25 23:04:46
1190
6

原创 Java之简单人机五子棋(一)
继上周实现了C++控制台版的五子棋之后,这周开始学习Java,顺便花了两三天时间,做出了一直想做的图形化界面的五子棋小游戏。同时在原来C++控制台程序的基础上对AI的算法进行了一定修正,修复了一些bug,并加入了悔棋的功能 C++五子棋系列传送门: C++之简单五子棋的设计思路 C++之简单五子棋的语言设计实现 C++简单五子棋的AI设计及实现 五子棋的算法规则和类的设计在C++相关...
2018-02-25 21:58:03
8547
4

原创 C++简单五子棋的AI设计及实现
设计思路:通过接口获取信息来确定颜色,通过set_chess函数来确定落点。对每个点位给出两种颜色棋子的打分,分别存在两个15*15的数组里,数组下标代表点的位置。确定最大值所在数组之后,遍历该数组找出所有最大值对应的位置,然后对这些位置统计另一种颜色的棋子的分数,再选取一次最大值,从而确定要落点的位置。打分函数的设计:在四个方向分别统计然后相加。对于某一个方向的分数统计,则分为正反两个...
2018-02-17 00:39:04
6976
1

原创 C++ 动态数组类模板(向量容器)vector与STL用法总结
vector(向量)类模板定义在头文件vector中,提供五种构造函数,可以针对不同情况进行初始化:vector<type> name;//构造一个空的vector对象vector<type> name(length);//构造一个长度为length的vector对象,所有元素初始化为0vector<type> name(length,n);//构造一...
2018-02-15 15:03:15
2187
1

原创 C++之简单五子棋的语言设计实现
算法思路在上一篇[C++之简单五子棋的设计思路](http://blog.youkuaiyun.com/black_kyatu/article/details/79293392)中描述的较为清晰了。接下来则是设计数据类型和语言实现部分。类及类的实现#ifndef RENJU_H#define RENJU_H#include <iostream>#include <windows.h&g...
2018-02-15 10:07:01
2649
2

原创 准确详解:C/C++ float、double数据类型的表示范围及精度
今天复习C++遇到了float、double数据类型的表示范围及精度问题,花费了一些时间重新梳理了一遍,鉴于网上很多文章写的并不清晰,并且有不少疏漏错误之处,特结合个人理解仔细整理如下。要弄清楚这个问题,首先要搞清楚浮点数在内存中的存储方式。浮点数,区别于定点数,指的是小数点位不确定的的数据类型,其原理是将一个浮点数a用两个数m(尾数)和e(指数)来表示:a = m × b^e。其...
2018-02-05 13:03:42
46338
25
原创 Linux环境:C编程实战——实现文件下载
设计目标采用C/S模式,服务端发送文件,多个客户端可以同时下载文件服务端的进程不会因为客户端的操作(意外退出)崩溃关闭服务端时各个子进程可以有序退出需要设计协议保证文件传输不出差错客户端可以动态查看文件下载进度设计思路服务端请求响应服务端采用进程池模式,父进程监听服务端口,创建多个子进程负责传输文件,有客户端请求时,建立连接,然后唤醒一个阻塞的子进程处理。父进程通过维护一个...
2020-01-12 12:07:59
2318
6
原创 C++编程之自定义日志类 ——log4cpp使用详解
C++编程之自定义日志类 ——log4cpp使用详解log4cpp简介与安装log4cpp安装log4cpp简单介绍layout布局——日志输出格式log4cpp::BasicLayoutlog4cpp::PatternLayoutappenderlog4cpp::FileAppenderlog4cpp::RollingFileAppenderlog4cpp::OstreamAppenderlog...
2019-06-23 21:29:29
7238
2
原创 C/C++辨析
开始复习C++,针对C与C++的一些关键不同和区别,做以下总结:命名空间c++诞生时,程序编写已经越来越复杂了,为了避免越来越长的函数和变量名称,防止重名,于是C++中加入了命名空间机制。说白了,就是把一堆变量和函数的声明或者定义放在一起,然后起个集体的名字,就叫命名空间。命名空间的用法当在命名空间外使用变量或者函数时,就需要指明是哪个命名空间,即需要加上作用域限定符说明。例如std:...
2019-06-17 21:07:25
232
原创 Linux环境:MySQL安装配置、基础操作和C语言连接MySQL操作
Linux环境:MySQL基础操作MySQL 8.0 安装MySQL语言简介MySQL数据类型MySQL基础语句数据库操作创建数据库选择数据库修改数据库删除数据库查看数据库查看指定数据库的创建信息表操作创建表更新表在表中添加新列修改表中列的属性删除表中的列重命名表删除表查看表查看表的名称查看表的结构索引操作创建索引查看索引删除索引数据操作插入数据删除数据修改数据查询数据数据查询进阶操作表的连接交叉...
2019-06-03 22:32:35
1455
1
原创 Linux环境:C编程之进程传递文件描述符
在多进程编程时,会用到进程间传递文件描述符的情况,例如进程池编程通信时,在主进程中建立连接,然后把建立后的socket转给子进程来处理任务。接下来看一下如何在进程间传递文件描述符。需要注意的是:文件描述符的编号在进程间独立,每个进程都维护一个进程文件打开表,所以同一文件描述符在不同进程中有不同的含义。因此,传递文件描述符,其实是在传递文件描述符对应的指向该文件的引用。具体流程:通过soc...
2019-05-29 21:06:20
824
4
原创 Linux环境:C编程之网络通信进阶操作
参考链接:IO多路复用之epoll总结Linux环境:C编程之网络通信进阶操作套接字选项setsockopt函数getsockopt函数套接字API层常用的socket属性epoll 多路复用模型套接字选项套接字选项详细规定了套接字的属性,影响socket的各项操作。我们可以通过setsockopt函 数和getsockopt函数愉快的设定和获...
2019-05-27 20:22:53
641
6
原创 Linux环境:C编程之多线程
Linux环境:C编程之多线程线程的创建与退出线程创建函数线程退出示例程序线程的终止与清理线程终止线程清理示例程序线程互斥与同步线程互斥锁pthread_mutex_t互斥锁的创建和销毁互斥锁属性锁操作函数线程同步示例程序线程的创建与退出线程创建函数函数原型:int pthread_create(pthread_t* thread, pthread_attr_t * attr, void ...
2019-05-24 21:27:57
348
4
原创 Linux环境:C编程之信号机制
Linux环境:C编程之信号机制信号概述什么是信号信号的来源进程对信号的处理常用信号signal 信号处理机制信号概述什么是信号信号是进程在运行过程中,由自身产生或由进程外部发过来的消息,用整型常量表示,在头文件<signal.h>中定义了一系列宏表示不同的信号。信号的来源信号由内核产生,内核产生信号的情形有三种:用户:用户能够通过输入 CTRL+c、Ctrl+\,或者是...
2019-05-22 22:38:57
591
5
原创 Linux环境:C编程进程通信
Linux环境:C编程进程通信管道通信标准流管道无名管道命名管道共享内存通信信号量通信管道通信标准流管道标准流管道函数: FILE* popen(const char* command, const char* open_mode);//打开管道流文件 int pclose(FILE* fp);//关闭管道流文件无名管道命名管道见《linux环境:C编程文件操作》共...
2019-05-21 18:37:05
576
3
原创 Linux环境:C编程多进程操作
进程概述进程是程序与数据的结合,即运行中的程序。每个进程的所有状态信息保存在各自的进程控制块(PCB)中进程标识每个进程都有一个唯一的进程标识号pid,pid是一个整型变量。同时每个进程都有 一个父进程标识号ppid来记录其父进程。Linux系统中,init进程是所有其他进程的祖先进程,init进程没有父进程,其pid=1,ppid=0,通过函数pid_t getpid(void) ,...
2019-05-19 21:26:28
1663
5
原创 linux环境:C编程文件操作
linux环境:C编程文件操作C语言标准函数库文件操作函数Linux目录操作基于文件描述符的Linux文件操作基本文件操作-打开、关闭与读写MMAP文件映射C语言标准函数库文件操作函数打开文件:foen(文件名,打开格式)关闭文件:fclose(文件名)无格式读文件:fread(目标地址,读取单位大小,读取个数,源文件指针)无格式写文件:fwrite(源地址,读取单位大小,读取个数,目...
2019-05-17 00:09:47
3903
5
原创 Linux环境:C编程基础操作
Linux环境(gcc编译器):C编程基础操作gcc安装gcc基础编译命令gcc进阶命令:静态库与动态库文件的生成批量编译:Makefile简介生成可执行文件的Makefile文件生成静态库文件的Makefile文件生成动态库文件的Makefile文件gcc调试命令gdbgcc安装Ubuntu:sudo apt-get install gccCentos:sudo yum instal...
2019-05-15 22:06:55
1522
1
原创 Python学习笔记(十三)——进阶语法
传递元组函数可以返回元组来实现传递多个数值 示例如下:&gt;&gt;&gt; def get_error_details():... return (2, 'details')...&gt;&gt;&gt; errnum, errstr = get_error_details()&gt;&gt;&gt; errnum2&g
2018-08-28 12:26:06
298
原创 Python学习笔记(十二)——标准库
参考链接:python每周模块sys标准库sys主要负责解释器与程序的交互,提供了一系列的函数用于和解释器进行交互,并可以通过该模块访问解释器使用或者维护的变量。 详解文章:https://www.cnblogs.com/Archie-s/p/6860301.html os标准库os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口。 常用方法有: os.remo...
2018-08-26 11:47:01
308
1
原创 Python学习笔记(十一)—— 异常处理
异常处理 python中的异常处理使用try…except…else语句,形式如下:try: 语句块except ERROR1: 语句块except ERROR2: 语句块...else 自定义异常类型 通过定义Exception类(或BasException)的子类来自己定义用户异常类型,使用raise语句来抛出异常 示例如下class User...
2018-08-23 21:15:14
409
原创 Python学习笔记(十)——输入与输出
用户输入输出 用户输入与输出函数为input()和print()input()函数接收字符串参数并输出在屏幕上,回传用户输入的字符串print()函数负责格式输出简单练习:写一段小程序判断输入的一句话是否是回文punctuation = ['.', '?', '!', ':', ';', '-', '—',\ '(', ')''[', ']', ...
2018-08-22 18:43:45
285
1
原创 Python学习笔记(九)—— 面向对象编程
类与对象是面向对象编程的两个主要方面。 类(Class)能够创建一种新的类型(Type),其中对象(Object)就是类的实例(Instance)。 对象可以使用属于它的普通变量来存储数据。这种从属于对象或类的变量叫作字段(Field)。对象还可以使用属于类的函数来实现某些功能,这种函数叫作类的方法(Method)。字段与方法通称类的属性(Attribute)。 通过 class 关键字可以...
2018-08-20 14:41:54
240
原创 Python学习笔记(八)—— 脚本编写示例
编写python脚本实现压缩备份功能。 示例代码: 运行环境:linuximport osimport timesource = ['/home/es-pc/Desktop/test']#需要备份的文件夹target_dir = '/home/es-pc/Desktop/backup'#存放备份的文件夹target = target_dir + os.sep + \ ...
2018-08-19 16:07:51
232
原创 Python学习笔记(七)数据结构
Python 中的数据结构主要分为序列、映射和集合,其中序列有六种内置数据结构,主要用到的是列表(list)和元组(tuple),字符串也是一种序列。映射只有一种内建数据结构,就是字典(dictionary)。列表 list列表是最常用的数据类型,它的数据项不需要具有相同的类型,创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。 列表中的元素可以通过下标(从0开始)引用,...
2018-08-12 23:07:11
237
原创 Python学习笔记(六)模块
模块的目的是为了实现代码的复用。编写模块有很多种方法,其中最简单的一种便是创建一个包含函数与变量、以 .py 为后缀的文件。另一种方法是使用撰写 Python 解释器本身的本地语言来编写模块。模块的导入模块可以被其它程序导入并运用其功能。 使用import语句导入模块,模块文件应该位于sys.path所给出的路径下。 import模块之后,通过“模块名.变量名”可以引用模块中的对象...
2018-08-10 12:03:12
240
1
原创 Python学习笔记(五)函数
函数定义Python中的函数定义规则如下:函数通过关键字def来定义,后接函数标识符名称和圆括号()。 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。函数内容以冒号起始,并且缩进。return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None示例...
2018-08-09 18:56:58
213
原创 Python学习笔记(四)控制流
python运行版本3.6.3 IDE PyCharm 教育版if语句完整的if语句包含三个语句块:if…elif…else。其中elif和else均可以省略 在任意一个语句块均可以内嵌if语句。注意Python通过缩进来区分不同层次的语句块。 示例1 ...
2018-08-07 18:15:40
278
1
原创 Python学习笔记(三)运算符与表达式
python运行版本3.6.3 IDE PyCharm 教育版运算符+ (加) 两个对象相加。 3+5 则输出 8 。 ‘a’ + ‘b’ 则输出 ‘ab’ 。- (减) 从一个数中减去另一个数,如果第一个操作数不存在,则假定为零。 -5.2 将输出一个负数, 50 - 24 输出 26 。* (乘) 给出两个数的乘积,或返回字符串重复指定次数后的结果。 2 * ...
2018-08-07 17:42:39
410
原创 Python学习笔记(二)变量
变量用来存储信息,值可以被改变,因此需要命名之后使用。为变量命名需要用到标识符。标识符命名命名标识符时,需要遵守以下规则:第一个字符必须是字母表中的字母(大写 ASCII 字符或小写 ASCII 字符或 Unicode 字符)或下划线( _ )。标识符的其它部分可以由字符(大写 ASCII 字符或小写 ASCII 字符或 Unicode 字符)、下划线( _ )、数字(0~9)组成...
2018-08-06 21:58:32
279
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人