- 博客(22)
- 问答 (1)
- 收藏
- 关注

原创 美团CAT源码分析 - 客户端(上-消息结构)
文章目录CAT源码分析 - 客户端(上-消息结构)1. 官方Demo2. 客户端初始化3. 消息管理3.1 MessageProducer & MessageManager3.1.1 Manager初始化3.1.2 ThreadLocal管理消息3.2 Message & MessageTree3.3 MessageIdFactory与MessageId3.3.1 MesageId的结构3.3.2 MessageIdFactoryCAT源码分析 - 客户端(上-消息结构)由于cat-cl
2020-10-19 11:59:37
1648
1

原创 Java实现游戏抽奖算法
常用抽奖算法对比基础的游戏抽奖算法通常要求实现在指定奖品的集合中,每个奖品根据对对应概率进行抽取。个人了解的主要有以下几中抽奖算法
2017-07-24 08:36:00
34881
13
原创 软件监控系统介绍
文章目录1. 概述2. 作用3. 层次划分4.监控作用域5. 监控系统的组成5.1 数据采集5.2 数据传输5.3 数据处理5.4 数据存储5.5 数据展示1. 概述此处的监控系统是指,用来对计算机硬件、软件运行情况进行监控的系统。监控系统要监控的指标或内容多种多样,根据不同的侧重点、不同的层次划分,监控系统又有多种实现。例如,Zabbix、Promethos、Open-falcon、Skywalking、CAT等等。因此,很难简单的概括监控系统的定义。2. 作用监控系统可以为用户提供• 实时
2020-11-17 18:58:04
4802
原创 CAT源码分析10 - MVC实现原理
深度解析Cat源码系列专栏点击访问持续更新中文章目录CAT源码分析10 - MVC实现原理1. 概述2. MVC配置详解2.1 JavaBean + Annocation配置2.2 配置管理和解析2.3 解析逻辑3. MVC流程简介3.1 Servlet拦截入口3.2 MVC类3.3 Service方法CAT源码分析10 - MVC实现原理1. 概述CAT没有使用SpringMVC作为MVC架构的实现框架,而使用了一套自研的MVC框架。虽然与Spring MVC实现不同,但MVC的框架基本原理.
2020-11-15 14:05:39
563
原创 CAT源码分析5 - 服务端消息接收
CAT源码分析5 - 服务端消息接收1. TcpSocketReceiver初始化在CAT服务端启动初始化过程中,CatHomeModule在初始化时,会通过setUp()和execute()两个方法实现对消息接收器的初始化。通过setUp方法完成对Netty客户端网络通信的初始化execute方法中有其他功能的初始化逻辑,包括对消息消费者的初始化整体的初始化逻辑如下图
深度解析Cat源码系列专栏点击访问文章目录CAT源码分析4 - 客户端(下 消息通信)1. Client消息通信任务2. StatusUpdateTask2.1 StatusExtension收集器2.1.1 JVMCollector2.1.2 ClassLoadingInfoCollector2.1.3 HttpStatsCollector2.2 发送任务run2.2.1 构建心跳信息2.2.2 刷新客户端配置2.3.3 清理record缓存3. TcpSocketSender的初始化3.1 客户端.
2020-10-28 15:19:58
843
原创 美团CAT源码分析 - 客户端(中 - 消息API)
文章目录CAT源码分析 - 客户端(中 - 消息API)1. 官方Demo2. newTransaction创建2.1 获取Context上下文2.2 创建Transaction消息2.3 开启Transaction3. Complete结束3.1 检查Problem报表3.2 end方法4. logEvent添加Event事件5. logMetric添加业务埋点5.1 logMetricForCount5.2 logMerticForDuration6. logError记录异常7. errorHandl
2020-10-22 15:29:05
1873
原创 空对象模式
文章目录空对象模式前言UML使用实例1. 空判断2. 空对象模式空对象模式前言空对象模式并不是Gof23种设计模式之一,但是也是一种常见的编程模式空对象模式通常用来简化程序返回Null时的处理逻辑,让“空对象”承担处理Null的责任。优点大量减少if null的判断缺点需要扩展额外的继承,部分场景还是需要进行判断随着Java8 Option的应用,这种模式也逐步淘汰UML使用接口或抽象类替换原先需要调用的类,为其添加Null对象。使用空对象执行逻辑,避免Null判断的出现
2020-10-16 14:19:20
281
原创 美团CAT源码分析 - 服务端启动初始化
CAT源码分析 - 服务端启动初始化CAT源码解析 - 服务端启动初始化1.概述CAT通过Tomcat容器运行,通过 web.xml 配置servlet和filter等处理请求核心的servlet包括CatServlet:处理Catclient的请求mvc-servlet:处理Cat-home页面的用户请求MVC是美团封装的MVC框架入口,与CAT核心逻辑关系不大,重点在于CatServlet,就是一种用来将数据结构和算法进行解耦的设计模式。符合开放关闭原则访问者模式是Gof 23种设计模式之一,维基百科的介绍如下wiki简介2. 访问模式的特性设计目的:将固定的数据结构与灵活的算法解耦优势:可以不改动类结构为对象
2020-09-29 08:22:39
156
原创 5. HDFS Java示例demo
5. HDFS Java API1. 开发环境配置添加Hadoop环境变量# hadoop安装目录export HADOOP_HOME="/opt/hadoop2.8.4"# 配置PATHexport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin注:网上相关教程要求本地也安装hadoop,添加环境变量,然后才能使用Java客户端。没有看过官方文档说明是否如此。欢迎勘误2. 引入pom依赖使用maven管理项目依赖,导入依赖jar如下.下载比
2020-09-27 07:48:16
445
原创 4. HDFS概念简介
4. HDFS简介1. 概念HDFS是一个分布式文件系统,Hadoop distributed file system。通过树形结构定位文件,由多台服务组合实现其功能,集群中各个机器具有自己的角色2. 组成HDFS集群包括NameNode,DataNode,SecondaryNameNodeNameNode负责管理整个文件系统的元数据,以及每一个路径对应的数据块信息DataNode负责管理用户的文件数据块,每个块都可以再多dataNode上存在副本SecondaryNameNode
2020-09-27 07:45:35
299
1
原创 3. Hadoop分布式集群部署
3. Hadoop分布式集群1. 集群配置此前使用的是伪分布式的单机模式,本篇使用分布式的集群配置。配置方案如下:bigdata1bigdata2bigdata3HDFSNameNode SecondaryNameNode DataNodeDataNodeDataNodeYARNnodeManagerResourceManger NodeManagernodeManager修改对应的配置文件即可。同时更改hadoop的/etc目录下的slaves,添加
2020-09-27 07:44:34
186
原创 2. 教你在VirtualBox下安装Hadoop
2. Hadoop安装1. Hadoop的安装下载Hadoop安装包,通过scp(或其他指令方式)发送到虚拟机上,并进行解压安装。修改环境变量vi /etc/profileexport JAVA_HOME="/opt/jdk1.8.0_211"export HADOOP_HOME="/opt/hadoop-2.8.4" # hadoop安装目录export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbinsource /
2020-09-22 22:38:04
1850
原创 【Hadoop】1 - Hadoop概述
1. Hadoop概论1.Hadoop起源Lucene的一个子项目思想源于Google的三篇论文GFS - HDFS 分布式文件系统Map-Reduce - MR 分布式计算框架Big-Table - Hbase2.Hadoop的优势高可用几乎所有结构都是主从模式的,数据存在副本和备份,保证高可用高扩展性在集群间分布式的分配数据方案,支持扩展到数千台服务器高效Map-Reduce并行计算,提高计算效率高容错性自动保存多个数据副本,能够自动将执行失败的任务重新分配
2020-09-21 13:20:17
191
原创 2 - Hadoop运行环境配置
【准备】2 - Hadoop运行环境配置1.Java安装使用scp指令将下载的jdk安装包传入虚拟机scp Downloads/bigdata/jdk-8u211-linux-x64.tar.gz root@192.168.56.101解压安装jdk,配置环境变量tar -zxvf jdk-8u211-linux-x64.tar.gz # 解压java文件 -C指定目录vi /etc/profileexport JAVA_HOME="/opt/jdk1.8.211"export
2020-09-20 09:09:35
142
原创 Mac安装VirtualBox虚拟机-大数据学习准备
【准备】1 - Mac虚拟机环境配置1.虚拟机选择虚拟机软件有多种,如VMware、Parallels Desktop、VirtualBox等。在Windows环境下通常选择VMware进行破解,且文档支持比较多。但在Mac环境下,较少使用VMware,不易破解,重量级配置较复杂。Paralles Desktop是Mac系统环境下最常用的虚拟机,但是同样对于新手不易操作。个人选择VirtualBox,轻量级,使用和配置简便2.下载安装2.1 虚拟机百度下载链接,安装非常简单2.2安装Ce
2020-09-19 10:27:44
974
原创 【职业素养】程序员的职业素养
在成为一个出色的开发人员前,必须先成为一个合格的程序员。所以,职业素养和专业性十分重要。下面是关于《程序员的职业素养》–Robert.C Martin 的读书笔记个人素养不要破环任何代码 在对一个既有项目写代码前,首先要保证,新加入的代码不能造成此前代码的功能异常。并且,不要随意破坏此前代码的结构(注意解耦)。TDD(测试驱动开发) 当然不同的程序员对这一点持有不同的看法,但是个人认为,任何
2017-09-17 22:09:52
1332
原创 【游戏服务器开发-准备篇】(三)构建自己的配置文件解析工具类
前言Java应用中,配置文件十分常见。通常,我们使用配置文件对一些需要跟据现场实际运行环境进行配置的参数进行设置。 例如,数据库连接配置,服务器ip和端口,线程池大小,缓存大小等。 常见的配置文件格式有 .properties,.xml,.yml , .yaml 各种格式配置文件也具有各自的读取类库支持: properties通过Java原生的Property 类就可支持 xml的解析类库
2017-08-01 08:15:26
915
原创 【游戏服务器开发-准备篇】对象Json序列化工具类
前言对象的序列化和反序列化在网络应用通信过程中十分重要,而Json通常是其中最常用的一种传输格式。就个人接触项目的序列化部分,主要分为两类。一类是十分严谨的,每个Json串都有与之映射的Java对象,通过对象进行序列化和反序列化。第二类较为灵活,通过类库手动拼写Json串。目前正在用的服务架构中,使用第一类,通过fast-json类库,每次对需要返回的数据手动拼写json字符串。这样的做法有好也有坏
2017-07-22 21:46:19
513
原创 【游戏服务器开发-准备篇】初识游戏服务器开发
前言近期转换了工作方向,从WEB开发走向了游戏开发。 此前的工作中,主要负责WEB分布式项目的开发,REST服务开发,并包含一部分IM系统的开发。分布式系统框架,数据库,NoSql接触的比较多,比较杂。而新工作比较单一,主要负责游戏服务器的业务开发。使用的也是前辈封装好的框架。后来发现,原来全公司都使用了这一套公共的架构。相对之前的工作,工作内容接触新技术相对较少。而且,由于公共框架时间久远,现在
2017-07-20 23:55:11
575
空空如也
TCP既然有重传机制,为什么业务上还要有重发?
2017-08-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人