流与文件 <二> 流

1、简介

在面向字节的流中,可以从其中读入一个字节序列的对象称为输入流,向其中写入一个字节序列的对象称为输入流。字节序列的来源和目的地可以是文件,也可以是网络连接,甚至是内存块。
但面向字节的流不便于处理以字符形式(每个字符均由多个字节表示)存储信息,所以我们需要有面向字符的流。

流与文件 <-> 编码

为什么要进行编码

计算机无法理解我们人类使用的语言,只能识别0或者1。所以,为了使计算机能够理解我们所使用的语言,我们需要通过翻译的过程,将其翻译成计算机能够理解的语言。这个翻译的过程就是编码。多数计算机使用8位的块,或者字节(byte)作为最小的可寻址的存储器单位,而不是在存储器中访问单独的位。

Zookeeper学习与使用(转载)

1. ZooKeeper的学习与应用

1.1. 概述

ZooKeeper是Apache在很多云计算项目中的一个,与Hadoop密切相关,这种情况导致我一开始认为ZooKeeper的搭建需要Hadoop项目作为支持,但是最后发现完全不需要,它是可以单独运行的一个项目。

在网上看到了一个很不错的关于ZooKeeper的介绍: 顾名思义动物园管理员,他是拿来管大象(Hadoop) 、 蜜蜂(Hive) 、 小猪(Pig) 的管理员, Apache Hbase和 Apache Solr 以及LinkedIn sensei 等项目中都采用到了 Zookeeper。ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,ZooKeeper是以Fast Paxos算法为基础,实现同步服务,配置维护和命名服务等分布式应用。

java 多线程<八> 并发协作 生产者消费者模型&&死锁

并发协作-生产者消费者模型

对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是最经典的。就像学习每一门编程语言一样,Hello World!都是最经典的例子。

实际上,准确说应该是“生产者-消费者-仓储”模型,离开了仓储,生产者消费者模型就显得没有说服力了。
对于此模型,应该明确一下几点:

  • 1、生产者仅仅在仓储未满时候生产,仓满则停止生产。
  • 2、消费者仅仅在仓储有产品时候才能消费,仓空则等待。
  • 3、当消费者发现仓储没产品可消费时候会通知生产者生产。
  • 4、生产者在生产出可消费产品时候,应该通知等待的消费者去消费。

此模型将要结合java.lang.Object的wait与notify、notifyAll方法来实现以上的需求。这是非常重要的。

java 多线程<七> 线程的同步 同步方法&同步块

线程的同步-同步方法

线程的同步是保证多线程安全访问竞争资源的一种手段。
线程的同步是Java多线程编程的难点,往往开发者搞不清楚什么是竞争资源、什么时候需要考虑同步,怎么同步等等问题,当然,这些问题没有很明确的答案,但有些原则问题需要考虑,是否有竞争资源被同时改动的问题?

在本文之前,请参阅《Java线程:线程的同步与锁》,本文是在此基础上所写的。

java 多线程<六>

线程的调度-优先级

与线程休眠类似,线程的优先级仍然无法保障线程的执行次序。只不过,优先级高的线程获取CPU资源的概率较大,优先级低的并非没机会执行。

线程的优先级用1-10之间的整数表示,数值越大优先级越高,默认的优先级为5。

在一个线程中开启另外一个新线程,则新开线程称为该线程的子线程,子线程初始优先级与父线程相同。

Java 多线程<五> 线程的交互&&线程的调度-休眠(转载)

线程的交互

一、线程交互的基础知识

线程交互知识点需要从java.lang.Object的类的三个方法来学习:

(1) void notify()
            唤醒在此对象监视器上等待的单个线程。
(2) void notifyAll()
            唤醒在此对象监视器上等待的所有线程。
(3) void wait()
            导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。

function & this in JavaScript

简介

javascript中的函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的。通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或者将函数作为参数传递。在继续讲述之前,先看一下函数的使用语法:

以下是引用片段:

1
2
3
4
function func1(){…}
var func2=function(){…};
var func3=function func4(){…};
var func5=new Function();

这些都是声明函数的正确语法。它们和其他语言中常见的函数或之前介绍的函数定义方式有着很大的区别。那么在JavaScript中为什么能这么写?它所遵循的语法是什么呢?下面将介绍这些内容:

grep及正则表达式

首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!
正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串。vim、grep、awk 、sed 都支持正则表达式,也正是因为由于它们支持正则,才显得它们强大;

1. 基础正则表达式