小编Vis*_*ath的帖子

抽象和摘要在java中

我是一个对面向对象概念有很好理解的java开发人员(或者,我想是这样的).现在我正在学习设计模式(From Head first design patterns).我一直在阅读有关OOPS概念抽象的内容,以便简单地理解它,并且阅读更多有关它的信息让我比以前更加困惑.

据我所知,抽象是指隐藏程序的内部细节,同时将接口暴露给其他程序员,而不必担心内部细节.但是,我不明白

  1. 抽象类如何适应这种抽象概念,抽象类要求我实现抽象方法,其中是在java中使用抽象类的抽象.
  2. 我觉得,抽象可以实现的一种方式是通过私有构造函数并要求类的用户使用工厂方法来获取可以实现和隐藏实现细节的类的对象.

如果我在任何地方都错了,请纠正我.

java abstract-class abstraction abstract

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

使用 puppeteer 返回窗口对象

我试图从页面返回整个 windows 对象,然后遍历 puppeteer 之外的对象。

我正在尝试访问 Highcharts 属性中的数据,为此我需要访问 window 对象。正常的 javascript 代码类似于window.Highcharts.charts[0].series[0].data.

我认为最简单的方法是使用 puppeteer 访问该站点,然后将 windows 对象发回给我,然后我可以像任何其他 JS 对象一样在 puppeteer 之外使用它。

阅读文档后,我发现很难返回对象,因为它看起来只是将“窗口”放入 chrome 控制台。我不确定我错过了什么?

我已经阅读了文档,以下两种方法似乎应该有效?

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto('https://www.example.com', {waitUntil: 'networkidle2'});

    // METHOD 1
    // Create a Map object
    await page.evaluate(() => window.map = new Map());
    // Get a handle to the Map object prototype
    const mapPrototype = await page.evaluateHandle(() => Map.prototype);
    // Query all map …
Run Code Online (Sandbox Code Playgroud)

chromium google-chrome-extension node.js web-scraping puppeteer

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

无法访问动态生成的元素

无法访问动态生成的元素:这是我的json请求函数:

$.getJSON('/getJSON.php?selectorcat='+var1, function(jsonData){

var LI_list_html = '';
var sum = 0;

if(jsonData[0])
    {
        $.each(jsonData, function(i,value)
        {
        var catname = jsonData[i].name;
        var id = jsonData[i].id;
        var DIV_html = catname;

        LI_list_html = LI_list_html+'<li class="selectorsub" data-catselectsub="'+id+'" id="SelectorSubcat_'+id+'">'+DIV_html+'</li>';
        });
        }
        else
        {
            LI_list_html = 'No subcats there..';
        }
Run Code Online (Sandbox Code Playgroud)

所以,当我得到这样生成的HTML:

<ul>
   <li class="selectorsub" data-catselectsub="169" id="SelectorSubcat_169">CAT1</li>
   <li class="selectorsub" data-catselectsub="170" id="SelectorSubcat_170">CAT2</li>
   <li class="selectorsub" data-catselectsub="171" id="SelectorSubcat_171">CAT3</li>
   <li class="selectorsub" data-catselectsub="172" id="SelectorSubcat_172">CAT4</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我无法访问li元素:

$("[id^=SelectorSubcat_]").click(function() {
   alert($(this).data('catselectsub'));
});
Run Code Online (Sandbox Code Playgroud)

我认为生成的元素不是现成的DOM,这就是为什么无法访问它们.

jquery

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

当我有多个可能的提交按钮时,如何在 ENTER 上提交表单?

我有一个不寻常的问题。我的表格是这样的:

     <form>
        <button ng-class="{'btn-primary': ts.test.current == true}"
                ng-click="$state.transitionTo('s.e.q');"
                ng-show="ts.test.current && ts.test.userTestId">
            View
        </button>
        <button ng-class="{'btn-primary': ts.test.current == true}"
                ng-click="getTest(ts.test)"
                ng-show="ts.test.current && !ts.test.userTestId">
            Acquire
        </button>
     </form>
Run Code Online (Sandbox Code Playgroud)

我需要的是回车键来触发当前按钮主要的动作。请注意,主按钮可以是两个按钮之一,具体取决于页面上其他项目的状态。

谁能建议如何做到这一点?我看到了对 ng-enter 指令的引用,但如果可能的话,我认为最好不要使用非标准指令。

这是我迄今为止尝试过的。不幸的是,当我点击进入时什么也没有发生:

            <form ng-show="ts.test.current && ts.test.userTestId"
                  ng-submit="$state.transitionTo('s.e.q');">
                <button ng-class="{'btn-primary': ts.test.current == true}"
                        type="submit">
                    View
                </button>
            </form>
            <form ng-show="ts.test.current && !ts.test.userTestId"
                  ng-submit="getTest(ts.test)">
                <button class="btn"
                        ng-class="{'btn-primary': ts.test.current == true}"
                        type="submit">
                    Acquire
                </button>
            </form>
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

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

Node.JS:使用多个Git存储库

我们有一个node.js项目,其中有几个模块跨越多个Git存储库.模块之间存在依赖关系.

例如:

common模块驻留在自己的存储库中. execution模块驻留在单独的存储库中,并具有(npm)依赖性common.

因此,目录结构中execution包括:(一次npm install被执行)commonnode_modules.

我们的问题是,当开发人员正在开发时execution,他们有时也需要修改common.为了"看到"他们的更改,他们有我们目前使用的两个选项之一:修改node_modules/common(这是丑陋的,未跟踪的等),或修改common存储库,然后按+ npm安装他们的更改(虽然更清洁,非常麻烦).

我们想知道的是,如果这个工作流程有更好的选择......

git repository node.js npm

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

从一个能够很快解决这个承诺的函数中返回角度承诺

我正在编写一个异步的javascript函数,消费者会调用​​它来获取某些数据.以下是我最初编写的简单实现(为了清楚起见,错误处理和其他内容被删除).

function getData(callback){
    if (data is available as a JavaScript object){
        callback(data);
    }else{
        getAsyncData(function(data){
             //some transformations on data
             callback(data); 
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

需要注意的重要一点是,如果数据已作为JavaScript对象可用,则getData可以快速返回数据.

我想将此实现替换为将一个promise对象返回给调用者的实现.这个小提琴显示了示例实现 - http://fiddle.jshell.net/ZjUg3/44/

问题 - 因为getData可以快速返回,即使在调用者使用then方法建立处理程序链之前,getData是否有可能解析 promise ?只是为了模拟这个,如果我在setTimeout函数中调用then方法(零延迟),则不会调用回调函数.如果我在setTimeout函数之外调用then方法,则调用callback.我不确定这是否是一个有效的关注或有效的用例.我是angularjs开发的新手,非常感谢你的观点:)

javascript promise angularjs

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

从谷歌地图API的v2升级到v3,建议

我在我的网络应用程序中完全成熟了谷歌地图版本2,具有获取路线,群集标记,选项卡式信息窗口,上下文菜单(右键单击)等功能.实现设计非常差,导致一些问题,所以现在我需要改进核心实现以更好地设计.我正在考虑升级到谷歌地图API的第3版.请建议,如果这是一件好事,我的所有功能都将运行良好(或者我会在更短的时间内完成所有功能的更换).或者我应该坚持谷歌地图API的版本2?

javascript google-maps google-api google-maps-api-3 google-maps-api-2

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

从移动设备测试应用程序时出错 - ERR_CONNECTION_REFUSED

升级到OSX Yosemite后,我无法再使用我的开发机器(MacBook Pro)IP地址在移动设备上测试我的应用程序.例如,我曾经能够通过访问http://192.168.0.4:3000在手机上查看Rails应用程序,但现在我收到以下错误:

ERR_CONNECTION_REFUSED
Run Code Online (Sandbox Code Playgroud)

使用运行在http://192.168.0.4:9000的grunt服务器测试AngularJS应用程序时出现同样的错误

任何帮助将不胜感激.

macos ruby-on-rails osx-yosemite

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

Cloudfront 限制特定区域

我有一个仅在印度使用的应用程序。我正在使用 Cloudfront 分发来提供资产。我已经实施了版本控制策略,用于更改为构建而更改的资产的名称。

考虑到所有这些,我只需要使 index.html 无效,它负责使用版本化的其他资产。

我正在使用 cloudfront 失效来使 index.html 失效。我观察到,使这个单个文件失效总是需要 2 分钟以上的时间。我理解它是因为它使 42 个边缘位置的文件无效。我不需要将文件放置在 42 边缘位置并使其失效。如果有任何配置仅将文件保留在印度的边缘位置,我想失效会更快。

是否有类似的配置来限制在特定边缘位置复制文件。

amazon-web-services amazon-cloudfront

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

谷歌地图中的MarkerClusterer上的infoWindow

infoWindow单击ClusterMarker时,我需要打开而不是缩放地图.我正在使用Gmaps util库MarkerClusterer来创建标记簇.我尝试在marksclusterer.js中更改以下行

ClusterMarker_.prototype = new GOverlay();
Run Code Online (Sandbox Code Playgroud)

ClusterMarker_.prototype = new GMarker();
Run Code Online (Sandbox Code Playgroud)

这样我就可以openInfoWindow()在集群标记中获得该功能,但这并没有成功.有一些错误.如果可能,请建议解决方案以便完成此操作MarkerClusterer.或者任何其他能够执行此操作的库.任何帮助将不胜感激.

javascript google-maps google-maps-markers

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

undefined()用作函数

我正在阅读一篇关于javascript调试会话的文章,其中作者需要一种方法来进入removeChild of Element以了解哪些代码在运行时删除了一个特定的元素.

因此他使用以下代码

javascript:void(Element.prototype.removeChild=function(){undefined()})
Run Code Online (Sandbox Code Playgroud)

据我所知,"undefined是全局对象的属性,即它是全局范围内的变量." (引自MDN)未定义的类型.

在下一行中,作者说他得到了堆栈跟踪(注意他正在使用opera和dragonfly).

我已经尝试过执行这个代码,如果使用的话,它可以工作,但是如果我尝试只使用它

undefined()
Run Code Online (Sandbox Code Playgroud)

它确实给了我错误"TypeError:undefined不是一个函数",我理解.

任何人都可以解释一下这些代码如何作为有效的javascript工作,以及它如何解决获取堆栈跟踪的问题.

javascript undefined

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