程序员知识库
1.java程序写一个知识库模块需要什么字段
(1) 类名首字母应该大写。
字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。
例如: ThisIsAClassName 若在定义中出现了常数初始化字符,则大写static final基本类型标识符中的所有字母。这样便可标志出它们属于编译期的常数。
Java包(Package)属于一种特殊情况:它们全都是小写字母,即便中间的单词亦是如此。对于域名扩展名称,如com,org,net或者edu等,全部都应小写(这也是Java 1.1和Java 1.2的区别之一)。
(2) 为了常规用途而创建一个类时,请采取“经典形式”,并包含对下述元素的定义: equals() hashCode() toString() clone()(implement Cloneable) implement Serializable (3) 对于自己创建的每一个类,都考虑置入一个main(),其中包含了用于测试那个类的代码。为使用一个项目中的类,我们没必要删除测试代码。
若进行了任何形式的改动,可方便地返回测试。这些代码也可作为如何使用类的一个示例使用。
(4) 应将方法设计成简要的、功能性单元,用它描述和实现一个不连续的类接口部分。理想情况下,方法应简明扼要。
若长度很大,可考虑通过某种方式将其分割成较短的几个方法。这样做也便于类内代码的重复使用(有些时候,方法必须非常大,但它们仍应只做同样的一件事情)。
(5) 设计一个类时,请设身处地为客户程序员考虑一下(类的使用方法应该是非常明确的)。然后,再设身处地为管理代码的人考虑一下(预计有可能进行哪些形式的修改,想想用什么方法可把它们变得更简单)。
(6) 使类尽可能短小精悍,而且只解决一个特定的问题。下面是对类设计的一些建议:关键字: ■一个复杂的开关语句:考虑采用“多形”机制 ■数量众多的方法涉及到类型差别极大的操作:考虑用几个类来分别实现 ■许多成员变量在特征上有很大的差别:考虑使用几个类 。
(7) 让一切东西都尽可能地“私有”——private。可使库的某一部分“公共化”(一个方法、类或者一个字段等等),就永远不能把它拿出。
若强行拿出,就可能破坏其他人现有的代码,使他们不得不重新编写和设计。若只公布自己必须公布的,就可放心大胆地改变其他任何东西。
在多线程环境中,隐私是特别重要的一个因素——只有private字段才能在非同步使用的情况下受到保护。 (8) 谨惕“巨大对象综合症”。
对一些习惯于顺序编程思维、且初涉OOP领域的新手,往往喜欢先写一个顺序执行的程序,再把它嵌入一个或两个巨大的对象里。根据编程原理,对象表达的应该是应用程序的概念,而非应用程序本身。
(9) 若不得已进行一些不太雅观的编程,至少应该把那些代码置于一个类的内部。 (10) 任何时候只要发现类与类之间结合得非常紧密,就需要考虑是否采用内部类,从而改善编码及维护工作(参见第14章14.1.2小节的“用内部类改进代码”)。
(11) 尽可能细致地加上注释,并用javadoc注释文档语法生成自己的程序文档。 (12) 避免使用“魔术数字”,这些数字很难与代码很好地配合。
如以后需要修改它,无疑会成为一场噩梦,因为根本不知道“100”到底是指“数组大小”还是“其他全然不同的东西”。所以,我们应创建一个常数,并为其使用具有说服力的描述性名称,并在整个程序中都采用常数标识符。
这样可使程序更易理解以及更易维护。关键字: ■一个复杂的开关语句:考虑采用“多形”机制 ■数量众多的方法涉及到类型差别极大的操作:考虑用几个类来分别实现 ■许多成员变量在特征上有很大的差别:考虑使用几个类 。
(7) 让一切东西都尽可能地“私有”——private。可使库的某一部分“公共化”(一个方法、类或者一个字段等等),就永远不能把它拿出。
若强行拿出,就可能破坏其他人现有的代码,使他们不得不重新编写和设计。若只公布自己必须公布的,就可放心大胆地改变其他任何东西。
在多线程环境中,隐私是特别重要的一个因素——只有private字段才能在非同步使用的情况下受到保护。 (8) 谨惕“巨大对象综合症”。
对一些习惯于顺序编程思维、且初涉OOP领域的新手,往往喜欢先写一个顺序执行的程序,再把它嵌入一个或两个巨大的对象里。根据编程原理,对象表达的应该是应用程序的概念,而非应用程序本身。
(9) 若不得已进行一些不太雅观的编程,至少应该把那些代码置于一个类的内部。 (10) 任何时候只要发现类与类之间结合得非常紧密,就需要考虑是否采用内部类,从而改善编码及维护工作(参见第14章14.1.2小节的“用内部类改进代码”)。
(11) 尽可能细致地加上注释,并用javadoc注释文档语法生成自己的程序文档。 (12) 避免使用“魔术数字”,这些数字很难与代码很好地配合。
如以后需要修改它,无疑会成为一场噩梦,因为根本不知道“100”到底是指“数组大小”还是“其他全然不同的东西”。所以,我们应创建一个常数,并为其使用具有说服力的描述性名称,并在整个程序中都采用常数标识符。
这样可使程序更易理解以及更易维护。 (13) 涉及构建器和异常的时候,通常希望重新丢弃在构建器中捕获的任何异常——如果它造成了那个对象的创建失败。
这样一来,调。
2.入门到精通的路上,有哪些快速掌握Python的途径
在学习Python的路上,从入门到精通有那些途径?百度提问和解答的都很多,你可以百度下看看。
我目前只是入门还谈不上精通,总结个人自学的经验,应从以下几个方面来理解:1 为什么选择学python?据统计零基础或非专业的人士学python的比较多,据HackerRank开发者调查报告2018年5月显示(见图),Python排名第一,成为最受欢迎编程语言。Python以优雅、简洁著称,入行门槛低,可以从事Linux运维、Python Web网站工程师、Python自动化测试、数据分析、人工智能等职位,薪资待遇呈上涨趋势。
2 入门python需要那些准备?2.1 心态准备。编程是一门技术,也可说是一门手艺。
如同书法、绘画、乐器、雕刻等,技艺纯熟的背后肯定付出了长时间的反复练习。不要相信几周速成,也不能急于求成。
编程的世界浩瀚无边,所以请保持一颗敬畏的心态去学习,认真对待写下的每一行代码,甚至每一个字符。收拾好自己的心态,向着编程的世界出发。
第一步至关重要,关系到初学者从入门到精通还是从入门到放弃。选一条合适的入门道路,并坚持走下去。
2.2 配置 Python 学习环境。选Python2 还是 Python3?入门时很多人都会纠结。
二者只是程序不兼容,思想上并无大差别,语法变动也并不多。选择任何一个入手,都没有大影响。
如果你仍然无法抉择,那请选择 Python3,毕竟这是未来的趋势。编辑器该如何选?同样,推荐 pycharm 社区版,配置简单、功能强大、使用起来省时省心,对初学者友好,并且完全免费!其他编辑器如:notepad++、sublimeText 3、vim 和 Emacs等不推荐了。
操作环境?Python 支持现有所有主流操作平台,不管是 windows 还是 mac 还是 linux,都能很好的运行 Python。并且后两者都默认自带 Python 环境。
2.3 选择自学的书籍。我推荐的书的内容由浅入深,建议按照先后顺序阅读学习:2.3.1《Python简明教程》。
这是一本言简意赅的 Python 入门教程,简单直白,没有废话。就算没有基础,你也可以像读小说一样,花两天时间就可以读完。
适合入门快速了解语法。2.3.2 廖雪峰编写的《Python教程》。
廖先生的教程涵盖了 Python 知识的方方面面,内容更加系统,有一定深度,有一定基础之后学习会有更多的收获。2.4 学会安装包。
Python中有很多扩展包,想要安装这些包可以采用两种方法:2.4.1 使用pip或easy_install。1)在网上找到的需要的包,下载下来。
eg. rsa-3.1.4.tar.gz;2)解压缩该文件;3)命令行工具cd切换到所要安装的包的目录,找到setup.py文件,然后输入python setup.py install2.4.2 不用pip或easy_install,直接打开cmd,敲pip install rsa。3 提升阶段需要恒心和耐力。
完成入门阶段的基础学习之后,常会陷入一个瓶颈期,通过看教程很难进一步提高编程水平。这时候,需要的是反复练习,大量的练习。
可以从书上的例题、作业题开始写,再写小程序片段,然后写完整的项目。我们收集了一些练习题和网站。
可根据自己阶段,选择适合的练习去做。建议最好挑选一两个系列重点完成,而不是浅尝辄止。
3.1 多做练习。推荐网站练习:crossin编程教室实例:相对于编程教室基础练习着重于单一知识点,编程实例训练对基础知识的融会贯通;hackerrank:Python 部分难度循序渐进,符合学习曲线实验楼:提升编程水平从做项目开始;codewar:社区型编程练习网站,内容由易到难;leetcode:为编程面试准备,对初学者稍难;牛客网:提供 BAT 等大厂笔试题目;codecombat:提供一边游戏一边编程;projecteuler:纯粹的编程练习网站;菜鸟教程100例:基于 py2 的基础练习;3.2 遇到问题多交流。
3.2.1 利用好搜索引擎。3.2.2 求助于各大网站。
推荐stackoverflow:这是一个程序员的知识库;v2ex:国内非常不错的编程社区,不仅仅是包含程序,也包含了程序员的生活;segmentfault:一家以编程问答为主的网站;CSDN、知乎、简书等3.2.3 加入相关的QQ、微信群、百度知道。不懂的可以随时请教。
3.2.4 如果经费充足可参加编程实战的培训班(入门时不建议参加培训)。
3.个人知识管理的工具那个好用
PKM2介绍PKM2 是基于内容的个人知识管理系统,它可以将您看到的所有文字、图片信息全部转储为 HTML 格式文档保存到数据库中。
这些信息包括:你的笔记、网上的网页内容、本地机器里的文档内容。PKM2 将这些资料全部保存到你的项目中进行管理,不会因系统或软件崩溃丢失数据。
PKM2 可以帮助您进行基于内容的采集、编辑、整理、检索、发布,为您的个人知识管理提供有力支持。PKM2 适用于程序员、研究者、学生、信息专家、以及以互联网作为主要信息来源的网上阅读者、信息搜集者和信息发布者。
PKM2 特色:1. 便携性:PKM2 是一款 绿色免费软件,您可以将它放在 U 盘或移动硬盘中,作为便携式个人知识库,成为您的“外脑”;2. 易用性:PKM2 是一款傻瓜式的软件,主要功能均通过拖放操作。网上的文字和图片等内容可以通过拖放到悬浮窗保存,目录的分类可以通过拖放重组,文章的分类也可以通过批量拖放重新分类;附件也可以通过向附件框拖放批量导入;3. 安全性:备份和恢复操作简单,所有数据均保存在软件的 PROJECTS 目录的各个子项目中,拷入、拷出相应文件夹即可完成数据的备份与恢复;4. 交互性:可以方便地进行数据的导入与导出。
网上的页面数据和本地的文档(HTML、DOC、RTF、TEXT 等)都可存入或导入 PKM2。PKM2 中的数据可以导出为 HTML、DOC,或发布为 CHM 电子书、EXE 电子书、或直接发布为 WEB 系统,在网站上做内容发布。
5. 规范性:PKM2 的文档数据基于都柏林核心元数据集中十个元素(资源标识符、标题 、作者、关键词、分类、备注、创建者、创建日期、修改日期、资料来源)对资料进行标引,并在编辑器中集成了标引工具,对标题、作者、关键词和备注进行半自动标引。6. 开放性:PKM2 采用 HTML 标准管理资料,它将所有文件,转换为 HTML 格式,进行统一管理。
基于HTML,用户可以按照统一的方式,编辑,管理文件。同时,由于 HTML 的 开放性,也使得用户可以方便的进行二次开发。
7. 通用性:PKM2 采用 MS ACCESS 数据库,只要采用 WINDOWS 系统即可使用本系统,同时 ACCESS 也是目前通用性较好的数据库之一,使用常见的数据库转换工具可以将 ACCESS 数据库中的数据方便地转入其他数据库中。PKM2 结构PKM2 是基于内容的个人知识管理系统,所有文档均转为 HTML 格式,HTML 由文本数据和关联文件购成,PKM2 将所有文本数据保存在数据库中(Database),所有关联文件保存在附件目录(Attachment),这样既可避免数据库过度膨胀,又可依托于数据库的安全性和稳定性,使资料得到可靠的保护。
同时由于数据库的开放性,用户也可以直接管理自己的数据。系统结构如下:* PKManager.exe (系统主程序)* RESOURCES (系统相关资源目录,与用户数据无关。)
* PROJECTS (用户数据均保存在该目录下各项目目录中。)PROJECTS 目录结构如下:* DATABASE (项目数据库位置,用于存放 HTML 文本数据。)
* ATTACHMENT (项目附件存放位置,用于存放文档关联文件。)PKM2功能信息收集* 保存网页内容,包括其中的图片、Javascript等元素 ;* 收集网页中的图片;* 保存网页中的选中部分 ;* 收集选中部分包含的图片、链接等 ;* 可以把网页保存为纯文本格式 ;* 可从本地计算机导入文件;* 可从本地计算机导入文件夹,并保持原有目录结构。
信息管理* 支持多种来源、多种格式的信息管理,如网页、文本文件、Word 文档、信息片段等;* 可为保存的信息指定标题、关键词、作者、备注、附件等;* 所有信息保存在 PKM2 项目文件中,安全可靠,支持对数据文件的压缩、备份、优化等操作;信息组织* 收集的信息以目录加列表的方式组织,可以通过拖放随意分类、快速存取;* 支持对文件夹、文件的多选批量操作;* 提供关键词自动提取与主题标引功能 ;* 提供回收站,使您误操作的损失降到最低。信息评估* PKM2 可以用饼图可视化地统计并展示个人知识库中知识的存量和分布情况;* 多种文件列表视图:最近阅读过的文章、经常阅读的文章、很少阅读的文章、最近添加的文章、最近修改过的文章、含有书签的文章等;* 与 MS OneNote 标记一样好用的书签功能(BookMark),可自定义二十个书签用于帮助分析与评估知识点;* 与博客和 Wiki 一样的标签(Tag)功能,可以汇总和排序所有标签,帮助统计、分析知识点和分布情况;信息使用* 可以以网页方式方便的浏览保存的信息;* 浏览时可对重要信息作阅读标记 ;* 支持对已收集的网页、文本信息进行复杂的编辑操作 ;* 可方便的查看附加信息,如备注、附件、编辑状态、原始网址等;* 提供打印、打印预览功能。
信息检索* 提供项目内的查找功能;* 提供项目分类查找功能,可检索当前类或所有子类内检索;* 可对收集信息的标题、注释、信息全文进行多关键词精确或模糊检索。信息共享* 导出项目或文件夹为 CHM 电子书;* 导出或导入 PKM 数据包用于项目间交换数据;* 可发布为光盘版单机运行的数据库系统;* 可发布为 WEB 应用程序,类似于网络文章发布系统。
PMK2 的 优点1. 基。
4.程序员如何在小公司成长和大公司学习
摘要:这篇文章会带有普遍性,不见得适合所有人,或者文章所描述的也不见得是对的,只是根据我的经历和所见写成的一篇文章,仅供参考。
前言:在软件行业工作有几个年头了,换过多个开发语言,跳过槽,也被猎头找过,经历了三五杆枪打天下和创业公司一起成长灭亡,也进入了大公司。在这些年的历练中,看见很多刚进入软件行业不久的新人总在抱怨,说学不到东西。
其实不管你在大公司还是小公司,都可以学到很多东西,关键看你怎么去学习,如何学习,找到方法你就可以提高很快。如果你已经知道如何在你的工作当中学习,那么下面的文章就走马观花的看看吧,这篇文章是给还在迷茫怎么去学习和成长的新人一些指点。
所有意见仅供参考,我也是根据我的所见所闻和经历来做些指导,不见得是正确的,如果大家有好的学习方法,欢迎交流。正文:先来说说几个情况:大公司A:不想干了,什么都学不到,每天都维护这一个东西,都想去小公司。
小公司B:累死了,什么都做,太乱太杂,没系统不规范,要是能去大公司多好。看了这两段简短的话,我相信有一部分人会很有感触。
从上面的话中,我们不难看出,大公司的员工羡慕小公司,可以学到很多东西,好多程序员还是很有钻研精神的,学习可以说是他们的一个乐趣和展示自我价值,我身边的一个同事就是典型的如果得不到成长和学习新的东西,就会不爽。小公司的员工又会抱怨太累太杂,什么都是一个人做,虽然做了好多东西,但很羡慕大公司的正规化。
其实想解决这些问题不难,先调整好心态,只有一个好的心态,你才可能健康成长。在小公司成长:好多小公司都是3,4个人一个小组,工作量大,加班,杂,什么都要做,就连测试都还要亲历亲为,怎么看怎么觉得这不是人待的地方,被严重剥削的廉价劳动力。
怎么说的小公司一无是处呢,其实也不是的,我们要从当中看到优势,我们才有可能进步,逆向思维下,工作量大,杂是坏事吗,在我认为,对于一个想真正成长,想将来进入大公司,或者有一番作为的人,这正是小公司的优势和有点。小公司的员工有一个普遍性,就是学历技术都很普通,无法很好的进入到大公司,也只能在小公司游走,但心里也有抱负和理想,那么我们就要好好利用小公司的工作量大和杂,在这当中锻炼自己,提高自己的技术和基本功。
杂,在我认为这是一个很好的东西,就是因为人少,所以我们在小公司得什么都做,这样有个优势,就是让你可以接触到很广泛的东西,有可能连架构设计都要自己去处理,BT点的说不定图都要自己去PS,再来看看做的这些事情,如果把它拼接起来是多么大的一张蓝图啊,你要做的就是在工作不断努力去学习,花大量的时间去看书,去了解蓝图中的每一块是怎么去衔接有什么关联,当你把这都弄熟了这后,我想没有哪一家大公司是不会不要你的,应为你已经具备了超强的能力。在大公司学习:大公司都已经形成了很好的规模,人尽其责,基本上每个人只用负责一块内容,这将会导致成长很慢,学不到东西,虽然可以把一块做的很精,但有好多东西没有什么深度,如果长期维护将会导致你停止进步。
那么如何去学习呢?学习还是得靠自己的努力。在大公司学习有一个好处就是,有现成的架构,有架构师来维护,有优秀的高级开发,可以写出漂亮的优秀的代码,这些人不都是很好的学习对象吗?有人会说,不可能和他们说架构来给我上上课讲讲,高级开发来教我怎么学好这段代码。
其实不用去找他们,现成的东西就在你的眼前。什么?你没看见,那我告诉你,就是你的开发工具。
啊,你这不是忽悠我吗。那么我问你,你的开发工具上是不是有你们公司项目的源代码?源代码就是最好的学习资料,你可以直接去看你们的源代码,看看你们的架构,了解和学习这个架构是怎么搭建,看看高级开发写的代码,你不用去走万里路就可以把这些先进和优秀的东西都装进你的知识库中。
站在巨人的肩膀上去前进。总结:有这么一句老话,让我们来听听“读万卷书,不如行万里路,行万里路不如名师指路。”
还有变化版“读万卷书,不如行万里路,行万里路不如跟随成功人的脚步。”其实我们在小公司就如行万里路,我们只有多做多学在可以迈出去。
在大公司就我们就要跟随成功人的脚步,就是你们公司的架构师和高级开发,去了解他们。最最重要的一点:学习还是要靠自己努力,只要你努力,就会成功,就算不成功你也会成仁。
5.程序员如何在小公司成长然后到大公司学习
在小公司成长:好多小公司都是3,4个人一个小组,工作量大,加班,杂,什么都要做,就连测试都还要亲历亲为,怎么看怎么觉得这不是人待的地方,被严重剥削的廉价劳动力。
怎么说的小公司一无是处呢,其实也不是的,我们要从当中看到优势,我们才有可能进步,逆向思维下,工作量大,杂是坏事吗,在我认为,对于一个想真正成长,想将来进入大公司,或者有一番作为的人,这正是小公司的优势和有点。小公司的员工有一个普遍性,就是学历技术都很普通,无法很好的进入到大公司,也只能在小公司游走,但心里也有抱负和理想,那么我们就要好好利用小公司的工作量大和杂,在这当中锻炼自己,提高自己的技术和基本功。
杂,在我认为这是一个很好的东西,就是因为人少,所以我们在小公司得什么都做,这样有个优势,就是让你可以接触到很广泛的东西,有可能连架构设计都要自己去处理,BT点的说不定图都要自己去PS,再来看看做的这些事情,如果把它拼接起来是多么大的一张蓝图啊,你要做的就是在工作不断努力去学习,花大量的时间去看书,去了解蓝图中的每一块是怎么去衔接有什么关联,当你把这都弄熟了这后,我想没有哪一家大公司是不会不要你的,应为你已经具备了超强的能力。在大公司学习:大公司都已经形成了很好的规模,人尽其责,基本上每个人只用负责一块内容,这将会导致成长很慢,学不到东西,虽然可以把一块做的很精,但有好多东西没有什么深度,如果长期维护将会导致你停止进步。
那么如何去学习呢?学习还是得靠自己的努力。在大公司学习有一个好处就是,有现成的架构,有架构师来维护,有优秀的高级开发,可以写出漂亮的优秀的代码,这些人不都是很好的学习对象吗?有人会说,不可能和他们说架构来给我上上课讲讲,高级开发来教我怎么学好这段代码。
其实不用去找他们,现成的东西就在你的眼前。什么?你没看见,那我告诉你,就是你的开发工具。
啊,你这不是忽悠我吗。那么我问你,你的开发工具上是不是有你们公司项目的源代码?源代码就是最好的学习资料,你可以直接去看你们的源代码,看看你们的架构,了解和学习这个架构是怎么搭建,看看高级开发写的代码,你不用去走万里路就可以把这些先进和优秀的东西都装进你的知识库中。
站在巨人的肩膀上去前进。总结:有这么一句老话,让我们来听听“读万卷书,不如行万里路,行万里路不如名师指路。”
还有变化版“读万卷书,不如行万里路,行万里路不如跟随成功人的脚步。”其实我们在小公司就如行万里路,我们只有多做多学在可以迈出去。
在大公司就我们就要跟随成功人的脚步,就是你们公司的架构师和高级开发,去了解他们。最最重要的一点:学习还是要靠自己努力,只要你努力,就会成功,就算不成功你也会成仁。