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的功能还在丰富中,以后的功能会越来越多:
相关推荐
sumk(移动互联网版SSH框架)本次更新内容如下:增加RawDB和NamedDB两种数据库操作方式,以此作为sumk-orm的补充。至此,sumk-db彻底与mybatis分离了。添加插件机制(实现Plugin接口,并用@Bean注解)。在IOC组装...
基于Sumk和Apollo框架的配置管理系统 项目简介 本项目是一个基于Sumk和Apollo框架的配置管理系统,旨在整合Sumk和Apollo的配置管理功能,提供灵活、高效的配置管理解决方案。通过本系统,用户可以方便地管理应用...
sumk的定位是为互联网公司提供一个开发速度快、又能很容易进行横向扩展的高性能框架。 同时具备接口交互(RPC和HTTP)、数据缓存、读写分离、负载均衡、故障转移、异常处理等功能。一站式解决互联网公司面临的...
`main()`函数是程序的入口点,它定义了7个整型变量:`i`, `j`, `k`, `n`, `sumi`, `sumj`, 和 `sumk`。`i`, `j`, `k`用于存储数字的百位、十位和个位,而`sumi`, `sumj`, `sumk`用于存储各自立方的和。 `for`循环...
基于slf4j标准的日志管理系统 项目简介 本项目是一个基于slf4j标准的日志管理系统,名为sumklog。它支持日志的控制台输出和文件格式输出,能够记录用户自定义... 日志级别配置sumk.log.levelinfo,XX:debug,X.X:error
本题是一道结果填空的题,要求计算小蓝手中有 K 种不同面值的硬币,并且第 i 种硬币的个数为 sumi,求 max{sum1, sum2, · · · , sumK} 的值。 本题考察了 Python 编程语言中的数学运算和逻辑思维能力。 知识点:...
小蓝想要使得 max{sum1, sum2, · · · , sumK} 的值达到最大,请你帮他计算这个值最大是多少。 试题 C:松散子序列 * 知识点:字符串处理、动态规划 * 题目要求:求给定字符串 s 的松散子序列中的最大价值。松散...
CREATE MATERIALIZED VIEW k1_k2_sumk3 AS SELECT k1, k2, SUM(k3) FROM duplicate_table GROUP BY k1, k2; ``` 索引 Doris 的索引是一种根据给定前缀列,快速查询数据的索引方式。前缀索引的原理是将一行数据的前 ...
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...