小编Oak*_*Oak的帖子

如果没有JavaScript,当较长的文本不适合时,我可以显示不同的文本吗?

我想做什么

我有一个尺寸限制的盒子,应该包含一些文字:

.box {
  width: 100px;
  height: 40px;
  background-color: yellow;
}
Run Code Online (Sandbox Code Playgroud)
<div class="box">
  Some text goes here.
</div>
Run Code Online (Sandbox Code Playgroud)

但是,如果文本太长而无法放入框中,我想用不同的较短版本替换该文本,这是我事先准备好的.

例如,如果我想用这两个名称填充两个框:

Short version      Long version
------------------------------------------------------------
Rudolf E. Raspe    Rudolf Erich Raspe
Baron Munchausen   Hieronymus Karl Friedrich von Munchhausen
Run Code Online (Sandbox Code Playgroud)

然后第一个盒子将包含"Rudolf Erich Raspe",因为它足够短以适应内部,但第二个盒子将包含"Baron Munchausen",因为Baron的全名太长而不适合.

如何使用HTML5和CSS3设置这样的盒子?浏览器兼容性很重要,但我不需要在11之前容纳真正的旧版本或Internet Explorer.

备择方案

我可以选择任何标准选项来处理太长的文本 - 让它溢出,或通过切割overflow: hidden,或添加滚动条,或添加省略号,或任何其他标准解决方案.但由于我已经有了每个可能的文本的简短版本,我想用它们代替.

我可以在JavaScript中执行此操作,例如,使用包装器并将其大小与盒子进行比较.但如果可能的话,我想要一个非JavaScript解决方案.

我试过的

到目前为止,我想过如果文本太长(白色空间和自动换行的某种组合?),文本会以某种方式将自身向下推,使容器溢出:隐藏在隐藏它的时候隐藏它,并放置短版本它背后的文字,但我仍然无法让它工作,同时仍然允许文本占用多行.

另一种方法是在元素下面放置一个带有长文本的短文本的元素,并使用一些变换,这使得短元素在被推下太多时接管......但是我无法使它工作.

那么......还有其他想法吗?

html css html5 css3

34
推荐指数
2
解决办法
1926
查看次数

如何使外部方法可以中断?

问题

我正在通过ExecutorService运行一些外部方法的多次调用.我希望能够中断这些方法,但遗憾的是它们不会自行检查中断标志.有什么办法可以强制从这些方法中引发异常吗?

我知道从任意位置抛出异常是有潜在危险的,在我的具体情况下,我愿意抓住这个机会并准备应对后果.

细节

"外部方法"我的意思是来自外部库的一些方法,我不能修改它的代码(我可以,但是每当新版本发布时,这将使它成为维护的噩梦).

外部方法计算成本高,不受IO限制,因此它们不响应常规中断,我无法强行关闭通道或套接字等.正如我之前提到的,他们也没有检查中断标志.

代码在概念上类似于:

// my code
public void myMethod() {
    Object o = externalMethod(x);
}

// External code
public class ExternalLibrary {
    public Object externalMethod(Object) {
        innerMethod1();
        innerMethod1();
        innerMethod1();
    }

    private void innerMethod1() {
        innerMethod2();
        // computationally intensive operations
    }

    private void innerMethod2() {
        // computationally intensive operations
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过的

Thread.stop()理论上我会做我想要的,但它不仅被弃用,而且它也只适用于实际线程,而我正在使用执行器任务(也可能与未来任务共享线程,例如在线程池中工作时) .然而,如果找不到更好的解决方案,我将转换我的代码以使用老式的Threads并使用此方法.

我尝试过的另一个选择是myMethod()使用特殊的"Interruptable"注释标记和类似的方法,然后使用AspectJ(我无疑是新手)来捕获所有方法调用 - 类似于:

@Before("call(* *.*(..)) && withincode(@Interruptable * *.*(..))")
public void checkInterrupt(JoinPoint thisJoinPoint) {
    if (Thread.interrupted()) …
Run Code Online (Sandbox Code Playgroud)

java aop multithreading aspectj executorservice

30
推荐指数
2
解决办法
1897
查看次数

有没有理由比UTF-8更喜欢UTF-16?

检查UTF-16和UTF-8的属性,我找不到任何理由更喜欢UTF-16.

但是,检查Java和C#,它看起来像字符串和字符默认为UTF-16.我认为这可能是出于历史原因,或者出于性能原因,但无法找到任何信息.

谁知道为什么这些语言选择了UTF-16?我也有正当理由这么做吗?

编辑:同时我也找到了这个答案,这似乎是相关的,并有一些有趣的链接.

c# java unicode utf-8 utf-16

28
推荐指数
3
解决办法
5581
查看次数

为什么没有参数反差方法可以覆盖?

重写方法时,C++和Java支持返回类型协方差.

但是,它们都不支持参数类型的反差 - 相反,它转换为过(Java)或隐藏(C++).

那是为什么?在我看来,允许这样做是没有害处的.我可以在Java中找到它的一个原因 - 因为它无论如何都有"选择最特定版本"的重载机制 - 但是不能想到C++的任何原因.

示例(Java):

class A {
    public void f(String s) {...}
}
class B extends A {
    public void f(Object o) {...} // Why doesn't this override A.f?
}
Run Code Online (Sandbox Code Playgroud)

c++ java oop overriding variance

26
推荐指数
3
解决办法
4187
查看次数

C++私有虚拟继承问题

在下面的代码中,似乎类C无法访问A的构造函数,这是因为虚拟继承所必需的.然而,代码仍然编译和运行.它为什么有效?

class A {};
class B: private virtual A {};
class C: public B {};

int main() {
    C c;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

此外,如果我从A中删除默认构造函数,例如

class A {
public:
    A(int) {}
};
class B: private virtual A {
public:
    B() : A(3) {}
};
Run Code Online (Sandbox Code Playgroud)

然后

class C: public B {};
Run Code Online (Sandbox Code Playgroud)

会(意外地)编译,但是

class C: public B {
public:
    C() {}
};
Run Code Online (Sandbox Code Playgroud)

不会像预期的那样编译.

使用"g ++(GCC)3.4.4(cygming special,gdc 0.12,使用dmd 0.125)编译的代码",但已经验证它与其他编译器的行为相同.

c++ inheritance encapsulation virtual-inheritance private-inheritance

20
推荐指数
2
解决办法
3614
查看次数

如何找到类型的大小?

我手里拿着一个Type*.如何以位/字节找出其大小(此类型的大小对象将占用内存)?我看到各种方法允许我获得"原始"或"标量"大小,但这不会帮助我使用聚合类型...

llvm

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

Visual Studio 2010更好的C#语法着色?

来自Eclipse,我对Visual Studio为C#提供的非常有限的语法着色功能感到失望(所有版本,直到2010年).

特别是,我对方法/字段/本地/静态内容的不同着色感兴趣.

我知道Visual Assist可以增强着色,但是我没有找到任何能够做到这一点的免费替代品,所以我转向SO(我希望它与编程有关).是否有任何免费(或至少比Visual Assist便宜)的解决方案能够增强C#的语法着色?

c# syntax-highlighting visual-studio-2010 visual-studio

18
推荐指数
3
解决办法
9212
查看次数

如何使用LLVM正确插入函数调用?

我正在尝试设置一个传递,它将在main的开头插入几个全局变量以及几个函数调用.但是,我认为我在正确设置功能描述时遇到问题.我的代码编译,但当我尝试运行传递时,我收到此错误:

void llvm::CallInst::init(llvm::Value*, llvm::ArrayRef<llvm::Value*>, const llvm::Twine&):         
Assertion `(Args.size() == FTy->getNumParams() || (FTy->isVarArg() && Args.size() > FTy- 
>getNumParams())) && "Calling a function with bad signature!"' failed. 
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止编写的代码:

#include "llvm/IR/Instructions.h"
#include "llvm/Pass.h"
#include "llvm/Support/InstIterator.h"
#include "llvm/IR/Function.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Value.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Module.h"

using namespace llvm;
namespace{

struct fun_insert : public FunctionPass{
  static char ID;

  fun_insert():FunctionPass(ID){}

  virtual bool runOnFunction(Function &F){
    if (F.getName() == "main"){
      for (inst_iterator I = inst_begin(F), E= inst_end(F); …
Run Code Online (Sandbox Code Playgroud)

llvm

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

保存文件的选项在Eclipse中显示为灰色

我在Ubuntu上使用Eclipse 3.7.通常,在编辑文件后,我无法保存它 - "保存"选项在菜单中显示为灰色并且Ctrl+ s似乎什么都不做,即使文件刚刚被修改并且编辑器在文件名之前显示星号标题页眉.

将活动选项卡更改为另一个文件,然后返回到第一个文件"解锁"保存选项,然后我可以选择该选项.

导致此行为的原因是什么,我该如何解决?

eclipse

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

"关闭"输出流

我正在使用一个任性的库,不幸的是,它会System.out(或偶尔System.err)打印信息.防止这种情况最简单的方法是什么?

我一直在考虑创建一个输出流到内存,替换,System.outerr在每次调用其中一个故障排除方法之前,稍后恢复它们,然后忽略创建的流的缓冲区.有更简单,更优雅的方式吗?

编辑:我不想重定向所有输出 - 这很容易实现.我只想忽略某些库调用可能产生的输出.

java output-redirect printstream

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