学习

Java函数式编程

╄→尐↘猪︶ㄣ 提交于 2021-01-24 02:45:16
很多开发人员都存在这种误解,认为使用lambda表达式会导致代码冗余,降低代码质量。恰恰相反,就算代码变得再复杂,我们也不会为了代码的简洁性而在代码质量上做任何妥协,下面我们就会看到。 在前面一个例子中我们已经可以重用lambda表达式了;然而,如果再匹配另外一个字母,代码冗余的问题很快又卷土重来了。我们先来进一步分析下这个问题,然后再用词法作用域和闭包来把它解决掉。 网址 http://club.news.sohu.com/help/thread/2793yf6o3l4 http://club.health.sohu.com/zz0094/thread/2794714m1yf http://club.health.sohu.com/zz0094/thread/27948oqftjs http://club.health.sohu.com/zz0094/thread/2794apxv16v http://club.health.sohu.com/zz0094/thread/2794cx7cfro http://club.health.sohu.com/zz0094/thread/2794i3zebri http://club.health.sohu.com/zz0094/thread/2794s5azgv8 http://club.health.sohu.com/zz0094

(转载)Bruce Eckel:编程生涯

放肆的年华 提交于 2020-11-23 09:02:43
(转载)Bruce Eckel:编程生涯 作者 Bruce Eckel 是编程界的大牛,著有大名鼎鼎的《Thinking in C++》和《Thinking in Java》。 本文是他对程序员(尤其是新手)的忠告。 大家总是问一个错误的问题:“我应该学习C++还是Java?”在本文中,我将告诉大伙儿:对于选择编程生涯真正需要关注的是哪些问题。 请注意,这篇文章的目标读者并不是那些已经做出自己选择的人。(对于这些人而言)你会继续自己的编程生涯,而不管别人会怎么说。因为它已经渗透到你的血液中,你已经无法摆脱。你已经知道答案:C++、Java、Shell脚本、Python、还有其它一大堆的语言和技术,你都理所当然地会去学习。甚至有可能你才仅仅14岁,就已经知道好几种不同的语言。 问我这样的问题的人可能来自其他行业,或者来自诸如Web开发之类的领域。他们知道HTML是一种类编程语言,而且想尝试构建某些更大型的应用。但我特别希望,当你在问这个问题时,你已经意识到了想要在计算机领域取得成功,你需要掌握自学能力,而且永不停息。 在这个领域做得越多,我越觉得软件开发比任何行业都更接近于写作。 我们从来不知道是什么造就了优秀的作者,我们只知道什么时候我们会喜欢某个人的文字。编程不是一种工程,仅需要把东西从入口倒进去,然后再转动手柄。把软件开发看成确定性的,是一个诱人的想法。因为这个想法

基于NIO的消息路由的实现(五) 服务端连接管理

限于喜欢 提交于 2020-11-11 10:34:43
一、对客户端连接(也就是SocketChannel)的管理 客户端与服务端建立连接后,服务端来维护其连接,首先定义了一个GVConnection类,用来定义连接; 此类包括四个成员:token、userId、channel、lastAccessTime;如下: public class GVConnection { private String token; private String userId; private SocketChannel channel; private int lastAccessTime; public GVConnection(String token,String userId, SocketChannel channel, int lastAccessTime) { this.token = token; this.userId = userId; this.channel = channel; this.lastAccessTime = lastAccessTime; } public void setLastAccessTime(int lastAccessTime){ this.lastAccessTime = lastAccessTime; } public SocketChannel getChannel() { return

国外程序员经常用的二十八个学习网站

隐身守侯 提交于 2020-04-27 18:39:24
  无论你是想转行,成为一名全职程序员,或者想尝试打造一个网站或应用程序,或者只是希望提高了你的技能,学习代码无疑是每个程序员都绕不开的一关。尽管作为一个程序员可能不适合每一个人,但是还是有很多网站适合来提高自己的水平。   在深入了解下面我们的学习写代码网站列表中,我们想分享一个自学成才的产品设计师的一些建议。一位前创业者说自学成为程序员是很难的一件事情,无论是设计,编程。    “鼓足勇气,最重要的障碍就是要克服你的恐惧”   一旦你达到的基本写代码的能力,起步往往是最好的,试图给自己定制任务,并建立通过大量的试验和错误来丰富自己的经验。因此,考虑到这一点中肯的意见,如何让我们继续更好的学习开发,下面一些网站一定是你必备的:    1,MIT Open Courseware   麻省理工学院的开放课件中的各种问题,包括电气工程和计算机科学2100提供的课程。免费的资源,包括在线课本,考试,多媒体内容,任务和项目的例子 - 所有从过去十年左右的实际MIT课程。    2,Coursera   证书课程一经推出,已经创下100万学生大关,并已延伸到包括0ver来自33所高校200课程。如果你还没有听说过证书课程的,它是斯坦福大学学习的想法出身的巨型启动,基本上你可以通过在世界上最好的学校之一真正的教授讲授网上一个完整的大学课程,而且这些是免费的。    3,Udacity  

怎么一步步编写简单的PHP的Framework(十六)

霸气de小男生 提交于 2020-04-24 14:14:08
今天回来的比较晚,本来准备用UML画一下模型这一块儿的关系,但是没有时间搞了,只有用PS搞了一个简单的事例。 我把模型分成了几块儿,A,B,C,D,E,F,这几块儿分别代表了什么呢? 首先A,这个Base代表的就是整个框架的基类,所有的模型文件都必须继承自这个基类; 由于B的内容需要依赖D,所以先说一下D,D首先有一个ConnectionManager,它负责管理数据库的连接和关闭还有数据库驱动的选择,这个命名自己感觉不太好,先就将就吧,既然它负责数据库的连接和关闭,肯定它就有以下方法: <?php public class ConnectionManager { public static function getConnection(){} public static function releaseConnection() {} } 由于数据库的连接对于所有模型来说都是共享的,所以我们把ConnnectionManager设置为单例。 D中右边有PDO,MYSQL_*,这代表什么意思呢,实际上就是代表各种驱动,有可能你使用的是比较先进的PDO,也有可能你使用的是比较老的MYSQL_*这种,也有可能你使用的是mysqli,ADO等等,正是由于PHP数据库这一块儿的混乱情况,我们需要在框架中定义一个契约,所有的驱动类按照这个契约编写实现,这样,不管驱动类的底层实现怎样

JDBC-MYSQL源码学习1

假如想象 提交于 2020-04-17 03:47:53
【推荐阅读】微服务还能火多久?>>> 总所周知,JAVA给连接不同数据库定义了一个JDBC标准接口,由各个数据库厂商按此标准自己实现,供开发人员调用,对此一直以来比较好奇,之前由于能 力有限没有勇气去看源代码,不过最终还是“好奇害死猫”。对MYSQL的JDBC源码在初步缓慢的学习,由于知识和认知度有限,有错误请大家多多支出,并 一起讨论,谢谢。 今天从最初加载Mysql的Driver类开始,这句话【 Class.forName("com.mysql.jdbc.Driver"); 】大家应该不会陌生吧,具体这句话做了什么呢?呵呵,看下 Driver的源代码就可以知道了。 com.mysql.jdbc.Driver 的源码解释如下( 一部分): /** * When a Driver class is loaded, it should create an instance of itself and * register it with the DriverManager. This means that a user can load and * register a driver by doing Class.forName("foo.bah.Driver") **/ com.mysql.jdbc.Driver 基础了 com.mysql.jdbc

怎么一步步编写简单的PHP的Framework(七)

╄→гoц情女王★ 提交于 2020-04-15 19:37:50
【推荐阅读】微服务还能火多久?>>> 不好意思,最近几天事情有点多,所以更新比较慢。 之前我们在入口文件就直接调用了Route::run(),这样做有不有什么问题呢? 答案是有!! 有时候在进行路由之前和之后需要进行一些额外的处理,如果按照之前在入口文件直接调用Route::run()的话,那么这些处理过程只能写在入口文件中,但是入口文件本不应该做这样的事情,那么我们该怎么样来解决这个问题呢? 我们引入一个前端控制器的概念,它相当于一个总控,所有外部的请求都在它的控制范围内,那么这些额外的处理是不是就可以放在这个控制器中了呢!! 好,我们现在先修改一下入口文件: <?php defined('APP_PATH') || define('APP_PATH',dirname(__FILE__) . '/..'); defined('FRAMEWORK_PATH') || define('FRAMEWORK_PATH',APP_PATH . '/Library/Test'); defined('MODULES_PATH') || define('MODULES_PATH',APP_PATH . '/UserApps/Modules'); defined('CONFIGS_PATH') || define('CONFIGS_PATH',APP_PATH . '/UserApps

怎么一步步编写简单的PHP的Framework(二十)

最后都变了- 提交于 2020-03-15 21:06:12
上一次我把SqlParser这个类的主要结构讲了一下,这次我就将这个类的函数编写了。 按照上节课的内容,主要的函数有下面几个: private function _where($where){} private function _field($field) {} private function _distinct($distinct) {} private function _table($table) {} private function _order($order) {} private function _group($group) {} 首先我们说一下distinct函数,这个函数最终会返回字符串DISTINCT或者空串,我们可以想一下,这个函数传递的形参实际上是非常简单的,它只需要告诉框架我是否需要DISTINCT即可,所以在框架中只需做一个简单判定就好。 现假设用户传递的参数为true或字符串'distinct'的时候代表用户想使用'DISTINCT',那么这个函数的实现就变成了这样: private function _distinct($distinct) { return ((true === $distinct) || ('distinct' === $distinct)) ? 'DISTANCT' : ''; } 这里直接使用'distinct' ===

Django学习笔记(8)--- Signals和GenericForeignKey的使用

隐身守侯 提交于 2020-02-29 22:21:34
Signals 顾名思义,就是信号的意思。 Django的signals可以用来干什么呢?比如,论坛中别人给你发了一条消息,自动产生一个消息对象。 我们先来自定义一个信号 Message应用中的models.py from django.db import models from django.contrib.auth.models import User from django.dispatch import Signal notice_signal = Signal(providing_args=['reciver']) #自定义信号 class Message(models.Model): sender = models.ForeignKey(User) content = models.CharField(max_length=50) def newMessage(self,reciver): notice_signel.send(sender=self.__class__,reciver=reciver) #发出信号 Notice应用中的models.py from django.db import models from django.contrib.auth.modesl import User from Message.models import notice

怎么一步步编写简单的PHP的Framework(三)

前提是你 提交于 2019-12-10 16:25:12
睡不着,继续写一篇吧!! 按照上一次我讲的内容,一个基本的MVC构架是已经搭建起来了的,但是本身还存在很多问题,如:模型这一块儿每次连接DB,关闭DB的代码冗余,视图这一块儿还是PHP代码,每个文件要使用很多include代码等等。 要编写一个框架,那么首先就要规定一个标准的目录结构,我们暂时把这个目录结构定死,不允许用户修改,这样可以减少代码量,方便大家看的更明白。 由于之前编写了Toper,所以我准备沿用Toper的目录结构来做演示: Library(框架存放目录) Test(假设这个框架名就叫test) UserApps (用户的APP存放目录) Configs(配置文件存放目录) Modules(模块存放目录) Controllers (所有控制器存放目录) Models (模型存放目录) Views (视图存放目录) Helpers (辅助文件目录) Plugins(插件存放目录,暂时用不上) Public (网站根目录) index.php (最重要的入口文件) 这个地方有点需要解释一下,Public目录才是网站的根目录,Library目录和UserApps目录是存放在网站根目录之外的,这样用户通过浏览器访问时就不能直接访问这个PHP文件,这样可以提高网站的安全性。   之前我们把路由的功能全部放在入口文件这一块儿,实际上这是不合适的,入口文件不应该做这些逻辑的处理