我是一名C++程序员偶尔使用MySQL来处理数据库,但我的SQL知识相当有限.但我肯定愿意改变这一点.
目前我正在尝试对数据库中的数据进行分析(!),仅使用SQL查询.但我即将放弃,而是将数据导入C++并使用C++代码进行分析.
我和我的同事讨论过这个问题,他们也让我使用C++,说SQL不是用于复杂分析,而是主要用于导入(从现有表)和导出(到新表)数据,还有更多例如将数据合并到 - 例如 - 连接表.
有人可以帮我划清界限吗?所以我知道何时切换到C++?当然,性能也是一个问题.
什么迹象表明事情在SQL中变得复杂?或者我可能只是采用错误的方法来设计查询.那我在哪里可以找到教程,书籍......采取更好的方法?
我希望这不是太模糊.我真的有点失落.
我有一个像这样的单身人士.
public class BookingFactory {
private final static BookingFactory instance;
static {
instance = new BookingFactory();
}
public static BookingFactory getInstance() {
return instance;
}
private BookingFactory() {
System.out.println("Object is created.");
}
}
public class Test {
BookingFactory instance = BookingFactory.getInstance();
instance = BookingFactory.getInstance();
Class<?> clazz = Class.forName("com.test.BookingFactory");
Constructor pvtConstructor = clazz.getDeclaredConstructors()[0];
// Set its access control
pvtConstructor.setAccessible(true);
// Invoke Private Constructor
BookingFactory notSingleton = (BookingFactory) pvtConstructor.newInstance(null);
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我看到了多条打印输出消息.有没有办法阻止这个单例从这个反射中被多次实例化?
谢谢.
我有一个程序,用户输入一个名称列表.我有一个开关案例转到一个函数,我希望按字母顺序打印名称.
public static void orderedGuests(String[] hotel)
{
//??
}
Run Code Online (Sandbox Code Playgroud)
我试过了两个
Arrays.sort(hotel);
System.out.println(Arrays.toString(hotel));
Run Code Online (Sandbox Code Playgroud)
和
java.util.Collections.sort(hotel);
Run Code Online (Sandbox Code Playgroud) 我有一个表"数据"与列id(varchar),文本(varchar),日期(日期).在mysql上创建索引,我使用的是heidiSQL.
当我右键单击该列并选择创建新索引(键)时,代码显示它正在使用 alter table data add index 'index1' ('id,date(10)')
这和之间有什么区别? create index index1 on data ('id,date(10)')
我决定找到2个功能的速度:
这是我的xstrcmp函数:
int xstrlen(char *str)
{
int i;
for(i=0;;i++)
{
if(str[i]=='\0')
break;
}
return i;
}
int xstrcmp(char *str1, char *str2)
{
int i, k;
if(xstrlen(str1)!=xstrlen(str2))
return -1;
k=xstrlen(str1)-1;
for(i=0;i<=k;i++)
{
if(str1[i]!=str2[i])
return -1;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我不想依赖strlen,因为我想要用户定义的所有内容.
所以,我找到了结果.strcmp每毫秒进行364次比较,而我的xstrcmp每毫秒只做20次比较(至少在我的电脑上!)
任何人都可以告诉为什么会这样吗?xstrcmp函数如何使自己如此之快?
我想在我正在研究的一个小项目上实现JUnit,因为我想了解一下它.
我读过的教程都引用了具有特定输出的方法.
在我的情况下,我的输出是文件,我该怎么做?任何简单的例子?任何可以帮助我的方法?
这些文件是由void私有方法构建的原始文本文件.
我看不出这种编码实践的优势.我现在正在使用的项目充满了这些陈述,所以这不是一个错误.
另一个例子:
return getNumberOfBooks() > 5 ? true : false;
Run Code Online (Sandbox Code Playgroud)
而另一个:
return isRed() ? true : false;
Run Code Online (Sandbox Code Playgroud) 我正在尝试在非C代码上使用C预处理器,除了在顶部创建这样的行之外它工作正常:
# 1 "test.java"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "test.java"
Run Code Online (Sandbox Code Playgroud)
问题是这些行在Java中无效.有没有办法让预处理器不写这些东西?我宁愿不必通过别的方式来运行它,每次只删除前4行.
我完全不了解SQL /数据库,但我和一位朋友聊天,他做了很多关于某些数据库使用"布尔"字段的数据库工作,除了true和false之外,该字段可以取值NULL.
关于这一点,他按照以下方式发表评论:"对于微软来说,他们从未将这种字段称为布尔值,他们只是稍微调用它.如果你有8个或更少的位字段,它就是一个真正的位置.在记录中,它只需要一个字节来存储它们."
当然,这对我来说似乎是不可能的 - 如果该字段可以容纳三个值,那么您将不会将其中的八个放入一个字节中.我的朋友一致认为这看起来很奇怪,但是对无知的低级内部构件表示无知,并且据他所知,从SQL端看这些字段可以容纳三个值,并且确实需要一个字节的存储空间.我想我们中的一个人有一根电线交叉.谁能解释一下这里到底发生了什么?
这是我的cat /proc/cpuinfo输出:
...
processor : 15
vendor_id : GenuineIntel
cpu family : 6
model : 26
model name : Intel(R) Xeon(R) CPU E5520 @ 2.27GHz
stepping : 5
cpu MHz : 1600.000
cache size : 8192 KB
physical id : 1
siblings : 8
core id : 3
cpu cores : 4
apicid : 23
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce …Run Code Online (Sandbox Code Playgroud) java ×4
boolean ×2
c++ ×2
mysql ×2
performance ×2
arrays ×1
bit-fields ×1
c ×1
case ×1
compare ×1
cpu ×1
cpu-speed ×1
database ×1
function ×1
indexing ×1
junit ×1
null ×1
singleton ×1
sql ×1
sql-server ×1
strcmp ×1
text-files ×1
unit-testing ×1