这个问题可能有些奇怪,但我怎样才能加快g ++编译时间?我的C++代码大量使用boost和模板.我已经尽可能多地从头文件中移动并使用-j选项,但是编译(和链接)仍需要很长时间.
是否有任何工具可以分析我的代码并指出编译器的瓶颈?或者可以以某种方式分析在我的代码上运行的编译器?这将是非常好的,因为有时我有这样的印象,我花了太多时间盯着编译器控制台日志...
这与我的其他问题类似,但我认为不同的是保证一个新问题.
基本上我正在编写用户界面,我的用户界面有可以选择的节点.当选择节点时,用户界面以抽象节点基类"INode"结束.从这个我做节点 - > getFactory(),并从这个我可以创造此时,相应的对话框或观看该节点,因为正确的工厂得到由混凝土节点返回(如出厂> createAddDialog(),出厂时得到一个工厂> createView(节点)等).
我的问题是,试图找到该工厂进入摆在首位的节点的最佳途径.
到目前为止,我已经想到了3种方法:
1)创建节点时注入正确的工厂:
AreaNode *node = new AreaNode(new AreaNodeFactory());
Run Code Online (Sandbox Code Playgroud)
所以AreaNode的定义是:
AreaNode : public INode
{
AreaNode(INodeAbstractFactory *injectedFactory)
{
m_injectedFactory = injectedFactory;
}
INodeAbstractFactory* getFactory()
{
return m_injectedFactory;
}
INodeAbstractFactory* m_injectedFactory;
};
Run Code Online (Sandbox Code Playgroud)
2)注入一个更通用的工厂并允许节点从该工厂获得工厂:
AreaNode : public INode
{
AreaNode(IFactory *injectedFactory)
{
m_injectedFactory = injectedFactory;
}
INodeAbstractFactory* getFactory()
{
return m_injectedFactory->getAreaNodeFactory();
}
IFactory* m_injectedFactory;
}
Run Code Online (Sandbox Code Playgroud)
3)只需创建具体工厂(尽管这样就删除了为同一节点使用不同工厂的范围,可能用于测试或以后的更改):
AreaNode : public INode
{
INodeAbstractFactory* getFactory()
{
return new AreaNodeFactory();
}
}
Run Code Online (Sandbox Code Playgroud)
目前关于这些选择的想法:
选项1:可能是有点杂乱无章 - 我必须确保我总是给它正确的工厂为该类型,也许我可以只使用另一家工厂注入正确的工厂给我.
选项2:强制了解抽象工厂实现足以能够调用getAreaNodeFactory,这可能不是一件坏事节点.它至少有助于确保始终获取正确/相同的工厂(假设更一般的工厂正确实施).
方案3:这种感觉,因为我不能够交换类出一点限制,我并不热衷于为了解具体执行工厂的节点 …
我想构建一个小应用程序,每当更新或插入进入SQL服务器数据库中的某个表时,会弹出托盘通知(或吐司弹出窗口等).
这样做最简单的方法是什么,因为我想尽可能避免轮询?
我目前正在研究一种通过蓝牙连接到仪器的Android应用程序,需要编写字符串命令并接收字符串响应.目前我通过Wi-Fi进行TCP/IP连接/读/写工作,现在尝试实现蓝牙.但我遇到了一些障碍.我一直在网上搜索试图找到类似的东西的例子,并没有运气.我一直在使用Android开发人员资源示例:蓝牙聊天作为我的主要参考点.
我当前的代码似乎工作..然后它会在连接点抛出Service Discovery Failed异常.我正在使用DeviceListActivity该类来发现和选择我想要连接的设备.它返回anActivityResult,然后我的蓝牙类等待它处理它,然后连接到它.下面的代码几乎与蓝牙聊天应用程序相同.
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(!m_BluetoothAdapter.isEnabled())
{
m_BluetoothAdapter.enable();
}
switch (requestCode) {
case REQUEST_CONNECT_DEVICE:
// When DeviceListActivity returns with a device to connect
if (resultCode == Activity.RESULT_OK) {
// Get the device MAC address
String address = data.getExtras()
.getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS);
// Get the BLuetoothDevice object
BluetoothDevice device = m_BluetoothAdapter.getRemoteDevice(address);
// Attempt to connect to the device
connect(device);
}
break;
case REQUEST_ENABLE_BT:
// When the request to enable Bluetooth returns
if (resultCode …Run Code Online (Sandbox Code Playgroud) 我在php中创建文本文件,文件已从本地pc以正确的格式创建,如果我在线尝试,那么没有换行符,也没有显示格式化.
我正在使用此代码.
header("Content-type: application/txt");
header("Content-Length: ". sizeof($content));
header("Content-Disposition: inline; filename=". $file);
print $content; die;
Run Code Online (Sandbox Code Playgroud)
如果有人有解决方案,请与我分享.
提前致谢.
为什么以下代码输出4?
char** pointer = new char*[1];
std::cout << sizeof(pointer) << "\n";
Run Code Online (Sandbox Code Playgroud)
我有一个指针数组,但它应该有长度1,不应该吗?
我知道之前有人问过,但我需要联盟跟踪......
http://www.mysite.com/controller/method/params?affiliate=123&sub_id=456
如何获取该URL中列出的参数和$ _GET参数?
任何人都可以解释如何删除文本/输入框周围的橙色或蓝色边框(轮廓)?我认为只有在Chrome上才会显示输入框处于活动状态.这是我正在使用的输入CSS:
input {
background-color: transparent;
border: 0px solid;
height: 20px;
width: 160px;
color: #CCC;
}
Run Code Online (Sandbox Code Playgroud)

我想显示PostgreSQL查询返回的每条记录的观察数.
我认为在8.4窗口函数中可以执行此功能.
在对SQL Server(2005+)中的多个数据库进行查询时,我发现有时需要排除系统数据库(master,model,tempdb,msdb和distribution)
还有其他方法可以过滤这些
where name not in (''master', 'model', 'tempdb', 'msdb', 'distribution')
Run Code Online (Sandbox Code Playgroud)
我查看了sys.databases和master.dbo.sysdatabases(不一样!)
[UPDATE]我用来查找启用了logshipping的数据库的示例查询
select d.name, p.last_backup_date, s.secondary_server, s.secondary_database
from sys.databases d
left outer join msdb..log_shipping_primary_databases p on p.primary_database = d.name
left outer join msdb..log_shipping_primary_secondaries s on s.primary_id = p.primary_id
where name not in ('model','master','tempdb','distribution','msdb')
order by d.name
Run Code Online (Sandbox Code Playgroud)
[更新]这似乎是"最不好的"方式,除非别人有更好的方法?
SELECT * FROM
master.sys.databases AS dtb
WHERE (dtb.database_id < 5 or dtb.is_distributor = 1)
Run Code Online (Sandbox Code Playgroud) c++ ×3
sql-server ×2
affiliates ×1
android ×1
bluetooth ×1
border ×1
codeigniter ×1
compilation ×1
css ×1
database ×1
focus ×1
g++ ×1
input ×1
java ×1
oop ×1
php ×1
pointers ×1
postgresql ×1
query-string ×1
sql ×1
templates ×1