我想看看Netbeans看起来像Photoshop CS6,Visual studio类型.所以
我忘记了我所做的改变
我经常搜索以使其默认
我的问题(图片)是
:
在阅读C book中的Compiler Design时,我遇到了以下规则来描述无上下文语法:
识别一个或多个语句列表的语法,每个语句都是一个后跟分号的算术表达式.语句由一系列以分号分隔的表达式组成,每个表达式包含一系列由星号(用于乘法)或加号(用于加法)分隔的数字.
这是语法:
1. statements ::= expression;
2. | expression; statements
3. expression ::= expression + term
4. | term
5. term ::= term * factor
6. | factor
7. factor ::= number
8. | (expression)
Run Code Online (Sandbox Code Playgroud)
该书指出这种递归语法存在一个主要问题.几个产品的右侧出现在生产3的左侧(并且此属性称为左递归),并且某些解析器(如递归下降解析器)无法处理左递归生成.他们只是永远地循环.
您可以通过考虑解析器在替换具有多个右侧的非终端时如何决定应用特定生产来理解该问题.简单的情况在制作7和8中很明显.解析器可以通过查看下一个输入符号来选择在扩展因子时应用哪个制作.如果此符号是数字,则编译器应用Production 7并用数字替换该因子.如果下一个输入符号是一个左括号,则解析器将使用Production 8.但是,Productions 5和6之间的选择无法以这种方式解决.在生产6的情况下,术语的右侧以一个因子开始,该因子以数字或左括号开始.因此,解析器希望在替换术语时应用Production 6,并且下一个输入符号是数字或左括号.生产5-另一个右侧 - 以一个术语开始,该术语可以以一个因子开始,该因子可以以数字或左括号开头,这些是用于选择生产6的相同符号.
书中的第二句话让我彻底迷失了.所以通过使用一些语句的例子(例如)5 + (7*4) + 14:
compiler-construction recursion parsing recursive-descent left-recursion
我需要通过 SSH 连接到嵌入式设备,启动后台程序,然后断开连接并保持后台进程运行。问题是嵌入式设备正在使用 ash shell(不是 bash 或其他任何东西),所以 nohup 和 screen 不可用。我还没有找到任何方法来断开 ash 中的进程。有没有办法在灰烬中做到这一点?
假设数百万客户端在固定时间间隔内向一台服务器发送心跳,因此服务器判断客户端停止发送心跳的时间大于间隔时间.如果服务器只维护一个映射并继续迭代每个客户端以检查客户端是否超时,那将产生O(n)复杂性,这对数百万客户来说是可怕的.是否存在一些算法来制作O(log(n))复杂度,就像一些堆或二叉树来解决这样的问题?谢谢.
我在接受采访时被问到以下问题,我不知道该怎么做
编写程序以找到可由0和9形成的最小数字,该数字可被给定数字整除.
例如,如果给定的数字是3输出应该是9,如果给定数字是2输出是90,如果给定数字是10输出是90
我在网上找到了这个解决方案,但我还没有理解这一点: -
public class Smallest0And9DivisibleNumber {
public static int find(int divisible) {
int bin = 1;
while (true) {
int res = translate(bin);
if (res % divisible == 0) {
return res;
}
bin += 1;
}
}
private static int translate(int bin) {
int result = 0;
for (int i = Integer.toBinaryString(bin).length(); i > 0; i--) {
result *= result != 0 ? 10 : 0;
int mask = 1 << (i - 1);
result += …Run Code Online (Sandbox Code Playgroud) 我正在使用MulticastSocket,当我尝试加入一个组时,当我在"localhost"ip上运行组时,它永远不会工作.但是,我发现这篇文章http://lycog.com/programming/multicast-programming-java/表明范围应该在224.0.0.1和239.255.255.254之间.当我从该IP中创建一个InetAddress并加入该组时,它就可以工作了.请解释为什么这是必要的.
例:
InetAddress group = InetAddress.getByName("localhost");
int port = 8888;
MulticastSocket socket = new MulticastSocket(port);
socket.joinGroup(group);
Run Code Online (Sandbox Code Playgroud)
//抛出
Unable to connect to host:localhost on port:8888
java.net.SocketException: Not a multicast address
Run Code Online (Sandbox Code Playgroud)
有效的示例:
InetAddress group = InetAddress.getByName("224.0.0.1");
int port = 8888;
MulticastSocket socket = new MulticastSocket(port);
socket.joinGroup(group);
Run Code Online (Sandbox Code Playgroud) java networking network-programming datagram multicastsocket
假设只有一个节点具有R行。基本Cassandra操作的理论时间复杂度是多少?
更具体地说,我想知道:
key = item。我认为O(log(R))是这样吗?key > item,即切片。C *是否将获取所有R行以判断是否满足条件,结果是O(R)?那有序行呢?key > 10 AND key < 12。C *是否会首先选择所有匹配项key > 10,然后使用进行过滤key < 12?还是C *将它们组合成一个条件进行查询?为什么我们有两个版本的Java?
所以,正如标题可能暗示我在我的 Java 项目中遇到了一些麻烦。我想做的是这样的:
我需要做的是在 X 和 Y 之间建立连接。 例如,有人使用运行 X 的计算机,在发现过程后,他们将返回运行 Y 应用程序的计算机列表及其 IP,反之亦然。
我已经使用 UDP 广播完成了此操作,但有时会失败。电脑通过WiFi连接,所以基本上是通过路由器。在很多情况下,任何 X 计算机都可以通过我的 UDP 发现方法看到 Y 计算机,但有时不能,除非我手动指向 IP,有时甚至不会。
这是用于发现侦听特定端口的服务器的代码:
public static ArrayList<InetAddress> searchComputer() {
ArrayList<InetAddress> targets = new ArrayList<InetAddress>();
try {
c = new DatagramSocket();
c.setBroadcast(true);
byte[] sendData = "DISCOVER_PC_SERVER_REQUEST".getBytes();
try {
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, InetAddress.getByName("255.255.255.255"), 2005);
c.send(sendPacket);
} catch (Exception e) {}
Enumeration interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface networkInterface = (NetworkInterface) interfaces.nextElement();
if …Run Code Online (Sandbox Code Playgroud) 我想在像这样的 makefile 中运行脚本
all: a b
a:
cd ~/trials; \
. ./sx.sh
b:
echo $(bn)
Run Code Online (Sandbox Code Playgroud)
sx.sh 这样做
export bn=1
Run Code Online (Sandbox Code Playgroud)
发出 make 命令时,我在终端中看不到该变量。我的目标是在针对这些脚本特定设置编译我的项目之前运行脚本。