- 博客(43)
- 资源 (1)
- 收藏
- 关注

原创 skynet 源码阅读 -- 核心概念服务 skynet_context
本文从 Skynet 源码层面深入解读 服务(Service) 的创建流程。从最基础的概念出发,逐步深入 skynet_context_new 函数、相关数据结构(skynet_context, skynet_module, message_queue 等),并通过流程图、结构图、以及源码片段的细节分析,希望能对 Skynet 服务的创建有一个由浅入深的系统认识。
2025-01-23 14:54:12
1593

原创 skynet 源码阅读 -- 启动主流程
Skynet 是一个轻量级、高并发的服务器框架。它在启动时会进行一系列初始化操作,并启动多个不同功能的线程(Monitor、Timer、Worker、Socket),从而实现消息分发、定时器、网络I/O等核心功能。本文将带你从函数开始,循序渐进地看 Skynet 的启动过程以及各条线程的分工,为后续深入阅读 Skynet 源码做铺垫。
2025-01-22 21:18:01
1743

原创 深入理解Java-Volatile关键字
1.volatile关键字的作用到底是什么? a.当一个变量被定义为volatile之后,它将具备两种特性: 一:保证此变量对所有线程的可见性 可见性的意思为:当某个线程对volatile变量的值进行了修改,其他的线程是可以立即得知的;而普通的变量是无法做到这一点的,线程先是对工作内存当中的普通变量副本进行修改,再将变量的值在主内存当中进行刷新,对工作内存修
2017-01-01 11:39:56
496
原创 Skynet 中 snlua 服务 init 细节
C 入口:当 Snlua 服务通过 launcher 或类似机制被创建时,Skynet 内部会调用。init_cb打开 Lua VM 标准库、Profile、Codecache 等模块;设置LUA_PATHLUA_CPATH等全局变量;加载并执行loader.lua。loader.lua解析启动参数,找出第一个作为;遍历路径,找到正确的服务脚本(main执行。服务脚本引入skynet模块,调用;中:调用将注册到 C 端;使用延后执行我们真正的main函数来进行初始化逻辑(创建其他服务等)。
2025-03-25 15:17:14
1059
原创 Skynet 中 snlua 服务启动整体流程分析
configsnlua服务作为 Skynet 框架与 Lua 语言结合的关键模块,不仅为 Lua 逻辑层提供了隔离、独立的执行环境,还在 C 层面通过内存管理、协程扩展、信号捕获等手段,为服务器开发者提供了更高的可控性和可调试性。
2025-03-25 10:14:50
894
原创 Skynet实践之「Lua C 模块集成—优先级队列」
本文展示了 如何以 C 实现一个通用的“最小堆(Min-Heap)优先队列 并在 Skynet 中通过 Lua C 模块集成使用,从而获得更高的性能与通用性。
2025-01-26 20:13:54
983
原创 skynet 源码阅读 -- 「揭秘 Skynet 网络通讯」
本文将聚焦 Skynet 网络通讯的核心线程 thread_socket,并深入探讨 skynet_socket_poll、forward_message、socket_server_poll 等关键函数如何协作,实现高效的网络数据收发与消息分发。
2025-01-26 12:24:22
1229
原创 skynet 源码阅读 -- timer 的实现原理
关键常量TIME_NEAR:定时器中“近距离”时间轮的大小为 256。换言之,这个“near”数组有 256 个槽,每个槽代表一个时间刻度。TIME_LEVEL:定时器“远距离”时间轮的大小为 64。后面会看到数组就是 4 层远距离时间轮,每层各 64 槽。MASK,用于做位运算,快速定位某个槽。handle:表示定时任务处理的目标(如服务ID)。session:该定时事件对应的会话或序号,用来区分不同事件。这个结构往往附加在定时节点后面,包含要分发的消息信息。timer_node。
2025-01-22 20:08:13
1098
原创 Java,线程,还有它的并发
1.并发是如何实现的? 实现并发最简单得方式就是进程,进程是运行在它自己的地址空间内的自包容的程序。多任务操作系统会周期性将cpu从一个进程切换到另外一个进程,来实现同时运行多个进程。操作系统一般会将进程互相隔离开,不共享内存空间,所以使用进程实现多线程是相对容易的; java所使用的并发系统会共享内存,I/O这样的资源,因此实现并发就是要协调不同线程驱动任务之间对这些资源的使用,
2017-01-01 17:07:14
553
原创 泛型实现堆栈
ublic class demo1 {private static class node{U item;node next;node(){item=null;next=null;}node(U item,node next){this.item=item;this.next=next;}boolean end(){return i
2016-12-09 17:15:14
673
原创 java实现单链表
节点类:package jiedian;//java实现单链表public class Node {private String date;private Node point;/*** @return the date*/public String getDate() {return date;}/*** @
2016-10-01 18:49:58
425
原创 理解Spring框架---利用,xml,java反射简单实现Spring
对于Spring框架的简单模拟: a).读取xml配置文件 b.)利用java反射机制获取对象第一步:创建一个接口,定义一个获取对象的方法getBean():public interface BeanFactory { public Object getBean(String name);}第二步:创建一个类XmlContext,实现Be
2015-12-26 20:16:18
811
原创 Java反射的基本操作
-----获取类的信息以及方法的反射和深入理解泛型,代码主要实现:1.获取类的信息,先创建类的类类型(也可以理解成为class字节码)2.方法反射的基本操作,以及通过反射深入理解泛型 实例如下:package MethodMessage;import java.lang.reflect.Constructor;import java.lang.reflect
2015-11-25 20:16:22
415
原创 java使用监听器实现对在线用户的统计
主要功能:统计当前连接客服端的数目以及客服端的信息实现方法:使用了两个监听器,一个request用户请求的监听,用于获取用户的信息,一个HttpSession监听,则统计用户的数量request监听器代码如下:package Litener;import java.text.SimpleDateFormat;import java.util.ArrayList;import ja
2015-11-24 11:20:41
1368
原创 java过滤器---用户登陆校验的简单实例
核心功能:对于用户的访问进行校验,看用户是否已经登陆1.登陆界面代码如下:<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>Insert title hereServlet/LoginServlet" method="post">
2015-11-22 22:04:01
5131
原创 java过滤器---一异步处理
过滤器代码如下:package Filter;import java.io.IOException;import javax.servlet.DispatcherType;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import ja
2015-11-22 14:37:41
1875
原创 Jdbc练习基础小项目--对个人信息的展示以及增删改查--mvc架构
mvc架构:数据库》》》》创建数据库的映射》》》模型层》》》》控制层》》》》视图层(控制台)第一步:在数据库中创建一个个人信息表,此步省略 第二步:创建数据库的映射,代码如下:public class god { private int id; private String user_name; private int sex; private int age
2015-11-07 19:10:44
939
原创 java--基于UDP的多线程通信
服务端代码:public class UDPServer { public static void main(String[] args) throws Exception{ InetAddress in= InetAddress.getLocalHost(); //1.创建一个DatagramSocket实例 DatagramSocket socket= new D
2015-10-19 12:51:33
1461
原创 java--通过socket和多线程进行多个客服端与服务器的简单通讯--基于tcp
线程处理类代码:public class ServerThread extends Thread { Socket socket = null; public ServerThread(Socket socket) { this.socket = socket; } // 重写run方法 public void run() { try{ // 接收来自客服端的数据
2015-10-19 09:10:19
760
原创 java--通过JDOM方式生成xml文件简单实例
方法如下:public static void createRss() throws Exception{//第一步先创建一个跟节点Element rss=new Element("rss");//设置根节点的属性及其属性值rss.setAttribute("version", "2.0");//先生成一个Document对象Document document
2015-10-18 11:34:26
1006
原创 java--通过DOM4J方式生成rss文件简单实例
生成方法如下:public static void createRss() throws Exception{ //先创建一个Document对象 Document document= DocumentHelper.createDocument(); //添加一个跟节点 Element rss=document.addElement("rss"); //向根节点中添加
2015-10-18 10:33:21
578
原创 java--通过sax方式解析xml文件的简单实例
1.重写的继承自DefaultHandler的方法,部分代码如下:@Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // TODO Auto-generated method stub
2015-10-18 09:36:25
1338
原创 java--通过DOM方式创建xml文件
方法如下: //创建xml的方法public static void createxml() throws Exception{DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();DocumentBuilder db=dbf.newDocumentBuilder();Document docume
2015-10-17 09:06:03
2226
原创 JAVA--通过DOM4J的方式读取xml文件简单实例
代码如下:package com.xml.dom4j;import java.io.File;import java.util.Iterator;import java.util.List;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j
2015-10-15 20:57:38
447
原创 java--通过JDBC方式读取xml文件简单实例
java--通过JDBC方式读取xml文件简单实例代码如下:package com.xml.JDOM;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.List;i
2015-10-15 16:33:21
1239
原创 javaIO--通过SAX方式解析xml文件简例
//先创建的xml文件 三体 刘慈欣 2014 无情剑 古龙 1995 //主类的执行代码package com.xml;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;imp
2015-10-14 11:51:18
282
原创 java--通过DOM方式对xml文件进行读取的简单实例
代码如下:package TestDemo;import javax.naming.NameNotFoundException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org
2015-10-13 18:08:33
364
原创 java--对象自定义序列化简单应用,用于性能的优化
代码如下,先是Students类:package TestDemo;import java.io.Serializable;import java.util.ArrayList;public class Students implements java.io.Serializable { private String number; private String name;
2015-10-12 22:59:35
448
原创 Java读取本地文件的两种方法及其区别
代码如下:package TestDemo;import java.io.File;import java.io.FileInputStream;import java.io.IOException;//批量读取public class InputDemo1 { //数组必须足够大 public static void p1(String fileName) t
2015-10-11 17:57:02
898
原创 java遍历文件夹详解
代码如下:import java.io.File;public class FileList { //遍历文件夹,此方法只能不能遍历文件夹下的文件夹 /* public static void listFile(File dir){ if(dir.exists()){ String[] files=dir.list(); for(String str:f
2015-10-10 17:18:18
302
原创 java之文件的编码详解
代码如下:public class EncodeDemo1 { public static void main(String[] args) throws Exception{ String str= "六爷ABC"; //系统默认的编码,gbk编码,汉子占两个字节,英文占一个字节 byte[] byte1= str.getBytes(); for(
2015-10-10 08:51:37
331
原创 JDBC--编程之事务处理--回滚的简单实例
代码如下:import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class JdbcThings { //获取数据库连接的方法 public static Connection getCo
2015-10-08 18:44:39
483
原创 Jdbc--实现对数据库的查询,更改,删除,添加等方法
1.先新建一个数据库,代码如下:CREATE TABLE user_t ( id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL DEFAULT '', password VARCHAR(50) NOT NULL DEFAULT '', email VARCHAR(50) N
2015-10-08 16:59:37
2379
原创 JDBC--最简单的java连接数据库的小程序
数据库SQL代码:CREATE TABLE user_t ( id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL DEFAULT '', password VARCHAR(50) NOT NULL DEFAULT '', email VARCHAR(50) NOT NU
2015-10-07 21:38:44
4748
原创 通过Servlet实现用户登录
1.用户登录界面<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>Insert title here 使用Servlet实现用户登陆 用户名: 密码:
2015-09-30 14:27:11
1186
原创 用Servlet处理表单提交的数据,然后再jsp页面中显示
第一个页面,用户表单界面<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>Insert title here登陆界面 用户名: 密码:
2015-09-29 19:58:06
12584
2
原创 用户登录中Cookie的简单应用
总共分为三个界面,第一个界面:登录界面<%@ page language="java" contentType="text/html; charset=utf-8" import="java.net.*" pageEncoding="utf-8"%>Insert title here 用户登录界面<% request.setCharact
2015-09-25 11:42:12
395
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人