写代码

不要写很酷但同事看不懂的Java代码

南楼画角 提交于 2020-03-07 10:22:29
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。为了提高 Java 编程的技艺,我最近在 GitHub 上学习一些高手编写的代码。下面这一行代码(出自大牛之手)据说可以征服你的朋友,让他们觉得你写的代码很 6,来欣赏一下吧。 IntStream.range(1, 5).boxed().map(i -> { System.out.print("Happy Birthday "); if (i == 3) return "dear NAME"; else return "to You"; }).forEach(System.out::println); 我虽然拥有 10 年的 Java 编程经验,但说实话,很惭愧,这段代码就好像一块板砖拍在我脑袋上,有点懵逼。Lambda 表达式我是学过的,Stream 流我是学过的, forEach() 方法我也是学过的,但把这些知识点全部塞到一行代码中,我还是有点消化不良。 我总觉得这行代码不如换成老式的语法(Java 7 之前)来写,就像下面这样: for (int i = 1; i < 5; i++) { System.out.println("Happy Birthday " + (i == 3 ? "dear NAME" : "to you"));} 哇,beautiful code,简洁又明了!不仅我能看得懂

让写代码成为每天的习惯

被刻印的时光 ゝ 提交于 2020-03-06 15:04:30
你是否曾为业余项目没有进展而惆怅过?想要有完整两天时间(没有任何的放松机会)来编程也不现实,时间的零乱往往让人不知所措。还有一个重要的问题就是你上个星期写的代码,隔一个星期后再接着写,你还能记得多少? 为此,可汗学院计算机科学学院院长暨jQuery创始人John Resig撰文分享了自己的心得和体会。现在,让我们看看John Resig是如何做到每天都写代码的,首先他给自己定下了几条规则: 1. 每天必须写代码。可以写文档、博客或者其他的文章,但是必须要加进自己写的代码。 2. 代码必须是有用的。不要格式化、重构的代码。 3. 代码必须在午夜之前写好(为了避免不想熬夜而草率地写代码)。 4. 代码必须是开源的,且要放到Github上(这样强迫自己小心写代码,并会考虑代码重用性及怎么创建项目前期的模块)。 当然,以上这些规则是灵活的。John Resig之所以制定这么严格的规则,是想提高自己业余项目的开发效率。他已经在连续20周的时间里每天写代码,这给他带来了好的工作习惯。鉴于此,John Resig为大家分享了自己坚持每天做业余项目后的心得体会: 利用最小化的时间写好代码。 我强迫自己每天花不少于半个小时来写代码(这真不是一件容易的事,尤其还得回忆前一天写了什么),在工作日期间一般不超过一个小时,但在周末我会花多一些时间做业余项目。 让写代码成为习惯 。

写代码写了好几年,才发现自己天天都在用设计模式!

半腔热情 提交于 2020-03-06 06:43:32
原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者。 系列文章介绍 本系列文章主要围绕程序员,特别是Java或者后端程序员必须掌握的一些技术和技能,这些文章都是结合我个人的编程学习经历,总结和沉淀下来的方法论。作者目前在阿里做Java,忙里偷闲分享一些技术文章,希望能让更多人更容易地学习编程。 系列文章将会把一些技术学习方法、过程、要领与我的学习经验相结合,更加浅显易懂,并且我也会把我学习时用的资料,书籍和文章拿出来分享给大家,节省你我的时间。所谓授人以鱼也要授人以渔,是本系列文章希望达到的目标。 一个热爱分享的程序员,一个爱生活的斜杠青年。分享程序员编程学习干货和个人成长心得,期待你的关注,让我们一起进步! 本文思维导图 什么是设计模式 学习编程的朋友,想必对于设计模式这个词并不陌生,至少你一定也听说过,如果你是做Java的,那么就更加需要了解设计模式了,为什么这么说呢,因为Java作为一门面向对象语言,很多代码都可以通过设计模式得到简化、规范,提升编码效率和可读性。 按照百度百科的说法,软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 也就是说,代码可复用性是设计模式的核心要义。

用实例一步步教你写Jquery插件

你说的曾经没有我的故事 提交于 2020-03-05 20:28:41
最近Web应用程序中越来越多地用到了JQuery等Web前端技术。这些技术框架有效地改善了用户的操作体验,同时也提高了开发人员构造丰富客户 端UI的效率。JQuery本身提供了丰富的操作,但是,有时候我们需要根据我们自己的业务和系统特色(风格)构造一些我们常用的前端UI组件,而 JQuery的插件给了我们一个较好的方式来构造这些UI组件,方便我们日后反复重用这些组件。 网上也有很多关于JQuery插件的文章,我也搜了一些,但是,这些文档太过离散,没有有效地组织并充分说明JQuey插件该如何编写,并且有哪几种形式,什么情况下使用哪种形式。下面,我将说明JQuery插件常用的写法,以及这些插件的常用场景。 一、插件的几种写法 首先,在具体说明编写插件之前,我们先假定一个使用场景:有一个HTML页面(或.aspx页面),页面上放置了一个5行3列的表格,即:<table></table>标记,具体代码如下: <table id="newTable"> <tr> <td>1</td><td>1</td><td>1</td> </tr> <tr> <td>1</td><td>1</td><td>1</td> </tr> <tr> <td>1</td><td>1</td><td>1</td> </tr> <tr> <td>1</td><td>1</td><td>1</td> </tr> <tr>

从零开始写一个武侠冒险游戏-1-状态原型

雨燕双飞 提交于 2020-03-01 09:57:01
从零开始写一个武侠冒险游戏-1-状态原型 概述 真正的从零开始, 一段代码一段代码, 一个函数一个函数地从头开始构思/编写一个武侠练功游戏 环境要求: Codea + iPad 先写一个人物状态栏原型 我们这个游戏以人物的状态变化为核心, 一切都从这个核心出发, 所以最先编写的就是这个人物状态原型. 最简状态类原型 首先定义一下角色的状态栏:体力,内力,精力,智力,气,血,写个状态类把它们表现出来. 代码: -- 角色状态类 Status = class() function Status:init() -- 体力,内力,精力,智力,气,血 self.tili = 100 self.neili = 0 self.jingli = 100 self.zhili = 100 self.qi = 100 self.xue = 100 -- 申请一个 200* 300 的图片, 用来绘制状态 self.img = image(200, 300) end 为方便调试,再写一个绘制方法, 代码如下: function Status:drawUI() -- 把所有内容先绘制到 self.img 上 setContext(self.img) background(119, 121, 72, 255) fill(36, 112, 111, 255) rect(5,5,200-10,300-10)

用于包的关键字package和import

我只是一个虾纸丫 提交于 2020-02-29 17:06:37
大家在写代码的时候肯定都遇到这种情况,当类多的时候,命名就成了一个问题,有时候类名会重复,可是在一个工程下是不允许有相同的类名,那这可真是费我们脑子了,不仅要想着怎么写代码,还要想着怎么起名字,大家别着急,我们是有办法解决的 在 Java 中,我们有 package(包)的概念,为了避免命名重复,我们可以放在一个包里面,这样就不会出错了,或者我们可以将有关联的几个类放在一个包下,也便于我们使用 package:类所在的包 import : 导入包,Java 中为我们提供了许多类,我们不需要写这个类,在用的时候,将包导入,就可以使用里面的方法了 IDEA 中将类放在一个包,创建包的过程 在包下创建类 来源: CSDN 作者: - Beverly Hills ° 链接: https://blog.csdn.net/Beverly_/article/details/104574011

分析几个写Python代码犯的错误

こ雲淡風輕ζ 提交于 2020-02-28 14:22:39
原题是lc320 Java代码: public class Solution { public List<String> generateAbbreviations(String word){ List<String> ans = new ArrayList<String>(); backtrack(ans, new StringBuilder(), word, 0, 0); return ans; } // i is the current position // k is the count of consecutive abbreviated characters private void backtrack(List<String> ans, StringBuilder builder, String word, int i, int k){ int len = builder.length(); // keep the length of builder if(i == word.length()){ if (k != 0) builder.append(k); // append the last k if non zero ans.add(builder.toString()); } else { // the branch that word.charAt(i)

Python循环这样写,高效节省内存100倍!

谁都会走 提交于 2020-02-27 02:40:44
0 前言 说到处理循环,我们习惯使用for, while等,比如依次打印每个列表中的字符: lis = ['I', 'love', 'python'] for i in lis: print(i) I love python 在打印内容字节数较小时,全部载入内存后,再打印,没有问题。可是,如果现在有成千上百万条车辆行驶轨迹,叫你分析出其中每个客户的出行规律,堵车情况等,假如是在单机上处理这件事。 你可能首先要面临,也可能被你忽视,最后代码都写好后,才可能暴露出的一个问题:outofmemory, 这在实际项目中经常遇到。 这个问题提醒我们,处理数据时,如何写出高效利用内存的程序,就显得很重要。今天,我们就来探讨如何高效利用内存,节省内存同时还能把事情办好。 其实,Python已经准备好一个模块专门用来处理这件事,它就是 itertools 模块,这里面几个函数的功能其实很好理解。 我不打算笼统的介绍它们所能实现的功能,而是想分析这些功能背后的实现代码,它们如何做到高效节省内存的,Python内核的贡献者们又是如何写出一手漂亮的代码的,这很有趣,不是吗? OK,let's go. Hope you enjoy the journey! 1 拼接元素 itertools 中的chain 函数实现元素拼接,原型如下,参数*表示个数可变的参数 chain(iterables) 应用如下:

自我认识——开课博客

六眼飞鱼酱① 提交于 2020-02-25 20:52:54
我现在是一名大二的学生,在之前的一年半的大学生活中,虽然已经学习了C、C++、Java等编程语言。但是我对这些的了解仅仅停留在学科这个概念,只是为了考试而学习,并未将其作为自己的一项技能而来培养训练。所以对于这些语言的应用也不是很熟练,不了解其深层次的架构。所以当要解决编写项目是,我思路也是不清晰的,在编写代码时的结构也是乱乱的,甚至有的时候写到一半就写不下去了。如今,既然选择了软件工程这个专业,就要尽自己最大的努力去学好。 当拿到一个题目(项目)时,不要直接就上手写代码。先把思路捋好,结构画清晰,将类与类之间的关系搞明白,把这一切铺垫好后在编写代码往往更有效率。但我承认,我现在的思路格局并没有培养成。我以后会在练习中着重练习思维。 在学习过程中遇到问题的话,首先自己先上网查资料。如今网络发达,相信遇到的大部分问题,之前的先辈已经遇到过,并且总结了经验,所以我们只需要把前辈们的经验吸收过来就行了。如果自己实在没有能力解决问题,就要及时的想老师请教。之后自己慢慢思考总结。记住,提出的问题一定要有质量,有自己的思考,而不是“小白”问题。不然会滋生我们的惰性。 来源: https://www.cnblogs.com/tianwenjing123-456/p/12363525.html

转一篇Delphi下写DLL的文章

爱⌒轻易说出口 提交于 2020-02-19 17:41:15
Delphi制作DLL 一 Dll的制作一般步骤 二 参数传递 三 DLL的初始化和退出清理[如果需要初始化和退出清理] 四 全局变量的使用 五 调用静态载入 六 调用动态载入 七 在DLL建立一个TForM 八 在DLL中建立一个TMDIChildForM 九 示例: 十 Delphi制作的Dll与其他语言的混合编程中常遇问题: 十一 相关资料 一 Dll的制作一般分为以下几步: 1 在一个DLL工程里写一个过程或函数 2 写一个Exports关键字,在其下写过程的名称。不用写参数和调用后缀。 二 参数传递 1 参数类型最好与window C++的参数类型一致。不要用DELPHI的数据类型。 2 最好有返回值[即使是一个过程],来报出调用成功或失败,或状态。成功或失败的返回值最好为1[成功]或0[失败].一句话,与windows c++兼容。 3 用stdcall声明后缀。 4 最好大小写敏感。 5 无须用far调用后缀,那只是为了与windows 16位程序兼容。 三 DLL的初始化和退出清理[如果需要初始化和退出清理] 1 DLLProc[SysUtils单元的一个Pointer]是DLL的入口。在此你可用你的函数替换了它的入口。但你的函数必须符合以下要求[其实就是一个回调函数]。如下: procedure DllEnterPoint(dwReason: DWORD);far