自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Christian_Lee的博客

各位研究开发的前辈和同仁,为了技术希望大家给与批评和指正

  • 博客(48)
  • 资源 (4)
  • 收藏
  • 关注

原创 Springboot学习(1):@SpringBootApplication

在使用 Springboot 框架进行开发的时候,通常我们会在 main 函数上添加 @SpringBootApplication 注解,今天为大家解析一下 @SpringBootApplication,如有不正之处,欢迎批评指正。@SpringBootApplication@SpringBootApplication源码如下:@Target(...

2018-10-07 11:34:17 294

原创 Linux —— /etc/profile、/etc/bashrc、.bash_profile、.bashrc理解

/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.英文描述为:# /etc/profile# System wide environment and startup programs, for login setup# Functions and

2017-10-10 16:15:01 843

转载 js运行机制—事件循环(Event Loop)详解

一、为什么JavaScript是单线程?JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊。JavaScript的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如,假定JavaScri

2017-09-18 14:14:37 1160

转载 JS 事件循环机制 - 任务队列、web API、JS主线程的相互协同

一、JS单线程、异步、同步概念  众所周知,JS是单线程(如果一个线程删DOM,一个线程增DOM,浏览器傻逼了~所以只能单着了),虽然有webworker酱紫的多线程出现,但也是在主线程的控制下。webworker仅仅能进行计算任务,不能操作DOM,所以本质上还是单线程。  单线程即任务是串行的,后一个任务需要等待前一个任务的执行,这就可能出现长时间的等待。但由于类似ajax网络请求、se

2017-09-18 10:39:26 657

原创 centos7安装mysql

一、系统环境[root@bogon /]# yum search libaioCentOS Linux release 7.1.1503 (Core)二、安装配置YUM源在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/#下载mysql源安装包[root@bogon /]#

2017-08-07 16:36:55 488

原创 MongoDB(集群搭建) -----主从、副本集

MongoDb在用于生产环境的三种模式,master/slaves(主从模式);replcation副本集;auto shard 分片模式在早期的系统设计中,主从模式是比较流行的,将读写分离,在不同的DB上操作,可以有效降低数据库的压力,而且还能实现数据的备份,但是在master节点故障的时候,不能及时的自动的切换到slaves节点,需要手动干预,这个是硬伤。

2017-07-26 14:40:10 367

原创 EventProxy流程控制

EventProxy是一个通过控制事件触发顺序来控制业务流程的工具。1. 利用事件机制解耦复杂业务逻辑2. 移除被广为诟病的深度callback嵌套问题3. 将串行等待变成并行等待,提升多异步协作场景下的执行效率4. 友好的Error handlingNode.js的亮点是回调函数,node.js流程控制、传参都是通过回调函数来实现的。开发中经常会遇到回调嵌套的场景,尤其是在业

2017-07-14 15:07:18 365

原创 mongodb数据库的启动和停止

一、准备环境[root@ip-172-31-25-250 logs]# more /etc/redhat-release CentOS Linux release 7.3.1611 (Core)

2017-07-12 10:38:02 899

转载 tar 命令使用详解

-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到标准输出

2017-07-07 15:29:22 377

转载 详解centos6和centos7防火墙的关闭

CentOS6.5查看防火墙的状态:[zh@localhost ~]$service iptable status显示结果:[zh@localhost ~]$service iptable status Redirecting to /bin/systemctl status iptable.service iptable.service Loa

2017-07-05 13:59:05 447

转载 mongodb攻略

【基础】1. 安装:wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.0.7.tgztar zxvf mongodb-linux-x86_64-rhel70-3.0.7.tgzmv mongodb-linux-x86_64-rhel70-3.0.7.tgz mongodbrsync -a

2017-07-05 11:22:36 353

转载 详解JS正则replace的使用方法

在讲replace的高级应用之前,我们先简单梳理一下JS正则中的几个重要的知识点,以帮助你对基础知识的回顾,然后再讲解JS正则表达式在replace中的使用,以及常见的几个经典案例。 一、正则表达式的创建JS正则的创建有两种方式: new RegExp() 和 直接字面量。//使用RegExp对象创建var regObj = new RegExp("(^\s+)|(\s+$)

2017-06-12 11:26:44 845

转载 JavaScript中Function Declaration与Function Expression 或者说 function fn(){}和var fn=function(){} 的区别

JavaScript是一种解释型语言,函数声明会在JavaScript代码加载后、执行前被解释,而函数表达式只有在执行到这一行代码时才会被解释。在JS中有两种定义函数的方式,1是:var aaa=function(){...}2是:function aaa(){...} var 方式定义的函数,不能先调用函数,后声明,只能先声明函数,然后调用。 function方式定义函数可以

2017-06-08 09:57:19 685

转载 nodejs开发 express路由与中间件

路由通常HTTP URL的格式是这样的:http://host[:port][path]http表示协议。host表示主机。port为端口,可选字段,不提供时默认为80。path指定请求资源的URI(Uniform Resource Identifier,统一资源定位符),如果URL中没有给出path,一般会默认成“/”(通常由浏览器或其它HTTP客户端完成

2017-06-07 18:45:56 600

原创 Win10安装express

进入CMD,执行                            npm install -g express npm install -g express-generator  安装后,使用express -V查看版本的时候,会提示nodejs error unknown option -V没毛病,创建一个项目测试一下,看到创建项目成功了,  以前一直纠结于

2017-06-05 09:46:56 4006

转载 使用中间件

Express 是一个自身功能极简,完全是由路由和中间件构成一个的 web 开发框架:从本质上来说,一个 Express 应用就是在调用各种中间件。中间件(Middleware) 是一个函数,它可以访问请求对象(request object (req)), 响应对象(response object (res)), 和 web 应用中处于请求-响应循环流程中的中间件,一般被命名为next 的

2017-06-02 19:16:12 530

转载 Jade —— 源于 Node.js 的 HTML 模板引擎

Jade 是一个高性能的模板引擎,它深受 Haml 影响,它是用 JavaScript 实现的,并且可以供 Node 使用。试玩你可以在网上试玩 Jade。特性客户端支持代码高可读灵活的缩进块展开Mixins静态包含属性改写安全,默认代码是转义的运行时和编译时上下文错误报告 命令行下编译jade模板HTML5 模式 (使用 !!! 5 文档类型)在内存中缓存(可选)

2017-05-19 09:26:59 800

原创 nodejs 4.0中supervisor、express启动项目

在4.0之前启动项目是node app.js,4.0之后启动项目是npm startexpress从4.x版本以后开始把项目启动搬到了bin/www找下。所以直接运行 supervisor bin/www

2017-05-18 19:08:44 2044

原创 1.ExtJS环境搭建

工具spket-1.6.23插件下载- 点击打开链接ExtJS开发包- 点击打开链接解压spket-1.6.18.zip会看到一个eclipse文件夹,下面有plugins和features两个文件夹,将这两个文件夹下的东西分别考到 Eclipse安装包下 的plugins和features文件夹中。启动Eclipse,在 window中打开preferen

2017-04-17 16:43:09 203

原创 HttpMessageConverter消息转换器

在SpringMVC中,可以使用@RequestBody和@ResponseBody两个注解,分别完成请求报文到对象和对象到响应报文的转换,底层这种灵活的消息转换机制,就是Spring3.x中新引入的HttpMessageConverter即消息转换器机制。Http请求的抽象还是回到请求-响应,也就是解析请求体,然后返回响应报文这个最基本的Http请求过程中来。我们知道,在servlet标

2017-04-14 10:45:33 283

原创 @InitBinder

由@InitBinder表示的方法,可以对WebDataBinder对象进行初始化。WebDataBinder是DataBinder的子类,用于完成由表单到JavaBean属性的绑定。@InitBinder方法不能有返回值,它必须盛名为void。@InitBinder方法的参数通常是WebDataBinder,@InitBinder可以对WebDataBinder进行初始化。@InitBind

2017-04-13 16:03:08 13573 1

原创 mvc:annotation-driven

关于标签会自动注册RequestMappingHandlerMapping、RequsetMappingHandlerAdapter与ExceptionHandlerExceptionResolver三个bean。还将提供一下支持支持使用ConversionService实例对表单参数进行类型转换支持使用@NumberFormatannotation、@DateTime

2017-04-13 15:34:19 635

原创 springMVC数据绑定流程

springMVC数据绑定流程springMVC框架将ServletRequest对象及方法的如参实例传递给WebDataBinderFactory石丽以创建DataBinder对象。DataBinder调用装配在springMVC上下文的ConversionService组件进行数据类型转换、数据格式化(类型转换和格式化是一起的一会来看源码),将Servlet中的请求信息填充到如参的

2017-04-13 14:36:22 2344

原创 ModelAttribute 源码详解

@ModelAttribute修饰的方法会在执行每个目标方法之前被springMVC调用! 先看例子:模拟修改操作,原始数据为用户id2,姓名zs,密码pass123,年龄12,默认密码不能被修改,表单回显,模拟操作直接在表单填写对应的属性值 Name: age : 目标方法:@RequestMapping("/testmodelattribute"

2017-04-06 18:01:16 1655

原创 处理模型数据(3) - SessionAttribute

上面提到ModelAndView和Map对象。他们都是把对象保存在了request请求域里面。那么有没有可能保存在Sesison里?那就用到@SessionAttributes注解。如果希望在多个请求之间公用一个模型属性数据,则可以在控制器类上标注一个@SessionAttributes,SpringMVC将在模型中对应的属性暂时保存到HttpSession中。@Target({Eleme

2017-04-06 10:40:27 232

原创 处理数据模型(2) - Map

上次说道ModelAndView来处理数据。目标方法还可以添加Map类型的参数。不仅限于map,还可以是ModelMap或者是model类型。实际上到最后传入的是一个ExtendedModelMap这样一个对象。先看示例代码: @RequestMapping("testmap") public String testMap(Map map) { System.out.printl

2017-04-06 10:04:07 769

原创 处理数据模型(1) - ModelAndView

ModelAndView处理方法返回值类型为ModelAndView,方法体即可通过该对象添加模型数据。先看一个例子@RequestMapping("testmodelandview")public ModelAndView testModelAndView() { ModelAndView modelAndView = new ModelAndView("success");

2017-04-06 09:31:35 470

原创 Struts2执行流程

ActionMapping:在一个web应用中,每个资源都必须通过URI来进行引用。 资源包括HTML页面,JSP页面,和定制动作。为了给定制动作一个 URI或者说路径,Struts框架提供了一个 ActionMapping对象保存当前Action状态的一个类,struts.xml文件中的一个标签,通常要指定name和namespaceActionMapper:ActionMapper可能会返

2017-04-01 17:41:47 267

原创 strtus2学习(7)自定义类型转换器

要知道为什么需要自定义的转换器?它能做什么?struts不能自动完成 字符串 到 引用类型的转换,上一篇文章已经解释过了配置类型转换器自定义类型转换器必须继承StrutsTypeConverter类或对这个接口的某一种实现做扩展。public class DateConverter extends StrutsTypeConverter { private DateFor

2017-04-01 15:55:17 280

原创 struts2学习(6) ValidationAware

从一个HTMl到一个Action对象,类型转化你是从字符串到非字符串。首先,HTTP没有“类型” 的概念,每一项表单的输入值可能是从一个字符串或一个字符串数组,在server端,必须把String转换成特定的数据类型。struts2中,把请求参数映射到action属性的工作由Parameters拦截器负责,它是默认的defaultStack拦截器中的一份子,Parameters拦截器可以自

2017-04-01 14:22:08 1273 1

转载 Struts2的学习(4)-使用paramsPrepareParamsStack拦截器栈

使用paramsPrepareParamsStack拦截器栈:(1) paramsPrepareParamsStack和defaultStack一样都是拦截器栈,而Struts-default包默认使用后者。(2) 可以在struts配置文件中通过以下方式修改使用的默认的拦截器栈。[html] view plain copyprint?c

2017-04-01 10:26:34 349

原创 Struts2的学习(5)-PrepareInterceptor

关于PrepareInterceptor对应的源码分析:com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptorpublic String doIntercept(ActionInvocation invocation) throws Exception { // 获取实例

2017-04-01 10:20:08 398

转载 struts2中的ValueStack

Struts2是通过ValueStack来进行赋值与取值的。ValueStack实际上就是对OGNL的封装,OGNL主要的功能就是赋值与取值。ValueStack中的数据,分两个部分存放:root和context同时ValueStack暴露相关的接口(赋值和取值):void setValue(String expr, Object value);Object findVal

2017-03-30 17:51:22 271

转载 总结传统JDBC以及MyBatis和Hibernate的对比

首先,让我们回顾一下。在上一个博客中写道“使用传统的JDBC编程来操作数据”,详见http://blog.csdn.net/zwg_html/article/details/55668894让我们来总结一下使用传统JDBC操作数据需要经过哪几个步骤:使用JDBC编程需要连接数据库,注册驱动和数据库信息操作Connection,打开 Statement 对象 。通过Statement执行

2017-03-28 15:26:31 453

转载 Java 内存分配全面浅析

本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java。这类文章网上有很多,但大多比较零碎。本文从认知过程角度出发,将带给读者一个系统的介绍。进入正题前首先要知道的是Java程序运行在JVM(JavaVirtual Machine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学

2017-03-21 11:34:06 201

转载 Thread的中断机制(interrupt)

先看收集了别人的文章,全面的了解下java的中断:中断线程线程的thread.interrupt()方法是中断线程,将会设置该线程的中断状态位,即设置为true,中断的结果线程是死亡、还是等待新的任务或是继续运行至下一步,就取决于这个程序本身。线程会不时地检测这个中断标示位,以判断线程是否应该被中断(中断标示值是否为true)。它并不像stop方法那样会中断一个正在运行的线程。判断线程

2017-03-13 17:22:29 318

转载 Java中Volatile关键字详解

一、基本概念先补充一下概念:Java并发中的可见性与原子性可见性:  可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。  可见性,是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的。也就是一个线程修改

2017-03-09 14:21:08 155

转载 java中volatile关键字的含义

在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。 synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized

2017-03-09 14:07:49 125

转载 幻读和不可重复读的区别

不可重复读不可重复读的重点是修改:同样的条件, 你读取过的数据, 再次读取出来发现值不一样了例子:在事务1中,Mary 读取了自己的工资为1000,操作并没有完成 Java代码  con1 = getConnection();  select salary from employee empId ="Mary";  在事务2中

2017-03-08 15:02:50 353

转载 数据库事务隔离级别

本文系转载,原文地址:http://singo107.iteye.com/blog/1175084数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。√: 可能出现    ×: 不会出现

2017-03-08 11:25:37 185

使用pdf+zxing+itextpdf 使用已有的pdf模板 插入二维码图片,并下载到本地

使用pdf+zxing+itextpdf 使用已有的pdf模板 插入二维码图片,并下载到本地。下载后需要自己配置环境

2019-05-09

Itext生成PDF所需要的最全Jar包

Itext生成PDF所需要的最全Jar包,里面包含了所需要生成itext的所有jar包。一次导入

2018-11-15

Ext 4.2 sdk.jsb3

2017-04-17

spket-1.6.23

2017-04-17

空空如也

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

TA关注的人

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