自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学渣的博客

成长之路。github地址:https://github.com/wangbohy123/

  • 博客(114)
  • 资源 (14)
  • 收藏
  • 关注

原创 Python3.6 下yield的常见错误(AttributeError: 'generator' object has no attribute 'next')

今天在python下写了协程的简单实现,但是竟然出现了错误,代码如下:#-*- coding:utf-8 -*-import timedef A(): while True: print('----A----') yield time.sleep(0.5)def B(c): print('----B----') c.next(

2017-09-08 11:29:31 13122 1

原创 关于epoll版服务器的理解(Python实现)

epoll版服务器实现原理类似于select版服务器,都是通过某种方式对套接字进行检验其是否能收发数据等。但是epoll版的效率要更高,同时没有上限。且epoll版服务器只能在Linux系统中运行。 在select、poll中的检验,是一种被动的轮询检验,而epoll中的检验是一种主动地事件通知检测,即:当有套接字符合检验的要求,便会主动通知,从而进行操作。这样的机制自然效率会高一点。 同时在e

2017-09-07 18:48:50 1403 1

原创 select版tcp服务器(python实现)

在编写了单进程非阻塞式服务器之后,还有另外种写服务器的方法,便是利用select。 select是对底层操作系统的一个访问操作,因而效率较高,比单进程非阻塞中的for循环遍历效率要高,可以利用select进行选择,选择出来可以读取信息的套接字、可以发送信息的套接字、以及产生的异常(分别是三个返回值)。readable, writable, exceptionable = select([], []

2017-09-07 14:43:51 1420

原创 python非阻塞式单进程服务器

python的单进程服务器一次只能处理一个客户端,显然是没有实用价值的,但是我们可以将单进程服务器变为非阻塞式的。 利用socket中的setblocking()方法可以将tcp套接字转化为非阻塞式套接字,可处理多个客户端,且不会相互影响,因为是非阻塞式的,但是要注意,转化为非阻塞式之后,如果没有接收到客户端消息则会产生异常,所以要用到异常处理,以及每次接收到的客户端消息不断更新,需要使用列表进行

2017-09-07 00:17:21 1322

原创 Python版单进程、多进程、多线程服务器

在学习了Python的网络编程以及计算机网络的相关知识之后,编写了Python版的服务器。有三种实现方式,分别是单进程、多进程、多线程。 实现原理:建立tcp套接字,为该套接字绑定本机信息,之后进入循环,令tcp套接字接收信息,并传递给客户端套接字以及收集客户端地址,然后再次进入循环,服务器套接字不断接收客户端传递进来的信息,判断信息(字符串)长度是否为零,若为0则表示客户端已经关闭。 单进程的

2017-09-06 14:15:42 2030

原创 利用Python实现多线程聊天功能

关于Python网络编程,写了一个利用多线程、套接字等,实现多线程聊天功能,可以随时的发送,接收,可利用网络调试助手进行本地测试。源代码如下:#-*- coding:utf-8 -*-from threading import Threadfrom socket import *#1.实现接收消息def recvDate(): while True: recvInfo

2017-08-15 17:29:47 2119

原创 Python高级之——浅拷贝、深拷贝(deepcopy、copy的区别)

在python里有深浅拷贝之说,何为浅拷贝? 看代码:>>> a = [11,22,33]>>> b = a>>> id(a)25084152>>> id(b)25084152>>> b.append(44)>>> a[11, 22, 33, 44]>>> b[11, 22, 33, 44]这便是最简单的浅拷贝,可以发现a、b地址相同,指向同一片内存(拷贝的是引用),同时改变b

2017-08-14 16:52:14 2086

原创 Python面向对象之元类——使用type动态的创建类

type还有一种完全不同的功能,动态的创建类。type可以接受一个类的描述作为参数,然后返回一个类。(要知道,根据传入参数的不同,同一个函数拥有两种完全不同的用法是一件很傻的事情,但这在Python中是为了保持向后兼容性)type可以像这样工作:type(类名,由父类名称组成的元组(针对继承的情况,可以为空),包含属性的字典(名称和值)) 代码如下:#运用type创建类、添加属性Test = t

2017-08-14 16:04:18 3731

原创 关于递归的总结——汉诺塔、素因数的求解(Python实现)

在Python函数的学习中,再次对函数的递归感到了迷惑,都说递归逻辑清晰,应用简单,但是在应用中却总有些不理解的地方,甚至感到很疑惑,在此进行总结,希望能理解。首先看一下阶乘的递归求法:def getNum(num): if num > 1: result = num * getNum(num-1) else: result = 1 return resulta = getNu

2017-08-09 21:02:37 661

原创 关于Python中的引用传值

学习了Python后,感觉到对Python里的引用传值有些疑惑,搜集了一些资料,同时编了一些实例,在此对引用传值解惑一下,分享给大家。在Python里,一切事物皆为对象,并且规定参数的传递都是对象的引用。python参数传递都是“传对象引用”方式。实际上相当于c++中传值和传引用的结合。首先我们可以看一下c++里传值的方法:#include#includeusing nam

2017-08-09 09:27:55 748

转载 Python的魔法方法

据说,Python 的对象天生拥有一些神奇的方法,它们总被双下划线所包围,他们是面向对象的 Python 的一切。他们是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而这一切都是自动发生的。Python 的魔术方法非常强大,然而随之而来的则是责任。了解正确的方法去使用非

2017-08-08 15:30:59 367

转载 Python中的生成器——yield

您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ?我们先抛开 generator,以一个常见的编程题目来展示 yield 的概念。如何生成斐波那契數列斐波那契(Fibonacci)數列是一个非常简单的递归数列,除第一个和第二个数外,任意一个数都可由前两个数相加得到。用计算机程序输出斐波那契數列的前

2017-08-06 20:38:21 359

原创 八皇后问题——用Python解决

八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为n1×n1,而皇后个数也变成n2。而且仅当 n2 = 1 或 n1 ≥ 3 时问题有解。这是一个典型的回溯算法,我们可以将问题进行分解:

2017-08-06 20:30:58 2569

原创 Python易错点整理——for和else的搭配使用、global的使用

今天编程时遇到了一些Python中易犯的错误,总结如下:一、for和else的搭配使用:在Python中for循环可以和else搭配使用,但是有些细节地方容易出错,比如:for i in xrange(1,10): if i == 1: print("Yes")else: print("No")你可能打算希望程序最终输出Yes,但是在这个程序段中最终输出的是Yes和N

2017-08-05 15:49:27 4569

原创 Python基础(7)——名片管理系统(实现了数据简单的存储、修改、删除、查看等)

进行了一些Python基础知识的学习后,将这些知识进行综合,实现了名片管理小系统,可以进行数据的增删改查。主要思路是将名片(信息)存进字典里,再将字典存入列表里,方便进行增删改查。代码如下:

2017-08-04 17:28:11 1853

原创 Python基础(6)——实现输入任意多个数,并计算其平均值

此程序不光可以运算平均值,可以应用于一切需要多个数据输入(在一行内完成)的程序中。利用字符串的分割实现了输入任意多个数据,并计算其平均值的小程序。思路是接收输入的字符串,以空格为分隔符,将分割的数据存入列表(lst1)中,将lst1中的数据转存入另一个空列表(lst)中,转存时将字符串转化为整型,从而利用函数求出lst中数的和、平均值,是Python基础(5)中结尾程序的升级版。

2017-08-04 17:23:18 79281 5

原创 Python基础(5)——函数的执行,调用,嵌套

如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数关键词:封装、独立功能、代码块、模块、调用 Python提供了许多内建函数,比如print()。但我们也可以自己创建函数,这被叫做用户自定义函数。在学习过程中老师提出一个问题input()函数是否有返回值,答案自然是肯定的,input()必然有返回值,在Pyt

2017-08-04 17:08:20 1421

原创 Python基础(4)——字符串、列表、元组、字典

Python:字符串、列表、元祖、字典

2017-08-02 23:15:17 725

原创 Python基础(3)——北京市地铁买票问题(思维练习题)

Python基础练习,进行循环与条件判断的嵌套,有一道逻辑练习题如下:根据以下信息提示,请帮小明计算,他每月乘坐地铁支出的总费用提示信息:北京公交地铁新票价确定据北京市发改委网站消息称,北京市将从2015年12月28起实施公共交通新票价:地铁6公里(含)内3元,公交车10公里(含)内2元,使用市政交通一卡通刷卡乘公交车普通卡5折,学生卡2.5折。    具体实施方案如下

2017-08-01 23:02:11 5595 1

原创 Python基础(2)——Python选择、循环结构

Python的循环结构: •while循环一般通过数值是否满足来确定循环的条件•for循环一般是对能保存多个数据的变量,进行便利•if、while、for等其他语句可以随意组合,这样往往就完成了复杂的功能郑老 2017/8/1 16:32:53◦continue的作用:用来结束本次循环,紧接着执行下一次的循环•break/continue只能用在循环中,除此以外不能

2017-08-01 16:39:09 740

原创 智能版石头剪刀布——c++实现

利用c++实现了相对智能一点的石头剪刀布,方法是为计算机设置偏好,有第一偏好、第二偏好,第三偏好。同时计算机选择的时候会以百分之50的概率选择第一偏好,以百分之40的概率选择第二偏好,百分之10的概率选择第三偏好。为了更加狡猾,设置全局变量记录运行局数,每隔三局(可以自行设定)分析用户的偏好,从而改变自身的偏好,可以使得计算机更为人性化,完成简单的人机交互。这也是c++老师曾教给我们的,在

2017-08-01 14:12:37 3432

原创 计算机网络——简单的端口扫描器

在计算机网络的学习中,不由得觉得这门课的零碎知识点异常之多,同时因为学习的课本是老外的教材——自顶向下方法,因此学习起来不免觉得吃力,但是从老外的教材里更能从一定高度理解计算机网络的知识体系,也是乐在其中,同时做英语的习题感觉也很有趣味,从各方面来说可以说是获益良多,认识了很多专业词汇。节课之后,便想做一个简单的端口扫描器,用的语言是java,因为实现界面很简单,同时也有封装好的Socket类可以

2017-07-31 21:49:08 1430 1

原创 Java程序设计——模拟行星运动

期待了很久的Java语言程序设计也拉下了帷幕,在几个月的时间里基本掌握了java的简单用法,学习了java的主要基础知识,面向对象思想,多线程并发控制,swing界面设计,动画制作等,最后结课了也打算制作一个课程设计能够尽可能多的涵盖所学知识,将其进行串联,因此考虑实现了一个简单的模拟行星运动的小软件,主要思路如下:利用动画实现行星运动的模拟,主面板里有一个中心行星,同时绘制了椭圆轨道,有

2017-07-31 21:25:35 3634 1

原创 Python基础(1)

利用暑假的时间留校进行一个短期的Python培训,几乎都是些简单的Python基础,但是也有很大的学习价值,毕竟这是个又一次从头开始学习一门新语言的机会,同时记录一些学习过程的感悟。一、利用Sublime进行Python的简单交互:在Sublime下可以很方便的进行python的编程,按下Ctrl+B即可进行代码运行(在此Python更偏向于解释型语言),但是无法进行交互,即当你写下

2017-07-31 20:10:47 341

原创 JAVA中关于多线程的理解

学习了JAVA的多线程以后,感悟颇多,对进程,线程有了一个更直接的认识。线程是位于进程之下的更小的单位,线程与线程之间存在争夺关系,多个线程共享内存,从而提高了执行效率,也会相互争夺cpu资源竞相执行相关对象的代码段。遇到一道例题,较充分的展现了线程的相关主要操作,分析如下:例题:编写一个多线程程序实现如下功能:线程A和线程B分别在屏幕上显示信息“„start”后,调用wait等待

2017-05-27 23:01:53 2046

原创 JAVA 基本绘图——利用JFrame JPanel 绘制扇形

利用JFrame制作幕布(容器),创建JPanel部件,将JPanel部件添加到JFrame容器中,利用了基本的java绘制图形方法,步骤也是基本的套路。利用了API   ———   fillArc()  fillArc()方法定义如下:public abstract void fillArc(int x, int y,int width, int height, int start

2017-05-27 22:53:29 6611

原创 解决cin.getline()函数被跳过执行的问题(与cin连用)

今天编程序时遇到了如下问题:int main(){ cout<<"1 Write a record"<<endl; cout<<"2 Read a record"<<endl; cout<<"3 Exit"<<endl; int a; char filename[MAX_PATH+1]; //cout<<"input filename :"; //cin.getline(fil

2017-03-14 21:56:35 3756 1

原创 求单链表的最大值与原地逆转

数据结构链表一章已学习完毕,因此编了一个程序用以实现链式表的构建,插入,查找,求最大值,以及原地逆转。除了求最大值与原地逆转之外都是常规操作,不再赘述,着重分析最大值与逆转的算法。一、最大值的求解:通过max函数实现,定义结构体指针p指向l的首元节点,max初值为p->data,通过if判断是否有更大的数,将更大的数赋值给max,同时p指向下一个节点,由此求出最大的数。代码如下:voi

2017-03-13 18:14:22 8474

转载 字符串分割c++

1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例:

2017-03-11 08:24:48 509

原创 关于c++的引用变量与命名空间

一、c++的引用变量初学c++便接触到了引用变量,定义类型为整型时:int a;int &b=a;表示将b定义为一个引用变量,引用了a的数值,同时b与a的地址值相同,如果改变b的数值,a,b的数值也会改变,但是作为引用变量b的地址值不会改变,同时引用变量与指针有着相似性,但是却是不同的,有着不同的特性。以下程序作为对比分析:#includeusing namespace std

2017-03-03 13:41:55 2757

原创 关于寻找素因数的三种方法

质因数(素因数或质因子)在数论里是指能整除给定正整数的质数。除了1以外,两个没有其他共同质因子的正整数称为互质。因为1没有质因子,1与任何正整数(包括1本身)都是互质。正整数的因数分解可将正整数表示为一连串的质因子相乘,质因子如重复可以指数表示。根据算术基本定理,任何正整数皆有独一无二的质因子分解式。每个合数都可以写成几个质数(也可称为素数)相乘的形式,这几个质数就都叫做这个合数的质因数。

2017-03-01 19:23:01 3872

原创 线性表的链式表示

线性表的链式表示。主函数的步骤包括,输入线性表数据,对链表的删除,插入。利用指针进行对链表的访问。

2017-03-01 18:51:19 334

原创 关于线性表的线性表的实现(顺序结构)

学习了数据结构后对线性表有了更好的了解,所谓线性表有两种实现方法,一种是用顺序结构,一种是用链式结构。具体说来就是用动态数组与链表的方式来实现。这便是数据结构的两种储存方式,顺序存储结构与链式存储结构,同时也是数据结构研究的存储结构的具体体现,因此线性表的实现对于初步学习数据结构的我们有着重要的意义。这篇博客用的是动态数组实现线性表。利用了c++里面的关键词new  进行内存动态分配

2017-03-01 18:37:53 3885

原创 关于快速寻找素数的方法

利用素数筛选法进行素数的快速查找。原理很简单,素数一定是奇数,素数的倍数一定不是素数。思路如下:预定义N表示10000,即表示查找10000以内的素数,首先定义数组prime[]对N以内的数进行标记,奇数存为1,偶数存为0,最终实现结果为素数的prime值为1,因此将prime[2]赋值为1(2是素数)。之后利用for循环,对N以内的奇数进行遍历(注意for循环的条件控制),for里用if判断是否为素数(奇数),若是,执行内部嵌套的for循环判断该奇数是否为素数,若是则标记为1,若不是则prime置为

2017-02-21 14:27:07 11852 4

ZYNQ-AX7020原理图、PCB图和引脚

包含ZYNQ7000系列中的AX7010、AX7020芯片原理图结构图等硬件资料:AX7020开发板原理图V2.0、AX7020开发板PCB设计图、AX7020尺寸结构、AX7010_AX7020管脚。

2020-03-23

基于ZYNQ的FPGA基础入门.pdf

课程共计10课时,主要讲解开机测试,JTAG下载程序,FPGA基础语法基础,VIVADO软件快速入门、VGA或者HMDI接口的测试。开发人员拿到板子后第一件事情应该是对板子做一个开机测试。对于有FPGA基础,第一使用ZYNQ ,第一次使用VIVADO软件的读者,可以把软件使用相关课程看下;对于没有FPGA基础的,需要把FPGA基础的知识好好学习下。对于熟悉ZYNQ软件的,也会FPGA开发的,可以跳过本章基础部分,直接进入后面章节学习。

2020-03-22

BP神经网络的Python实现

该代码是用python实现的手写BP神经网络,实现了反向传播的推导,是非常好的学习资料,有助于理解神经网络的内部结构。内部有权重测试图片等。

2020-03-22

I2C总线操纵EEPROM

i2ceeprom_test模块完成 EEPROM的读写, EEPROM设备地址是A0,程序中将地址00的数据读出,然后通过LED显示,在按键按下时,数字加一并再次写入 EEPROM并显示出来。在 12C控制器中,代码的大部分功能在备注中也有很多批注。使用方法:打开Vivado,新建工程,导入文件即可。

2020-03-17

CCleaner_Pro_v5.56.rar

CCleaner_Pro_v5.56.ccleaner专业版,下载即用,十分方便,无需激活。

2019-05-09

tensorflow-1.8.0-gpu版本

谷歌出品深度学习的框架,是gpu版本的省去下载速度太慢的烦恼!下载后直接pip安装即可。

2019-04-09

飞机大战资源包

飞机大战资源包,python版,可供下载使用,欢迎下载。

2019-02-18

ssd检测工具

来自外国的一款绿色ssd检测工具,无病毒无捆绑,方便快捷。

2019-01-13

鲁大师绿色版

鲁大师仅含硬件检测的版本,解压直接使用,绿色版本,方便快捷。

2019-01-13

wsgi服务器

wigi服务器安装版本,可以在windows下直接安装使用,使用方法见里面的文档。

2019-01-13

Pillow安装包

Pillow安装包,用pip安装之后可直接使用,方便快捷。绘图包。

2019-01-13

Genymotion-ARM-Translation_v2.0

Genymotion-ARM-Translation_v2.0,直接拖入虚拟机,并且记得把里面的txt'文章删掉。

2019-01-13

Django1.11.11安装包

django的web开发框架的安装包,用pip即可安装,使用方便。

2019-01-13

VIM相应操作

Linux的vim的操作手册,中文版,可供学习使用,不可多得的好教程。

2018-01-26

空空如也

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

TA关注的人

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