《大话设计模式》里面,有这样一则小故事:小菜帮修过电脑的女同学(娇娇)找他吃饭,他借机问娇娇有没男朋友,娇娇却很残忍的告诉他已经有男朋友(戴励),小菜很好奇地想知道娇娇跟戴励的恋爱故事,之后两人就陷入了“回忆”当中。
“娇娇同学,这是有人送你的礼物。”一个男生手拿着一个芭比娃娃送到她的面前。
继续阅读 »
在慕课网上看了高并发的课程,准备用spring+Mybaits来开发新的项目。遇到了前端跨域请求的问题。
服务器上nginx+tomcat,其中nginx监听80端口,tomcat监听8080端口。
因为对前端不熟悉,以为用ajax就可以不需要callback,然而前端的同学说不跨域的情况下才不需要callback,让我在返回的json里加上。可是我刚刚学会了最基本的spring-mvc用法,根本不知道怎么加上callback :joy:
继续阅读 »
Nginx学习总结
定义
Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内
存少,并发能力强。
Nginx 做为 HTTP 服务器,有以下几项基本特性:
处理静态文件,索引文件以及自动索引;打开文件描述符缓冲.
无缓存的反向代理加速,简单的负载均衡和容错.
FastCGI,简单的负载均衡和容错.
模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCGI 或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。
支持
继续阅读 »
最近突然发现Java注解真心神器。一行简单的注解可以搞定N多事情。简直不能再方便了。
注解可以看成是一个接口,注解实例就是一个实现了该接口的动态代理类。 注解大多是用做对某个类、方法、字段进行说明,标识的。以便在程序运行期间我们通 过反射获得该字段或方法的注解的实例,来决定该做些什么处理或不该进行什么处理。
定义和调用注解的方法都很简单,这里就不说明了。
重点说明下怎么让注解work起来。
注解本身并不会做任何事情,它需要工具支持才会有用。比如JUnit4的@Test注解自身不会做任何事情,JUnit会识别并调用所有标识为@Test的方法,这种识别处理一般是采用代理模式,通过反射来调用。
大致代码如下
import ja
继续阅读 »
简介
在[PHP设计模式(七):设计模式分类][2]中我们提到过结构设计模式(Structural
patterns),结构设计模式专注于设计对象(Object)和实例(Instance)的构建、组合过程。
结构设计模式包括下面七种设计模式:
适配器(Adapter)
桥接(Bridge)
合成(Composite)
装饰(Decorator)
外部(Facade)
轻量(Flyweight)
代理(Proxy)
请无视拗口的中文翻译。结构设计模式着重于低耦合、高复用、高可维护性、高拓展性的设计原则。
适配器模式
适配器模式是一种利用适配器将现有的实现,适配到已有接口的设计模式,最常见的例子就是变压器,将已
继续阅读 »
技术流水账一篇,记录踩过的坑
Channels 异构
Django Channels 官方文档宣称 channels 的最佳配置是使用其自带的服务器组件 Daphne,但在开发中我发现 daphne 处理普通请求比在 WSGI 架构下慢了好几倍,更何况使用 daphne 派发静态文件是十分不切实际的。于是我将 http.request 和 websocket.* 两个 channel 解耦,前者使用 nginx 配合 uwsgi 处理,后者使用 nginx 反向代理至 daphne 处理。这样一来便可充分利用两种架构的优势。
旧架构:
新架构:
more
环境
Ubuntu Server 16.04(与开发环境相
继续阅读 »
一、 功能
Nginx 的ngx_stream_proxy_module和ngx_http_proxy_module两个模块中,都有 proxy_pass 指令。其主要功能是为后端做代理,协议转发,请求转发等。
继续阅读 »
frp是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务。
可以在 https://github.com/fatedier/frp 找到文档和下载地址。
继续阅读 »
Nginx是一个俄罗斯开发的高性能HTTP服务器和反向代理服务器,功能丰富、性能强悍、运行稳定、应用广泛,完全使用C语言编写,可运行于各种Unix Like OS,并有Windows移植版本(不推荐用于生产环境)。
安装
在Ubuntu中,可以直接使用sudo apt-get install nginx 命令安装nginx,安装之后,默认的配置文件保存在 /etc/nginx 文件夹内,默认提供http服务的目录位置在 /usr/local/nginx/html。
配置
nginx的主配置文件是:nginx.conf
```
user www-data; #用户与用户组
worker_processes 4; #对外提
继续阅读 »
RabbitMQ学习总结
定义
RabbitMQ是一个消息代理。从本质上来说,它是从生产者(producer)接收信息,然后将信息分发给消费者(consumer)。你可以把它想像成一个邮局:你把信件放入邮箱,邮递员就会把信件投递到你的收件人处。在这个比喻中,RabbitMQ就扮演着邮箱、邮局以及邮递员的角色。
继续阅读 »