`
youtl
  • 浏览: 12368 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

互联网框架sumk

 
阅读更多

SUMK是本来开发的一款互联网框架。目标是为大家提供一款易开发、高性能的框架。减轻广大码农的工作量。项目地址是:https://www.oschina.net/p/sumk

主要模块如下(除此之外还有很多小功能):

  • IOC:@Web对类进行注解,@Inject进行注入。支持数组、集合等
  • ORM:跟redis缓存的原生集合,有效保护数据库rpc
  • 事务:使用@Box进行事务声明。支持多数据源,支持读写分离
  • HTTP:只要在一个方法上使用@Web注解,就能提供http访问功能,内置加密、签名等功能。使用@Param可以对参数进行简单的校验
  • RPC: 只要在一个方法上使用@Soa注解,就能提供rpc访问功能
 //数据库事务及ORM的例子   
    @Box  //@Box表示启用sumkDB的事务管理,类似于spring的@Transaction。通过dbName可以设置不同的数据源
    public void test() {
        DemoUser user = new DemoUser();
        user.setAge(30);
        user.setName("张三");
        user.setLastUpdate(new Date());

        DB.insert(user).execute(); //插入对象

        //多条件查询
        List list=DB.select().tableClass(DemoUser.class)
                .lessThan("lastupdate", new Date())
                .orderByAsc("lastupdate")
                .offset(10)
                .limit(10)
                .resultHandler(MapResultHandler.handler)
                .queryList();

        // RawDB使用的是原生的sql,后面跟的是要注入的参数。参数个数与sql中的?的个数一致
        RawDB.list("select * from demouser where name=? and age=?", "登陆",12);

        //NamedDB类似于mybatis,目前只支持#{}方式,不支持等标签。
        NamedDB.count("select count(1) from demouser where name=#{name}", SBuilder.map("name", "登陆").toMap());

    }

 

//RPC的例子

//服务器端:
@Soa //只需要这个注解,就能接收RPC请求,默认接口名是 appId.小写的类名.小写的方法名
public List echo(String echo,List names){
    List list=new ArrayList();
    for(String name:names){
        list.add(echo+" "+name);
    }
    return list;
}

//客户端调用:
Rpc.init(); //或者在app.properties里配置soa.client.start=1

List names=Arrays.asList("游夏","游侠");
String echo=",how are you";
//返回是json格式。接口名的格式是包名的最后一个单词+类名+方法名
String result=Rpc.call("demo.EchoAction.echo", echo,names);

 

//http的例子
   @Web   //只需要这个注解就表示可以接受http请求
    public List echo(String echo,List names){
        List list=new ArrayList();
        for(String name:names){
            list.add(echo+" "+name);
        }
        return list;
    }

 

目前的架构图如下,sumk的功能还在丰富中,以后的功能会越来越多:

 

  • 大小: 8.5 KB
0
1
分享到:
评论

相关推荐

    sumk(移动互联网版SSH框架) v1.6.4

    sumk(移动互联网版SSH框架)本次更新内容如下:增加RawDB和NamedDB两种数据库操作方式,以此作为sumk-orm的补充。至此,sumk-db彻底与mybatis分离了。添加插件机制(实现Plugin接口,并用@Bean注解)。在IOC组装...

    基于Sumk和Apollo框架的配置管理系统.zip

    基于Sumk和Apollo框架的配置管理系统 项目简介 本项目是一个基于Sumk和Apollo框架的配置管理系统,旨在整合Sumk和Apollo的配置管理功能,提供灵活、高效的配置管理解决方案。通过本系统,用户可以方便地管理应用...

    sumk:sumk的定位是为互联网公司提供一个快速开发、接口交互(RPC和HTTP)、数据缓存、读写分离、负载均衡、故障转移的框架。一站式解决互联网公司面临的常见问题

      sumk的定位是为互联网公司提供一个开发速度快、又能很容易进行横向扩展的高性能框架。 同时具备接口交互(RPC和HTTP)、数据缓存、读写分离、负载均衡、故障转移、异常处理等功能。一站式解决互联网公司面临的...

    C语言求“水仙花”数(详细)

    `main()`函数是程序的入口点,它定义了7个整型变量:`i`, `j`, `k`, `n`, `sumi`, `sumj`, 和 `sumk`。`i`, `j`, `k`用于存储数字的百位、十位和个位,而`sumi`, `sumj`, `sumk`用于存储各自立方的和。 `for`循环...

    基于slf4j标准的日志管理系统.zip

    基于slf4j标准的日志管理系统 项目简介 本项目是一个基于slf4j标准的日志管理系统,名为sumklog。它支持日志的控制台输出和文件格式输出,能够记录用户自定义... 日志级别配置sumk.log.levelinfo,XX:debug,X.X:error

    2023届蓝桥杯试题【pythonB组】

    本题是一道结果填空的题,要求计算小蓝手中有 K 种不同面值的硬币,并且第 i 种硬币的个数为 sumi,求 max{sum1, sum2, · · · , sumK} 的值。 本题考察了 Python 编程语言中的数学运算和逻辑思维能力。 知识点:...

    第十四届蓝桥杯PythonB组原题

    小蓝想要使得 max{sum1, sum2, · · · , sumK} 的值达到最大,请你帮他计算这个值最大是多少。 试题 C:松散子序列 * 知识点:字符串处理、动态规划 * 题目要求:求给定字符串 s 的松散子序列中的最大价值。松散...

    1-5+Doris物化视图、索引的典型应用案例.pdf

    CREATE MATERIALIZED VIEW k1_k2_sumk3 AS SELECT k1, k2, SUM(k3) FROM duplicate_table GROUP BY k1, k2; ``` 索引 Doris 的索引是一种根据给定前缀列,快速查询数据的索引方式。前缀索引的原理是将一行数据的前 ...

    python机器人行走步数问题的解决

    sumK = self.getDigitSum(rows) + self.getDigitSum(cols) if sumK > K: return False else: return True # 判断当前位置是否可以走 def PD_K1(self, i, j, k): index = map(str, [i, j]) sum_ij = 0 for...

Global site tag (gtag.js) - Google Analytics