程序设计

专业和发烧友程序员的问答



9
在C ++中声明枚举时,为什么要使用typedef?
多年以来我都没有写过任何C ++,现在我正尝试重新使用它。然后,我遇到了这个问题,并考虑放弃: typedef enum TokenType { blah1 = 0x00000000, blah2 = 0X01000000, blah3 = 0X02000000 } TokenType; 这是什么?为什么在typedef这里使用关键字?为什么名称TokenType在此声明中出现两次?语义与此有何不同: enum TokenType { blah1 = 0x00000000, blah2=0x01000000, blah3=0x02000000 };
183 c++  enums  typedef 

12
Java多线程中如何使用CountDownLatch?
有人可以帮助我了解什么是Java CountDownLatch以及何时使用它吗? 对于这个程序的工作方式,我没有一个很清楚的想法。据我了解,所有三个线程同时启动,每个线程将在3000ms之后调用CountDownLatch。因此,倒数将逐一递减。锁存器变为零后,程序将打印“ Completed”。也许我理解的方式不正确。 import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; class Processor implements Runnable { private CountDownLatch latch; public Processor(CountDownLatch latch) { this.latch = latch; } public void run() { System.out.println("Started."); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } latch.countDown(); } } // ------------------------------------------------ ----- public class App …

2
为什么“ this”是指针而不是引用?
我在阅读有关C ++优缺点的问题的答案,并在阅读注释时遇到了疑问。 程序员经常发现“ this”是一个指针而不是一个引用令人困惑。另一个困惑是为什么“ hello”不是std :: string类型,而是求值为char const *(指针)(在数组到指针的转换之后)– Johannes Schaub-litb 08年12月22日在1:56 这仅表明它没有使用与其他(后来的)语言相同的约定。– le dorfier 08年12月22日在3:35 我将“这个”事情称为一个非常琐碎的问题。糟糕,感谢您在我的未定义行为示例中发现了一些错误。:)尽管我不了解有关尺寸的信息与第一个信息有关。完全不允许指针指向已分配的内存之外– jalf 08年12月22日在4:18 这是持续不断的痛苦吗?– yesraaj 08年12月22日下午6:35 如果方法是const int getFoo()const,则它可以是常量。<-在getFoo的范围内,“ this”是常量,因此是只读的。这样可以防止错误,并为调用者提供一定程度的保证,即该对象不会更改。– Doug T. 08年12月22日在16:42 您不能重新分配“此”。即您不能执行“ this =&other;”,因为这是一个右值。但这是T *类型,而不是T const类型。即它是一个非恒定指针。如果您使用的是const方法,则它是指向const的指针。T常量 但指针本身是非常量– Johannes Schaub-litb 08年12月22日在17:53 可以这样想“ this”:#define this(this_ + 0),其中编译器创建“ this_”作为指向对象的指针,并使“ this”成为关键字。您不能分配“ this”,因为(this_ + 0)是一个右值。当然不是这样的(没有这样的宏),但是它可以帮助理解它– Johannes Schaub-litb …

4
将WPF ComboBox绑定到自定义列表
我有一个ComboBox,它似乎没有更新SelectedItem / SelectedValue。 ComboBox ItemsSource绑定到ViewModel类上的一个属性,该类将一堆RAS电话簿条目作为CollectionView列出。然后,我(在不同的时间)将ViewModel 的SelectedItem或绑定SelectedValue到了另一个属性。我已经在保存命令中添加了一个MessageBox来调试由数据绑定设置的值,但是未设置SelectedItem/ SelectedValue绑定。 ViewModel类看起来像这样: public ConnectionViewModel { private readonly CollectionView _phonebookEntries; private string _phonebookeEntry; public CollectionView PhonebookEntries { get { return _phonebookEntries; } } public string PhonebookEntry { get { return _phonebookEntry; } set { if (_phonebookEntry == value) return; _phonebookEntry = value; OnPropertyChanged("PhonebookEntry"); } } …
183 c#  wpf  data-binding  mvvm  combobox 

2
将流缓冲区转换为utf8字符串
我想使用node.js进行HTTP请求,以从Web服务器加载一些文本。由于响应中可能包含很多文本(有些兆字节),因此我想分别处理每个文本块。我可以使用以下代码来实现: var req = http.request(reqOptions, function(res) { ... res.setEncoding('utf8'); res.on('data', function(textChunk) { // process utf8 text chunk }); }); 这似乎没有问题。但是我想支持HTTP压缩,所以我使用zlib: var zip = zlib.createUnzip(); // NO res.setEncoding('utf8') here since we need the raw bytes for zlib res.on('data', function(chunk) { // do something like checking the number of bytes downloaded zip.write(chunk); …
183 node.js 

3
为什么git revert抱怨缺少-m选项?
因此,我正在与其他人一起开发一个项目,并且正在处理多个github分支。有人刚刚解决了一个问题,于是我与他的叉子合并,但后来我意识到我可以找到更好的解决方案。我想还原刚才所做的提交。我尝试这样做,git revert HEAD但它给了我这个错误: 致命:提交<SHA1>是合并,但未提供-m选项。 那是什么意思?合并并提交后,确实使用了-m选项来表示“与<username>合并”。 我在这里做错了什么?
183 git  github  git-revert 


6
球拍与Scheme有何不同?
球拍是Scheme的后代。球拍与R6RS有何不同?它增加了什么或带走了什么,或者只是有所不同? 我知道Racket不仅仅是一种语言,它还是多种语言的平台。但我指的是主要的Racket方言。
183 scheme  lisp  racket 

19
在Mac上安装后,使用ALTER USER语句重置MySQL根密码
我是整个Mac体验的新手。我最近安装了MySQL,看来安装后必须重置密码。它不会让我做任何其他事情。 现在,我已经以通常的方式重置了密码: update user set password = password('XXX') where user = root; (顺便说一句:我花了很长时间才得出结论,由于某种奇怪的原因,MySQL将字段“ password”重命名为“ authentication_string”。我对这样的更改感到很沮丧。) 不幸的是,我似乎需要以我不知道的其他方式更改密码。也许这里有人已经遇到了这个问题?
183 mysql  macos 

19
如何判断UITableView何时完成ReloadData?
执行完后,我试图滚动到UITableView的底部 [self.tableView reloadData] 我原来有 [self.tableView reloadData] NSIndexPath* indexPath = [NSIndexPath indexPathForRow: ([self.tableView numberOfRowsInSection:([self.tableView numberOfSections]-1)]-1) inSection: ([self.tableView numberOfSections]-1)]; [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES]; 但是后来我读到reloadData是异步的,因此自以来都没有发生滚动self.tableView,[self.tableView numberOfSections]并且[self.tableView numberOfRowsinSection都为0。 谢谢! 奇怪的是我正在使用: [self.tableView reloadData]; NSLog(@"Number of Sections %d", [self.tableView numberOfSections]); NSLog(@"Number of Rows %d", [self.tableView numberOfRowsInSection:([self.tableView numberOfSections]-1)]-1); 在控制台中,它返回Sections = 1,Row = -1; 当我执行完全相同的NSLogs时,cellForRowAtIndexPath我得到Sections = 1和Row = …

7
递归锁(Mutex)与非递归锁(Mutex)
POSIX允许互斥量是递归的。这意味着同一线程可以锁定同一互斥锁两次,并且不会死锁。当然,它还需要将其解锁两次,否则其他线程将无法获得该互斥锁。并非所有支持pthread的系统都支持递归互斥锁,但是如果要符合POSIX,则必须这样做。 其他API(更高级的API)通常也提供互斥体,通常称为“锁定”。某些系统/语言(例如Cocoa Objective-C)提供递归和非递归互斥体。有些语言也只提供其中一种。例如,Java互斥锁始终是递归的(同一线程可能在同一对象上两次“同步”两次)。根据它们提供的其他线程功能的不同,不使用递归互斥可能没有问题,因为可以很容易地自己编写(我已经在更简单的互斥/条件操作的基础上实现了递归互斥)。 我不太了解的是:非递归互斥锁有什么用处?如果两次锁定同一个互斥锁,为什么还要线程死锁?即使是可以避免这种情况的高级语言(例如,测试是否会死锁并在发生异常时抛出异常)通常也不会这样做。他们会让线程死锁。 这是否仅适用于以下情况:我不小心将其锁定两次,而仅将其解锁一次,并且在递归互斥的情况下,将很难发现问题,因此我立即使其死锁,以查看错误的锁定出现在何处?但是在解锁时返回锁计数器是否可以做同样的事情,在这种情况下,我确定我释放了最后一个锁并且计数器不为零,我可以抛出异常或记录问题吗?还是我没有看到其他任何更有用的非递归互斥用例?还是仅仅是性能,因为非递归互斥锁可能比递归互斥锁快一点?但是,我对此进行了测试,但差异实际上并没有那么大。


7
Access-Control-Allow-Origin不允许使用原点null
我制作了一个小的xslt文件,以使用以下代码创建一个名为weather.xsl的html输出: <!-- DWXMLSource="http://weather.yahooapis.com/forecastrss?w=38325&u=c" --> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="yweather" xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="/"> <img src="{/*/*/item/yweather:condition/@text}.jpg"/> </xsl:template> </xsl:stylesheet> 我想将html输出加载到html文件中的div中,我正在尝试使用jQuery进行如下操作: <div id="result"> <script type="text/javascript"> $('#result').load('weather.xsl'); </script> </div> 但是我遇到以下错误:Access-Control-Allow-Origin不允许使用Origin null。 我已经读过有关向xslt添加标头的信息,但是我不确定如何做到这一点,因此将不胜感激,并且如果无法以这种方式完成html输出中的加载,则建议如何进行其他操作这样做会很棒。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.