单链表及其应用
链表中的数据是以结点来表示的,每个结点的构成:元素 + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。下面使用代码来编写一个单链表的例子。
一、创建节点信息
创建一个学生的节点,包含学号和学生的姓名。
12345678910111213141516171819202122232425/** * @author JSLEDD * @description 定义一个学生的对象 * @date 2016-6-2 13:59 * @return * @throws */class StudentNode { public int numno;//学号 public String name;// 姓名 public StudentNode next; //指向下一个节点 //构造器 public StudentNode(int numno, String name) { this.numno = numno; this.name = name; } ...
(二) scala actor 学习-Actor API
Actor API
Actor trait 只定义了一个抽象方法,就是上面提到的 receive, 用来实现actor的行为。 如果当前 actor 的行为与收到的消息不匹配,则会调用 unhandled, 它的缺省实现是向actor系统的事件流中发布一条 akka.actor.UnhandledMessage(message, sender, recipient)。 另外,它还包括:
self 代表本actor的 ActorRef
sender 代表最近收到的消息的发送actor
supervisorStrategy 用户可重写它来定义对子actor的监管策略
context 暴露actor和当前消息的上下文信息,如:
用于创建子actor的工厂方法 (actorOf)
actor所属的系统
父监管者
所监管的子actor
生命周期监控
hotswap行为栈
你可以import context 的成员来避免总是要加上 context.前缀
class ActorOneSon extends Actor {
import context._
val myActorSon = ...
(一) scala actor 学习-创建Actor
Actor模型为编写并发和分布式系统提供了一种更高的抽象级别。它将开发人员从显式地处理锁和线程管理的工作中解脱出来,使编写并发和并行系统更加容易。Actor模型是在1973年Carl Hewitt的论文中提的,但是被Erlang语言采用后才变得流行起来,一个成功案例是爱立信使用Erlang非常成功地创建了高并发的可靠的电信系统。 Akka Actor的API与Scala Actor类似,并且从Erlang中借用了一些语法。 首先来一个例子:
创建Actor
定义一个 Actor 类
要定义自己的Actor类,需要继承 Actor 并实现receive 方法. receive 方法需要定义一系列 case 语句(类型为PartialFunction[Any, Unit]) 来描述你的Actor能够处理哪些消息(使用标准的Scala模式匹配),以及实现对消息如何进行处理的代码。
package com.cmcc.family.test
import akka.actor.Actor
import akka.actor.Props
import akka.event.Logging
impo ...
kafka-manager的安装和使用
由于最近使用spark kafka 总是出现已成,于是觉得安装一个 kafka 的管理工具来监控一下 kafka. 看到了 yahoo的kafka-manager的介绍,于是决定安装一下试试。
介绍
kafka-manager的主要支持内容:
管理多个集群
监控集群的状态(包含:topics, consumers, offsets, brokers, replica distribution, partition distribution)
Run preferred replica election
Generate partition assignments with option to select brokers to use
分区的修改(基于生成的任务)
创建一个可选配置的 topic
删除主题( 0.8.2 以上支持,需要配置delete.topic.enable=true)
topics 可显示已删除的
Batch generate partition assignments for multiple topics with option to select broke ...
mongodb 安装使用-副本集+分片 架构部署 -2
文章介绍的不清楚,安装有几处不合理,新的参考文章:Mongodb3.2.12 副本集 + 分片 完整安装
由于最近的项目中使用到了mongodb,前两天安装完后一直在忙别的事情,mongodb 安装 ,今天配置一下副本集+分片。
组件介绍
四个组件:mongos、config server、shard、replica set。 mongos,数据库集群请求的入口,所有的请求都通过mongos进行协调,不需要在应用程序添加 一个路由选择器,mongos自己就是一个请求分发中心,它负责把对应的数据请求请求转发到对应的shard服务器上。在生产环境通常有多mongos作 为请求的入口,防止其中一个挂掉所有的mongodb请求都没有办法操作。 config server,顾名思义为配置服务器,存储所有数据库元信息(路由、分片)的配置。 mongos本身没有物理存储分片服务器和数据路由信息,只是缓存在内存里,配置服务器则实际存储这些数据。mongos第一次启动或者关掉重启就会从 config server 加载配置信息,以后如果配置服务器信息变化会通知到所有的 mongos 更新自己的状态,这样 ...
稀疏数组
稀疏数组是对普通数组的压缩方法,当普通数组的重复元素占用绝大多数的时候,我们可以使用稀疏数组的方式存储,可以极大的节约内存,压缩存储可以提高IO效率。比如五子棋的棋盘,象棋的残局等。
一、存储方式对比
普通数组
123456780 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
稀疏数组
12348 8 3 1 2 1 2 3 2 4 5 2
二、稀疏数组
存储方法:
第一行 记录有几行几列,有多少不同值。
其余行记录每个不同值所在的行数、列数和值。
代码实现:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808 ...
Google Guava 在scala 的使用-字符串的使用
很久没有使用过 Google Guava的,在这里做一个总结,准备做一个系列。能想到哪里就写到哪里吧。先写一下对字符串的处理。开始~~~~
package com.cmcc.family.utils
import com.google.common.base.Strings
import com.google.common.base.Splitter
import com.google.common.base.Joiner
import com.google.common.base.CharMatcher
/**
* Guava 字符串操作举例
* @author jingshuai
* @date 2016-05-06
*/
object GuavaString {
//字符串处理
def stringIsNullOrEmpty {
println(Strings.isNullOrEmpty(“jingshuai”)); //false
println(Strings.isNullOrEmpty(“”)); //true
println(Strings.isNullOrEmpty(n ...
使用apache 作为yum 源
昨天在安装完mongodb后,启动遇到点问题,网上一查发现是openssl 的类库比较老,不能兼容新版本,准备使用yum update 一下,但是突然想起来不能联网。而且我们最近安装的集群 系统版本比较低,综合考虑了一下,决定安装一个apache 的yum 源,方便以后安装和更新操作。
1、首先下载下来 centos 的安装包,和更新包等
去官网查询了一下 发现只有6.7版本以上 还在维护,于是决定更新到6.7版本。
wget -r -p -np -k -P ~/ http://mirror.centos.org/centos-6/6.7/
备注:本来想使用aliyun 镜像站,但是aliyun 有限制,不能使用wget 下载目录。
2、安装apache,并且拷贝下载下来的文件 (略)
3、修改 /etc/yum.repos.d/CentOS-Base.repo
首先备份一下。
[root@new-cdh1 ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.back
然后修改文件 /et ...
mongodb 安装使用-安装和卸载-1
最近公司使用到了 mongodb ,很久没有使用过了,记录一下安装步骤吧,方便以后安装使用。
安装包说明:
mongodb-org
完整包,包含下面4个安装包
mongodb-org-server
包含mongod的进程,启动配置和初始化脚本
mongodb-org-mongos
包含mongod的进程.
mongodb-org-shell
Mongo shell
mongodb-org-tools
MongoDB tools: mongoimport bsondump, mongodump,mongoexport, mongofiles, mongooplog, mongoperf, mongorestore, mongostat, and mongotop.
Mongodb 安装使用说明:
**1、**创建一个yum 源
vi /etc/yum.repos.d/mongodb-org-3.2.repo
在repo 文件中添加
[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/ ...
【转】mongodb 入门教程
1.Kafka独特设计在什么地方? 2.Kafka如何搭建及创建topic、发送消息、消费消息? 3.如何书写Kafka程序? 4.数据传输的事务定义有哪三种? 5.Kafka判断一个节点是否活着有哪两个条件? 6.producer是否直接将数据发送到broker的leader(主节点)? 7.Kafa consumer是否可以消费指定分区消息? 8.Kafka消息是采用Pull模式,还是Push模式? 9.Procuder API有哪两种? 10.Kafka存储在硬盘上的消息格式是什么? 一、基本概念 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: Kafka将消息以topic为单位进行归纳。 将向Kafka topic发布消息的程序成为producers. 将预订topics并消费消息的程序成为consumer. Kafka以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker. producers通过网络将消息发送到Kafka ...