观察者模式 观察者模式是非常常用的一种设计模式。在软件系统中,当一个对象的行为依赖与另一个对象的状态时,观察者模式就相当有用。若不实用观察者模式提供的通用结构,而需要实现其类似的功能,则只能在另一个线程中不停监听对象所依赖的状态。在一个复杂系统中,可能会因此开启很多线程来实现这一功能,这将使系统的性能产生额外的负担。观察者模式的意义也就在此,它可以在单线程中,使某一对象,及时得知自身所依赖的状态...
装饰着模式 装饰着模式拥有一个设计非常巧妙的结构,它可以动态添加对象功能。在基础的设计原则中,有一条重要的设计准则叫合成/聚合复用原则。根据该原则的思想,代码复用应该尽可能使用委托,而不是使用继承。因为 继承是一种紧密耦合,任何父类的改动都会影响其子类,不利于系统维护。而委托则是松耦合,只要接口不变,委托类的改动并不会影响其上层对象。 装饰着模式就充分运用了这种思想,通过委托机制,复用系统...
享元模式 享元模式是设计模式中少数几个以提高系统性能为目的的模式之一。它的核心思想是:如果在一个系统中存在多个相同的对象,那么只需要共享一份对象的拷贝,而不必为每一次使用都创建新的对象。在享元模式中,由于需要构造和维护这些可以共享的对象,因此,常常会出现一个工厂类,用于维护和创建对象。 享元模式对性能提升的主要帮助有亮点: (1)可以节省重复创建对象的开销,因为被享元模式维护的相同...
代理模式性能提升--延时加载 一、代理模式的结构 代理模式主要参与者又4个,如下表所示:角色作用主题接口定义代理类和真实主题的公共对外方法,也是代理类代理真实主题的方法真实主题真正实现业务逻辑的类代理类用来代理和封装真实主题Main客户端,使用代理类和主题接口完成一些工作 以一个简单的示例来阐述使用代理模式实现...
[转载]Mybatis Generator最完整配置详解 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-genera...
java 高薪计划 一、基础 集合类,并发包,IO/NIO,JVM,内存模型,泛型,异常,反射,等有深入了解,最好是看过源码了解底层的设计。二、需要全面的互联网主流技术相关知识 深入了解mysql,redis,mongodb,nginx,tomcat,rpc,jms等方面的知识。你要问需要了解到什么程度,我可以给你说个大慨。 首先对于MySQL,你要知道常见的参数设置,存储引擎...
Singleton Pattern -- 不一样的单例模式 Singleton Pattern -- 单例模式 单例模式是用来创建一个只能又一个实例的对象。 单例模式类图如下。 单例模式有两大好处: (1)对于频繁使用的对象,可以省略创建对象所话费的时间,这对于那些重量级对象而言,是非常可观的一笔系统开销。 (2)由于new操作的次数减少,因而对系统内存的使用频率页会降低,这将减轻GC压力,...
Mysql InnoDB引擎下 事务的隔离级别 mysql InnoDB 引擎下事物学习建表userCREATE TABLE `user` ( `uid` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `uname` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `upass` varc...
JDBC编程之预编译SQL与防注入 在JDBC编程中,常用Statement、PreparedStatement和CallableStatement三种方式来执行查询语句,其中Statement用于通用查询,PreparedStatement用于执行参数化查询,而CallableStatement则是用于存储过程。 1、Statement 该对象用于执行静态的 SQL 语句,并且返...
Spring 两大核心 IOC 和 AOP 如果你的简历上写着Spring (请详述一下spring的两大核心)这个问题一定会被问到。一、什么叫IOC1. IOC 全称(Inversion of Control)-- 控制反转。IOC 只是一种设计思想,具体实现是 DI (Dependency Injection)-- 依赖注入●谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创...
.Net 获取当前周是第几周 最近项目中需要获取当前周是今年的第几周,这东西听起来不难,但是还挺有意思的。在中国,一周是从周一开始算,周天结束,在国外就不是这样了,是从周天到周六为一个周。有很多种方式去实现在这个功能,下面介绍两种:一、使用CultureInfo这种方式,只需要修改CultureInfo里面的参数就行了,美国是en-US,其他国家的自行替换就行。需要注意的就是,在很多情况下,每年的...
使用Net Mail发送邮件 最近用到了发送邮件这个功能,简单记录一下案例。代码如下: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Configuration; 6 using System.Net....
java必学技能 一:系统架构师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。因此他/她应该是特定的开发平台、语言、工具的大师,对常见应用场景能给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。 系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到...
SSM整合activiti框架 一:WorkFlow简介1:什么是工作流工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。在计算机中,工作流属于计算机支持的协同工作(CSCW)的一部分。后者是普遍地研究一个群体如何在计算机的帮助下实现协同工作的。2:工作流主要解决的主要问题是:为了实现某个业务目标,利用计算机在多个参与者...
java树形结构工具类 一.树形结构数据一般都是以子父id的形式存在数据库中,查询的时候只是带有子id和parent_id的List集合并不是树形结构,所以我们现在要将普通的List集合转换为树结构数据(本工具类扩展操作树结构数据方法)1.工具类(TreeNodeUtil)代码示例:package com.ywb.pms.util.tree;import com.alibaba.dr...
MySql 数据表从1开始计数 方法一delete from test;alter table `test` auto_increment=1(好处,可以设置AUTO_INCREMENT 为任意值开始)提示:如果表列和数据很多,速度会很慢,如90多万条,会在10分钟以上。方法二truncate table test(好处,简单,AUTO_INCREMENT 值重新开始计数)一般情况下我们使用第二个就可以了,记住以上情况...
Could not resolve view with name 'xxx' in servlet with name 'dispatcherServlet'(@RestController和@Con... 转载于:https://www.cnblogs.com/pxzbky/p/11525120.html
关于缓存的几点问题 一、什么是缓存1、Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问2、凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为 Cache二、缓存的分类1、基于web应用的系2、在系统架构的不同层级之间,为了加快访问速度,都可以存在缓存操作系统磁盘缓存->减少磁盘机械操作数据库缓存-&g...