自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Steven Li's Zone

A fighting panda. Learning makes me happy.

原创 Design Pattern: General Idea of Program Design

本篇文章,主要是描述所有设计模式企图达到的目的。是设计程序的通用原则。作为程序员,写程序是为了满足产品提出的需求。但是,往往需求是会变动的,为了减少因为需求变动引起所引起的代码修改量,我们需要降低各部分实现不同功能的代码的耦合度。1)使得在每次接到某个功能的新需求时,只需要修改对应的功能部分即可,而需求不变的部分的代码则可以维持不变。2)亦或者接到新的需求需要添加新的功能时,只

2016-09-29 03:28:47 362

原创 Data Structure:Binary Tree

二叉树就是每个节点至多有两个孩子的树。特殊的二叉树:完全二叉树和满二叉树。满二叉树是叶子节点层(最后一层)是满的二叉树(其它层当然也是满的)。而完全二叉树则叶子节点层不要求满,但是编号不能断的二叉树。什么是编号不能断?意思是按照顺序存储结构给完全二叉树的节点编号,编号出现中断,譬如最后一层有个叶子节点是父节点的左孩子,但它是空的,但另外一个叶子节点作为同一个父节点的右孩子,不为空。那么

2016-09-29 03:01:54 504

原创 Design Pattern: 简单工厂模式 v.s. 工厂方法模式

凡是工厂模式,无论是简单的工厂模式还是工厂方法模式,其目的都是封装创建对象的过程,降低客户端代码和产品对象的耦合。使得更换对象的时候,客户端的代码不需要大改。简单工厂模式通过定义一个简单工厂类(就是一个实现类)的静态函数,在静态函数内定义一个switch case实现动态地选择返回的对象。假如,用实现计算器的代码作为例子。创建一个运算类的接口(方便多态的实现,向上转型):i

2016-09-27 02:10:54 543

原创 Notes: Linux的which, whereis and locate (file and find)

首先,在操作系统课程上,我们已经知道,在linux中,并没有后缀名的概念。所有的文件都一视同仁,种类都是“-”。后缀名一般是不强求的,只是如gcc等应用会检查的辅助,此时加上后缀名是通过编译器必须的。同时,加上后缀名也是方便我们辨认的途径。所以,在linux中,有file这个命令,专门查看文件的类型:是ASCII文本文件还是Binary二进制文件。#usage of fil

2016-09-27 00:09:17 348

原创 Notes: Linux的SUID、SGID和SBIT

Linux的SUID和SGID和SBIT是让其它用户组的人具有特殊权限的设置。SUID是出现在文件所有者权限的执行权限处的,代表字母为s。SGID是出现在文件所属用户组权限的执行权限处的,代表字母为s。SBIT是出现在其它用户的执行权限处的,代表字母为t.在开始详细介绍三个特殊的权限前,首先介绍一个effective user group(有效用户组的概念)。在

2016-09-26 10:07:51 444

原创 刷题代码库及一些犯过错误

本文章仅作代码记录之用。1、前序遍历二叉树Pre-order Traversal Binary Tree方法1:递归(Recursive)public class Solution { /** * @param root: The root of binary tree. * @return: Preorder in Ar

2016-09-26 00:04:43 834

原创 Design Pattern: Flyweight(享元模式)

虚拟空间(主机)Virtual host:是一种虚拟技术。使得同一台物理服务器可以分割出若干个虚拟服务器。以实现同一台物理服务器上,能部署多个网站。享元模式(FlyWeight)的应用在于存在需要创建多个对象的需求,并且这些对象除了外部状态不同之外,其内部状态都是相同的。这样,我们可以创建享元类来代表这些对象的内部状态,在享元类的方法定义中,定义一个形参以接受外部状态的输入。然后,利用

2016-09-25 23:22:19 399

原创 Design Pattern: Singleton

单例模式主要应用于一些本质只需创建一个对象的类,使用这种模式以限制客户端创建对象进行操作时,不能创建多于一个的对象。常见的单例类就如:交互窗口设计中某个功能窗口,不能让客户端每次点击一次窗口打开按钮就打开一个新的一模一样的窗口,这属于浪费资源。那对于如何限制只有一个窗口对象被创建?1)在主窗口的打开子窗口成员函数增加对子窗口对象的引用是否为null的if判断;

2016-09-25 03:34:15 330

原创 Notes: Stand alone daemons and Super daemon

之前讲到,Linux系统中有一些进程,一直在后台休眠,等待一些事件将其激活。我们将这些进程成为daemons。它们之所以一直在休眠是因为它们需要为系统或者网络应用提供服务(Service)。所以,从某种意义来说,service和daemon说的是同一种东西。这里稍微理一下,网络后台服务进程和daemons的关系。其实是一个子集的关系,凡是占用端口的进程就是网络服务进程,它们都需要一直潜

2016-09-24 23:14:15 569

原创 Notes: 排序算法小结 (Sorting)

最近两天,复习了几个经典的排序算法。在这里,写一份小结,粗略回顾。1)Bubble Sort顾名思义,就是把最小的数如冒泡一样,在每次的遍历当中,移到最顶的位置。public void BubbleSort(int[] input){ for(int i=0;i<input.length;i++){ for(int j=input.length-1;j>i;j--){

2016-09-23 13:21:17 490

原创 Notes: Linux 文件系统的软连接和硬链接(soft link and hard link)

Linux的硬链接和软连接的本质区别在于:前者没有创建一个新的文件,没有占用额外的Inode和data block,但是后者占用了新的inode和data block。data block的内容是目标文件的文件地址(文件名)。使用命令'ln'创建链接文件:#use ln to create link fileln -s/-f source file new_link f

2016-09-23 01:03:57 597

原创 Notes: Linux的进程、系统资源管理

Part1: 任务调度任务调度有两种:1)在特定时间执行一次的任务; 2) 周期性执行的任务。前者使用at命令创建,后者使用crontab命令创建。at命令背后的服务是atd,而crontab命令后面是cron服务。我们把常驻在内存的进程成为服务(daemon)。#start service/etc/init.d/atd restart#set to start eac

2016-09-22 12:32:56 764

原创 Notes: scanf dead lock problem and rand() in C

Scanf has a serious problem if you don't use it correctly. For example:int x,y;scanf("%d%d",&x,&y);If we input a charter instead of a number, system will continue using the last effectiv

2016-09-13 12:10:43 359

转载 Notes: How to iterate a map in Java

There are four ways to iterate a map in Java. 1) Use the .entrySet() functionMap map = new HashMap(); for (Map.Entry entry : map.entrySet()) { System.out.println("Key = " + e

2016-09-07 01:45:15 343

转载 Notes: Primitives Storage and Operator

There is something special about the storage realization of Java's number. Java uses the complement of positive number to store the negative number. For example, we use Integer class (int) to il

2016-09-07 01:36:38 456

原创 Notes: Java的访问权限、组合/继承和多态

本文章对应《Thinking in Java》的6、7、8章内容。Chapter 6: Java访问权限限制的动机:方便库程序员修改工具类的具体实现而不用知会客户端程序员修改客户端代码。作为一个库程序员,你应该尽可能地把客户端程序员不需要知道的变量和方法以及辅助类都设为private,这样你就可以随心所欲地优化代码,只要你的暴露给客户端程序员的public方法声明是不变的。

2016-09-05 04:09:50 1365 1

原创 Notes:关于String类和Object类的笔记

根据Java设计,所有的自定义类或者类库的类都是继承Object类的。所以,所有类的具有Object类的public方法。根据API文档,有如下:

2016-09-04 00:08:19 538

原创 Notes: E/ R Diagram (数据库ER图)

需要E/R图的动机:E/R图是关系型数据库的抽象,以一种抽象的、更高层的描述方式去描述一个数据库各个Entity(实体)之间的关系和每个实体的Attributes(特点)。当你去从另一个数据库的管理员当中接手他的数据库管理工作时,最能节省你熟悉数据库的工具就是E/R图,否则,看代码再慢慢理解schema很费时。作为后端程序员,必须能够胜任的角色是:1)能开发数据库的接口程序给Naive

2016-09-02 23:13:00 8838

原创 ISA/ DSI and CISC v.s. RISC

Instruction Set ArchitectureISA全称 Instruction Set Architecture. 其指的是一种围绕某种特定的指令集而构建的架构。在这种架构当中,指令集就是软件开发和硬件开发者的“合约”。软件开发者只需要关心自己设计的软件能被编译器编译成该指令集的指令即可,而不需要关心底层的硬件如何实现。而对于硬件设计师而言,他们只需要确保自己设计的处理

2016-09-02 12:05:29 1069

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