Linux常用软件(更新ing)

是的=-=我又来挖坑了。。争取慢慢填233333

本文记录Ubuntu Linux下比较好用的软件
软件大部分可以通过apt-get install命令安装,如果你在校内,建议更换清华源(参考基本配置:http://blog.hylstudio.cn/archives/452),如果在校外可以用网易源。

之前还几篇可以参考。。之后会写的更详细的=-=嗯,相信我,一定会写的

 

Linux常用命令备忘录(更新ing)

 

Linux笔记1(Linux运维、大数据相关工具)

Linux笔记2(Linux运维、大数据相关工具)

XShell
远程终端,可以同步操作N个终端,在懒得写ansible的时候简直是神器

git
先继续挖坑23333之后再说
可以参考廖雪峰教程http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

tree
可以显示指定目录结构的工具
常用命令:tree .

ansible
可以批量操作多个远程电脑,批量部署、自动化运维必备
批量执行命令:ansible all -a 'date'
批量分发文件:ansible -m copy -a 'src=/tmp/file1 dest=/tmp/file1'

fish
漂亮、方便的终端,比bash智能、颜值高
进入终端:fish

tmux
长时间脚本执行的神器(学长说screen也行,然而我没试过)
常用操作命令:
进入tmux:tmux
让tmux在后台运行:先按Ctrl+B,再按d
回到后台运行的tmux:tmux attach
tmux内新建一个窗口:先按Ctrl+B,再按c
切换窗口:先按Ctrl+B,再按对应的窗口编号
关闭当前窗口:先按Ctrl+B,再按&符号(Shift + 7)
滚动查看之前的输出:先按Ctrl+B,再按[(左方括号)
退出滚动模式:在滚动模式下按q

参考:http://www.kancloud.cn/kancloud/tmux/62459

make
make做构建工具的神器
参考:http://blog.csdn.net/ruglcc/article/details/7814546/
http://blog.csdn.net/liang13664759/article/details/1771246

 

 
supervisor
后台控制程序
参考
http://www.supervisord.org/

 

ansible初步–批量升级CDH的jdk

由于要在集群上操作配置、并且即将搭建一个新的集群,所以我不想再像之前一样复制粘贴命令了!!会死人的。。。
so,看了下ansible,
环境:Ubuntu 14.04主机*6
六台服务器运行的命令相同
(前提:已经做完root密钥互信)
安装:
sudo apt-get install ansible

配置:
sudo /etc/ansible/hosts
添加进去所有主机,并分组,如下
[hadoop]
hadoop1.bistu.edu.cn
hadoop2.bistu.edu.cn
hadoop3.bistu.edu.cn
hadoop4.bistu.edu.cn
hadoop5.bistu.edu.cn
hadoop6.bistu.edu.cn

批量传送文件,这次是升级jdk
把安装包放到所有主机的home下
ansible all -m copy -a 'src=/root/jdk8.tar.gz dest=~/'
解压
ansible all -a 'tar -zxvf ~/jdk8.tar.gz -C /usr/lib/jvm/'
修改默认版本指针
ansible all -a 'ln -s /usr/lib/jvm/jdk8 /usr/lib/jvm/default-java'

关闭集群角色,重启服务
ansible all -a 'service cloudera-scm-agent restart'

查看状态是否正确
ansible all -a 'ls -l /usr/lib/jvm/'

当需要使用管道的时候需要使用raw模块,比如
ansible all -m raw -a 'ps -aux|grep java'

Linux笔记1(Linux运维、大数据相关工具)

Linux下好用的软件

智能终端fish:

http://fishshell.com/docs/current/index.html#introduction

多人协作、不间断运行的shell:tmux

https://tmux.github.io/

http://man.openbsd.org/OpenBSD-current/man1/tmux.1

 

http://blog.jobbole.com/87584/

 

自动化运维ansible

http://docs.ansible.com/

http://sofar.blog.51cto.com/353572/1579894/

 

多虚拟py环境vituralenv

http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432712108300322c61f256c74803b43bfd65c6f8d0d0000

http://www.cnblogs.com/tk091/p/3700013.html

 

py包管理 pip

https://pypi.python.org/pypi/pip/

http://www.ttlsa.com/python/how-to-install-and-use-pip-ttlsa/

 

开源大数据工具luigi

http://luigi.readthedocs.io/en/stable/

http://www.oschina.net/p/luigi

http://www.open-open.com/lib/view/open1413337781090.html

 

数据结构——基础测试

 

数据结构基础


前言

数据结构主要要解决的问题是:

  1. 数据如何在内存中存储,以什么结构存储。
  2. 对应不同的存储结构应该用什么样的方法对数据进行操作来满足相应的需求。

简单来说,上面第一点就是数据结构,第二点就是算法。不同的数据结构必然会有不同的算法来对数据进行操作。

学习需要的基础

  1. 任意一种编程语言基础。(比如C语言
  2. 熟悉理解内存的结构并能精确控制。(比如利用C的指针正确控制内存
  3. 面向对象的编程思想。

基础测试

阅读下面的代码,回答后面的问题,如果你都能和答案理解意思一样,说明:

  1. 你C语言基础已经可以学习数据结构并且不会有什么大问题。
  2. 你对内存结构有了深刻的理解。
  3. 你有了基本的面向对象思想,以及明白了面向对象在底层的部分实质。

代码如下:

问题:

  1. 第9行的目的是什么?
  2. newStudent的意义是什么,它的返回值类型为什么是Student?
  3. Student的本质是什么?
  4. 21行写成Student stu1;同时删掉22行行不行?
  5. 23行、28行为什么要用->,能不能用.(这是一个点)

答案解析将在之后更新。。。如果你无法回答,可以阅读思维导图指针教程部分的内容

答案

  1. 第9行的目的是把一组数据集合的指针定义为一种新的类型。
  2. newStudent的意义是创建新的学生,返回值是指向学生的指针。
  3. Student的本质是结构体的指针。
  4. 不行,仅有指针并没有申请内存,数据实际还不存在。
  5. 因为是结构体的指针,而不是结构体本身,所以用->访问。

内存分析

第15行
调用newStudent函数,传入参数。
申请1块内存stu1,把函数返回值赋值给stu1。

第20行:函数调用内部
申请一个结构体指针ret初始化为空。
用malloc动态申请一个结构体大小的内存,并把首地址赋给ret。
利用传入的参数初始化结构体的内容。
把ret里面的内容返回,ret在函数结束后被自动回收。

回到16行
把stu1的内容传入show函数。

第27行:函数调用内部
根据传入的stu访问里面的数据。

回到17行程序结束。

内存图解

15行函数调用前

mxdxjc1

函数调用过程,21行开始执行

mxdxjc2

21行执行完毕,开始执行22行

mxdxjc3

mxdxjc4

22行执行完毕,开始执行23行

mxdxjc5

23行执行完毕,返回15行,传回ret

mxdxjc6

开始执行16行

mxdxjc7

28-30行开始执行,根据this指针访问内存。函数结束,回收show函数空间。

mxdxjc8

 

总结

看到this是不是很熟悉??面向对象其实就是对一个数据集做一些操作,这些数据就叫属性,这些操作就叫方法。改改语法是不是和Java或者C++很相似??这些既是面向对象的底层部分细节,也是学习数据结构必要的知识,只有对内存了如指掌才有可能灵活的控制使用内存。

C基础系列教程11——常见错误总结

该系列文章内容可能来源我本人或者zhrmoe(他的主页:https://zhr.moe)的编写。文章如果有错误欢迎批评指正,谢谢!转载请注明来自本站,另外,本系列教程中的代码建议初学者自己手打一遍,不要直接复制(由于某些奇怪的原因可能会导致你复制的代码出现错误!相信自己的双手吧=-=
在这里总结一些初学者常见错误,建议在考试前看一遍。

C基础系列教程导航

该系列文章内容可能来源我本人或者zhrmoe(他的主页:https://zhr.moe/)的编写。文章如果有错误欢迎批评指正,谢谢!转载请注明来自本站,另外,本系列教程中的代码建议初学者自己手打一遍,不要直接复制(由于某些奇怪的原因可能会导致你复制的代码出现错误!相信自己的双手吧=-=

如果链接不生效,请自行复制地址访问

计算机系列网课
http://study.163.com/curricula/cs.htm

翁恺 —— C语言程序设计
http://mooc.study.163.com/course/1000002011?tid=2001530003#/info

浙江大学基础练习网站
http://pta.patest.cn/pta/test/14/exam/4

C基础系列教程基本内容更新完毕,后期会逐步添加练习题和课后习题=-=
张浩然博客
https://zhr.moe

C基础系列教程1——基础数据类型以及输入输出语句

C基础系列教程1——基础数据类型以及输入输出语句

C基础系列教程2——逻辑表达式和判断语句

C基础系列教程2——逻辑表达式和判断语句

C基础系列教程3——switch和数组基础

C基础系列教程3——switch和数组基础

C基础系列教程4——简单循环

C基础系列教程4——简单循环

C基础系列教程5——多重循环

C基础系列教程5——多重循环

循环练习题2 HDOJ 2010
http://acm.hdu.edu.cn/showproblem.php?pid=2010

C基础系列教程6——函数

C基础系列教程6——函数

C基础系列教程7——指针1

C基础系列教程7——指针1

C基础系列教程8——指针2

C基础系列教程8——指针2

C基础系列教程9——指针3

C基础系列教程9——指针3

C基础系列教程10——结构体

C基础系列教程10——结构体

C基础系列教程11——常见错误总结

C基础系列教程11——常见错误总结