• 关于 算法模块什么意思 的搜索结果

问题

2018python技术问答集锦,希望能给喜欢python的同学一些帮助

技术小能手 2019-12-01 19:31:10 2040 浏览量 回答数 2

问题

【精品锦集】Python热门问答03

问问小秘 2019-12-01 19:52:50 74 浏览量 回答数 1

问题

不搞清这8大算法思想,刷再多题效果也不好的 7月23日 【今日算法】

游客ih62co2qqq5ww 2020-07-29 11:10:09 3 浏览量 回答数 1

新用户福利专场,云服务器ECS低至96.9元/年

新用户福利专场,云服务器ECS低至96.9元/年

回答

对于算法的学习,我也是从一个小白一步步走来,当然,现在仍然很菜,,,不过,鉴于我觉得还有一些人比我更菜了,我决定谈谈我算法学习过程走过的坑,以及自己总结的一些经验。 切勿盲目刷题:刷题前的知识积累 说实话,想要提高自己的算法,真的没啥捷径,我觉得最好的捷径就是脚踏实地着多动手去刷题,多刷题。 但是,我必须提醒的是,如果你是小白,也就是说,你连常见的数据结构,如链表、树以及常见的算法思想,如递归、枚举、动态规划这些都没学过,那么,我不建议你盲目疯狂着去刷题的。而是先去找本书先去学习这些必要的知识,然后再去刷题。 因为,如果这些基础都不懂的话,估计一道题做了几个小时,然后看答案都看不懂,做题没有任何思路,这是很难受的。久而久之,估计没啥动力了,我刚开始就是这样,一道题答案看一天,然而还是不大懂,什么回溯啊,暴力啊,还不知道是啥意思。 也就是说,假如你要去诸如leetcode这些网站刷题,那么,你要先具备一定的基础,这些基础包括: 1、常见数据结构:链表、树(如二叉树)。(是的,链表和二叉树是重点,图这些可以先放着) 2、常见算法思想:贪婪法、分治法、穷举法、动态规划,回溯法。(贪婪、穷举、分治是基础,动态规划有难度,可以先放着) 以上列出来的算是最基本的吧。就是说你刷题之前,要把这些过一遍再去刷题。如果你连这些最基本的都不知道的话,那么你再刷题的过程中,会很难受的,思路也会相对比较少。 总之,千万不要急,先把这些基本的过一遍,力求理解,再去刷题。 在这里,我推荐基本我大一时看过的书籍吧,感觉还是非常不错的,如果对于数据结构时零基础的话,那么我建议你可以看《数据结构与算法分析:C语言描述版》这本书,这本书自认为真的很 nice,当时我把这本书里面的全部都看了,并且 coding 了一遍,感觉整个人有了质的飞跃。 后面我时在一些学校的OJ刷题,当时看的一本书叫做《挑战程序设计大赛》,日本作家写的,我觉得这本书也很nice,里面有分初级,中级和高级三个模块,基础比较差的可以从初级开始看起。 当然,这两本书,你可以在这个Github上找到:https://github.com/iamshuaidi/CS-Book 总结下: 提高数据结构与算法没啥捷径,最好的捷径就是多刷题。但是,刷题的前提是你要先学会一些基本的数据结构与算法思想。 AC不是目的,我们要追求完美 如何刷题?如何对待一道算法题? 我觉得,在做题的时候,一定要追求完美,千万不要把一道题做出来之后,提交通过,然后就赶紧下一道。我认为这意义不大,因为一道题的解法太多了,有些解法态粗糙了,我们应该要寻找最优的方法。 算法能力的提升和做题的数量是有一定的关系,但并不是线性关系。也就是说,在做题的时候,要力求一题多解,如果自己实在想不出来其他办法了,可以去看看别人是怎么做的,千万不要觉得模仿别人的做法是件丢人的事。 我做题的时候,我一看到一道题,可能第一想法就是用很粗糙的方式做,因为很多题采用暴力法都会很容易做,就是时间复杂度很高。之后,我就会慢慢思考,看看有没其他方法来降低时间复杂度或空间复杂度。最后,我会去看一下别人的做法,当然,并不是每道题都会这样执行。 衡量一道算法题的好坏无非就是时间复杂度和空间复杂度,所以我们要力求完美,就要把这两个降到最低,令他们相辅相成。 我举道例题吧: 问题: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法? 这道题我在以前的分章分析过,不懂的可以先看下之前写的:递归与动态规划—基础篇1 方法1::暴力递归 这道题不难,或许你会采取下面的做法: public int solve(int n){ if(n <= 2){ return n; }else{ return solve(n-1) + solve(n-2); } } 这种做法的时间复杂度很高,指数级别了。但是如果你提交之后侥幸通过了,然后你就接着下一道题了,那么你就要好好想想了。 方法二:空间换时间 力求完美,我们可以考虑用空间换时间:这道题如何你去仔细想一想,会发现有很多是重复执行了。不行你可以画个图 所以可以采取下面的方法: //用一个HashMap来保存已经计算过的状态 static Map<Integer,Integer> map = new HashMap(); public static int solve(int n){ if(n <= 2){ return n; }else{//是否计算过 if(map.containsKey(n)){ return map.get(n); }else{ int m = solve(n-1) + solve(n-2); map.put(n, m); return m; } } } 这样,可以大大缩短时间。也就是说,当一道题你做了之后,发现时间复杂度很高,那么可以考虑下,是否有更好的方法,是否可以用空间换时间。 **方法三:**斐波那契数列 实际上,我们可以把空间复杂度弄的更小,不需要HashMap来保存状态: public static int solve(int n){ if(n <= 2){ return n; } int f1 = 0; int f2 = 1; int sum = 0; for(int i = 1; i<= n; i++){ sum = f1 + f2; f1 = f2; f2 = sum; } return sum; } 我弄这道题给你们看,并不是在教你们这道题怎么做,而是有以下目的: 1、在刷题的时候,我们要力求完美。 2、我想不到这些方法啊,怎么办?那么你就可以去看别人的做法,之后,遇到类似的题,你就会更有思路,更知道往哪个方向想。 3、可以从简单暴力入手做一道题,在考虑空间与时间之间的衡量,一点点去优化。 挑战自己,跳出舒适区 什么叫舒适区?在刷题的时候,可能有一类题是你比较懂的,你每次一看就有思路,然后半个小时就撸好代码,提交代码,然后通过了,然后,哇,又多刷了一道题,心里很舒服。 但是,记住,前期你可以多刷这种题练手,提升自己的乐趣,但,我还是建议你慢慢跳出舒适区,去做一些自己不擅长的题,并且找段时间一直刷这种题。例如,我觉得我在递归方面的题还是挺强的, 但是,我对动态规划的题,很菜,每次都要想好久,每次遇到这种题都有点害怕,没什么信心。不过有段时间我觉得只刷动态规划的题,直接在 leetcode 选定专题,连续做了四五十道,刚开始很难受,后来就慢慢知道了套路了,一道题从两三个小时最后缩到半小时,简单的十几分钟就搞定。感觉自己对这类型的题也不惧怕的。 当然,对于动态规划的学习,大家也可以看我这篇广受好评的文章:为什么你学不过动态规划?告别动态规划,谈谈我的经验 所以,建议你,一定要学好跳出自己的舒适区。 一定要学会分类总结 有些人以为 leetcode 的题刷的越多,就一定能越厉害,其实不然,leetcode 虽然有 1000 多道题,但题型就那么几类,我们前期在刷的时候,我是建议按照题型分类刷题的,例如我这整理刷二叉树相关,然后刷链表相关,然后二分法,然后递归等等,每刷一种题型,都要研究他们的套路,如果你愿意去总结,那么 leetcode 的题,其实你刷几百道,有目的、挑选的刷,我觉得就差不多了。 我看过一本书,叫做《程序员代码面试指南:IT 名企算法与数据结构题目最优解》,这本书就非常不错,里面按照栈,队列,链表,二叉树,字符串等一个专题一个专题来刷的,并且每道题都给出了最优解,而且里面的题有一定的难度,感兴趣的,真心不错,如果你把这本书的题全部搞定,并且总结相关套路,那么你的算法一定有很大的提升。 推荐一些刷题网站 我一般是在leetcode和牛客网刷题,感觉挺不错,题目难度不是很大。 在牛客网那里,我主要刷剑指Offer,不过那里也有个在线刷leetcode,不过里面的题量比较少。牛客网刷题有个非常方便的地方就是有个讨论区,那里会有很多大佬分享他们的解题方法,不用我们去百度找题解。所以你做完后,实在想不出,可以很方便着去看别人是怎么做的。 至于leetcode,也是大部分题目官方都有给出答案,也是个不错的刷题网站。你们可以两个挑选一个,或者两个都刷。 当然,还有其他刷题的网站,不过,其他网站没刷过,不大清除如何。 至于leetcode,有中文版和英文版 leetcode有中文版 英文版 根据自己的兴趣选。 学习一些解题技巧 说实话,有些题在你没看别人的解法前,你好不知道有这么美妙优雅的解法,看了之后,卧槽,居然还可以这样。而我们在刷题的过程中,就要不断累积这些技巧,当你累计多了,你就会形成一种 神经反应,一下子就想到了某种方法。解题技巧很多,例如数组下标法、位图法、双指针等等,我自己也分享过一篇总结一些算法技巧的文章 再说数据结构发重要性 前面我主要是说了我平时都是怎么学习算法的。在数据结构方法,我只是列举了你们一定要学习链表和树(二叉堆),但这是最基本的,刷题之前要掌握的,对于数据结构,我列举下一些比较重要的: 1、链表(如单向链表、双向链表)。 2、树(如二叉树、平衡树、红黑树)。 3、图(如最短路径的几种算法)。 4、队列、栈、矩阵。 对于这些,自己一定要动手实现一遍。你可以看书,也可以看视频,新手可以先看视频,不过前期可以看视频,之后我建议是一定要看书。 例如对于平衡树,可能你跟着书本的代码实现之后,过阵子你就忘记,不过这不要紧,虽然你忘记了,但是如果你之前用代码实现过,理解过,那么当你再次看到的时候,会很快就记起来,很快就知道思路,而且你的抽象能力等等会在不知不觉中提升起来。之后再学习红黑树啊,什么数据结构啊,都会学的很快。 对于有哪些值得学习的算法,我之前也总结过,这里推荐给大家程序员必须掌握的核心算法有哪些?,这篇文章居然 40多万阅读量了,有点受宠若惊。 最最重要 动手去做,动手去做,动手去做。重要的话说三遍。 千万不要找了一堆资源,订好了学习计划,我要留到某某天就来去做… 千万不要这样,而是当你激情来的时候,就马上去干,千万不要留到某个放假日啊什么鬼了,很多这种想法的人,最后会啥也没做的。 也不要觉得要学习的有好多啊,不知道从哪学习起。我上面说了,可以先学习最基本的,然后刷题,刷题是一个需要长期坚持的事情,一年,两年。在刷题的过程中,可以穿插和学习其他数据结构。 总结一下吧 所以我给大家的建议就是,先学习基本的数据结构以及算法思想,不要盲目刷题,接着刷题的过程中,不能得过且过,尽量追求最优解,还有就是要跳出舒适区,逼自己成长,刷题的过程中,要学会分类总结。 当然,最重要的,就是你去动手了,不然,一切免谈! 看在熬夜写过的份上,送我个赞呗,嘻嘻。 1、老铁们,关注我的原创微信公众号「帅地玩编程」,专注于写算法 + 计算机基础知识(计算机网络+ 操作系统+数据库+Linux)。 2、给俺点个赞呗,可以让更多的人看到这篇文章,顺便激励下我,嘻嘻。 原文链接:https://blog.csdn.net/m0_37907797/article/details/104765116

剑曼红尘 2020-03-11 22:24:48 0 浏览量 回答数 0

回答

《操作系统》课程设计报告课程设计题目:操作系统课程设计 设计时间:2016/1/10一、 课程设计目的与要求需要完成的内容:(1) 安装虚拟机:Vmware、Vmware palyer (free)(推荐)、Virtualbox(推荐)、VMLite、Xen、Virtuozzo、KVM(2) 安装和使用Linux(推荐SUSE)(注意包含内核源码和内核开发工具等)(3) Linux内核源代码配置和重编(4) 找到VFS和一个具体文件系统的源代码(ext3或ext4)(5) 读懂VFS和具体文件系统如何关联(如何体现virtual file switch)(6) 找到具体文件系统的read或write函数,使用printk(使用方法和printf一样)向后台打印文件读写信息。(read或write函数选一个即可)(7) 使用dmesg –c查看后台的输出。可以附加的功能(8) 复制ext3或ext4的源代码(注意与当前使用的文件系统有区别),修改Makefile文件,使用模块编译方式(9) 修改ext3或ext4的源代码,实现新的文件系统。(至少需要修改文件系统的名称,最好能对文件写操作向系统后台打印出信息。)(10) 动态加载和卸载新的文件系统。二、 课程设计内容(1) 安装虚拟机(2) 安装和使用Linux(3) Linux内核源代码配置和重编(4) 提取并动态加载和卸载新的文件系统三、 课程设计设备与环境设备信息:PC 虚拟机:VM11 四、 设计正文(包括分析与设计思路、各模块流程图、带注释的主要算法源码、内核编译过程以及动态模块加载过程等,如有改进或者拓展,请重点用一小节进行说明)(1) 安装虚拟机(2) 安装和使用Linux(推荐SUSE)(注意包含内核源码和内核开发工具等)安装OpenSUSE,并下载相近版本的内核源码 初始内核版本 下载的源代码包 (3) Linux内核源代码配置和重编利用vmtools(虚拟机提供的可以在宿主机和虚拟机之间自由复制文件的工具)将内核源码包复制进虚拟机,解压到/home/a123/linux-3.12.51 *因为分配的磁盘空间比较小,所以没有按照惯例把内核源码放在/usr/src目录下(如果放在这里,会出现空间不足的情况)附:磁盘分配情况/swap(交换分区) 2.4G/(根目录) 11G/home(用户目录) 13G 解压好的内核源码文件在编译前需要稍作修改(6),并且缺乏一个config文件告诉编译器编译哪些功能。Config文件可以用make menuconfig命令生成,但是需要自己选择相应的功能,太过复杂,这里有一个简便的方法因为下载的内核源码是相近的版本,所以可以使用现有版本的config文件,该文件在/boot目录下使用cp /boot/config-3.11.6-4-desktop .config命令将此文件复制过来 注意:应当在内核所在的文件目录下使用此命令复制成功 执行 make menuconfig命令,进入选择界面,直接保存退出即可虽然新版本的Linux可以直接执行make一步完成所有的编译工作,但此次课程设计仍然采用以前的编译的方式 执行 make bzImage命令——编译压缩的内核编译完成 执行 make modules命令——编译模块 执行 make modules_install命令——安装模块 注: 在make menuconfig时我在General setup中把版本号改过 执行 make install命令——安装新内核 Reboot重启 说明内核修改安装完毕,成功(4) 找到VFS和一个具体文件系统的源代码(ext3或ext4)VFS:虚拟文件系统,顾名思义。它为应用程序员提供一层抽象,屏蔽底层各种文件系统的差异。Linux的文件系统采用面向对象的方式设计,这使得Linux的文件系统非常容易扩展,我们可以非常容易将一个新的文件系统添加到Linux中。在此主要对象之一super_block位于中 代码量巨大,此为部分代码Ext4在fs文件夹下的ext4文件夹内 此处打开file.c用vim打开file.c部分代码如下 (5) 读懂VFS和具体文件系统如何关联(如何体现virtual file switch)在(4)中已经提到,VFS是C语言写的一个面向对象的设计,比如我们要调用alloc_inode方法:sb->s_op->alloc_inode(sb)。这里与面向对象语言的差别是,面向对象语言里实例方法可以访问到this,这样就可以访问到自身的所有成员,但是在C里却做不到,所以需要将自身作为参数传入到函数中、图一表示了对文件写操作的调用过程 (6) 找到具体文件系统的read或write函数,使用printk(使用方法和printf一样)向后台打印文件读写信息。(read或write函数选一个即可)因为Linux系统对文件的操作是通过函数调用来实现的,所以在此我修改的是vfs这一层,找到fs,目录下的read_write.c并打开找到do_sync_read函数,在其返回前加入printk语句 (7) 使用dmesg –c查看后台的输出。 (8) 复制ext3或ext4的源代码(注意与当前使用的文件系统有区别),修改Makefile文件,使用模块编译方式 (9) 修改ext3或ext4的源代码,实现新的文件系统。(至少需要修改文件系统的名称,最好能对文件写操作向系统后台打印出信息。) 使其在加载和卸载的时候能够printk到buffer缓冲中(10) 动态加载和卸载新的文件系统。使用insmod语句加载使用lsmod语句加载 加载成功接下来使用dmesg 查看缓冲区内容 成功接下来使用rmmod语句卸载模块 成功五、 课程设计结果及分析课程设计结果:成功分析:Linux文件系统使用了面向对象的设计方法,保证了其对用户的透明,VFS层实现了系统与文件系统的无关性,增加了系统对不同文件系统的兼容性。六、 总结与进一步改进设想总结:1.编译内核的时候,可以使用make XXX –j8这样可以开启多线程编译(我的虚拟机分配的是8核心),加快编译速度2.printk语句我写的是printk(”””DoingRead”);本意是利用printk的优先级,将其输出到用户态的控制台,结果语法错误,并没有输出到控制台改进设想:修改的文件前加上语句,实现对控制台的输出 define KERN_EMERG 0(因为缺少这个宏,导致系统并没有理解我的0是什么意思) 七、 答辩(或汇报)记录(包括问题和答案,每个人不少于3个) 显示内核版本 使用dmesg –c命令 加载新模块 八、 参考文献 鸟哥的Linux私房菜 百度百科:printk概述http://baike.baidu.com/link?url=Kv5e2xb9thGENkIvSQmjpkYb8kbKoNvEhmt2oICTmDAn0wj2YADVf8dsrzBtz2fRt0uwa_3joQ-o40wKwwL68a Linux虚拟文件系统(VFS)http://www.cnblogs.com/yuyijq/archive/2013/02/24/2923855.html LinuxEXT4文件系统分析http://wenku.baidu.com/link?url=Wi-vyrROUIJqRk4eSsuwOwRe0Sf-ydXamWNR0H2HCrN9CPHJg80lXpu0Gi_ZGT-X5yKnknl86ooHdckHhJxybmyBR2szWsPDOV0IPJ6fJXO

杨冬芳 2019-12-02 03:10:35 0 浏览量 回答数 0

问题

【精品问答】python技术1000问(1)

问问小秘 2019-12-01 21:57:48 448858 浏览量 回答数 12

问题

【精品问答】python技术1000问(2)

问问小秘 2019-12-01 22:03:02 68 浏览量 回答数 0

问题

荆门开诊断证明-scc

游客5k2abgdj3m2ti 2019-12-01 22:09:00 1 浏览量 回答数 0

问题

【精品问答】Java技术1000问(1)

问问小秘 2019-12-01 21:57:43 34170 浏览量 回答数 10

回答

希望对你有帮助。 一、为何要学编程。 每个人的动机不一样。大致有: 1、为了找个好工作;或为了有更好的机会和更好的发展。 2、看到别人超厉害,所以也想学。 3、实际工作中很多场合需要。 4、从小就立志做个程序员,做软件工程师。 5、振兴中国的软件事业。 。。。。。。 ================================================ 二、如何学编程。 1、多看好书。 差书误人子弟,不但浪费时间和精力,而且打击人的信心,差书使人很久都不会,让会让人怀疑自已的学习能力。 现在的书很多,但好书很少,特别是被大家公认很有价值的好书,更是少之又少。历经多年时间考验和市场风雨不残酷洗礼而仅存的巨著,更是极其稀少。中国历史上文学小说类书本多如牛毛,但仅存的巨著,也只不过<<红楼梦>>等四本名著而已,编程方面也是如此。 2、多动手。 这一点很重要。而且特别重要。“纸上得来终觉浅,绝知此事要躬行。”陆游的千古名句说的就是这个道理,并且同样适合于编程方面。 ================================================ 三、用什么语言最好。 这主要取决于应用领域,每种语言都有自已的长处和不足。 1、汇编语言和C语言在单片机及工控领域用较多。另外C语言也是一种通用语言,是学C++/c#的起点。 2、C++系统编程等多个方面,最常用的编译器是VC。 3、C#/java网络编程方面新兴的。 4、VB通用。 5、还有Delphi等。。。。。。 个人建议:从未编过程的,就从学vb开始。有基础的可直接学c++/VC。 =================================================== 四、有什么好书。 几年前,台湾著名技术作家侯捷先生曾经写过一篇影响很大的书评文章,叫做《MFC四大天王》。文章的意思是说在MFC的浩瀚书海中,只要认真研读和学习其中四本,就可以“五岳归来不看山”。侯先生虽以MFC为例,但是这个道理却同样适合于MFC之外的很多具体技术领域,这不能不说是一个有趣的统计现象。 通常在某一个具体细分的技术领域,会自然而然地出现3-5本顶级著作,它们彼此互相配合,形成一个完整的体系。对于学习者来说,只需要认真研读这几本书,就足以升堂入室。我乐于将这种现称为“四书五经现象”。对于读者来说,如果能够找到该领域中的“四书五经”,则无论在时间上还是金钱上都是最经济的选择。好书几本,胜过烂书几捆,这个体会想必大家都有。在此,帮助大家遴选各个技术领域里的“四书五经”。 编程的书可谓汗牛充栋,其中经典也是不泛其数,但绝大多数的过来人,都一致认为,要想很快的入门并尽快的投入到编程实践中,只要其中的四到五本也就够了,即只看经典中的经典,圣经级的书就可以了。 所谓活到老学到老,程序员是个终身学习的职业,要不断的看书,直到放弃编程的那一天。所以,您要读的好书也绝非以下推荐的这些书哟,呵呵。 一句话,由于我们的时间、精力、金钱都是有限的,如何以最小的代价换得最大的收获。 ================================================================ 五、经典好书分类热销榜 1、java java编程语言(第三版)---java四大名著----James Gosling(java之父) java编程思想(第2版)----java四大名著----Bruce Eckel java编程思想(第3版)----java四大名著----------------Bruce Eckel java 2核心技术 卷I:基础知识(原书第7版)---java四大名著-----Cay Horstmann java 2核心技术 卷II:高级特性(原书第7版)----java四大名著-----Cay Horstmann Effective java中文版------java四大名著--------Joshua Bloch 精通Struts:基于MVC的java Web设计与开发---孙卫琴 精通Hibernate:java对象持久化技术详解---孙卫琴 Tomcat与java Web开发技术详解------------孙卫琴 java与模式------------------------------阎宏 2、c# C#程序设计-------Charles Petzold“windows编程泰山北斗”---C#语言“倚天屠龙双剑” C# Primer中文版--------Stanley B.Lippman---C#语言“倚天屠龙双剑” .NET框架程序设计(修订版)--------Jeffrey Richter“windows编程泰山北斗”---.NET平台四大天王 C# Windows程序设计----------Charles Petzold“windows编程泰山北斗”------.NET平台四大天王 .NET程序设计技术内幕-------------Jeff Prosise---.NET平台四大天王 .NET本质论--第1卷:公共语言运行库(中文版)--------Chris Sells---.NET平台四大天王 3、C++ C++程序设计语言(特别版)---c++八大金刚----Bjarne Stroustrup“C++之父” C++ Primer (第3版)中文版----c++八大金刚---Stanley B.Lippman C++ Primer (第4版)中文版----c++八大金刚---Stanley B.Lippman C++标准程序库—自修教程与参考手册--c++八大金刚--Nicolai M.Josuttis C++语言的设计和演化-----c++八大金刚----Bjarne Stroustrup“C++之父” 深度探索C++对象模型---c++八大金刚----Stanley B.Lippman Essential C++中文版---c++八大金刚---Stanley B.Lippman Effective C++中文版 2nd Edition-----c++八大金刚------Scott Meyers More Effective C++中文版----c++八大金刚------Scott Meyers C++编程思想(第2版) 第1卷:标准C++导引--------Bruce Eckel C++编程思想(第2版)第2卷:实用编程技术 --------Bruce Eckel C++程序设计--------------------------谭浩强 C++ 程序设计教程(第2版)--------------钱能 C++ Primer Plus(第五版)中文版---Stephen Prata 广博如四库全书The c++ programming language、c++ Primer 深奥如山重水复Inside the c++ object model 程序库大全The c++ standard libray 工程经验之积累Effective c++、More Effective c++、Exceptional c++ c++八大金刚: 1、Essentital c++---lippman---C++之父,旁枝暂略,主攻核心,轻薄短小,初学者 2、The c++ programming language----C++之父,技术权威,用词深峻,思想深远,c++百科全书代表,圣经。 3、c++ Primer----lippman---纵横书市十数年,c++最佳教本,c++百科全书代表。 4、Inside the c++ object model-----lippman----揭示c++底层,非常好,非常难。 5、Effective c++-----通过50个编程实例,展示专家经验,行文有趣,深处浅出。 6、More Effective c++----通过35个编程实例,展示专家经验,行文有趣,深处浅出。 7、The c++ standard libray---c++标准库的百科全书。 8、设计模式:可复用面向对象软件的基础------good! 4、c C程序设计语言(第2版·新版)---C语言“倚天屠龙双剑”---Brian W.Kernighan“C语言之父” C Primer Plus中文版(第五版)--------C语言“倚天屠龙双剑”---Stephen Prata C程序设计(第三版)---------------------------谭浩强 C语言大全(第四版)---------------------------HERBERT SCHILDT C语言接口与实现:创建可重用软件的技术-------------DAVID R.HANSON C语言参考手册(原书第5版)--------------------------Samuel P.Harbison C程序设计教程---------------------------------H.M.Deitel/P.J.Deitel C陷阱与缺陷-----------------------------------Andrew Koenig 5、VB Visual Basic .NET技术内幕-----VB编程三剑客-----------Francesco Balena“vb首席大师” Windows程序设计-Visual Basic.NET语言描述--VB编程三剑客-----Charles Petzold“windows编程泰山北斗”--- .NET框架程序设计:Visual Basic.NET语言描述--VB编程三剑客--Jeffrey Richter“windows编程泰山北斗”--- Visual Basic 6编程技术大全------------------------Francesco Balena“vb首席大师” Visual Basic.NET 从入门到精通-------------------------Petroutsos,E. 高级VISUAL BASIC编程-----------------------------------MATTHEW CURLAND 6、Delphi Inside VCL(深入核心——VCL架构剖析)----------李维 Delphi 7高效数据库程序设计--------------李维 面向对象开发实践之路(Delphi版)----------李维 7、VC Windows 程序设计(第5版)-----Charles Petzold“windows编程泰山北斗”--- Windows核心编程----------Jeffrey Richter“windows编程泰山北斗”--- Windows高级编程指南---------Jeffrey Richter“windows编程泰山北斗”--- 深入浅出MFC(第二版)-----“MFC四大天王”-------侯捷 MFC Windows程序设计(第2版)---MFC四大天王”---------Jeff Prosise Visual C++ 技术内幕(第4版)--MFC四大天王”--------David Kruglinski 深入解析MFC-------------MFC四大天王”-----------George Shepherd Visual C++.NET 技术内幕(第6版)-MFC四大天王”------------David Kruglinski 8、vf Visual Foxpro程序设计参考手册-------------------张洪举 专家门诊——Visual FoxPro开发答疑160问-------------------张洪举 Visual FoxPro 6.0/9.0解决方案与范例大全-------------------张洪举 Visual FoxPro软件开发模式与应用案例-------------------张洪举 9、黑客 应用密码学(协议算法与C源程序-----------Bruce Schneier 网络信息安全的真相-----------Bruce Schneier 黑客大曝光:网络安全机密与解决方案(第5版)--------STUART MCCLURE 软件加密技术内幕------------看雪学院 加密与解密——软件保护技术与完全解决方案------------看雪学院 加密与解密(第二版)--------段钢 10、汇编 Intel微处理器结构、编程与接口(第六版)---------Barry B. Brey 80*86、奔腾机汇编语言程序设计---------Barry B. Brey Windows环境下32位汇编语言程序设计(第2版)-----------罗云彬 IBM-PC汇编语言程序设计(第2版) 本书是国内优秀教材--------沈美明 温冬婵 IBM PC汇编语言程序设计(第五版) 这本书籍是国外优秀教材-------PETER ABEL著,沈美明 温冬蝉译 11、驱动开发 Windows WDM设备驱动程序开发指南------------------------------------ Chris Cant Windows 2000/XP WDM设备驱动程序开发(第2版)--------------------------武安河 WINDOWS 2000/XP WDM设备驱动程序开发-------------------------------- 武安河 12、网络 计算机网络第四版中文版----网络编程三剑客--------------Andrew S.Tanenbaum TCP/IP详解3卷本--------------------Richard Stevens----网络编程三剑客 UNIX网络编程2卷本--------------------Richard Stevens----网络编程三剑客 用TCP/IP进行网际互联-----------Douglas E. Comer 高级TCP/IP编程-------------------Jon C. Snader C++网络编程-----------------------Douglas Schmidt UNIX环境高级编程(第2版)--------------------Richard Stevens 13、算法 计算机程序设计艺术-------Donald.E.Knuth----------算法“倚天屠龙”双剑 算法导论-----------------Thomas H. Cormen--------算法“倚天屠龙”双剑 离散数学及其应用----------Kenneth H.Rosen 具体数学—计算机科学基础--------Donald.E.Knuth 14、图形编程 Windows 图形编程----------------FENG YUAN --图形编程界的Charles Petzold之书 15、数据结构 数据结构 C++语言描述》58.00(Data Structures C++) William Ford,William Topp 刘卫东 沈官林 数据结构算法与应用-C++语言描述》49.00Sartej Sahni 汪诗林 孙晓东等机械工业出版社 16、软件工程 设计模式--可复用面向对象软件的基础 重构—改善既有代码的设计 17、操作系统 深入理解计算机系统(修订版)-------RANDAL E.BRYANT 18、Unix UNIX 网络编程 卷I 套接字联网API(英文版 第三版 UNIX 编程艺术 UNIX环境高级编程(英文影印第2版-----UNIX编程“圣经 UNIX环境高级编程(英文影印版)(第2版) UNIX环境高级编程(第2版) UNIX环境高级编程(第2版)---UNIX编程“圣经 UNIX网络编程 第1卷:套接口API(第3版) UNIX网络编程卷2:进程间通信(第2版)(英文影印版) UNIX 网络编程(第二版)第2卷:进程间通信 UNIX编程环境 UNIX 网络编程 卷I 套接字联网API(英文版 第三版 UNIX系统编程 UNIX环境高级编程 UNIX 网络编程 卷I 套接字联网API(英文版 第三版) UNIX网络编程 第1卷:套接口API(第3版) UNIX 网络编程(第二版)第2卷:进程间通信 UNIX网络编程卷2:进程间通信(第2版)(英文影印版) UNIX 网络编程(第2版)第1卷:套接口API和X/Open 传输接口API UNIX网络编程(卷1):连网的APLS:套接字与XTI(第二版)(英文影印版) UNIX环境高级编程 Unix技术手册 19、Linux Linux内核设计与实现 Linux内核完全注释 LINUX内核分析及编程 GNU/Linux 编程指南(第二版) Linux设备驱动程序(第三版) 嵌入式设计及Linux驱动开发指南——基于ARM 9处理器 Linux设备驱动程序 第三版(英文影印版) Linux内核设计与实现(第2版) Linux内核设计与实现(英文影印版)(第2版) linux技术手册 20、游戏编程 Windows游戏编程大师技巧(第二版 游戏之旅--我的编程感悟 OpenGL超级宝典:第三版 OpenGL编程指南(第四版) java 游戏高级编程 J2ME手机游戏编程入门 游戏之旅——我的编程感悟 游戏开发中的人工智能(英文影印版) 3D游戏:卷2 动画与高级实时渲染技术 面向对象的游戏开发 java 游戏高级编程 3D游戏编程大师技巧 游戏编程精粹 面向对象的游戏开发 3D游戏 卷1:实时渲染与软件技术 3D游戏:卷2 动画与高级实时渲染技… J2ME手机游戏编程入门 Direct3D游戏编程入门教程(第二版… 21、移动开发 Windows Mobile手机应用开发 SYMBIAN OS C++手机应用开发 Windows Mobile手机应用开发--傅曦 齐宇 徐骏 SYMBIAN OS C++手机应用开发 (第2卷)------------------RICHARD HARRISON著,周良忠 王伯欣译 SYMBIAN OS C++手机应用开发---------------RICHARD HARRISON著,周良忠译 Windows CE.net内核定制及应用程序开发---------周毓林 宁杨 陆贵强 付林林 嵌入式系统Windows CE 开发技巧与实例--傅曦 Palm OS编程实践---绝版 22、单片机 单片机轻松入门----------------------------------周坚(平凡老师) 单片机典型模块设计实例导航-----------------------求是科技 例说8051----------------------------------------张义和 陈敌北 KEIL CX51 V7.0单片机高级语言编程与ΜVISION2应用实践-----徐爱钧 单片机应用程序设计技术(修订版)--------------------周航慈 8051单片机实践与应用-------------------------------吴金戎 MCS-51系列单片机实用接口技术---------------------李华 23、串并口通讯 Visual C++/Turbo C串口通信编程实践------------------龚建伟 VISUAL BASIC与RS-232串行通信控制(最新版)----------范逸之 24、电子 无线电识图与电路故障分析轻松入门(第二版) -------------------胡斌 无线电元器件检测与修理技术轻松入门(第二版) -------------------胡斌 图表细说电子技术识图-------------------胡斌 图表细说电子元器件-------------------胡斌 图表细说元器件及实用电路-------------------胡斌 ================================================================ 六、怎样成为一名程序员 通过以下4个阶段的训练, 没有任何编程基础人就可以成为一名普通的程序员。 第一阶段:掌握一种编程语言 学习内容:学习任意一种主流的编程语言。例如C++语言。 学习目标:熟练掌握一种语言的语法和基本的编程技巧。 学习时间:3个月左右 注意事项:编程语言和编程工具是两回事情,编程语言是指C++、Basic、Object Pascal等程序设计语言,它们是像汉语、英语一样的抽象的语法规则,编程工具是指Visual C++ 6.0、Visual Basic 6.0、Delphi 7.0等包括了源代码编辑器、程序编译器在内的集成化、可视化的软件开发工具。C++源程序可以在Visual C++ 6.0里编写,也可以在记事本里编写,而同一个C++源程序可以用Visual C++ 6.0编译、执行,也可以用C++ Builder 5.0 编译、执行,所以: C++ 不等于 Visual C++ 6.0 第二阶段:掌握一种编程工具 学习内容:学习任意一种主流的编程工具。注意编程工具要和第一阶段学习的编程语言一致,例如你学习的编程语言是C++,那么编程工具要选Visual C++ 6.0或者C++ Builder 5.0。 学习目标:熟练掌握这种编程工具基本用法,例如:菜单、组件、程序跟踪调试、编写Windows程序等。 学习时间:3个月左右 注意事项:这个阶段侧重编程工具的使用,同时进一步熟习编程语言,最后达到能熟练编写各种基本的Windows程序。 第三阶段:掌握“算法与数据结构”这门课程 学习内容:算法与数据结构,推荐许卓群的《数据结构》,高等教育出版社出版。 学习目标:熟练掌握各种常用的算法与数据结构 学习时间:4个月左右 注意事项:这是一门不可或缺的软件开发课程,曾经有一本经典计算机专业书籍叫做《数据结构+算法=程序》,这说明了数据结构和算法的重要性。它能帮我们建立良好的程序分析与设计能力。 第四阶段:实现一个模拟的小型软件项目 学习内容:软件项目的开发过程 学习目标:掌握软件项目的基本开发过程和方法 学习时间:4个月左右 注意事项:自己完成一个模拟的小型软件项目,强烈推荐做一个MIS(管理信息系统)软件,参考用书推荐“中小型信息管理系统开发实例系列丛书”,人民邮电出版社,它的例子详实有效,以它为基础再加以扩展,就可以做出实用的MIS软件来。此丛书包括多种开发工具,大家可以选择适合自己的:《VISUAL FOXPRO6.0 数据库系统开发实例导航》 《java数据库系统开发实例导航》 《VISUAL BASIC数据库系统开发实例导航》《VISUAL C++6.0数据库系统开发实例导航》 《ASP.NET数据库管理系统开发实例导航》 《DELPHI数据库系统开发实例导航》《POWERBUILDER 8.0数据库系统开发实例导航》。 最后将完成的模拟软件刻成光盘,作为自己的作品去面试,以此踏上自己光辉的职业程序员之路。

青衫无名 2019-12-02 01:20:33 0 浏览量 回答数 0

回答

怎么 没人来呀 @中山野鬼###### 1、如果想去掉while(true),可以考虑通知实现; 2、关于自动重连的问题,可以考虑重发送逻辑中抽离出来,采用心跳检测完成; 3、另外发送速率统计部分也应该抽离出来。 4、上多通道要考虑资源使用可控。 5、实在不行按照业务拆分成多模块,用redis 或mq类的扩展一下架构设计; ######回复 @OS小小小 : map =(Map)JSONObject.parse(SendMsgCMPP2ThredPoolByDB.ZhangYi.take()); 换成take,阻塞线程,试试。######回复 @OS小小小 : 1、通知只是告知队列里有新的数据需要处理了; 5、内存队列换成redis队列 实现成本增加,但是可扩展性增加;######1、通知实现的话 ,岂不是 无法保证 最少发送么,又会陷入另一个问题中 是吗? 或者是我的想法不对么? 2、嗯,这一块可以这样做。谢谢你 3、速率统计这里 我目前想不到怎么抽离、既可以控制到位,又可以保证不影响。。。 5、redis 是有的 但是 redis的队列的话 跟我这个 没啥区别吧,可能速度更快一点。######while(true) 里面 没数据最起码要休眠啊,不停死循环操作,又没有休眠cpu不高才怪######回复 @OS小小小 : 休眠是必须的,只是前面有数据进来,可以用wait notify 的思路通知,思路就是这样,CountDownLatch 之类多线程通讯也可以实现有数据来就能立即处理的功能######嗯,目前在测试 排除没有数据的情况,所以这一块没有去让他休眠,后面会加进去。 就针对于目前这种情况,有啥好办法吗###### 我的思路是:一个主线程,多个任务子线程。 主线程有一层while(true),这个循环是不断的扫描LinkedBlockingQueue是否有数据,有则交个任务子线程(也就是你这里定义的线程池)处理,而不是像你这样每个子任务线程都有一个while(true) ######这才是对的做法######嗯,这思路可以。谢谢哈###### 引用来自“K袁”的评论 我的思路是:一个主线程,多个任务子线程。 主线程有一层while(true),这个循环是不断的扫描LinkedBlockingQueue是否有数据,有则交个任务子线程(也就是你这里定义的线程池)处理,而不是像你这样每个子任务线程都有一个while(true) 正确做法. 还有就是 LinkedBlockingQueue 本身阻塞的,while(true)没问题,主要在于不需要每个发送线程都去block######while(true)不加休眠就会这样###### java 的线程数量大致要和cpu数量一致,并不是越多越快,线程调度是很消耗时间的。要用好多线程,就需要设计出好的多线程业务模型,不恰当的sleep和block是性能的噩梦。利用好LinkedBlockingQueue,队列空闲时读队列的线程会释放cpu。利用消息触发后续线程工作,就没必要使用while(true)来不停的扫描。 ######@蓝水晶飞机 看到你要比牛逼,我就没有兴趣跟你说话了######回复 @不日小鸡 : 我就是装逼怎么啦,特么的装逼装出样子来的,起码也比你牛逼啊。######回复 @蓝水晶飞机 : 你说这话不能掩盖你没有回复我的问题又来回复我导致装逼失败的事实。 那你不是楼主你回复我干什么,还不是回答我的问题。 不要装逼了好么,装多就成傻逼了######回复 @不日小鸡 : 此贴楼主不是你,装什么逼。######回复 @王斌_ : 这些我都知道,我的意思是你这样回复可能会误导其他看帖子的人或者新手,让他们以为线程数就等于CPU数###### 引用来自“OS小小小”的评论 怎么 没人来呀 @中山野鬼 抬举我了。c++ 我还敢对不知深浅的人说,“权当我不懂”,java真心只是学过,没有实际工程上的经验。哈。而且我是c的思维,面对c适合的应用开发,是反对使用线程的。基本思维是,执行模块的生命周期不以任务为决定,同类的执行模块,可根据物理硬核数量,形成对应独立多个进程,但绝对不会同类的任务独立对应多个线程。哈。所以java这类面向线程的设计,没办法参与讨论。设计应用目标不同,系统组织策略自然有异。 唯一的建议是:永远不要依赖工具,特别是所谓的垃圾资源处理回收机制,无论它做的再好,一旦你依赖,必然你的代码,在不久的将来会因为系统设计规模的变大,而变的垃圾。哈。 听不懂的随便喷,希望听懂的,能记得这个观点,这不是我一个人的观点。 ######给100万像素做插值运算进行染色特效,请问单线程怎么做比多线程快?###### @乌龟壳 : 几种方法都可以,第一是按照计算步骤,每个进程处理一个步骤,然后切换共享空间(这没有数据传递逻辑上的额外开销),就是流水思维。第二个是block的思维,同样的几个进程负责相同计算,但负责不同片区。同时存在另一类的进程是对前期并发处理完的工作进行边界处理。 你这个例子体现不出进程和线程的差异的。 如果非要考虑进程和线程在片内cache的差异,如果没记错(错了大家纠正哈),进程之间的共享是在二级缓存之间吧。即便线程能做到一级缓存之间的共享,但对于这种大批量像素的计算,用进程仍然是使用 dma,将数据成块载入一级缓存区域进行处理,而这个载入工作和计算工作是同步的。不会有额外太多的延迟。 你举的这个例子,还真好是我以前的老本行。再说了。像素计算,如今都用专用计算处理器了吧。还用x86或arm来处理,不累死啊。哈。 而且这种东西java不适合,同样的处理器,用c写,基本可以比java快1到2倍。因为c可以直接根据硬件特性和计算逻辑特点有效调度底层硬件驱动方式。而java即便你用了底层优化的官方库,仍然不能保证硬件与计算目标特性的高度整合。 ######回复 @中山野鬼 : 简单来说,你的多个进程处理结果进行汇总的时候,是不是要做内存复制操作?如果是多线程天然就不用,多进程用系统的共享内存机制也不用,问题是既然用了共享内存,和多线程就没区别了。######回复 @乌龟壳 : 两回事哦。共享空间是独立的,而线程如果我没记错,全局变量,包括文件内的(静态变量)是共享的。不同线程共享同一个进程内的变量嘛。这些和业务逻辑相关的东西,每个线程又是独立一套业务逻辑,针对c语言,这样去设计,不是没事找事嘛。面向对象语言,这块都帮你处理好了,自然没有关系。######既然有共享空间了,那你所说的进程和线程实际就是一回事了。###### @乌龟壳   ,数据分两种,一种和算法或处理相关的。一种是待处理的数据。 前者,不应该共享,后者属于数据加工流程,必然存在数据传递或流动,最低成本的传递/流动方式就是共享内存,交替使用权限的思路。 但这仅仅针对待加工的数据和辅助信息,而不针对程序本身。 进程不会搞混乱这些东西特别是(待加工数据的辅助信息),而线程,就各种乱吧。哈。 进程之间,虽然用共享空间,但它本质是数据传递/流动,当你采用多机(物理机器)并发处理时,进程移动到另外一个物理主机,则共享空间就是不能选择的传递/流动方式了。但线程就没有这些概念。 ######回复 @中山野鬼 : 是啊,java天然就不是像C一样对汇编的包装。######@乌龟壳 面向企业级的各种业务,java这些没问题的。而且更有优势,面向计算设备特性的设计开发,就不行了。哈。######回复 @中山野鬼 : 也算各有场景吧,java同样可以多进程可以分布式来降低多线程的风险。java也可以静态编译成目标机器码。总之事在人为。######回复 @乌龟壳 : 高手,啥都可以,低手,依赖这些,就是各种想当然。哈哈。######回复 @中山野鬼 : 那针对java的垃圾回收,这个东西是可以调节它算法的,不算依赖工具吧,哈。不然依赖C语言语法也算依赖工具咯。哈。;-p

kun坤 2020-05-31 13:04:51 0 浏览量 回答数 0

回答

一般都是调用现成的命令,解析命令输出######回复 @Hyacinthus_M : 几乎所有编程语言都有执行命令获取输出的方法的,获取完之后,按行正则表达式匹配提取信息即可######回复 @Mallon : 那你能给点这方面解析的资料吗?我的GREP等用得不好,首先得有思路了,不然我会觉得还没有改代码来得可行。######回复 @Mallon : 意思是先iwlist eth0 scan | grep "Target"吗,那怎么样设置密码呢?在这方面我很迷惑######回复 @Hyacinthus_M : 你在程序里调用命令行,Linux下基本就是这个套路######可是要求是写程序。 这个程序是面对客户的,我总不能要求客户还能用命令行吧。我只想知道有没有代码量小点的方法。###### 是这样的。我开始的时候也想过通过用system调用通过shell的工具来完成任务,可是shell功底有些不足。 我所需要的只是iwlist eth0 scan 结果中的ESSID, TXPOWER,还有就是加密相关的内容。 而又要求将这些内容以每个网络块的方式输出,而通过grep 后,所有的相同的项都在一起了。 那么要通过样才能实现我的需求呢,shell我真的很基本。 ###### 引用来自“Hyacinthus_M”的答案 是这样的。我开始的时候也想过通过用system调用通过shell的工具来完成任务,可是shell功底有些不足。 我所需要的只是iwlist eth0 scan 结果中的ESSID, TXPOWER,还有就是加密相关的内容。 而又要求将这些内容以每个网络块的方式输出,而通过grep 后,所有的相同的项都在一起了。 那么要通过样才能实现我的需求呢,shell我真的很基本。 shell作为程序设计语言功能太弱了,上perl python吧,推荐后者,呵呵 ######回复 @Hyacinthus_M : 纯C麻烦,我没研究过...######这个程序只能C做,纯的。python,呵呵。说重点好吗,######grep是shell用的,其它语言都内置正则模块的###### http://stackoverflow.com/questions/646241/c-run-a-system-command-and-get-output######大哥,你没有把握我的意思啊。###### 正则就用PCRE吧 http://www.pcre.org/ ###### 按照楼主的描述,我猜公司是让你在一个嵌入式设备上实现该功能吧。 wireless-tools需要跟底层的硬件配合使用,它本身无非就是通过socket从内核获取到信息。设备的wifi驱动也是你们自己搞的?如果从驱动着手的话,可能还更简单点。方便的话,可以说一下你们所使用的平台。 ######我也是刚去上班不久的,对硬件了解也少,驱动好像不是他们写的。 我已经改了不少了,这个星期应该能完成吧。 iw_get_ext()这个接口?######是用的baspberrypi的。系统基本和debian的一样。只是只有基本的一些功能。######回复 @txgcwm : 大哥。真是谢谢你啊。 我真的很需要这样的交流。 你也早点睡啊。我先睡了。######回复 @Hyacinthus_M : 大哥。真是谢谢你啊。 我真的很需要这样的交流。 你也早点睡啊。我先睡了。######回复 @txgcwm : 你好。我对你说的“楼主可以使用fopen来执行“iwlist eth0 scan”指令,将获取到的结果逐个解析出来”的意思不是太理解? 是先将结果定向到一个文件中,然后再解析? 好像你不是这个意思啊,有些地方我不是很懂,可以请你说具体点吗######回复 @txgcwm : 是啊,我也想通过调用system()来运行iwlist eth0 scan来做,然后解析输出,包括无线网络的配置,同样也可以用同样的方法来做,但是我的问题出在解析部分。 希望你给点具体点的建议。######如果是那样的话,预计你执行那些指令是没有多少问题的。 楼主可以使用fopen来执行“iwlist eth0 scan”指令,将获取到的结果逐个解析出来(这样比你修改代码好多了,字符串解析应该相对简单一些嘛)。###### 引用来自“txgcwm”的答案 按照楼主的描述,我猜公司是让你在一个嵌入式设备上实现该功能吧。 wireless-tools需要跟底层的硬件配合使用,它本身无非就是通过socket从内核获取到信息。设备的wifi驱动也是你们自己搞的?如果从驱动着手的话,可能还更简单点。方便的话,可以说一下你们所使用的平台。 是的呢。我不是科班出身的,一直在自己摸索,有很多东西都不太懂,很多时候都是在用笨方法来解决。      开始的时候,我的确是想用SHELL来实现的,然后解析。但是我的头说要用程序写, 开始真是一点头绪都没有,我只能想到去修改wireless-tools的源程序了。 我觉得自己可以解决的。 不过,还是希望你能给点建议。 ######楼主,现在这个问题肯定解决了吧!能不能分享一下最后的结果啊?我现在也遇到了和你同样的问题,可是我没有楼主那么厉害,可以直接更改源代码。能不能帮一下小弟,谢谢先!!!######回复 @txgcwm : 你好,我已经使用解析的方法完成了基本功能。最近在使用基于wireless.h,iwlib.h iwlib.c三个文件(丢弃iwlist.c iwconfig.c)来重写该程序,在main.c中,包括了#include "iwlib.h", 并且在iwlib.h声明了所有的函数原型,所有的函数实现均在iwlib.c中,######回复 @txgcwm : 恩。我已经在baspberrypi的板子上运行过wireless-tools的工具了,iwlist scan结果正常。######回复 @txgcwm : 比如,把scan的结果定向到一个文件中,然后再通过字符串的操作来实现,还是scan | grep 的方法来实现呢? 后者我不太熟悉,我的功底还没能满足需求,但是前者,对多个关健字的解析方面的算法实现,思路不是很明确。######回复 @Hyacinthus_M : 而且我建议你将这个工具在没有修改前先编译进去,看看是否能够输出你想要的数据(没有的话可能底层不支持,那样的话你上层改了也没有用)。###### #include <sys/wait.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <stdio.h> #define MAXLINE 1024 int main(int argc, char **argv) { char buf[MAXLINE]; int rc = 0; FILE *fp = NULL; fp = popen("iwlist wlan0 scan", "r"); if(fp == NULL) { perror("popen error!"); return -1; } while(fgets(buf, MAXLINE, fp) != NULL) { int len = strlen(buf); if(buf[len-1] == '\n') buf[len-1] = '\0'; printf("%s\r\n", buf); } if((rc = pclose(fp)) < 0) { perror("pclose error!"); return -1; } return 0; }######回复 @txgcwm : 但是在主函数中,调用相关函数经常出现“undefined reference to”的错误,这些错误我有些不能理解。我在网上也看了一些相关的资料,但是是没能解决,希望你给点建议。######回复 @Hyacinthus_M : 给你一个大概的思路: 1、从数据上看,每个wifi信息都是以cell开头的,以此为标记; 2、使用isspace函数将前面的所有空格清除; 3、通过strcmp对比你要获取的数据项,然后将其后的数据保存。 你自己尝试解析,后续有问题,下班了再说。######回复 @txgcwm : 就是。我觉得他个人有点偏执。同样是用上层。他是把这个任务交给我的。我的公司小,只有十个人,其中几个还是实习的。我先用解析的方法做出来,如果有什么不懂的,还要请教你啊。 对了,设置关键字字符串数组,每一行一行的解析,是不是用strstr()简单来对每一行的内容与关键字进行配对来过滤内容就可以了?######回复 @Hyacinthus_M : 这个我也不太清楚哪里有这些资料,你自己去找找吧。无论你是去修改wireless tools还是按照解析输出数据的方法,也只是上层应用。如果要从内核的层次去了解这些东西,预计你一周的时间根本不够。 不太清楚你的主管需要你用什么样的方法实现?他固执的要用自己的方法(他自身是否对这些可能用到的方法作过分析?),他自己为什么不去实现。######回复 @txgcwm : 我把自己的想法和他说了,他还是让我熟悉底层的API(意思还是让我去修改wireless-tools)。先把用这个实现方法做出来吧。用wireless-tools修改程序的方法,和解析输出的方法没有本质区别吧。 对了,基于无线网络开发的API在哪能找到资料?难道要去看kernel?

kun坤 2020-06-06 13:38:52 0 浏览量 回答数 0

问题

Apache Flink常见问题汇总【精品问答】

黄一刀 2020-05-19 17:51:47 8154 浏览量 回答数 2
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播