关闭

[置顶] 一篇文章了解mvc框架工作流程

动机argo是58同城开源出来的一个基于java的轻量级mvc框架。这个框架是其13年开源出来源代码,但接下来就没有维护了,但58内部好像还一直维护沿用wf(argo内部称呼)。 但阅读这款轻量级框架源码对于我们理解mvc框架运行原理还是有很大裨益的。其代码量不是很大,这也是我读的第一个开源框架源码。同时argo跟springmvc在思想上有很多相似之处,相信读过这个源码,对以后阅读springm...
阅读(2043) 评论(3)

[置顶] Java注解的实现与使用

Java注解是java5版本发布的,其作用就是节省配置文件,增强代码可读性。在如今各种框架及开发中非常常见,特此说明一下。...
阅读(1662) 评论(1)

Java线程池使用与原理

线程池是什么?我们可以利用java很容易创建一个新线程,同时操作系统创建一个线程也是一笔不小的开销。所以基于线程的复用,就提出了线程池的概念,我们使用线程池创建出若干个线程,执行完一个任务后,该线程会存在一段时间(用户可以设定空闲线程的存活时间,后面会介绍),等到新任务来的时候就直接复用这个空闲线程,这样就省去了创建、销毁线程损耗。当然空闲线程也会是一种资源的浪费(所有才有空闲线程存活时间的限制),...
阅读(1102) 评论(3)

模板方法模式

定义&示例HeadFirst定义:在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。其实就是将一些算法、业务步骤封装到一个方法中,使用者直接调用该模板方法,这样保证该步骤不会出错,减轻调用方压力。老规矩先放一个demo github传送门demo我假设了我们常用的12306买火车票场景。把下单支付环节抽象为一个模板方法...
阅读(81) 评论(0)

命令模式

命令模式就是将方法(运算业务逻辑代码)进行封装,并将该方法传递给执行者,执行者不关心所执行的命令(业务代码)是如何实现的。 java的线程池就是命令模式的一个体现。1.示例deom说明 demo源码 demo中我使用的场景是遥控器要控制家里的电器设备。遥控器RemoteController的开关按钮只需要调用设置的命令的execute方法,而无需关注其如何实现。Command的实现类的exec...
阅读(175) 评论(0)

单例模式

单例模式其实是一个很简单的设计模式,其作用就是为了让某一个类的全局实例只有一个。 我认为这个模式在oop上思想的增加是很少的。但这个模式却是对多线程安全认知的一个很好的例子。这是我代码的demo单例github demo其实我代码中的注释也写的很明白了。 能保证线程安全的单例大概有三种写法。第一种: 双重检查就是SingletonDobuleCheck这个类的写法,使用了java内置的加锁机制,...
阅读(130) 评论(0)

工厂模式

工厂模式中大概可分为三种:简单工厂,工厂方法,抽象工厂。 工厂模式的优点是让代码之家的依赖关系变少,降低项目耦合。简单工厂简单工厂可以说并不是一种设计模式,只是一种代码风格。 这是我写的一个简单工厂的例子简单工厂demo 这个工厂用来获取物品对象,利用多态实现这一个功能,如果代码中需要很多new操作,这样可以大大节省代码量和依赖关系,也让代码更加清晰。工厂方法headfirst中的定义:定义了...
阅读(142) 评论(0)

装饰者模式

定义动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案示例说明这是我github上的代码示代码talk is cheap,show your code 所以读者直接参考我github上的代码,我这里虚构了一个常见游戏场景,不同角色有自己的能力值,里面的武器也都有相应的能力,当角色装备后会增加其能力值。装饰者模式无论是被装饰与装饰组件,都需要继承自一个类,像代码中的Unit...
阅读(119) 评论(0)

观察者模式

定义定了了对象之间的一对多依赖,这样依赖,当一个对象改变状态时,它的所有依赖者都会受到通知并自动更新在具体实现中,开发者可以自己定义一整套观察者框架,也可以利用java提供的api实现这个模式自定义实现观察者模式观察者模式主要在解耦方面有巨大的作用,开发者可以自己实现整个观察者模式框架,一般会实现了观察者接口,这个接口的必需的一个方法是提供 主题(被观察者)状态发生变化时,需要调用的,像Observ...
阅读(114) 评论(0)

策略模式

定义首先给出《Head First设计模式》中的定义:策略模式定义了算法族,分别封装起来,让他们之间可以相互替代,此模式让算法的变化独立于使用算法的客户。这个定义还是很到位的,总的来说策略模式会让代码复用率很高,并且让代码更加规整简洁。像我实例代码中使用了游戏中常用的一个场景,我定义了一个抽象类Person,其具有自己描述和攻击两种方法;我也定义了一个攻击方式接口,每一种具体的攻击方式都实现了该接口...
阅读(111) 评论(0)

MySQL慢SQL优化-如何分析性能瓶颈

优化慢SQL首先得知道瓶颈在哪,本文主要介绍慢SQL性能瓶颈分析。本文就以前段时间参加的一个SQL优化活动为例。 mysql命令行或者一些可视化工具在sql执行时间的精度比较低,尤其是命令行只显示到10ms,所以需要打开mysql的执行时间监听 set profiling = 1;然后使用show profiles;命令就可查看sql的执行时间。例如:mysql> show profiles; +...
阅读(216) 评论(0)

消息队列ActiveMQ的安装与使用

(一)介绍消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。目前在生产环境,使用较多的消息队ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。 本文主要讲ActiveMQ的安装与简单使用。(二)安装与启动首先摆上ActiveMQ官网的安装启动...
阅读(181) 评论(0)

linux(ubuntu)下搭建nginx,tomcat负载均衡环境搭建

随着用户访问量增加以及单台服务器处理能力瓶颈,集群可以很好的解决这个问题,集群也可以保证在单台服务器宕机系统也可以正常运行。负载均衡就是让一个集群(多台机器处理相同的业务)的机器的使用率尽可能平均。比较常用场景:一是web服务器集群,例如用户访问了www.yasin.ac.cn这个网站,通过负载均衡分配的其中一个web容器服务器进行相关的处理。另一个场景就是RPC服务中客户端请求服务也会加入负载均衡...
阅读(404) 评论(0)

代理模式-Java动态代理的实现及应用

Java动态代理其实写日常业务代码是不常用的,但在框架层一起RPC框架的客户端是非常常见及重要的。spring的核心思想aop的底层原理实现就使用到了java的动态代理技术。 使用代理可以实现对象的远程调用以及aop的实现。 java的动态代理的实现,主要依赖InvoctionHandler(接口)和Proxy(类)这两个。下面是一个例子 实现的代理的一般需要有个接口package com.y...
阅读(190) 评论(0)

java常用的log系统

项目中log系统必不可少的一个组件,其用户无需赘述。 java的日志系统,常用的common-logging.jar这个类似是log系统接口规约,log4j则是具体的实现工具。当然logging可以脱离log4j这个实现类自己独立使用,但应该是不支持将log信息保存到文件中,只支持控制台打印。 common-logging其会自动寻找其实现类,如果系统存在log4j的配置的文件,就会采用log4...
阅读(228) 评论(0)
56条 共4页1 2 3 4 下一页 尾页
    个人资料
    • 访问:50482次
    • 积分:1067
    • 等级:
    • 排名:千里之外
    • 原创:53篇
    • 转载:1篇
    • 译文:0篇
    • 评论:24条
    最新评论