小编Cra*_*lus的帖子

易变量和其他变量

以下是经典Concurency in Practice:

当线程A写入volatile变量并且随后线程B读取相同的变量时,在写入volatile变量之前A可见的所有变量的值在读取volatile变量后变为B可见.

我不确定我是否真的能理解这句话.例如,在这种情况下所有变量的含义是什么?这是否意味着使用volatile也会对非易失性变量的使用产生副作用?
在我看来,这句话有一些我无法理解的微妙含义.
有帮助吗?

java concurrency multithreading volatile memory-visibility

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

过期证书上的Java trustmanager行为

如果证书已过期,java的TrustManager实现是否会被忽略?
我尝试了以下操作:
- 使用keytool和参数-startdate "1970/01/01 00:00:00"我创建了一个带有过期证书的P12密钥库.
- 我出口证书:

Keystore type: PKCS12
Keystore provider: SunJSSE

Your keystore contains 1 entry

Alias name: fake
Creation date: 5 ??± 2011
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Malicious, OU=Mal, O=Mal, L=Fake, ST=GR, C=GR
Issuer: CN=Malicious, OU=Mal, O=Mal, L=Fake, ST=GR, C=GR
Serial number: -1c20
Valid from: Thu Jan 01 00:00:00 EET 1970 until: Fri Jan 02 00:00:00 EET 1970
Certificate fingerprints:
         MD5:  A9:BE:3A:3D:45:24:1B:4F:3C:9B:2E:02:E3:57:86:11
         SHA1: 21:9D:E1:04:09:CF:10:58:73:C4:62:3C:46:4C:76:A3:81:56:88:4D
         Signature algorithm name: …
Run Code Online (Sandbox Code Playgroud)

java security authentication ssl tomcat

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

SQL BETWEEN用于文本与数值

BETWEENWHERE子句中用于选择两个值之间的数据范围.
如果我是正确的,是否排除范围的端点是DBMS特定的.
我无法理解的内容如下:
如果我有一个值表,我会执行以下查询:

SELECT food_name 
    FROM health_foods 
    WHERE calories BETWEEN 33 AND 135;`  
Run Code Online (Sandbox Code Playgroud)

查询返回结果行,包括卡路里= 33和卡路里= 135(即包括范围端点).

但如果我这样做:

SELECT food_name 
    FROM health_foods 
    WHERE food_name BETWEEN 'G' AND 'O';
Run Code Online (Sandbox Code Playgroud)

没有food_name开头的行O.即排除范围的结束.
为了使查询按预期工作,我键入:

SELECT food_name 
    FROM health_foods 
    WHERE food_name BETWEEN 'G' AND 'P';`   
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么BETWEEN数字和文本数据会有这样的差异?

mysql sql varchar numbers between

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

为什么我会看到已删除的远程分支?

我有一个远程存储库和2个克隆.
我在其中一个克隆中创建了一个分支,例如test.我做了一些工作和2次提交.我合并到master分支和push -u分支.
git pull在另一个克隆中做了一个.
我看到了两个mastertest.
在我做的第一个克隆项目中:
git origin :test删除test远程存储库上的分支.
test在远程回购中被删除.
我这样做git branch -D test,test分支也在本地删除.
如果我这样做,git branch -a我得到:

*master  
remotes/origin/master    
Run Code Online (Sandbox Code Playgroud)

现在在第二个存储库中我做了一个git pull.
在拉动局部test似乎被删除但git似乎"认为"远程test分支仍然存在.
如果我这样做,git branch -a我得到:

* master  
  remotes/origin/HEAD -> origin/master  
  remotes/origin/master  
  remotes/origin/test    
Run Code Online (Sandbox Code Playgroud)

为什么删除的test分支显示为远程分支?

git version-control git-pull git-clone git-branch

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

为什么我需要DataHandler?

使用a的主要原因是javax.activation.DataHandler什么?

它是否通过网络促进不实现Serializable的对象的传输?

即,例如,我已经看到文件从本地文件系统转换为字节,然后DataHandler使用这些字节创建一个并DataHandler通过网络传输.
这是人们使用的原因DataHandler吗?

java apache web-services network-programming java-ee

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

澄清来自javadoc的集合二进制搜索的性能声明

binarySearch收藏品的性能分析感到困惑

它说:

如果指定的列表没有实现RandomAccess接口并且很大,则此方法将执行基于迭代器的二进制搜索,该搜索执行O(n)链接遍历和O(log n)元素比较.

我不知道如何解释这个O(n)+ O(log n).

我的意思是,这不仅仅是简单地遍历链表并进行比较吗?我们仍然只得到O(n).

那么这句话对绩效意味着什么呢?如上所述,我无法理解链表中的简单线性搜索的区别.

我在这里误解了什么?

java algorithm collections complexity-theory list

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

成员变量的多态性.我知道这是不可能的,我不明白这个具体案例

我知道这种行为,但我不确定为什么会这样.
据我所知,java中的实例变量没有多态性.变量由编译器静态解析.
但在下面我对某些事感到困惑:

class Animal{  
   String name = "Animal";  
   public void display(){  
    System.out.println("My name is "+ name);  
   }  
}  

public class Dog extends Animal {   
   String name = "Dog";   

   public static void main(String[] args) {  
        Animal a = new Dog();  
        Dog d = new Dog();  
        System.out.println(a.name);//Line 1  
        a.display();//Line 2   
        d.display();//Line 3  
   }  
}  
Run Code Online (Sandbox Code Playgroud)

我认为Line 1它会显示Animal为静态类型a(由编译器解析).
让我困惑的是为什么Line 3还要展示My name is Animal
将尝试调用该方法,Dog因为这是运行时的实际对象,因为它不会被覆盖,所以可以在父类中找到该方法Animal.
我没有得到的是为什么在操作的实际对象是a时,name在方法内部使用父类.它不隐藏父变量吗?在我看来它并不是因为类型是静态解析的.这不是oject的内存布局的一部分吗? 就像里面只有父的变量是可见的.为什么? display …

java oop polymorphism overriding class

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

git rm缓存和git reset HEAD之间的区别

我觉得我很困惑git rm --cached.
我有一个存储库和一个文件已提交.我修改了文件,我做了:git add myfile
文件现在已经上演了.
当我这样做时git status:

# On branch master   
# Changes to be committed:  
#   (use "git reset HEAD <file>..." to unstage)  
#  
#       modified:   com/main/StringMain.java  
#  
Run Code Online (Sandbox Code Playgroud)

现在该文件是经过修改的跟踪文件.所以我认为这是在临时区域.所以我无法理解推荐的含义是什么(use "git reset HEAD <file>..." to unstage).所以我做了:git rm --cached而是跟着一个git commit.但这似乎删除了我的文件被跟踪并使其未跟踪.
如果我这样做git status:

# On branch master  
# Untracked files:  
#   (use "git add <file>..." to include in what will be committed)  
#  
#       com/  
nothing added …
Run Code Online (Sandbox Code Playgroud)

git version-control

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

java swing vs mvc:这种模式确实可行吗?

我是新手,但设法创造了一个下降的gui.
我的问题是,我无法应用参考/教程中建议的模式,主要是MVC模式.

是我,还是在JTree中使用SwingWorker,是不是可以清楚地分离控制器/视图/模型?
例如,我使用Swingworker,但是我无法在设计中"适应"控制器.

即控件的动作本质上是在doBackground方法中,例如在按钮的动作执行中.
所以没有控制器类.

swing工作器中的操作结果是更新一个Jtree,所以我将结果传递给一个名为model的类,但是这个类必须能够访问JFrame里面的Jtree的treeModel,即视图,所以没有明确分离视图和模型.

我查看了很多教程,但是所有呈现MVC都有一个简单的例子,在大多数情况下,视图(只是一些标签!)更新了所有内容.我是否完全混淆,或者在使用swingworkers和jtree的swing应用程序中集成MVC模式是不可行的,或者至少不容易?

我在谈论实际的域数据,而不是在swing组件中实现的MVC.

有人可以帮助我(并避免让我摆脱这种可怕的头痛),或者概述一下如何处理这种设计,或者至少有一个教程,这是有用的,有一个非常重要的例子吗?

谢谢

java model-view-controller swing design-patterns jtree

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

实现大型状态机的最佳方法是什么?

基本上我有一个控制游戏角色攻击的状态机,其时间基于动画长度.

例如:

我从默认状态开始,如果玩家遇到攻击按钮,它会启动攻击,切换状态并根据攻击长度设置计时器.状态机变得更复杂但是当我考虑可以取消的充电攻击时,可以根据击中的内容移动到不同状态的攻击,并且每个州都有独特的方式来处理受到攻击的角色.目前我有大型的switch语句.我考虑过多态,但是对于每个状态都需要一个新类,其中有很多(例如,开始攻击,攻击和完成攻击都需要单独的状态).

switch语句有效,但它非常大,并且不像基于继承的系统那样容易修改.

有关良好实施的任何建议?

编辑:这是使用java.

java state-machine switch-statement

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