小编Zil*_*ilk的帖子

我是否需要关闭()FileReader和BufferedReader?

我正在使用围绕FileReader的BufferedReader读取本地文件:

BufferedReader reader = new BufferedReader(new FileReader(fileName));
// read the file
// (error handling snipped)
reader.close();
Run Code Online (Sandbox Code Playgroud)

我需要close()FileReader为好,或将包装处理这个问题?我见过人们这样做的代码:

FileReader fReader = new FileReader(fileName);
BufferedReader bReader = new BufferedReader(fReader);
// read the file
// (error handling snipped)
bReader.close();
fReader.close();
Run Code Online (Sandbox Code Playgroud)

从servlet调用此方法,我想确保不打开任何句柄.

java io filereader bufferedreader

179
推荐指数
5
解决办法
15万
查看次数

使用display:flex填充剩余的垂直空间

在3排布局中:

  • 顶行应根据其内容确定大小
  • 底行应具有固定的高度(以像素为单位)
  • 中间行应该展开以填充容器

问题是,当主要内容扩展时,它会删除页眉和页脚行:

弯曲不好

HTML:

<section>
  <header>
    header: sized to content
    <br>(but is it really?)
  </header>
  <div>
    main content: fills remaining space<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    <!-- uncomment to see it break - ->
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    <!-- -->
  </div>
  <footer>
    footer: fixed height in px
  </footer>
</section>
Run Code Online (Sandbox Code Playgroud)

CSS:

section {
  display: flex;
  flex-flow: column;
  align-items: stretch;
  height: 300px;
}
header {
  flex: 0 1 auto;
  background: tomato;
}
div {
  flex: 1 1 auto;
  background: gold;
  overflow: auto;
}
footer …
Run Code Online (Sandbox Code Playgroud)

css layout flexbox

160
推荐指数
5
解决办法
16万
查看次数

当编程语言使用camelCase时,PostgreSQL标识符中的下划线或camelCase?

这困扰了我一段时间,我无法找到一个感觉正确的解决方案......

给定一个OO语言,其中对象属性的通常命名约定是camelCased,以及像这样的示例对象:

{
    id: 667,
    firstName: "Vladimir",
    lastName: "Horowitz",
    canPlayPiano: true
}
Run Code Online (Sandbox Code Playgroud)

我应该如何在PostgreSQL表中建模这个结构?

有三个主要选择:

  1. 未加引号的camelCase列名
  2. 引用camelCase列名
  3. 带下划线的未加引号(小写)名称

他们每个人都有自己的缺点:

  1. 不带引号的标识符会自动折叠为小写.这意味着您可以使用canPlayPiano列创建表,但混合大小写永远不会到达数据库.当您检查表时,该列将始终显示为canplaypiano- 在psql中,pgadmin,解释结果,错误消息,所有内容.

  2. 带引号的标识符保留了它们的大小写,但是一旦你创建它们,你将始终必须引用它们.IOW,如果您创建一个包含"canPlayPiano"列的表,SELECT canPlayPiano ...则会失败.这会给所有SQL语句增加许多不必要的噪音.

  3. 带下划线的小写名称是明确的,但它们不能很好地映射到应用程序语言正在使用的名称.您必须记住为storage(can_play_piano)和code(canPlayPiano)使用不同的名称.它还可以防止某些类型的代码自动化,其中属性和数据库列需要命名相同.

所以我陷入了岩石和坚硬的地方(和一块大石头;有三种选择).无论我做什么,有些部分会感到尴尬.在过去的10年左右,我一直在使用选项3,但我一直希望有更好的解决方案.

我很感激您的任何建议.

PS:我确实意识到案例折叠和引号的需求来自于SQL标准,或者更确切地说是PostgreSQL对标准的改编.我知道它是如何工作的; 我对有关最佳实践的建议比对PG如何处理标识符的解释更感兴趣.

oop postgresql database-design camelcasing naming-conventions

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

如何检查Java程序的输入/输出流是否连接到终端?

我希望Java程序具有不同的默认设置(详细程度,可能是支持的彩色输出),具体取决于其用途.在C中,有一个isatty()函数,如果文件描述符连接到终端,则返回1,否则返回0.在Java中是否有相同的功能?我没有在JavaDoc中看到任何有关InputStream或PrintStream的内容.

java terminal console

39
推荐指数
5
解决办法
9017
查看次数

为什么在Java中使用接口名称声明变量?

这是一个真正的初学者问题(我还在学习Java基础知识).

我可以(有点)理解为什么方法会返回List <String>而不是ArrayList <String>,或者为什么它们会接受List参数而不是ArrayList.如果它对方法没有影响(即,如果不需要ArrayList中的特殊方法),这将使该方法更灵活,更容易用于调用者.其他集合类型也是如此,例如Set或Map.

我不明白的是:通常的做法是创建这样的局部变量:

List<String> list = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

虽然这种形式不太常见:

ArrayList<String> list = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

这有什么好处?

我只能看到一个小缺点:必须添加java.util.List的单独"import"行.从技术上讲,可以使用"import java.util.*",但我也不经常看到,可能是因为某些IDE自动添加了"import"行.

java variables interface declaration

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

如何将记录传递给PL/pgSQL函数?

我有8个类似的PL/pgSQL函数; 它们被用作INSTEAD OF INSERT/UPDATE/DELETE视图的触发器以使它们可写.每个视图组合了一个通用表的列(在下面的示例中称为"事物")和一个特殊表(下面的"shaped_things"和"flavored_things").顺便说一句,PostgreSQL的继承功能在我们的案例中不能使用.

触发器必须在通用表中插入/更新行; 这些部分在所有8个功能中是相同的.由于泛型表有大约30列,我试图在那里使用辅助函数,但是我无法将视图的NEW记录传递给需要things记录作为输入的函数.

(这里这里都提出类似的问题,但我不认为我可以在我的案例中应用建议的解决方案.)

简化的架构

CREATE TABLE things (
    id    SERIAL  PRIMARY KEY,
    name  TEXT    NOT NULL
    -- (plus 30 more columns)
);
CREATE TABLE flavored_things (
    thing_id  INT   PRIMARY KEY REFERENCES things (id) ON DELETE CASCADE,
    flavor    TEXT  NOT NULL
);
CREATE TABLE shaped_things (
    thing_id  INT   PRIMARY KEY REFERENCES things (id) ON DELETE CASCADE,
    shape     TEXT  NOT NULL
);
-- etc...
Run Code Online (Sandbox Code Playgroud)

flavored_things的可写视图实现

CREATE …
Run Code Online (Sandbox Code Playgroud)

postgresql parameters triggers function plpgsql

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

是否必须使用pg_free_result(),即使结果超出范围?

PHP文档有这样的说法pg_free_result():

只有在脚本执行期间的内存消耗成为问题时才需要调用此函数.否则,脚本结束时将自动释放所有结果内存.

http://www.php.net/manual/en/function.pg-free-result.php

我(也许是天真的)已经预料到调用返回的资源pg_query()在超出范围时会被垃圾收集.

在这样的假设函数中:

function selectSomething ()
{
    $res = pg_query("SELECT blah FROM sometable");
    // do something with $res
    pg_free_result($res);   // required or not?
}
Run Code Online (Sandbox Code Playgroud)

是否真的有必要pg_free_result()在最后打电话?

换句话说,如果我将此函数调用1000次,它会占用内存来存储所有1000个结果吗?

编辑:我在谈论典型案例,即pg_connect()代替pg_pconnect().

php postgresql memory-leaks

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

如果我在 Vue.js 3 项目中使用 TypeScript,我的代码会被转译两次吗?

我在 TypeScript、Vue 或 Node 生态系统方面都不是很有经验。

我有一个使用 Vue CLI 创建的工作设置,带有 Vue 3 和 TypeScript,与vue create生成项目和配置的方式几乎没有变化。如果我理解正确,Babel 将参考"browserslist"我的配置package.json并添加 polyfills/rewrite 代码以与旧浏览器一起使用。TypeScript 编译器也有--target--lib选项,它们似乎做类似的事情。

我在 Vue 项目中编写的 TypeScript 代码是否经过了两次转换,首先由 TypeScript 编译器转译,然后由 Babel 转译?如果是这样,有没有办法避免这种冗余?


编辑添加:我刚刚使用上述设置创建了一个新的空白项目,并被问到我是否想要“将 Babel 与 TypeScript 一起使用(现代模式需要,自动检测的 polyfill,转译 JSX)”。我不在 Vue 中使用 JSX,但谁能拒绝“现代模式”,不管那是什么。

web-applications typescript vue.js babeljs vue-cli

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

mbstring.strict_detection有什么作用?

mbstring PHP模块有一个strict_detection设置,在此处记录.不幸的是,手册完全没用; 它只说这个选项"启用严格的编码检测".

我做了一些测试,无法找到任何mbstring函数如何受此影响.mb_check_encoding()mb_detect_encoding()为有效和无效的UTF-8输入提供完全相同的结果.

(编辑:)该mbstring.strict_detection选项是在PHP 5.1.2中添加的.

php configuration mbstring

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

特征的构造函数定义如何冲突?

在PHP 5.4.9中,以下示例触发致命错误"B具有来自traits的碰撞构造函数定义".

trait T {
    public function __construct () {
        echo __CLASS__ . ": constructor called.\n";
    }
}

class A {
    use T;
}

class B extends A {
    use T;
}
Run Code Online (Sandbox Code Playgroud)

当trait包含与构造函数不同的方法时没有问题,并且当构造函数实际复制到类中时没有问题(不使用特征,"语言辅助复制和粘贴"功能).

这里的构造函数有什么特别之处?PHP不应该弄清楚其中一个会覆盖另一个吗?我在手册中找不到任何有关此限制的内容.

这个相关问题提到了解决问题的方法(通过使用特征方法的别名),但不是首先导致它的原因.

php oop constructor traits

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