E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
skynet源码剖析
ThreadLocal
源码剖析
简述ThreadLocal是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set(Objectobj)到线程中的对象obj是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。线程局部变量功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。从线程的角
康俊1024
·
2023-04-19 12:55
【从零开始学
Skynet
】实战篇《球球大作战》(十五):项目问题和改进
1、问题:在客户端发起登录协议后,在登录协议返回之前客户端下线。由于此时agentmgr记录的是“登录中”状态,下线请求不会被执行,除非再次登录踢下线,否则agent会一直存在。这种情况不常出现。解决:方法是让gateway和agent之间偶尔发送心跳协议,若检测到客户端连接已断开,则请求下线。2、问题:agentmgr是个单点,有可能成为系统瓶颈。解决:可以开启多个agentmgr,以玩家id为
寻水的鱼、、
·
2023-04-18 23:22
从零开始学Skynet
skynet
lua
服务器开发
【从零开始学
Skynet
】基础篇(六):MySql数据库安装操作
游戏服务端的另一项重要功能是保存玩家数据,
Skynet
提供了操作MySQL数据库、MongoDB数据库的模块。
寻水的鱼、、
·
2023-04-18 17:28
从零开始学Skynet
mysql
数据库
skynet
服务器
【从零开始学
Skynet
】基础篇(五):简易聊天室
1、功能需求客户端发送一条消息,经由服务端转发,所有在线客户端都能收到,如下图所示:2、代码实现在
skynet
/examples目录下创建main_chat.lua文件,然后把main_echo.lua
寻水的鱼、、
·
2023-04-18 11:11
从零开始学Skynet
lua
Skynet
服务器开发
【从零开始学
Skynet
】基础篇(三):服务模块常用API
1、服务模块
Skynet
提供了开启服务和发送消息的API,必须要先掌握它们。列出了
Skynet
中8个最重要的API,PingPong程序会用到它们。
寻水的鱼、、
·
2023-04-18 09:16
从零开始学Skynet
lua
skynet
服务器
Linux
【从零开始学
Skynet
】实战篇《球球大作战》(十四):agent跨服务器版
至此,我们已完成了《球球大作战》的绝大部分功能,只剩下完善agent,让它和scene服务联动了。1、多个模块一般而言,代理服务会承载很多系统,比如邮件、成就等,此处涉及的代码较多,容易混乱,需划分模块。之前实现的service模块能让服务带有分模块的潜力。新建service/agent/scene.lua用于处理agent的战斗逻辑,只需在init.lua中引入(require)新增的文件,即可
寻水的鱼、、
·
2023-04-18 09:16
从零开始学Skynet
lua
服务器开发
skynet
【从零开始学
Skynet
】基础篇(四):网络模块常用API
游戏服务端要处理客户端请求,作为服务端引擎,网络编程也是
Skynet
的核心功能。
寻水的鱼、、
·
2023-04-18 09:15
从零开始学Skynet
lua
Skynet
linux
服务器
【从零开始学
Skynet
】实战篇《球球大作战》(十二):场景代码设计(上)
场景服务会处理绝大部分的游戏逻辑。新建service/scene/init.lua,开始编写相关代码。1、Ball类场景中包含小球和食物这两种对象,先看看小球的实现。代码如下所示:--球localballs={}--[playerid]=ballfunctionball()localm={playerid=nil,node=nil,agent=nil,x=math.random(0,100),y=
寻水的鱼、、
·
2023-04-18 09:03
从零开始学Skynet
skynet
服务器开发
lua
【从零开始学
Skynet
】实战篇《球球大作战》(十三):场景代码设计(下)
1、主循环《球球大作战》是一款服务端运算的游戏,一般会使用主循环程序结构,让服务端处理战斗逻辑。如下图所示,图中的balls和foods代表服务端的状态,在循环中执行“食物生成”“位置更新”和“碰撞检测”等功能,从而改变服务端的状态。scene启动后,会开启定时器,每隔一段时间(0.2秒)执行一次循环,在循环中会处理食物生成、位置更新等功能。service/scene/init.lua中新增的内容
寻水的鱼、、
·
2023-04-18 09:03
从零开始学Skynet
skynet
服务器开发
lua
【从零开始学
Skynet
】基础篇(九):调试控制台服务
Skynet
自带了一个调试控制台服务debug_console,启动它之后,可以查看节点的内部状态。
寻水的鱼、、
·
2023-04-18 09:31
lua
Skynet
服务器开发
UI(四) - UGUI核心
源码剖析
UGUI核心
源码剖析
我们依然从文件夹结构下手,从最容易看懂的地方下手,寻找某块之间的划分,我们先来看下核心部分的文件结构,如下图:从图中可以看出,以文件夹为单位,拆分模块有,Culling(裁剪),Layout
s178435865
·
2023-04-18 09:55
游戏开发
unity
ui
SpringBoot基础回顾-7
##2.SpringBoot原理深入及
源码剖析
传统的Spring框架实现一个Web服务,需要导入各种依赖JAR包,然后编写对应的XML配置文件等,相较而言,SpringBoot显得更加方便、快捷和高效。
拉勾教育小诗诗
·
2023-04-17 21:59
【从零开始学
Skynet
】实战篇《球球大作战》(十一):战斗场景设计
现在的服务端框架有支撑数万玩家的能力,且支持横向拓展(即增加物理机数量),理论上具有无上限的负载能力。下面以《球球大作战》为例,说明怎样使用这套框架。1、战斗流程玩家登录后,玩家可以做些非战斗操作(仿照work示例,可以实现成就、背包、邮件、好友等功能),如下图所示:当点击“开始比赛”按钮时,客户端会发生“进入战斗”的协议。战斗流程如下图所示:服务端会开启很多scene服务,每个服务处理一场战斗。
寻水的鱼、、
·
2023-04-17 15:41
从零开始学Skynet
服务器
Skynet
lua
【从零开始学
Skynet
】实战篇《球球大作战》(十一):测试登录流程
如下代码所示:local
skynet
=require"
skynet
"local
skynet
_manager=require"
skynet
.manager"localrunconfig=require"runconfig"localcluster
寻水的鱼、、
·
2023-04-17 15:41
从零开始学Skynet
skynet
服务器
lua
【从零开始学
Skynet
】实战篇《球球大作战》(九):agentmgr和nodemgr代码设计
agentmgr是管理agent的服务,它是登录过程的仲裁服务,控制着登录流程。agentmgr中含有一个列表players,里面保存着所有玩家的在线状态。首先,在service/agentmgr目录下新建init.lua,然后开始编写它。1、玩家类根据登录流程可知,玩家会有“登录中”“游戏中”和“登出中”这三种状态,代码如下所示:--状态STATUS={LOGIN=2,GAME=3,LOGOUT
寻水的鱼、、
·
2023-04-17 15:40
从零开始学Skynet
lua
skynet
服务器开发
【从零开始学
Skynet
】实战篇《球球大作战》(十):agent代码设计
现在开发登录流程涉及的最后一个服务agent,完成后就可以真正地把框架运行起来了。还会演示agent的单机功能,做个“打工”小游戏。1、消息分发玩家登录后,gateway会将客户端协议转发给agent(流程图的阶段⑨)。新建service/agent/init.lua文件,代码如下所示:s.resp.client=function(source,cmd,msg)s.gate=sourceifs.c
寻水的鱼、、
·
2023-04-17 15:36
从零开始学Skynet
lua
Skynet
服务器开发
LevelDB
源码剖析
(二)整体架构与基本组件:Comparator、Slice、Status、Iterator、Option
文章目录源码结构整体架构基本组件SliceStatusComparatorIterateOption源码结构LevelDB的源码托管在GitHub上:LevelDB,其中与程序实现源码相关的主要有以下几项:db:包含数据库的一些基本接口操作与内部实现。table:为排序的字符串表SSTable(SortedStringTable)的主体实现。helpers:定义了LevelDB底层数据部分完全运行
凌桓丶
·
2023-04-17 12:12
LevelDB
数据库
kv存储
leveldb
c++
源码剖析
【SpringBoot】启动原理
源码剖析
(含加载spring.factories扩展点)
文章目录前言1.概念&原理2源码2.1SpringBoot事件监听器发布顺序2.2详细步骤2.2.1调用SpringApplication.run()静态方法启动springboot应用2.2.2使用自定义SpringApplication进行启动2.2.2.1创建SpringApplication2.2.2.1启动2.2.2.1.1[3]去spring.factroies中读取了SpringAp
云川之下
·
2023-04-17 04:17
spring
spring
boot
spring
java
activiti6.0
源码剖析
之多实例减签与加签操作
二、多实例减签(仅支持6版本)思路通过多实例运转过程很容易能够理清如何实现减签操作,如果需要明白运转过程可以参考activiti6.0
源码剖析
之多实例运转过程
我有一只喵喵
·
2023-04-16 22:22
源码剖析
RocketMQ延时消息原理
一、前言RocketMQ版本4.8.0,本文中相关源码注释见GitHub中:RocketMQ:release-4.8.0。上一篇文章我们分析了RocketMQ的的消费超时/失败重试机制,最终会发送一个延时消息到Broker,本篇接着分析RockeTMQ延时消息的实现机制;1、消息延时级别消息的延时级别level一共有18级,分别为:1s5s10s30s1m2m3m4m5m6m7m8m9m10m20
秃秃爱健身
·
2023-04-16 13:14
精通消息队列MQ
中间件
RocketMQ
消息队列
java
【从零开始学
Skynet
】实战篇《球球大作战》(四):分布式登录系统
处理玩家的登录,是服务端框架的主要功能之一。分布式系统涉及多个服务,让它们相互配合不产生冲突是一大难点。1、登录流程分布式服务端的登录功能要处理好如下两个问题:问题一:完成角色对象的构建和销毁。如下图所示:当客户端连接、发起登录时,服务端要创建一个对应角色的程序对象,用以加载角色数据。当客户端掉线时,服务端要保存角色数据,并销毁程序对象。这套框架会为每个客户端创建一个agent服务。如何解决:需要
寻水的鱼、、
·
2023-04-16 11:14
从零开始学Skynet
分布式
skynet
服务器开发
lua
【从零开始学
Skynet
】实战篇《球球大作战》(五):gateway代码设计(中)
1、编码和解码我们来实现两个辅助方法str_unpack和str_pack,用于消息的解码和编码。(1)str_unpack代码localstr_unpack=function(msgstr)localmsg={}whiletruedolocalarg,rest=string.match(msgstr,"(.-),(.*)")ifargthenmsgstr=resttable.insert(msg
寻水的鱼、、
·
2023-04-16 11:14
从零开始学Skynet
skynet
服务器
linux
lua
【从零开始学
Skynet
】实战篇《球球大作战》(三):封装常用的API
1、定义属性新建文件lualib/service.lua,定义模块的属性,service模块是对
Skynet
服务的一种封装,代码如下所示:local
skynet
=require"
skynet
"localcluster
寻水的鱼、、
·
2023-04-16 11:44
从零开始学Skynet
lua
Skynet
服务器开发
【从零开始学
Skynet
】实战篇《球球大作战》(五):gateway代码设计(上)
1、协议格式在写代码之前,我们要先了解什么是协议,协议就是“客户端向服务端发起的登录请求”,那么登录请求是什么样子的呢?这得先从TCP数据流说起,客户端发起的请求,就是一些二进制数据。(1)TCP粘包现象TCP协议是一种基于数据流的协议,举例来说,如果客户端分两次发送“1234”和“5678”这两条消息。服务端可能一次性接收到“12345678”;也可能先只收到“12”,过一会儿才收到“34567
寻水的鱼、、
·
2023-04-16 11:40
从零开始学Skynet
Skynet
服务器开发
lua
pandas读取Excel核心
源码剖析
,面向过程仿openpyxl源码实现Excel数据加载
作者:小小明-代码实体博客主页:https://blog.csdn.net/as604049322欢迎点赞收藏⭐留言欢迎讨论!今天我们将研究pandas如何使用openpyxl引擎读取xlsx格式的Excel的数据,并考虑以面向过程的形式简单的自己实现一下。截止目前本人所使用的pandas和openpyxl版本为:pandas:1.5.2openpyxl:3.0.10今天所有的测试全部基于以下文件
小小明-代码实体
·
2023-04-16 10:43
python
pandas
excel
python
使用Tika进行文件类型校验
使用Tika进行文件类型校验文章目录使用Tika进行文件类型校验Tika是什么如何使用Tika进行文件类型校验Tika文件类型校验存在的问题问题发生的过程
源码剖析
代码优化使用时注意总结Tika是什么我们都知道
lemontree1993
·
2023-04-16 00:08
java
源码
java
apache
Tika
Vue.js
源码剖析
-响应式原理
寻找入口文件执行构建npmrundev#"dev":"rollup-w-cscripts/config.js--sourcemap--environmentTARGET:web-full-dev"#--environmentTARGET:web-full-dev设置环境变量TARGET#webweb平添full完整版,包含编译器和运行时dev开发版,不对代码进行压缩script/config.js
翔子丶
·
2023-04-15 22:49
Sentinel原理解析
完整源码流程图Sentinel限流、熔断降级
源码剖析
.png架构图image.png几个重要概念ResourceSentinel通过资源来保护具体的业务代码或其他后方服务。
知止9528
·
2023-04-15 20:00
Muduo库
源码剖析
(一)——Channel
Muduo库
源码剖析
(一)——Channel说明本
源码剖析
是在muduo基础上,保留关键部分进行改写分析。
FuzhouJiang
·
2023-04-15 18:51
Muduo
网络编程
C/C++
c++
服务器
如果这篇文章说不清epoll的本质,那就过来掐死我吧!
epoll作为linux下高性能网络服务器的必备技术至关重要,nginx、redis、
skynet
和大部分游戏服务器都使用到这一多路复用技术。
碧俐千仞
·
2023-04-15 11:14
Redis Sentinel原理及
源码剖析
主题:Redissentinel原理及实现
源码剖析
大纲:1、冯老师,好久不见,看了下你的分享主题,最近是在埋头啃Redis源码吗?2、多点现在Redis大概用的什么规模,主要用在什么业务上?
老叶茶馆_
·
2023-04-15 08:42
数据库
运维
编程语言
redis
分布式
「Python
源码剖析
」对象模型有哪些特色?本文详解
Python是一门面向对象语言,实现了一个完整的面向对象体系,简洁而优雅。与其他面向对象编程语言相比,Python有自己独特的一面。这让很多开发人员在学习Python时,多少有些无所适从。那么,Python对象模型都有哪些特色呢?一切皆对象首先,在Python世界,基本类型也是对象,与通常意义的“对象”形成一个有机统一。换句话讲,Python不再区别对待基本类型和对象,所有基本类型内部均由对象实现
python阿喵
·
2023-04-15 01:15
ThreadLocal
源码剖析
每个线程都保持对其线程局部变量副本的隐式引用,只要线程是活动的并且ThreadLocal实例是可访问的。在线程消失之后,其线程局部实例的所有副本都会被垃圾回收,(除非存在对这些副本的其他引用)。1.使用示例publicclassThreadId{//AtomicintegercontainingthenextthreadIDtobeassignedprivatestaticfinalAtomicI
王侦
·
2023-04-14 16:09
C++ STL 几个容器的底层实现
C++STL的实现:1.vector底层数据结构为数组,支持快速随机访问2.list底层数据结构为双向链表,支持快速增删3.deque底层数据结构为一个中央控制器和多个缓冲区,详细见STL
源码剖析
P146
大隐隐于野
·
2023-04-14 08:14
#
C/C++编程语言
<Java八股文面试>ArrayList源码 | Iterator源码 | LinkedList和ArrayList对比
文章目录1.ArrayList1.1ArrayList扩容规则介绍1.2ArrayList
源码剖析
1.2.1ArrayList构造方法和属性分析1.2.2add()方法1.2.3addAll()方法2.
爱编程的大李子
·
2023-04-14 01:05
Java面试题总结
ArrayList
Iterator
LinkedList
Java
nginx线程池
源码剖析
文章目录nginx线程池1.问题2.解决办法nginx线程池3.线程池实现模型4.线程池实现核心组件5.源码实现测试代码main.c封装互斥锁&条件变量线程池实现nginx线程池1.问题处理事件过程“阻塞”怎么办?忙于漫长的CPU密集型处理读取文件,但文件尚未缓存,从硬盘中读取较为缓慢不得不等待获取某个资源:网络上的请求和响应,互斥锁,等待同步方式调用的数据库响应单个进程或线程同时只能处理一个任务
小瑞的学习笔记
·
2023-04-13 12:39
linux
nginx
linux
c++
服务器
开发语言
深入底层C
源码剖析
Redis底层数据结构
Redis基本特性1.非关系型的键值对数据库,可以根据键以O(1)的时间复杂度取出或插入关联值2.Redis的数据是存在内存中的3.键值对中键的类型可以是字符串,整型,浮点型等,且键是唯一的4.键值对中的值类型可以是string,hash,list,set,sortedset等5.Redis内置了复制,磁盘持久化,LUA脚本,事务,SSL,ACLs,客户端缓存,客户端代理等功能6.通过Redis哨
詹姆斯-穆里尼奥
·
2023-04-13 11:16
redis
lua
数据库
Muduo
源码剖析
--整体架构
Muduo整体架构1.编译和安装git:GitHub-chenshuo/muduo:Event-drivennetworklibraryformulti-threadedLinuxserverinC++11gitclonehttps://github.com/chenshuo/muduo.git安装依赖库:sudoaptinstallg++cmakemakelibboost-dev可安装三个非必须
birate_小小人生
·
2023-04-13 02:57
muduo剖析
架构
linux
tcp
(万字
源码剖析
)
前言作者简介:半旧518,长跑型选手,立志坚持写10年博客,专注于java后端专栏简介:juc并发编程,讲解锁原理、锁机制、线程池、AQS、并发容器、并发工具等,深入源码,持续更新。文章简介:本文主要介绍线程池的实现原理,注释十分详细,并且对于值的学习的代码做了点评相关推荐:Juc并发编程12——2万字深入源码:线程池这篇真的讲解的透透的了前面我们已经介绍过线程池的使用了,下面我们来深挖它的实现原
半旧518
·
2023-04-12 21:43
juc
java
开发语言
juc
并发
原力计划
JUC并发编程02——AQS
源码剖析
1.AQS介绍相信每个JavaCoder都使用过或者至少听说过AQS,它是抽象队列同步器AbstractQueuedSynchronizer的简称,在juc包下。它提供了一套可用于实现锁同步机制的标准框架,其维护了一个volatile修饰的共享变量state和一个FIFO(先进先出)线程等待队列,多线程争用资源被阻塞的时候就会进入这个队列。state是共享变量,其访问方式有如下三种:getStat
程序一逸
·
2023-04-12 21:58
java
c++
jvm
Spring Security
源码剖析
从入门到精通.跟学尚硅谷(二)
SpringSecurity
源码剖析
从入门到精通.跟学尚硅谷二4.SpringSecurity微服务权限方案4.1什么是微服务1、微服务由来2、微服务优势3、微服务本质4.2微服务认证与授权实现思路1、
心向阳光的天域
·
2023-04-12 18:35
其它java框架
spring
java
微服务
spring
security
Android HandlerThread全面解析
在对Android异步消息处理机制
源码剖析
和AndroidAsyncTask
源码剖析
后,下面对Android中的另一个和异步消息机制相关的类-HandlerThread进行全面解析。
CyanStone
·
2023-04-12 17:41
muduo
源码剖析
——ThreadPool线程池的实现
1线程池原理muduo源码中线程池的实现是基于生产者/消费者模式的,可参考基于生产者/消费者模式原理实现无界缓冲区和有界缓冲区。其中缓冲区(即下图中的任务队列)为“环形缓冲区”。其实现原理如下:2代码实现2.1类图2.2代码ThreadPool.h//UseofthissourcecodeisgovernedbyaBSD-stylelicense//thatcanbefoundintheLicen
高自强的博客
·
2023-04-12 00:42
muduo
线程池
muduo
源码剖析
——以三个切片浅析muduo库代码设计的严谨性、高效性与灵活性
0前言陈硕大佬的muduo网络库的源码我已经看了好久了,奈何本人实力有限,每每看到其代码设计的精巧之处只能内心称赞,无法用言语表达出来。实在令人汗颜。最近在看到网络设计部分时有了一些体会,结合自己之前在网络编程方面的积累,特对代码设计中的一些精巧之处做一些总结。就muduo在多线程并发服务器设计而言,除了其高效的并发服务架构之外,其在代码设计方面的高效性和灵活性可以从下面三个切片得以体现。在这之前
高自强的博客
·
2023-04-12 00:42
muduo
多线程
Muduo
源码剖析
1、总体流程1.acceptor进行listen阶段后,往channel中注册可读事件。2.acceptor可读处理中生成TcpConnection指针,通过EventloopThreadPool轮询出其中一个线程的eventloop,并将此TcpConnection的可读、可写等事件注册到自己Channel(eventLoop)中。3.每个EventLoop监听到具体channel的事件后,分析
YanWenCheng_
·
2023-04-12 00:08
muduo
c++
Muduo库
源码剖析
(三)——获取线程tid方法
相关知识点__thread__thread修饰表示使用线程局部存储机制(threadlocal机制),即会为修饰的变量在当前线程存储一份copy,别的线程是看不到这个变量的修改__thread是GCC内置的线程局部存储设施,其存储效率可以和全局变量相比;__thread变量在每一个线程中都有一份独立实例,各线程值是互不干扰的。extern在C++中,extern是一个关键字,用于在当前文件以外的地
FuzhouJiang
·
2023-04-12 00:34
网络编程
Muduo
C/C++
c++
服务器
linux
第六章 数据中台PaaS层离线存储之HDFS
源码剖析
第一部分 - NameNode启动流程&HadoopRpc协议详述
1、大数据源码解读思路(1)掌握其网络通信架构(2)场景驱动方式HDFS:namenodedatanode启动写数据得流程更新原数据流程读数据流程2、HadoopRPC的Demo详述含义:远程过程调用,即不同进程的方法的调用。2.1、创建pom依赖org.apache.hadoophadoop-client2.7.02.2、相关源码调试(1)创建客户端和服务端通信协议接口/***协议*@autho
随缘清风殇
·
2023-04-11 23:01
大数据架构师专题
hbase
big
data
数据库
STL
源码剖析
-六大部件, 部件的关系,复杂度, 区间表示
C++标准库-体系结构与内核分析根据源代码来分析介绍自学C++侯捷老师的STL
源码剖析
的个人笔记,方便以后进行学习,查询。为什么要学STL?
null_one
·
2023-04-11 17:34
C++
c++
算法
开发语言
源码剖析
JVM类加载机制
1前言我们平常开发中,都会部署开发的项目或者本地运行main函数之类的来启动程序,那么我们项目中的类是如何被加载到JVM的,加载的机制和实现是什么样的,本文给大家简单介绍下。2类加载运行全过程当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到JVM,通过Java命令执行代码的大体流程如下从流程图中可以看到类加载的过程主要是通过类加载器来实现的,那么什么是类加载
京东云技术团队
·
2023-04-11 17:30
jvm
java
开发语言
源代码管理
STL
源码剖析
-分配器 Allocator
分配器(Allocator)分配器给容器用的,是一个幕后英雄的角色。分配器的效率非常重要。因为容器必然会使用到分配器来负责内存的分配,它的性能至关重要。在C++中,内存分配和操作通过new和delete完成。new中包含两个操作,第一步是使用operatornew分配内存,第二步是调用构造函数;delete中包含两个操作,第一步是调用析构函数,第二步是使用operatordelete释放内存。op
null_one
·
2023-04-11 17:25
C++
开发语言
c++
上一页
11
12
13
14
15
16
17
18
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他