我想得到午夜以来的秒数.
这是我的第一个猜测:
time_t current;
time(¤t);
struct tm dateDetails;
ACE_OS::localtime_r(¤t, &dateDetails);
// Get the current session start time
const time_t yearToTime = dateDetails.tm_year - 70; // year to 1900 converted into year to 1970
const time_t ydayToTime = dateDetails.tm_yday;
const time_t midnightTime = (yearToTime * 365 * 24 * 60 * 60) + (ydayToTime* 24 * 60 * 60);
StartTime_ = static_cast<long>(current - midnightTime);
Run Code Online (Sandbox Code Playgroud) 我有一些URL,比如www.amazon.com/,www.digg.com或者www.microsoft.com/我想删除尾部斜杠,如果它存在,那么不仅仅是最后一个字符.是否有一个trim或rtrim这个?
现在我只是简单地将所有东西都包括在内(包括我所有的源代码),但我认为有一种最佳实践方法可以获得正确的dll和正确的aspx文件进行部署.
是否可以通过遍历数组一次从整数数组中找到第二个最大数字?
作为一个例子,我有一个由五个整数组成的数组,我希望从中找到第二个最大数.以下是我在采访中的尝试:
#define MIN -1
int main()
{
int max=MIN,second_max=MIN;
int arr[6]={0,1,2,3,4,5};
for(int i=0;i<5;i++){
cout<<"::"<<arr[i];
}
for(int i=0;i<5;i++){
if(arr[i]>max){
second_max=max;
max=arr[i];
}
}
cout<<endl<<"Second Max:"<<second_max;
int i;
cin>>i;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然而,采访者想出了测试用例int arr[6]={5,4,3,2,1,0};,这使得它无法if第二次进入这种情况.我对面试官说,唯一的办法是解析数组两次(两个for循环).有人有更好的解决方案吗?
我刚刚读了一篇文章,据说我向我介绍了一个新概念:到目前为止,我确信python包(即带有__init__.py文件的目录)的行为与java包完全相同,即 - 用于帮助安排代码的小命名空间(减去java的"包"范围).但是,根据这个链接:
如果我把所有文件都放在同一个"包"中,那么简短的进入多文件模块:
整个文件集合作为单个模块呈现给其他Python代码 - 就像所有函数和类都在一个.py中一样
所以现在我认为我对python"包"的全部理解是错误的.而且 - 它完全不是一个包,而是作者所指的"多文件模块".
所以,根据我的理解,不管有多少文件我将我的funcs和类分成一个包,从外面那个包应该看起来好像我从包中的所有文件中取出了所有代码并把它放在一个大的改为使用与包相同名称的文件,即作为一个模块.
例如,如果我有以下文件结构:
/base
/animals
/__init__.py
/dog.py
Run Code Online (Sandbox Code Playgroud)
在dog.py中:
def bark():
print "woof"
Run Code Online (Sandbox Code Playgroud)
它应该与以下内容完全相同:
/base
/animals.py
Run Code Online (Sandbox Code Playgroud)
并在animals.py中:
def bark():
print 'woof'
Run Code Online (Sandbox Code Playgroud)
因此,下一段代码应该在两种情况下正常运行:
from base import animals
animals.bark()
Run Code Online (Sandbox Code Playgroud)
这当然会在第一种情况下产生:
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'module' object has no attribute 'bark'
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?我通过例外看到"动物"确实被视为一个模块,但似乎我仍然需要明确说明animals.dog.bark,即包的内部文件结构不是从外部抽象出来的.
我错过了作者的观点,还是没有正确实现它?
===编辑===
只是为了确保在报价中没有人错过这一行:
好像所有的函数和类都在一个.py中
无论如何实际访问此funcs和类,上面的引用都明确指出,如果文件a中的func1和文件b中的func2,无论它们可以从哪个路径访问,如果我们将此路径表示为X,那么,根据上述报价,双方X.func1并X.func2应工作.
我不是在寻找YAML或JSON相对优点的比较,我纯粹在寻找许多语言支持的东西并且具有稳定的实现.
另外一个优点是要知道哪些库没有需要其他库的巨大依赖树.
我开始尝试使用python在sqlite中存储字符串,并得到消息:
sqlite3.ProgrammingError:除非使用可解释8位字节串的text_factory(如text_factory = str),否则不得使用8位字节串.强烈建议您只需将应用程序切换为Unicode字符串.
好的,我切换到Unicode字符串.然后我开始收到消息:
sqlite3.OperationalError:无法使用文本'SigurRós'解码为UTF-8列'tag_artist'
尝试从数据库中检索数据时.更多的研究和我开始在utf8编码,但随后'SigurRós'开始看起来像'SigurRós'
注意: @John Machin指出,我的控制台设置为'latin_1'显示.
是什么赋予了?在阅读完这篇文章后,描述了我所处的完全相同的情况,似乎建议忽略其他建议并且毕竟使用8位字节串.
在开始这个过程之前,我对unicode和utf了解不多.我在过去的几个小时里学到了很多东西,但我仍然不知道是否有办法正确地将'ó'从latin-1转换为utf-8而不是破坏它.如果没有,为什么sqlite'强烈推荐'我将我的应用程序切换到unicode字符串?
我将用最后24小时内学到的所有内容的摘要和一些示例代码来更新这个问题,以便我的鞋子里的人可以有一个简单的(呃)指南.如果我发布的信息有任何错误或误导,请告诉我,我会更新,或者你们中的一个高级人员可以更新.
答案摘要
让我首先说明我理解的目标.处理各种编码的目标,如果您尝试在它们之间进行转换,则要了解源编码是什么,然后使用该源编码将其转换为unicode,然后将其转换为所需的编码.Unicode是基础,编码是该基础的子集的映射.utf_8为unicode中的每个字符都有空间,但由于它们与例如latin_1不在同一个地方,因此以utf_8编码并发送到latin_1控制台的字符串将不会像您期望的那样.在python中,获取unicode和进入另一个编码的过程如下:
str.decode('source_encoding').encode('desired_encoding')
Run Code Online (Sandbox Code Playgroud)
或者如果str已经是unicode
str.encode('desired_encoding')
Run Code Online (Sandbox Code Playgroud)
对于sqlite我实际上并不想再次编码,我想解码它并保持unicode格式.当您尝试在python中使用unicode和编码时,您可能需要注意以下四件事.
阐述:
(1)当您从源读取字符串时,它必须具有一些编码,如latin_1或utf_8.在我的情况下,我从文件名中获取字符串,所以不幸的是,我可以获得任何类型的编码.Windows XP使用UCS-2(Unicode系统)作为其本机字符串类型,这似乎是在欺骗我.对我来说幸运的是,大多数文件名中的字符不会由多个源编码类型组成,我认为我的全部都是完全latin_1,完全是utf_8,或者只是简单的ascii(这是两者的子集)那些).所以我只是阅读它们并将它们解码,就像它们仍处于latin_1或utf_8一样.但是,有可能你可以将latin_1和utf_8以及在Windows上的文件名中混合在一起的任何其他字符.有时这些角色可以显示为框,有时它们看起来很糟糕,有时它们看起来是正确的(重音符号等等).继续.
(2)Python有一个默认的系统编码,在python启动时设置,在运行时不能更改.详情请见此处.脏的总结...这里是我添加的文件:
\# sitecustomize.py
\# this file can be anywhere in your Python path,
\# but it usually goes in ${pythondir}/lib/site-packages/
import sys
sys.setdefaultencoding('utf_8')
Run Code Online (Sandbox Code Playgroud)
此系统编码是在没有任何其他编码参数的情况下使用unicode("str")函数时使用的编码.换句话说,python试图根据默认的系统编码将"str"解码为unicode.
(3)如果您正在使用IDLE或命令行python,我认为您的控制台将根据默认的系统编码显示.我出于某种原因使用带有eclipse的pydev,所以我必须进入我的项目设置,编辑测试脚本的启动配置属性,转到Common选项卡,然后将控制台从latin-1更改为utf-8,以便我可以直观地确认我在做什么工作.
(4)如果你想要一些测试字符串,例如
test_str = "ó"
Run Code Online (Sandbox Code Playgroud)
在你的源代码中,你必须告诉python你在该文件中使用了什么样的编码.(仅供参考:当我输入错误编码时,我必须使用ctrl-Z,因为我的文件变得不可读.)这可以通过在源代码文件的顶部放置一行来实现:
# -*- coding: utf_8 -*-
Run Code Online (Sandbox Code Playgroud)
如果您没有此信息,python会尝试默认将您的代码解析为ascii,因此:
SyntaxError: Non-ASCII character '\xf3' in file _redacted_ on line 81, but no encoding declared; …Run Code Online (Sandbox Code Playgroud) 这是我的数据库的结果集
print_r($plan);
Array
(
[0] => Array
(
[id] => 2
[subscr_unit] => D
[subscr_period] =>
[subscr_fee] =>
)
[1] => Array
(
[id] => 3
[subscr_unit] => M,Y
[subscr_period] => 1,1
[subscr_fee] => 90,1000
)
[2] => Array
(
[id] => 32
[subscr_unit] => M,Y
[subscr_period] => 1,1
[subscr_fee] => 150,1500
)
)
Run Code Online (Sandbox Code Playgroud)
我怎样才能更改$plan[0]为$plan[value_of_id]
谢谢.
//html structure
<div id='outer'>
<div id='inner'>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我正在向内部元素添加一些数据
$('#inner').data('_key','_someValue');
Run Code Online (Sandbox Code Playgroud)
现在将来的某个时候,我正在清除外部元素的文本.
$('#outer').empty().html('some thing new');
Run Code Online (Sandbox Code Playgroud)
我正在使用清除div的文本empty(),我读取了empty()删除绑定在子元素上的所有事件.
我的问题是,doe空函数也从元素中删除数据,或者我们必须自己做,就像$('#inner').data('_key',null)从DOM中删除元素或自动完成之前一样empty().
我很擅长使用C++而且我实际上遇到了问题.
我有一些A,B,C类定义如下(PSEUDOCODE)
class A
{
...
DoSomething(B par1);
DoSomething(C par1);
...
}
class B
{
A parent;
...
}
class C
{
A parent;
...
}
Run Code Online (Sandbox Code Playgroud)
问题是 :
怎么做到这个?如果我只是这样做(因为我总是在c#中完成)它会给出错误.我非常理解这个的原因.(如果我将B和C的引用(包含)添加到自己的头中,则尚未声明A)
有什么方法可以解决这个问题吗?(使用void*指针不是去imho的方法)