首页 文章 精选 留言 我的

精选列表

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

Semgrep —— 快速的代码静态分析工具

Semgrep 是一个快速、开源的静态分析工具,用于在编辑、提交和 CI 时查找错误并执行代码标准。 Semgrep 在你的电脑或构建环境中分析本地代码:代码从不上传。 它的规则看起来就像你已经编写的代码;没有抽象的语法树、正则表达式或痛苦的 DSL。这里有一个快速查找 Pythonprint()语句的快速规则,通过单击图像在 Semgrep 的 Playground 中在线运行它: Semgrep 生态系统包括: Semgrep - 开源的命令行工具,是一切的核心(这个项目)。 Semgrep CI- 用于在 CI 环境中运行 Semgrep 的专用 Docker 镜像 Semgrep Playground- 用于编写和共享规则的在线交互式编辑器 Semgrep Registry- 1000 多个社区驱动的规则,涵盖安全性、正确性和性能错误 Semgrep 应用程序- 使用免费和付费层级大规模部署、管理和监控 Semgrep。 语言支持 一般可用性 Go · Java · JavaScript · JSX · JSON · Python · Ruby · TypeScript · TSX 测试版和实验版 有关完整列表,请参阅支持的语言。

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

Spring Boot 替代框架 Solon 1.3.29 发布

Solon 是一个微型的Java开发框架。项目2018年启动,参考过大量前人作品;内核0.1m的身材,超高的跑分,以及良好的使用体验。支持:RPC、REST API、MVC、WebSocket、Socket 等多种开发模式。 Solon 强调:克制 + 简洁 + 开放的原则;力求:更小、更快、更自由的体验。 替代?那有什么异同之处? 《Solon 特性简集,相较于 Springboot 有什么区别?》 《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 cloud event 增加通道概念,以支持不同消息队列产品共用 例如一个IoT项目的应用场景:业务消息用RabbitMQ,设备消息用 MQTT。 配置 solon.app: group: demo #配置服务使用的默认组 name: helloproducer #发现服务使用的应用名 solon.cloud.mqtt: server: "tcp://localhost:41883" #mqtt服务地址(默认通道不用命名) solon.cloud.rabbitmq: server: localhost:5672 #rabbitmq 服务地址 username: root #rabbitmq 链接账号 password: 123456 #rabbitmq 链接密码 event: channel: "biz" #对事件服务进行通道命名 生产端代码 @Controller public class TestController { @Mapping("/test") public Object test(String msg) { //发送默认通道 return CloudClient.event().publish(new Event("hello.demo", msg).qos(1).retained(true)); } @Mapping("/test2") public Object test2(String msg) { //发送到biz通道(发送时,增加 channel 信息即可) return CloudClient.event().publish(new Event("hello.demo2", msg).channel("biz")); } } 消费端代码 //订阅并消费默认通道的事件(为了演示把mqtt的消息订阅过来了) @CloudEvent("hello.demo") public class EVENT_hello_demo implements CloudEventHandler { @Override public boolean handler(Event event) throws Throwable { System.out.println(LocalDateTime.now() + ONode.stringify(event)); return true; } } //订阅并消费biz通道的事件 @CloudEvent(value = "hello.demo2", channel = "biz") public class EVENT_hello_demo2 implements CloudEventHandler { @Override public boolean handler(Event event) throws Throwable { System.out.println(LocalDateTime.now() + ONode.stringify(event)); return true; } } 2、Solon cloud breaker 断路器增加动态配置支持 配置 solon.cloud.local: breaker: hello: 1 #断路器名称与阀值 演示代码 @Controller public class DemoController { //此处安排了个断路器(即限流器),如果断路时,会返回HTTP 403状态 @CloudBreaker("hello") @Mapping("/hello") public String hello() { return "hello"; } @Mapping("/reset") public void reset() { //重新设置断路器的阀值(此配置,也可能过配置服务管理;动态更新) Solon.cfg().setProperty("solon.cloud.local.breaker.hello", "10"); } } 3、Solon logging 增加支持有格式化或无格式化的异常打印 Solon logging 是基于 slf4j 的个实现方案,内部对接 Solon cloud log service 接口,从而将日志写到分布式日志服务。 //无格式化场景 log.error("Error: ", e); //格式化场景 log.error("Error: {}", e); 4、增加路由组件切换支持 public class Demo10App { public static void main(String[] args) { Solon.start(Demo10App.class, args, app -> { Router router = new RouterCustom(); //替换路由器 app.routerSet(router); }); } } 5、@Init 增加延时处理机制,并默认为 true @Component public class Demo { @Init public void init(){ } } 6、优化session.jwt组件内部机制 附:入门示例 项目地址: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 1.3.20 发布

Solon 是一个微型的Java开发框架。项目2018年启动,参考过大量前人作品;内核0.1m的身材,超高的跑分,以及良好的使用体验。支持:RPC、REST API、MVC、WebSocket、Socket 等多种开发模式。 Solon 强调:克制 + 简洁 + 开放的原则;力求:更小、更快、更自由的体验。 替代?那有什么异同之处? 《Solon 特性简集,相较于 Springboot 有什么区别?》 《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); 本次版本主要变化: 1、Solon Cloud 增加分布式文件服务定义: CloudFileService public interface CloudFileService { InputStream getStream(String bucket, String key) throws CloudFileException; Result putStream(String bucket, String key, InputStream stream, String streamMime) throws CloudFileException; InputStream getText(String bucket, String key) throws CloudFileException; Result putText(String bucket, String key, String text) throws CloudFileException; ... } 2、Solon Cloud 增加适配组件:aliyun-oss-solon-plugin、aws-s3-solon-plugin(适配 CloudFileService) 以 aliyun-oss-solon-plugin 使用为例: 配置: solon.cloud.aliyun.oss: # 亚马逊则为:solon.cloud.aws.s3 file: bucket: aaa endpoint: bbb.xxx.xxx accessKey: ccc secretKey: ddd #可以通过配置服务动态加载,以灵活切换不同的配置 #solon.cloud.water: # server: water # config: # load: xxx_hdfs_cfg 代码: public class DemoService { public void test() { String key = "test/" + Utils.guid(); String val = "Hello world!"; //写入数据 Result result = CloudClient.file().putText(key, val); System.out.println(ONode.stringify(result)); assert result.getCode() == Result.SUCCEED_CODE; //读取数据 String tmp = CloudClient.file().getText(key); assert val.equals(tmp); } } 3、Solon Cloud 增加适配组件:mqtt-solon-plugin(适配 CloudEventService) 配置示例: solon.app: group: demo name: consumer solon.cloud.mqtt: server: "tcp://localhost:41883" #mqtt服务地址 代码示例: @Controller public class TestController { @Mapping("/test") public Object test(String msg) { if(Utils.isEmpty(msg)){ msg = "demo2"; } Event event = new Event("hello.demo", msg).qos(1).retained(true); return CloudClient.event().publish(event); } } 4、增加应用启动事件:AppInitEndEvent Solon 启动处理顺序: 1.实例化 Solon.global() 并加载配置 2.加载扩展文件夹 3.扫描插件并排序 4.运行 initialize 函数 5.推送 AppInitEndEvent 事件(新增) 6.运行插件 7.推送 PluginLoadEndEvent 事件 8.导入java bean(@Import) 9.扫描并加载java bean a.推送 BeanLoadEndEvent 事件 b.加载渲染印映关系 c.执行bean加完成事件 d.推送 AppLoadEndEvent 事件 e.结束 //订阅示例(通过Solon事件总线提前订阅) EventBus.subscribe(AppInitEndEvent.class, event->{ System.out.println("app init end..."); }); Solon.start(App.class, args); 5、取消 HandlerLink 类,增加 HandlerPipeline 类 此例代码摘自组件 solon.extend.staticfiles : //切换处理(让静态文件优先) HandlerPipeline pipeline = new HandlerPipeline(); pipeline.next(new StaticResourceHandler()).next(app.handlerGet()); app.handlerSet(pipeline); 此例代码摘自组件 srww.base SolonServletFilter.onFilterEnd = new HandlerPipeline().next(new BaseLogHandler()).next(new BaseEndHandler()); 附:入门示例 项目地址:https://gitee.com/noear/solon 入门教程示例:https://gitee.com/noear/solon_demo RPC入门教程示例:https://gitee.com/noear/solon_rpc_demo 进阶教程示例:https://gitee.com/noear/solon_advance_demo

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

Spring Boot 替代框架 Solon 1.3.18 发布

Solon 是一个微型的Java开发框架。项目从2018年启动以来,参考过大量前人作品;历时两年,4000多次的commit;内核保持0.1m的身材,超高的跑分,良好的使用体验。支持:RPC、REST API、MVC、WebSocket、Socket 等多种开发模式。 Solon 强调:克制 + 简洁 + 开放的原则;力求:更小、更快、更自由的体验。 替代?那有什么异同之处? 《Solon 特性简集,相较于 Springboot 有什么区别?》 《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、增加 luffy-solon-plugin 组件,实现与动态语言混合执行能力 // // file: resources/luffy/hello.js // let name = ctx.param("name"); if(!name){ name = "world"; } return `Hello ${name}!`; // 浏览器打开: http://localhost:8080/hello.js // Java调用:CallUtil.callFile("/hello.js", null); 目前已适配的动态语言 python ruby javascript groovy lua graaljs 2、Solon cloud 增加云端黑白名单接口 CloudListService //手动应用 // if(CloudClient.list().inList("blacklist","ip","127.0.0.1")){ //提示 } //注解应用 @NotBlanklist @Mapping("demo1") public void demo1(){ //业务处理 } @Withelist @Mapping("demo2") public void demo2(){ //业务处理 } 3、增加 solon.logging 的异常格式化支持 @Slf4j public class DemoService{ public void demo(){ try{ //业务处理 }catch(Exception ex){ log.error("{}\r\n{}", "error:", ex); } } } 4、增加 solon.extend.sessionstate.jwt 组件通过 header 传输的支持 附:入门示例 项目地址:https://gitee.com/noear/solon 入门教程示例:https://gitee.com/noear/solon_demo RPC入门教程示例:https://gitee.com/noear/solon_rpc_demo 进阶教程示例:https://gitee.com/noear/solon_advance_demo

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

Spring Boot 替代框架 Solon 1.3.15 发布

Solon 是一个微型的Java开发框架。项目从2018年启动以来,参考过大量前人作品;历时两年,4000多次的commit;内核保持0.1m的身材,超高的跑分,良好的使用体验。支持:RPC、REST API、MVC、WebSocket、Socket 等多种开发模式。 Solon 强调:克制 + 简洁 + 开放的原则;力求:更小、更快、更自由的体验。 替代?那有什么异同之处? 《Solon 特性简集,相较于 Springboot 有什么区别?》 《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、增加 Solon Cloud Breaker 接口规范(限流) 使用断路器进行限流 //1.通过注解,添加断路器实现限流 @Controller public class BreakerDemo { //添加断路器,以实现限流。demo 为断路器 name @CloudBreaker("demo") @Mapping("/demox/test") public String test() throws Exception{ return "OK"; } } //2.通过过滤器添加断路器实现限流 Solon.global().filter((ctx, chain) -> { if("/demox/test".equals(ctx.path())) { try (AutoCloseable entry = CloudClient.breaker().entry("demo")) { chain.doFilter(ctx); }catch (BreakerException ex){ ctx.statusSet(403); } } }); 本地配置支持 solon.cloud.local: breaker: demo: 1 #qps 附:目前为止Solon Cloud 组件已规范并定义以下接口 接口定义 说明 CloudBreakerService 分布式断路器服务接口(实现组件有:guava-solon-plugin、sentinel-solon-plugin) CloudConfigService 分布式配置服务接口 CloudDiscoveryService 分布式注册也发现服务接口 CloudEventService 分布式事件服务接口 CloudLockService 分布式锁接口 CloudLogService 分布式日志服务接口 CloudTraceService 分布式链路跟踪服务接口 2、增加Solon Sloud Discovery本地配置支持,便于本地调试 solon.cloud.nacos: discovery: enable: false #禁用云端发现服务(本地的发现服务才会生效) solon.cloud.local: discovery: service: demo1: - "http://localhost:8080" demo2: - "http://localhost:8081" demo3: - "tcp://localhost:28080" //RPC 客户端注入,自动发现demo1的服务节点 @NamiClient(name="demo1") Demo1Service service; 3、加强静态文件组件可配性和调试便利 增加缓存控制的max-age配置,例: solon.staticfiles: maxAge: 6000 #10分钟检测一次 调试模式下自动取消304缓存 方便调试时,即时刷新静态资源 4、Solon Data组件之缓存管理增加key模式(之前仅有tags模式) tags 模式:用于批量管控。(例如:多次分页查询的结果,可通过 tags 批量删除) key 模式:用于精准管控,使用时要注意 key 冲突。 // // 混合使用示例: // @Controller public class DemoController { /** * 执行结果缓存10秒,设定 key=test3_${label} ,并添加 tag=test3 标签(可以批量删除) */ @Cache(key = "test3_${label}", tags = "test3", seconds = 10) @Mapping("/cache3/") public String cache(int label) { return LocalDateTime.now().toString(); } /** * 执行后,清除 tag=test3 的所有缓存,并更新 key=test3_${label} 的缓存数据 */ @CachePut(key = "test3_${label}") @CacheRemove(tags = "test3") @Mapping("/cache3/update") public String remove(int label) { return "清除成功-" + new Date(); } } 5、安全停止,升级为二段式暂停 //启动时,通过lumda函数,开启安全停止即可 // Solon.start(TestApp.class, args, x -> x.enableSafeStop(true)); 6、验证组件,增加自定义状态码支持 public class DemoValidator implements Validator<Demo> { @Override public Result validate(Context ctx, Demo anno, String name, StringBuilder tmp) { // // 旧版本,最终输出只返回 400 状态 // return Result.failure(401); } } 附:入门示例 项目地址:https://gitee.com/noear/solon 入门教程示例:https://gitee.com/noear/solon_demo RPC入门教程示例:https://gitee.com/noear/solon_rpc_demo 进阶教程示例:https://gitee.com/noear/solon_advance_demo

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

Spring Boot 替代框架 Solon 1.3.10 发布

Solon 是一个微型的Java开发框架。项目从2018年启动以来,参考过大量前人作品;历时两年,4000多次的commit;内核保持0.1m的身材,超高的跑分,良好的使用体验。支持:RPC、REST API、MVC、WebSocket、Socket 等多种开发模式。 Solon 强调:克制 + 简洁 + 开放的原则;力求:更小、更快、更自由的体验。 替代?那有什么差别! Solon 特性简集,相较于 Springboot 有什么区别? 所谓更小: 内核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、增加过滤器(Filter),之前由触发器替代 所谓触发器,例: //::在"/demo/"处理之前触发 app.before("/demo/", c-> System.out.println("我是请求之前触发的..."+ctx.path()) ); //::在"/demo/"处理之后触发 app.after("/demo/", c-> System.out.println("我是请求之后触发的..."+ctx.path()) ); “触发器”听起来像是数据库的东西,在Solon里的特性与数据库的触发特性确实也没什么区别。。。算是借用了。 Solon 之前的设计中仅有触发器和拦截器两种概念,也觉很够用。但某些场景下,过滤器会更合适。相对于触发器,过滤器的好处是把后续的处理完整的包围起来,拥有更强的控制性(比如,融断或并发限制)。 来看下Solon的过滤器,注解模式: //通过注解,申明一个过滤器 @Component public class FilterDemo implements Filter { @Override public void doFilter(Context ctx, FilterChain chain) throws Throwable { System.out.println("我是好人过滤器!!!path="+ctx.path()); chain.doFilter(ctx); } } 纯手写模式 //通过手动为应用添加一个过滤器 app.filter((ctx, chain)->{ System.out.println("我是过滤器!!!path="+ctx.path()); chain.doFilter(ctx); }); //Solon.global() 即为全局app对象... 用法上,与Servlet的过滤器几首一样。。。(注:Solon 不是 Servlet 框架。它可以适配各种不同的Http容器) 2、强化自带网关的通用性、组装性 同一份接口实现,不同的协议输出: 简单版输出输入: @Mapping("/api/v1/**") @Controller public class ApiGateway1x extends ApiGatewayBase { @Override protected void register() { before(new StartInterceptor()); //开始 after(new OutputBuildInterceptor()); //输出构建 after(new OutputInterceptor()); //输出 after(new LogInterceptor()); //日志 after(new EndInterceptor("v1")); //结束 //加载bean,做为接口 addBeans(bw -> "api".equals(bw.tag())); } } 复杂版输入输出: @Mapping("/api/v3/**") @Component public class ApiGateway3x extends ApiGatewayBase { @Override protected void register() { filter(new SentryFilter()); //添加融断过滤器 before(new StartTrigger()); //开始 before(new ParamsParseTrigger()); //参数解析 before(new ParamsSignCheckTrigger(new Md5Encoder())); //参数签名较验,用MD5编码签名 before(new ParamsRebuildTrigger(new AesDecoder())); //参数重构 after(new OutputBuildTrigger(new AesEncoder())); //输出构建,用AES编码加载输出内容 after(new OutputSignTrigger(new Md5Encoder())); //输出签名,用MD5编码签名 after(new OutputTrigger()); //输出 after(new LogTrigger()); //日志 after(new EndTrigger("v3")); //结束 //加载bean,做为接口 addBeans(bw -> "api".equals(bw.tag())); } } 附:入门示例 入门教程示例:https://gitee.com/noear/solon_demo RPC入门教程示例:https://gitee.com/noear/solon_rpc_demo 进阶教程示例:https://gitee.com/noear/solon_advance_demo

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

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

用户登录
用户注册