如何检查数字是否是回文?
任何语言.任何算法.(除了使数字成为字符串然后反转字符串的算法).
我已经看到几个问题的回答,要求提供文本编辑器的IDE,反之亦然.这让我觉得人们把它们视为同一件事,在那里我画出明显的区别.
请注意,我接受了一个答案,我认为最好解决"文本编辑器"和"IDE"的概念.然而,这只是我个人对最佳解决问题的看法,我将不时继续检查这个问题,看看是否有更好的答案,我会接受这个问题.
我正在编写一个轻量级的XML编辑器,如果用户的输入格式不正确,我想向用户指出问题出在哪里,或者至少在第一个问题出现的地方.有谁知道现有的算法吗?如果看代码有帮助,如果我可以填写FindIndexOfInvalidXml方法(或类似的东西),这将回答我的问题.
using System;
namespace TempConsoleApp
{
class Program
{
static void Main(string[] args)
{
string text = "<?xml version=\"1.0\"?><tag1><tag2>Some text.</taagg2></tag1>";
int index = FindIndexOfInvalidXml(text);
Console.WriteLine(index);
}
private static int FindIndexOfInvalidXml(string theString)
{
int index = -1;
//Some logic
return index;
}
}
}
Run Code Online (Sandbox Code Playgroud) 如何在运行时从String生成字节码(Byte []),而不使用"javac"进程或类似的东西?是否有一种简单的方式来调用编译器?
后来补充:
我选择接受最符合我情况的解决方案.我的应用程序是一个仍处于设计草图阶段的业余爱好项目,现在是考虑插入新技术的最佳时机.另外,因为那个应该帮助我的人是一个JavaScript开发人员,在这种情况下,使用JavaScript解释器而不是存根编译器+ classLoader的想法似乎更吸引我.这个问题的其他(未被接受的)答案是提供信息的,据我所知,非常好地回答我的问题,所以谢谢,但我要去尝试Rhino :)
我正在考虑为"管理"Web应用程序设计权限系统的最佳方法.该应用程序可能有许多用户,每个用户都可以被分配一定的角色; 可以允许其中一些用户执行角色之外的特定任务.
我可以想到两种设计方法:一种是"权限"表,每个用户都有一行,布尔列,每个任务一个,为他们分配执行这些任务的权限.像这样:
User ID Manage Users Manage Products Manage Promotions Manage Orders 1 true true true true 2 false true true true 3 false false false true
我想到的另一种方法是使用位掩码来存储这些用户权限.对于32位有符号整数,这会将可管理的任务数限制为31,但实际上我们不可能有超过31个用户可以执行的特定任务.这样,数据库模式就会更简单,每次添加需要访问控制的新任务时,我们都不必更改表结构.像这样:
User ID Permissions (8-bit mask), would be ints in table 1 00001111 2 00000111 3 00000001
人们通常使用什么机制,为什么?
谢谢!
最近,有人询问了一种在C中反转字符串的算法.在处理非单字节字符串时,大多数提议的解决方案都存在问题.所以,我想知道什么是专门处理utf-8字符串的好算法.
我提出了一些代码,我将其作为答案发布,但我很高兴看到其他人的想法或建议.我更喜欢使用实际代码,因此我选择了C#,因为它似乎是本网站中最流行的语言之一,但我不介意你的代码是否是另一种语言,只要它可以合理任何熟悉命令式语言的人都能理解.而且,由于这是为了看看这样的算法如何在低级别实现(通过低级别我只是意味着处理字节),我们的想法是避免使用库来实现核心代码.
笔记:
我对算法本身,它的性能以及它如何进行优化感兴趣(我的意思是算法级优化,而不是用++ i替换i ++等等;我对实际的基准测试也不感兴趣).
我并不是要在生产代码中实际使用它或"重新发明轮子".这只是出于好奇和锻炼.
我正在使用C#字节数组,所以我假设您可以获得字符串的长度,而不会运行字符串直到找到NUL.也就是说,我没有考虑到找到字符串长度的复杂性.但是,如果你正在使用C语言,你可以在调用核心代码之前使用strlen()来解决这个问题.
编辑:
正如Mike F指出的那样,我的代码(以及此处发布的其他人的代码)并不处理复合字符.那些有些信息在这里.我不熟悉这个概念,但是如果这意味着存在"组合字符",即只与其他"基本"字符/代码点组合有效的字符/代码点,那么这样的查找表当反转时,字符可用于保持"全局"字符("基本"+"组合"字符)的顺序.
标题可能无法解释我真正想要达到的目标,无法真正想出一种描述我的意思的方法.
我想知道在使用它们之前检查函数接受空值或空的参数是否是好的做法.我有这个函数,它只包含一些哈希创建.
Public Shared Function GenerateHash(ByVal FilePath As IO.FileInfo) As String
If (FilePath Is Nothing) Then
Throw New ArgumentNullException("FilePath")
End If
Dim _sha As New Security.Cryptography.MD5CryptoServiceProvider
Dim _Hash = Convert.ToBase64String(_sha.ComputeHash(New IO.FileStream(FilePath.FullName, IO.FileMode.Open, IO.FileAccess.Read)))
Return _Hash
End Function
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我只是将IO.Fileinfo作为参数,在我检查的函数的开头,以确保它不是什么.
我想知道这是一个好习惯还是我应该让它到达实际的hasher然后抛出异常,因为它是null.
谢谢.
如何为每个给定的输入行使xargs执行一次命令?它的默认行为是将行块化并执行一次命令,将多行传递给每个实例.
来自http://en.wikipedia.org/wiki/Xargs:
find/path -type f -print0 | xargs -0 rm
在此示例中,查找使用长文件名列表输入xargs.然后xargs将此列表拆分为子列表,并为每个子列表调用rm一次.这比这个功能相同的版本更有效:
find/path -type f -exec rm'{}'\;
我知道find有"exec"标志.我只是引用另一个资源的说明性示例.
我有一些批处理过程在Linux/PHP网站的幕后运行.它们的数量和复杂性开始增长,因此我想对它们进行少量处理.
我的源代码树有一堆cpp文件和脚本,按开发组织但不考虑部署.编译完所有可执行文件后,我需要在一组机器上放置各种脚本和二进制文件.不同的计算机需要为其批处理过程使用不同的可执行文件,脚本和配置文件.我也有一些我写的属于每台机器的工具.目前,此部署过程是手动且容易出错的.
我猜我最终会得到一个在源代码树根目录下运行的脚本,并构建一个包含任何机器所需的所有内容的小树.然后,我将把它同步到适当的机器上.但我很好奇其他人是如何处理这类问题的.有任何想法吗?
algorithm ×3
.net ×1
arguments ×1
c# ×1
compilation ×1
console ×1
deployment ×1
exception ×1
function ×1
ide ×1
java ×1
lamp ×1
performance ×1
permissions ×1
release ×1
runtime ×1
string ×1
text-editor ×1
utf-8 ×1
validation ×1
xargs ×1
xml ×1