设计模式中介者模式 设计模式中介者模式 用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 中介者模式核心: 将网状结构处理成星型结构。 将多对多处理成一对多。 2021-06-20 Software DesignPattern 行为型模式
设计模式命令模式 设计模式命令模式 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。 即将一系列的请求命令封装起来,不直接调用真正执行者的方法,这样比较好扩展。 2021-06-20 Software DesignPattern 行为型模式
设计模式策略模式 设计模式策略模式 它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。 例如:商场中的打折商品,针对不同的客户可能有不同的折扣,那这些算法该怎么定义呢?可以使用策略模式,给每个会员或者商品都指定一个特定的算法,根据不同的算法,打不同的折扣。 2021-06-20 Software DesignPattern 行为型模式
设计模式模板方法模式 设计模式模板方法模式 定义一个操作中的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的。 某些特定步骤,也就是说:假如某些操作代码基本相同,只是其中一部分会经常改变,则可以使用模板方法,将不变的部分作为一个模板,将容易变动的部分让子类来实现。 2021-06-20 Software DesignPattern 行为型模式
设计模式解释器模式 设计模式解释器模式 给定一个语言,定义它的文法一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 2021-06-20 Software DesignPattern 行为型模式
设计模式访问者模式 设计模式访问者模式 表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 2021-06-20 Software DesignPattern 行为型模式
Java 记录类 Java 记录类 使用String,Integer等类型的时候,这些类型都是不变类,一个不变类具有以下特点: 定义class时使用final,无法派生子类。 每个字段使用final,保证创建实例后无法修改任何字段。 假设我们希望定义一个Point类,有x,y两个变量,同时它是一个不变类,可以这么写: 1234567891011121314151617public final class 2021-06-20 Software Language Java JavaSE 其他核心类
SVN 权限管理 SVN 权限管理 在服务器端的版本库配置文件夹下有三个配置文件: authz passwd svnserve.conf svnserve.conf 版本库服务配置文件。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455[general] 2021-06-20 Software DevOps VCS SVN
ZooKeeper ACl ZooKeeper ACl ACL(Access Control List,访问控制表)权限可以针对节点设置相关读写等权限,保障数据安全性。 permissions 可以指定不同的权限范围及角色。 ACL 命令 getAcl 命令:获取某个节点的 acl 权限信息。 setAcl 命令:设置某个节点的 acl 权限信息。 addauth 命令:输入认证授权信息,注册时输入明文密码,加密形式保 2021-06-20 Software BackEnd Distributed ZooKeeper
设计模式组合模式 设计模式组合模式 将对象组合成树形结构以表示:部分–整体的层次结构。 组合模式使得用户对单个对象和组合对象的使用具有一致性。 基本上见到的树形结构都使用到了组合模式。 2021-06-20 Software DesignPattern 结构型模式
Protocol-Relative Links Protocol-Relative Links Protocol-Relative Links是指协议自动采用当前页面的协议,使用//代替url中的协议名。 例如//zhihu.com/path缺省协议默认使用当前协议当前页面为HTTP时,等效 http://zhihu.com/path 当前页面为HTTPS时,等效 https://zhihu.com/path 特点 能根据用户打开页面的方 2021-06-20 Network HTTP
PHP 设置响应头 PHP 设置响应头 正如我们前面所讨论的,服务器发送回来的HTTP响应包含以下信息:用于识别响应主体内容的头(header),发送响应的服务器,响应消息有多少字节和响应何时发出等等,PHP和Apache通常已经为你处理好了头信息,将文档识别为HTML和计算HTML页面的长度等等,绝大多数WEB程序不需要自己设置头,然而,如果你想让服务器返回的不是HTML,或者想设置页面的过期时间,重定向客户端浏 2021-06-20 Software Language PHP Web
PHP 函数调用 PHP 函数调用 PHP程序中的函数可以内置(或在有效的扩展中)或用户定义,不考虑它们的源代码,所有的函数都用相同的方式求值: 123$some_value = function name( [parameter,...]); 一个函数的参数因函数的不同而不同(并且后面将会看到,同个函数的参数个数也可能会变化),提供给函数的参数可以是任意合法的表达式,并且要是函数预期的特定顺序,函数的 2021-06-20 Software Language PHP 函数
PHP 输出字符串 PHP 输出字符串 有4种方法可以向浏览器发送输出内容,echo结构让你一次输出许多值,而print()只能输出一个值,printf()函数通过把值插入到模板中来建立一个格式化的字符串,print_r()函数利于调试–它用更容易读懂的方式来打印数组,对象和其他东西的内容。 echo 要把一个字符串放到PHP生成的HTML页面中,可以使用echo,echo的大部分行为看起来像是一个函数,但其实 2021-06-20 Software Language PHP 字符串
PHP 表达式与操作符 PHP 表达式与操作符 表达式 表达式(expression)是可以通过求值来产生一个值的PHP代码块,最简单的表达式是直接量和变量,直接量对自身求值,变量则获取存放在变量中的值,更复杂的表达式由简单的表达式和操作符(operator)构成。 操作符(operator)取得一些值(操作数),然后进行某种操作(例如,把它们加起来).操作符的书写和标点符号一样,例如,我们所熟知的+和-来自于数学,有 2021-06-20 Software Language PHP 语言基础
PHP PearDB PHP PearDB 示例8-1的程序创建了一个关于科幻小说书籍信息的HTML表格,它说明了如何使用PEAR DB库来连接数据库,执行语句,检查错误和查询结果到HTML,请确保在安装PHP时启用了PEAR,这在Unix/Linux和Windows下有一点不同,PEAR DB代码库是面向对象的,带有类方法(DB::connect(),DB::iserror())和对象方法($db->quer 2021-06-20 Software Language PHP 数据库
Spring 定时任务 Spring 定时任务 项目开发中经常需要执行一些定时任务,比如需要在每天凌晨的时候,分析一次前一天的日志信息。 Spring为我们提供了异步执行任务调度的方式,提供了两个接口。 TaskExecutor接口。 TaskScheduler接口。 两个注解。 @EnableScheduling @Scheduled 开启定时任务功能 在主程序上增加@EnableScheduling 2021-06-18 Software Language Java SpringFramework Spring
Spring 异步任务 Spring 异步任务 异步任务 异步处理是非常常用的,比如我们在网站上发送邮件,后台会去发送邮件,此时前台会造成响应不动,直到邮件发送完毕,响应才会成功。 @Async 在异步方法上添加@Async注解,告诉Spring这是一个异步方法。 假装正在处理数据,使用线程设置一些延时,模拟同步等待的情况。 123456789@Asyncpublic void hello(){ try 2021-06-18 Software Language Java SpringFramework Spring
PHP 序列化 PHP 序列化 序列化(serialztion,也称串行化)一个对象是指将一个对象转换成字节流的形式,这样就可以将对象保存在文件中,这对于数据的持久化很有用,例如,PHP session自动保存和恢复对象。 PHP中的序列化几乎是全自动的,除了调用serialize()和unserialize(),你几乎不需要做任何额外的工作: 12$encoded = serialize(something 2021-06-13 Software Language PHP 对象
Java Lambda表达式 Java Lambda表达式 Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。 Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中) 使用 Lambda 表达式可以使代码变的更加简洁紧凑。 语法 lambda 表达式的语法格式如下: 123(parameters) -> expression// 或。(parameters) -> 2021-06-08 Software Language Java JavaSE 函数式编程