自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (1)
  • 收藏
  • 关注

原创 软件工程再继续

高级软件工程课程结束了,但对于软件工程的理解却还在继续!孟老师通过对同一个功能的反复重构迭代,带领我们一步步理解什么是软件工程,如何写好代码!从一个简单的判断打印输出命令的hello world级别的程序,最后重构封装迭代为一个可重用的命令行接口程序,工程化的思想从0开始注入整个开发过程,现在回忆起来荡气回肠,体态充盈,老师对教授软件工程把握的恰到好处!七次实验内容学下目录: 实验一: 写一个he

2017-06-18 20:01:15 551

原创 python 函数式编程入门

函数用来包裹函数(high-order function),即函数的操作目标是函数,从而动态的修改函数。函数可以用来操作函数及数据(map-reduce),从而带来更加抽象和通用的接口;递归函数的包装注意事项:确定你需要包装的是那一层次,特别是多层次的包装递归函数的时候,要分清包装函数到底包装到那一层次。

2017-01-24 21:48:09 600

原创 tensorflow模型参数保存和加载问题

tensorflow模型参数保存和加载问题终于找到bug原因!记一下;还是不熟悉平台的原因造成的! Q:为什么会出现两个模型对象在同一个文件中一起运行,当直接读取他们分开运行时训练出来的模型会出错,而且总是有一个正确,一个读取错误? 而 直接在同一个文件又训练又重新加载模型预测不出错,而且更诡异的是此时用分文件里的对象加载模型不会出错?model.py,里面含有 ModelV 和 ModelP,另

2016-12-31 12:33:12 27035 5

原创 神经网络程序设计课学习心得

本课程的目标是通过学习神经网络和深度学习等机器学习算法来搭建一个完整的血常规检测报告单的年龄和性别预测系统。项目的最后效果就是,用户上传一张血常规报告单的图片,后台首先进行OCR识别出图片中的项目,将其存入MongoDB,然后会根据机器学习算法生成的模型对用户数据进行预测。

2016-12-26 20:25:25 3059

原创 Ubuntu16.04 配置tensorflow gpu版本

requirementspython 2.7Flasktensorflow GPU 版本安装nvidia driver经过不断踩坑的安装,终于google到了靠谱的方法,首先检查你的NVIDIA VGA card modelsudo lshw -numeric -C display 可以看到你的显卡信息,比如我的就是 product: GM107M [GeForce GTX 950M]

2016-11-26 10:42:41 6883

原创 Docker小记

Docker小记  由于ubuntu16.04还不支持paddle paddle,所以就用了下docker。官网上安装都很详细了,这里记录一些比较蛋疼的方法。如果你想要在运行的docker容器里面访问ubuntu本地的文件咋办?你发现运行一个容器进入了一个新linux环境,无法看到你的ubuntu主机文件了,更不用说访问和运行了。此时就需要知道docker和宿主机之间的数据共享了!

2016-11-01 14:48:00 1653

原创 J2EE environment setup on ubuntu16.04

J2EE environment setup on ubuntu16.04production server配置linux多用户管理HttpSessionSQL Injection双端验证

2016-10-07 16:49:02 1069

原创 Unicode之殇

Unicode之殇计算机数据存储传输与其数据含义—字节(byte)  乱码是所有程序员都会遇到的问题,这其中涉及到一个计算机的大学问–编码。始终要记住的是,计算机中的所有数据都是字节(byte)。字节本身并没有意义,除非赋予它某种意义,同一个字节数组可以被解释成不同的字符串,同一个字符串也可以存储成不同的字节数组。  由于计算机起源于美国,所以早期为了能够在计算机中存储英文字母,就建立了ASCII码

2016-09-20 18:15:25 1536

原创 Linux和windows双系统启动问题之一(win7 + ubuntu14.04 + legacy bios + mbr)

计算机启动磁盘分区表MSDOSMBR和GPTGUID partitiontable1 MBR分区表2 GUID partition tableGPT分区表多重系统启动BIOS和UEFI1.计算机启动当我们在一个主机上安装多个系统时(如Win7和Ubuntu14.04),都会遇到开机启动哪一个系统的问题。这里典型的情况是先安装的是Ubuntu,然后再安装win7,就会出现ubuntu启动项

2016-07-19 09:51:52 12289 1

原创 HashSet和HashMap分析

1.HashSet可以支持null元素,但最多放一个,HashSet不支持重复元素,因为元素是内部HashMap的Key;2.HashSet由HashMap支持,HashMap支持null,但最多只能有一个NULL Key map;3.判断HashSet或者HashMap元素重复,可以重写元素的hashCode和equals方法,比较需要关心的内容;4.不要试图修改HashSet里面对象元素的内容,这样可能会导致修改后和其中一个已经存在的元素相等的情况,从而造成下次查询HashMap不知道返回哪一个;

2016-04-01 16:34:44 650

原创 从IA32到X86-64的扩展所导致的函数传参栈模型的变化

X86-64扩展了IA32的寄存器数目,并且带浮点运算的程序会用到专用的浮点运算协处理器(包括SSE,%xmm寄存器等),这个可以查阅amd64 ABI文档。规定整数类型的参数通过寄存器%rdi %rsi %rdx %rcx %r8 %r9来传递,多余的参数通过栈来传递

2016-01-29 14:36:41 1048

原创 Minimum edit distance(levenshtein distance)(最小编辑距离)初探

最小编辑距离的定义:编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。例如将kitten一字转成sitting:sitten(k→s)sittin(e→i)sitting(→g)俄罗斯科学家Vladimir Levenshte

2015-07-26 15:02:57 2220

原创 Hadoop2.5.2+ubuntu14.04+eclispe+hadoop2x-eclipse-plugin-master搭建开发环境

Hadoop2.5.2+ubuntu14.04+eclispe(Version:Luna Service Release 2 (4.4.2))+hadoop2x-eclipse-plugin-master搭建开发环境环境:ubuntu14.04(或者linux系统)hadoop2.5.2(hadoop2.x.y应该都可以)eclipsehadoop2

2015-07-21 21:09:12 2599

原创 C语言基本数据类型及其扩展和可移植性问题

不同的c标准,基本数据类型大同小异,但基本都会包括以下几种:一定含有 char 、short 、int 、long 、float 、double可能含有long int、long long、long double甚至还有复数类型float_Complex、double_Complex、long double_Complex                              

2015-07-06 21:39:26 3290

原创 linux文件系统之文件组织方式

本文中将介绍一个具体的linux标准文件系统ext2的磁盘上文件组织方式和数据块寻址(逻辑地址到物理地址映射)两个问题:1.一个文件如何组织,采用何种结构;2.文件的读写实现,如何从逻辑空间找到磁盘上的物理块;1.文件的组织方式(微观角度,以下讨论的都是单个文件是如何被组织的):具体文件系统管理的是一个逻辑空间,这个逻辑空间就象一个大的数组,数组的每个元素就是文件系统操

2015-07-03 22:11:56 3250

原创 linux主机互信

linux配置ssh互信 什么叫linux主机互信:Linux主机互信,就是主机之间相互信任,什么是信任,就像人与人之间一样,不需要利用金钱等(除了你自己以外其他的东西)来取得对方的信任,大家相互信任对方,不需要额外的凭证。就好比你,你爸,你妈,你姐之间,不需要钱来维持你们之间的信任。同样,linux主机之间也是,我们从一台主机登陆到另一台时,往往需要验证你,需要你输入用户密码,才允许

2015-05-27 21:19:01 2182

原创 git初试

Git初试 初学者还不知道git和github有什么关系,其实一个是工具,一个是网站(或者说是代码仓库),我们需要注册github账号,才能把自己的代码放到github仓库里面。Github上有很多开源代码,我们可以下载并使用。各种对代码的管理都用git工具(有命令行和图形界面两种)来操作。 我们使用git工具来上传、下载、克隆、分支、合并自己的代码。使用github托管自己代码,

2015-05-21 21:24:44 1492

原创 linux文件系统之文件和分区基础

InUnix/Linux, afile is a sequence of bytes withoutstructure. Any necessary structure (e.g. for a database) isadded by the programs that manipulate the data in the file. Linuxitself doesn’t know abou

2015-04-21 16:18:56 867

原创 长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的交换.将数组中的元素按对应位置放置使得a[i]=i

长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的交换.将数组中的元素按对应位置放置使得a[i]=i;此题目中的数据很像一个哈希表,但是只能用和0交换的方式进行位置调整。目前只知道算法复杂度为o(n^2)空间复杂度为o(1)的方法。思路是从最大的元素值n-1开始,一次将元素放到正确的位置。由于只能和0交换,所以一次操作需要两次对换。1.将第i个元素中的值和0交换,使得a[i]=

2015-04-18 19:09:02 15501

原创 Java中synchronized关键字实现同步(二)

我们知道synchronized有两种:同步方法(synchronized method)和同步语句块(synchronized block)。那么这两种有什么区别以及优缺点呢?         SynchronizedMethod:                   优点:代码简单清晰;易于维护                   缺点:同步粒度过大,不利于并发;不够灵活,默认用本

2015-04-03 21:02:12 730

翻译 Thread Synchronization and Object locks inside JVM

线程同步         Java语言的优点之一就是他在语言级别上对多线程的支持。这些支持多集中在于同步(synchronization):多线程之间的协作活动和数据访问。Java所使用的支持同步的机制是监控器(monitor)。本章描述这些监控器以及他们如何被JVM使用。并且从JVM指令集描述监控器的加锁和解锁。 监控器(Monitors)Java监控器支持两种类型的线程同步:互

2015-04-03 19:50:30 526

翻译 java内存模型(Java Memory Model)

内容导航:l  Java内存模型l  硬件存储体系结构l  Java内存模型和硬件存储体系之间的桥梁:u  共享对象的可见性u  竞争条件 Java内存模型规定了JVM如何与计算机存储系统(RAM)协调工作。JVM是一个虚拟机模型,因此这个模型自然包括一个内存的模型 理解java内存模型对于设计正确的并发程序很重要。JVM规定了不同线程何时以及如何能看到那些被共

2015-04-01 10:33:47 889

原创 java中线程阻塞之sleep、suspend、join、wait、resume、notify方法解析(一)

java线程的5状态包括create、runnable、running、blocked、dead。create是指用new线程被创建,但是还没有准备好各种资源。runnable是指使用start启动线程,这时候系统会为线程分配除cpu以外的所有需要的资源。running是指cpu调度处于runnable状态的线程使其占用cpu时间片真正开始运行。blocked是指由于某种原因导致r

2015-03-27 13:51:17 2308 1

原创 关于EOF和feof()判断文件读到末尾

判断文件读取是否到了结尾有两种方式,一种是判断fgetc()是否返回EOF(即-1,一个宏定义);另一中是使用feof()函数判断,如果结束返回1,否则返回0;第一种方式局限性很大,因为只有fgetc(),fscanf()遇到结束返回EOF,其他函数fgets()返回char*;另外用while((c = fgetc()) != EOF)也不安全,因为对于二进制非文本文件,这些文件在还没结束的

2015-03-25 19:55:51 3725

原创 java反射Reflection(一)之的类加载器ClassLoader和Class类

反射就是把Java的各种成分映射成相应的Java类。    反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检查并且对内部的成员进行操作。例如它允许一个java的类获取他所有的成员变量和方法并且显示出来。Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获

2015-03-23 21:49:43 1376

原创 java中synchronized关键字实现线程同步互斥(一)

java多线程程序现在很常见,和数据库操作系统一样,多个线程会共享一个堆内存,如果不加以控制,不进行线程之间的同步,会造成数据混乱等。先看看下面这个程序:public class TestSynchronized implements Runnable { Timer timer = new Timer(); public static void main(String args[]

2015-03-22 20:15:59 906

原创 关于计算机中数据类型存储的对齐问题

许多计算机系统对基本数据类型的合法地址做出了一些限制,要求某种类型对象的地址必须是某个值K(通常是2,、4、8)的倍数,这种对齐限制简化了形成处理器和存储器系统之间接口的硬件设计,并且提高了存取效率,虽然可能浪费了空间。所以了解对齐,可以使我们在不降低效率的情况下以最低的空间存储数据不同的硬件结构对对齐有不同的要求,IA32(Intel Architecture 32)硬件无论数据是都对齐,都

2015-03-21 22:39:18 970

原创 java中的资源路径resource path

java在操作文件的时候必然需要知道这个文件在哪里。每种文件就是一种资源,java获取资源的方式有两种:1.通过java.io包中的类,例如File,其他类和File类似2.通过Class或者ClassLoader先看看File类:An abstract representation of file and directory pathnames.User interfaces

2015-03-20 20:26:15 4626

转载 java中变量的默认初始值

对于类的成员变量不管程序有没有显示的初始化,Java  虚拟机都会先自动给它初始化为默认值。1、整数类型(byte、short、int、long)的基本类型变量的默认值为0。2、单精度浮点型(float)的基本类型变量的默认值为0.0f。3、双精度浮点型(double)的基本类型变量的默认值为0.0d。4、字符型(

2015-03-19 17:11:40 5914

转载 ubuntu下面的软件包管理命令

1、APTAPT (高级软件包工具) 是一个强大的包管理系统,而那些图形化程序如 添加/删除 应用程序 和 Synaptic 都是建立在它的基础之上的。APT 自动处理依赖关系并在系统软件包执行其他操作以便安装所要的软件包。 运行 APT 要求管理权限 。 可以被APT 使用的一些常用命令:安装软件包:sudo apt-get installpackagename  删除软

2015-03-17 11:04:47 609

转载 linux shell下的输入输出重定向

我们有些linux命令输出的结果可能太多,直接在shell中输出看着太麻烦;又或者有些命令的参数太多,不想通过键盘输入;这时候文件输入输出就很方便了。我们可以将输入输出重定向到其他位置,而不是标准的键盘和文本显示器。1重定向1.1     重定向符号>              输出重定向到一个文件或设备 覆盖原来的文件>!             输出重定向到一个

2015-03-17 11:03:54 746

原创 linux 下面vi的缩进代表空格数的更改/添加行号

修改/usr/share/vim/目录下的vimrc文件,在里面添加set tabstop=4set nm

2015-03-16 20:19:03 504

原创 linux-ubuntu14.04下面使用gdb出现的问题

问题:(gdb) list没有符号表被读取。请使用 "file" 命令。 原因其实说的比较清楚,可执行文件中没有符号表,为什么会没有符号表呢,因为符号表实在编译过程中使用的,编译完成后就没有了,要在可执行文件中加入这些信息,就必须在编译链接是指明。方法:gcc -g filename -o filename     这里一定要加上那个-g选项;另外,gdb查看程

2015-03-16 16:00:05 840

原创 c/c++中动态申请二维数组的方式

c/c++中申请二维数组的方式测试代码如下:#include /*二级指针**作为形参,可以接受二级指针**p、指针数组*p[]作为实参的参数,从而传递二维数组*/void print(int **p, int row, int col){ int i=0,j=0; for(i=0;i<row;i++) { for(j=0;j<col;j++) { printf

2015-03-14 13:32:35 672

原创 C语言中的二级指针和二维数组问题

关于二级指针和二维数组两者差别很大,不可以直接用二级指针传递二维数组首先来看看二维数组在内存中是如何组织的呢?实际上,不管是一维还是多维数组,都是内存中一块线性连续空间,因此在内存级别上,其实都只是一维。但是不同的定义使得表现形式不一样,从而有多维数组的概念。访问数组元素其实

2015-03-14 11:58:20 1625

原创 java中的接口interface

interface 是一种特殊的类,接口使得Java拥有了C++中多重继承的机制1.interface类中的成员变量默认是且只能是public static final类型2.interface类中的成员函数默认是且只能是public类型,且方法默认是abstract方法3.类实现接口用implement关键字,接口可以继承接口用extends4.接口类引用可以指向实现接口的子类对

2015-02-08 17:13:27 534

原创 java中的多态机制

多态很好的实现了程序的扩展性而不用每次都做判断;多态是在程序运行过程中(不是在编译阶段),动态的判断对象引用实际所指对象类型来调用相应的方法多态的三个要点:1.继承2.重写3.父类引用指向子类对象测试代码:class Animal{ public String name; Animal(String name){ this.name = name; } pu

2015-02-08 17:10:23 560

原创 java中的异常机制

异常与错误的区别Exception:1.可以是可被控制(checked) 或不可控制的(unchecked)。2.表示一个由程序员导致的错误。3.应该在应用程序级被处理。Error:1.总是不可控制的(unchecked)。2.经常用来用于表示系统错误或低层资源的错误如JVM。3.如何可能的话,应该在系统级被捕捉。Exception分类图

2015-02-08 16:54:33 555

原创 java中的对象转换

class Animal{ public String name; Animal(String name){ this.name = name; }}class Cat extends Animal{ public String eyesColor; Cat(String name, String eyesColor){ super(name);this.eyesColor

2015-02-08 16:43:31 591

原创 java权限与访问关系

类的成员的权限修饰符及相应的访问权限类的权限修饰符只有public和default:default类只可以被同一个包内部的类访问public类可以在任意地方被访问

2015-02-08 16:39:45 626

Linux内核完全剖析--基于0.12内核.pdf

高清版Linux内核完全剖析--基于0.12内核.pdf,想要研究Linux内核的同学可以看一看

2015-04-18

空空如也

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

TA关注的人

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