首页 文章 精选 留言 我的

精选列表

搜索[互动课堂],共7832篇文章
优秀的个人博客,低调大师

课堂随笔1 - MOOC网站日志分析

大数据Clouder:MOOC网站日志分析 日志,log,事件记录网站日志:系统日志,程序日志 网站的系统访问日志,有通用格式 网站日志分析:(1)价值/重要性:运行,安全,运营,用户信息(2)流程:采集,处理,展现,结果 重要性:①网站运行状况(如网站PV,UV),②网站安全状况(如恶意攻击,密码暴力破解),③网站运营状况(如搜索引擎流量来源),④网站用户信息(如操作系统,浏览器)。 流程:①数据采集(Tomcat、Nginx、使用程序自定义采集),②数据处理(清理、转换、抽取,SQL、Java、Python、Hadoop),③数据展现(图表化、Tableau、D3.js、Python),④结果处理(程序优化、服务器调整、SEO优化)。 Nginx:Nginx(engine x)是一个高性能的HTTP和反向代理服务器。用户请求分发,简单的负载均衡。默认不开启访问日志。修改配置文件。开启访问日志,配置访问日志格式。Tomcat:Tomcat服务器是一个免费的开放源代码的Web应用服务器。默认不开启访问日志。修改配置文件。 正则表达式,提取属性HTTP请求类型:GET,POST。判断是否为恶意攻击的依据:大量的404状态的HTTP请求。 网站用户访问日志清理:用户的IP,访问时间,请求链接,来源链接,客户端信息。 网站的流量分析:IP(独立IP),PV(访问量),UV(独立客户),访问趋势图。网站的来源分析:访问来源分析,搜索引擎来源。网站的访问分析:访问链接TopN,恶意攻击IP。网站的访客分析:访客地域分布,访客浏览器,访客操作系统,访客网络运营商。 网络优化:程序优化,服务器优化,搜索引擎推广。 MaxCompute(本文中简称MC),Quick BI MC概述:大数据计算服务(MaxCompute,原名ODPS)由阿里云自主研发,提供针对TB/PB级数据、实时性要求不高的数据仓库解决方案。MC产品特点:分布式架构,简单易用,安全可靠,管理与授权。MC概念名词:项目空间project,表table,分区partition,任务task,资源resource。MC基础架构,ODPS:计算层,逻辑层,接入层,客户端。 Quick BI使用哪些技术进行数据分析:数据仓库技术,线上分析技术,数据挖掘,数据展现技术。Quick BI:支持多种源数据,成本低,速度快,易操作,安全。Quick BI实现:数据分析,数据自助获取,业务数据探查,报表制作,数据门户搭建。Quick BI优势和价值:无缝集成云上数据库,图表,分析(多维度数据分析),快速搭建数据门户,实时,安全管控数据权限。 MOOC网站用户访问日志分析 网站运行过程中遇到的问题:①用户抱怨网站加载内容很慢,②用户抱怨网站样式错乱,③领导认为课程销量不行,④网站偶尔发生崩溃。 使用Java对文本预处理:增加一个自增长的ID列。由于访问时间精度不够,(只有秒级别,如果是毫秒就不用增加ID列了)。 提取IP中的信息:城市,网络服务商。 纯真IP数据库:是全国的IP段,只提供IP地址查询。收集全国和主要国家地区的几乎所有IP段对应的城市信息。之前IPQQ对应城市就是利用这个数据库来完成的,是目前公开的更新最快最全的IP地址库 。就是一个可以查询ip地址的软件。属性:IP起,IP止,地址信息,运营商。 IP转数字:a.b.c.d=>a256256256+b256256+c256+d 使用tunnel命令行上传数据到MC:①下载odpscmd客户端②配置,odpscmd_public->conf->odps_config.ini:项目名,Access Key ID ,Access Key Secret③开启,odpscmd_public->bin->odpscmd.bat④使用建表: create tabel t_web_access_log_content(content string); --日志文件 create table t_cz_ip_content(content string); --IP库文件使用tunnel上传数据: tunnel upload -fd "NoDelimiter" D:access.log t_web_access_log_content; tunnel upload -fd "NoDelimiter" D:ip.txt t_cz_ip_content;查看: show tables; select * from t_test limit 5; 正则表达式 使用正则表达式提取:①日志属性(MOOC网站的用户访问日志),②IP属性(纯真IP数据库),③省信息和有效访问链接(省、自治区、直辖市、港澳),④访问时间处理和来源分类(self、google、baidu、bing、360),⑤访问客户端信息处理(操作系统、浏览器) ,⑥访问链接TopN(group by url --使用url分组,limit 10 --显示前10个),⑦每个访客的第一条日志(独立访客,即独立客户端),⑧IP黑名单(status="404",group by ip,count>10) 。注意:在提取IP时,将IP的第一个段单独提取存放,使用IP的第一个段可以进行表关联的优化,(因为目前还没有运营商的IP是跨第一个段的)。有了①②,就可以从IP表中查询城市和运营商信息。MaxCompute不支持非等值join,可以使用MapJoin,但mapjoin的表不能太大,不能超过512MB,(默认的join是reduce join)。对IP和客户端信息一起group by来保证独立访客,即独立客户端。判断是否为恶意攻击的依据:大量的404状态的HTTP请求。 对应的沙箱实验 网址:https://edu.aliyun.com/lab/courses/9f0e0b2dd2984081b17b0fd494064233/detail?purchaseRecordId=f49454db14b143618e661c654f883830实验环境:JAVA环境,odpscmd客户端,DataWorks->项目->进入工作区->IDE页面。实验步骤:(1)使用MaxCompute处理数据,(2)使用Quick BI展现数据。 (1)使用MC处理数据:1、对日志文件进行预处理:增加一个自增长的ID列。在每行最前面加上一个ID,然后以空格隔开。方法一:采用Java编程语言处理。方法二:使用excel处理(数据量不大的情况下)。注意:Tab键是tabulator(制表键)。①使用excel打开日志文件access.log。②在第一列前插入一列新列->在A1单元格中填入数字“1”->全选选中A列->点击填充->序列->终止值:61279。③在C1单元格中写入函数公式:=CONCATENATE(A1," ",B1)->回车->选中C1单元格,在其右下角鼠标由空心加号变成实心加号处双击->计算出全部C列结果。④将整个C列复制到文本文件,保存为log.txt。 2、使用tunnel命令行上传数据到MC中: CREATE TABLE t_web_access_log_content (content STRING); CREATE TABLE t_cz_ip_content (content STRING); tunnel upload -fd "NoDelimiter" D:testdatalog.txt t_web_access_log_content; tunnel upload -fd "NoDelimiter " D:testdataip.txt t_cz_ip_content; show tables; list tables; select * from t_web_access_log_content limit 2; select * from t_cz_ip_content limit 2;注意:如果中文不能正常显示是展示的编码不对,可以在启动入口odpscmd.bat中的开头加入新行:chcp 936,然后重新打开执行查询,当然也可以不处理,因为对数据没影响,只是展示问题。 3、DataWorks->项目->进入工作区->IDE页面->新建任务->工作流任务,日志处理,手动调度->点击创建->拖拽节点组件,虚节点、ODPS_SQL组件->写入sql->点击右上角的自动布局->保存->提交->测试运行->点击前往运维中心,可以看到提交的任务->点击示例名称,可以看到当前执行流程,查看跑出的数据。注意:绿色表示执行完成,蓝色表示正在执行,黄色表示等待,红色表示执行失败。刷新页面,查看执行流程,执行过程大概在10分钟以内,如果全是绿色表全部执行完毕且成功。注意:在使用MC做任务时,节点的逻辑及sql代码,很重要,一旦有错误会直接导致得到的数据存在质量问题,导致数据分析的错误,可以利用元数据来查找管理数据质量问题。 (2)使用Quick BI展现数据:(标准版)1、添加数据源显示名称:网站日志分析注意:添加之前可以连接测试一下,通过即可。注意:在Quick BI中使用MaxCompute来新建数据源,在新建好的数据源里包含了这个项目空间中的所有表。 2、创建、编辑数据集为t_web_access_log,t_web_access_log_url_top,t_web_access_log_first,t_web_access_log_ip_black四个表分别创建四个数据集。注意:点击编辑,系统默认将表的字符串类型(Str.)属性归类到维度属性,数值类型(No.)字段归类到度量。注意:编辑完成后,要保存。 3、新建仪表板注意:点击全局设置,可以去除水印。注意:经常保存以免操作丢失。 新建计算字段(维度)->名称:运营商,数据类型:文本,表达式: case when instr([isp],'电信')>0 then '电信' when instr([isp],'移动')>0 then '移动' when instr([isp],'联通')>0 then '联通' else '其他' end新建计算字段(维度)->名称:访问来源,数据类型:文本,表达式: case when [搜索引擎] = 'self' then '直接访问' when [搜索引擎] = 'other' then '其他链接' else '搜索引擎' end

优秀的个人博客,低调大师

杨老师课堂之ArrayList集合解析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kese7952/article/details/80542813 ArrayList集合常用方法的解析 ArrayList集合常用方法的解析 1.概述 1.1集合的创建 1.2 集合中常用方法 1.3 集合中常用方法 1.4 集合中的常用方法补充 1.概述 ​ 在前面我们学习了数组,数组可以保存多个元素,但在某些情况下无法确定到底要保存多少个元素,此时数组将不再适用,因为数组的长度不可变。例如,要保存一个学校的学生,由于不停有新生来报道,同时也有学生毕业离开学校,这时学生的数目很难确定。为了保存这些数目不确定的元素,JDK中提供了一系列特殊的类,这些类可以存储任意类型的元素,并且长度可变,统称为集合。在这里,我们先介绍ArrayList集合,其他集合在后续课程中学习。 ​ ArrayList集合是程序中最常见的一种集合,它属于引用数据类(类)。在ArrayList内部封装了一个长度可变的数组,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。 2. 1.1集合的创建 创建集合的常用格式在此说明一下: 导包:import java.util.ArrayList; 创建对象:与其他普通的引用数据类型创建方式完全相同,但是要指定容器中存储的数据类型: ArrayList<要存储元素的数据类型>变量名 = new ArrayList<要存储元素的数据类型>(); 1、集合中存储的元素,只能为<>括号中指定的数据类型元素; 2、“<要存储元素的数据类型>”中的数据类型必须是引用数据类型,不能是基本数据类型; 我们通过举几个例子,来明确集合的创建方式: 存储String类型的元素 ArrayList list = new ArrayList(); 存储int类型的数据 ArrayList list = new ArrayList(); 存储Phone类型的数据 ArrayListlist = new ArrayList(); 1.2 集合中常用方法 ​ 接下来,我们来学习下ArrayList集合提供的一些常用方法,如下表: 通过代码演示上述方法的使用:ArrayListDemo01.java package cn.javabs.list.demo; import java.util.ArrayList; public class ArrayListDemo01 { public static void main(String[] args) { // 创建ArrayList集合 ArrayList<String> list = new ArrayList<String>(); // 向集合中添加元素 list.add("stu1"); list.add("stu2"); list.add("stu3"); list.add("stu4"); // 获取集合中元素的个数 System.out.println("集合的长度:" + list.size()); // 取出并打印指定位置的元素 System.out.println("第1个元素是:" + list.get(0)); System.out.println("第2个元素是:" + list.get(1)); System.out.println("第3个元素是:" + list.get(2)); System.out.println("第4个元素是:" + list.get(3)); } } 代码运行后截图: 1.3 集合中常用方法 通过集合遍历,得到集合中每个元素,这是集合中最常见的操作。集合的遍历与数组的遍历很像,都是通过索引的方式,集合遍历方式如下:ArrayListDemo02.java 1 package cn.javabs.list.demo; 2 import java.util.ArrayList; 3 public class ArrayListDemo02 { 4 public static void main(String[] args) { 5 //创建ArrayList集合 6 ArrayList<Integer> list = new ArrayList<Integer>(); 7 //添加元素到集合 8 list.add(13); 9 list.add(15); 10 list.add(22); 11 list.add(29); 12 //遍历集合 13 for (int i = 0; i < list.size() ; i++) { 14 //通过索引,获取到集合中每个元素 15 int n = list.get(i) ; 16 System.out.println(n); 17 } 18 } 19 } 上述代码中,第5行定义了一个可以存储int元素的集合;第7-10行,实现将int类型数值存储到集合中; ​ 第12-16行,实现遍历集合元素。这里要强调一点,get方法返回值的类型为集合中元素的类型。 1.4 集合中的常用方法补充 ArrayList集合提供的一些常用方法,如下表: boolean add(int index, Object obj) 功能:在集合中指定index位置,添加新元素obj 功能说明:假设集合list中有元素[“java”,“javaEE”],当使用add(1,“javaWeb”)后,集合list中的元素为[“java”,“javaWeb”,“JavaEE”]。 Object set(int index, Object obj) 功能:用指定元素obj替代集合中指定index位置的元素 功能说明:假设集合list中有元素[“java”,“javaEE”],当使用set(0,“javaWeb”)后,集合list中的元素为[“javaWeb”,“JavaEE”]。 Object remve(int index) 功能:从集合中删除指定index处的元素,返回该元素 功能说明:假设集合list中有元素[“java”,“javaEE”],当使用remove(0)后,集合list中的元素为[“JavaEE”],返回值为“java”。 void clear() 功能:清空集合中所有元素 功能说明:假设集合list中有元素[“java”,“javaEE”],当使用clear()后,集合list中的元素为空[ ]。 作者: 杨校 出处: https://blog.csdn.net/kese7952 分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。 本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(397583050@qq.com)咨询。

优秀的个人博客,低调大师

Ceph课堂:使用CivetWeb快速搭建RGW

优秀的开源项目正在改变传统IT,OpenStack名头最响,已经成为了IaaS的事实标准。Ceph同样颇有建树,通过其三大存储接口满足了企业的多样需求。UnitedStack有云把OpenStack和Ceph等一众开源项目的优势结合,搭建出全球最好用的高性能OpenStack云服务平台。在这个过程中,UnitedStack有云工程师对开源项目有许多的理解和分析,我们将陆续发布这些内容与大家共享,希望能够帮助大家更快的认识这些项目,避免掉进那些我们曾趟过的坑。同时,也希望大家与我们共同探讨,为更优秀的代码和架构努力。 这是我们Ceph系列文章的第四篇,之前推出的三篇Ceph文章由浅入深,受到了广泛好评,我们的Ceph系列将继续深入下去,希望能给感兴趣的人带来帮助。 RGW目前支持直接使用CivetWeb作为WebServer,实现HTTP请求的接受和回复,而不需要配置复杂的FCGI和WebServer了。 1 创建存储池 通过ceph -s命令确认你的Ceph集群已经正常运行,并且集群状态是OK。 运行以下命令创建rgw所需的存储池: cephosdpoolcreate.rgw6464 cephosdpoolcreate.rgw.root6464 cephosdpoolcreate.rgw.control6464 cephosdpoolcreate.rgw.gc6464 cephosdpoolcreate.rgw.buckets6464 cephosdpoolcreate.rgw.buckets.index6464 cephosdpoolcreate.log6464 cephosdpoolcreate.intent-log6464 cephosdpoolcreate.usage6464 cephosdpoolcreate.users6464 cephosdpoolcreate.users.email6464 cephosdpoolcreate.users.swift6464 cephosdpoolcreate.users.uid6464 2 配置 使用CivetWeb作为RGW的前端非常简单,只需要在ceph.conf的末尾中加入以下配置项即可: [client.radosgw.gateway] host={your-host-name} logfile=/var/log/radosgw/client.radosgw.ustack.log 这三行定义了一个radosgw实例,名称就叫gateway,运行的主机是{your-hostname},需要将其改成实际的主机名。 “log file”配置项代表了日志路径,需要注意的是需要保证该日志文件的父路径“ /var/log/radosgw/”必须存在,radosgw不会自动创建,你可以使用 mkdir-p/var/log/radosgw/ 创建该路径。 3 启动 启动命令: radosgw-c/etc/ceph/ceph.conf-nclient.radosgw.gateway -c参数表示使用的配置文件路径,-n表示要启动的radosgw实例名称,要与配置文件对应。 4 使用 CivetWeb启动的radosgw默认将监听7480端口。你可以直接通过访问http://your-host-ip:7480/来访问该RGW对象存储。 你可以通过radosgw-admin命令以管理员的方式访问所启动的RGW,执行例如创建用户等操作。 你也可以通过s3cmd命令行工具以用户的方式访问RGW,或者通过s3broswer图形界面访问RGW,执行上传/下载文件等操作。 关于作者 ​袁冬博士,UnitedStack产品副总裁,负责UnitedStack产品、售前和对外合作工作;云计算专家,在云计算、虚拟化、分布式系统和企业级应用等方面有丰富的经验;对分布式存储、非结构数据存储和存储虚拟化有深刻地理解,在云存储和企业级存储领域有丰富的研发与实践经验;Ceph等开源存储项目的核心代码贡献者。 本文作者:袁冬 来源:51CTO

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册