在创建新类时,我倾向于默认使用.mm扩展名,以便我可以在以后使用ObjC++.
这样做有什么不利吗?你.m什么时候喜欢?并.m编译成可执行更快(这是由于C通常比C++更快)?
我正在开发一个基于单个网关页面的asp.net网站,该页面通常处理所有请求和响应.根据发生的情况,网关页面会调用许多类,但主网关页面中有很多代码,分成很多方法.我知道JIT编译器只会在需要时加载和JIT方法,因此我的方法越小越好.但是,我的问题是:如果我在同一个aspx.cs文件中有数千行和数百个方法,那有关系吗?我应该尝试将功能细分为较小的源文件,类和命名空间吗?或者实际上这没有太大的区别,因为.net运行时只会在必要时jit并加载每个方法?我很欣赏人们可能在这里有编码风格的贡献,但我真的很想知道.NET在技术上究竟做了什么,所以我可以根据纯粹的性能标准做出决定.非常感谢.如果我'重构',我期望看到什么样的性能差异?
mysql> ALTER TABLE category ADD CONSTRAINT category_parent_category_id FOREIGN KEY (parent) REFERENCES category(id);
ERROR 1005 (HY000): Can't create table 'sfnews.#sql-244_1' (errno: 150)
Run Code Online (Sandbox Code Playgroud)
DDL如下:
Create Table: CREATE TABLE `category` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`parent` bigint(20) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `parent_idx` (`parent`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Run Code Online (Sandbox Code Playgroud)
为什么这是错的?
我意识到我可以在php数组中出现单引号问题:
<?php
$lang = array(
'tagline' => 'Let's start your project',
"h1" => "About Me"
);
?>
Run Code Online (Sandbox Code Playgroud)
所以我把它改为双引号:
<?php
$lang = array(
"tagline" => "Let's start your project",
"h1" => "About Me"
);
?>
Run Code Online (Sandbox Code Playgroud)
我应该使用"php quote escapes"而不是我刚刚做的吗?(顺便说一下怎么写"php quote escapes"?)
我正在开发一个数据库文件系统.它包括一个多目录观察器,它是一个Windows服务,它使用.net 的文件系统观察者类.
我想在单独的线程上运行每个观察者类.线程不能在.net中扩展,因为它是"密封"的.我想要的是,在相关的线程中运行我的观察者类的所有方法.我怎样才能做到这一点?
编辑 -
以下是我的基础守望者课程.
public abstract class WatcherBase
{
private IWatchObject _watchObject;
public WatcherBase() { }
public WatcherBase(IWatchObject watchObject, bool canPauseAndContinue)
{
_watchObject = watchObject;
CanPauseAndContinue = canPauseAndContinue;
}
public bool CanPauseAndContinue { get; set; }
public IWatchObject ObjectToWatch
{
get
{
return _watchObject;
}
}
public abstract void Start();
public abstract void Pause();
public abstract void Continue();
public abstract void Stop();
}
Run Code Online (Sandbox Code Playgroud)
以下是我从WatcherBase类扩展的目录观察者类
namespace RankFs.WatcherService
{
public class DirectoryWatcher : WatcherBase
{
private …Run Code Online (Sandbox Code Playgroud) 我需要解雇一堆线程,并希望优雅地降低它们.
我正在尝试使用pthread_cond_signal/ pthread_cond_wait来实现这一点,但遇到了问题.
这是我的代码.首先是thread_main
static void *thrmain( void * arg )
{
// acquire references to the cond var, mutex, finished flag and
// message queue
.....
while( true )
{
pthread_mutex_lock( &lock );
if ( msq.empty() )
{
// no messages so wait for one.
pthread_cond_wait( &cnd, &lock );
}
// are we finished.
if ( finished )
{
// finished so unlock the mutex and get out of here
pthread_mutex_unlock( &lock );
break;
}
if …Run Code Online (Sandbox Code Playgroud) 我想禁用在抛出异常时生成的堆栈跟踪.我用过,
Runtime.getRuntime().traceInstructions(false);
Runtime.getRuntime().traceMethodCalls(false);
Run Code Online (Sandbox Code Playgroud)
但我仍然可以看到跟踪生成.你怎么能这样做?此外,我需要检测是否有人正在调试我的课程.
我想禁用所有异常跟踪.我不能使用混淆,因为我的产品是一个将用于开发的SDK.我还提供了Runtime,当人们想要部署使用我的SDK构建的应用程序时,会使用它.我的要求是任何使用我的运行时jar的人都不应该能够调试编写的代码...或者至少我会通过避免从我的运行时jar生成堆栈跟踪来使调试变得困难.
我发现的一种方法是所有来自我的运行时jar的异常,我只是捕获它们并在异常对象上设置一个空的StackTraceElement数组并重新抛出它...
为何如此要求?假设您使用我的SDK开发应用程序.(SDK jar无法与您的应用程序捆绑在一起..我已经限制了它,那就是最终:) !!)现在要在客户端的机器上运行您的应用程序,您(或客户端)需要安装客户端计算机上的运行时并运行您的应用程序.现在如果你的客户使用我的Runtime jar开始开发他自己的应用程序怎么办 这对我的生意构成威胁....这就是为什么这个可怕的要求.
为什么禁用堆栈跟踪?
通过禁用堆栈跟踪生成或方法调用跟踪生成我想用我的Runtime jar开发代码很困难,这就是为什么我以这种方式开始我的问题...建议一些其他解决方案来实现这样的要求......
例如:
ConcurrentDictionary<string,Payload> itemCache = GetItems();
foreach(KeyValuePair<string,Payload> kvPair in itemCache)
{
if(TestItemExpiry(kvPair.Value))
{ // Remove expired item.
Payload removedItem;
itemCache.TryRemove(kvPair.Key, out removedItem);
}
}
Run Code Online (Sandbox Code Playgroud)
显然,对于普通的Dictionary,这将引发异常,因为删除项会在枚举的生命周期中更改字典的内部状态.我的理解是,并非ConcurrentDictionary的情况,因为提供的IEnumerable处理内部状态更改.我明白了吗?有更好的模式可供使用吗?
我在Tomcat(5.5)中运行了几个servlet应用程序.所有servlet都使用通过JNDI共享的公共工厂资源.目前,我可以通过在/conf/server.xml文件中将工厂资源包含为GlobalNamingResource来使一切正常工作,然后让每个servlet的META-INF/context.xml文件包含资源的ResourceLink.XML文件中的代码段包含在下面.注意:我对tomcat并不熟悉,所以我不是说这是一个很好的配置!
但是,我现在希望能够使用RPM自动将这些servlet安装到多个tomcat实例中.RPM将首先将WAR复制到webapps目录,将工厂的jar复制到common/lib目录(这很好).但它还需要确保将工厂资源作为所有servlet的资源包含在内.
全局添加资源的最佳方法是什么?我不太热衷于编写一个进入server.xml文件的脚本,并以这种方式添加资源.有没有办法让我添加多个server.xml文件,以便我可以编写一个新的server-app.xml文件,它会将我的设置连接到server.xml?或者,最好还是将这个JNDI资源添加到所有servlet而不使用server.xml?
ps重新启动服务器不会是一个问题,所以我不介意更改是否自动获取.
谢谢
来自server.xml的代码段
<!-- Global JNDI resources -->
<GlobalNamingResources>
<Resource name="bean/MyFactory"
auth="Container"
type="com.somewhere.Connection"
factory="com.somewhere.MyFactory"/>
</GlobalNamingResources>
Run Code Online (Sandbox Code Playgroud)
整个servlet的META-INF/context.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<ResourceLink global="bean/MyFactory"
name="bean/MyFactory"
type="com.somewhere.MyFactory"/>
</Context>
Run Code Online (Sandbox Code Playgroud) 我们的系统将进行平台升级,包括用Java 6替换Java 1.4.
理想情况下,我们希望使用自动化工具在可能的情况下向代码中引入泛型和枚举,然后,显然,我们会检查更改.你有什么工具可以推荐吗?
java ×3
.net ×2
c# ×2
arrays ×1
asp.net ×1
c++ ×1
concurrency ×1
debugging ×1
foreign-keys ×1
iphone ×1
jndi ×1
mutex ×1
mysql ×1
objective-c ×1
performance ×1
php ×1
pthreads ×1
quotes ×1
resources ×1
stack-trace ×1
tomcat ×1