小编Chr*_*ian的帖子

"物化视图"的最佳方式

(PostreSQL 8.2,在WindowsXP上运行)

我有很多复杂的查询,每个查询运行几秒钟.它们实际上不是"观点",但可以这样对待.

我决定将那些"视图"中的结果记录保存到表中,我将其称为"辅助"(辅助)表.

我可以保证在计算"aux"表后没有数据变化.

我们举一个例子:

我有一个查询"X",所以我坚持它的结果在"Table_X".记录集是这样的:

PERSON*     FIELD_A*     FIELD_ B         FIELD_C
=======================================================
1           10           Value1           Value2
1           20           Value3           Value4
1           30           Value5           Value6
------------------------------------------------------
2           10           Value1           Value2
2           20           Value3           Value4
------------------------------------------------------
3           20           Value3           Value4
3           30           Value5           Value6
------------------------------------------------------
etc..

(*)Primary key is: person, field_a
Run Code Online (Sandbox Code Playgroud)

如您所见,每个"人"在此表中都有他的记录子集.

所以,我可以快速获取他的记录 "select * from table_x where person = <person>".

我将始终只提取<person>,我的所有查询都有相同的"面孔":"PERSON"+ Some_Fields.

重要提示:当我"重新填充"它们时,所有"aux"表都可以被其他事务处理(很明显,在我提交之前使用"旧"数据).但我可以保证他们永远不会被这些交易更新.

我目前的流程是:

- START TRANSACTION;
  - DO A LOTS OF OPERATIONS ON DATABASE. INSERT / …
Run Code Online (Sandbox Code Playgroud)

sql postgresql

4
推荐指数
1
解决办法
2118
查看次数

从浏览器下载并安装apk的Html页面

我有一个应用程序将由用户从公共网络服务器(在Android市场之外)安装.

所以我在webserver中托管了apk,并指示用户键入url来下载文件,然后"打开"下载的文件进行安装.

但是,几乎100%的用户都难以完成这些简单的任务(他们不熟悉技术......).

所以,我决定制作一个简化任务的网页.该页面包含一个大按钮,该按钮将:

  • 下载apk;
  • 下载完成后,启动"Android安装对话框"安装下载的apk;

下载文件非常简单,但现在我的问题是从浏览器打开"安装对话框"!

我完全是关于html/javascript的新手,我不知道该怎么做(或者即使这是可能的).

browser installation android android-intent apk

3
推荐指数
1
解决办法
3万
查看次数

如何以编程方式设置ga_trackingId属性?

我有一个应用程序,但根据用户的选择,它将在谷歌分析中完全分开监控,因此我需要以编程方式为EasyTracker设置"ga_trackingId".

我试过EasyTracker.getTracker().setAppId(id)没有运气.

android google-analytics google-analytics-api

3
推荐指数
1
解决办法
5245
查看次数

保持SELECT不检索在事务开始后提交的行

鉴于这种情况:

TIME  TRANSACTION 1             TRANSACTION 2
1sec  BEGIN
2sec  INSERT RECORDS INTO T1   
3sec  (doing other things)      BEGIN
4sec  (doing other things)      (doing other things)   
5sec  COMMIT                    (doing other things)   
6sec                            SELECT * FROM T1    <<- GETS ROWS INSERTED BY T1
Run Code Online (Sandbox Code Playgroud)

根据postgres文档:

另请注意,如果其他事务在执行第一个SELECT期间提交更改,则两个连续的SELECT命令可以看到不同的数据,即使它们位于单个事务中

问题是:如何避免SELECT在事务开始和查询开始之间提交行.

sql postgresql concurrency transactions isolation-level

3
推荐指数
1
解决办法
83
查看次数

Postgres:将"name = value"值列表转换为表格

转换此字符串:

n1=10;n2=50;n3=60;n4=20
Run Code Online (Sandbox Code Playgroud)

使用这样的东西(在Postgres 9.x中):

select * 
  from (some_engine_to_convert_this('n1=10;n2=50;n3=60;n4=20')) t
Run Code Online (Sandbox Code Playgroud)

得到这样的结果:

Name Value
v1   10
v2   50
v3   60
v4   20
Run Code Online (Sandbox Code Playgroud)

PS:我无法创建任何功能,所以我只需要使用内置函数的Postgres.

提前致谢.

sql postgresql

3
推荐指数
1
解决办法
771
查看次数

从类引用(Delphi)创建的表单执行方法

我有一个表单(form2),我实现了以下PUBLIC方法:

function ShowInterface(i:integer):boolean;
Run Code Online (Sandbox Code Playgroud)

此表单位于动态加载的包中.现在我想实例化这个表单(form2)并执行上面的方法.

重要提示:我无法在form1中引用form2的单元.

我尝试了这段代码,但它从未找到"ShowInterface"指针(返回nil).

procedure TfrmForm1.Button1Click(Sender: TObject);
var
  PackageModule: HModule;
  AClass: TPersistentClass;
  ShowInterface: function (i:integer):boolean;
  frm: TCustomForm;
begin
  PackageModule := LoadPackage('form2.bpl');
  if PackageModule <> 0 then
  begin
    AClass := GetClass('TfrmForm2');
    if AClass <> nil then // <<-- FINE!! IT FINDS OUT 'TfrmForm2' in 'form2.bpl')
    begin
      frm := TComponentClass(AClass).Create(Self) as TCustomForm;
      ShowInterface := frm.MethodAddress('ShowInterface'); // <<-- HERE!! ALLWAYS RETURNS "NIL"
      if @ShowInterface <> nil then
        ShowInterface(1);
      // but if I call frm.Show, it works fine. frm is "loaded"!!!

      frm.Free; …
Run Code Online (Sandbox Code Playgroud)

delphi packages runtime

2
推荐指数
1
解决办法
2437
查看次数

Android:在onCreate之前设置活动方向,但不在清单中(HDMI插入问题)

通过使用setRequestedOrientationin ,我可以以编程方式完美地管理方向变化onCreate.

一切正常,直到我插上HDMI线.在此之后,平板电脑"希望"处于横向模式.所以,当我打开一个活动,它显示在首"风景",然后将其显示之后在"肖像",(因为我打电话的setRequestedOrientation(variable_with_orientation_desired_by_the_user)地方variable=ActivityInfo.SCREEN_ORIENTATION_PORTRAITonCreate你可以"看",我的应用程序保持在每一个活动旋转用户打开;

如果我在清单中设置活动的方向,则此问题已部分消失,因为清单中的方向与用户拾取的方向相同.如果它们不同,则会再次开始相同的行为.

我试过这个,但没有成功:

@Override
public void onCreate(final Bundle saved)
{
    setRequestedOrientation(ScreenOrientation);
    super.onCreate(icicle);
}
Run Code Online (Sandbox Code Playgroud)

那么,有什么方法可以告诉android它在创建活动之前必须创建什么样的方向?(但它不能显而易见)

android orientation screen-orientation android-orientation android-activity

2
推荐指数
2
解决办法
2811
查看次数

BestPractices:将标准类子类化为一个做同样事情但是"假设"未来变化的新OOP是不是很糟糕?

我过去有过类似的案例,这只是一个例子来说明:

我将在我的Android应用程序中实现一个新功能(但这适用于任何类型的OO项目),此时我需要在每个活动中的每个edittext中的"setVisibility"方法中实现一些"操作"有.

要做到这一点,我必须子类"EditView",并覆盖"setVisibity"方法:

@Override
public void setVisibility(int visibility)
{
    super.setVisibility(visibility);
    // --> do my stuff here! <--
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,这么好......问题是要改变我所有的活动(超过200个,以及thounsands代码行),然后我想:" 为什么我没有启动项目继承标准的EditText,"我知道某些事情,我需要实现这样的事情 ".

这就是重点:将"标准类"子类化为一个做同样事情的新标准是不是很糟糕,但只是"假设"这样的情况?我的意思是,将所有东西都分类,比如按钮,活动等.

AFAIK,设计模式和OOP不鼓励"推定因素",但我会根据您的编程经验,听听您们"在现实生活中做什么"(或考虑一下).

此外,也许这种类型的问题("你的想法","你的意见")在这里不是一个好的做法,但我找不到任何更好的地方来实现它.

java oop android design-patterns

1
推荐指数
1
解决办法
87
查看次数

如何在Firebird中运行时隐藏查询语句?

我必须在Firebird中执行一些查询,但是我需要在mon $语句或任何其他登录数据库中隐藏"查询源".

那是因为查询有一些我无法向其他人公开的业务规则.

有什么办法吗?或者我可以使用一些"技巧"?

sql firebird

0
推荐指数
1
解决办法
119
查看次数