我不是在问完整的电子邮件验证.
我只是想知道电子邮件地址中允许的字符user-name
和server
部分内容.这可能过于简单,也许电子邮件地址可以采取其他形式,但我不在乎.我只询问这个简单的形式:( user-name@server
例如wild.wezyr@best-server-ever.com)和两个部分允许的字符.
与Java不同,为什么C#默认将方法视为非虚函数?它更可能是性能问题而不是其他可能的结果吗?
我想起了Anders Hejlsberg的段落,内容是现有架构带来的几个优点.但是,副作用呢?默认情况下使用非虚方法真的是一个很好的权衡吗?
我试图声明一个依赖于另一个结构的结构.我想用来sizeof
保证安全/迂腐.
typedef struct _parent
{
float calc ;
char text[255] ;
int used ;
} parent_t ;
Run Code Online (Sandbox Code Playgroud)
现在我想声明一个child_t
大小相同的结构parent_t.text
.
我怎样才能做到这一点?(下面的伪代码.)
typedef struct _child
{
char flag ;
char text[sizeof(parent_t.text)] ;
int used ;
} child_t ;
Run Code Online (Sandbox Code Playgroud)
我试着用几种不同的方法parent_t
和struct _parent
,但我的编译器不接受.
作为一个技巧,这似乎工作:
parent_t* dummy ;
typedef struct _child
{
char flag ;
char text[sizeof(dummy->text)] ;
int used ;
} child_t ;
Run Code Online (Sandbox Code Playgroud)
是否可以在child_t
不使用的情况下声明dummy
?
我记得,在Java 8之前,默认容量ArrayList
是10.
令人惊讶的是,对default(void)构造函数的注释仍然说: Constructs an empty list with an initial capacity of ten.
来自ArrayList.java
:
/**
* Shared empty array instance used for default sized empty instances. We
* distinguish this from EMPTY_ELEMENTDATA to know how much to inflate when
* first element is added.
*/
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
...
/**
* Constructs an empty list with an initial capacity of ten.
*/
public ArrayList() {
this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}
Run Code Online (Sandbox Code Playgroud) 可变参数:
public static void foo(String... string_array) { ... }
Run Code Online (Sandbox Code Playgroud)
与
单阵列参数:
public static void bar(String[] string_array) { ... }
Run Code Online (Sandbox Code Playgroud)
Java 1.6似乎接受/拒绝以下内容:
String[] arr = {"abc", "def", "ghi"};
foo(arr); // accept
bar(arr); // accept
foo("abc", "def", "ghi"); // accept
bar("abc", "def", "ghi"); // reject
Run Code Online (Sandbox Code Playgroud)
假设上述是真的/正确的,为什么不总是使用varargs而不是单个数组param?似乎免费增加了一点来电灵活性.
专家是否可以共享内部JVM差异(如果有)?
谢谢.
这是一个有趣的java问题.
以下简单的java程序包含静态方法初始化的静态字段.实际上,我强制计算intiailize值的方法引发NullPointException,当我访问这样的静态字段时,会引发NoClassDefFoundError.似乎VM对待Class并不完整.
但是当我访问Class时,它仍然可用;
有谁知道为什么?
class TestClass {
public static TestClass instance = init();
public static TestClass init() {
String a = null;
a.charAt(0); //force a null point exception;
return new TestClass();
}
}
class MainClass {
static public void main(String[] args) {
accessStatic(); // a ExceptionInInitializerError raised cause by NullPointer
accessStatic(); //now a NoClassDefFoundError occurs;
// But the class of TestClass is still available; why?
System.out.println("TestClass.class=" + TestClass.class);
}
static void accessStatic() {
TestClass a;
try {
a = TestClass.instance; …
Run Code Online (Sandbox Code Playgroud) 有没有办法将pom
类型依赖项添加到我的POM并获取其所有模块?
JavaMail就是一个很好的例子.Maven Central Repo有一个父POM,名为:com.sun.mail:all:1.5.0 with modules:mail,mailapi,mailapijar,smtp,imap,gimap,pop3和dsn.
但是,"all"artefact只有一个文件:pom.xml
有没有办法将这个"all"artefact作为依赖项添加到我的POM并获取其所有模块?我90%肯定这不是在Maven中使用依赖项的正确方法,但我想从Stack上的专家那里听到它.
思路:
<dependencies><dependency>...<type>pom</type></dependency></dependencies>
<dependencyManagement><dependencies><dependency>...<type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
想象一下,我有100个SELECT查询,它们因一个输入而不同.PreparedStatement可用于该值.
我在Web上看到的所有文档都是批量插入/更新/删除.我从未见过用于select语句的批处理.
可以这样做吗?如果是这样,请在下面的示例代码中帮助我.
我想这可以使用"IN"子句来完成,但我更喜欢使用批处理的select语句.
示例代码:
public void run(Connection db_conn, List value_list) { String sql = "SELECT * FROM DATA_TABLE WHERE ATTR = ?"; PreparedStatement pstmt = db_conn.prepareStatement(sql); for (String value: value_list) { pstmt.clearParameters(); pstmt.setObject(1, value); pstmt.addBatch(); } // What do I call here? int[] result_array = pstmt.executeBatch() while (pstmt.getMoreResults()) { ResultSet result_set = pstmt.getResultSet(); // do work here } }
我想这也可能是依赖于驱动程序的行为.我正在使用他们的JDBC驱动程序编写针对IBM AS/400 DB2数据库的查询.
来自Google Guava JavaDocIterables
:
static <T> T getFirst(Iterable<T> iterable, T defaultValue)
Run Code Online (Sandbox Code Playgroud)
- >返回第一个元素iterable
或者defaultValue
如果iterable为空.
static <T> T getLast(Iterable<T> iterable)
Run Code Online (Sandbox Code Playgroud)
- >返回的最后一个元素iterable
.
static <T> T getLast(Iterable<T> iterable, T defaultValue)
Run Code Online (Sandbox Code Playgroud)
- >返回的最后一个元素iterable
或defaultValue
如果可迭代为空.
缺少一种静态方法(对我而言):
static <T> T getFirst(Iterable<T> iterable)
Run Code Online (Sandbox Code Playgroud)
- >返回第一个元素iterable
.
你知道这种不一致的原因吗?
我想捕获UNIX进程的输出,但限制最大文件大小和/或旋转到新文件.
我见过logrotate,但它不能实时工作.据我了解,这是一项并行运行的"清理"工作.
什么是正确的解决方案?我想我会编写一个小脚本来完成它,但我希望现有的文本工具有一个简单的方法.
想像:
my_program | tee --max-bytes 100000 log/my_program_log
会给...总是将最新的日志文件写为:log/my_program_log
然后,当它填充...重命名为log/my_program_log000001并启动一个新的log/my_program_log.