自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

守得云开见明月

计算机科学与技术交流。包括但不限于C/C++,Java,Linux,多线程,并发控制,图像处理,数据结构,算法设计等。

  • 博客(32)
  • 资源 (2)
  • 收藏
  • 关注

原创 typecho个人轻量级博客搭建

本文介绍使用Debian(stretch)+nginx(1.10)+typecho+sqlite3搭建轻量级博客系统。环境:Debian(stretch)+nginx(1.10)+sqlite3安装Debian stretch我的debian系统是之前安装,一直在用。Debian系统的安装教程可参考官网或者直接百度一下。安装nginx命令行直接安装sudo aptitude install ngi...

2018-03-31 17:08:54 4164

翻译 【深度学习】怎样在6个月内掌握深度学习

It is quite possible to learn,follow and contribute to state-of-art work in deep learning inabout 6 months’ time. This article details out the steps to achieve that.利用大约6个月的时间,学习、跟随并在深度学习领域做出最新研究成果是完全...

2018-03-29 23:52:17 572

原创 大圣归来!

我又回来了!回归根本,知行合一!

2016-09-21 08:38:22 555

原创 申请openshift帐号

最近申请了openshift帐号,以后文章会在csdn和本人openshift网站同步发表。openshift官方网站:https://www.openshift.com/本人openshift地址:https://tech-yym.rhcloud.com/欢迎经常光临小站。。。

2013-04-29 20:57:24 1205

原创 sed, a stream editor

http://www.gnu.org/software/sed/manual/sed.htmlsed, a stream editorNext: Introduction,Up: (dir)sed, a stream editorThis file documents version 4.2.1 ofGNU sed, a stream editor.Copyright

2013-04-29 20:19:00 1104

原创 查找最长回文

首先用一个非常巧妙的方式,将所有可能的奇数/偶数长度的回文子串都转换成了奇数长度:在每个字符的两边都插入一个特殊的符号。比如 abba 变成 #a#b#b#a#, aba变成 #a#b#a#。 为了进一步减少编码的复杂度,可以在字符串的开始加入另一个特殊字符,这样就不用特殊处理越界问题,比如$#a#b#a#。下面以字符串12212321为例,经过上一步,变成了 S[] = "$#1#2#2

2013-04-29 20:11:35 778

原创 全排列问题问题的两种算法--递归与字典序

本文描述全排列问题的递归算法与排序算法。递归算法递归算法的原理是,对于给定的集合{1, 2, 3, 4},首先以{1}作为开头,求解集合{ 2, 3, 4}的排列。求解集合{2, 3, 4}的排列时,首先以{2}作为开头,求解集合{3, 4}的排列。求解集合{3, 4}的排列时,先求解以{3}开头的排列,然后求解以{4}开头的排列。至此可以求得排列1 2 3 4和1 2 4 3。以

2013-04-21 10:48:51 2174

转载 Git Tutorial (2018 update V6.0)

Git - TutorialLars Vogel (c) 2009-2018 vogella GmbHVersion 6.0,19.02.2018Table of Contents1. What is a version control system?2. Localized and centralized version control systems3. Distributed version...

2013-03-24 09:48:20 11501

原创 设计模式之命令模式

命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。命令模式又称为动作(Action)模式或事务(Transaction)模式。以下情况可以考虑使用命令模式:系统需要将请求调用者和请求接收者解耦,使得调用者和接收者不直接交互系统需要在不同的时间指定请求、将请求排队和执行请求系统需要支持命令的撤销(Undo)操作和恢复

2013-03-23 11:41:56 648

原创 Java线程池

ThreadPoolExecutor线程池类为java.util.concurrent.ThreadPoolExecutor,常用构造方法为: ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,

2013-03-21 23:06:17 1260

原创 UML类图简单介绍

UML类图简单介绍:继承空心三角形+实线实现接口空心三角形+虚线关联关系实线+箭头聚合关系空心菱形+实线箭头组合关系实心菱形+实线依赖关系虚线箭头参考资料:《大话设计模式》程杰,2007

2013-03-20 21:49:41 928

原创 设计模式之代理模式

代理模式:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式一般涉及到的角色有: 抽象角色:声明真实对象和代理对象的共同接口; 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象

2013-03-10 11:41:49 586

原创 设计模式之观察者模式

观察者模式(Observer)又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。观察者模式的实现

2013-02-15 19:40:23 624

原创 工厂方法和抽象工厂区别

简单工厂:简单工厂没有抽象类,只有一个具体工厂类如MyFactory,MyFactory里面有个工厂方法CreateProduct返回一个基类产品,具体返回什么实例通过传入参数判断。用手机生产做个例子:比如Nokia简单工厂就是只有NokiaFactory工厂类,工厂方法就是CreateNokiaPhone,参数是Nokia手机型号,根据不同型号创建不同的Nokia手机

2013-02-15 19:33:24 488

原创 设计模式之责任链模式

使多个对象都有机会处理请求,从而避免请求的发送者和接收者的耦合关系,将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理了它为止。Chain of Responsibility模式中ConcreteHandler将自己的后继对象(向下传递消息的对象)记录在自己的后继表中,通过这样的连接,将可能处理一个请求的对象链接成一个链,当一个请求到来时,ConcreteHandler会先检查

2013-02-14 10:06:36 626

原创 Java同步之synchronized

Java中可以使用关键字synchronized进行线程同步控制,实现关键资源顺序访问,避免由于多线程并发执行导致的数据不一致性等问题。synchronized的原理是对象监视器(锁),只有获取到监视器的线程才能继续执行,否则线程会等待获取监视器。Java中每个对象或者类都有一把锁与之相关联,对于对象来说,监视的是这个对象的实例变量,对于类来说,监视的是类变量(一个类本身是类Class的对象,所以

2013-02-04 20:58:30 12695

原创 Linux进程间通信与生产者消费者问题

生产者消费者问题(英语:Producer-consumerproblem),也称有限缓冲问题(英语:Bounded-bufferproblem),是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就

2013-01-20 20:43:48 7494

原创 Linux设备驱动开发之hello, world

Linux内核编译 一文中介绍了Linux 2.6内核的编译与安装工作,今天介绍一下Linux设备驱动开发的hello, world程序。进行Linux设备驱动开发必须准备好Linux内核编译环境,设备驱动程序依赖于这个环境。下面是一个完整的hello, world驱动程序。#include #include static int __inithello_init(vo

2013-01-02 19:31:52 1887

原创 [Linux内核设计与实现]Linux系统调用

系统调用在用户空间与硬件设备之间添加一个中间层。该中间层主要作用有三个。第一,它为用户空间提供了一种硬件的抽象接口。第二,系统调用保证了系统的稳定和安全。第三,每个进程都运行在虚拟的系统中,而在用户空间和系统的其余部分提供这样一层公共接口,也是处于这种考虑。在Linux世界中,系统调用是用户空间访问内核的惟一手段;除异常和陷入外,它们是内核惟一的合法入口。x86系统上,Linux系统大约有250个

2013-01-01 18:45:53 1251 2

原创 [Linux内核设计与实现]Linux进程调度

进程调度可以看作在可运行态进程之间分配有限处理器时间资源的内核子系统。最大限度利用处理器时间的原则是,只要有可以执行的进程,那么总会有进程在运行。但是,只要系统中可运行状态的进程数量大于处理器个数,就会有进程不能运行,这些进程在等待运行。在一组处于可运行状态的进程中选择一个来执行,是调度程序所需要完成的基本任务。多任务系统可以分为两类:非抢占式多任务(cooperative multitaskin

2013-01-01 13:41:47 1270

原创 [Linux内核设计与实现]Linux进程管理

进程描述符及任务结构进程是Unix操作系统最基本的抽象之一(另一个抽象是文件)。进程是正在执行的程序代码的活标本,不但包括正在执行的代码还包括其他资源。比如打开的文件、挂起的信号、内核内部数据、处理器状态、地址空间及一个或者多个执行线程(thread of executing)、存放全局变量的数据段等。执行线程简称线程,是在进程中活动的对象。Linux线程是一种特殊的进程(共享资源

2012-12-24 23:19:48 1662

原创 虚函数原理及应用

包含虚函数的类中隐含一个指针,叫做vptr(virtual table pointer,虚函数表指针)。 vptr 指向一个vtbl(virtual table,虚函数表)函数指针数组,该数组记录实际调用的函数地址。对于多继承的时候,情况稍微复杂一些。如果多个父类都包含虚函数,则类中vptr指针也会有多个。当子类对象实例赋值给父类时会对父类中的vptr进行初始化,使其指向含有实际访问的vtbl函数

2012-12-23 19:36:01 522

原创 [Linux内核设计与实现]Linux内核开发特点

Linux内核开发特点:内核编程时不能访问标准C库;内核编程时必须使用GNU C;内核编程时缺乏像用户空间那样的内存保护机制;内核编程时浮点数很难使用;内核只有一个很小的定长堆栈;由于内核支持异步中断,抢占和SMP,因此必须时刻注意同步和并发控制;内核编程要考虑可移植性。没有libc库与用户空间的应用程序不同,内核不能链接使用标准C函数库,其他函数库也不能使用。对于内核来说,完整的

2012-12-16 18:58:18 821

转载 理解虚基类、虚函数与纯虚函数的概念

引言     一直以来都没有写过一篇关于概念性的文章,因为我觉得这些概念性的东西书本上都有并且说的也很详细写来也无用,今天突发奇想想写 一写,下面就和大家讨论一下虚基类、虚函数与纯虚函数,一看名字就让人很容易觉得混乱。不过不要紧待看完本文后你就会理解了。正文       虚基类       在说明其作用前先看一段代码class A{public:

2012-12-16 12:35:57 476

原创 [Linux内核设计与实现]Linux内核编译

今天编译安装了Linux 2.6.34.13版本的内核(此前内核版本是2.6.32.5)。由于采用了原来系统的配置项,所以配置时比较省事。新内核启动运行之后,目前声卡,网卡等都工作正常。编译安装Linux 2.6.34.13版本的内核过程如下:1、下载内核http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.34/l

2012-12-16 11:56:01 904

原创 [Linux内核设计与实现]Linux内核简介

<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->1969年,Dennis Ritchie和Ken Thompsond等人发布Unix系统,它是从贝尔实验室一个失败的多用户操作系统Multics发展而来。1979年起加州大学伯克利分校开始推出Berkeley Software Distribution

2012-12-14 21:34:43 999

原创 类 String 的构造函数、析构函数和赋值函数

编写类 String 的构造函数、析构函数和赋值函数已知类 String 的原型为:class String { public: String(const char *str = NULL); // 普通构造函数 String(const String &other); // 拷贝构造函数 ~ String(void);

2012-12-07 22:38:57 500

原创 strcpy函数

已知 strcpy 函数的原型是   char *strcpy(char *strDest, const char *strSrc);   其中 strDest 是目的字符串,strSrc 是源字符串。   不调用 C/C++ 的字符串库函数,请编写函数 strcpychar *strcpy(char *strDest, const char *strSrc); {

2012-12-07 22:27:22 523

原创 堆与栈的区别

一、C/C++编译的程序内存分配:  1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量等。其操作方式类似于数据结构中的栈。  2、堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两个完全不同的概念。  3、全局区静态区(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块

2012-12-07 21:44:26 561

转载 Linux fork 函数详解

一、fork入门知识     一个进程包括代码、数据和分配给进程的资源。fork函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。    一个进程调用fork函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同

2012-12-06 23:19:25 795

原创 fast FW150US USB无线网卡Linux驱动安装

由于笔记本没有自带无线网卡,所以买了一块fast FW150US USB无线网卡。该网卡只自带了window下的驱动,经过一番折腾,终于安装好了Linux下的驱动,在此记录以便以后遇到同样问题能够快速解决。首先查看网卡型号,如下:root@yongmi-hn:~# lsusbBus 007 Device 001: ID 1d6b:0001 Linux Foundation 1

2012-12-02 22:56:02 35339 9

原创 openSUSE 12.1 硬盘安装备忘

1 下载dvd iso安装镜像;2 将iso镜像以及iso镜像/boot/i386/loader目录下的linux,initrd放到同一个驱动器的根目录下(方便以后使用);3 安装grub4dos,如果已经有grup,可以直接只用原来的grub,开机进入grub页面之后选择命令行模式;4 进入grub命令行模式之后,运行下面的命令:    linux (hd0,3)/linux

2012-02-26 22:10:17 1085

Linux进程间通信之生产者消费者

通过生产者与消费者问题介绍Linux下进程通信方(IPC)法,包括管道(有名管道),信号,消息队列,信号灯与共享内存。其中消息队列,信号灯与共享内存是基于system V系统。v0.1版本。

2013-01-20

Linux设备驱动开发示例

Linux设备驱动开发之hello, world代码,包含一个c文件,一个makefile文件。

2013-01-02

空空如也

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

TA关注的人

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