白帽子谈网络安全
常见的web攻击手段DNS攻击DNS劫持劫持DNS服务器,取得域名的解析记录控制权之后,修改域名的解析结果。在ISP中比较常见,当用户访问某个域名的时候会收到一个假的解析结果(广告站),广告站弹出广告之后再跳转到目标网站。 DNS缓存投毒攻击cache poisoning,攻击者对运行在UDP 53上的DNS查询进行检测,一旦发现与关键字匹配的请求则立即伪装成目标域名的解析服务器(Name...
大数据基础之storm
前置条件storm 1.1.1 zookeeper,分布式协调服务,HA。 kafka和logstash的整合 12kafka-server-start.sh -daemon /home/hadoop/app/kafka_2.11-0.9.0.0/config/server.propertieskafka-topics.sh --create --zookeeper hadoop001:2181 --replication-factor 1 --partitions 1 --topic logstash_topic logstash2.4.1file_kafka.conf 1234567891011121314input { file { path => "/tmp/access.log" }}output { kafka { codec => json topic_id => "logstash_topic" ...
大数据基础之SparkStreaming
我对你的敬仰犹如滔滔江水连绵不绝,又如黄河泛滥一发不可收拾。 – 周星驰 流处理概述环境配置参考spark-sql中的环境配置,目录结构同上,jdk和spark版本升级如下: jdk:1.8spark:2.2 实时流处理框架和架构 Strom: 真实时,来一条处理一条 Spark Streaming: 基于自定义时间间隔(2s,3s)的批量处理。微批处理 Kafka:国内使用较少 Flink:离线批处理 + 实时 为什么要将Flume收集的日志放入Kafka而不是直接丢给实时处理系统? 一般情况下业务有高峰期和低峰期,高峰期如果大量日志直接命中实时流处理系统,流处理系统可能扛不住压力,所以一般情况下会加一层MQ用来缓冲。 实时流处理的应用电信行业,如果用户流量快用完的时候发短信订购流量包电商行业,双十一大屏;搜索A商品的时候可能会向你推荐B商品,因为A和B可能有关联关系 大数据分析可以提高转化率。 分布式日志收集框架Flume解决什么问题 Flume is a distributed, reliable, and available service for...
游戏编程算法与技巧
游戏编程概述游戏编程中的3个核心概念:游戏循环、游戏时间管理和游戏对象模型。 游戏循环整个程序的核心流程控制称为游戏循环。之所以是一个循环是因为游戏总在不断执行一系列动作直到玩家退出。每迭代一次游戏循环称为1帧。大部分游戏每秒钟更新30~60帧。60FPS即游戏循环每秒钟执行60次。一个传统的游戏循环分成3部分:处理输入、更新游戏世界、生成输出。 12345while game is running process inpus update game world generate outputsloop 游戏时间管理游戏时间管理使得我们的游戏速度可以在任何机器上得到保证。通过处理时间增量来表示游戏逻辑。如果在8MHz下游戏的FPS为30,则在16MHz下FPS为60。也就是说在30FPS的时候敌人每秒钟移动150px,则在60FPS的时候敌人每秒移动300px。为了解决这个问题,通常需要引入时间增量:从上一帧起流逝的时间。更新逻辑可以写成这样: 1emeny.position.x += 150 *...
大数据基础之SparkSQL
在对应用进行集群化的时候,对于应用如何规划所使用的cpu核心数量有一个不成文的规定:总核心数量-1。因为操作系统需要消耗一些cpu,如果我们的应用占用了全部的cpu,一旦os需要处理一些其他任务,就会因为没有空闲的核而强制进行上下文切换,会减慢应用的处理速度。 map操作中将每个单词设置为1shuffle过程中将key相同的分到同一个reduce上 HDFS架构NameNode和DataNodeNameNode和DataNode blocksize:128M130M会被拆分成2个block:128M+2M NameNode: 客户端请求 元数据管理(文件名称、副本系数、block存放的DataNode) DataNode: 存储用户文件对应的数据块 定期向NameNode发送心跳信息,汇报自身及其所有的block信息,健康状况 SecondNameNode在2.x中已经不是必须的了。 副本机制hdfs-site.xml中的dfs.replication replication...
字字珠玑
...
docker学习
快速开始docker可以理解为轻量级的虚拟机,它可以把应用程序放在独立的环境中运行 最简单的docker命令: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950docker run ubuntu echo hello dockerdocker run nginxdocker images # 查看本地所有镜像docker run -p 8080:80 -d nginx # nginx 80端口映射到本地8080端口,下面的字符串表示容器id ,-d表示守护进程06dcb2f35caa00ba89faae92e1fc42917ccafeecf363f3a057ea75aede66eb78docker ps # 看看正在运行的容器docker cp index.html 06dcb2f35caa://usr/share/nginx/html # 将本地文件拷贝进docker对应目录docker stop 06dcb2f35caa...
Linux 基础
硬盘分区、格式化和挂载MBR分区模式 主分区不能超过4个,拓展分区最多只能有1个,单个分区最大容量为2TB。 服务器添加硬盘后会显示在/dev目录下,但是我们此时还不能使用这个硬盘,必须对其进行分区格式化和挂载,硬盘分区使用fdisk(MBR分区工具)。我们为虚拟机添加了1个8G的硬盘,使用fdisk -l看到/dev/sdb上并没有可用的分区表,使用fdisk...
sed-and-awk
提取日志字段,实现类似grep的功能。 1sed -n '/CONNECTED/p'...
浅谈函数式编程
我们可以将匿名函数(anonymous function)作为参数,这种操作具有普遍意义。 map实现12345function map(arr,fn){ var ret = []; for (let item of arr) ret.push(fn(item)); return ret;} 上面的操作对数组中的每个元素进行某种变换。 另一种常见的事情是对数组中的每个元素进行累加。例如: 1234567891011function sum(arr){ var ret = 0; for(let i = 0;i < arr.length;i++) ret += arr[i]; return ret;}function join(arr) { var ret = ''; for(let i = 0;i < arr.length;i++) ret += arr[i]; return...