Sqlserver——异常总结——详解嵌套事务中EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配发生的原因及处理方法_qq_40205468的博客-CSDN博客

mikel阅读(1696)

来源: Sqlserver——异常总结——详解嵌套事务中EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配发生的原因及处理方法_qq_40205468的博客-CSDN博客

下面是测试表和存储过程的代码

—创建测试表

IF EXISTS ( SELECT * FROM sys.tables WHERE name = ‘tt’ )
DROP TABLE dbo.tt ;

CREATE TABLE dbo.tt ( ID INT IDENTITY , Name NVARCHAR (100), TransCount INT ) ;
GO

—创建主存储过程
IF EXISTS ( SELECT * FROM sys.procedures WHERE name = ‘P_proc’ )
DROP PROC P_proc ;
GO

CREATE PROC P_proc
AS
BEGIN
BEGIN TRAN ;

INSERT INTO dbo.tt ( Name, TransCount ) SELECT ‘查询1’, @@TRANCOUNT ;

EXEC dbo.S_proc ;

RETURN ;
END ;
GO

—创建子存储过程

IF EXISTS ( SELECT * FROM sys.procedures WHERE name = ‘S_proc’ )
DROP PROC S_proc ;
GO

CREATE PROC S_proc
AS
BEGIN
BEGIN TRAN ;

INSERT INTO dbo.tt ( Name, TransCount ) SELECT ‘查询2’, @@TRANCOUNT ;

ROLLBACK ;

RETURN ;
END ;
执行主存储过程P_proc

分析这个错误提示,可以发现,这个错误其实是由子存储过程报错报错抛出的,

调用S_proc之前的 事务层数是1 ,而执行之后的事务层数是0 所以系统抛出执行异常。

其中 提示 上一计数 = 1,当前计数 = 0。

当单独执行时子存储过程时,可以看到。

是没有任务问题的。

我们再做个测试,独立执行子存储过程之前 手动开启两个事务,执行结果

可以看到上一计数的值正好和 事务的开启层数相同。

可以得出结论:调用存储过程,会对执行前后事务的层数作判断(查询 @@TRANCOUNT 可以看到当前会话的事务层数),如果不相等时会错误  ‘EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配。上一计数 =X,当前计数 =X’

——————————————–下面介绍一种解决方法

看示例代码

——Sp避免嵌套调用异常,编写格式

CREATE PROC TestSp ( @ReturnValue INT OUTPUT )
AS
BEGIN
SET XACT_ABORT ON ;

SET NOCOUNT ON ;

–开启事务–
BEGIN TRANSACTION ;

–创建事务节点(节点名格式: TRANSACTION +节点顺序(1,2,3,4)+ ‘_’+ Sp名称 )
SAVE TRANSACTION TRANSACTION1_TestSp ;

—-业务逻辑代码
BEGIN
INSERT tt SELECT 1 ;

—–异常处理1(回滚指定到事务节点)
IF 1 = 0
BEGIN
SET @ReturnValue = -1 ;

ROLLBACK TRANSACTION TRANSACTION1_TestSp ;

COMMIT ;

RETURN ;
END ;

END ;

–无异常,提交事务
SET @ReturnValue = 1 ;

COMMIT ;

RETURN ;
END ;
上面用到了一个SQL server的特性 :事务节点。

并以上述为例,讲述其用法和含义:存储过程中开启事务(@@TranCount=1),同时创建一个事务节点 TRANSACTION1_TestSp,当执行业务代码时:发生异常,并进行异常处理时,将回滚事务节点(而非回滚事务),将节点范围内的所有事务日志全部回滚(回滚之后的事务层数没有变化,@@TranCount未变化,仍然未1,只是回滚了事务日志),之后进行正常的提交,@@TranCount的层数-1;未发生异常时,正常提交@@TranCount的层数-1。

可以看到,不管最终的执行结果是成功返回还是异常返回,结果都只会将@@TranCount-1,而不会回滚整个事务层,避免了嵌套事务中的‘EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配’问题。

————原创,纯手打,觉得对您有帮助的话,帮忙点个赞哦!
————————————————
版权声明:本文为CSDN博主「志向数据库架构师的初级DBA」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40205468/article/details/100561823

C#中TransactionScope的使用方法和原理_weixin_34348805的博客-CSDN博客

mikel阅读(550)

来源: C#中TransactionScope的使用方法和原理_weixin_34348805的博客-CSDN博客

在.net 1.1的时代,还没有TransactionScope类,因此很多关于事务的处理,都交给了SQLTransaction和SQLConnection,每个Transaction是基于每个Connection的。这种设计对于跨越多个程序集或者多个方法的事务行为来说,不是非常好,需要把事务和数据库连接作为参数传入。

在.net 2.0后,TransactionScope类的出现,大大的简化了事务的设计。示例代码如下:

static void Main(string[] args)
{
using (TransactionScope ts = new TransactionScope())
{
userBLL u = new userBLL();
TeacherBLL t = new TeacherBLL();
u.ADD();
t.ADD();
ts.Complete();
}
}
只需要把需要事务包裹的逻辑块写在using (TransactionScope ts = new TransactionScope())中就可以了。从这种写法可以看出,TransactionScope实现了IDispose接口。除非显示调用ts.Complete()方法。否则,系统不会自动提交这个事务。如果在代码运行退出这个block后,还未调用Complete(),那么事务自动回滚了。在这个事务块中,u.ADD()方法和t.ADD()方法内部都没有用到任何事务类。

TransactionScope是基于当前线程的,在当前线程中,调用Transaction.Current方法可以看到当前事务的信息。具体关于TransactionScope的使用方法,已经它的成员方法和属性,可以查看MSDN。

TransactionScope类是可以嵌套使用,如果要嵌套使用,需要在嵌套事务块中指定TransactionScopeOption参数。默认的这个参数为Required。

该参数的具体含义可以参考http://msdn.microsoft.com/zh-cn/library/system.transactions.transactionscopeoption(v=vs.80).aspx

比如下面代码:

static void Main(string[] args)
{
using (TransactionScope ts = new TransactionScope())
{
Console.WriteLine(Transaction.Current.TransactionInformation.LocalIdentifier);
userBLL u = new userBLL();
TeacherBLL t = new TeacherBLL();
u.ADD();
using (TransactionScope ts2 = new TransactionScope(TransactionScopeOption.Required))
{
Console.WriteLine(Transaction.Current.TransactionInformation.LocalIdentifier);
t.ADD();
ts2.Complete();
}
ts.Complete();
}
}
当嵌套类的TransactionScope的TransactionScopeOption为Required的时候,则可以看到如下结果,他们的事务的ID都是同一个。并且,只有当2个TransactionScope都complete的时候才能算真正成功。

如果把TransactionScopeOption设为RequiresNew,则嵌套的事务块和外层的事务块各自独立,互不影响。

static void Main(string[] args)
{
using (TransactionScope ts = new TransactionScope())
{
Console.WriteLine(Transaction.Current.TransactionInformation.LocalIdentifier);
userBLL u = new userBLL();
TeacherBLL t = new TeacherBLL();
u.ADD();
using (TransactionScope ts2 = new TransactionScope(TransactionScopeOption.RequiresNew))
{
Console.WriteLine(Transaction.Current.TransactionInformation.LocalIdentifier);
t.ADD();
ts2.Complete();
}
ts.Complete();
}
}

可以看到,他们的事务id是不一样的。

TransactionScopeOption设为Suppress则为取消当前区块的事务,一般很少使用。

对于多个不同服务器之间的数据库操作,TransactionScope依赖DTC(Distributed Transaction Coordinator)服务完成事务一致性。

但是对于单一服务器数据,TransactionScope的机制则比较复杂。主要用的的是线程静态特性。线程静态特性ThreadStaticAttribute让CLR知道,它标记的静态字段的存取是依赖当前线程,而独立于其他线程的。既然存储在线程静态字段中的数据只对存储该数据的同一线程中所运行的代码可见,那么,可使用此类字段将其他数据从一个方法传递到该第一个方法所调用的其他方法,而且完全不用担心其他线程会破坏它的工作。TransactionScope 会将当前的 Transaction 存储到线程静态字段中。当稍后实例化 SqlCommand 时(在此 TransactionScope 从线程局部存储中删除之前),该 SqlCommand 会检查线程静态字段以查找现有 Transaction,如果存在则列入该 Transaction 中。通过这种方式,TransactionScope 和 SqlCommand 能够协同工作,从而开发人员不必将 Transaction 显示传递给 SqlCommand 对象。实际上,TransactionScope 和 SqlCommand 所使用的机制非常复杂。具体可以参考文章http://www.microsoft.com/china/MSDN/library/netFramework/netframework/NETMattersSep.mspx?mfr=true

Wrox出版的《Professional C# 4 and .NET 4》也有关于TransactionScope的一些使用方法的介绍。
————————————————
版权声明:本文为CSDN博主「weixin_34348805」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_34348805/article/details/85099004

根据浏览器屏幕分辨率不同使用不同的css样式——响应式 - 叫我小谷 - 博客园

mikel阅读(784)

来源: 根据浏览器屏幕分辨率不同使用不同的css样式——响应式 – 叫我小谷 – 博客园

根据浏览器屏幕分辨率不同使用不同的css样式

有两种方法实现:1、用css的@media(原生写法);2、利用bootstrap的网格系统。(个人推荐用第二种方法。)

一、使用纯css实现

语法:@media only screen and (判断属性) {css样式}

理解:判断属性有:1、(min-width: 1200px)——不小于1200px;2、(max-width: 1200px)——不大于1200px;3、(min-width: 800px) and (max-width: 1200px)——不小于800px且不大于1200px。

下面写个简单的例子:

1、建一个class为content的div层,并引入css文件。

<head>
<meta charset=”UTF-8″>
<title>根据屏幕分辨率不同使用不同的css样式</title>
<link rel=”stylesheet” type=”text/css” href=”css/pingmu.css”/>
</head>
<body>
<div class=”content”>
<p>divcss3我这个层会根据浏览器屏幕分辨率不同显示不同的样式哦</p>
</div>
</body>

2、写css样式。

.content{
margin: 0px auto;    /*使content层居中*/
}
@media only screen and (min-width: 1200px) {
/*    设置了浏览器宽度不小于1200px时,content显示1200px的宽度样式    */
.content{
width: 1200px;
height: 600px;
background-color: #369;

}
}
@media only screen and (min-width: 800px) and (max-width: 1199px) {
/*    设置了浏览器宽度不小于800px且不大于1199px时,content显示1000px的宽度样式    */
.content{
width: 1000px;
height: 600px;
border: solid 2px #F50000;
}
}
/**
* 注意分辨率区间的分配,如上面的1199px,若改为1200px,则在屏幕宽度位1200px时,content将运用两个样式。
*/
@media only screen and (min-width: 500px) and (max-width: 799px) {
/*    设置了浏览器宽度不小于500px且不大于799px时,content显示650px的宽度样式    */
.content{
width: 650px;
height: 600px;
color: #f50000;
background-color: #999;
}
}
@media only screen and (max-width: 499px) {
/*    设置了浏览器宽度不大于499px时,content显示200px的宽度样式    */
.content{
width: 200px;
height: 200px;
font-size: 15pt;
border: dashed 1px #666;
}
}

二、使用bootstrap(css框架)实现

例子如下:

<head>
<meta charset=”UTF-8″>
<!–移动端的响应式写法:加下面语句–>
<!–<meta name=”viewport” content=”width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no” />–>
<title></title>
<link rel=”stylesheet” type=”text/css” href=”css/bootstrap.min.css” />
<style type=”text/css”>
.content {
margin: auto;
width: 1000px;
height: 600px;
background-color: #ccc;
}

/**
* .col-sm-6 就是当屏幕总宽度在750px~970px区间中时,把显示内容的框平均分为两列
* 此为bootstrap的网格系统。
*/
.col-sm-6{
height: 250px;
}
.c1{
background-color: #f50000;
}
.c2{
background-color: #333;
}
.c3{
background-color: #666;
}
.c4{
background-color: #aaa;
}

</style>
</head>

<body>
<div class=”content”>
<div class=”yiceng”>
<!–根据浏览器屏幕分辨率不同使用不同的css样式——bootstrap方法–>
<div class=”col-sm-6 col-md-3 c1″></div>
<div class=”col-sm-6 col-md-3 c2″></div>
<div class=”col-sm-6 col-md-3 c3″></div>
<div class=”col-sm-6 col-md-3 c4″></div>
</div>
</div>
</body>

 

bootstrap的网格系统理解:bootstrap把网页均分为12份,我们可以根据自己的需要自行分配每列内容显示所占的份额(如3列的分法有:1-9-1、2-8-2、3-6-3、4-4-4等)。此外,class前缀有四种:1、.col-xs-(代表:屏幕大小<=768px,此时可显示内容的最大区域自动);2、.col-sm-(代表:768px<=屏幕大小<=992px,此时可显示内容的区域最大为750px);3、.col-md-(代表:992px<=屏幕大小<=1200px,此时可显示内容的区域为970px);4、.col-lg-(代表:屏幕大小>=1200px,此时可显示内容的区域最大为1170px)。四种网格系统可以联合使用。

 

三、移动端的响应式:

在<head>标签中导入bootstrap的css框架包,然后输入下面语句(语法结构如下):

<meta name=”viewport” content=”width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no” />

理解:设置 meta 属性为 user-scalable=no 可以禁用移动端的缩放(zooming)功能;initial-scale——最初比例;minimum-scale——最小比例;maximum-scale——最大比例。此处时1:1:1,你也可以根据需要自行设置。

这样,在PC端设置的css样式在移动端也时一样的效果,不会因为移动端的屏幕变小而使内容缩小。

CSS媒体查询,CSS根据不同的分辨率显示不同的样式 - 鱼塘总裁 - 博客园

mikel阅读(873)

来源: CSS媒体查询,CSS根据不同的分辨率显示不同的样式 – 鱼塘总裁 – 博客园

在写响应式网页的时候,我们需要网页有几种显示方式,我们可以用CSS实现这个功能

使用CSS提供的媒体查询,我们可以根据屏幕分辨率来使用相应的CSS样式

1
2
3
4
5
6
7
8
9
@media screen and (max-width1000px) {
/*此条件表示最大宽度为1000,也就是如果宽度小于1000则执行以下CSS代码*/
#idming{
    color:#f00;
}
.leiming{
    color:#f66;
}
}

 

已知国内量化平台 - 廖贵宾 - 博客园

mikel阅读(1193)

来源: 已知国内量化平台 – 廖贵宾 – 博客园

盈时

成立时间:2016.06
服务:
1.选取参数,自动生成策略(需要购买次数)
2.购买别人的策略
语言:   Python
目标客户:   期货投资者(有无编程基础都可)
数据库:   期货
回测用时:   需要排队分钟记
支持的功能:   支持将策略使用在交易开拓者的平台,属于实盘交易。策略给出建议,但需要自己手动确定进行买卖。
优势:
1.对期货做策略(竞争少)
2.运用机器学习,理论更新颖
3.能够自己代入实盘
自动生成策略原理与简介:   通过设置参数,然后通过机器学习的方法,判断期货应该如何交易才能盈利。
备注:国内首个利用深度学习的人工智能量化平台

聚宽

成立时间:   2015.05
服务:
1.选取参数,自动生成策略
2.可以自己编写代码,生成策略(有代码显示)
语言:   Python, R
目标客户:   有经验的quant
数据库:   全面
回测用时:   分钟记(动图的形式)
支持的功能:
1.支持日级、分钟级回测
2.支持日级、分钟级、tick级模拟交易
3.免费提供A股行情、财务数据、指数数据、基金数据
优势:
1.期货,期权有数据,但得自己做
2. 支持回测中访问网络
3.社区活跃,有很多不错的ETF策略
4.有销售策略活动
5.Api丰富且友好
自动生成策略原理与简介:   通过设置的参数,不断筛选股票池里的股票,然后根据市场变动,判断是否进行操作。(打分法)
备注:
1. 门槛低,人人皆可为宽客
2. 可设置股票是否复权

优矿

成立时间:   2015.10
服务:   可以自己编写代码,生成策略(有代码显示)
语言:   Python
目标客户:   刚入门的quant,有编程基础
数据库:   全面
回测用时:   以秒记(动图的形式)
支持的功能:
1.IPython Notebook与回测引擎的整合可做参数优化
2.支持分钟线回测及日数据仿真交易
3.CAL库支持了不少常用的不常用的金融算法
4.可自定义library,复用自己的模块
优势:
1.数据全面
2.有比赛可以进行交流
3.有适用于高频交易的专业版
备注:   比赛的形式还是挺吸引人的

Ricequant

成立时间:   2014.12
服务:   需要自己编写代码生成策略
语言:   Python,Java
目标客户:   有经验的quant
数据库:   A股(2005年至今)
回测用时:   分钟回测
支持的功能:
1.针对 FOF 投资的 CRM 功能
2.支持用户分组
3.自动邮件提醒
4.数据更新选项
优势:
1.使用RQBeta回测绩效分析,结果展示丰富
2.视觉设计和文档做的非常棒,特别是回测结果页面,看着很舒服
3.定期举办比赛

BigQuant

成立时间:   2016.04
服务:   选取参数,自动生成策略(使用机器学习,并配有代码)
语言:   Python
目标客户:   一般股民
数据库:   A股
回测用时:   十分钟
支持的功能:
1.因子可供选择得很多
2.有基础知识教程
优势:
1.可供选择的因子多
2.门槛低
自动生成策略原理与简介:   选取参数后,使用历史数据,利用机器学习的原理考虑是否进行交易,在实盘时,用实盘日期,回测时用传入的数据。(机器学习)

镭矿

成立时间:   2015.04
服务:
1.选取参数,自动生成策略
2.可以自己编写代码,生成策略
语言:   Java、Python
目标客户:   一般股民
数据库:   A股(2012至今)
回测用时:   以秒记
支持的功能:   回测速度快
优势:
1.回测速度快
2.可以使用Java
自动生成策略原理与简介:   选取参数后,不断筛选股票,然后根据实际价格变动,判断是否进行操作。(打分法)
备注:   基础知识介绍偏少,但有相关代码介绍,有长短期的区别

果仁网

成立时间:   2015.08
服务:   选取参数,自动生成策略(没有代码)
语言:   未知
目标客户:   一般投资者
数据库:   国内上市的A股和ETF
回测用时:   以秒记
支持的功能:   考虑对冲(vip)
优势:
1.因子选择界面感觉最舒服
2.回测快
3.将对冲考虑在内
自动生成策略原理与简介:   选取因子后,筛选出股票然后排名。一种是在每个交易日结束时卖出,然后买入想要的股票;另一种是卖出不符合的股票,买入合适的股票。(打分法)
备注:   界面用起来挺舒服,有长短期的区别

京东量化

服务:
1.选取参数,自动生成策略
2.可以自己编写代码,生成策略(有代码显示)
语言:   Python(Java还不能用)
目标客户:   一般投资者
数据库:   指数数据、京东大数据
回测用时:   以秒记、以动图的形式体现
支持的功能:   提供量化选股服务
优势:
1.回测速度快
2.可以量化选股
自动生成策略原理与简介:   选取因子后,筛选出股票。然后根据之前的数据,和今日实时更新的数据,判断如何对股票进行操作。(打分法)
备注:   无长短期分别,但有调仓周期

Factors

成立时间:   2016.11
服务:   选取因子,自动生成策略 。
语言:   未知
目标客户:   一般股民
数据库:   A股
回测用时:   无法回测
优势:
1.无需编程,自动生成策略。
2.综合运用多因子构建模型对股票进行评价
自动生成策略原理与简介:   选取因子后,筛选出股票。然后根据实时数据,判断是否交易。(打分法)

掘金 

成立时间:   2015.01
服务:   选取策略模版,手动编程
语言:   C/C++、C#、MATLAB、Python、R
目标客户:   投资者、策略提供者
数据库:   全面
回测用时:   首次回测秒级完成,后续回测毫秒级完成
支持的功能:
1.统一的量化交易接口
2.一致的策略事件模型
3.完善的风险控制机制
4.多策略多账户支持
5.完整的策略生命周期管理
优势:
1.策略存放在本地,安全性高
2.可定制性强
3.定期举行比赛
备注:   支持tick数据

微量网

成立时间:   2014.01
服务:   选取参数,自动生成策略(没有代码)
语言:   未知
目标客户:   一般投资者
数据库:   全面
支持的功能:   期货程序化CTA策略
优势:   有策略从上传到出售全流程链   自动生成策略原理与简介:   选取因子后,筛选出股票。然后根据实时数据,判断是否交易。(打分法)
备注:   国内首家采用策略云托管模式的投资平台

众量网

成立时间:   2014.01
服务:选取参数,自动生成策略(没有代码)
语言:   未知
目标客户:   一般投资者
数据库:   全面
回测用时:   以秒记
支持的功能:   通过众包做量化投资策略,全视角,跨品种,多周期,无编程
优势:
1.品种多样化
2.效率高
自动生成策略原理与简介:   建立一个建仓条件,一个出仓条件,可以设置止损和分批建仓次序。然后看盈利多少(按行业分)
备注:   个人感觉做得太过粗糙

云量科技

成立时间:   2015.11
服务:选择策略及交易账户层面的风控模块(即刻使用)
语言:   未知
目标客户:   投资者、策略提供者
数据库:   全面
回测用时:   以秒记
支持的功能:   量化投资策略开发、交易算法设计、投资咨询、移动互联网(投资类)应用开发
优势:
1.高模仿人类对话
2.超智能营销多维度精确锁定,主动出击唤醒
3.全网覆盖、7*24小时服务
备注:   是一个公司,提供机器人服务,不是量化投资平台

诸葛量化

成立时间:   2016.12
服务:选取参数,自动生成策略(没有代码)
语言:   Lua   目标客户:   投资者、策略提供者
数据库:   A股
回测用时:   以秒记
支持的功能:   策略生成 ,策略购买;资产配置 ,条件选股
优势:
1. 快速生成策略
2. 自带遗传基因算法,智能优化策略
自动生成策略原理与简介:   选股方法有两种:打分法,趋势法(今日比昨日打分高就买进)。然后通过遗传算法改进策略,达到满意为止(有遗传代数限制),最终接入实盘。

量化大师(软件)

成立时间:   2013.08
服务:选取参数,自动生成策略(没有代码)
语言:   未知
目标客户:   一般投资者(散户)
数据库:   A股
支持的功能:   量化选股、策略回溯、策略提醒、程序化交易
优势:   效率高
自动生成策略原理与简介:   选取因子后,根据实时股价进行筛选,选出排名靠前的股票(个数自己设置),然后根据实时数据,判断是否交易。(打分法)
备注:   一款手机app

况客

成立时间:   2014.12
服务:   提交数据,生成图表,检验信息的准确性
语言:   R
目标客户:   投资者、策略提供者
数据库:   A股
支持的功能:   针对 FOF 投资的 CRM 功能,支持用户分组,自动邮件提醒,数据更新选项
优势:
1.量化策略可根据用户需求灵活定制
2.操作简单
3.交易策略评估清晰明确
4.工具免费化
5.可网络调度
备注:   是对你手上已有数据的一个可视化处理,让数据看起来更加形象。

MindGo

成立时间:   2017.02注册商标
服务:   需要自己编写代码生成策略
语言:   Python
目标客户:   投资者、策略提供者
数据库:   A股
回测用时:   以秒记
支持的功能:   数据研究、策略回测、模拟交易、自然语言选股/回测
优势:
1. 数据齐全
2. 支持tick回测
3.支持自然语言回测
4.定期举行比赛

BotVS

成立时间:   2015.07
服务:需要自己编写代码生成策略
语言:   JavaScript、Python、云端编写
目标客户:   投资者、策略提供者
数据库:   全面
回测用时:   以秒记
支持的功能:   回测、实盘模拟交易、实盘接入交易
优势:
1.模块化策略开发
2.策略分享机制
3.P2P模式策略租用机制
4.实盘公开展示
5.支持三大金融市场

DigQuant(点宽)

成立时间:   2004年
服务:   需要自己编写代码生成策略
语言:   MATLAB
目标客户:   投资者、策略提供者
数据库:   全面
回测用时:   以秒记
支持的功能:
1.基于 MATLAB 的量化策略
2.支持股票、期货的策略研究和程序化交易(是一个软件Auto-Trader Pro)
3.量化研究文章分析
优势:
1.其核心架构与微软 Azure 云架构深度整合
2.社区内有《中国证券期货》杂志专栏
备注:
1.基于 MATLAB 的量化策略
2.核心产品主要是巴别塔实时协作平台系列软件产品

OpenQuant

成立时间:   1997年
服务:   需要自己编写代码生成策略
语言:   C#
目标客户:   能提供投资方案的投资策略编写者
数据库:   全面
支持的功能:   交易策略创建开发、策略回测、参数优化、策略运行及风险监控。
优势:
1.可构建大型对冲基金级量化交易解决方案
2.专业用户可扩展全新功能
3.丰富的金融函数及专业软件对接能力

中量网-交易王

成立时间:   2012年
数据库:   全面
支持的功能:   中量金融、中量股票、期货仿真、期货实盘、策略商城

i量化

成立时间:   2015.01
数据库:   全面
支持的功能:   量化交易、金融咨询、社交、在线教育
优势:
1.拥有海外量化投资最专业的平台
2.提供开放的社区和在线教育服务
quantopian

服务:   可以自己编写代码,生成策略(有代码显示)
语言:   Python
数据库:   US equities futures(最早2002)
回测用时:   分钟记(动图的形式)
支持的功能:   回测、实盘模拟交易、实盘接入交易
优势:   能够借助他人做实验检测

quantconnect

服务:   可以自己编写代码,生成策略(有代码显示)
语言:   C#、F#、Python
目标客户:   engineer
数据库:   股票 外汇 基金 期权 期货(US)
回测用时:   分钟记(动图的形式)
支持的功能:   回测、实盘模拟交易、实盘接入交易
优势:
1.可以很方便地将自己的策略应用到实际中
2. lean(Lean Algorithmic Trading Engine)基于C#的算法交易平台的运用和介绍

quantstar

服务:   Qstrader的引入
语言:   Python
支持的功能:   回测、实盘模拟交易、实盘接入交易
优势:   有3本书籍介绍

zulutrade

服务:
1.你可以成为交易者(提供策略)
2.你可以跟随他人的策略
3.策略基于外汇,二元期权
语言:   Java
目标客户:   一般金融爱好者、engineer
数据库:   外汇、二元期权
支持的功能:   外汇策略交易
优势:   专门做外汇方面的

quantbedia

服务:   搜索合适的策略使用,编写策略上传
语言:   Python
数据库:   几乎所有的数据都有
优势:   一个很明显的策略交易平台

algotrading101

服务:   讲解机器学习应用到策略中(主要是教学)
优势:   运用了机器学习

investopedia

服务:   股票,外汇模拟交易(教学)
数据库:   股票  外汇
优势:   教导新手做相关模拟交易

Amibroker

服务:   一个系统化交易的平台
语言:   formula language
数据库:   股票  外汇
优势:   比较全面,功能齐全,速度快

Chrome 错误代码:ERR_UNSAFE_PORT_chrome,错误代码,ERR_UNSAFE_PORT_无知人生,记录点滴-CSDN博客

mikel阅读(904)

来源: Chrome 错误代码:ERR_UNSAFE_PORT_chrome,错误代码,ERR_UNSAFE_PORT_无知人生,记录点滴-CSDN博客

最近在用Nginx发布多个站点测试,使用了87、88端口,

88端口访问正常,87端口就怎么也访问不了,

点击更多,提示错误代码:ERR_UNSAFE_PORT

不安全的端口?尼玛就只靠端口就能解决不安全问题了?

不想修改浏览器设置的就改用其它端口吧,搜索了一下,Firefox也有类似的端口限制;如果非要使用类似的端口,

我们要做的是允许访问非常规端口地址,解决办法:选中Google Chrome 快捷方式,右键属性,在”目标”对应文本框添加:

–explicitly-allowed-ports=87,6666,556,6667

允许多个端口以逗号隔开,最终如下:

C:\Users\Huoqing\AppData\Local\Google\Chrome\Application\chrome.exe –explicitly-allowed-ports=6666,556
附录:Google Chrome 默认非安全端口列表,虽然以上方法可以解决问题,但建议尽量避免以下端口:

1, // tcpmux
7, // echo
9, // discard
11, // systat
13, // daytime
15, // netstat
17, // qotd
19, // chargen
20, // ftp data
21, // ftp access
22, // ssh
23, // telnet
25, // smtp
37, // time
42, // name
43, // nicname
53, // domain
77, // priv-rjs
79, // finger
87, // ttylink
95, // supdup
101, // hostriame
102, // iso-tsap
103, // gppitnp
104, // acr-nema
109, // pop2
110, // pop3
111, // sunrpc
113, // auth
115, // sftp
117, // uucp-path
119, // nntp
123, // NTP
135, // loc-srv /epmap
139, // netbios
143, // imap2
179, // BGP
389, // ldap
465, // smtp+ssl
512, // print / exec
513, // login
514, // shell
515, // printer
526, // tempo
530, // courier
531, // chat
532, // netnews
540, // uucp
556, // remotefs
563, // nntp+ssl
587, // stmp?
601, // ??
636, // ldap+ssl
993, // ldap+ssl
995, // pop3+ssl
2049, // nfs
3659, // apple-sasl / PasswordServer
4045, // lockd
6000, // X11
6665, // Alternate IRC [Apple addition]
6666, // Alternate IRC [Apple addition]
6667, // Standard IRC [Apple addition]
6668, // Alternate IRC [Apple addition]
6669, // Alternate IRC [Apple addition]
————————————————
版权声明:本文为CSDN博主「微wx笑」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/testcs_dn/article/details/39186225

c# winform最小化到托盘,也就是最小化到右下角,其实很简单,winform中有专门的控件 - 要每天开心 - 博客园

mikel阅读(1161)

来源: c# winform最小化到托盘,也就是最小化到右下角,其实很简单,winform中有专门的控件 – 要每天开心 – 博客园

C# winform最小化到托盘,也就是最小化到右下角,其实很简单,winform中有专门的控件。
2010年04月12日 星期一 15:23

C# winform最小化到托盘,也就是最小化到右下角,其实很简单,winform中有专门的控件。

下面是完整的代码,没太多需要解释的。

先在winform中添加notifyIcon控件,然后激活相应事件,添加代码。因为屏蔽了关闭窗体事件,可以设定一个全局变量bool变量来分辨是哪里引起的close事件。

//设置全局变量bool closeTag = true;

        //最小化
private void form1_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
NormalToMinimized();
}
}
//close时最小化
private void form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
NormalToMinimized();
}
//单击显示窗体
private void notifyIcon_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.MinimizedToNormal();
}
}
private void MinimizedToNormal()
{
this.Visible = true;
this.WindowState = FormWindowState.Normal;
notifyIcon.Visible = false;

        }
private void NormalToMinimized()
{
this.WindowState = FormWindowState.Minimized;
this.Visible = false;
this.notifyIcon.Visible = true;
}
private void frmMain_FormClosing(object sender, FormClosingEventHandler e)
{
if (closeTag)
{
e.Cancel = true;
NormalToMinimized();
}
}
//托盘右键关闭事件
private void 退出XToolStripMenuItem_Click(object sender, EventArgs e)
{
closeTag = false;
Application.Exit();
}

ChromiumWebBrowser [链接] - 亚特凯瑟琳 - 博客园

mikel阅读(2723)

来源: ChromiumWebBrowser [链接] – 亚特凯瑟琳 – 博客园

 

  1. 谷歌出品,必属精品——嵌入式Chromium框架(cef)     Cefsharp使用教程四( js回调,C#方法)     IRequestHandler.OnResourceResponse Method  chromiumembedded
  2. Using HTML as a UI Elements in a WinForms Application with Chrome / Chromium Embedded Framework (CEF)
  3. WebDocument.h       Getting DOM from page using Chromium/WebKit      chrome://version/     Chromium (CefSharp) Tor Browser
  4. c#中如何向chromewebbrowser写入html  DSkin 的WebUI开发模式介绍,Html快速开发Winform的UI  WinForms can’t load local html file
  5. 一个小巧、轻量的浏览器内核,用来取代wke和libcef   屌炸天的内核来袭,史上最小chromium内核miniblink!    Chromium (CefSharp) Tor Browser
  6. Cefsharp cookie独立,多开窗口,mp3,mp4播放    How do I read a cookie value?  CEF 获取Cookie例子 CefCookieManager C++
  7. CEF 中获取浏览器Cookie  CefSharp ChromiumWebBrowser设置Cookie的方式   Cef Cookie clear  Cefsharp clearing cache,cookies and browser data in wpf  Delete cookies, how? CEF.SetCookie() does not set cookie #102
  8.  基于.net开发chrome核心浏览器【三】  ChromiumWebBrowser Disable Right-Click Context Menu C#  Cefsharp how to get current URL address? c# CefSharp ChromiumWebBrowser初始化完成后加载网址  CefSharp 删除 Cookie 的方法  CEF设置cookie
  9.  How to save cookies in CefSharp  Cef.GetGlobalCookieManager().VisitAllCookies are different from Chrome browser
  10.  CefSharp中ChromiumWebBrowser打开新页面处理(_blank)    CefSharp(二) 文件下载功能    使用CEfSharp之旅(3)下载文件 弹出保存框 IDownloadHandler
  11.  Force CEFSharp to download without showing dialog   How change header “Accept-Language”    CEF Forum • Accept-Language not workingNov 11, 2559 BE
  12. CEF Forum • Detecting OS language within browserSep 22, 2558 BE   CEF Forum • Browser language settings – MAGPCSS Web PortalAug 14, 2558 BE   CEF Forum • How change header “Accept-Language”
  13. Close tab on window.close() #1084  CefSharp/CefSharp/ILifeSpanHandler.cs   【CefSharp】 禁用右键菜单 与 控制弹出窗口的方式(限版本39.0.0.1)     How to handle mouse click in CefSharp to navigate back and forward
  14. CefSharp之三-如何获取request和response CefSharp之二–如何看懂demo中的例子,以及按照例子进行开发  解决CefSharp的CefReturnValue问题
  15. Chrome not making a real post request – “CAUTION: Provisional headers are shown”    How to use CefSharp (chromium embedded framework c#) in a Winforms application

    IDialogHandler.OnFileDialog Method  CefSharp/CefSharp.Example/TempFileDialogHandler.cs  How can I read uploaded file in CefSharp?   cef / JavaScriptIntegration   CefSharp 与 js 相互调用   [Winform]CefSharp ——js调用c#方法

    how-do-you-expose-a-net-class-to-javascript  BoundObject    tooltipText not display(web element title)  Send POST data to URL with CefSharp C#   ClientHandler::OnBeforeBrowse – no POST data?

  16.  Add support for browser-side navigation (PlzNavigate)   CefSharp禁止弹出新窗体,在同一窗口打开链接,并且支持带type=”POST” target=”_blank”的链接
  17.  使用 CEFPython 打造自己的浏览器视图     让基于CEF的应用支持自定义协议  易语言CEF支持库增强模块   如何在网页中POST任意内容并跳转  使用POST请求跳转页面  Chromium Post
  18.  OnBeforePopup return false but new windows open [a target=”_blank”]?   First you need to create a custom BrowserRequestHandler class such as this:
  19.  Chrome not making a real post request – “CAUTION: Provisional headers are shown”   CefSharp使用教程三(Cookie处理)   CefSharp how to store cookies 使用CEF类库处理HTTP请求

    Javascript Binding v2 #2246  CefLifeSpanHandler, customized OnBeforePopup problem  ClientAdapter.cpp  TempFileDialogHandler  List of Chromium Command Line Switches

  20. How to implement drag & drop with CefSharp WinForms CefSharp中文帮助文档  第一次使用CEF做个Demo  MenuHandler.cs  WinForm — CEF的使用和一些坑处理
  21. How to set Frame Name of new browser when handling OnBeforePopUp in CEFSharp  基于.net开发chrome核心浏览器【三】 Xilium.CefGlue  Chromium Embedded Framework (CEF) Automated Builds  
  22. SharpBrowser   解决cef加载flash时弹出黑框的问题 Popup handler in Cefsharp  CefGlue 加载FLASH 使用HOOK方式 解决CEF加载PPAPI FLASH插件时弹出CMD命令行窗口的问题
  23.  Capturing a pop up window using LifeSpanHandler and CefSharp DownloadHander – Hide current browser How to get browser object outside of OnAfterCreated …
  24.  Output files description table (Redistribution)  CEF 中的那些坑  正解,但需要将 msvcp120.dll msvcr120.dll 拷贝至C:\Windows\System32
  25.  cefsharp如何支持flash插件  用Tchromium替换webbrowser   CefSharp中文帮助文档    10. 当我重新发布使用CefSharp的应用程序时,需要包括什么文件?请参阅: Output files description (Redistribution)
  26.  CefSharp.MinimalExample  Chrome浏览器中手动设置Cookie的值

    CefSharp配置,添加指定flash插件支持(不能播放Flash的解决方法)

  27.  CefSharp 与 js 相互调用  cefsharp 关于C# 调用JavaScript的一个坑

  28. General Usage

  29. ===插件开发

  30. Chrome插件(Extensions)开发攻略

WordPress 5.3.1自动更新失败 手动更新解决办法-主机吧

mikel阅读(983)

来源: WordPress 5.3.1自动更新失败 手动更新解决办法-主机吧

WordPress作为全球最受欢迎的开源程序由于种种原因国内访问官网一直很垃圾,虽然有中文版,但是并没有中文官网,经常性访问不了,不仅插件经常性更新失败,而版本更新也经常失败。

比如这次主机吧更新WordPress 5.3.1就出现了安装失败,其根本原因是国内网络根本访问不了wordpress.org。

Notice: 发生了预料之外的错误。WordPress.org或是此服务器的配置可能出了一些问题。如果您持续遇到困难,请试试支持论坛。 (WordPress无法建立到WordPress.org的安全连接,请联系您的服务器管理员。) in /www/wwwroot/zhujib.com/wp-admin/includes/update.php on line 139

正在从https://downloads.wordpress.org/release/zh_CN/wordpress-5.3.1.zip下载更新…

下载失败。: Too Many Requests

安装失败

解决办法只能手动更新了,下载WordPress 5.3.1 到本地电脑。

1.把WordPress 5.3.1压缩包的里的wp-content目录删掉

 

2.进FTP或主机管理后台删除根目录下的wp-includes和wp-admin文件夹。

3.上传删除后的压缩包到网站服务器上并覆盖现有的WordPress 文件

4.在浏览器里面运行:https://你的博客地址/wp-admin/upgrade.php,回车访问,执行升级,点击继续升级数据库,升级完成即可。