自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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源码阅读指南

2025-01-26 13:33:40 302

原创 skynet 源码阅读 -- 「揭秘 Skynet 网络通讯」

本文将聚焦 Skynet 网络通讯的核心线程 thread_socket,并深入探讨 skynet_socket_poll、forward_message、socket_server_poll 等关键函数如何协作,实现高效的网络数据收发与消息分发。

2025-01-26 12:24:22 1229

原创 skynet 源码阅读 -- Skynet 消息队列的实现与消息发送流程

Skynet 消息队列的实现与消息发送流程

2025-01-23 18:10:23 798

原创 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

原创 如和学习java并发编程

学习java并发必读

2017-01-01 12:41:41 1334

原创 泛型实现堆栈

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

lucence jar.4.6.0版本所需jar包集合

lucence jar.4.6.0版本所需jar包集合

2015-11-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除