小编Mat*_*t C的帖子

String Literal Pool是String对象或对象集合的引用的集合

看完SCJP Tip Line的作者Corey McGlone撰写关于javaranch网站的文章后,我感到很困惑.命名为Strings,Literally和SCJP Java 6程序员指南,由Kathy Sierra(javaranch的联合创始人)和Bert Bates撰写.

我将尝试引用Corey先生和Kathy Sierra女士引用的关于String Literal Pool的内容.

1.据Corey McGlone先生说:

  • String Literal Pool是指向String对象的引用的集合.

  • String s = "Hello"; (假设Heap上没有名为"Hello"的对象),将"Hello"在堆上创建一个String对象,并在String Literal Pool(Constant Table)中放置对该对象的引用

  • String a = new String("Bye");(假设Heap上没有名为"Bye" new的对象,操作符将强制JVM在堆上创建一个对象.

现在,"new"对于创建String及其引用的运算符的解释 在本文中有点令人困惑,所以我将文章本身的代码和解释放在下面.

public class ImmutableStrings
{
    public static void main(String[] args)
    {
        String one = "someString";
        String two = new String("someString");

        System.out.println(one.equals(two));
        System.out.println(one == two);
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,由于关键字,我们实际上最终会遇到略微不同的行为."new." 在这种情况下,对两个String文字的引用仍然放在常量表(String Literal Pool)中,但是当你来到关键字时"new,"JVM必须在运行时创建一个新的String对象,而不是使用常量表中的那个.

这是解释它的图表..

在此输入图像描述

那么它是否意味着,String Literal Pool也有对这个Object的引用?

以下是Corey McGlone撰写文章的链接

http://www.javaranch.com/journal/200409/Journal200409.jsp#a1

2. …

java string memory-management

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

如何在Dart中创建私有变量?

我想创建一个私有变量,但我不能.

这是我的代码:

void main() {
  var b = new B();
  b.testB();    
}

class A {
  int _private = 0;

  testA() {
    print('int value: $_private');
    _private = 5;
  }
}

class B extends A {
  String _private;

  testB() {
    _private = 'Hello';
    print('String value: $_private');
    testA();
    print('String value: $_private');
  }
}
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我得到以下结果:

String value: Hello
int value: Hello
Breaking on exception: type 'int' is not a subtype of type 'String' of 'value'.
Run Code Online (Sandbox Code Playgroud)

编辑此源代码时,我也没有收到任何错误或警告.

如何在Dart中创建私有变量?

dart

48
推荐指数
4
解决办法
2万
查看次数

从before_action中排除控制器

我正在使用before_action过滤器来调用authenticate哪种方法,如果用户无权访问所请求的页面,则会将用户重定向回主页.

我想从此步骤中排除一个页面,仅用于测试目的.

到目前为止我所看到的是,我可以使用except以排除某些控制器操作受到before_action过滤器的影响,如下所示:

before_action :authenticate, except: :demo_login
Run Code Online (Sandbox Code Playgroud)

我也可以像这样一次排除多个动作:

before_action :authenticate, except [:demo_login, :demo_show]
Run Code Online (Sandbox Code Playgroud)

如何排除特定控制器中的所有操作?

controller ruby-on-rails ruby-on-rails-4

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

声明没有初始值的变量

这个Scala教程有关于声明没有初始值的变量的以下内容:

如果您没有为变量分配任何初始值,则它有效,如下所示:

var myVar :Int;  
val myVal :String;
Run Code Online (Sandbox Code Playgroud)

但是当我在Scala REPL中尝试该代码时,我收到以下错误:

scala> var myVar :Int;
<console>:10: error: only classes can have declared but undefined members
(Note that variables need to be initialized to be defined)
       var myVar :Int;
           ^

scala> val myVal :String;
<console>:10: error: only classes can have declared but undefined members
       val myVal :String;
Run Code Online (Sandbox Code Playgroud)

为什么是这样?是旧版Scala的教程吗?
我找不到本教程编写的Scala的特定版本,但我在OpenJDK 64bit,Java 1.8.0_66上运行Scala版本2.11.7.


  • 教程是否过时,或者是我的环境问题?

  • 是否可以在不初始化的情况下声明变量(var或val)?

scala

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

在循环中打破或返回的练习

背景:我正在制作国际象棋比赛.它几乎完全正常工作,只是错过了对将军的检查,但是我正在改进一些代码以便于阅读等等.
现在,我正在重新编码一种方法,我必须检查从任何一块到另一个位置的路径.如果有一个块阻塞路径则返回true,如果没有阻塞路径则返回false.
注意:我不需要检查最后一个位置的位置,因为我的游戏会检查以确保您没有占据您想要移动的位置.

还要注意我已经研究过这个问题,我发现主要是在这里达成的共识是,破解是正确的解决方案.这比在循环外部初始化布尔变量并设置为true或false并打破该值的循环更受欢迎.但是,我的循环中有两个条件可能会使我的代码返回true或返回false,所以我不能完全这样做.

现行守则

public boolean isPathClear(Location l1, Location l2) {

    int atx = l1.getX(); 
    int aty = l1.getY(); 
    int xdiff = 0, ydiff = 0;
    int endx = l2.getX(), endy = l2.getY();

    if(l1.getX() > l2.getX()) {
        xdiff = 1;
    }
    if(l1.getX() < l2.getX()) {
        xdiff = -1;
    }
    if(l1.getY() > l2.getY()) {
        ydiff = 1;
    }
    if(l1.getY() < l2.getY()) {
        ydiff = -1;
    }

while(true) {
        atx += xdiff; 
        aty += ydiff;

        if(atx == endx && aty …
Run Code Online (Sandbox Code Playgroud)

java loops return break conditional-statements

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

Rails MVC - 数据库搜索逻辑应该放在模型还是控制器中

我想确保根据以下范例/模式正确组织/设计我的代码:

- 模型视图控制器

- 配置Rails惯例

- 瘦模控制器,脂肪模型

我按照我认为最重要的顺序将它们列在这里.


我的问题

在阅读了几篇文章后,特别是这篇文章和这篇文章,我开始将控制器中的一些逻辑移到我的模型中.

但是,我无法决定是否将我的搜索逻辑(稍后深入解释)从控制器移动到模型,即使在阅读了更多这样的帖子/文章后:MVC思考,模型与控制器,分离关注点还有更多未列在这里.


场景

视图

两页:

  • 1页包含一个文本字段和提交按钮,该按钮将用户输入作为参数发送到第二页的POST请求中的参数.

  • 第二页简单地渲染给定数组中的每个neatObject,让我们称之为@coolList.

调节器

  • 当第二个页面收到POST请求时,将调用一个名为awesomeSearch的方法.(感谢Rails路由)
  • awesomeSearch应该使用用户的输入,以params [:searchString]的形式提供,并使用NeatObject模型构建@coolList并使该列表可用于呈现的视图.

模型

  • NeatObject模型处理来自控制器的请求,并返回neatObjects回到那些控制器.

  • NeatObject模型定义之间的关系neatObjects在我们的数据库和其他表.

数据库

这些是根据我们的数据库构成每个neatObject的属性:

  • id - int
  • description - 字符串
  • 地址 - 字符串
  • date_created - 时间戳

少了什么东西?

控制器如何与模型一起使用以获得用户输入的匹配.

这是我感到困惑的部分.逻辑本身非常简单,但我不确定哪些部件属于模型,哪些部件属于控制器.

  • 控制器是否应将搜索字符串传递给模型,模型会将结果传回?

  • 控制器是否应该向模型询问所有 neatObjects,那么只保留匹配的neatObjects? …

model-view-controller ruby-on-rails ruby-on-rails-4

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

ElasticSearch 安装错误 - curl: (7) Failed connect to localhost:9200; 拒绝连接

我正在尝试使用教程配置 ElasticSearch

除了教程的第 4 步,我做了所有的事情。


在第 5 步中,当我运行此命令时:

curl -X GET 'http://localhost:9200'
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

curl: (7) Failed connect to localhost:9200; Connection refused
Run Code Online (Sandbox Code Playgroud)

我尝试了两种不同的方法来修复错误:

  1. network.bind_host: 0.0.0.0

  2. 网络:主机:192.168.2.229

但都没有解决问题。

我应该怎么做才能测试 Elasticsearch 并解决这个错误?

谢谢。

centos elasticsearch spring-data-elasticsearch

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

实现JavaScript内部方法的源代码

有没有办法查看JavaScript方法背后的代码?不是网站的.html或.js文件中的javascript方法,而是JavaScript的内部方法。

例如:

  • 如何查看JavaScript如何计算offsetTop元素的?

javascript language-implementation

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

以角度查看图像的斑点响应

我试图从请求中获取Blob响应,然后从该Blob生成一个URL,并将此URL设置为图像的源。

但是图像未加载。

这是我的HTML:

<img src="{{previewSignsrc}}" alt="Sign Thumbnail">
Run Code Online (Sandbox Code Playgroud)

这是我的.ts文件:

this.signModalDataService.getPreviewSignature({'name': this.SignatureName, 'font_type': 0});
    this.signModalDataService.previewSignature
      .subscribe((res) => {
        console.log(res);
        let blob = new Blob([res['_body']], {type: 'image/png'});
        this.previewSignsrc = URL.createObjectURL(blob);
        this.showPreviewSign = true;
      });
Run Code Online (Sandbox Code Playgroud)

我使用相同的方法进行设置urlng2-pdfviewer效果很好。

javascript angular

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

准备语句如何比语句更好地防止SQL注入?

背景:我已经开始使用JDBC和MYSQL来模拟书店,所有本地项目.为了连接到数据库,我开始使用Statement,但我开始读到,当多次使用查询只更改其参数时,为这些查询使用PreparedStatement会更有效.但是,我最常阅读的优点是PreparedStatements如何更好地防止SQL注入.

来源: 回答这个线程在这里
谷歌
教授

我的问题: 在处理参数化查询时,PreparedStatements如何更好地阻止SQL注入,甚至不同于语句?我很困惑,因为如果我理解正确,值仍然会被传递到执行的SQL语句中,这只取决于程序员清理输入.

java mysql sql jdbc prepared-statement

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

如何在onChange react事件上执行反跳操作?

当用户在输入字段中键入一些信息时,我在执行对服务器的请求时遇到问题。已发送请求,但如果用户快速从字段中删除所有内容,则不会默认发送请求,但会发送最后一个字母。因此会发生一些延迟。

我需要意识到当用户快速键入内容并以2ms的速度发送一次请求时,会发生某种方式的反跳

<input type="text"
  placeholder="add"
  className='input'
  onChange={(e) => this.search(e.target.value)}
  onKeyDown={this.handleSearchParam}
  value={keyword}
/>
Run Code Online (Sandbox Code Playgroud)

处理输入的功能

search(text) {
    this.props.onTextInputAdd(text);
    if (text) {
     this.props.onSearchTypeResult(this.props.tab, text)
    } else {
      this.props.onLoadDefaultInfo(this.props.tab);
    }
}

const mapStateToProps = state => ({
  keyword: state.searchReducers.keyword,
});

const mapDispatchToProps = dispatch => ({
  onSearchTypeResult: (tabName, query) => dispatch(actionCreators.loadSearchInfo(tab, tabQuery)),
  onTextInputAdd: keyword => dispatch(actionCreators.addKeyword(keyword)),
});
Run Code Online (Sandbox Code Playgroud)

这是动作:

const loadSearchResults = (tabName, query) => axios.get(`testurl?query1=${tabName}&query2=${query}`)

export const loadSearchInfo = (tabName, query) => dispatch => {
  loadSearchResults(tabName, query).then(response => {
    const data = { ...response.data …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

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