wasting time

从8月22日早上一直到8月23日傍晚

我一直在装一个叫做sql的东东


经历是相当的曲折,

先从校pt上下载了sql2008,安装失败,说是缺少某个cab文件,一定是我安装的方式不对,于是重试了一次,还是缺少cab文件,呵呵,真的是文件的问题。

安装是没成功,但是还是安装上了部分功能,于是我又把这些组件一一卸掉,以备下一次安装。

从pt上下载了一个sql2005,装上了,发现连接不上数据库引擎,查找网上的方法,什么防火墙问题,服务没开问题,服务器名字不对问题等等,每种可能以及每种可能的排列组合我都试了一下,还是连不上。

再想是不是2008没卸干净?是不是64位和32不兼容?是不是系统缺少什么组件?折腾。。

就这样大半天过去了。

到了晚上,做了一个决定,重装系统,于是把系统重装了一下,然后又装了下sql2005,还是不行。

然后又把sql2005卸了,想从网上再下载一个新的版本,可是网速龟速,下大文件不可能,最后选定了一个sql server studio express 2008简易版,抱着试一试的态度装上了,结果——

尼玛果然还是不行啊,还是老问题,数据库引擎怎么都连不上,查资料,说要打开sql配置器,找到其中的sqlserver项,然后将其中的服务启动,我就照着打开了,结果发现我的sqlserver项中神马的都米有。。。

再次陷入深深的黑暗地窖中。。

最后,我做了一个决定,一定是电脑是64位的原因,于是回到宿舍,把sql2005装在了32位宿舍的电脑上,还是连不上,同样的问题。

就这样带着一种无比苦逼的心情睡觉了。


今天一大早,领着宿舍的电脑跑去实验室继续折腾。

宿舍电脑上还有一个sql2008的版本,就拿那个来装,是在原来2005的基础上升级的,装完之后,发现还是连不上,呵呵。

最后怒了,做了一个决定,把宿舍电脑装回xp。

于是从pt上下载了xp安装iso文件,查了下资料用U盘装系统,说是先用PE进入电脑,然后将iso加载,然后安装,进入复制文件页面,之后会重启,重启之后会进入安装界面。

结果重启之后提示:disk read error。不知何问题。

最后用的是ghost文件还原的。

然后装上了sql2008,轻轻一连,就连上了,我该说神马好呢?


还是不爽啊,本来说用win764位的机子的,结果退回到win732位的机子上,又退回到xp32位的机子上,尼玛xp还是用ghost还原的。。。

最后选择的最搓的方式。


真为自己的智商拙计。

我大把大把的时间啊。

int ntpd_main(int argc UNUSED_PARAM, char **argv) { #undef G struct globals G; struct pollfd *pfd; peer_t **idx2peer; unsigned cnt; memset(&G, 0, sizeof(G)); SET_PTR_TO_GLOBALS(&G); ntp_init(argv); /* If ENABLE_FEATURE_NTPD_SERVER, + 1 for listen_fd: */ cnt = G.peer_cnt + ENABLE_FEATURE_NTPD_SERVER; idx2peer = xzalloc(sizeof(idx2peer[0]) * cnt); pfd = xzalloc(sizeof(pfd[0]) * cnt); /* Countdown: we never sync before we sent INITIAL_SAMPLES+1 * packets to each peer. * NB: if some peer is not responding, we may end up sending * fewer packets to it and more to other peers. * NB2: sync usually happens using INITIAL_SAMPLES packets, * since last reply does not come back instantaneously. */ cnt = G.peer_cnt * (INITIAL_SAMPLES + 1); while (!bb_got_signal) { llist_t *item; unsigned i, j; int nfds, timeout; double nextaction; /* Nothing between here and poll() blocks for any significant time */ nextaction = G.last_script_run + (11*60); if (nextaction < G.cur_time + 1) nextaction = G.cur_time + 1; i = 0; #if ENABLE_FEATURE_NTPD_SERVER if (G_listen_fd != -1) { pfd[0].fd = G_listen_fd; pfd[0].events = POLLIN; i++; } #endif /* Pass over peer list, send requests, time out on receives */ for (item = G.ntp_peers; item != NULL; item = item->link) { peer_t *p = (peer_t *) item->data; if (p->next_action_time <= G.cur_time) { if (p->p_fd == -1) { /* Time to send new req */ if (--cnt == 0) { VERB4 bb_simple_error_msg("disabling burst mode"); G.polladj_count = 0; G.poll_exp = MINPOLL; } send_query_to_peer(p); } else { /* Timed out waiting for reply */ close(p->p_fd); p->p_fd = -1; /* If poll interval is small, increase it */ if (G.poll_exp < BIGPOLL) adjust_poll(MINPOLL); timeout = poll_interval(NOREPLY_INTERVAL); bb_error_msg("timed out waiting for %s, reach 0x%02x, next query in %us", p->p_dotted, p->reachable_bits, timeout); /* What if don't see it because it changed its IP? */ if (p->reachable_bits == 0) resolve_peer_hostname(p); set_next(p, timeout); } } if (p->next_action_time < nextaction) nextaction = p->next_action_time; if (p->p_fd >= 0) { /* Wait for reply from this peer */ pfd[i].fd = p->p_fd; pfd[i].events = POLLIN; idx2peer[i] = p; i++; } } timeout = nextaction - G.cur_time; if (timeout < 0) timeout = 0; timeout++; /* (nextaction - G.cur_time) rounds down, compensating */ /* Here we may block */ VERB2 { if (i > (ENABLE_FEATURE_NTPD_SERVER && G_listen_fd != -1)) { /* We wait for at least one reply. * Poll for it, without wasting time for message. * Since replies often come under 1 second, this also * reduces clutter in logs. */ nfds = poll(pfd, i, 1000); if (nfds != 0) goto did_poll; if (--timeout <= 0) goto did_poll; } bb_error_msg("poll:%us sockets:%u interval:%us", timeout, i, 1 << G.poll_exp); } nfds = poll(pfd, i, timeout * 1000); did_poll: gettime1900d(); /* sets G.cur_time */ if (nfds <= 0) { double ct; int dns_error; if (bb_got_signal) break; /* poll was interrupted by a signal */ if (G.cur_time - G.last_script_run > 11*60) { /* Useful for updating battery-backed RTC and such */ run_script("periodic", G.last_update_offset); gettime1900d(); /* sets G.cur_time */ } /* Resolve peer names to IPs, if not resolved yet. * We do it only when poll timed out: * this way, we almost never overlap DNS resolution with * "request-reply" packet round trip. */ dns_error = 0; ct = G.cur_time; for (item = G.ntp_peers; item != NULL; item = item->link) { peer_t *p = (peer_t *) item->data; if (p->next_action_time <= ct && !p->p_lsa) { /* This can take up to ~10 sec per each DNS query */ dns_error |= (!resolve_peer_hostname(p)); } } if (!dns_error) goto check_unsync; /* Set next time for those which are still not resolved */ gettime1900d(); /* sets G.cur_time (needed for set_next()) */ for (item = G.ntp_peers; item != NULL; item = item->link) { peer_t *p = (peer_t *) item->data; if (p->next_action_time <= ct && !p->p_lsa) { set_next(p, HOSTNAME_INTERVAL * p->dns_errors); } } goto check_unsync; } /* Process any received packets */ j = 0; #if ENABLE_FEATURE_NTPD_SERVER if (G.listen_fd != -1) { if (pfd[0].revents /* & (POLLIN|POLLERR)*/) { nfds--; recv_and_process_client_pkt(/*G.listen_fd*/); gettime1900d(); /* sets G.cur_time */ } j = 1; } #endif for (; nfds != 0 && j < i; j++) { if (pfd[j].revents /* & (POLLIN|POLLERR)*/) { /* * At init, alarm was set to 10 sec. * Now we did get a reply. * Increase timeout to 50 seconds to finish syncing. */ if (option_mask32 & OPT_qq) { option_mask32 &= ~OPT_qq; alarm(50); } nfds--; recv_and_process_peer_pkt(idx2peer[j]); gettime1900d(); /* sets G.cur_time */ } } check_unsync: if (G.ntp_peers && G.stratum != MAXSTRAT) { for (item = G.ntp_peers; item != NULL; item = item->link) { peer_t *p = (peer_t *) item->data; if (p->reachable_bits) goto have_reachable_peer; } /* No peer responded for last 8 packets, panic */ clamp_pollexp_and_set_MAXSTRAT(); run_script("unsync", 0.0); have_reachable_peer: ; } } /* while (!bb_got_signal) */ remove_pidfile_std_path_and_ext("ntpd"); kill_myself_with_sig(bb_got_signal); }
07-12
下载前必看:https://pan.quark.cn/s/a4b39357ea24 在本资料中,将阐述如何运用JavaScript达成单击下拉列表框选定选项后即时转向对应页面的功能。 此种技术适用于网页布局中用户需迅速选取并转向不同页面的情形,诸如网站导航栏或内容目录等场景。 达成此功能,能够显著改善用户交互体验,精简用户的操作流程。 我们须熟悉HTML里的`<select>`组件,该组件用于构建一个选择列表。 用户可从中选定一项,并可引发一个事件来响应用户的这一选择动作。 在本次实例中,我们借助`onchange`事件监听器来实现当用户在下拉列表框中选定某个选项时,页面能自动转向该选项关联的链接地址。 JavaScript里的`window.location`属性旨在获取或设定浏览器当前载入页面的网址,通过变更该属性的值,能够实现页面的转向。 在本次实例的实现方案里,运用了`eval()`函数来动态执行字符串表达式,这在现代的JavaScript开发实践中通常不被推荐使用,因为它可能诱发安全问题及难以排错的错误。 然而,为了本例的简化展示,我们暂时搁置这一问题,因为在更复杂的实际应用中,可选用其他方法,例如ES6中的模板字符串或其他函数来安全地构建和执行字符串。 具体到本例的代码实现,`MM_jumpMenu`函数负责处理转向逻辑。 它接收三个参数:`targ`、`selObj`和`restore`。 其中`targ`代表要转向的页面,`selObj`是触发事件的下拉列表框对象,`restore`是标志位,用以指示是否需在转向后将下拉列表框的选项恢复至默认的提示项。 函数的实现通过获取`selObj`中当前选定的`selectedIndex`对应的`value`属性值,并将其赋予`...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值