首页 文章 精选 留言 我的

精选列表

搜索[腾讯轻量云AI创想家],共10005篇文章
优秀的个人博客,低调大师

Spring Boot & Cloud 替代框架 Solon 1.4.1 发布

Solon 是一个微型的Java开发框架。强调,克制 + 简洁 + 开放的原则;力求,更小、更快、更自由的体验。支持:RPC、REST API、MVC、Micro service、WebSocket、Socket 等多种开发模式。 Solon Cloud 是一系列的接口标准和配置规范,算是 Solon 的分布式开发套件方案。 快速了解Solon的材料: 《Solon 特性简集,相较于 Springboot 有什么区别?》 《Solon Cloud 分布式服务开发套件清单,感觉受与 Spring Cloud 的不同》 《Solon 的想法与架构笔记》 《Solon 生态插件清单》 《Solon 框架入门》 所谓更小: 内核0.1m,最小的接口开发单位0.2m(相较于 Dubbo、Springboot 的依赖包,小到可以乎略不计) 所谓更快: 本机http helloworld测试,Qps可达12万之多。可参考:《helloworld_wrk_test》 所谓更自由:(代码操控自由) // 除了注解模式之外,还可以按需手动 // //手动获取配置(Props 为 Properties 增强版) Props db = Solon.cfg().getProp("db"); //手动获取容器里的Bean UserService userService = Aop.get(UserService.class); //手动监听http post请求 Solon.global().post("/user/update", x-> userService.updateById(x.paramMap())); //手动添加个RPC服务 Solon.global().add("/rpc/", HelloService.class, true); //手动获取一个RPC服务消费端 HelloService helloService = Nami.builder().create(HelloService.class); //手动为容器添加组件 Aop.wrapAndPut(DemoService.class); 本次版本主要变化: 1、发布新的家簇成员表 2、强化 Solon Remoting 概念 [ 增加 @Remoting 注解,替代旧的 @Component(remoting=true) ] //服务端代码1 - 使用tpc通信 @Socket @Mapping("/demo/socket") @Remoting public class DemoRemoting1 implements HelloService{ public String hello(String name){ return "Hello " + name; } } //服务端代码2 - 使用http通信 @Http @Mapping("/demo/http") @Remoting public class DemoRemoting2 implements HelloService{ public String hello(String name){ return "Hello " + name; } } //客户端代码1 @NamiClient(name="demo", path="/demo/socket") HelloService helloService; String tmp = helloService.hello("noear"); 3、增加 @ClientEndpoint autoReconnect 属性 //autoReconnect 默认为 true @ClientEndpoint(uri = "tcp://localhost:28080", heartbeatRate = 5, autoReconnect = false) public class ClientListener implements Listener { @Override public void onMessage(Session session, Message message) throws IOException { System.out.println(message.bodyAsString()); } } 相关资料可百度:solon socketd 4、增强 solon-springboot-starter,可将 solon 注入器应用到 springboot bean 当 spring boot 项目迁移到 solon 时,过渡期可以使用这个组件进行混合开发,示例: //Spring bean @RestController public class DemoController{ //Solon inject @CloudConfig("user.name") String userName; //Solon inject @NamiClient HelloService helloService; } 5、取消 nami-springboot-starter 组件 因 solon-springboot-starter 的增强,这个组件没必要了。 6、取消@EnabelNamiClients、@EnableSolonCloud、@EnableSolon注解 因 solon-springboot-starter 的增强,这三个注解也没怵要了;所有 Solon 相关的能力,直接可用。 7、取消 @Component remoting 属性 由新@Remoting替代 附:项目地址 Gitee:https://gitee.com/noear/solon Github:https://github.com/noear/solon 附:入门示例 Solon 入门教程示例:https://gitee.com/noear/solon_demo Solon Rpc 入门教程示例:https://gitee.com/noear/solon_rpc_demo Solon Cloud 入门教程示例:https://gitee.com/noear/solon_cloud_demo Solon 进阶教程示例:https://gitee.com/noear/solon_advance_demo

优秀的个人博客,低调大师

Spring Boot & Cloud 替代框架 Solon 1.3.37 发布

Solon 是一个微型的Java开发框架。强调,克制 + 简洁 + 开放的原则;力求,更小、更快、更自由的体验。支持:RPC、REST API、MVC、Micro service、WebSocket、Socket 等多种开发模式。 Solon Cloud 是一系列的接口标准和配置规范,算是 Solon 的分布式开发套件方案。 快速了解Solon的材料: 《Solon 特性简集,相较于 Springboot 有什么区别?》 《Solon Cloud 分布式服务开发套件清单,感觉受与 Spring Cloud 的不同》 《Solon 的想法与架构笔记》 《Solon 框架入门》 所谓更小: 内核0.1m,最小的接口开发单位0.2m(相较于 Dubbo、Springboot 的依赖包,小到可以乎略不计) 所谓更快: 本机http helloworld测试,Qps可达12万之多。可参考:《helloworld_wrk_test》 所谓更自由:(代码操控自由) // 除了注解模式之外,还可以按需手动 // //手动获取配置(Props 为 Properties 增强版) Props db = Solon.cfg().getProp("db"); //手动获取容器里的Bean UserService userService = Aop.get(UserService.class); //手动监听http post请求 Solon.global().post("/user/update", x-> userService.updateById(x.paramMap())); //手动添加个RPC服务 Solon.global().add("/rpc/", HelloService.class, true); //手动获取一个RPC服务消费端 HelloService helloService = Nami.builder().create(HelloService.class); //手动为容器添加组件 Aop.wrapAndPut(DemoService.class); 本次版本主要变化: 1、增加 solon.extend.jsr303 组件,支持 jsr303 bean验证能力 Solon 原有的验证体系是基于 Context 的,基于方法或参数的验证。现在算是补齐了 Bean 或 Model 的验证能力。 @Valid @Controller public class ValidController { //这是基于 context 的验证体系(可以批量验证参数) @NotZero({"val1", "val2"}) @Mapping("nzero") public String nzero(int val1, int val2) { return "OK"; } //这也是基于 context 的验证体系 @Mapping("size") public String size(@Length(min = 2, max = 5, message = "测试") String val1, @Length(min = 2, max = 5, message = "测试") String val2) { return "OK"; } //这是基于 bean 的验证体系(@Validated,这个注解加上代表要验证这个模型参数) @Mapping("bean") public String bean(@Validated ValidModel model) { return "OK"; } } //申明可验证的模型 @Data public class ValidModel { @NotBlank(message = "手机号不能为空") private String mobile; @NotBlank(message = "密码不能为空") private String password; } 2、增加 solon.cache.spymemcached 分布式缓存组件,提供 solon cache 的实现支持 配置:(Solon 的缓存注解,默认是不需要配置缓存服务的。默认会提供本地缓存服务) solon.app: name: demoapp group: demo cache1: server: memcached.water.io:11211 #具体需要哪些配置,可以看下 MemCacheService 的类实现 user: memcached 代码: //组件配置 @Configuration public class Config { @Bean public CacheService cache(@Inject("${cache1}") MemCacheService cache){ return cache; } } //使用 @Controller public class CacheController { /** * 执行结果缓存10秒,并添加 test_${label} 和 test1 标签 * */ @Cache(tags = "test_${label},test1" , seconds = 60) @Mapping("/cache/") public Date test(int label) { return new Date(); } /** * 执行后,清除 标签为 test 的缓存(不过,目前没有 test 的示签...) * */ @CachePut(tags = "test1") @Mapping("/cache/update") public Date update() { return new Date(); } /** * 执行后,清除 标签为 test_${label} 的缓存 * */ @CacheRemove(tags = "test_${label}") @Mapping("/cache/remove") public String remove(int label) { return "清除成功-" + new Date(); } } 3、增加 solon.cache.jedis 分布式缓存组件 使用同上 4、优化 solon.logging 内部结构,扩展更自由 例,配置一个新的日志添加器,指定类名,指定级别: solon.logging.appender: test: class: demo.TestAppender level: TRACE 定义日志添加器: public class TestAppender extends AppenderBase { @Override public void append(LogEvent logEvent) { System.out.println("[Test] " + logEvent.getContent()); } } 附:生态组件清单 Nami 插件(Solon rpc client) 说明 nami插件:: 说明 nami.coder.fastjson 对fastjson的编解码适配 nami.coder.hessian 对hessian的编解码适配 nami.coder.snack3 对snack3的编解码适配 nami.channel.http.okhttp 对okhttp的通道适配 nami.channel.socketd 对socketd的通道适配(适配后,可使用org.noear:solon.sockted.client.* 做为客户端) Solon 插件 说明 boot插件:: 说明 org.noear:solon.boot.jlhttp* boot插件,对jlhttp适配,提供http服务(不自带session state) org.noear:solon.boot.jetty* boot插件,对jetty适配,提供http服务(网友@khb提供) org.noear:solon.extend.jetty.jsp 扩展插件,为jetty添加jsp支持(不建议使用jsp)(网友@khb提供) org.noear:solon.boot.undertow* boot插件,对undertow适配,提供http服务(网友@tyk提供) org.noear:solon.boot.websocket boot插件,对java-websocket适配,提供websocket服务 org.noear:solon.extend.undertow.jsp 扩展插件,为undertow添加jsp支持(不建议使用jsp)(网友@tyk提供) 静态文件支持插件:: 说明 org.noear:solon.extend.staticfiles 扩展插件,添加静态文件支持(监视 resources/static 文件夹) 切面支持插件:: 说明 org.noear:solon.extend.aspect 扩展插件,添加Dao、Service注解支持;进而支持事务和缓存注解 数据操作支持插件:: 说明 org.noear:solon.extend.data 扩展插件,实现事务和缓存的注解支持 验证支持插件:: 说明 org.noear:solon.extend.validation 扩展插件,实现验证的注解支持 Yaml配置支持插件:: 说明 org.noear:solon.extend.properties.yaml 扩展插件,添加yml配置文件支持 Data插件:: 说明 org.noear:solon.extend.data 扩展插件,添加事件(@Tran)、缓存(@Cache)支持 Cloud插件:: 说明 org.noear:solon.cloud 扩展插件, 添加Solon Cloud 的接口定义及配置规范 Validation插件:: 说明 org.noear:solon.extend.validation 扩展插件,添加验证(@Valid)支持 Cache插件:: 说明 org.noear:solon.cache.spymemcached 扩展插件,完成memcached的缓存服务适配 org.noear:solon.solon.cache.jedis 扩展插件,完成redis的缓存服务适配 jsr插件:: 说明 org.noear:solon.extend.jsr303 扩展插件,完成jsr303 bean 验证支持 org.noear:solon.extend.jsr330 扩展插件,完成jsr330 组件与注入支持 跨域插件:: 说明 org.noear:solon.extend.cors 扩展插件,完成web跨域注解支持 Session插件:: 说明(可将boot插件的session state服务,自动换掉) org.noear:solon.extend.sessionstate.jwt 扩展插件,分布式session(基于jwt构建) org.noear:solon.extend.sessionstate.local 扩展插件,本地session org.noear:solon.extend.sessionstate.redis 扩展插件,分布式session(其于redis构建) 日志插件:: 说明 org.noear:solon.logging 扩展插件,添加日志支持 org.noear:solon.logging.impl 扩展插件,添加Slf4j日志支持 序列化插件:: 说明 org.noear:solon.serialization.fastjson* 序列化插件,对fastjson适配,提供json视图输出 或 序列化输出 org.noear:solon.serialization.snack3* 序列化插件,对snack3适配,提供json视图输出 或 序列化输出 org.noear:solon.serialization.hession* 序列化插件,对hession适配,提供hession序列化输出 org.noear:solon.serialization.jackson 序列化插件,对jackson适配,提供json视图输出 或 序列化输出 org.noear:solon.serialization.protostuff 序列化插件,对protostuff适配,提供protostuff视图输出 或 序列化输出 视图插件:: 说明(可置多个视图插件) org.noear:solon.view.freemarker* 视图插件,对freemarker适配,提供html视图输出 org.noear:solon.view.jsp 视图插件,对jsp适配,提供html视图输出 org.noear:solon.view.velocity 视图插件,对velocity适配,提供html视图输出 org.noear:solon.view.thymeleaf 视图插件,对thymeleaf适配,提供html视图输出 org.noear:solon.view.beetl 视图插件,对beetl适配,提供html视图输出 org.noear:solon.view.enjoy 视图插件,对enjoy适配,提供html视图输出 Solon SocketD 插件 说明 SocketD boot插件:: 说明 org.noear:solon.boot.socketd.jdksocket sockted boot插件,对jdksocket适配,提供socketd服务 org.noear:solon.boot.socketd.netty sockted boot插件,对netty适配,提供socketd服务 org.noear:solon.boot.socketd.rsocket sockted boot插件,对rsocket适配,提供socketd服务 org.noear:solon.boot.socketd.smartsocket sockted boot插件,对smart-socket适配,提供socketd服务 org.noear:solon.boot.socketd.websocket sockted boot插件,对websocket适配,提供socketd服务 SocketD client 插件:: 说明 org.noear:solon.sockted 扩展插件,sockted 协议的编解码、会话等基础支持 org.noear:solon.sockted.client.jdksocket 扩展插件,sockted 协议的 jdksocket 客户端适配 org.noear:solon.sockted.client.netty 扩展插件,sockted 协议的 netty 客户端适配 org.noear:solon.sockted.smartsocket 扩展插件,sockted 协议的 smartsocket 客户端适配 org.noear:solon.sockted.websocket 扩展插件,sockted 协议的 websocket 客户端适配 其它扩展插件 说明 org.noear:beetlsql-solon-plugin beetlsql 适配插件 org.noear:mybatis-solon-plugin mybatis 适配插件 org.noear:mybatis-sqlhelper-solon-plugin mybatis-sqlhelper 适配插件 org.noear:weed3-solon-plugin weed3 适配插件 org.noear:cron4j-solon-plugin cron4j 适配插件 org.noear:quartz-solon-plugin quartz 适配插件 org.noear:dubbo-solon-plugin dubbo 适配插件 org.noear:feign-solon-plugin feign 适配插件 org.noear:hasor-solon-plugin hasor 适配插件 org.noear:luffy-solon-plugin luffy 适配插件 org.noear:sureness-solon-plugin sureness 适配插件 org.noear:solon-springboot-starter springboot 适配插件 Solon Cloud 插件 说明 org.noear:consul-solon-plugin consul 适配插件(支持Solon cloud 配置服务、注册与发现服务) org.noear:nacos-solon-plugin nacos 适配插件(支持Solon cloud 配置服务、注册与发现服务) org.noear:zookeeper-solon-plugin zookeeper 适配插件(支持Solon cloud 配置服务、注册与发现服务) org.noear:water-solon-plugin water 适配插件(支持Solon cloud 配置、注册与发现、事件、日志、跟踪、等服务) org.noear:rabbitmq-solon-plugin rabbitmq 适配插件(支持Solon cloud 事件总线服务) org.noear:rocketmq-solon-plugin rocketmq 适配插件(支持Solon cloud 事件总线服务) org.noear:mqtt-solon-plugin mqtt 适配插件(支持Solon cloud 事件总线服务) org.noear:kafka-solon-plugin kafka 适配插件(支持Solon cloud 事件总线服务) org.noear:guava-solon-plugin guava 适配插件(支持Solon cloud 融断服务) org.noear:sentinel-solon-plugin sentinel 适配插件(支持Solon cloud 融断服务) org.noear:semaphore-solon-plugin semaphore 适配插件(支持Solon cloud 融断服务) org.noear:aliyun-oss-solon-plugin aliyun-oss 适配插件(支持Solon cloud 分布式文件服务) org.noear:aws-s3-solon-plugin aws-s3 适配插件(支持Solon cloud 分布式文件服务) org.noear:snowflake-id-solon-plugin snowflake 算法适配插件(支持Solon cloud 分布式ID服务) 附:入门示例 Solon 入门教程示例:https://gitee.com/noear/solon_demo Solon Rpc 入门教程示例:https://gitee.com/noear/solon_rpc_demo Solon Cloud 入门教程示例:https://gitee.com/noear/solon_cloud_demo Solon 进阶教程示例:https://gitee.com/noear/solon_advance_demo

优秀的个人博客,低调大师

Spring Boot & Cloud 替代框架 Solon 1.3.35 发布

Solon 是一个微型的Java开发框架。强调,克制 + 简洁 + 开放的原则;力求,更小、更快、更自由的体验。支持:RPC、REST API、MVC、Micro service、WebSocket、Socket 等多种开发模式。 Solon Cloud 是一系列的接口标准和配置规范。是 Solon 的微服务模式开发套件方案。 替代?还能说些什么异同之处吗? 《Solon 特性简集,相较于 Springboot 有什么区别?》 《Solon Cloud 分布式服务开发套件清单与快速概览》 《Solon 的架构笔记》 所谓更小: 内核0.1m,最小的接口开发单位0.2m(相较于 Dubbo、Springboot 的依赖包,小到可以乎略不计) 所谓更快: 本机http helloworld测试,Qps可达12万之多。可参考:《helloworld_wrk_test》 所谓更自由:(代码操控自由) // 除了注解模式之外,还可以按需手动 // //手动获取配置(Props 为 Properties 增强版) Props db = Solon.cfg().getProp("db"); //手动获取容器里的Bean UserService userService = Aop.get(UserService.class); //手动监听http post请求 Solon.global().post("/user/update", x-> userService.updateById(x.paramMap())); //手动添加个RPC服务 Solon.global().add("/rpc/", HelloService.class, true); //手动获取一个RPC服务消费端 HelloService helloService = Nami.builder().create(HelloService.class); //手动为容器添加组件 Aop.wrapAndPut(DemoService.class); 本次版本主要变化: 1、为REST api增加更友好注解支持(@Get @Post @Delete @Put @Patch 等...) 普通 HTTP api //经典写法 @Mapping("demo00") public String demo00(String name) { return name; } REST api(或强调http method的) //经典写法 @Mapping(value = "demo10", method = MethodType.PUT) public String demo10(String name) { return name; } //新增method注解写法(比经典写法,简洁不少) @Put @Mapping("demo11") public String demo11(String name) { return name; } //经典写法 @Mapping(value = "demo20", method = {MethodType.POST, MethodType.GET}) public String demo20(String name) { return name; } //新增method注解写法(比经典写法,简洁不少) @Post @Get @Mapping("demo21") public String demo21(String name) { return name; } 2、注解 @Inject 增加 required 属性 3、sureness-solon-plugin 权限认证组件(对 sureness 的适配) 4、Solon cloud event 增加 kafka-solon-plugin 适配组件 附:入门示例 Solon 入门教程示例:https://gitee.com/noear/solon_demo Solon Rpc 入门教程示例:https://gitee.com/noear/solon_rpc_demo Solon Cloud 入门教程示例:https://gitee.com/noear/solon_cloud_demo Solon 进阶教程示例:https://gitee.com/noear/solon_advance_demo

优秀的个人博客,低调大师

CleverGo Router —— 、高性能的 Go HTTP Router

CleverGo 一个用 Go 语言编写的轻量级、高性能和功能丰富的 HTTP Web 开发框架。 高性能:参阅基准测试。 反向路由生成:可以通过命名路由或匹配路由生成 URL。 路由组:亦称子路由。 对 RESTful APIs 友好:很容易设计 RESTful APIs 和通过路由组对 APIs 进行版本化。 中间件:可以在路由组或特定路由插入中间件,也支持全局中间件,兼容大部分第三方中间件。 Error Handler:记录错误和格式化错误响应。 Lower is better!

优秀的个人博客,低调大师

Spring Cloud 替代框架 Solon Cloud 1.3.33 发布

Solon 是一个微型的Java开发框架。强调,克制 + 简洁 + 开放的原则;力求,更小、更快、更自由的体验。支持:RPC、REST API、MVC、Micro service、WebSocket、Socket 等多种开发模式。 Solon Cloud 是一系列的接口标准和配置规范。是 Solon 的微服务模式开发套件方案。 替代?还能说些什么异同之处吗? 《Solon 特性简集,相较于 Springboot 有什么区别?》 《Solon Cloud 分布式服务开发套件清单与快速概览》 《Solon 的架构笔记》 所谓更小: 内核0.1m,最小的接口开发单位0.2m(相较于 Dubbo、Springboot 的依赖包,小到可以乎略不计) 所谓更快: 本机http helloworld测试,Qps可达12万之多。可参考:《helloworld_wrk_test》 所谓更自由:(代码操控自由) // 除了注解模式之外,还可以按需手动 // //手动获取配置(Props 为 Properties 增强版) Props db = Solon.cfg().getProp("db"); //手动获取容器里的Bean UserService userService = Aop.get(UserService.class); //手动监听http post请求 Solon.global().post("/user/update", x-> userService.updateById(x.paramMap())); //手动添加个RPC服务 Solon.global().add("/rpc/", HelloService.class, true); //手动获取一个RPC服务消费端 HelloService helloService = Nami.builder().create(HelloService.class); //手动为容器添加组件 Aop.wrapAndPut(DemoService.class); 本次版本主要变化: 1、Solon logging 增加记录器级别控制 例 solon.logging.logger: "org.aaa.*": level: INFO "org.xxx.xxx.yyy": level: INFO 2、Solon cloud 增加 zookeeper-solon-plugin 组件,提供配置与注册服务 配置好后,使用标准的 Solon cloud 注解与接口即可使用。配置示例: solon.cloud.zookeeper: server: "localhost:2181" config: load: "test.properties" #zk日志太猛了,限制一下 solon.logging.logger: "org.apache.zookeeper.*": level: "WARN" 代码使用: @Configuration public class Config { @Bean public DataSource ds(@CloudConfig("${demo.db1}") HikariDataSource ds){ System.out.println(ds.getUsername() + ":" + ds.getJdbcUrl()); return ds; } } //手动获取配置:Config cfg = CloudClient.config().pull(Solon.cfg().appGroup(), "demo.db1"); 3、Solon cloud 增加 snowflake-id-solon-plugin 组件,提供雪花算法ID生成服务 此组件使用应用信息做为 dataId,使用ip:port做为workId。引入包后,可直接通过接口使用 long logId = CloudClient.id().generate(); 附:入门示例 项目地址:https://gitee.com/noear/solon Solon 入门教程示例:https://gitee.com/noear/solon_demo Solon Rpc 入门教程示例:https://gitee.com/noear/solon_rpc_demo Solon Cloud 入门教程示例:https://gitee.com/noear/solon_cloud_demo Solon 进阶教程示例:https://gitee.com/noear/solon_advance_demo

优秀的个人博客,低调大师

Spring Boot 替代框架 Solon 的架构笔记

Solon 是一个微型的Java开发框架。项目从2018年启动以来,参考过大量前人作品;历时两年,4000多次的commit;内核保持0.1m的身材,超高的跑分,良好的使用体验。支持:RPC、REST API、MVC、WebSocket、Socket 等多种开发模式。 Solon 强调:克制 + 简洁 + 开放的原则;力求:更小、更快、更自由的体验。 所谓更小: 内核0.1m,最小开发单位0.2m(相比Dubbo、Springboot项目包,小到可以乎略不计) 所谓更快: 本机helloworld测试,Qps可达12万之多。可参考:《helloworld_wrk_test》 所谓更自由:(代码操控自由) // 除了注解模式之外,还可以按需手动 // //手动获取配置(Props 为 Properties 增强版) Props db = Solon.cfg().getProp("db"); //手动获取容器里的Bean UserService userService = Aop.get(UserService.class); //手动监听http post请求 Solon.global().post("/user/update", x-> userService.updateById(x.paramMap())); //手动添加个RPC服务 Solon.global().add("/rpc/", HelloService.class, true); //手动获取一个RPC服务消费端 HelloService helloService = Nami.builder().create(HelloService.class); 架构笔记: 1、缘起统一的处理架构想法 RPC、Rest api、MVC、SocketD;Http、Socket、WebSocket。不同的架构模式、不同的通讯信号,统一处理......并且小巧 关于HTTP信号提供者,Servlet 或 NoServlet 都可以。如 JlHttp(NoServlet)、Jetty(Servlet)、reactor-netty...... 2、关于应用启动的内在过程 串行的处理过程(含三个事件扩展点 + 两个函数扩展点),代码直接、没有什么模式。易明 3、请求的处理过程透视(由简至敏演化) (a)简版,经典的模型 (b)延展版,也没什么特别 (c)详情版,应该还是熟悉的味道。(Solon的统一处理模型,让Http、Socket、WebSocket 最终回归为熟悉的味道) (d)整体链路版 Solon 的事务、缓存控制是基于 Action interceptor 实现 Solon 的验证器是基于 Action before trigger 实现 4、Ioc & Aop 内部结构透视 附: 项目地址:https://gitee.com/noear/solon

优秀的个人博客,低调大师

CYQ.Data 数据访问层(一) 概述

在很久很久以前。2007年底,我曾发布过CYQ.Data.DLL,那时的学术氛围很浓,评论的也比较重 在那里,我曾做过一些简介与使用方法的帮助 在这个系列中,我将一步一步开源并讲解实现的过程,由于文章进行编辑,日期变了 以前旧文章地址为:http://www.cnblogs.com/cyq1162/archive/2009/11/05/968626.html 这里先简单介绍一下数据访问层的大体结构: 这里先上一张主要的图: 该访问层主要分三类: 一.自定义Table 1.自定义实现轻量级MDataTable,并实现IDataReader接口,以便可以直接绑定到DataGrid,Repeater等控件 主要数据包括 自定义数据单元格:MDataCell 自定义数据数据列集合:MDataColumns 自定义数据行:MDataRecord,继承并实现IDataRecord,以后在控件后台可以实现类型转换,并实现与MDataRow的隐式转换 2.数据主操作MDataRow,实现动态构建数据库表架构,并缓存表架构,同时实现数据的增删改查 MDataResult是枚举,返回为MDataRow操作的结果类型 二.自定义的Sql 1.主要自已简化的SQLHelper,并结构Log记录出错异常 DataType主要是数据库类型和C#类型之间的转换 ProcedureSql主要是一些存储过程,可以实现读取数据库表架构及相应的分页存储过程 OutPutData主要是提供生成数据库的表与视图与字段,会以枚举的形式存在,本数据方问层,会以枚举替代实体类的存在 三,Cache类 主要是缓存相应的表架构 -------------------------------------- 说明,在接下来的讲解实例中,可能涉及到类的更名与移除 并会优化同时也会去掉一些多余的代码与函数 所以,本人会新建一个新的项目,重新写一次最新的项目,并提供下载 关于功能的可能更新,如下面的操作: MDataRow mdr=new MDataRow(Table.Users);//Table.V_Users mdr[Users.UserName].Value='cyq'; mdr.Update("id=1"); mdr.Close(); 在这个示例中,如果Users为数据库,则Users.UserName枚举会直接转成(int)Users.UserName进行索引查询 如果为V_Users或为多表查询的数据,则Users.UserName枚举会转成Users.UserName.ToString()进行遍历查询 1.关于多表查询中,不仅仅限于视图,也支持构建的联合查询表,如: string usersTable="(select u.* from users u left join topic t on u.id=t.uid) v_users"; MDataRow mdr=new MDataRow(usersTable); mdr[Users.UserName].Value='cyq'; mdr.Update("id=1"); mdr.Close(); 版权声明:本文原创发表于博客园,作者为路过秋天,原文链接: http://www.cnblogs.com/cyq1162/archive/2009/11/06/1596424.html

优秀的个人博客,低调大师

dbVisitor 5.4.0 发布,高度兼容 MyBatis 的 ORM 框架

介绍 dbVisitor 是一个全功能数据库访问 ORM 工具,提供对象映射、丰富的类型处理、动态 SQL、存储过程、 内置分页方言 20+、 支持嵌套事务、多数据源、条件构造器、INSERT 策略、多语句 / 多结果。并兼容 Spring 及 MyBatis 用法。 它不依赖任何其它框架,因此可以很方便的和任意一个框架整合在一起使用。 依赖 <dependency> <groupId>net.hasor</groupId> <artifactId>dbvisitor</artifactId> <version>5.4.0</version> </dependency> 不兼容更新​ 新增:SelectKeyHandler 类新增参数标识是 before 调用还是 after 调用 新增:KeySeqHolder 增加 onBefore/onAfter 方法用于标识调用阶段 优化:LambdaTemplate Map 模式下不在依赖任何数据库元信息, 至此 dbVisitor 不会查询任何数据库元信息数据 优化:重写 InsertLambda 的逻辑可以有效处理 Entity 和 Map 两个模式下的差异点 移除:PhoenixDialect 方言 新增​ 新增:@BindTypeHandler 注解方便使用自定义 TypeHandler 新增:URITypeHandler、URLTypeHandler 两个 TypeHandler 及Types.DATALINK 和 Types.ROWID JDBC Type 支持 新增:h2/db2/derby/hive/hsql/impala/informix/sqllite/sqlserver/达梦/虚谷数据的关键字字典文件 新增:mapper 文件级可以配置 useDelimited 属性 新增:lambdaUpdate UpdateExecute 接口中增加一组 Condition 方法 新增:DalRegistry 增加两个 hasScope 方法,用于判断某个 scope 是否存在 新增:Lambda Delete/Insert/Select/Update for Map 支持 MappingOptions选项 优化​ 移除 dbVisitor generate 相关未完成的功能和代码 优化:升级 cobble 包版本为 4.5.4 优化:IncludeRule 逻辑使其拼出的 SQL 不在出现多余的空格 优化:lambdaUpdate/Delete/Query 兼容 tableMapping 没有匹配到任何列的极端情形 优化:Mapping 逻辑减少 TableDefaultInfo 的构建次数 优化:dtd/xsd 验证逻辑调整,entity 的 table 属性是可选的,如果省略 table 配置则实体类必须标有 @Table 注解 优化:针对 H2 2.2.220 版本的兼容性问题 优化:单元测试代码,提升覆盖率/修复测试Case问题,目前 834 个单元测试全部正常,行覆盖率提升到 77%,类覆盖率提升到 92% 优化:DalSession 在调用 createMapper 时候不必强制要求 Mapper 接口必须标记 @xxMapper 注解,它会自动探测 DalRegistry 优化:ExecuteInvocationHandler 逻辑针对接口 default 调用实现参考 mybatis 兼容 java8 和 java9 修复​ 修复:报错内容不正确,始终是空指针异常的问题(社区用户 aqnghu 贡献) 修复:lambdaInsert 当自增列配置为不参与 insert 时自增数据不回填的问题 修复:mapper 文件级 MappingOptions 不生效的问题(优先级顺序为:table -> mapper 文件级 -> 全局) 修复:Oracle 使用 InsertLambda 批量 insert 失败的问题 修复:SqlXmlForReaderTypeHandler 类无法正常工作的问题 修复:BaseMapper 接口中 updateById 会强制把 id 也带上的问题

优秀的个人博客,低调大师

试试国产的 Solon v1.10.7

Java 国产的轻量级应用开发框架。可用来快速开发 Java 应用项目。主框架仅 0.1 MB。Helloworld: @Controller public class App { public static void main(String[] args) { Solon.start(App.class, args); } @Get @WebSocket @Mapping("/hello") public String hello(@Param(defaultValue = "world") String name) { return String.format("Hello %s!", name); } } 相对于 Spring Boot 和 Spring Cloud 的项目: 启动快 5 ~ 10 倍。 (更快) qps 高 2~ 3 倍。 (更高) 运行时内存节省 1/3 ~ 1/2。 (更少) 打包可以缩小到 1/2 ~ 1/10;比如,300Mb 的变成了 23Mb。 (更小) 基于服务 name 进行注册发现 与 k8s svc 相互对应 支持 Service Mesh 架构部署方案 同时支持 jdk8, jdk11, jdk17, jdk19 本次更新: 新增 wood-cloud-plugin 插件 优化 easypoi-solon-plugin 插件 优化 activerecord-solon-plugin 插件,增加 模板 + mapper 风格支持(由用户 糊搞 pr) 优化 Solon.cfg().getList() 实现排序支持 修复 solon.boot.smarthttp 插件,websocket 的 sesion.uri() 里没带 queryString 的问题 恢复 @Init(index) 手动控制属性 恢复 @Inject(required) 属性支持,默认为 true,且仅对配置注入有效 调整 solon.auth 使用 AuthAdapterSupplier 时,未找到匹配则抛异常 调整 solon.config 配置的文件不存在时,不出异常 调整 solon.schedule 任务取消的操作逻辑 升级 snakeyaml 为 1.32 升级 graphql 为 18.3 升级 snack3 为 3.2.44 升级 water 为 2.9.0 进一步了解 Solon: 《想法与架构笔记》 《生态预览》 《与 Spring Boot 的区别?》 《与 Spring Cloud 的区别?》 项目仓库: gitee:https://gitee.com/noear/solon github:https://github.com/noear/solon

优秀的个人博客,低调大师

就用国产框架:Solon v1.10.2

相对于 Spring Boot 和 Spring Cloud 的项目: 启动快 5 ~ 10 倍。 (更快) qps 高 2~ 3 倍。 (更高) 运行时内存节省 1/3 ~ 1/2。 (更少) 打包可以缩小到 1/2 ~ 1/10;比如,90Mb 的变成了 9Mb。 (更小) 基于服务 name 进行注册发现 与 k8s svc 相互对应 支持 Service Mesh 架构部署方案 支持 jdk8, jdk11, jdk17 本次更新: 完善 solon.serialization.fastjson2 插件 增加 solon.config 配置项(与 solon.extend.config 同) 增加 nami.Invocation::target 用于获取代理 增加 solon.schedule 插件动态修改调度时间的支持 优化 solon-test 插件的注解处理 优化 solon.data 插件 tag 的缓存时间处理 插件 solon.config.yaml 升级 snakeyaml 为:1.30 插件 solon.serialization.snack3 升级 snack3 为:3.2.35 插件 solon.serialization.fastjson 升级 fastjson 为:1.2.83 插件 solon.serialization.fastjson2 升级 fastjson2 为:2.0.12 插件 solon.boot.undertow 升级 undertow 为:2.2.19.Final 插件 nami.channel.socketd.rsocket 升级 rsocket 为:1.1.2 插件 nami.channel.socketd.netty 升级 netty 为:4.1.68.Final 插件 nami.channel.http.hutool 升级 hutool 为:5.8.5 插件 mybatis-solon-plugin 升级 mybatis 为:3.5.10 插件 grpc-solon-plugin 升级 grpc 为:1.49.0 插件 dubbo3-solon-plugin 升级 dubbo3 为:3.0.11 进一步了解 Solon: 《想法与架构笔记》 《生态预览》 《与 Spring Boot 的区别?》 《与 Spring Cloud 的区别?》

优秀的个人博客,低调大师

试试国产的 Solon v1.10.1

相对于 Spring Boot 和 Spring Cloud 的项目: 启动快 5 ~ 10 倍。(更快) qps 高 2~ 3 倍。(更高) 运行时内存节省 1/3 ~ 1/2。(更少) 打包可以缩小到 1/2 ~ 1/10;比如,90Mb 的变成了 9Mb。(更小) 基于服务 name 进行注册发现 与 k8s svc 相互对应 支持 Service Mesh 架构部署方案 支持 jdk8, jdk11, jdk17 本次更新: 插件 sqltoy-solon-plugin 升级 sqltoy 为 5.2.9 插件 beetlsql-solon-plugin 升级 beetlsql 为 3.18.0 插件 solon.auth 增加多账号体系验证支持 插件 solon-test 增加 @SolonTest::args 启动参数支持 插件 mybatis-solon-plugin 增加数据源 plugins 配置节支持 插件 solon.web.staticfiles 增加 WEB-INF/static/ 做为静态文件目录支持(与 static/ 并存,二选一) 增加 BeanContainer::subBean 订阅 bean 增加 BeanContainer::subWrap 订阅 beanwrap 增加 Props::getBean(keyStarts), keyStarts 为空支持 增加 NvMap::getBean(clz) 接口支持 进一步了解 Solon: 《想法与架构笔记》 《生态预览》 《与 Spring Boot 的区别?》 《与 Spring Cloud 的区别?》 项目仓库: gitee:https://gitee.com/noear/solon github:https://github.com/noear/solon

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册