net.sz.framework 框架 轻松搭建服务---让你更专注逻辑功能---初探

前言

在之前的文章中,讲解过 threadmodel,socket tcp ,socket http,log,astart ,scripts;

都是分片讲解,从今天开始,将带大家,一窥 net.sz.framework 框架;

net.sz.framework 框架分为java版本和C#.net 版本,两种语言版本保持高一致性;

net.sz.framework 能做什么呢?

net.sz.framework 是经过多年实践和研究,包括在线项目验证的底层框架,致力于解决框架问题;

让你更轻松,愉快,快捷,方便的开发自己的服务器(无论是游戏,微服务,webapi,数据中心,中转中心,数据集成中心,im服务器等);

让你轻松处理多线程,线程池,线程控制,无需过多考虑多线程的线程安全;

让你无需过多考虑socket传输问题,socket粘包,分包,分包一切;

让你轻松搭建实现基于 tcp协议 服务,基于 http协议 服务;

让你轻松在程序内部实现任意定时器,任意定时触发器;

让你轻松把 .java 和 .cs 的文件作为脚本使用还原你熟悉的脚本无需在去学习其他脚本语言;

让你轻松处理数据库 mysql , sqlite(可继续扩展其他数据源),数据存储,读取的快捷方式;

让你轻松解决高并发文件日志存储结构,记录完整日志数据;

日志处理如果默认参数有修改可以直接调用属性设置也可以用配置文件进行修改

需要在项目其他源根目录加入文件szlogger.ini

 1 ########## 日志信息配置 ##########
 2 # 日志级别  不区分大小写  debug:调试信息  info:普通信息   WARN:警告信息  ERROR:错误信息  FATAL:严重错误信息
 3 LOG_LEVEL = debug
 4 # 是否输出到控制台(默认为false)
 5 CONSOLE_PRINT = true
 6 # 是否输出到文件(默认为true)
 7 CONSOLE_FILE = true
 8 # 是否输出到文件(默认为true)
 9 CONSOLE_FILE_BUFFER = true
10 # 日志文件存放路径
11 LOG_PATH =../log/sz.log

s

Holle world

首先打开NetBeans工具

新建项目 net.sz.blog.test

然后我们再按照同样的方式新建 项目net.sz.blog.test-scipts

切记脚本项目的项目名字是主项目名字+ (-scripts);读取脚本文件的约定;

项目创建完成后,我们调用方式,需要处理的是添加引用;根据自己需求,加入框架库引用;

主项目和脚本项目目录结构,脚本项目依赖于主项目

本次重点讲解实现脚本和定时器任务;

我们现在主项目下面建立 main 包在main包下面建立iscript包

我们建立主函数脚本接口

 1 package net.sz.blog.test.main.iscript;
 2
 3 import net.sz.framework.scripts.IInitBaseScript;
 4
 5 /**
 6  * 主脚本
 7  * <br>
 8  * author 失足程序员<br>
 9  * blog http://www.cnblogs.com/ty408/<br>
10  * mail [email protected]<br>
11  * phone 13882122019<br>
12  */
13 public interface IAppManagerScript extends IInitBaseScript {
14
15     /*程序启动完成后调用脚本函数*/
16     void startEnd();
17
18     /*需要停止服务器的时候调用的脚本*/
19     void stop();
20 }

我们在main包下面建立主类Test_App_Manager

 1 package net.sz.blog.test.main;
 2
 3 import java.util.ArrayList;
 4 import net.sz.blog.test.main.iscript.IAppManagerScript;
 5 import net.sz.framework.scripts.manager.ScriptManager;
 6 import net.sz.framework.szlog.SzLogger;
 7
 8 /**
 9  *
10  * <br>
11  * author 失足程序员<br>
12  * blog http://www.cnblogs.com/ty408/<br>
13  * mail [email protected]<br>
14  * phone 13882122019<br>
15  */
16 public class Test_App_Manager {
17
18     private static SzLogger log = SzLogger.getLogger();
19     /*单例脚本,脚本反向注册,而非集合调用*/
20     private static IAppManagerScript iAppManagerScript = null;
21
22     public static IAppManagerScript getiAppManagerScript() {
23         return iAppManagerScript;
24     }
25
26     public static void setiAppManagerScript(IAppManagerScript iAppManagerScript) {
27         Test_App_Manager.iAppManagerScript = iAppManagerScript;
28     }
29
30     public static void main(String[] args) {
31
32         /*加载所有脚本文件,默认加载项目路径 -scripts 文件下面所有问题*/
33         ArrayList<String> loadScripts = ScriptManager.getInstance().reload();
34         String join = String.join(",", loadScripts);
35         log.error("脚本加载结果:" + join);
36
37         if (iAppManagerScript != null) {
38             /*调用启动脚本*/
39             iAppManagerScript.startEnd();
40         }
41
42     }
43 }

我们在主类中添加对主项目启动函数脚本接口的引用,等待加载脚本的时候注入;

我们在脚本项目下面建立main包添加AppManagerScript脚本文件

 1 package net.sz.blog.test.scripts.main;
 2
 3 import net.sz.blog.test.main.Test_App_Manager;
 4 import net.sz.blog.test.main.iscript.IAppManagerScript;
 5 import net.sz.framework.szlog.SzLogger;
 6
 7 /**
 8  *
 9  * <br>
10  * author 失足程序员<br>
11  * blog http://www.cnblogs.com/ty408/<br>
12  * mail [email protected]<br>
13  * phone 13882122019<br>
14  */
15 public class AppManagerScript implements IAppManagerScript {
16
17     private static SzLogger log = SzLogger.getLogger();
18
19     @Override
20     public void _init() {
21         /*把脚本反向注册回主项目函数*/
22         Test_App_Manager.setiAppManagerScript(this);
23     }
24
25     @Override
26     public void startEnd() {
27         log.error("主项目单例模式脚本调用函数执行");
28         /* holle world! 放在脚本打印 */
29         log.error("holle world!");
30     }
31
32     @Override
33     public void stop() {
34     }
35
36 }

顺利完成了脚本的注册,输出holle world

定时器任务实现

在主项目下面和main包同级别下建立timer包

建立文件ServerInfoTimer 每一秒钟执行 需要手动注册的定时器任务执行;

我们暂时加入公共线程执行的定时器

 1 package net.sz.blog.test.timer;
 2
 3 import net.sz.framework.szlog.SzLogger;
 4 import net.sz.framework.szthread.TimerTaskModel;
 5
 6 /**
 7  *
 8  * <br>
 9  * author 失足程序员<br>
10  * blog http://www.cnblogs.com/ty408/<br>
11  * mail [email protected]<br>
12  * phone 13882122019<br>
13  */
14 public class ServerInfoTimer extends TimerTaskModel {
15
16     private static SzLogger log = SzLogger.getLogger();
17
18     public ServerInfoTimer() {
19         super(1000);/*一秒钟无限执行*/
20     }
21
22     @Override
23     public void run() {
24         log.error("我是主项目里面执行定时器");
25     }
26
27 }

接下来我们在脚本项目中依然是main同级别建立timer包

建立TestTimerScript脚本文件,这里的定时器依然是每一秒钟执行,但是是自动执行的无需线程注册;

 1 package net.sz.blog.test.scripts.timer;
 2
 3 import net.sz.framework.szlog.SzLogger;
 4 import net.sz.framework.szthread.timer.iscript.ISecondsEventTimerScript;
 5
 6 /**
 7  *
 8  * <br>
 9  * author 失足程序员<br>
10  * blog http://www.cnblogs.com/ty408/<br>
11  * mail [email protected]<br>
12  * phone 13882122019<br>
13  */
14 public class TestTimerScript implements ISecondsEventTimerScript {
15
16     private static SzLogger log = SzLogger.getLogger();
17
18     /*自动调用*/
19     @Override
20     public void run(int sec) {
21         log.error("我是脚本里面执行定时器");
22     }
23
24 }

我们在主函数main方法中加入ServerInfoTimer 定时器的手动注册代码

        /*主动注册,选择线程执行的定时器任务*/
        ThreadPool.addTimerTask(ThreadPool.GlobalThread, new ServerInfoTimer());

        /*
        值的注意,服务器程序准备好工作后,我们必须设置这个参数
        这时因为本线程池线程分为 sys线程 和 user线程;
        没有这个标识,user线程是不会执行定时器操作的;
        */
        ThreadPool.setStarEnd(true);

看看效果先

两种定时任务执行;值的注意的是在脚本的定时器任务不能执行长时间任务,这样会占用其他定时器任务的执行时间;一般作为定时触发器;

到这里 net.sz.framework java 版本基础使用就算完成

C#版本的代码还需要进一步整合,所以就暂时不放出来;

时间: 2024-11-05 18:49:05

net.sz.framework 框架 轻松搭建服务---让你更专注逻辑功能---初探的相关文章

net.sz.framework 框架 轻松搭建数据服务中心----读写分离数据一致性,滑动缓存

前言 前文讲述了net.sz.framework 框架的基础实现功能,本文主讲 net.sz.framework.db 和 net.sz.framework.szthread; net.sz.framework.db 是 net.sz.framework 底层框架下的orm框架,仿照翻译了hibernate实现功能,虽然不足hibernate强大:但在于其功能实现单一高效和高可控性: net.sz.framework.szthread 是 net.sz.framework 底层框架下的线程控制中

使用Apache MINA框架搭建服务端

使用MINA框架搭建服务端步骤: 1.定义一个启动服务的类MinaServer,并实现接口ServletContextListener 2.定义一个处理业务逻辑的类MinaServerHandler,并继承类IoHandlerAdapter 类MinaServer代码例如以下: import java.net.InetSocketAddress; import javax.servlet.ServletContextEvent; import javax.servlet.ServletConte

Python web 框架之 Django 基础搭建服务

1. 需要安装 Python 和 Django 环境,Python 环境的安装我就不在多说了 2. 安装框架 Django Django 安装,推荐先装个 pip吧,easyinstall也可以,然后终端下输入: pip install Django 本人使用的安装方法是 whl 安装,推荐一个 wheel 安装库:https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml python wheel安装库 直接打开以上网址 Ctrl + F 搜索 Djang

【Hibernate】hibernate框架的搭建

1, Hibernate 是什么 Hibernate框架简化了java应用程序与数据库交互的开发. Hibernate是一个开源,轻量级的ORM(对象关系映射)工具. 2,Hibernate框架的优点 Hibernate框架有很多优点.它们分别如下: 开源和轻量级: Hibernate框架是根据LGPL许可证和轻量级的开源工具. 快速性能: Hibernate框架的性能很快,因为缓存在Hibernate框架内部使用. hibernate框架中有两种类型的缓存:一级缓存和二级缓存.一级缓存默认是启

安卓微博客户端 第二天 系统主框架的搭建

从上次更博到今天过了三天了,并不是因为偷懒了,而是这一课的内容对于基础较差的我来说信息量有点过于大了,隔了这么久才勉勉强强把它吃掉.那么废话不多说,直接进入今天的内容吧. 首先先看一下到目前为止的UI效果图: 除了下面多了一个“Welcome to Sina”的TextView,也没什么变化呀.哈哈,那你就错了,上次我们这两个按钮是点不动的,这次都有各自的功能了,先输入用户名和密码点下登录试试. 嗯,各位没有看错,就是将下面的TextView内容改变了.哈哈,可能有人要骂娘了,这不是小学生都会改

eclipse中SSH三大框架环境搭建&lt;三&gt;

相关链接: eclipse中SSH三大框架环境搭建<一> eclipse中SSH三大框架环境搭建<二> 引言:通过上两篇文章我们已经可以掌握struts2和spring的环境的搭建以及简单使用,但是在访问数据库层面使用的是传统的JDBC.在我们项目开发中使用JDBC确实是不太理想的,所以今天我给大家来讲解一下目前行业中比较流行的持久层框架——hibernate. 第1步:我们依旧需要引入hibernate的jar包 找到hibernate解压好的文件目录,在该目录下的lib目录下有

Hush Framework框架配置(续) 转自《Android和PHP最佳实践》官方站

图书资源下载 Xampp 开发环境下载:http://pan.baidu.com/share/link?shareid=531771&uk=773037279 微博实例完整源码包下载:http://pan.baidu.com/share/link?shareid=531769&uk=773037279 Hush Framework 框架源码及相关资源下载:http://code.google.com/p/hush-framework/downloads/list 其他 Android 客户

Robot framework + appium环境搭建

Robot framework+appium环境搭建 首先梳理一下要用到的工具和安装包: 1. Android + JAVA. jdk : http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html 安装jdk并配置环境变量. Android sdk: http://sdk.android-studio.org/ 安装并配置好环境变量.Tools列表前三个必装.谷歌服务器略坑你懂的.出去还是切换国内镜

Hush Framework框架配置(转)

在写这篇文章的时候,楼主已经饿的不行了,因为我从3点开始就在折腾Hush Framework,走了很多弯路,打铁要趁热,先把基本的过程记录下来,留待以后翻阅,同时记录其中容易走弯路的地方,特别是对于一个像我这样的newer,搞起来真的是巨折腾人的. 既然写到要配置Hush Framework框架,那么对于它的理解,我在这里就不再多说,总之,是一个建立在Smarty和Zend Framework的PHP开发框架,综合了两者的有点,摒弃了Zend Framework的笨重. 首先得学会在apache