相关推荐
-
spring的集群问题的疑惑
现在公司里有一个项目,想做spring的集群,现在他们的做法是一台webserver,比如说tomcat,然后把spring的应用部署到多个applicationserver上,然后webserver通过ejb的rmi来调用applicationserver上的spring程序,...
-
关于集群的疑惑
为啥 两个注册中心,彼此互相注册, 服务提供方两个 ,他们都想其中一个甲注册中心注册,为啥甲宕机了,访问还能成功,不该歇菜嘛? 控制台一直报错,服务但还能正常这个是为啥 ...
-
springboot2.1.8/springsecurity借助redis完成session集群管理
在这之前我是没接触过spring-session的,并且还就真手写过利用jedis操作redis来实现session共享的代码,所以当时为了搞清这块业务,就想当然的一个劲地找jedis操作redis的相关逻辑,最后实在找不到还很疑惑的问一个...
-
SpringCloud-Eureka服务端集群如何同步(5)
其中第五点涉及到服务器端集群同步问题我们并没有进行深入了解,在这里,我们将进行一次探索。 // 获取集群中的其他节点,注册到当前节点上 int registryCount = this.registry.syncUp(); 二.集群同步 1.为什么要...
-
Spring Boot 集成 Redis 三种模式实践汇总
项目的某个模块集成了 SpringBoot Redis 包,客户端使用 Lettuce,Redis 测试环境单机模式。但是现场反馈的 Redis 环境是集群,如果简单的修改 `spring.redis` 配置为集群的配置信息,程序能否能无缝衔接呢?
-
SpringSession
为什么要spring-session比较traditional-session方案和spring-session方案JSR340规范与spring-session的透明继承spring-session提供集群环境下HttpSession的透明集成。spring-session的优势在于开箱即用,具有较强的...
-
【云原生】Spring Cloud是什么?Spring Cloud版本介绍
SpringCloud是基于SpringBoot提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件...
-
spring整合mongodb集群
很多同学用Spring封装的MongoDB包时都会对多个MongoDB的负载均衡疑惑, Spring到底是如何做负载均衡呢? 由于本文中心不是解析此问题,只做稍微解释:Spring启动了多个线程,每个线程的工作为ping一下要连接的Mongo...
-
超详细的SpringCloud底层原理
SpringCloud框架 针对这个架构图我分层介绍一下: 1、是web服务器的选型,这个我选择的是nginx+keepalived,haproxy也是一个选择,但是haproxy在反向代理处理跨域访问的时候问题很多。所以我们nginx有些地方做了...
-
【SpringCloud】SpringCloud之微服务网关GateWay
文章目录前言一、SpringCloud GateWay概述1.1 Zuul1.x的缺陷1.2 Spring WebFlux1.3 GateWay工作流程二、GateWay实战2.1 Spring Cloud Gateway中的Predicate介绍2.2 Spring Cloud Gateway中的Filter介绍2.2.1 自定义...
-
【1.3】Java微服务:Spring Cloud版本说明
这篇文章主要说明了一些SpringCloud版本的说明和版本兼容的配置方法
-
SpringCloudAlibaba实战-nacos集群部署
在学习阶段,我们想快速学习SpringCloudAlibaba功能,但总是花费大量时间跟着视频或博客做组件配置。...因此,本篇博客针对这一痛点,进行nacos集群部署记录。关于nacos的理论知识,以及单机版部署网上前人之述足矣。
-
Spring微服务实战第4章 服务发现
文章目录第4章 服务发现4.1 我的服务在哪里4.2 云中的服务发现4.2.1 服务发现架构4.2.2 使用Spring和Netflix Eureka进行服务发现实战4.3 构建Spring Eureka服务4.4 通过Spring Eureka注册服务4.5 使用服务...
-
关于Spring集成Quartz的一些小坑
Spring Quartz
-
SpringCloud-Eureka配置和使用
SpringCloud-Eureka配置 注意:Eureka新旧版本情况,旧版本已经被弃用,需要(建议)使用新的版本 旧版本:spring-cloud-starter-eureka-server,spring-cloud-starter-eureka 例子如下,如果使用下面这种方法,有...
-
SpringCloud学习笔记
SpringCloud 内容知识 技术栈对比 服务拆分 远程调用 二、Eureka注册中心 搭建注册中心 服务注册 服务拉取 三、Ribbon负载均衡 源码跟踪 流程总结 负载均衡策略 自定义策略 饥饿加载 四、Nacos注册...
-
Spring Cloud Alibaba 核心组件解析
Name Server:分布式系统中通过 DNS、VIP(Vritual IP)或者地址来实现集群的服务路由。 Nacos Server:Nacos 服务的提供者。 OpenAPI:提供给外部的功能访问入口。 Config Service:配置服务。 Naming Service:...
-
你说你会Spring和分布式,那你知道它们怎么演化来的吗?
知其然更要知其所以然! 现在我们所熟知的微服务,spring,负载均衡,分布式等等技术框架和技术架构,它们的发展都是有着必然联系的。让我们追本溯源,纵览分布式的近20年发展历程。
-
非常哇塞的 Spring Boot 性能优化长文
对于如何定位到复杂分布式环境中的问题,我这里想要分享另外一个工具:Skywalking。 Skywalking是使用探针技术(JavaAgent)来实现的。通过在Java的启动参数中,加入javaagent的Jar包,即可将性能数据和调用链数据...
-
级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均衡管理,级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均
级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均衡管理,级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均衡管理,不平衡电网下的svg无功补偿,级联H桥svg无功补偿statcom,采用三层控制策略。 (1)第一层采用电压电流双闭环pi控制,电压电流正负序分离,电压外环通过产生基波正序有功电流三相所有H桥模块直流侧平均电压恒定,电流内环采用前馈解耦控制; (2)第二层相间电压均衡控制,注入零序电压,控制通过注入零序电压维持相间电压平衡; (3)第三层相内电压均衡控制,使其所有子模块吸收的有功功率与其损耗补,从而保证所有H桥子模块直流侧电压值等于给定值。 有参考资料。 639,核心关键词: 1. 不平衡电网下的SVG无功补偿 2. 级联H桥SVG无功补偿STATCOM 3. 三层控制策略 4. 电压电流双闭环PI控制 5. 电压电流正负序分离 6. 直流侧平均电压恒定 7. 前馈解耦控制 8. 相间电压均衡控制 9. 零序电压注入 10. 相内电压均衡控制 以上十个关键词用分号分隔的格式为:不
35 楼 u013489005 2015-08-10 23:28
Exception in thread "main" java.lang.IllegalStateException: Cannot find the system Java compiler. Check that your class path includes tools.jar
at com.greenpineyu.fel.compile.FelCompiler16.<init>(Unknown Source)
新手出现如此的错误如何解决。
请问,
fel会涉及到jvm的安全性问题么?
谢谢回答。
联系邮箱:
frankgray@seekwillfind.org
34 楼 lotusyu 2012-11-14 17:00
i * pi + (d * b - 199) / (1 - d * pi) - (2 + 100 - i / pi) % 99 ==i * pi + (d * b - 199) / (1 - d * pi) - (2 + 100 - i / pi) % 99;
循环执行2亿次的结果如下:
Using MVEL ,cost time -->33672 毫秒
===================================
Using JDK ,cost time -->5094 毫秒
===================================
Using Fel ,cost time ->10375 毫秒
可以看到,mvel在执行表达式时效率远不及fel和jdk,
fel的效率是jdk的1/2
你有这样的测试结果可以理解。你写的代码,pi、d都是局部变量吧。而fel在执行时获取变量要从map中读取的。访问局部变量肯定比访问map要快得多,这是不是有失公平?
33 楼 lotusyu 2012-11-14 16:57
不支持分号这种最基本的语法,严格来讲不算是一种脚本语言。
对于业务系统而言,建议试用mvel脚本语言,它完全支持各种语法,java的兼容性非常高。
对于数学计算而言,建议采用fel
请问表达式引擎支持什么样的功能才算得上可用性高?
32 楼 kingj 2012-11-13 10:43
i * pi + (d * b - 199) / (1 - d * pi) - (2 + 100 - i / pi) % 99 ==i * pi + (d * b - 199) / (1 - d * pi) - (2 + 100 - i / pi) % 99;
循环执行2亿次的结果如下:
Using MVEL ,cost time -->33672 毫秒
===================================
Using JDK ,cost time -->5094 毫秒
===================================
Using Fel ,cost time ->10375 毫秒
可以看到,mvel在执行表达式时效率远不及fel和jdk,
fel的效率是jdk的1/2
31 楼 kingj 2012-11-13 10:41
不支持分号这种最基本的语法,严格来讲不算是一种脚本语言。
对于业务系统而言,建议试用mvel脚本语言,它完全支持各种语法,java的兼容性非常高。
对于数学计算而言,建议采用fel
30 楼 founder 2012-10-12 10:11
29 楼 lotusyu 2012-04-09 15:23
long l1 = System.nanoTime();
FelEngine fel = new FelEngineImpl();
Object result = null;
// FelContext ctx = fel.getContext(); ctx.set("单价", 5000); ctx.set("数量", 12); ctx.set("运费", 7500);
// Expression exp = fel.compile("单价*数量+运费",ctx);
for (int i = 0; i < 100000; i++) {
result = fel.eval("5000*12+7500");
// result = exp.eval(ctx);
}
long l2 = System.nanoTime();
System.out.println( (l2-l1)/1000000f + "ms" );
System.out.println( result );
}
// 结果:解释运行4550ms,编译运行:619ms。
我们当前项目内的解释器,同样执行"5000*12+7500"。
解释运行216ms,编译运行:正在开发!
不知道秒内千万次的速度如何得出的?
很抱歉引起了你的误解,我做的时间统计是不包含编译时间的。既然你也在开发EL,非常欢迎你加入EL群(75055831)交流。
28 楼 form_rr 2012-04-08 19:34
long l1 = System.nanoTime();
FelEngine fel = new FelEngineImpl();
Object result = null;
// FelContext ctx = fel.getContext(); ctx.set("单价", 5000); ctx.set("数量", 12); ctx.set("运费", 7500);
// Expression exp = fel.compile("单价*数量+运费",ctx);
for (int i = 0; i < 100000; i++) {
result = fel.eval("5000*12+7500");
// result = exp.eval(ctx);
}
long l2 = System.nanoTime();
System.out.println( (l2-l1)/1000000f + "ms" );
System.out.println( result );
}
// 结果:解释运行4550ms,编译运行:619ms。
我们当前项目内的解释器,同样执行"5000*12+7500"。
解释运行216ms,编译运行:正在开发!
不知道秒内千万次的速度如何得出的?
27 楼 liuye 2012-04-05 15:32
我不知道你的测试有没有包含编译时间,测试的表达式是什么。如果不包含编译时间的话,fel在一般情况下要快几倍甚至几十倍。
都不包含编译时间。
26 楼 hatedance 2012-04-02 09:14
25 楼 yhjhoo 2012-04-01 22:23
24 楼 gr4ve 2012-04-01 20:49
比较代码:
------------------Fel-------------------------
System.out.println(System.currentTimeMillis());
for (int i = 0; i < 100000; i++) {
FelEngine fel = new FelEngineImpl();
Object result = fel.eval("5000*12+7500");
tempresult = result;
}
System.out.println(System.currentTimeMillis());
------------------mvel------------------------
System.out.println(System.currentTimeMillis());
for (int i = 0; i < 100000; i++) {
Object o = MVEL.eval("5000*12+7500");
tempresult = o;
}
System.out.println(System.currentTimeMillis());
执行结果:
----------fel-----------
1333171203209
1333171206856
3.65s
----------mvel----------
1333171206856
1333171207909
1.05s
兄弟 FelEngine fel = new FelEngineImpl();放在循环里不公平吧...
MVEL 用的是也是eval...不是compile 其实也没啥不公平的
23 楼 小叮当 2012-04-01 18:45
需要计算的语句直接生成JAVA代码,然后缓存生成的对象,这样效率高了很多。几万次循环也就几个毫秒左右。后来转行做JS了也就没研究过这东西
缓存2字, 点出了性能差距. 其实,很多人都说, 反射耗时. 但是, 如果你把发射需要的一些信息缓存起来, 一样性能彪悍.
22 楼 litian33 2012-04-01 16:10
可能是表达式比较复杂,不过这个工作作者“每秒可以执行千万次表达式”,有点太那个了
21 楼 NSCoffee 2012-04-01 13:31
去掉';'再试试,Fel只支持表达式,没有必要使用';'。
应用场景有很多,比如要动态的控制一些业务规则,这些业务规则经常需要改变,不能硬编码。也可以用于公式计算、数据处理和校验。凡是需要用户输入表达式的地方,都有可能用到表达式引擎。
其实我想说的是这样的一个功能,代码如下
上面的代码只能输出”使用fastEl执行java代码。“ test不会被输出。如果两句之间加个分号,两句都能执行就好了。
20 楼 lotusyu 2012-04-01 12:03
去掉';'再试试,Fel只支持表达式,没有必要使用';'。
应用场景有很多,比如要动态的控制一些业务规则,这些业务规则经常需要改变,不能硬编码。也可以用于公式计算、数据处理和校验。凡是需要用户输入表达式的地方,都有可能用到表达式引擎。
19 楼 NSCoffee 2012-04-01 11:34
18 楼 mengyancui 2012-04-01 11:15
17 楼 mengyancui 2012-04-01 11:15
16 楼 mengyancui 2012-04-01 11:14