在控制台中实现“单词竞猜”游戏 C# 猜词游戏

				版权声明:本文为博主原创文章,未经博主允许不得转载。					https://blog.csdn.net/u011528448/article/details/24670471				</div><link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css"><link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css"><div class="htmledit_views" id="content_views">

  场景

设计规则

a) 这是一个单人玩的游戏。

b) 可以分三个级别,分别是高级、中级、低级。不同级别对应的单词系列也不一样。要求一旦玩家选定了要玩的级别,应当先提示它关于此级别最高分是多少,是谁创下的记录,然后再开始游戏。

c) 游戏开始后,应显示如下信息:

i. 剩余可用竞猜次数(竞猜次数的初始值等于被猜的单词遗漏的字符数加5),

ii. 玩家所得分数:完全猜对一个单词得一分。

iii. 已用时间:要每10秒更新一次已用时间的显示。

iv. 竞猜的单词。只显示每个单词的部分字母,并且这些字母是随机显示出来的。刻意遗漏的字母应当使用*替代。应当有多少字母被显示出来,视单词的长度而定,如果单词本身较长,则多显示,反之亦然。

d) 游戏结束前,比较一家玩家的成绩与文件中存储的词汇通英雄的成绩,如果前者成绩更高,需要将如下信息保存在文件中。(成绩:猜对的单词数*100/一共花费的时间)

i. 玩家姓名

ii. 所用时间

iii. 分数。

另外,要注意的是,如果发现他们分数相同就比较使用的时间。

还有,不同级别的词汇通英雄信息应当分别放在不同的文件中。

e) 如果玩家在给定次数内(选取20次)没有猜出5个单词,则游戏结束。

实验方法

参照学生信息管理系统。

1.    创建一个线程专门负责时间提醒

2.    采用两种用户,管理员负责将游戏初始化,更新词汇表,之前自动更新和逐个输入

3.    玩家玩游戏

单词竞猜 
Program类主函数
TextOperateClass类文本操作类

 玩家主函数:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. using System.Collections;
  7. using System.Timers;
  8. using System.Threading;
  9. namespace WordsPlay
  10. {
  11. class Program
  12. {
  13. static DateTime initTime;
  14. static void Main(string[] args)
  15. {
  16. Console.WriteLine("------------------------------------------------");
  17. Console.WriteLine("------------ ------------");
  18. Console.WriteLine("------------ 欢迎来到单词竞猜游戏 ------------");
  19. Console.WriteLine("------------ CopyRight:Sunsea ------------");
  20. Console.WriteLine("------------ ------------");
  21. Console.WriteLine("------------------------------------------------");
  22. Console.WriteLine("请输入你的姓名:");
  23. string username = string.Format(Console.ReadLine()); //玩家姓名
  24. Console.WriteLine("请选择游戏级别:\n\t1.高级 \n\t2.中级 \n\t3.低级");
  25. int grade = int.Parse(Console.ReadLine()); //玩家选择的等级
  26. while (grade < 1 || grade > 3)
  27. {
  28. Console.WriteLine("请输入1~3的正整数!");
  29. grade = int.Parse(Console.ReadLine());
  30. }
  31. //查询最高分
  32. string s = TextOperateClass.ReadMaxScore(grade);
  33. int maxScore = Convert.ToInt16(s.Substring(s.IndexOf("#") + 1, s.LastIndexOf("#") - s.IndexOf("#")-1));
  34. string maxScoreUsername = s.Substring(s.LastIndexOf("#") + 1, s.Length - s.LastIndexOf("#") - 1);
  35. //输出记录信息
  36. string maxScoreMessage = string.Format("当前最高分记录{0}分,记录保持者{1}",maxScore,maxScoreUsername);
  37. Console.WriteLine(maxScoreMessage);
  38. //初始化玩家分数,没猜对一个得一分
  39. int playerScore = 0;
  40. //猜词次数
  41. int guessRightNums = 0;
  42. //可以无限制猜词,最大循环次数1000
  43. int countWhile = 1000;
  44. //如果在20次内没能猜正5个,退出
  45. initTime = DateTime.Now; //记录猜词起始时间
  46. //单独线程用于定时
  47. Thread timeThread = new Thread(TimeRemind);
  48. timeThread.Start(); //在主线程调用TimeRemind方法
  49. while (countWhile>0)
  50. {
  51. string fullWord = TextOperateClass.ReadFullWords(grade); //获取一个完整单词
  52. string vagueWord = TextOperateClass.VagueWords(fullWord); //获取一个被*替换字母的单词
  53. Console.WriteLine("请猜{0}的完整拼写:",vagueWord);
  54. //一个单词有6次参测机会
  55. int SingleWordGuessNums = 6;
  56. while (SingleWordGuessNums>0)
  57. {
  58. string playerGuessWord = Console.ReadLine(); //获取玩家猜测
  59. if (playerGuessWord.Equals(fullWord))
  60. {
  61. guessRightNums++;
  62. break;
  63. }
  64. else
  65. {
  66. Console.WriteLine("你的猜测有误,是否放弃本单词猜测:放弃<y>,不放弃继续猜!");
  67. try
  68. {
  69. //如果输入字符超过一个,抛出异常
  70. if (char.Parse(Console.ReadLine()) == 'y')
  71. break;
  72. }
  73. catch (Exception)
  74. {
  75. Console.WriteLine("输入错误");
  76. }
  77. }
  78. SingleWordGuessNums--;
  79. }
  80. //判断是继续还是退出
  81. string isContinue;
  82. while (true)
  83. {
  84. Console.WriteLine("继续请输<y>,退出请输<n>?");
  85. isContinue = Console.ReadLine();
  86. if (isContinue != "y" && isContinue != "n" && isContinue != "Y" && isContinue != "N")
  87. Console.WriteLine("请按提示正确输入,是否继续!");
  88. else
  89. break;
  90. }
  91. if (isContinue == "n")
  92. break;
  93. //猜词次数自减
  94. countWhile--;
  95. //如果在20次中没猜正5个,游戏强退
  96. if (countWhile <= 1000 - 20 && guessRightNums < 5)
  97. {
  98. Console.WriteLine("Sorry,你在20个单词中猜正确的单词不达5个,游戏结束");
  99. break;
  100. }
  101. }
  102. //获取用时
  103. DateTime endTime = DateTime.Now;
  104. TimeSpan userTime = endTime - initTime;
  105. double userTimeSeconds = userTime.TotalSeconds;
  106. #region
  107. //更新最高分
  108. if (guessRightNums > maxScore)
  109. {
  110. TextOperateClass.UpdataMaxScore(grade, guessRightNums, username);
  111. Console.WriteLine("恭喜你打破了得分记录");
  112. }
  113. string messageMaxScore = string.Format("你<{0}>在{1}中的得分是{2}", username, TextOperateClass.GradeString(grade),guessRightNums);
  114. Console.WriteLine(messageMaxScore);
  115. #endregion
  116. //词汇通英雄操作区域
  117. #region
  118. //查询词汇通英雄成绩
  119. string wordsHero =TextOperateClass.ReadMaxPerformance(grade);
  120. int maxPerformance = Convert.ToInt16(wordsHero.Substring(wordsHero.IndexOf("#", 3) + 1, wordsHero.LastIndexOf("#") - wordsHero.IndexOf("#", 3) - 1));
  121. int totalTime =Convert.ToInt16( wordsHero.Substring(wordsHero.LastIndexOf("#") + 1, wordsHero.Length - wordsHero.LastIndexOf("#") - 1));
  122. //成绩=猜对的单词数*100/一共花费的时间;
  123. playerScore = guessRightNums * 100 / (int)userTimeSeconds;
  124. //更新成绩
  125. if (playerScore > maxPerformance || (playerScore == maxPerformance && (int)userTimeSeconds < totalTime))
  126. {
  127. messageMaxScore = string.Format("恭喜你<{0}>成为{1}中新的词汇通英雄,你的成绩{2},用时{3}秒", username, TextOperateClass.GradeString(grade), playerScore, (int)userTimeSeconds);
  128. Console.WriteLine(messageMaxScore);
  129. TextOperateClass.UpdataMaxperformance(grade, username, playerScore, (int)userTimeSeconds);
  130. }
  131. #endregion
  132. timeThread.Abort();
  133. Console.WriteLine("------------------------------------------------");
  134. Console.WriteLine("------------ ------------");
  135. Console.WriteLine("----------- 欢迎再来,按任意键结束 -----------");
  136. Console.WriteLine("------------ CopyRight:Sunsea ------------");
  137. Console.WriteLine("------------ ------------");
  138. Console.Write("------------------------------------------------");
  139. Console.ReadLine();
  140. }
  141. //定时提醒 10s
  142. public static void TimeRemind()
  143. {
  144. System.Timers.Timer t = new System.Timers.Timer();
  145. t.Elapsed += new ElapsedEventHandler(writesecond);
  146. t.Interval = 10000;
  147. t.Enabled = true;
  148. Console.ReadLine();
  149. }
  150. public static void writesecond(object source, ElapsedEventArgs e)
  151. {
  152. TimeSpan userTime = DateTime.Now - initTime;
  153. Console.WriteLine(string.Format("已用时{0}秒",(int)userTime.TotalSeconds));
  154. }
  155. }
  156. }

文本操作类:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. using System.Collections;
  7. using System.Text.RegularExpressions;
  8. using System.Timers;
  9. namespace WordsPlay
  10. {
  11. public class TextOperateClass
  12. {
  13. //获取级别
  14. public static string GradeString(int grade)
  15. {
  16. string gradeString = ;
  17. switch (grade)
  18. {
  19. case 1:
  20. gradeString = "高级";
  21. break;
  22. case 2:
  23. gradeString = "中级";
  24. break;
  25. case 3:
  26. gradeString = "初级";
  27. break;
  28. }
  29. return gradeString;
  30. }
  31. //根据级别获取单词存储路径
  32. private static string GradePath(int grade)
  33. {
  34. string gradePath = ;
  35. switch (grade)
  36. {
  37. case 1:
  38. gradePath =@"e:\01111139\HighLevelWord.txt";
  39. break;
  40. case 2:
  41. gradePath = @"e:\01111139\MiddleLevelWord.txt";
  42. break;
  43. case 3:
  44. gradePath = @"e:\01111139\LowLevelWord.txt";
  45. break;
  46. }
  47. return gradePath;
  48. }
  49. //按级别读取最高分
  50. public static string ReadMaxScore(int grade)
  51. {
  52. //获取级别
  53. string gradeString = GradeString(grade);
  54. FileStream fs = new FileStream(@"e:\01111139\MaxScore.txt",FileMode.Open,FileAccess.Read);
  55. StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);
  56. string line = ;
  57. while ((line = sr.ReadLine()) != )
  58. {
  59. int count = line.IndexOf(gradeString);
  60. if (count == 0)
  61. {
  62. sr.Close();
  63. fs.Close();
  64. return line;
  65. }
  66. }
  67. //暂时没有记录
  68. sr.Close();
  69. fs.Close();
  70. return ;
  71. }
  72. //读取最高成绩
  73. public static string ReadMaxPerformance(int grade)
  74. {
  75. //获取级别
  76. string gradeString = GradeString(grade);
  77. FileStream fs = new FileStream(@"e:\01111139\WordsHero.txt", FileMode.Open, FileAccess.Read);
  78. StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);
  79. string line = ;
  80. while ((line = sr.ReadLine()) != )
  81. {
  82. int count = line.IndexOf(gradeString);
  83. if (count == 0)
  84. {
  85. sr.Close();
  86. fs.Close();
  87. return line;
  88. }
  89. }
  90. //暂时没有记录
  91. sr.Close();
  92. fs.Close();
  93. return ;
  94. }
  95. //更新得分 //grade及为对应的行数
  96. public static void UpdataMaxScore(int grade, int score, string username)
  97. {
  98. //获取级别
  99. string gradeString = GradeString(grade);
  100. string newLineValue = string.Format("{0}#{1}#{2}", gradeString, score, username);//要更新的行
  101. FileStream fs = new FileStream(@"e:\01111139\MaxScore.txt", FileMode.Open, FileAccess.Read);
  102. StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);
  103. //定义一个数组存放内容
  104. string[] maxScoreLine = new string[3];
  105. string line;
  106. for (int i = 0; (line = sr.ReadLine()) != ; i++)
  107. {
  108. maxScoreLine[i] = line;
  109. }
  110. sr.Close();
  111. fs.Close();
  112. //清空文档内容
  113. FileStream fsw = new FileStream(@"e:\01111139\MaxScore.txt", FileMode.Create, FileAccess.Write); //覆盖创建
  114. StreamWriter sw = new StreamWriter(fsw, System.Text.Encoding.Default);
  115. string subLine;
  116. foreach (string str in maxScoreLine)
  117. {
  118. subLine = str.Substring(0, 2);
  119. if (subLine.Equals(gradeString))
  120. {
  121. sw.WriteLine(newLineValue);
  122. }
  123. else
  124. {
  125. sw.WriteLine(str);
  126. }
  127. }
  128. sw.Close();
  129. fsw.Close();
  130. }
  131. //更新成绩
  132. public static void UpdataMaxperformance(int grade, string username, int playerScore, double userTimeSeconds)
  133. {
  134. //获取级别
  135. string gradeString = GradeString(grade);
  136. string newLineValue = string.Format("{0}#{1}#{2}#{3}", gradeString, username, playerScore, userTimeSeconds);//要更新的行
  137. FileStream fs = new FileStream(@"e:\01111139\WordsHero.txt", FileMode.Open, FileAccess.Read);
  138. StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);
  139. //定义一个数组存放内容
  140. string[] maxScoreLine = new string[3];
  141. string line;
  142. for (int i = 0; (line = sr.ReadLine()) != ; i++)
  143. {
  144. maxScoreLine[i] = line;
  145. }
  146. sr.Close();
  147. fs.Close();
  148. //清空文档内容
  149. FileStream fsw = new FileStream(@"e:\01111139\WordsHero.txt", FileMode.Create, FileAccess.Write);
  150. StreamWriter sw = new StreamWriter(fsw, System.Text.Encoding.Default);
  151. string subLine;
  152. foreach (string str in maxScoreLine)
  153. {
  154. subLine = str.Substring(0, 2);
  155. if (subLine.Equals(gradeString))
  156. {
  157. sw.WriteLine(newLineValue);
  158. }
  159. else
  160. {
  161. sw.WriteLine(str);
  162. }
  163. }
  164. sw.Close();
  165. fsw.Close();
  166. }
  167. //读取单词,
  168. //根据读取到的单词,将单词模糊化
  169. public static string VagueWords(string fullWord)
  170. {
  171. //模糊化处理
  172. //将单词转化成字符数组
  173. char[] arrWord = fullWord.ToCharArray();
  174. //*代替字符数是单词长度的1/3
  175. int nums = arrWord.Length / 3;
  176. List<int> myListRdm = new List<int>();
  177. myListRdm = CreateNum(nums,0,arrWord.Length);
  178. //将随机数对应的位置,字母特换成*
  179. int index=0;
  180. for (int i = 0; i < myListRdm.Count; i++)
  181. {
  182. index=myListRdm[i];
  183. arrWord[index] = '*';
  184. }
  185. //将arrWord[]数组中的元素生成字符串
  186. StringBuilder st = new StringBuilder();
  187. foreach (char c in arrWord)
  188. {
  189. st = st.Append(c);
  190. }
  191. string vagueWord = st.ToString();
  192. return vagueWord; //可以根据单词长度获得遗漏的字符数
  193. }
  194. //在【min,max】区间中产生num个不相等的随机数,存在数组中,返回
  195. private static List<int> CreateNum(int nums,int min,int max)
  196. {
  197. List<int> MyList = new List<int>();
  198. Random random = new Random();
  199. //循环的次数为产生随机数个数
  200. while (true)
  201. {
  202. int i = random.Next(min, max);
  203. if (!MyList.Contains(i))
  204. {
  205. if (MyList.Count < nums)
  206. {
  207. MyList.Add(i);
  208. }
  209. else
  210. break;
  211. }
  212. }
  213. return MyList;
  214. }
  215. //返回完整单词
  216. //自行产生随机数读取。随机数的范围是(0,单词总数)
  217. public static string ReadFullWords(int grade)
  218. {
  219. //获取单词获取路径
  220. string gradePath = GradePath(grade);
  221. FileStream fs = new FileStream(gradePath, FileMode.Open, FileAccess.Read);
  222. StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);
  223. string wordsString = sr.ReadToEnd();
  224. //Regex是正则表达式啊的类啊,引用using System.Text.RegularExpressions就可以看到了
  225. string[] wordsArr = Regex.Split(wordsString, " ");
  226. Random rd = new Random();
  227. int num = rd.Next(1, wordsArr.Length);
  228. return wordsArr[num];
  229. }
  230. }
  231. }

说明事项

           1、文本操作乱码问题,运行之前需要在E盘创建01111139文件夹,E:\01111139\*.txt
           2、更新文本文档中的内容可以通过将文本文档读取放在数组中,然后覆盖创建文档,
                更新数组,然后在写回。
           3、这里面用了委托机制,创建一个单独的线程负责时间提醒,个人认为:基于控制台时间提醒不适宜,会导致界面很乱,读者可以考虑删除。
           4、就问题实现要求而言,最高分和词汇通英雄有点重复,做一个即可。

 

这样玩家游戏就能用了,管理员端可以参考下一篇博客《单词竞猜游戏之管理员端》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549322.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

byvoid 神牛的tarjan算法讲解!

[有向图强连通分量] 在有向图G中&#xff0c;如果两个顶点间至少存在一条路径&#xff0c;称两个顶点强连通 (strongly connected)。如果有向图G的每两个顶点都强连通&#xff0c;称G是一个强连通图 。非强连通图有向图的极大强连通子图&#xff0c;称为强连通分量 (strongly …

关于NLP你还不会却必须要学会的事儿—NLP实践教程指南第一编

作者 | Dipanjan (DJ) Sarkar 编译 | 姗姗 出品 | 人工智能头条&#xff08;公众号ID&#xff1a;AI_Thinker&#xff09; 【人工智能头条导读】在研究和处理自然语言处理的很多问题时&#xff0c;除了关注各种各样基础的数据&#xff0c;高级的深度学习模型、算法外&#x…

ORACLE中表死锁的处理

在进行数据库管理的过程中,经常会出现数据表被用户的一些不合理操作而导致表被锁定的情况,以下主要介绍如何查找哪些表被哪个用户所锁定,以及如何解除锁定: 1.查找被锁定的表: select object_name,session_id,os_user_name,oracle_username,process,locked_mode,status from v$…

asp.net文件上传进度条控件(破解版~没有时间限制) 多项自定义

原版只能用30天&#xff0c;这个破解版可以长期用了&#xff08;设置了时间2010-2110&#xff09;. 注册控件&#xff1a;<% Register TagPrefix"fup" Namespace"OboutInc.FileUpload" Assembly"FileUpload" %>调用控件&#xff1a;<fo…

矩阵连乘问题的算法分析

问题描述&#xff1a;给定n个矩阵&#xff1a;A1,A2,...,An&#xff0c;其中Ai与Ai1是可乘的&#xff0c;i1&#xff0c;2...&#xff0c;n-1。确定计算矩阵连乘积的计算次序&#xff0c;使得依此次序计算矩阵连乘积需要的数乘次数最少。输入数据为矩阵个数和每个矩阵规模&…

等一分钟看了会流泪

转载于:https://blog.51cto.com/hljheiwangwei/269127

Silverlight 解谜游戏 之十六 消失的蒙娜丽莎

在《Silverlight 解谜游戏 之三 消除名单》中我们通过在物品轮廓画出Path 来达到消除物品的效果&#xff0c;由于游戏中的物品都是Office 图片的一部分所以无法使其真正消失&#xff0c;本篇我们将添加一个独立于Office 图片的物品&#xff0c;使其能动态消失。 看看题板上多出…

明令禁止工作“996”,是对“生而为人”的基本尊重

离GitHub上996.ICU项目的发布时间已过去好一段时间了&#xff0c;作为一名计算机专业的在读生&#xff0c;对996有一点体会&#xff0c;最直观的体会就是为了提升技术&#xff0c;连续一个学期在实验室工作超过10个小时。 人民日报发文《被“996”围困的年轻人&#xff0c;像是…

让sky Driver成为你的可见硬盘

网盘就不用多说了&#xff0c;国内国外的都很多&#xff0c;但是sky Driver以25G的大容量还是吸引着我&#xff0c;看来还是盖茨比较称钱&#xff08;sorry&#xff0c;方言&#xff0c;意思就是nb的意思&#xff09;&#xff0c;但是一向以用户体验非常不错著称的microsoft在这…

设计模式----Adapter(适配器)

作用: 将一个类的接口转换成客户希望的另外一个接口。Adapt 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 UML示意图 1)采用继承原有接口类的方式 2)采用组合原有接口类的方式 解析: Adapt模式其实就是把完成同样的一个功能但是接口不能兼容的类桥接在一起…

Exchange 2003升级至Exchange 2007

环境: 三台机器:DC Exchange2003 Exchange2007 计算机名:DC MAIL NEWMAIL 前提条件: 1.Exchange组织设置为纯模式。 2.Exchange 2003安装SP2 3.拥有Schema Master角色的DC及所有GC运行在Windows 2003 SP1或更高以上 4.AD域提升到最高 不被Exchange 2007支持的组件有: Nov…

蓝桥杯 标题:纵横火柴旗子

【编程题】这是一个纵横火柴棒游戏。如图[1.jpg]&#xff0c;在一个3x4的方格中&#xff0c;游戏的双方轮流放置火柴棒。其规则是&#xff1a;1. 不能放置在已经放置火柴棒的地方&#xff08;即只能在空格中放置&#xff09;。2. 火柴棒的方向只能是垂直或水平放置。3. 火柴棒不…

易语言源代码毁来者来了!!

2009年12月7号16:34分&#xff0c;恐怖现象在次出现了&#xff01; 在编译易程序时&#xff0c;突然提示&#xff0c;某某模块找不到了&#xff0c;我跑到软件目录下一看&#xff0c;妈啊不得了&#xff0c;目录中一百多个文件能删除的全部都被删除了&#xff0c;只剩余几个残破…

矩阵连乘 动态规划 详解

矩阵连乘问题----动态规划(转载)&#xff1a; 给定n个矩阵&#xff5b;A1,A2,…,An&#xff5d;&#xff0c;其中Ai与Ai1是可乘的&#xff0c;i1&#xff0c;2…&#xff0c;n-1。如何确定计算矩阵连乘积的计算次序&#xff0c;使得依此次序计算矩阵连乘积需要的数乘次数最少。…

白盒测试中的六种覆盖方法及案例分析

语句覆盖是指选择足够的测试用例&#xff0c;使得运行这些测试用例时&#xff0c;被测程序的每一个语句至少执行一次&#xff0c;其覆盖标准无法发现判定中逻辑运算的错误&#xff1b;判定覆盖<又叫分支覆盖率>是指选择足够的测试用例&#xff0c;使得运行这些测试用例时…

回文数的C语言表述

2019独角兽企业重金招聘Python工程师标准>>> 现在的程序针对范围是0开始。直到溢出 #include #includemain(){ int i; /*本人的电脑用long和int一样*/for(i0;i<500;i){ if(svalue(i)) printf("%3d,",i); }getch();} int sv…

别人的爬虫在干啥

古人云博采众长&#xff0c;我们来看看其他人的爬虫是怎么学和用的&#xff1a; 爬虫文章 in 简书程序员专题&#xff1a; like:128 - Python 爬取落网音乐 like:127 - 【图文详解】python爬虫实战——5分钟做个图片自动下载器like:97 - 用Python写一个简单的微博爬虫like:87 …

windowsXP/7下消除快捷键箭头的方法

1.修改注册表。&#xff08;1&#xff09;启动注册表编辑器&#xff1a;点击 开始—运行里面输入“regedit”&#xff08;2&#xff09;然后依次展开如下分支&#xff1a;“HKEY_CLASSES_ROOT\lnkfile”&#xff1b;删除“lnkfile”子项中的“IsShortcut”字符串值项注意&#…

数据库 连接池、缓冲池(定义、原理)

数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接&#xff0c;当需要建立数据库连接时&#xff0c;只需要从缓冲池中取出一个了&#xff0c;使用完毕后再放回去。我们可以通过设定连接池最大数来防止系统无尽的与数据库连接。更为…

电子商务基础:中小企业建站方案和资源

目前国内的中小企业数量已经有几千万家&#xff0c;但信息化建设却并 不理想&#xff0c;拥有网站的只有不超过两百万家&#xff0c;数以千万计的中小企业存在电子商务需求&#xff0c;却没有自己独立的网站。现在&#xff0c;越来越多的企业意识到通过建立网站开展电子 商务的…