自定义博客皮肤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/wolf-joe,新博客:https://yooo.ltd/

  • 博客(36)
  • 收藏
  • 关注

原创 Python3 NumPy裁剪图片可视区域

文章目录0x01 解决思路0x02 实现(Pillow)0x03 实现(NumPy)0x04 运行效率0x05 总结0x01 解决思路如何裁剪一张图片的可视区域?解决这个问题的方法有很多种,本文采用的方法很简单:想象有四条线从图片四周向内推进,如果碰到不是白色的内容,那么就停止推进。最终这四条线内部的区域就是该图片的可视区域。测试环境:Ubuntu 18.04 + Python3.6 +...

2018-10-26 16:51:06 3723 3

原创 半秒求一亿内的素数:经典筛选法&线性筛选法的介绍、改进、实现与性能分析

文章目录经典筛选法原理介绍具体实现埃拉托斯特尼筛法,简称埃氏筛,也有人称素数筛。这是一种简单且历史悠久的筛法,用来找出一定范围内所有的素数。本文主要内容为四种筛选法的原理介绍和具体实现(C++),并对比它们之间的性能差距。这四种筛选法分别是:经典筛选法、采用了欧拉函数的线性筛选法,以及个人对这两种筛选法的改进。经典筛选法原理介绍关于经典筛选法,维基百科上的动图能很好地解释其原理。先用...

2018-09-20 18:40:56 2555 2

原创 Java之序列化

内置serialize序列化创建一个自定义类:class VarClass1 implements Serializable { boolean aBoolean; char aChar; byte aByte; short aShort; int anInt; long aLong; float aFloat; double aDouble; String a

2016-12-04 12:15:19 556

原创 Java的多线程Socket编程

参考博客: 一个 Java 的 Socket 服务器和客户端通信的例子发送数据的Socket Client端创建一个Socket类用来连接Server。localhost 就是本机的地址,也可以换成远程的ip。4001是Server打开的Socket的端口号:Socket socket = new Socket("localhost", 40001);用一个PrintS

2016-11-27 13:23:33 803

原创 Java:Socket断点传输大文件

解决思路Sever端负责接收指令(文件路径、第几块、每块大小),读取相应的文件中的块数据,返回给Client(顺便附上有效数据长度、MD5)。Client端负责控制断点,通过断点向Server发送指令,接收数据后判断数据完整性(有效数据长度、MD5),再将数据写入目标文件。由于Java流处理类实在繁多,本次实验就统一采用 In/OutputStream 和 FileIn/OutputStrea

2016-11-27 12:25:01 5016 7

原创 Java实现80亿长字符串子串查找(多线程升级)

前言本博客文章只有代码块,一些输出和 try…catch 等内容没有写在这里。本博客文章的目的是熟悉 多线程 的操作,Java新手,如有不妥之处请指正!本文的基础是我的这篇博客,改动了最后字符串查找部分。生成字符串文件、插入子串部分的瓶颈在于IO,就没改动了。原版代码long n = 0; // n存放当前的文件的绝对位置while (true) { int len; // len存

2016-11-16 17:31:45 1005

原创 Java实现80亿长字符串子串查找

写一个8G的文件由于硬盘的速度较慢,所以一次写几个字节至文件是不太划算的,所以我们需要建立一个缓冲区,一次将缓冲区内所有的数据都写入硬盘,这样效率比较高。建立缓冲区并随机设置数据final int BUFFER_LEN = 8 * 1000 * 1000;char[] buffer = new char[BUFFER_LEN]; // 缓冲区大小为16Mfor (int i =

2016-11-13 17:12:39 1966

原创 Java界面编程(GUI,AWT)

参考博客: java图形界面设计(AWT) Java GUI程序设计的初步上Hello World创建一个窗口Frame frame = new Frame("first gui"); // 指定窗口标题frame.setLocation(100, 100); // 设置窗口在屏幕上的位置frame.setSize(200, 200); // 设置窗口大小创

2016-11-13 15:14:32 693

原创 Java内置类的使用

List和Map的嵌套举个Map中嵌套List的例子Map> height = new HashMap// 定义嵌套// 既然是List,那么也要做初始化,不然会有NullPointerExceptionheight.put(165.5, new ArrayList<>());height.put(170.0, new ArrayList<>());height.put(175.

2016-11-06 13:38:45 1775

原创 Java中数组、List、Set互相转换

数组转ListString[] staffs = new String[]{"Tom", "Bob", "Jane"};List staffsList = Arrays.asList(staffs);需要注意的是, Arrays.asList() 返回一个受指定数组支持的固定大小的列表。所以不能做 add 、 remove 等操作,否则会报错。List staffsList =

2016-11-02 18:08:30 148483 7

原创 用Python的Lxml库抓取网页内容

为什么是Lxml 一般来说,Python抓取网页内容有三种方式:正则、BS(Beautiful Soup)、Lxml。列个表格对比下这三种方式吧。 抓取方法 速度 使用难度 安装难度 正则 快 困难 无(内置) BS 慢 简单 简单 Lxml 快 简单 一般* 由于BS是由Python编写的模

2016-10-27 19:24:36 7918

原创 Java的throws、HashSet和TreeSet

throws 参考博客:再探java基础——throw与throws 说明: throws 是方法可能抛出异常的声明(用在声明方法时,表示该方法可能要抛出异常)。 语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{......} 例子: public void function() throws Exception{.....

2016-10-27 16:08:20 324

原创 Java类和异常处理

实现沙发床类 Java为了降低难度,并不支持对类的多重继承。但是如果有多重继承的需求,我们也可以用接口(interface)实现多重继承。如下图代码。沙发床继分别继承于沙发,床。 而沙发床具有沙发和床的双重特性。适配器模式instanceof 当我拿到一个对象的引用时,有时需要判断这个引用真正指向的类。我们可以从该类继承树的最底层开始,使用 insta

2016-10-20 20:31:51 484

原创 Java中的代码块、单例模式、修饰符

代码块Java共有三种代码块,分别是静态代码块、构造代码块、普通代码块,普通代码块是类似于c语言中的代码块,这里不作讨论。其余两个的优先级为: 静态代码块>构造代码块>构造方法 。如果有继承关系,则优先级为 基类静态代码块>派生类静态代码块>基类构造代码块>基类构造函数>派生类构造代码块>派生类构造函数 。如: 静态代码块在内存中只有一个副本,所以基类和派生类的静态代码块最先执行。其后轮到构造代码

2016-10-13 20:52:10 518

原创 《大数据时代(BIG DATA)》

—-豆瓣链接—-大数据的时代思维变革不是随机样本,而是全体数据 小数据时代的随机采样,最少的数据获得最多的信息 采样分析的精确性随着采样随机性的增加而大幅提高,但与样本数量的增加关系不大。简单解释是,当样本数量到达某个值之后,我们从新个体身上得到的信息会越来越少,就如同经济学中的边际效应递减一样。所以可以认为样本选择的随机性比样本数量更重要。 随即采样是在不可收集和分析全

2016-10-12 09:56:26 6364

原创 初探JAVA:语言特性(类)

构造函数修饰符 我们知道,一个类的构造函数的修饰符一般为public,方便外部new使用。但如果这个构造函数的修饰符为private或protected呢?这里引出各个修饰符的访问权限: 修饰符 类内部 package内 派生类 其他 public √ √ √ √ protected √ √ √ × default √ √

2016-10-08 16:17:10 358

原创 初探JAVA:语言特性

特殊关键字数组元素初始化值传递引用传递副本传递Java实现快速排序关于String特殊关键字native 简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,

2016-09-23 20:20:34 504

原创 初探JAVA:Eclipse的使用和变量声明

Eclipse的安装(windows平台)在Eclipse官网下载Eclipse最新版本的压缩包 下载下来的压缩包解压即可 如果电脑安装了JDK并设置好了环境变量,Eclipse可自动识别,第一次使用只需设置工作路径 看到这个界面就算安装完成 Eclipse中断点的使用新建一个工程用来测试断点 工程界面 设置断点并执行debug,我们可以很清晰地看到程序执行的过程和其中变量的值 Eclipse快

2016-09-12 22:11:38 1347

原创 初探JAVA:JDK环境搭建及运行第一个java程序

一、Windows下的JDK环境搭建在Oracle官网上下载适用于当前windows版本的jdk可执行文件 运行下载的可执行文件进行安装 将jdk添加至系统变量 测试java和javac 二、Linux下的JDK环境搭建

2016-09-11 15:28:35 646

原创 CentOS7下使用Nginx+uWSGI+Python3搭建Web服务器

1.安装nginx并添加脚本yum install nginx脚本参考资料:centos下nginx启动脚本和chkconfig管理2.编译uwsgiwget http://projects.unbit.it/downloads/uwsgi-2.0.6.tar.gztar zxvf uwsgi-2.0.6.tar.gzcd uwsgi-2.0.6make然后将编译出来的 uwsgi 复制到系统

2016-04-09 11:31:15 793

原创 构造Python中的常量类

Python中不存在像const那样的常量关键字,只是在内建空间中提供了一小部分常量,比如True、False、None等。那么在Python中如何使用常量呢?一般来说有如下两种方法:通过命名风格来提示使用者该变量代表的意义为常量,比如MAX_NUMBER、TOTAL。然而这种方式并没有真正实现常量,其对应的值仍然可以被改变,这只是一种约定俗成的风格。通过自定义类实现常量功能。这要求符合“命名全部

2016-03-22 14:02:25 15079 6

原创 如何排序10亿个数--外排小试

0.思路10亿个32位整数需要4G左右的内存,一次性载入内存是不现实的,必须要采用外排。第一次接触,当然是从最简单的办法入手。 我们可以利用大容量的外存作为中转,将10亿个数切分成小块,每一块排序好后写入外存。 切分完成后,对这些小块进行归并排序。同时在归并排序过程中,获得最大(小)值将实时写入文件,这样就可以保证低内存占用。 注:下面的例子为升序排序1.切分10亿个数假设’billion’

2016-03-16 20:04:00 8048

原创 CentOS升级Python3.5并安装lxml等模块

升级python自带的python2.6到python3.50. 安装编译环境yum install gcc gcc-c++ zlib-devel1. 下载源码并安装wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgztar zxvf Python-3.5.0.tgzcd Python-3.5.0./configure --

2016-02-24 17:08:24 2217

原创 C语言获取目录下目录&文件列表

数据结构struct dirent{ long d_ino; /* inode number 索引节点号 */ off_t d_off; /* offset to this dirent 在目录文件中的偏移 */ unsigned short d_reclen; /* length of this d_na

2016-02-16 21:34:07 1951

原创 指针和数组的区别

我们知道,声明和定义是不一样的。声明只是告诉编译器有这样一个对象存在,而定义不仅告诉编译器有这个对象,还为这个对象分配内存。同时我们也知道,指针只是指向数据,而数组则是保存数据。在很多情况下,数组和指针可以混用,比如int arr[512];int *p = arr;p[0] = 1;以上代码是可以正确运行的。但如果把指针和数组完全混为一谈,有时候还是会令人苦恼的。一个诡异的BUG请看如下代码:

2016-02-14 10:39:20 348

原创 C语言中函数如何返回处理后的结果?

在c语言中,自动变量在堆栈中分配内存,当包含自动变量的函数或代码块退出时,它们所占用的内存便被回收。被回收的内存可能会被马上覆盖,也可能等到很久以后才会被覆盖,这取决于堆栈中先前的自动变量位于何处,下一个函数/代码块声明的变量/写入的内容等条件,所以如果有以下代码:char * func(){ ... char buffer[512]; ... return buf

2016-02-04 09:32:01 1343

原创 NULL & NUL in C

NULL: 定义为0或0L或(void *)0,用于指示一个指针值是空,即什么都不指;‘\0’: 用且只用字符串结束符;NUL : 0x00,0值字符,可以用于结束ASCII字符串,和’\0’类似,但是在c/c++中没有定义,如果要使用的话,需要自定义为 #define NUL ‘\0’;EOF :通常定义为-1, 文件结束符标志,一般是ctrl+z.NULL是在 stddef.h 头文件中专门为空

2016-02-03 22:39:23 402

原创 使用PIL时遇到的图片质量问题

resize()图片质量PIL(python image lib)是一个优秀的python图像处理库,但我在用PIL的resize()功能之后发现图片的质量远远不如原图: 如图所示,resize之后图片的质量远不如原图。经过一番搜索后发现需要开启resize函数的抗锯齿功能。 调用方法为:pic = pic.resize(box, Image.ANTIALIAS),即用抗锯齿模式缩放原图。

2016-01-11 13:06:52 5163

原创 一些python模块的安装

开始接触python编程,先前一直用的是标准库,但平常还是要用到很多非标准库的模块。下面记录一下安装一些模块的过程(目前用的是win7x64):安装beautifulsoupbeautifulsoup是一款优秀的html/xml标签解析工具,这里有BS官方中文教程。 安装过程:下载BS,最新版本是4.3.2:下载地址,下载file项,然后解压到硬盘。用cmd切换到解压文件目录python s

2016-01-04 10:43:25 509

转载 Python性能鸡汤

阅读 Zen of Python,在Python解析器中输入 import this. 一个犀利的Python新手可能会注意到"解析"一词, 认为Python不过是另一门脚本语言. "它肯定很慢!"毫无疑问:Python程序没有编译型语言高效快速. 甚至Python拥护者们会告诉你Python不适合这些领域. 然而,YouTube已用Python服务于每小时4千万视频的请求. 你所

2016-01-03 12:04:47 755

原创 如何在windows下使用masm和link对汇编文件进行编译

32位系统带有debug程序,可以进行汇编语言和exe的调试。但真正的汇编编程是“编辑汇编程序文件(.asm)->编译生成obj文件->链接生成exe文件”。下面,我就来说一下如何在windows下使用masm调试,使用link链接。1、下载相应软件 下载masm.exe和link.exe,并将其解压(移动)到自定义目录(比如我的是d:\dos 目录)个人分享地址:http://yun.baidu

2015-11-21 15:07:02 27282 11

转载 为什么尽量不要使用using namespace std?

作者:MacTvish链接:http://www.zhihu.com/question/26911239/answer/51503880来源:知乎因为使用STL中 有部分名称是没有加下划线的保留标记的而在自己的源代码中用到了后会引发未定义的后果例如:#include using namespace std;int main(){ int max=0;}

2015-11-07 13:15:30 12505 2

原创 高级字符串查找

(以下三个函数都需要添加头文件)1.查找一个字符串前缀strspn和strcspn函数用于在字符串的起始位置对字符计数。他们的原型如下:size_t strspn( char const *str, char const *group );size_t strcspn( char const *str, char const *group );group字符串指定一个或多个字

2015-11-07 12:56:48 536

原创 可变参数列表:stdarg宏

可变参数列表是通过宏来实现的,这些宏定义于stdarg.h头文件,它是标准库的一部分。这个头文件声明了一个类型va_list和三个宏--va_start、va_arg和va_end。我们可以声明一个类型为va_list的变量,与这几个宏配合实用,访问参数的值。

2015-11-06 18:07:29 498

原创 在64位windows下使用debug汇编编程

在64bit的windows系统下使用debug

2015-10-12 19:46:58 4931 1

原创 ”函数指针”作为“函数参数”传送时的格式

小细节

2015-10-02 20:18:09 559

空空如也

空空如也

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

TA关注的人

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