信号量和自旋锁之间的基本区别是什么?
什么时候我们会使用信号量而不是自旋锁?
我想确切地知道"Is"命令在Linux和Unix中是如何工作的.
据我所知,ls forks和exec到linux/unix shell然后得到输出(当前文件树.例如/home/ankit/).我需要一个更详细的解释,因为我不确定调用fork后会发生什么.
任何人都可以详细解释'ls'命令的功能吗?
我正在为公司Use使用缓存生成服务器.我想知道如何从列表中搜索项目,因为我想要搜索比较erlang中的各种数据结构的成本,如dict,orddict,List,元组,树,队列等用于缓存程序.
例:
List = [{"A1",["ankit","sush", "Hover", "x4", "a3","nilesh","mike","erlang" | ...]}|...].
Run Code Online (Sandbox Code Playgroud)
现在,我想搜索Key A1并在列表中搜索"mike".搜索上面列表的最佳方法是什么.
请提供一些例子.Atleast Pseudo for it.
我正在考虑使用Erlang,Mnesia和Yaws开发一个网络搜索引擎.是否有可能使用这些软件制作功能强大且速度最快的网络搜索引擎?它需要做什么以及我该如何开始?
startTrains() - > TotalDist = 100,Trains = [trainA,trainB],PID = spawn(fun() - > train(1,length(Trains))end),[PID!{self(),TrainData,TotalDist} || TrainData < - Trains],在10500 - > refresh end之后接收{_From,Mesg} - > error_logger:info_msg("~n Mesg~p~n",[Mesg]).
所以,我创建了名为trainA,trainB的两个进程.我希望将这些过程递增5,直到达到100.我做了不同的过程,使每个列车(过程)平行增加其位置.但我很惊讶地顺序获得输出,即进程trainA结束然后进程trainB开始.但我想同时增加自己.我想运行这样的流程
trainA 10 trainB 0
trainA 15 trainB 5
....
trainA 100 trainB 100
Run Code Online (Sandbox Code Playgroud)
但我得到了
trainA 0
....
trainA 90
trainA 95
trainA 100
trainA ends
trainB 0
trainB 5
trainB 10
.....
trainB 100
Run Code Online (Sandbox Code Playgroud)
如何使进程并行/同时运行?希望你得到我的Q. 请帮我.
#!/bin/bash
hello()
{
SRC=$1
DEST=$2
for IP in `cat /opt/ankit/configs/machine.configs` ; do
echo $SRC | grep '*' > /dev/null
if test `echo $?` -eq 0 ; then
for STAR in $SRC ; do
echo -en "$IP"
echo -en "\n\t ARG1=$STAR ARG2=$2\n\n"
done
else
echo -en "$IP"
echo -en "\n\t ARG1=$SRC ARG2=$DEST\n\n"
fi
done
}
hello $1 $2
Run Code Online (Sandbox Code Playgroud)
上面是我提供源(SRC)和目标(DEST)路径的shell脚本。当我没有放入带有通配符“ ”的 SRC 路径时,它工作得很好。当我运行这个 shell 脚本并给出 ' '.pdf 或 '*' 时,如下所示:
root@ankit1:~/as_prac# ./test.sh /home/dev/Examples/*.pdf /ankit_test/as
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
192.168.1.6
ARG1=/home/dev/Examples/case_Contact.pdf ARG2=/home/dev/Examples/case_howard_county_library.pdf
Run Code Online (Sandbox Code Playgroud)
DEST 是 /ankit_test/as 但 …
这是我面临的就业面试.他们问我们是否可以重新分配阵列,我告诉他们.然后他们问 - 那么为什么我们需要指针,因为大多数人都给出了浪费内存空间的理由.我无法给出满意的答案.如果任何机构能给出任何令人满意的答案,我将不得不承担责任.请提及上述陈述可能相互矛盾的任何情况.
谢谢.
这是Gen_server未启动时抛出的异常消息.
(ankit@127.0.0.1)32> R11 = system_warning:self_test("SysWarn").
** exception exit: {noproc,
{gen_server,call,
[system_warning_sup,
{start_child,
{system_warning_SysWarn,
{system_warning,start_link,[{system_warning_SysWarn}]},
permanent,10,worker,
[system_warning]}},
infinity]}}
in function gen_server:call/3
in call from system_warning_sup:'-start_child/1-lc$^0/1-0-'/1
in call from system_warning:self_test/1
(ankit@127.0.0.1)33> R11.
* 1: variable 'R11' is unbound
Run Code Online (Sandbox Code Playgroud)
现在,我想要做的是捕获此异常消息并放入变量R11(上面显示为未绑定).我想这样做,因为如果gen_sever没有启动,那么我想在收到此消息后开始.我也尝试使用handle_info但不能捕获异常或者可能无法正确实现它.任何人都可以帮我解决这个问题,例如提供一些代码.
我发现在servlet donot中创建的新线程包含servlet/CDI上下文.我创建了一个HelloWorld servlet(如下所示)来试验这个问题.在下面的示例中,您将看到我在新的Thread(FutureTask)中运行'doIt()'函数.但是它返回NULL但是当我直接调用'doIt()'方法时,BeanManager不是NULL.
/**
* Servlet implementation class HelloWorld
*/
@WebServlet("/HelloWorld")
public class HelloWorld extends HttpServlet {
private static final long serialVersionUID = 1L;
private static Logger logger = Logger.getLogger(HelloWorld.class
.getName());
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter writer = response.getWriter();
writer.println("<html>");
writer.println("<head><title>Hello World Servlet</title></head>");
writer.println("<body>");
writer.println("<h1>Context injection into Thread Experiment</h1>");
try {
// 1. This is NOT working
new Thread(testTask).start();
testTask.get(5000, TimeUnit.SECONDS);
// 2. This is working …
Run Code Online (Sandbox Code Playgroud)