小编Fra*_*ini的帖子

java中的静态分配 - 堆,堆栈和永久生成

我最近一直在阅读java中的内存分配方案,并且由于我从各种来源阅读,因此有很多疑问.我已经收集了我的概念,并且我会要求完成所有要点并对它们进行评论.我开始知道内存分配是特定于JVM的,所以我必须事先说,我的问题是Sun特定的.

  1. 类(由类加载器加载)进入堆上的特殊区域:永久生成
  2. 与类名称,与类关联的对象数组,JVM使用的内部对象(如java/lang/Object)和优化信息等类相关的所有信息都会进入永久生成区域.
  3. 所有静态成员变量再次保留在"永久生成"区域中.
  4. 物体在不同的堆上:年轻一代
  5. 每个类只有一个方法的副本,无论是静态还是非静态方法.该副本放在永久生成区域.对于非静态方法,所有参数和局部变量都进入堆栈 - 只要对该方法进行具体调用,我们就会得到一个与之关联的新堆栈帧.我不确定静态方法的局部变量存储在哪里.他们是永久世代的堆吗?或者只是他们的引用存储在Permanent Generation区域,而实际的副本是在其他地方(Where?)
  6. 我也不确定方法的返回类型存储在何处.
  7. 如果对象(在年轻代中)需要使用静态成员(在永久生成中),则为它们提供对静态成员的引用&&它们被给予足够的存储空间来存储方法的返回类型等.

谢谢你经历这个!

java static memory-management permanent-generation

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

如何发出"尚未实施"的信号?

在初始绘制新gem时,我需要将一些方法实现留空(将在下一个实现)

因此,我想发出一个"尚未实施"的例外情况

我想知道是否有一个特定于Ruby语言的最佳实践标准约定来编写这种占位符/异常.

即:像:

ruby coding-style exception-handling conventions

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

为什么没有swift中类的存储类型属性?

通过Swift编程语言,我惊讶地发现,与结构和枚举不同,类不支持存储的类型属性.

这是其他OO语言的一个共同特征,所以我认为他们有一个很好的理由决定不允许它.但我无法猜出这是什么原因,特别是因为结构(和枚举)有它们.

难道只是它是Swift的早期时代,它尚未实现吗?或者语言设计决策背后有更深层次的原因吗?

BTW,"存储类型属性"是Swift术语.在其他语言中,这些可能被称为类变量.示例代码:

struct FooStruct {
    static var storedTypeProp = "struct stored property is OK"
}

FooStruct.storedTypeProp // evaluates to "struct stored property is OK"

class FooClass {
    class var computedClassProp: String { return "computed class property is OK" }

    // class var storedClassProp = "class property not OK" // this won't compile
}

FooClass.computedClassProp // evaluates to "computed class property is OK"
Run Code Online (Sandbox Code Playgroud)

编辑:

我现在意识到这种限制很容易解决,例如,通过使用具有存储属性的嵌套结构:

class Foo {
    struct Stored {
        static var prop1 = "a stored prop"
    } …
Run Code Online (Sandbox Code Playgroud)

language-design swift

37
推荐指数
3
解决办法
8647
查看次数

Notepad ++:如何获取当前文件的文件名/路径,并将其放入记事本加上加号板的剪贴板中

使用VIM编辑文件我可以轻松复制和粘贴我正在处理的文件的名称(或完整路径)(了解我对VIM的看法你可以看到:这个问题维基);

是否有使用Notepad ++的等效解决方案?,我该怎么办?

clipboard notepad++

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

Gradle弃用"依赖于打包来定义主要工件的扩展......"在Android Studio项目中可以修复吗?

我想学习如何最好地使用Android Studio,但我仍然缺乏经验,特别是在使用Gradle构建时.

执行任务:[清理]

依赖于打包来定义主工件的扩展已被弃用,并计划在Gradle 2.0中删除:app:clean UP-TO-DATE

建立成功

即使一切正常,我也希望避免使用弃用的方法;

我声明我看到了这个问题,并尝试理解弃用消息,但现在我的重点是理解在Android Studio上构建APK以及如何将手放在由此IDE创建的项目中.

是否可以通过更改项目中的某些内容(配置文件或工件)来修复它?

PS:我在"Android Studio(预览版)0.4.3 build 133"上,在项目中有两个build.gradle:

1)〜/ AndroidStudioProjects/MyAppProject/app/build.gradle

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:+'
}
Run Code Online (Sandbox Code Playgroud)

2)〜/ AndroidStudioProjects/MyAppProject/build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules. …
Run Code Online (Sandbox Code Playgroud)

deprecated gradle android-studio android-gradle-plugin

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

Atom.io编辑器中用户代码段的全局范围

我想将我为Sublime Text 3编辑器编写的一些片段转换为atom.io编辑器.

由于我有一个对任何类型的文件(任何文件扩展名)都有效的"许可证"片段,因此在licence.sublime-snippet文件中我没有指定范围:

<!-- Optional: Set a scope to limit where the snippet will trigger -->
<!-- <scope>source.python</scope> -->
Run Code Online (Sandbox Code Playgroud)

现在,我在atom/snippets中看到上面的例子.

'.source.js':
  'console.log':
    'prefix': 'log'
    'body': 'console.log(${1:"crash"});$2'
Run Code Online (Sandbox Code Playgroud)

最外面的键是这些片段应该处于活动状态的选择器.

但是我无法弄清楚如何指定一个全局范围或者更好,但是根本不像我所做的那样完全指定它.sublime-snippet.任何帮助表示赞赏; 特别是还没有找到详细的操作片段原子的综合文档,因此也欢迎这种文档的一些链接.

language-comparisons code-snippets sublimetext atom-editor

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

Swift:使用不同对象实例的默认值创建数组

创建具有默认值的数组时,我注意到有点奇怪(和危险的恕我直言)行为.如Swift 2.1中所述:集合类型

Swift的Array类型还提供了一个初始化器,用于创建一个特定大小的数组,并将其所有值设置为相同的默认值.您将此初始值设定项传递给要添加到新数组的项目数(称为计数)和相应类型的默认值(称为repeatedValue):

重点是:相同的默认值 ; 为了理解它是如何工作的,我试图创建这个示例类的元素数组

class User {
  private struct Shared {
    static var sequence: Int = 0
  }

  var id: Int
  var thinkTime: NSTimeInterval // typealias di Double

  init (thinkTime: NSTimeInterval) {
    User.Shared.sequence = User.Shared.sequence+1
    id = User.Shared.sequence
    self.thinkTime = thinkTime
  }
}
Run Code Online (Sandbox Code Playgroud)

和这个测试代码:

let  howManyUsers: Int = 3
var users = [User](count: howManyUsers, repeatedValue:User(thinkTime: 10.0))
let u2: User = User(thinkTime: 10)
let u3: User = User(thinkTime: 10)
users.append(u2)
users.append(u3)
users[1].thinkTime = …
Run Code Online (Sandbox Code Playgroud)

arrays initialization instantiation instance swift

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

嵌入:mono vs lua

我有兴趣听听人们在C/C++应用程序中嵌入单声道(.NET的开源实现)的经验.如何分发这样的应用程序以及依赖性是什么?我已经测试了OS X和mono作为一个巨大的框架(数百MB).我的应用程序的用户都需要这个大框架,或者可以将其删除或将所有内容编译到主可执行文件中.

我以前有过在一个C++应用程序中嵌入Lua的经验,这非常有效,因为我可以将整个lua解释器与我的主可执行文件静态链接.所以我没有外部依赖.是否可以用单声道做类似的事情?

这里的任何Lua人都能评论他们如何发现单声道与Lua相比?

PS:嵌入我指的是一个C++应用程序,它初始化单声道环境并加载.NET程序集并执行它,然后允许在程序集中的C#代码和主可执行文件中的C++方法之间进行通信.

c++ mono lua embedding mono-embedding

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

在wsadmin脚本编写中使用jython与jacl的优点(WebSphere Application Server 7+)

面对wsadmin脚本客户端的编程,我看到你可以同时使用jacljython.

我对两种语言都有同样的信心.

我想知道,就wsadmin编程而言,是否有使用一种语言优于另一种语言的优点; 例如,健壮性,用于websphere管理的示例或库的可用性,或者您在使用和构建此类脚本方面的经验所产生的.

websphere jython wsadmin jacl

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

哪个npm/bin文件夹应该在PATH中?(OS X 10.8.2/npm与自制软件一起安装)

使用自制程序升级节点

==> Downloading http://nodejs.org/dist/v0.8.21/node-v0.8.21.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/node/0.8.21
==> make install
Run Code Online (Sandbox Code Playgroud)

我注意到了这一点

==> Caveats
Homebrew installed npm.
We recommend prepending the following path to your PATH environment
variable to have npm-installed binaries picked up:
  /usr/local/share/npm/bin
Run Code Online (Sandbox Code Playgroud)

$PATH我已经:/usr/local/share/npm/lib/node_modules/scripted/bin/usr/local/share/npm/bin也应该添加吗?

请注意,/usr/local/share/npm/bin只有包含两个子文件夹:scrscripted那也是/usr/local/share/npm/lib/node_modules/scripted/bin有啥的目的区别这两个文件夹的?

编辑 /usr/local/share/npm/bin只包含两个符号链接(不是子文件夹)

homebrew node.js npm

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