自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wangyan9110's Blog

记录个人成长的点点滴滴,我的个人博客http://yywang.info/

  • 博客(57)
  • 资源 (16)
  • 收藏
  • 关注

原创 如何使用Kotlin开发微服务

谷歌在5月18号的I/O开发者大会上,宣布将Kotlin语言作为安卓开发的一级编程语言。可能很多人这时第一次听说这门语言。我了解这门语言时间也不长,在今年的一个内网帖子上第一次看到这门语言。今天我们来了解一下Kotlin这门语言和如何使用Kotlin开发微服务Kotlin简介 Kotlin是一种在Java虚拟机上运行的静态类型编程语言,它也可以被编译成为JavaScript源代码。它主要是由俄罗

2017-05-20 17:29:47 3115

原创 如何实现Builder模式

在构建大对象时,对象的属性比较多,我们可以采用一个构造器或者使用空的构造器构造,然后使用setter方法去设置。在使用者使用这些方法时,会很多冗长的构造器参数列表或者setter方法。我们可以使用Builder模式来简化大对象的构造,提高代码的简洁性,同时提高使用者的编码体验。下面我们将介绍在Java8之前、使用极简代码利器Lombok、Java8之后的Builder模式。Pre Java8我们先来

2017-05-06 18:46:53 1817

原创 如何保证微服务接口的幂等性

在微服务架构下,我们在完成一个订单流程时经常遇到下面的场景: 一个订单创建接口,第一次调用超时了,然后调用方重试了一次 在订单创建时,我们需要去扣减库存,这时接口发生了超时,调用方重试了一次 当这笔订单开始支付,在支付请求发出之后,在服务端发生了扣钱操作,接口响应超时了,调用方重试了一次 一个订单状态更新接口,调用方连续发送了两个消息,一个是已创建,一个是已付款。但是你先接收到

2017-04-29 15:48:21 29068 3

原创 一致性Hash算法的实现

一致性hash作为一个负载均衡算法,可以用在分布式缓存、数据库的分库分表等场景中,还可以应用在负载均衡器中作为作为负载均衡算法。在有多台服务器时,对于某个请求资源通过hash算法,映射到某一个台服务器,当增加或减少一台服务器时,可能会改变这些资源对应的hash值,这样可能导致一部分缓存或数据失效了。一致性hash就是尽可能在将同一个资源请求路由到同一台服务器中。本篇文章将模拟实现一个分布式缓存系统来

2017-04-15 17:20:00 8601 2

原创 你真的开始用JDK8了吗?(下)

上篇文章中,看到了JDK8中的Optional和Lambda Expressions带来编程上的改变,甚至编程思维的改变。接下来我们继续看JDK8的Stream和Interface default method给我们带来的改变StreamStream也是JAVA8的一大特点,这里的Stream和IO的那个Stream不同,它提供了对集合操作的增强,极大的提高了操作集合对象的便利性。下面我们就通过一个

2017-04-08 15:37:59 1401 2

原创 你真的开始用JDK8了吗?(上)

JDK8正式版已经发布三年了,JDK9预计将于今年9月发布。很多应用都已经升级到了jdk8,java的大部分开源框架也早已支持jdk8,但是你真正开始使用jdk8了吗?jdk8给你的代码带来哪些改变?今天我们来梳理下,JDK8的特性给我们的代码带来哪些改变?OptionalNullPointerExceptions是在调用其他接口的时候,必须要考虑的问题。在业务代码中充斥着很多if(user!=nu

2017-04-08 15:35:18 9059 1

原创 聊聊RPC之Register

在前两篇文章中,我们多次讲到了注册中心。在Provider中,我们讲到在服务注册的过程中,需要注册到注册中心。在Consumer中,我们讲到从注册中心获取到Provider地址。可见注册中心是RPC中重要的组成部分。那么注册中心,担任哪些职责呢?注册中心需要有解决哪些问题呢?注册中心的基本功能我们先来看下注册中心在服务调用中的位置从以上可以看出,注册中心有以下两个基本职责:服务地址注册,服务提供者

2017-04-08 15:33:30 1654 2

原创 聊聊RPC之Consumer

在上一篇我们介绍了RPC的Provider,包括它的发布过程和在设计一个Provider时需要考虑的问题,本文将介绍做一个调用方,在这个Consumer调用过程中,RPC又帮我们做了哪些事情和在使用别人提供的Provider时需要注意哪些问题。(和上篇一样,我们仍以Dubbo为例)Consumer的调用过程作为Consumer调用别人提供的一个服务,一般需要如下工作引入client包 <

2017-04-08 15:31:33 1509

原创 聊聊RPC之Provider

RPC的全称是Remote Procedure Call,它是一个分布式系统必备的一个中间件,主要解决系统之间通信的问题。一般来说一个RPC中间件的由以下组成:Provider:服务提供者,提供服务给消费者调用Consumer:服务消费者,提供可以像调用本地方法一样的方式,调用远程的服务Register:注册中心,为提供者、消费者提供服务地址的注册服务,当提供者不可用时即时通知调用者Prot

2017-04-08 15:29:30 1331

原创 谈谈微服务

自从去年在一次上厕所的时候,翻开手机,看到微服务这一个概念,就认为这种架构的模式非常看好,自那以后,一直关注微服务相关的内容。目前微服务已经是一个非常火的概念,在Infoq几乎每条都有关于微服务的文章或者新闻。可见微服务已经像我们靠近。微服务的“微”:有一些观点体现在微服务的微在体现在代码量上,微服务的代码行数一定非常少。关于这个观点,个人并不认同,我觉得使用代码行数来衡量微服务的话,就像使用代码量

2015-06-03 17:39:17 1169

原创 如何做详细设计之序

详细设计是软件开发中非常重要的环节,无论你是工作几年的技术大牛,还是只有一两年工作经验的小菜。可能你看到设计两个字,就觉得非常高大上,然而你只要在用心写代码,在思考如何定义方法,如何定义类,你都在做着详细设计。至于做的怎么样,那就另说了。详细设计涉及哪些内容?首先详细设计不同于架构设计,架构设计主要关注系统的架构模型、系统开发语言选型、系统数据存储方式选型、系统模块的划分以及系统模

2015-01-05 21:29:16 1083

原创 设计模式学习–Decorator

WhatDecorator:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更加灵活。WhyDecorator模式适用于可以动态的给对象增删职责,比如qq秀我们可以选择自己形象,并动态的添加衣服以及装饰,让自己的形象感觉高大上起来。Decorator适用于如下情况:1.在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职

2014-08-26 23:35:41 1289

原创 maven assembly plugin使用

使用场景在使用maven来管理项目时,项目除了web项目,还有可能为控制台程序,一般用于开发一些后台服务的程序。最近在工作中也遇到了这种场景,使用quartz开发一个任务调度程序。程序中依赖很多jar包,项目的启动时只需要初始化spring容器即可。使用方法使用一个简单的基于spring框架的demo来做程序示例,来介绍maven assembly插件的使用方法。项目中

2014-08-17 23:04:07 68974 4

原创 设计模式学习--Singleton

WhatSingleton:保证一个类仅有一个实例,并提供一个访问它的全局访问点。WhySingletion是我比较熟悉的设计模式之一,在平常的开发过程中,也曾几次用到,它主要适用于如下场景:1、当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。2、当这个唯一实例应该是通过子类可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。在系统

2014-08-14 23:30:32 944

原创 设计模式学习--Prototype

WhatPrototype:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。WhyPrototype适用于在一个类的实例有几种不同的状态组合的一种时,建立相应的数目的原型并克隆她们,要比每次使用合适的状态创建它们方便一些,或者为了避免创建一个与产品类层次平行的工厂类层次时,要实例化一的类在运行时动态指定时。How假设如下场景:有一个复

2014-08-09 16:40:37 1120

原创 设计模式学习--Builder

WhatBuilder:将一个复杂的对象的构建和表示分离,使得同样的构建过程可以创建不同的表示。WhyBuilder也是创建型模式的一种,它是一步一步的向导式的创建一个复杂的对象,Builder接口定义创建复杂对象的零部件,Director根据客户端端传入的builder按照一定的步骤创建完成复杂对象的创建。Builder适用于比较复杂的对象的创建,该对象的创建

2014-08-02 20:32:33 1073

原创 设计模式学习--Factory Method

WhatFactory Method:定义一个创建对象的接口,让子类来决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。WhyFactory Method是一个比较基础的创建型模式,它主要在于由子类决定实例化哪一个类。主要用于框架代码或者工具包中。适用于如下场景:1、当一个类不知道它所必须创建的对象的类的时候2、当一个类希望由

2014-08-01 00:20:24 1597 1

原创 设计模式学习--Abstarct Factory

WhatAbstarct Factory:提供一个创建一系列相关或相互依赖的接口,而无需指定他们具体类。WhyAbstarct Factory是创建型设计模式的一种,主要在创建对象时解耦,避免对象的直接依赖,方便替换与定制。常见的比如:一个功能有两种不同的风格,需要根据配置来切换不同的风格时,或者在一个需要适用于多个数据库切换的程序中,都会使用Abstact Fac

2014-08-01 00:16:31 1390

原创 WPF使用Canvas绘制可变矩形

1、问题以及解决办法最近因为项目需要,需要实现一个位置校对的功能,大致的需求如下:有一个图片,有一些位置信息,但是位置信息可能和实际有些偏差,需要做简单调整,后面会对这张图片进行切割等,做些处理。(位置信息连接起来是一个个小矩形。)解决以上问题的大致思路如下:使用canvas进行绘制,把图片作为canvas的背景,在canvas上绘制矩形,类似于qq截图一样,矩形框可以使用鼠标拖动调整大小。然后在记下修改后的位置,提供给后面切割图片使用。目前的关键问题就是实现类似qq截图那样可以拖动的矩形。

2014-07-25 22:49:21 13657

原创 maven安装与创建多模块项目

maven是一个比较流行的项目管理工具,在最近参与的项目中,也使用了maven,本文主要对在项目中的使用做一个总结,主要涉及maven的安装于配置、maven创建多模块项目。1、maven安装与配置maven的安装与配置非常简单,具体步骤如下:  1、首先到http://maven.apache.org/download.cgi下载maven的包,可以选择下载:apache-maven

2014-07-21 15:15:33 1407

原创 工欲善其事,必先利其器-ecplise配置和优化

1.eclipse下的编码设置:eclipse 中使用模板新建 JSP,xhtml等 文件时,默认的编码为:ISO-8859-1。 ISO-8859-1 编码对于中文的显示是不支持的,如果要支持简体中文,则编码方式应为 GBK 或者 GB2312 或者 UTF-8(推荐) 等。右键菜单栏window --> preferences --> 在type filter text中输入jsp; -->

2014-07-21 15:15:21 3285

原创 Nodejs express、html5实现拖拽上传

一、前言      文件上传是一个比较常见的功能,传统的选择方式的上传比较麻烦,需要先点击上传按钮,然后再找到文件的路径,然后上传。给用户体验带来很大问题。html5开始支持拖拽上传的需要的api。nodejs也是一个最近越来越流行的技术,这也是自己第一次接触nodejs,在nodejs开发中,最常用的开发框架之一是expess,它是一个类似mvc模式的框架。结合html5、nodejs ex

2014-07-21 15:14:50 2386

原创 进度条

var ProgressBar = function (divObj,innerClass,outerClass,time) { var _self = this; //缓存宽度,以及内联Div var _outerWidth,_innerDiv; //div容器 _self._divObj = divObj; //内围div

2014-07-21 15:14:37 657

原创 Javascript面向对象编程

//define classvar Person = function (name, age){ var _slef = this; //private property _slef.name = name; _slef.age = age; if (typeof Person._initialized == 'undefined')

2014-07-21 15:14:33 659

原创 C#调用C++ DLL的方式

动态链接库(DLL)是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。可以说在windows操作系统中随处可见,打开主分区盘下的system32。在一些项目中,如果有大量运算或者涉及大量算法时通常使用C或C++语言封装成一个dll,开放一些接口供其他程序调用。  下面是写的一个简单的dll代码,主要做示例,功能非常简单1、dll提供外部调用的方法extern "

2014-07-21 15:14:28 866

原创 【转】.Net 托管代码和非托管代码的区别

什么是托管代码(managed code)?      托管代码是一microsoft的中间语言(IL),他主要的作用是在.NET   FRAMEWORK的公共语言运行库(CLR)执行代码前去编译源代码,也就是说托管代码充当着翻译的作用,源代码在运行时分为两个阶段:       1.源代码编译为托管代码,(所以源代码可以有很多种,如VB,C#,J#)       2.托管代码编译为micros

2014-07-21 15:14:24 701

原创 delphi 版 sqlHelper第二版

1 { 2 odbc操作sqlite帮助类 3 author:yywang 4 date:2013-5-15 5 } 6 unit CommUtils; 7 8 interface 9 10 uses 11 SysUtils, Windows, ActiveX, DB, ADODB, Generics.Collection

2014-07-21 15:14:20 907

原创 delphi 版 sqlHelper第一版

1 { 2 odbc操作sqlite帮助类 3 author:yywang 4 date:2013-5-15 5 } 6 unit CommUtils; 7 8 interface 9 10 uses 11 SysUtils, Windows, ActiveX, ADODB; 12 13 type 14

2014-07-21 15:14:16 864

原创 WPF学习之路由事件

最近因为工作需要学习WPF方面的知识,因为以前只关注的是B/S架构的东西,可是没想到参加工作的第一个项目竟然是C/S架构的WPF方面的开发,因为Web方面主要是请求响应模型,没有事件这个东西,在学习webform时虽然是基于事件模型的也有没有认真的研究事件,因为它已经逐渐被mvc或者其他方式(比如ashx和jquery easyui等类似的)替代,现在是CS架构了,需要把这块知识补上。1、简单

2014-07-21 15:14:10 702

原创 解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题

问题背景:           在使用asp.net mvc 结合jquery esayui做一个系统,但是在使用使用this.json方法直接返回一个json对象,在列表中显示时发现datetime类型的数据在转为字符串是它默认转为Date(84923838332223)的格式,在经过查资料发现使用前端来解决这个问题的方法不少,但是我又发现在使用jquery easyui时,加载列表数据又不

2014-07-21 15:14:03 6448

原创 高效能编程的七个好习惯(转)

这七条都是我这个不怎么高效能编程的人悟到的. 不权威, 不一定全对.  1. 使用工具帮你找 Bug, 而不是人工找. 工具包括用单元测试, assert语句, 代码测试容器. 人工指用 print 和 debugger 一行一行跟踪. 我们知道, 编程中绝大部分时间是耗费在除 bug 上. 不同的人有不同的 debug 的方法. 我个人比较喜欢”极限编程(XP)” 学派的主义, 也就

2014-07-21 15:13:48 517

原创 几个简单的算法题

1、实现一个字符串查找子串的函数#include int search(char str[],char str1[]){ int strlen1=strlen(str); int strlen2=strlen(str1); if(strlen1<strlen2) return -1; int i,j; for(i=0;i<strlen1;i++)

2014-07-21 15:13:40 602

原创 ListView动态加载数据分页(使用Handler+线程和AsyncTask两种方法)

在android开发中,经常需要使用数据分页,比如要实现一个新闻列表的显示,或者博文列表的显示,不可能第一次加载就展示出全部,这就需要使用分页的方法来加载数据,在android中Handler经常用来在耗时的工作中,它接收子线程发送的数据,并使用数据配合更新UI,AsyncTask是在一个线程中执行耗时操作然后把结果传给UI线程,不需要你亲自去管理线程和句柄。一、使用Handler+线程方法

2014-07-21 15:13:29 917

原创 android解析XML总结(SAX、Pull、Dom三种方式)

欢迎我的独立博客,博客地址http://yywang.info     在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX、Pull、Dom解析方式。最近做了一个android版的CSDN阅读器,用到了其中的两种(sax,pull),今天对android解析xml的这三种方式进行一次总结。     今天解析的xml示例(channels.xml)如下

2014-07-21 15:13:14 892

原创 引用了System.Configuration命名空间,却找不到ConfigurationManager类

用ConfigurationManager类来读取应用程序配置文件的信息时,提示:System.Configuration命名空间下找不到ConfigurationManager类查过资料后得知:要添加对System.Configuration.dll文件的引用

2014-07-21 15:13:01 1944 1

原创 LIBXML2库使用指南2

3. 简单xml操作例子http://blog.sina.com.cn/s/blog_4673bfa50100b0xj.html了解以上基本知识之后,就可以进行一些简单的xml操作了。当然,还没有涉及到内码转换(使得xml中可以处理中文)、xpath等较复杂的操作。3.1 创建xml文档有了上面的基础,创建一个xml文档显得非常简单,其流程如下:l 用xmlNewDoc函数创建

2014-07-21 15:12:53 848

原创 linux下的C语言快速学习—进程和文件

1、进程的概念这是操作系统课程里的一个概念 进程是一个开始执行但是还没有结束的程序的实例.就是可执行文件的具体实现. 一个程序可能有许多进程,而每一个进程又可以有许多子进程.依次循环下去,而产生子孙进程. 当程序被系统调用到内存以后,系统会给程序分配一定的资源(内存,设备等等)然后进行一系列的复杂操作,使程序变成进程以供系统调用.在系统里面只有进程没有程序,为了区分各个不同的进程,系统给每一个

2014-07-21 15:12:44 605

原创 linux下的C语言快速学习—计算机体系结构基础简单了解

a、内存与地址在我们学校每栋教学楼都有自己的编号,这里的教室编号就是地址,这个教室就是内存。b、了解CPUCPU最核心的功能单元包括一下部分,寄存器(CPU内部的高速存储器,像内存一样可以存取数据,但比它要快),程序计数器(一种特殊的寄存器,保存这CPU下一条指令的地址),指令译码器(CPU取上来的指令由若干个字节组成,这些字节中有些位表示内存地址,有些位表示寄存器编号,有些位表示这种

2014-07-21 15:12:36 921

原创 linux下的C语言快速学习—从1+1开始。

最近刚进一个公司去实习,进入这个公司以后刚开始有两周的实训,一般是给一个自己从未接触的领域来学习,我的题目是linux下使用Shell和C实现一个RSS全文转化的功能,类似与http://feedex.net/ 这个网站功能,我对这些特别不熟,我还不知道整个的解决方案是什么样的,由于时间紧迫只能边学边想了。如果各位有什么解决方案期待您给我留言。今天开始学习linux下的c语言编程。1、从1+1

2014-07-21 15:12:23 619

原创 .net4.0面向对象学习笔记—数据类型

最近在读金旭亮老师写的.net4.0面向对象编程漫谈,因为这本书的实验性不强,理论基础比较多,所以准备写一些学习笔记,来记录一下1、  数值类型的使用(1)      数值类型的转换在c#中,数据类型像int、long等,由C#编译器映射到CLR能直接识别的System.Int32,System.Int64等a、  当数据类型从“小到大”时可以自动转换,比如in

2014-07-21 15:11:52 687

CSDN阅读器 android版

CSDN阅读器是有个人开发的基于CSDN网站RSS功能,能够为您提供CSDN网站,高质量的资讯阅读、博文阅读。 主要功能 1、资讯阅读 2、推荐博文及分类博文阅读 3、刷新后可以离线阅读 4、达到一定积分后,可以关闭广告 等等

2012-02-15

动态网页设计与制作实用教程

动态网页设计与制作实用教程,动态网页设计与制作实用教程

2011-06-27

K3成长版V12.1_应收款管理

K3成长版V12.1_应收款管理系统培训PPT

2011-06-27

c#编程基础 ppt c#编程基础ppt

c#编程基础pptc#编程基础pptc#编程基础ppt

2010-11-12

ASP.NET3.5入门经典:涵盖C#和VB.NET(第5版)pdf

《ASP.NET3.5入门经典:涵盖C#和VB.NET》(第5版)是一本非常好的ASP.NET入门书籍。《ASP.NET3.5入门经典-涵盖C#和VB.NET》以建立一个实际的Web站点为主线,从最初的没有任何功能的简单站点开始,然后逐步增加功能和效果,直到最后建立一个完整的、功能丰富的、数据库驱动的、交互的Web站点。其间,分别介绍了建立这个Web站点涉及到的众多内容,尤其特别介绍了新增的LINQ功能、ASP.NET AJAX及ASP.NET服务器控件等内容。《ASP.NET3.5入门经典-涵盖C#和VB.NET》的示例代码均用C#和VB.NET两种语言表示,读者可自由地选择自己喜欢的语言。

2010-10-08

个人编出的计算训练系统c#

自己初学c#时编出的小系统,初学者可以参考一下...

2010-09-12

c#初学者资源 c# 基础教程 c#高级编程

推荐初学者使用。。欢迎下载。两本资源。。c# 基础教程 c#高级编程 不错的教程!!!

2010-08-14

清华大学 计算机专业英语(ppt)

计算机专业英语.....清华的...欢迎大家下栽啊!!! 清华大学 计算机专业英语(ppt)

2010-07-02

asp.net 个人博客系统(c#) 原代码

两个不错的博客系统源代码.......欢迎大家下载!!!

2010-07-02

asp.Net网页模板

简单博客网页模板Asp.Net用c#开发

2010-06-08

c#基础教程,可以从零基础开始学习

c#基础教程,可以从零基础开始学习,适合初学者学习

2010-05-29

C++程序设计教程PPT

C++程序设计教程 不错的选择!!欢迎下载

2010-01-05

C++视频 比较好的资料

学习C++的比较好的资料,一定要下载哦!!!

2010-01-05

C语言练习题 绝对的经典

\编程实现对键盘输入的英文名句子进行加密

2009-12-28

C语言 函数 下载,不错的选择

大学大一C语言课件它通俗易懂,适合自学下载

2009-12-28

空空如也

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

TA关注的人

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