Latest stories

基于Python的进程调度算法实验

最近操作系统的实验课老师要求我们来实现进程调度算法,加之最近又在学习Python。于是就用Python实现进程调度的几个经典算法:先来先服务、短进程优先、时间片轮转。 算法解析 先简单的介绍一下三种进程调度算法 FCFS先来先服务 讲道理这个算法是最简单的调度算法,就是判断谁先来,先来的就先服务。没啥道理可讲 SJF短进程优先 这个只是FCFS的改进版,防止长进程过长时间占用CPU,因此将CPU设置为优先服务短进程 时间片轮转法 为了应对上述两种方法在,进程并发上的缺陷,将CPU的服务量化为时间片,将CPU的计算资源分配改为按时间片分配。每个进程拥有一定的时间片,从而让每个进程都可以得到相应。当然对于时间片轮转算法可以有很多改进,例如给每个进程加上优先级,优先服务优先级高的程序 算法实现 依据上面说的算法原理,采用OOP的思想(虽然超级不严谨)来进行实现 PCB...

从0开始用Python实现图片相似度检测

最近突发奇想,想利用Python做一个轮子工程,就是使用Python来做两个图片相似度的比较,不引用市面上成熟的API,是完完全全的轮子工程(后期估计会有一大堆优化,如果我不懒的话) 主要应用的算法就是感知哈希算法。感知哈希算法的核心就是将图像抽象成一个字符串指纹,然后比较两个字符串指纹之间的汉明距离(Hamming Distance)。但是两张图片的大小都不尽相同,直接拿来比较的可比性也比较低,因此首先需要对图像进行一些预处理 图像预处理 首先要做的第一步就是消除图像中颜色的差异,对于颜色的处理无外乎就是二值化,灰度化那么几种。而这里选择二值化显然保留的数据太少了。所以我们选择灰度化,来去除掉图像的颜色。 何为灰度化?简单的来讲图像分为RGB三原色,每一原色都用256位来表示(0...

Python3那些与Python2不同的地方(持续更新)

又是一年踩坑时啊,最近写Python为了保证在Python2和Python3中同时运行踩了不少关于两者的坑,本来是没打算总结的,可是越踩越多,越踩越多,脑子实在记不住了,就提笔写了这一篇博客 print 这是一个很普遍的坑,也是一个很容易遇到的坑 在Python27中,print可以这么写 Python print "hello world" 1 print "hello world" 也可以这么写 Python print("hello world") 1 print("hello world")...

各大开源许可协议与开源许可证详解

以下是上述协议的简单介绍: BSD开源协议 BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。 但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件: 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。 BSD...

使用Python爬虫获取拉钩职位信息的作死过程

Today i….. 最近本宝宝在做大数据的有关作业,需要获取一下拉勾的职位信息,于是,我就开始了我的爬虫之路 所谓爬虫就是 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫 1 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫 大概就是这样,接下来大概就是分享一下我做这个爬虫的是时候的一些整体思路 首先,我洗了个澡,吃了点水果,咳咳。说正经的了。...

JAVA从入门到放弃(6)多态

上一篇笔记中介绍了复用类,而这一篇笔记中想介绍一下多态。 在讨论多态之前,我们需要重新讨论一下向上转型这个问题。在之前的向上转型当中存在一个问题就是:我们为什么要故意忘记变量的类型。JAVA明明是一种强类型语言,但是在向上转型的过程中我们却故意忘记变量的类型。首先先来看一段代码 Java enum Note{ MIDDLE_C,C_SHARP,B_FLAT; } public class Text { public static void tune(InstrumentC i){ i.play(Note.MIDDLE_C); } public static void main(String[] Args){ WindC flute = new WindC(); tune(flute); } } class InstrumentC{ public void play(Note n){...

JAVA从入门到放弃(5)复用类

这篇笔记中我想简述一下JAVA的众多引人注目的功能之一:复用。真正的复用不仅要做到能够复制代码并对之加以改变,还应该做到更多。 复用的方法包括:组合、继承、代理。下面我们首先简述一下组合 所谓的组合就是在新的类中产生现有类的对象。因为新产生的类是由现有类和对象组成的,所以这种方法称为组合。下面的例子给出了组合的用法 class WaterSource{ private String s; WaterSource(){ System.out.println("WaterSource()"); s = "Constructed"; } public String toString(){return s;} } public class SprinklerSystem { private String value1,value2,value3,value4; private...

如何精准定位你的蓝屏问题

最近本程序狗的生产工具一阵抽风啊,简直是把我搞的恨不得咬舌头自尽,大概的问题就是蓝屏,不停的蓝屏,所以就有了本次博客的主题,如何精准定位你的Windows蓝屏问题 所谓Windows蓝屏也就是Windows发生的严重的无法通过自身恢复的错误,大多数都是硬件或者系统内核错误,现在的Windows系统的蓝屏界面已经比以前好看很多了,但是还是基本得不到什么有用的信息,基本我们想要定位蓝屏问题只能通过蓝屏代码,或者是蓝屏问题描述来解决问题,所以这里我要从蓝屏文件入手,分析究竟那个进程导致了Windows蓝屏 首先我们需要准备一些工具blueScreenView或者WinDbg这两个还是比较推荐后者的,前者的蓝屏问题分析其实是比较简单的,显示和很直观,但是大部分的分析工作需要使用者自己做,我们大概来介绍一下,我们首先导入蓝屏文件...

JAVA从入门到放弃(4)访问控制权限

所谓的访问权限控制说的简单一些就是那些可以访问那些不可以被访问,我们可以通过权限控制的修饰词来标明权限 从小到大一次是:private -> protected  -> public。不过仅有上面的一些关键字还不足以解决一个问题,就是如何将构件捆绑到一个内聚的类库单元,这个时候我们就需要引入package(包访问权限)加以控制 前面给出的示例中存在import语句,这里的improt引入的就是package,当我们组织代码的时候就要创建自己的package,使用方法如下 package access; 1 package access; 不过package这个语句需要在整个java文件的最开头,也就是第一句非注释性代码。你可能会问前面是用的import和package到底有什么作用,这里使用这两个关键字所允许的就是将单一的命名空间分隔开。...

机器学习笔记(8)逻辑回归模型

/*本课程笔记依托于Machine Learning——Andrew Ng(Stanford University)*/ 同样在这篇笔记中,我们一样会谈到代价函数和梯度下降方法,不过之前提到的代价函数和梯度下降法适用于线性回归的问题,而在这里我们提到的代价函数和梯度下降是适用于分类方法的 首先我们来看一下代价函数 和之前代价函数的作用相同,这里的代价函数同样是来验证假设函数是否符合预期,也就是拟合参数的优化目标...

Your sidebar area is currently empty. Hurry up and add some widgets.