我整天都在编写C#,但是最近为了爱好的东西跳转到Java,比如为BlackBerry和Android平台编写代码.这段时间我一直认为,就语言特征而言,Java和C#是彼此的双胞胎.
无论如何,我发现Java相当于C#1.1或类似的东西.在Java中,我必须编写两次我在C#中编写的代码.像对象初始化器,lambda,属性为上帝的缘故,是否会出现在Java中?我试图浏览JSR的东西,但找不到任何东西.
Java根本没有跟上吗?或者我只是不按照预期使用它?
我在VS2008中使用Resharper 4.5.1进行编码,但项目设置为针对.NET Framework 2.0.
仍然,Resharper正在提出与.NET 3.5框架相关的建议.例如,它告诉我我应该使用集合初始化器等...
我查看了设置,似乎无法找到复选框告诉它给出2.0具体的建议.
我不想问候选人的问题,而是给他们几个问题来解决.这样做的原因是我看到人们对理论非常出色,但当面对现实世界的c#问题时,却无法破解它.
这些c#问题应该足够简单,解决时间不会超过1-20分钟,但又足够复杂,我可以清除无法编码的候选人.
现在,我通常会要求申请人撤消字符串并从列表中删除重复项.仅这一点就可以清除大量人口.
我可以使用的其他任何例子?
编辑:我应该提到这是一个标准的c#gig,他们将编写业务代码而不是找到实现链表的最佳方式.
对于许多人将在办公室使用的应用程序,我有以下要求 - 没有服务器组件.客户端应用程序的所有实例都应以某种方式在它们之间进行协商,以确定哪个客户端将承担服务器角色.客户应该通过IP在他们之间进行通信.
如果客户端应用程序出现故障,另一个客户端必须以无缝方式接管.我知道拥有一台服务器会更简单.但是因为应用程序必须非常有弹性,所以不想让服务器停机(甚至是其备份)的风险,而是依赖于这种混合网状连接,其中服务器角色从客户端跳到客户端.
我想我的应用程序连接已关闭.基本上,当应用程序启动时,它会通过UDP(通过预定义的IP地址,所有内容监听或通过UDP广播)宣布自己.从那时起,通信以类似的方式进行.
我遇到问题的部分是如何在客户端之间进行协商/自组织以选择具有服务器角色的客户端.如何可靠地检测到客户端已经关闭,然后必须进行新的协商.最后的困难是复制客户端使用服务器角色累积的数据.
我在c#中创建了一个原型,用于通信并尝试复制数据,但协商部分(特别是与客户端故障相结合).
最初我认为这就是ZeroConf(又名Bonjour)所做的.但那只是宣布可用的网络服务.
无论如何,我不想重新发明,我不能成为第一个想要这样做的人.所以我的问题:
我对Socket对象上的相关方法的聚宝盆感到有点困惑,该对象可能会关闭并清理套接字连接.考虑以下:
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect("192.168.1.22", 8333);
socket.Send(Encoding.UTF8.GetBytes("hello"));
// now for the closing fun
socket.Shutdown(SocketShutdown.Both);
socket.Disconnect(false);
socket.Close();
socket.Dispose();
Run Code Online (Sandbox Code Playgroud)
另外,这个人说要真正干净地关闭一个连接,必须执行socket.Shutdown(SocketShudown.Send)
,然后等待另一方做出响应.
什么是关闭,然后清理套接字连接的正确方法?
我将为拥有WinXP机器的客户端编写一个小型桌面应用程序,他们不会安装.NET框架(至少不适合我).
所以我的选择仅限于C++或VB6,两者都不是很好.我记得当时Mono想出了一个静态编译器,但最近我唯一能找到的就是Miguel de Icaza为了在iPhone上运行应用程序而在游戏引擎上进行静态编译 - 不是我的考虑到了.
有没有任何产品,免费或商业,允许我静态编译我的.net 3.5 winform应用程序?
谢谢
我最近不得不深入研究一些VB6代码,我看到了这个模式:
dim o as obj
set o = new obj
Run Code Online (Sandbox Code Playgroud)
为什么不呢?
dim o as new obj
Run Code Online (Sandbox Code Playgroud)
我记得15年前有一个很好的理由,但我不记得它现在是什么.谁还记得吗?原因仍然有效吗?
我不是想给打一个死 马,诚实.我已经阅读了有关线程查杀的所有建议,但请考虑代码.它执行以下操作:
StartThread
方法)WAITFOR
命令 - 这意味着它将一直坐在那里直到队列中有东西.这一切都在MonitorQueue
方法中.杀死线程.我试过.Interrupt
- 似乎什么也没做.然后我尝试了.Abort
,永远不应该使用,但即使这样做也没有.
Thread thxMonitor = new Thread(MonitorQueue);
void StartThread() {
thxMonitor.Start();
}
void MonitorQueue(object obj) {
var conn = new SqlConnection(connString);
conn.Open();
var cmd = conn.CreateCommand();
cmd.CommandTimeout = 0; // forever and ever
cmd.CommandType = CommandType.Text;
cmd.CommandText = "WAITFOR (RECEIVE CONVERT(int, message_body) AS Message FROM SBQ)";
var dataTable = new DataTable();
var da = new SqlDataAdapter(command); …
Run Code Online (Sandbox Code Playgroud)当我启动 Windows 终端时,我得到以下信息:
如何摆脱版权和版本通知、帮助 URL 和更新检查?我只想进入命令行。
我的 powershell 配置文件在 settings.json (Windows 终端的配置文件)中如下所示:
{
"guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
"hidden": false,
"name": "PowerShell",
"source": "Windows.Terminal.PowershellCore",
"fontFace": "Cascadia Code PL",
"startingDirectory": "C:\\Users\\user1\\desktop\\"
}
Run Code Online (Sandbox Code Playgroud)
我见过 -nologo 等标志,但我没有命令行来传递它。
我一直在使用WebServices来传输数据,这对我很有帮助.它擅长发送小块数据.只要您必须移动具有大量属性的深层对象树,生成的XML汤就会获取100k的数据并将其转换为1MB.
所以我尝试过IIS压缩,但它让我不知所措.它压缩数据很好,但权衡是压缩/解压缩.然后我通过BinaryFormatter序列化对象并将其发送出去.然而,这更好,编码/解码的速度仍然存在.
无论如何,我听说我被困在00s,现在有更好的方法通过网络发送数据,如ProtocolBuffers,MessagePack等...
有人能告诉我这些新协议是否更适合发送大量数据,以及我是否缺少其他有效的方法来执行此操作?
通过有效,我的意思是带宽量,编码/解码速度,实施速度等......
c# ×7
.net ×2
.net-3.5 ×2
architecture ×1
compilation ×1
compression ×1
java ×1
networking ×1
p2p ×1
powershell ×1
resharper ×1
sockets ×1
static ×1
vb6 ×1
windows ×1