自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(134)
  • 收藏
  • 关注

原创 看源码模仿--Builder模式

今天在研究Okhttp源码,看到Request类时发现该类使用Builder模式来构建Request,还有HttpUrl 、Okhttp等也使用了构建模式。以下是根据Okhttp源码中的Request类模仿的模式。package com.zghw.ack;/** * Created by zhanghw on 2017/9/7. * Builder模式构建Request请求对象

2017-09-07 20:16:30 561

转载 静态内部类

一般情况下是不可以用static修饰类的。如果一定要用static修饰类的话,通常static修饰的是匿名内部类。在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。由于静态的内部类在定义、使用的时候会有种种的限制。所以在实际工作中用到的并不多。在开发过程中,内部类中使用的最多的还是非静态地成员内部类。不过在特定的情况

2017-09-07 17:43:17 701

转载 也许,这样理解HTTPS更容易

转自我自己的博客:https://showme.codes/2017-02-20/understand-https/摘要:本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样。但是这并不代表HTTPS的真实设计过程。在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于“还原”过程。我们先不了聊HTTP,HTTPS,我们先从一个聊天软件说起,我们要实现A

2017-09-06 11:38:38 514

转载 说说JSON和JSONP,也许你会豁然开朗,含jQuery用例

http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html

2017-07-19 14:20:57 400

转载 java中的Static class

Java中的类可以是static吗?答案是可以。在java中我们可以有静态实例变量、静态方法、静态块。类也可以是静态的。     java允许我们在一个类里面定义静态类。比如内部类(nested class)。把nested class封闭起来的类叫外部类。在java中,我们不能用static修饰顶级类(top level class)。只有内部类可以为static。     静态

2017-07-03 15:20:54 595

原创 sql查询优化总结ing

返回结果优化:1.    只查询需要的最终行数.2.    多表关联时只返回需要的列.3.    避免全部列返回.4.    对相同结果数据进行缓存.5.    对查询语句分而自治,将大查询切分成小查询,每个小查询功能完全一样,每个小查询只完成相同功能的一部分,每次只返回一小部分结果集.6.    分解关联查询:1.让缓存的效率更高2.执行单个查询减少锁竞争3.在客户端做拆

2017-03-20 23:52:57 525

原创 关联查询join

表数据select * from base_dept; 关联#inner join 全部匹配的, 没有空值select * from base_dept as t1 inner join base_dept as t2 ont1.id=t2.`parent_dept`; #left join 左边表匹配向右表,匹配到显示两表数据,匹配不到左表数据+右表显示为空

2017-03-20 23:49:42 599

转载 MYSQL执行计划explain

explain命令是查看查询优化器如何决定执行查询的主要方法。这个功能有局限性,并不总会说出真相,但它的输出是可以获取的最好信息,值得花时间去了解,因为可以学习到查询是如何执行的。调用EXPLAIN在select之前添加explain,mysql会在查询上设置一个标记,当执行查询计划时,这个标记会使其返回关于执行计划中每一步的信息,而不是执行它。它会返回一行或多行信息,

2017-03-20 23:40:18 452

原创 MySQL索引原理

##索引目的索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的,如果我想找到m开头的单词呢?或者ze开头的单词呢?是不是觉得如果没有索引,这个事情根本无法完成?##索引原理除了词典,生活中随处可见索引的例子,如火车站的车次表、

2017-03-20 14:24:09 366

原创 性能优化之测试数据准备

#创建表create table base_dept(id int not null PRIMARY KEY AUTO_INCREMENT,dept_name varchar(50) not null,parent_dept int not null );create table base_emp(id int not null PRIMARY KEY auto_increment,dep

2017-03-18 21:14:40 397

原创 MYSQL服务器状态

#系统变量show variables ;#会话变量只读show status ;#全局变量show global status;######线程和链接统计#######show status where variable_name='Connections' or variable_name='Max_used_connections' or variable

2017-03-18 13:34:32 1458

原创 maven基本总结

2017-03-06 18:33:41 345

转载 pom.xml详解

pom.xml详解pom.xml是Maven的核心,你的项目需要什么Jar包就在pom.xml里面配置。当编译项目时Maven读取该文件,并从仓库中下载相应的Jar包。project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc

2017-03-06 18:30:16 607

原创 线程常用知识问答

1.什么是线程? 线程是操作系统能够运行调度的最小单位,它被包含在进程之中。 线程可以有效地降低程序的开发和维护等成本,同时提升复杂应用程序的性能。 线程可以将大部分的异步工作流转换成串行工作流。 线程可以降低代码的复杂度,是代码更容易编写、阅读和维护。 线程是一把双刃剑。 编写

2017-03-06 18:25:12 438

转载 RPC通俗介绍

关于RPCRPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。比如说,一个方法可能是这样定义的:Employee getEmployeeByName(String fullName)那么:首先,要解决通讯的问题,主要是通过在客

2017-02-20 23:55:33 501

原创 Dubbo介绍

Dubbo是一个分布式服务框架,以及SOA治理方案。其功能主要包括:高性能NIO通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者

2017-02-19 20:23:02 1267

转载 REST接口设计规范

REST接口设计规范10 NOVEMBER 2015URI格式规范URI(Uniform Resource Identifiers) 统一资源标示符URL(Uniform Resource Locator) 统一资源定位符URI的格式定义如下: URI = scheme "://" authority "/" path [ "?" query ] [ "#" fragm

2016-12-21 18:03:45 20450 1

转载 RESTful API 设计指南

网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备……)。因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行,甚至出现”API First”的设计思想。RESTful API是目前比较成熟的一套互联网应用程序的API设计理论。我以前写过一篇《理解RESTful架构》,探讨如何理解这个概念。

2016-12-21 18:01:07 802

原创 dubbo 搭建 创建消费者 调用消费者 即是消费者又是提供者(六)

代码示例访问我的github:https://github.com/WilsonZhang8/dubbo-demo在第五部分开发simple相关模块并作为生产者提供服务。现使用相同的方式创建一个基础的dubbo服务base项目。(注意端口号不要重复)。现在各模块之间的依赖关系如下图:下层不能依赖上层,base作为基础模块。base提供

2016-08-20 11:34:32 14708 2

原创 dubbo 搭建 服务提供者(五)

代码示例访问我的github:https://github.com/WilsonZhang8/dubbo-demo1.创建服务接口 dubbo-simple-service-api ---> IHelloWorldService代码如下:2.创建服务实现 dubbo-simple-service-impl

2016-08-20 11:31:55 1322

原创 dubbo 搭建 配置文件(四)

代码示例访问我的github:https://github.com/WilsonZhang8/dubbo-demodubbo-config模块 资源配置中心主要包含了所有模块需要的配置文件,比如数据库设置、缓存配置、日志配置、安全配置、spring配置等等。主要文件为propertie和xml文件。其他模块常用通过spring的方式来引用需要的相关配置。首先使用mave

2016-08-20 11:29:20 5367

原创 dubbo 搭建 引入相应的jar文件(三)

1.maven配置dubbo依赖包,版本号为2.5.3dubbo主要依赖一下这些包。2.配置spring依赖3.配置zookper客户端包4.设置项目之间的依赖maven依赖是传递的,因此在模块依赖关系如下:dubbo-parent  ---> dubbo-simple-entity ---> dubbo-si

2016-08-20 11:22:03 9759

原创 dubbo测试搭建 --- 使用maven设计模块(二)

初步试用dubbo,首先使用maven设计了各个模块之间的继承关系。dubbo-parent是父模块,仅仅提供公共的配置,消除重复配置。dubbo-simple-entity是实体类,常用的po vo 持久化实体等。dubbo-simple-service-api提供了dao和service对应的api接口。(生产者接口定义)dubbo-simple-service

2016-08-20 11:20:31 1579

原创 dubbo学习笔记 -- 安装(一)

使用git 下载dubbogit clone https://github.com/alibaba/dubbo.git dubbogit checkout master使用maven 生成eclipse工程文件 mvn eclipse:eclipse 在eclipse中配置dubboImport -> Exsiting Projects to Workspace

2016-08-20 11:15:32 1200

转载 SpringMVC @RequestBody接收Json对象字符串

以前,一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现,其实 @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,后来发现用 JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: "js

2016-06-08 15:37:56 701

原创 非ajax请求下载,不刷新页面,防止页面直接打开的问题,安全下载

非ajax请求下载,不刷新页面,防止页面直接打开的问题,安全下载

2016-05-31 18:38:14 1500

原创 springmvc 配置处理器@RequestMapping

package com.zghw.springmvc.demo.controller;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Enumeration;import java.util.Map;import javax.servlet.http.Cookie;import jav

2016-04-24 02:01:04 583

原创 springmvc源码阅读笔记 -- handleRequest

HandlerAdapter的handler方法基于注解@RequestMapping处理流程.HandlerAdapter用于适配各种处理器成相同的处理功能。在HandlerAdapter中有基本的四种处理器1.实现Servlet的handler处理器2.实现Controller的handler处理器3.实现HttpRequestHanlder的hanlder处理器4

2016-04-24 01:21:39 1159

原创 springmvc源码阅读笔记 --HandlerAdatper

Object handler是处理请求的对象,spring抽象了Object hanlder对象,类型为Object,这个处理器对象可以是任何类型,比如Servlet 、Controller或者是方法等,也可以自定义。spring 为了调用Hanlder处理器来处理,需要确定这个处理器的具体类型,以便使用该处理器的功能,spring对handler对象做了适配工作。HandlerAdatper用来适配Object handler对象的主要接口。开发者配置可以配置多个的HandlerAdatper实

2016-04-24 01:17:31 649

原创 springmvc源码阅读笔记 --HandlerInterceptor

工作流接口,允许自定义处理程序执行链。应用程序可以注册任意数量的现有或自定义拦截器组应用于对应的处理程序,添加常见预处理的行为,而不需要修改每个处理器实现。HandlerAdapter在触发处理器事件之前,会调用对应的HandlerInterceptor。这种机制可以用于大量的预处理方面,如授权检查,或共同处理程序行为如locale或Theme的变化。它的主要目的是抽取重复的处理程序代码。在一个异步处理场景中,处理器可能在一个单独的线程执行而没有呈现或调用主线程退出postHandle和afterCo

2016-04-24 01:13:06 1001

原创 springmvc源码阅读笔记 --Object handler和request请求路径查询lookupPath

Handler能干什么?Handler是处理请求的核心业务对象,调用其方法可以处理请求响应。spring定义的Object handler比较抽象,你能够想象的并且实现的都可以做。Hanlder如果开发一个handler?可以实现Controller,配置XML,使用@Controller,@RequestMapping注解类或方法具体步骤看例子。springIOC如何管理

2016-04-24 01:07:35 978

原创 springmvc源码阅读笔记 --HandlerMapping

HandlerMapping阅读笔记一个HttpServletRequest对象映射出处理器对象HandlerExecutionChain。AbstractHandlerMapping主要工作是在初始化HandlerMapping时设置配置IOC容器ApplicationContext和ServletContext对象,包括初始化MappedInterceptor和适配配置

2016-04-24 00:59:05 489

原创 spring mvc 源码研究简单笔记--web容器启动加载WebApplicationContext和初始化DispatcherServlet

Web容器启动时,ContextLoaderListener实现了ServletContextListener接口,即在Servlet初始化阶段,会通知ContextLoaderListener监听器,初始化Context容器,这里使用到了ServletContext的初始化参数。即在web.xml配置的context-param1.首先查找配置的WebApplicationContext实例,通过默认配置或用户在web.xml配置的contextClass实现类,并实例化对象这里使用的是XmlWebA

2016-04-19 00:36:01 6552

原创 Request 内容实体body的简单例子 PART3

1.访问路径http://localhost:8080/servlet-demo/submit.jsp2.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>Insert title here 3

2016-04-18 00:30:46 1304 1

原创 Request异步请求处理PART2

请求异步处理 可以先释放容器分配给请求的线程与相关资源,减轻系统负担,原先释放了容器所分配线程的请求。 其响应将被延后,可以在处理完成(例如长时间运算完成、所需资源以获得)时在对客户端进行响应。

2016-04-17 17:01:21 2351

原创 Request介绍及示例 PART1

请求转发(RequestDispatcher)的过程: 客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的test.jsp,整个流程都是在服务器端完成的,而且是在同一个请求里面完成的,因此servlet和jsp共享的是同一个request,在servlet里面放的所有东西,在jsp中都能取出来,因此,jsp能把结果getAttribute()出来,getAttrib

2016-04-17 01:40:13 3608

原创 Http会话cookie session

HTTP本身时无状态通信协议,要进行会话管理的基本原理,就是将需要维持的状态回应给浏览器,有浏览器在下次请求时主动发送状态信息,让Web应用程序“得知”请求之间的关联。  隐藏字段是将状态信息以窗体中看不到的输入字段回应给浏览器,在下次发送窗体时一并发送这些隐藏的输入字段值。Cookie是保存在浏览器上的一个小文件,可设定存活期限,在浏览器请求Web应用程序时,会一并将属于网站的Coo

2016-04-13 00:56:17 4894

原创 Servlet Filter示例

package com.zghw.servlet.demo;import java.io.IOException;import java.util.Enumeration;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import java

2016-04-09 17:29:25 465

原创 Servlet监听器示例

1.ServletContextListener ServletContext生命周期监听器         com.zghw.servlet.demo.MyServletContextListener package com.zghw.servlet.demo;import java.util.Enumeration;import javax.se

2016-04-09 17:26:40 511

原创 Ubuntu下安装Tomcat

之前需要安装JDK安装配置tomcat$unzip apache-tomcat-7.0.68.zip $su root$mv apache-tomcat-7.0.68/ /usr/local/$cd /usr/local/$ll$ln -s /usr/local/apache-tomcat-7.0.68/ /usr/local/tomcat$vim catali

2016-04-09 16:37:23 454

空空如也

空空如也

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

TA关注的人

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