自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员的修养

沉溺幻想无法自拔。

  • 博客(66)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 Excel文件的简单读写操作

Excel文件的简单读写操作/** * 解析Excel文件 * * @author yuwb * @date 19-3-5 下午3:27 */public class ParseExcel { /** * 读取xlsx格式的Excel文件 * * @param filePath 文件路径 */ public void readE...

2019-03-19 10:31:19 400

原创 利用Stream API进行文件处理

要求如下: 将文件中的地区信息提取出来,构造成District对象,其中城市为City对象,City对象中包含其所辖的地区集合。文件内容如下:地区 区号 邮编广州市 020 510000荔湾区 020 510000越秀区 020 510000海珠区 020 510000天河区 020 510000白云区 020 510000黄埔区 020 510700番禺区 ...

2018-09-02 11:10:25 564

原创 Linux下搭建Android开发环境

Linux下搭建Android开发环境Android Studio安装与配置 本篇文章将介绍如何在Deepin Linux下简单搭建Android开发环境。为了方便起见,Android Studio将直接从Deepin应用商店下载,且默认已经安装好JDK。准备工具Deepin Linux 15.5Android Studio 安装步骤打开应用商店并查找安装An...

2018-03-29 10:34:24 4220 2

原创 建造者模式

设计模式建造者模式 定义:将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。UML类图 在建造者模式中,有4个角色:Product产品类,Builder抽象建造者,ConcreteBuilder具体建造者,Director导演类。产品类通常实现了模板方法模式;抽象建造者规范产品的组建,一般是由子类实现;具体建造者实现抽象类定义的所有方法,并返...

2018-03-01 10:34:23 246

原创 模板方法模式

设计模式模板方法模式 定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。UML类图 模板方法模式仅仅使用了继承机制,其中AbstractClass叫做抽象模板,它的方法分为两类:基本方法和模板方法。基本方法由子类实现,模板方法实现对基本方法的调度,完成固定的逻辑。通用代码抽象模板类:...

2018-02-28 10:59:37 266

原创 抽象工厂模式

设计模式抽象工厂模式 定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。抽象工厂模式是工厂方法模式的升级版本,在有多个业务品种、业务分类时十分有用。UML类图 通用代码抽象产品类:public abstract class AbstractProductA{ //每个产品共有的方法 public void s...

2018-02-27 21:58:20 232

原创 使用chrome添加网页到桌面

使用Chrome将网页添加到桌面操作环境:Deepin 15.5Chrome步骤打开需要创建快捷方式的网站 点击右上“自定义及控制”按钮选择“更多工具”/“添加到桌面”示意图效果图...

2018-02-13 15:25:06 13814

原创 工厂方法模式

工厂方法模式的定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟至其子类。工厂方法模式的通用类图如下:抽象产品类Product负责定义产品的共性,实现对事物最抽象的定义:Creator为抽象创建类,也就是抽象工厂,具体如何创建产品类是由具体的实现工厂ConcreteCreator完成的。让我们来看一个比较实用的通用源码:抽象产品类:/** * 抽象产品类

2017-11-07 15:48:31 262

原创 单例模式

单例模式(Singleton Pattern)的定义: 确保某个类只有一个实例,而且自行实例化并向整个系统提供整个实例。通用类图如下:Singleton类成为单例类,通过使用private的构造函数确保在应用中只产生一个实例,并且是自行实例化的。其通用代码如下:package 单例模式;/** * 单例模式的通用代码 */public class Singleton { priv

2017-10-27 14:44:34 235

原创 Java中的锁(1)

Java中的锁本篇博客参考《Java并发编程的艺术》,主要介绍Java并发包中与锁相关的API和组件,以及其简要的使用方式和实现细节。概要如下:Lock接口队列同步器重入锁读写锁LockSupport工具Condition接口Lock接口 与synchronized相比,Lock在使用时需要显式进行加锁和释放锁,少了隐式获取与释放的便捷性,但多出了锁获取与

2017-09-17 12:54:29 241

原创 简单的基于Struts2的用户注册模块的实现

利用Struts2实现简单的用户注册功能,并具备输入字符的校验功能。以下index.jsp为首页,显示注册表单:<%-- 首页,显示注册表单--%><%@ taglib prefix="s" uri="/struts-tags" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head

2017-05-15 22:45:29 1914

转载 编译原理——语法分析程序的设计

实验目的通过设计、编制、调试一个典型的语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,进一步掌握常用的语法分析中预测分析方法。 实验内容设计一个文法的预测分析程序,判断特定表达式的正确性。实验要求1、给出文法如下: G[E]: E->T|E+T; T->F|T*F; F->i|(E);2、根据该文法构造相应的LL(1)文法及LL(1)分析表,并为该文法设计预测分

2017-05-13 18:49:18 7519 3

原创 Linux程序设计——共享内存

共享内存 共享内存允许两个或多个进程共享一给定的存储区,因为数据不需要来回复制,所以是最快的一种进程间通信机制。共享内存原理:共享内存可以通过mmap()系统调用(特殊情况下还可以采用匿名映射)机制实现,也可以通过系统V共享内存机制实现。应用接口和原理很简单,内部机制复杂。为了实现更安全通信,往往还与信号灯等同步机制共同使用。常用函数 :系统V共享内存 系统V共享内存指的是把所有共享数据放

2017-05-09 11:48:36 2970 1

原创 Servlet监听器和过滤器基本使用

实验一 使用listener或filter实现session的有效性的判断(例如用户名为null或session失效);修改监听器的代码,实现同一session下的用户名发生改变时,监听器可以对其进行反应,并把新的用户名放入相对应的数组列表中。通过服务器端对客户端的强制刷新达到在线用户列表的在客户端的实时更新。这里,我们使用Servlet的监听器来实现该功能。以下是JSP页面代码,实现一个表单

2017-05-06 23:34:59 3244 6

原创 深入PHP面向对象、模式与实践——企业模式(3)

表现层前端控制器 前端控制器模式用一个中心来处理所有到来的请求,最后调用视图来将结果呈现给用户。实现前端控制器模式定义了一个中心入口,每个请求都要从这个入口进入系统。前端控制器处理请求并选择要执行的操作。<?phpnamespace woo\controller;//...class Controller{ private $applicationHelper; privat

2017-05-06 17:46:09 334

原创 深入PHP面向对象、模式与实践——企业模式(2)

企业架构之外的基础模式注册表 注册表的作用是提供系统级别的对象访问注册表提供静态方法(或单例对象的实例化方法)来让其他对象访问其中的数据(通常是对象)。整个系统中的每个对象都可以访问这些数据对象。实现下面是代码:<?phpclass Registry{ private static $instance; private $request; private functio

2017-05-06 16:51:47 659

原创 编译原理——词法分析(1)

词法分析对词法分析器的要求词法分析器的功能和输出形式功能: 输入源程序,输出单词符号单词符号:关键字:保留字,基本字(全体视为一种或一字一种) 标识符:变量名,数组名(统归为一种) 常数: 整形,实型(按类型分种(整,实,布尔…)) 运算符:+,-,*,/,…(一符一种或具有一定共性的运算符视为一种) 界符:;,,,(,),…(一符一种) 输出: 二元式形式(单词种别,单词符

2017-05-03 19:16:43 1026

原创 编译原理(2)

高级语言及其语法描述程序语言的定义程序语言:语法语义语法语言程序: 一定字符集上的字符串。语法: 一组规则,用它可以形成和产生一个合式(形式上正确的)程序。词法规则: 单词符号形成规则(常数、标志符、基本字、算符、界符)语法规则: 语法单位形成规则(表达式、语句、分程序、函数、过程等)如字符串:0.5*x+c组成表达式,其中,常数 0.5,标识符 x,c,算符 *

2017-05-03 14:44:59 617

原创 编译原理(1)

引论程序设计语言及编译程序设计语言机器语言汇编语言高级语言编译程序编译程序是现代计算机系统的基本组成部分.从功能上看,一个编译程序就是一个语言翻译程序,它把一种语言(称作源语言)书写的程序翻译成另一种语言(称作目标语言)的等价的程序. 编译程序:A语言—–>B语言的程序(两者逻辑上等价)编译程序:高级语言 ——->低级语言解释程序:边解释边执行源程序执行途径解释程序(Interpreter)

2017-05-01 21:33:22 828

原创 Linux程序设计(1)

Linux 常用命令shell基础每个Linux系统发行版本中都包含了多种shell。目前使用的最为广泛的shell包括bash、TC shell和Korn shell。通常默认的登录shell是bash。系统管理员可以为你指定使用哪种shell作为登录shell,也可以通过命令来改变自己的默认登录shell。常用shell程序 shell的环境变量shell环境变量具有特殊的意义,它们的名字一

2017-05-01 19:50:29 585

原创 深入PHP面向对象、模式与实践——企业模式

架构概述模式注册表:用于使数据对进程中所有的类都有效。前端控制器:该模式可用于尽可能灵活地管理各种不同的命令和视图。应用控制器:创建一个类来管理视图逻辑和命令选择。模板视图 创建模板来处理和显示用户界面,在显示标记中加入动态内容。页面控制器 页面控制器满足和前端控制器相同的需求,但是较为轻量级,灵活性也小一些事务脚本 如果想快速完成某个如任务,可以使用本模式领域模型

2017-05-01 16:39:38 299

原创 JSP页面加载即执行后台方法

做实验的时候,想从页面一加载就执行后台的方法,取出数据库中的信息到首页来,这时候该怎么办呢?直接在JSP中连接数据库不太美观,本来想用Ajax来访问后台的action(我这里用的是Struts2),最后还是使用了一个小技巧:设置一个隐藏的表单,然后用js在页面一加载就提交。<form action="search.action" method="post" id="index"></form><s

2017-04-21 14:12:49 15384 3

原创 深入PHP面向对象、模式与实践——执行及描述任务(5)

命令模式创建可被保存和传送的命令对象。命令模式有助于系统更好进行组织,并有助于扩展。命令对象的接口极为简单,因为他只要求实现一个方法execute()。命令模式有三部分组成:实例化命令对象的客户端(client)、部署命令对象的调用者(invoker)和接受命令对象的接收者(receiver)。让我们创建一个具体的Command类:abstract class Command{ abstr

2017-04-13 15:35:09 373

原创 深入PHP面向对象、模式与实践——执行及描述任务(3)

观察者模式创建依赖关系,当系统事件发生时通知观察者对象。正交性是我们之前讨论过的一个话题。程序员的目标应该是创建在改动和转移时对其他组件影响最小的组件。当然,正交性通常只是个梦想,然而你可以使用不同的策略来使引用尽量减少。下面假设有个负责处理用户登录的类:class Login{ const LOGIN_USER_UNKNOW = 1; const LONGIN_

2017-04-12 19:05:54 298

原创 深入PHP面向对象、模式与实践——执行及描述任务(2)

策略模式在系统中定义算法并以它们自己的类型封装。只要发现自己正不断地在继承树的各个分支中重复同一个算法(无论是通过子类还是通过重复条件语句),请将这些算法抽象成独立的类型。当类必须支持同一个接口的多种实现时,最好的办法常常是提取出这些实现,并将它们放置在自己的类型中,而不是通过继承原有的类去支持这些实现。如下结构: abstract class Question{ protected $

2017-04-07 09:28:17 193

原创 深入PHP面向对象、模式与实践——执行及描述任务(1)

解释器模式构造一个可以用于创建脚本化应用的迷你语言解释器。 abstract class Expression{ private static $keycount = 0; private $key; abstract function interpret(InterpreterContext $context); function getKey() {

2017-04-06 21:36:17 241

原创 深入PHP面向对象、模式与实践——让面向对象编程更加灵活的模式(3)

外观模式外观模式可以为复杂系统创建一个简单、清晰的接口。下面是一些故意让人混淆的不着边际的代码:function getProductFileLines($file){ return file($file);}function getProductObjectFromId($id, $productname){ //一些数据库查询 return new Product(

2017-04-06 17:04:45 234

原创 深入PHP面向对象、模式与实践——让面向对象编程更加灵活的模式(2)

装饰模式组合模式帮助我们聚合组件,而装饰模式则使用类似结构来帮助我们改变具体组件的功能。装饰模式使用组合和委托而不是只使用继承来解决功能变化的问题。实际上,Decorator类会持有另外一个类的实例。Decorator对象会实现与被调用对象的方法相对应的类方法。用这种办法可以在运行时创建一系列的Decorator对象。abstract class Tile{ abstra

2017-04-06 16:37:32 212

原创 深入PHP面向对象、模式与实践——组合模式

组合模式将一组对象组合为可像单个对象一样被使用的结构。组合模式定义了一个单根继承体系,使具有截然不同职责的集合可以并肩工作。组合模式中的类必须支持一个共同的操作集,以将其作为它们首要职责。类同时必须拥有添加和删除子对象的方法。abstract class Unit{ abstract function addUnit(Unit $unit); abstract function re

2017-04-05 19:42:17 298

原创 深入PHP面向对象、模式与实践——生成对象(3)

原型模式平行继承层次的出现是工厂方法模式带来的一个问题。一个避免这种依赖的方法是使用PHP的clone关键词复制已存在的具体产品。然后,具体产品类本身便成为它们自己生成的基础。这便是原型模式。使用该模式我们可以用组合代替继承。这样的转变促使了代码运行时的灵活性,并减少了必须创建的类。以下展示一个抽象工厂和工厂方法模式的类图: 你可以看到,我们依赖继承来组合工厂生成terrain家族产品,但这需要一

2017-04-05 13:05:19 331

原创 深入PHP面向对象、模式与实践——生成对象(2)

工厂方法模式面向对象设计强调“抽象类高于实现”。也就是说,我们要尽量一般化而不是特殊化。工厂方法模式解决了当代码关注于抽象类型时如何创建对象实例的问题。答案便是用特定的类来处理。工厂方法模式把创建者类与要生产的产品类分离开来。创建者是一个工厂类,其中定义了用于生成产品对象的类方法。如果没有提供默认实现,那么就由创建者类的子类来执行实例化。一般情况下,就是创建者类的每个子类实例化一个相应产品子类。ab

2017-04-04 18:38:43 203

原创 深入PHP面向对象、模式与实践——生成对象(1)

单例模式生成对象的问题和解决方案abstract class Employee{ protected $name; public function __construct($name) { $this->name = $name; } abstract function fire();}class Minion extends Employ

2017-04-01 14:51:00 395

原创 深入PHP面向对象、模式与实践——模式原则(2)

解耦如果类之间有非常强的依赖性,那么这样的系统就很难维护,因为系统里的一个改动会引起一连串的相关改动。问题重用性是面向对象设计的主要目的,而紧耦合便是它的敌人。当我们看到系统中一个组件的改变迫使系统其他许多地方也发生改变的时候,就可以诊断为紧耦合了。降低耦合在你自己的项目中,你会看到很多这种需要分离组件的情况。例如,课程系统应包含注册组件,从而向系统添加新课程。添加新课程后,应该通知管理员,

2017-03-31 14:22:53 271

原创 深入PHP面向对象、模式与实践——模式原则(1)

组合模式的启示通过以灵活的方式来组合对象,组件能在运行时被定义。《设计模式》将此提炼出一个原则:组合优于继承。组合与继承继承是应对变化的环境及上下文设计的有效方式,然而它会限制灵活性,尤其是当类承担了过多的责任的时候。问题 以下图为例: 利用这种继承模式,我们可以在课程的实现之间切换。可是如果引入一组新的特殊性,又会怎么样?比如我们需要处理演讲和研讨会。使用继承如下: 在该体系中,我们

2017-03-30 19:07:41 292

原创 深入PHP面向对象、模式与实践——设计模式

什么是设计模式设计模式便是分析过的问题和问题解决方案所阐释的优秀实践。如何处理一个请求?如何将请求数据转换成系统对应的指令?如何获得数据?如何显示结果?等等。随着时间流逝和经验积累,我们会或优雅或困难地回答问题,并总结出一些非正式的、可在项目中重复使用的解决方案,而这些解决方案便是设计模式。

2017-03-30 16:16:10 702

原创 深入PHP面向对象、模式与实践——对象与设计

设计基础代码设计的定义对“代码设计”的理解涉及系统的定义:确定系统的需求、作用域及目标。从底层上看,设计是定义系统组成并组织各组件间关系的过程。本章从另一个角度考虑:类和对象的定义和配置。面向对象的系统由一系列的类组成。决定系统中这些类的角色是非常重要的,而类由方法组成,所以在定义类时,必须决定哪些方法应该放在一起。另外,类与类之间常常通过继承关系联系起来以便遵循公用的接口。因此,这些接口或类型

2017-03-29 16:13:06 1112

原创 深入PHP面向对象、模式与实践——对象工具(3)

反射API反射API由一系列可以分析属性、方法和类的内置类组成。入门反射API不仅仅被用于检查类。例如,ReflectionFunction类提供了关于给定函数的信息,ReflectionExtension类可以查看编译到PHP语言中的扩展。利用反射API的这些类,可以在运行时访问对象、函数和脚本中的扩展的信息。反射的另一用途是根据命名规则创建一个调用模板类中方法的框架。开始

2017-03-27 21:44:51 260

原创 深入PHP面向对象、模式与实践——对象工具(2)

类函数和对象函数PHP允许使用字符串来动态地引用类://Task.phpnamespace tasks;class Task{ function doSpeak() { print "hello\n"; }}//TaskRunner.php$classname = "Task";require_once("tasks/{$classname}.p

2017-03-26 19:26:01 231

原创 深入PHP面向对象、模式与实践——对象工具(1)

PHP和包包是一组相关类的集合,这些类以某种方式组合在一起。包可以把系统的一部分和其他部分分隔开了。PHP还不支持包的概念,但是支持命名空间。命名空间命名空间就是一个容器,你可以将类、函数和变量放在其中。在命名空间中,你可以无条件地访问这些项。在命名空间之外,必须导入或引用命名空间,才能访问它所包含的项。namespace my;require_once "useful/Outputter3.

2017-03-25 18:42:07 461

原创 深入PHP面向对象、模式与实践——高级特性(6)

定义对象的字符串值PHP5中引入的另一个受java启发的功能是__toString()方法。通过实现自己的__toString()方法,你可以控制输出字符串的格式。__toString()方法应当返回一个字符串值。当把对象传递给print或echo时,会自动调用这个方法,并用方法的返回值来替代默认的输出内容。<?phpclass Person{ public function getNam

2017-03-23 17:25:04 256

JavaFX编写学生管理系统(利用scene builder)

本代码仅实现了学生管理系统的雏形,很多地方并不完善,仅供学习参考交流。

2017-03-01

利用javaFX写万年历

记事万年历。 设计一个记事万年历(如图3所示),可显示当前月份的日历、当前时间和记事本窗口。 (1)日历可以根据窗口提供的文本框中输入的年份和月份显示不同年月的日历信息; (2)时钟是动态的,即根据系统时间实时更新显示信息。 (3)点击“保存日志”按钮将所写日志以当前日志编辑区的日期为文件名(如20090411.txt)保存至磁盘中。 (4)点击“读取日志”按钮将从磁盘中找到指定日期的日志文件显示在日志编辑区中。 (5)点击“删除日志”按钮将日志编辑区中的字符内容清空。

2016-12-19

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除