advisatory

1、自带推广

小程序自带的附近的小程序功能,帮助商家被五公里范围内的微信用户搜索到,解决当下商家广告无处可打的尴尬。店铺根据距离来排名,与品牌大小无关,也就是说,用户离你越近,你就排得越前。

2、触手可及,用完即走

小程序是一种无需下载安装即可使用的应用,能以最低成本触达用户。随着小程序市场的打开,在未来两年内,小程序将有望成为企业及商家的标配。

3、搜索

微信开放小程序关键字搜索,提高了企业商家的被搜索到的机会。同时微信搜索页面还有小程序的快捷入口,为常用的小程序带来更多的曝光和开启机会。

4、小程序码

再小的店也有自己的品牌,一张小程序码就可以成为消费者了解企业店铺的直接通道,对于线下实体店来说,让场景推广打开率更高。

5、成本更低

对于两类人来说,小程序可以大大降低运营成本:从开发成本到运营推广成本,小程序的花费仅为APP的十分之一,无论是对创业者还是传统商家来说都是一大优势。

6、更流畅的使用体验

小程序重在用户体验和线上线下的打通,逐渐的将微信公众号和H5的功能进行融合,进而补充其不足点,从根本上代替和秒杀。

7、更多的曝光机会

小程序自上线以来不断释放新能力,对于商家来说,这简直就是福音,他们可以通过更多的渠道来推广自己的小程序,进而实现店铺及商品的推广交易。

8、使用即是用户

用户只要使用过小程序,就会成为小程序的用户,该小程序会自动进入用户的发现栏小程序列表中,小程序实现了用最低的成本,让产品出现在用户的微信中。

9、在微信中打开率更高

同样的一个广告链接,在公众号图文中插入外链、阅读原文、文末广告和小程序广告位所获得的打开率完全不用,小程序和阅读原文的打开率差了20倍左右。

10、高效的流量召回

微信公众号和H5可以快速实现吸粉,但是一旦活动结束,引入的大量粉丝也将跟着死掉,小程序链接线上电商快速的实现了用户的变现和转换,这一点公众号和H5是做不到的。

11、公众号+小程序完美结合

朋友圈、公众号和小程序,分别对应着社交、内容和服务,这三者加起来正好是小程序目前最火爆的变现方案——社交电商。朋友圈推广、公众号引流,小程序变现,这就是公众号 + 小程序模式。

12、让积累自有用户成为可能

社交电商最响的一个口号是,让商家建立自己的流量中心,摆脱平台的绑架。但是事实上这个宏愿一直没有实现,因为之前商家们用的H5工具有一个最大的限制——分享之后没法返场。但小程序就完全不同了,用户点击之后就会成为小程序用户,即便不消费都会与商家产生关联。

7139611726

有很多读者问过这样的一个问题:虽然使用Swagger可以为Spring MVC编写的接口生成了API文档,但是在微服务化之后,这些API文档都离散在各个微服务中,是否有办法将这些接口都整合到一个文档中?之前给大家的回复都只是简单的说了个思路,昨天正好又有人问起,索性就举个例子写成博文供大家参考吧。

如果您还不了解Spring Cloud Zuul和Swagger,建议优先阅读下面两篇,有一个初步的了解:

本文首发于:(312) 825-6772

如果您有本文的需求,也可以看看我的这个开源项目,可以直接使用:717-615-3510

准备工作

上面说了问题的场景是在微服务化之后,所以我们需要先构建两个简单的基于Spring Cloud的微服务,命名为swagger-service-a和swagger-service-b。

下面只详细描述一个服务的构建内容,另外一个只是名称不同,如有疑问可以在文末查看详细的代码样例。

  • 第一步:构建一个基础的Spring Boot应用,在pom.xml中引入eureka的依赖、web模块的依赖以及swagger的依赖(这里使用了我们自己构建的starter,详细可点击查看)。主要内容如下:
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.10.RELEASE</version>
    <relativePath/>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>com.spring4all</groupId>
        <artifactId>swagger-spring-boot-starter</artifactId>
        <version>1.7.0.RELEASE</version>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Dalston.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
  • 第二步:编写应用主类:
@EnableSwagger2Doc
@EnableDiscoveryClient
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(true).run(args);
    }

    @RestController
    class AaaController {
        @Autowired
        DiscoveryClient discoveryClient;

        @GetMapping("/service-a")
        public String dc() {
            String services = "Services: " + discoveryClient.getServices();
            System.out.println(services);
            return services;
        }
    }
}

其中,@EnableSwagger2Doc注解是我们自制Swagger Starter中提供的自定义注解,通过该注解会初始化默认的Swagger文档设置。下面还创建了一个通过Spring MVC编写的HTTP接口,用来后续在文档中查看使用。

  • 第三步:设置配置文件内容:
spring.application.name=swagger-service-a
server.port=10010

eureka.client.serviceUrl.defaultZone=/eureka.didispace.com/eureka/

swagger.base-package=com.didispace


其中,eureka服务端的配置采用了本站的公益eureka,大家可以通过/eureka.didispace.com/查看详细以及使用方法。另外,swagger.base-package参数制定了要生成文档的package,只有com.didispace包下的Controller才会被生成文档。

注意:上面构建了swagger-service-a服务,swagger-service-b服务可以如法炮制,不再赘述。

构建API网关并整合Swagger

在Spring Cloud构建微服务架构:服务网关(基础)一文中,已经非常详细的介绍过使用Spring Cloud Zuul构建网关的详细步骤,这里主要介绍在基础网关之后,如何整合Swagger来汇总这些API文档。

  • 第一步:在pom.xml中引入swagger的依赖,这里同样使用了我们自制的starter,所以主要的依赖包含下面这些:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
    <groupId>com.spring4all</groupId>
    <artifactId>swagger-spring-boot-starter</artifactId>
    <version>1.7.0.RELEASE</version>
</dependency>
  • 第二步:在应用主类中配置swagger,具体如下:
@EnableSwagger2Doc
@EnableZuulProxy
@SpringCloudApplication
public class Application {

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(true).run(args);
    }

    @Component
    @Primary
    class DocumentationConfig implements SwaggerResourcesProvider {
        @Override
        public List<SwaggerResource> get() {
            List resources = new ArrayList<>();
            resources.add(swaggerResource("service-a", "/swagger-service-a/v2/api-docs", "2.0"));
            resources.add(swaggerResource("service-b", "/swagger-service-b/v2/api-docs", "2.0"));
            return resources;
        }

        private SwaggerResource swaggerResource(String name, String location, String version) {
            SwaggerResource swaggerResource = new SwaggerResource();
            swaggerResource.setName(name);
            swaggerResource.setLocation(location);
            swaggerResource.setSwaggerVersion(version);
            return swaggerResource;
        }
    }
}

说明:@EnableSwagger2Doc上面说过是开启Swagger功能的注解。这里的核心是下面对SwaggerResourcesProvider的接口实现部分,通过SwaggerResource添加了多个文档来源,按上面的配置,网关上Swagger会通过访问/swagger-service-a/v2/api-docs和swagger-service-b/v2/api-docs来加载两个文档内容,同时由于当前应用是Zuul构建的API网关,这两个请求会被转发到swagger-service-a和swagger-service-b服务上的/v2/api-docs接口获得到Swagger的JSON文档,从而实现汇总加载内容。

测试验证

将上面构建的两个微服务以及API网关都启动起来之后,访问网关的swagger页面,比如:/localhost:11000/swagger-ui.html,此时可以看到如下图所示的内容:

Spring-Cloud-Zuul-use-Swagger-API-doc-1.png

可以看到在分组选择中就是当前配置的两个服务的选项,选择对应的服务名之后就会展示该服务的API文档内容。

代码示例

本文示例读者可以通过查看下面仓库的中的swagger-service-a、swagger-service-b、swagger-api-gateway三个项目:

如果您对这些感兴趣,欢迎star、follow、收藏、转发给予支持!

以下专题教程也许您会有兴趣

什么是小程序?微信小程序有什么好处

简单来说,小程序就是一种不需要安装的APP,用户只要扫一扫或者搜一搜就可以打开。它主要的目的就是为了实现线下功能的即时反应。比如到一个景区,你只要扫景区的小程序就可以查看你在景区的位置,各景点的位置,价格,哪里有餐饮,厕所等等。离开景区你就不需要了,这就是所谓的用完即走!

 

 

打开小程序的方法有三种:

 

一是线下二维码海报或者小程序商店扫码。

二是通过微信搜索入口搜索精确的小程序名称(2017年2月12日,微信最新的6.5.4版本支持了模糊搜索)。

三是通过微信分享小程序实现打开。

小程序的和原生APP的区别?

 

一是原生APP需要下载,小程序则不需要,只需要短暂的加载时间。

 

二是原生APP由于平台的不同,必须开发苹果,安卓两个版本。小程序则不需要,即时打开,即时关闭。安卓用户还可以发送到桌面,某种程度上可以替代原生APP

 

三是由于微信对小程序的限制在1M,所以原生APP实现的功能要比小程序多。

 

由于以上三点的不同,我们来看下小程序的优缺点?

优点:

1,不用安装,即开即用,用完就走。省流量,省安装时间。

2,对于小程序拥有者来说,开发成本更低,他们可以更多财力,人力,精力放在如何运营好产品,做好内容本身;

3,对于用户来说,相较于各种APP,微信小程序UI和操作流程会更统一。这也会降低用户的使用难度;

4,服务更加快捷方便,用户的使用门槛大大降低。 微信做的就是把开发和推广这两项成本尽可能的降低,推掉成本这座大山,改变移动互联网应用的规则,让创造者能把核心资源(钱和时间)关注到用户体验上,去真正为用户创造价值

缺点:

1,对于大型应用来说,无法实现原生APP所具有的全部功能。

2,你所能获取的用户数据将非常有限,微信给你开放的用户数据基本就是头像和昵称还有一定的好友关系。数据对你自己的重要性一定要考虑清楚!

3,小而美,做垂直,功能复杂度有限制,如果想做成庞大的独角兽,必须是高频刚需但复杂度又不是太高,就像支付宝一样

4,用完即走因为没办法多任务处理,你的产品如果不能在一定时间内完成特定场景的需求并且达成自己的目标,你就比较难做。

 

综上几点,小程序前景是非常广阔的。

什么是微信小程序?

这两天被朋友圈刷屏的微信小程序,到底是何方神圣这等来势汹汹。今天跟大家一起来了解一下。

什么人可以参与小程序公测?

微信小程序的公测暂时只开放给企业、政府、媒体、其他组织,个人微信公众号暂时无法参与小程序公测。

此次公测开放的内容包括:

开发支持:提供一系列工具帮助开发者快速接入并完成小程序开发;

开发文档:介绍小程序的开发框架、基础组件、API 及相关开发问题;

开发者工具:集成开发调试、代码编辑、小程序预览及发布等功能;

设计指南:提出设计原则及规范,帮助建立友好、高效、一致的用户体验;

运营规范:介绍微信公众平台小程序的审核标准及运营规则;

小程序体验demo:可体验小程序组件及 API 功能,并提供调试功能供开发者使用。另外需要注意,现阶段每个机构帐号只允许注册最多 50 个小程序,每个小程序一年需要缴纳 300 块钱,所有小程序帐号都需要绑定一个电子邮箱,一个手机号码只能绑定 5 个小程序。

如何注册小程序公测?

注册:在微信公众平台注册小程序,完成注册后可以同步进行信息完善和开发。

小程序信息完善:填写小程序基本信息,包括名称、头像、介绍及服务范围等。

开发小程序:完成小程序开发者绑定、开发信息配置后,开发者可下载开发者工具、参考开发文档进行小程序的开发和调试。

提交审核和发布:完成小程序开发后,提交代码至微信团队审核,审核通过后即可发布(公测期间暂不支持发布)。

开发之前请知悉,这些行为要不得做电商、做新闻、做客服…… 微信小程序让不少创业公司在公众号、服务号之外又有了多一个与用户接触的渠道。不过微信是有底线的,以下这些事情最好还是不要出现在小程序的运营中。过度商业化《微信小程序平台运营规范》强调了小程序需要符合的价值观:

“一切以用户价值为依归、让创造发挥价值、好的产品用完即走,以及让商业化存在于无形之中。在切实符合用户的合理需求和利益的前提下,通过微信小程序所提供的功能和服务,为海量微信用户提供具有持续价值和高品质的服务。所以,小程序本质上应该是提供服务的产品,它是微信公众号、服务号的补充。所以通过在小程序中卖广告的方式获利,显然不符合小程序的价值取向。小程序组团互推、诱导分享互推是很多微信公众号提高粉丝数量的重要方法,虽然这种推广已经存在了很长时间,但并不代表它符合微信平台的规则,微信也已经处罚了部分进行违规互推的公众号。

 

那么小程序的推广是否可以抱团呢?当然不行,微信已经明确规定:

“微信小程序功能的使用,不应依赖于其他微信小程序,即不得以添加关注或使用其他微信小程序为条件;未经允许或未经腾讯公司授权的情况下,也不得展示或者推荐其他微信小程序。至于诱导分享,我们已经看见了 Uber、易到用车的惨痛经历,对此无需太多介绍。根据运营规范,几乎任何一种企图引诱用户转发小程序,或者要求用户必须关注某公众号才能使用小程序的行为,都将导致你开发的小程序无法通过微信审核。不合理获取、使用用户信息很多有安全意识的程序员都拒绝随便在 app 里填入自己的隐私信息,所以在开发小程序时,也请各位多加留意,高抬贵手,因为微信不仅禁止任何不合理、不合法地获取用户信息的行为,还要求在微信小程序中接收的用户数据,只可以在特定的微信小程序内使用。

 

简单来说,开发者不可以要求用户在输入手机号、生日、家庭住址之后才能使用小程序。当然,如果你在经过用户同意后收集用户数据,这还是可以的,但是你只能将这些数据用于特定的公开用途,而且不能对其他用户显示这些个人信息,更不能私下复制、存储这些信息用于其他用途。最后总结一下,如果你开发的小程序需要收集用户数据,那请遵守以下准则:提前征求用户许可;公示用户信息的用途;保持数据的绝对保密。

 

目前在百度搜索微信小程序关键词约有2,000,000个相关结果。关于它是否能成为下一个人人追捧的模式,还需拭目以待。

9032975412

摘要: spring boot2.0 + Thymeleaf3.0开发web项目,实现控制跳转,解析html视图

很多人,都知道spring boot怎么进行接口开发,今天我就来讲讲怎么实现页面跳转,完成一个web项目。我就借助Thymeleaf模板引擎来举例:

 

导入相关jar包(pom)

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.0.1.RELEASE</version>
	<relativePath />
</parent>
<properties>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
	<java.version>1.8</java.version>
</properties>
<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-configuration-processor</artifactId>
		<optional>true</optional>
	</dependency>
	<!-- thymeleaf模板引擎 -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-thymeleaf</artifactId>
	</dependency>
</dependencies>

你用spring-boot-starter-parent是2.0以上时,对应的thymeleaf是3.0以上的版本,相对较新,不要改。如果你用的是spring-boot-starter-parent 1.5,对应的thymeleaf是2.0以上的版本,建议用thymeleaf3.0的。

包选择为:

<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring4</artifactId>  <!-- 如果spring是5:thymeleaf-spring5  -->
    <version>3.0.9.RELEASE</version>
</dependency>

 

静态资源文件映射规则

根据:WebMvcAutoConfiguration→addResourceHandlers→ResourceProperties
可知道:spring boot 默认的静态资源路径如下:

1、classpath:/
2、classpath:/META-INF/resources/
3、classpath:/resources/
4、classpath:/static/
5、classpath:/public/

也就是说可以直接访问以上路径中的文件。
如:

访问地址:/127.0.0.1:8080/css/login.css (不需要加resources、static、public…)

 

thymeleaf默认的视图解析

可以看出,初始化的默认页面路径在classpath:/templates/ 下,视图后缀为.html。也可以根据自己的喜号在application.yml文件中 指定spring.thymeleaf.** =** 来指定值

 

实现请求URL

我就不改动了,采用默认值

/**
 * @描述 	用户相关页面请求
 * @注意		此类只能用@Controller 不能使用@RestController
 * @author  BianP
 */
@Controller  
@RequestMapping("/user")
public class UserWebController {
	/**
	 * @explain 用户登录《GET》
	 * @return  String
	 * @author  BianP
	 */
	@RequestMapping(value="/toLogin", method = RequestMethod.GET)
	public String toLogin(Model model){
		model.addAttribute("welcome", "欢迎登录");
		return "login";
	}
}

 

目录结构

 

请求结果:

734-997-6579

1.继承不同

public class Hashtable extends Dictionary implements Map

public class HashMap extends AbstractMap implements Map

2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。

3.Hashtable中,key和value都不允许出现null值

在HashMap中键可以为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containKey()方法来判断。

4.内部实现上不同,Hashtable和HashMap都用了Iterator。而由于历史原因,Hashtable还用了Enumeration的方法。

5.哈希值得使用不同,Hashtable直接使用对象的hashCode,而HashMap重新计算hash值。

6.Hashtable和HashMap它们两个内部实现方式的数组初始大小和扩容方式。Hashtable中hash数组默认大小是11,增加方式是old*2+1,HashMap中hash数组的默认大小是16,而且一定是2的指数。

爱是什么

时间是一辆滚滚向前的列车,不经意间,2017已从2016的手中接过了接力棒。生命之树又增长了一圈皱纹,年长了一岁,成为我们这些中年人不愿但又不得不接受的新年礼物。人到中年,逐渐褪去了年少的轻狂,回归了生命的沉静。梳理40余年人生的轨迹,开始了对爱的思考。爱,到底是什么?

小时候,家里兄弟姐妹多,靠父亲一人微薄的工资和母亲的勤俭持家勉强维持生活。母亲在小院开辟了一小块地,为全家人提供了虽然很少但却是纯天然绿色的蔬菜;养猪、养鸡,卖掉换钱为我们积攒学费;总是看着我们狼吞虎咽地吃完饭,妈妈才会拿起碗筷;用废旧的纸张叠成飞机、裁剪成各种造型,便是我们最好的玩具;待我们都睡下了,操劳了一天的母亲在煤油灯下又做起了针线活;后来离家去外地求学,母亲又因思念和惦记我们而彻夜难眠……那时的我们,是那么的天真和幼稚,认为一切都是理所当然,一切本该如此。现在想想,父母之爱,是那么的博大而无私,是那么的悄无生息、润物无声而又无怨无悔。

1993年即将结束四年中专生活的我,先后收到了两个男同学爱的丘比特之箭。那个年代,我们还很保守和羞涩,传统文化的教育让我不敢越雷池半步,仿佛遇到了洪水猛兽,斩钉截铁地给予了回绝。在那个单纯的青葱年纪,我们还不懂爱。现在想想,或许那就是一缕基于同学友情之上的喜欢吧。虽然我们毕业后天各一方、再无联系,但喜欢一个人本身没有错,至少它让我感受到人与人之间的一份美好。

参加工作的第二年,经人介绍认识了我现在的先生。大致相似的家境、求学经历和爱好追求,让我们一年后步入了婚姻的殿堂。20多年一路走来,有欢笑,偶尔也有争吵;有成功时的相互鼓励,也有彼此讨厌时的短暂“冷战”;有病榻前的陪伴,更有失意时的相互开导。不知从何时起,年轻时的互不相让越来越少了,取而代之的是更多的彼此宽容、彼此商量和彼此心疼。尤其是女儿上大学之后,突然意识到,孩子终究要离开我们,过属于她们自己的独立生活,能陪伴我们走向人生尽头、不离不弃的,只有伴侣。夫妻之间,受是什么呢?是责任、是陪伴。老伴,是人生最后的存折。

前两年,闺蜜在感情上遇到了“坎”。她有着稳定的工作和幸福的家庭,有对她疼爱有加、责任感爆棚的丈夫和阳光、孝顺的女儿,40多岁的她看上去象30多岁的样子,让人羡慕不已。然而,单位里新换的一位上司,打乱了她平静的情感世界。上司是一位稳重、成熟、性格开朗、充满智慧的人,两人同龄,性格温和贤淑、工作能力较强的她在工作中得到了上司的认可和欣赏,工作配合非常默契。随着工作中接触越来越多,她明显感觉到两个人互相的倾慕和好感,但她多次反复提醒自己,决不允许自己做出有违伦理道德的事情。虽然内心有一丝波动,但仅仅是心理活动而已,她在日常言行上把握的非常有分寸。还好,上司也是成熟理性的,理性和克制让他们的接触始终限于工作范畴。后来,闺蜜主动申请调换了工作部门,内心情感的波澜归于平静。当我听她诉说这件事的时候,她是平静的,但我能想象先前的她应该是有过痛苦的,至少在心情上是难过的。一个人是否真心对你好,你是能感觉到的,即使这个人没有通过更多的言行来表示。但再对的人,只有在对的时候出现,才有可能成就一段美好姻缘,否则将是对两个家族的伤害。

爱,到底是什么呢?我想这个问题没有唯一的答案。爱,是无私的付出,不求回报;爱,是相互体谅和相互心疼;爱,是在你最生气的时候,却能把最伤人的那句话咽回去;爱,是把最好的脾气留给最亲近的人;爱,是理性和克制,是懂得放下;爱,是让彼此变得更好。

拥有爱是人生最大的幸福。父母之爱、同学之爱、师生之爱、朋友之爱,情侣之爱,爱温润着我们的心灵,扮靓了我们的天空,伴随着我们成长和成熟。

付出爱是人生最大的责任。沐浴着爱的阳光,我们也要对那爱我们的人,敞开心扉,回报给他们以真挚的爱,让所有善良的人们,感受到生命的温暖和人性的光辉。

爱,是这个社会不可或缺的润滑剂,是人类精神家园的阳光雨露。但在物质生活五彩缤纷的当下,爱也是需要修行的,那就是“和真爱相濡以沫,和次爱相忘于江湖”。我衷心祈祷,我们每个人都拥有创造爱、付出爱、享受爱的能力,不负爱我们和我们爱的人。

故乡的年味

到了农历的年末,城市的超市里挂满了玲珑华美的红灯笼,玻璃橱窗上也贴上了各式花样的剪纸,这些都是年的符号,也是年的名片。我内心深藏的年味儿犹如一只脆弱不堪的老酒坛被这些符号与名片猛然击碎,老酒倾泻满地,浓郁醇厚的味道漫然飘散。

我小的时候,盼望着过年。从农历的腊月二十三开始,接下来的每一天似乎都是色彩斑斓的,都散发着温馨绵厚的香味儿。村里的老婆婆坐在厚厚的蒲团上教我们唱着童谣:“二十三,祭灶官;二十四,扫房子;二十五,磨豆腐;二十六,蒸馒头;二十七,杀只鸡;二十八,贴画画;二十九,去买酒;年三十,包饺子;大初一,撅着屁股乱作揖。”这首童谣像是我们村里人的过年指南,农历二十三的时候就吃灶糖、祭灶神,二十四的时候就忙着用笤帚打扫屋子,二十五的时候就准备过年吃的豆腐,二十六的时候家家户户蒸枣花馒头、蒸萝卜缨包子……千百年来,太阳沿着亘古不变的轨迹东升西落;冬去春来,人们世世代代遵循着这样的过年流程过年。

腊月二十三是小年,也叫祭灶日,这一天也是我的故乡鲁湾逢集的日子。集市上人山人海,热闹沸腾。我紧跟着父母,看到卖灶糖的嚷着要买灶糖,看到卖鞭炮的嚷着要买鞭炮,看到卖苹果的就嚷着要买苹果……父母一一应允,还会给我买崭新的袜子、鞋子、帽子和衣裳,从头到脚让我焕然一新。父母平时省吃俭用,一分钱掰成两半花。他们平时不肯买水果,不肯买猪肉,不肯买衣裳,到过年的时候却显得慷慨大方。赶集回家的时候,我们像一只只袋鼠抱着大包小包的年货,跌跌撞撞走在回家的路上。我的父母一年四季在农田里忙碌,只有到过年的时候他们才好好享受几天好日子。他们也总是把最好的东西给孩子。

我们这一群疯孩子从小卖铺里买来麻雷子、拉炮、摔炮装在口袋里,在村巷里跑着玩耍,随手将一个摔炮摔在地面上,噼啪一声锐响,吓得鸡飞狗跳。我们玩累了,就在街上挖几个小圆坑,玩弹玻璃球的游戏。至今我已经忘记了玻璃球游戏的规则,但是记得自己输了就将玻璃球送给赢了这场游戏的小伙伴。长大了之后,我发现成人的世界有很多充满玄机的游戏,比儿童的这种游戏更残酷,更深刻。一旦我们在游戏中失败,输掉的不会是玻璃球这么微不足道的东西,可能是长年累月的心血,甚至是所有的自由与幸福。

二十七的早晨,父亲就开始了杀鹅宰鸡。我们一家人在院子里追捕着一只大公鸡。我们对它围追堵截,累得气喘吁吁。它喔喔叫着,四处乱窜,竟然展翅斜飞到东屋的屋檐上。我们高喊着拿起石砾、木棍砸它。它惊慌之下跌进了屋檐下的水缸里。父亲眼明手快,两只手伸进水缸里紧抓着它的翅膀。只见它气息衰弱,一副就擒受死的模样。父亲让我从厨屋拿来菜刀递给他。他一只手提起菜刀,一只手将大公鸡紧按在地,雪白的刀刃在它的脖颈上狠狠剁下去。它顷刻间身首分离,艳红的鲜血滴在铺着残雪的地上,像是落谢的花瓣。它的身子没有了脑袋仍然在地上动弹几下,吓得我脸色煞白。我皱紧眉头,感觉这一幕过于血腥与残忍,就暗暗发誓以后不再吃鸡肉。父亲烧了一桶热水,将鸡毛褪尽,又把猪肉、猪下水冲干净,然后放进地锅,再舀几瓢清水,撒上一层白盐、秦椒、生姜、茴香等。灶膛里的劈柴冒出熊熊火苗,像是一条条馋嘴的舌头吞噬着乌黑的铁锅。一股股鲜润香醇的煮猪肉的香味儿从热气氤氲的铁锅里涌流出来,像波浪似的把整个村庄淹没。

二十八是贴年画的日子。母亲将面粉抓进铁勺里用沸腾的热水搅拌,做成黏黏稠稠的糨糊。父亲在堂屋门口分出每扇门的对联与门画,并用毛刷涂上糨糊。哥哥站在木椅子上贴年画,让我把涂了糨糊的年画递给他。父亲说贴了年画,就等于请来了手持刀枪剑戟、斧钺钩叉的门神,债主不能进门要账,妖魔鬼怪、魑魅魍魉也躲得远远的。我抬头望着威武凛然的门神,心想门神是从天宫来到人间的,一定神通广大,法力高强,就痴想让他们教我几招法术,让我能够像孙悟空一样腾云驾雾,叱咤风云。我望着木门两侧贴好的红对联念。一副对联一共十四个字,很多字不认识。我断断续续地念完后,哥哥哈哈大笑,说我念得狗屁不通。父亲说:“他比去年念得好。去年一副对联只念出四个字,今年念出了八个字,明年应该能念得囫囵。”大后年贴年画的时候我才把一副对联念通顺。

大年三十那天下午我们一家人坐在厨房包饺子。母亲和面、擀面皮。哥哥烧火。父亲和我坐在馅盆前包饺子。哥哥看着我包的饺子大笑,说我包的饺子有的像死鱼,有的像肥猪,有的像笨鸭子,丑极了。父亲从口袋里掏出一枚一分的硬币,然后包进饺子里,说:“今晚谁吃着这个饺子,谁就最有福气!”天擦黑的时候,此起彼落的鞭炮轰炸着村庄,空气里弥漫着丝丝缕缕火药味儿。母亲将包好的饺子下到沸水咕嘟咕嘟的锅里。父亲用铁锨在院子里撒下一层沙土。那些沙土是农历二十五用拖拉机从村头的沙岗上拉回来的,弥散着一丝丝清新淳美的气味。至今我也琢磨不透大年三十村里人在院子里撒下一层沙土的奥妙,大概是除旧迎新、接福纳祥的寓意。我踩在新鲜湿润的沙土上,将一挂红红的鞭炮用竹竿挑起。哥哥从灶膛里取出一根火棍将鞭炮点燃。一阵噼里啪啦的炮响之后,母亲已经将一个个冒着热气和香味儿的饺子盛到了白瓷碗里。一碗碗猪肉白菜馅饺子蘸着老醋,就是我们一家人的年夜饭。吃过年夜饭之后,母亲总是烧开一锅热水。一家人坐在木凳上将脚伸进一只大铁盆里用热水洗脚,边洗脚边说笑。母亲说大年夜洗脚能够洗掉一年的灾病邪祟和祸患困厄。新的一年一定会添福添寿、吉祥平安。母亲还会向我和哥哥的口袋里塞几张崭新的钞票。她说不管大人或小孩子,在辞旧迎新的时候口袋里都应该有钱,这样一年到头都不缺钱花,大家都会有富庶优裕的好日子过。现在想来,从前的年更像是勾画美好生活的仪式。

大年初一的早上我们不能懒床,要早早起床,并且要自觉醒来,家长不能喊醒我们。天蒙蒙亮的时候村里的鞭炮声如同雷震。我惊醒之后一骨碌从被窝里爬起来,揉揉双眼从父亲的香烟盒子里抽出一支香烟噙在嘴边,开门挑起一挂长长的鞭炮,用烟头引燃鞭炮,随后一阵鞭炮声,烟雾腾起,浓烈的炮药味儿在院子里弥漫。吃过早饭之后,大人们三五成群去给家族的长者拜年,要磕头作揖。我和小伙伴们无拘无束地玩耍,拿着压岁钱到小卖铺换成了玻璃球、泡泡糖和鞭炮。

一年又一年悄无声息地过去。年像是一个小伙伴,一只手拿着欢乐有趣的玩具,另一只掂着饕餮美食,大声召唤着我们,让我们心驰神往。我们渐渐地长大,年像是伴随着我们成长。它由一个活泼淘气的孩子变成彬彬有礼的少年,在岁月更替里又变成了深沉稳重的青年。年不会再像从前一样和我们一起玩鞭炮游戏,不会再像从前一样和我们一起偷吃食物,不会再像从前一样和我们一起奇思妙想……

我独坐在沙发上回味着被岁月冲淡的年味儿。我似乎闻到了灶糖的甜香,闻到了枣花馒头的香味儿,闻到了煮猪肉的浓香,闻到了猪肉白菜馅饺子的美味儿,闻到了鞭炮的气味儿……

groop

每个人来到世上,会有很多的人陪我们走过一段又一段的路程!他们或是爱人,或是亲人,或是朋友,或是同事,或是陌生人,或是指引我们的人,爱我们的人,跟我们斗嘴的人,与我们争锋相对的人,各种各样的人、、、

生命的感恩  也正是他们,组成了我们的一生、、、

繁华历尽,方知平凡是真!历经沧桑,终于与人生相遇!那颗满怀感恩,庆幸和祝福的心,是在醉心生命的美丽、、、

细数的甜蜜,止不住的幸运,停不下的幸福气息、、、

感恩父母
对你们的感激又岂是言语能诉的清,讲的尽的!我的一切都是你们给的,没有你们,我感受不到生命的美丽;没有你们,我感受不到这人世间种种妙不可言的味道;没有你们,我不会如此幸福和幸运、、、

谢谢你们的养育,你们的不离不弃;谢谢你们的疼惜,珍爱,理解和鼓励!谢谢你们给的温暖和自由,谢谢你们的付出,你们的宠爱,你们的真情,谢谢你们的在乎和指引,谢谢你们的陪伴和守护,谢谢你们的信任和真心、、、

谢谢你们这一路来,不管多么的辛苦,多么累都无怨无悔,谢谢你们那么相信我,支持我,爱我,疼我,珍惜我;谢谢你们的无私,你们的心疼,你们的关心,谢谢你们给我的暖心!谢谢你们,真的很感激,很感激你们,因有你们,再大的风雨,都心生暖意;因有你们,再多的波折,都无畏无惧;因有你们,这一生,我很幸福,谢谢!

孝,是回报的爱!守护你们,爱你们,疼惜你们,是我生命中最大的荣耀、、、

感谢生命中的那些朋友
谢谢你们,谢谢你们的真,你们的善!谢谢你们的真情流路,你们的关爱和理解,你们的调皮和率性,你们的真诚和珍惜,谢谢你们的提醒和温暖,谢谢你们的自然和随性,你们的幽默和恶作剧,谢谢你们的真心和善良,谢谢你们给我的每一次暖心和感动,那是用言语无法形容的温馨!谢谢,这一生有你们,真好!

在一起的点滴,相遇,相识,相知,相惜,矛盾,误会,相拥,陪伴,关爱,温暖,理解,支持,鼓励、、、

谢谢你们,我亲爱的朋友,感谢你们的相伴,生命因有你们,才那么暖心!谢谢!

感谢青春
在那段岁月,她是那么的自由,率性,尽兴,醉心!那是她生命中最洒脱不羁,慵懒随性,无拘无束的时刻! 花季的少女,年少轻狂,无畏无惧,神采飞扬!那样的真实不做作,那样的简单快乐,那样的倔强坚强!疯疯癫癫,随心畅意!一切都是那么的痛快尽兴,那么的不负此心!或是随心所欲,或是疯狂执意,或是活泼任性,或是无理取闹,或是无中生有,或是火爆脾气,或是意气风发谈天说地,或是骄傲自信,或是黯然神伤,或是情窦初开、、、

那时的欢笑,闪耀,痛快,自由,真实、、、

为了一些小事而闹的脾气;为了一些情绪的大吼大叫;为了一些不平的冲动,为了一些感动的相拥相抱,为了一些莫名其妙的念头的调皮恶作剧,为了感情的疯狂与伤痛!无聊时的古灵精怪,追星崇拜的激动兴奋,开心时的高跳欢呼,不开心时的随性怒气,渴望温暖的脆弱心灵,还有聊不完的话题、、、

她们会互相打击,也会互相安慰!她们会自尊自爱的倔强;她们会任性的只做自己;她们会争吵怒骂第二天又相拥嬉戏;她们会对世人评头论足而又骄傲的抬头不屑或是激动地说个不停!她们会调皮的戏弄别人,也会充满好奇地聆听!会好笑的做着各种表情,会躲猫般的藏匿,会心之所想的随心所欲,会越挫越勇的斗来斗去,也会相视一笑而不需要言语、、、

十几岁的花季,她们做着最真自己!她们的温柔,她们的泼辣,她们的善良,她们的爽朗,她们的真诚, 她们的自由,她们的率性,她们的真情,她们的青涩,她们的本性,她们的活泼,她们的痛快,她们的尽兴,她们的泪水和坚强,她们的悲伤和期待,她们的绝望和城站、、、

感谢青春,谢谢它带给我的美丽!感谢它的真善美,谢谢它的自然本性、、、

感谢那段青涩的恋情
情窦初开的岁月,那么敏感,固让喜怒哀乐都是那么的深刻!也曾海誓山盟,也曾幸福暖心,也曾心心相印,也曾无助迷茫,也曾心慌逃避,也曾伤心绝望,遍体鳞伤、、、

终于有一天,我们学会了放下,学会了感恩和祝福!

爱情,又何常不是一段完整的经历,相遇,相识,相牵,心动,相知,相恋,暖心,甜蜜,认定,不安,误会,茫然,手足无措,无助,受伤,逞强,患得患失,迷茫,难过,绝望,心痛,酸涩,成全,祝福,求不得,放不下,忘不了、、、但即使如此,它也让人无怨无悔,因为爱过,所以幸福!

与其静坐观望人间事,不如入世品味人间情!

感谢那些前辈
谢谢你们的支持和相信,谢谢你们宠爱和疼惜,谢谢你们的尊重和鼓励,谢谢你们的理解和守护、、、

谢谢你们的指导,谢谢你们为她点点滴滴的考虑,谢谢你们的包容和不曾停止的关心!谢谢你们的认可和放开,让她自由的去做自己,不再束缚,让她随心而飞,飞去那些她想要去的和没有去过的地方!

非常庆幸这一生能遇见你们,谢谢你们给予她的教导和指引,成长和明心!说不尽的感动和尊敬,说不完的祝福和感恩、、、

感谢生命中的那些对手
因为你们,她才那么清楚的认识到自己的不足;因为你们,她才成长的那么闪耀;因为你们,她才知道自己有多坚强!也因为你们,她才看见人心百态的奇妙;也因你们,她才懂得世事无常的妙不可言!曾怨过,怒过,不服过,生气过,迷茫过,但最终都变成了感激!

因为你们,曾经的小女孩不再逃避,不再自欺欺人,不再怨天尤人,不再迷路彷徨!那些生命的经历,那些风雨波折,因接受而变的坦然,因面对所以尽兴!生命因有你们,才更加精彩 ,痛快和令人期待、、、

感谢那些同事
茫茫人海的相遇,带给她的喜怒哀乐,是那么的有滋有味,回味无穷!每个人都有着自己的思想,每个人都是那么的特别,有个性!也许曾尔虞我诈,也许曾争锋相对,也许曾相视无言,也曾开怀畅饮,也曾患难与共,也曾相互聆听,也曾彼此温暖,也曾真诚相待,也会相约而行,也会嬉戏耳语,也会说说八卦,开开玩笑,没有距离、、、

因有你们,前行的道路总是那么多姿多彩,乐趣无穷!

感谢生命中的那些过客
你们的匆忙,让她也许已经记不清你们的名字了,对你们也仅留下只是认识过的熟悉,但却对你们满怀感恩! 谢谢你们,谢谢你们来过她的世界,谢谢你们在她故事中的参与,谢谢你们曾陪她走过的岁月,让她不孤单的点滴事迹,谢谢你们带来的气息,谢谢你们渲染的气氛,谢谢你们在这世事无常中的扮演,在她人身经历里编织的环境!谢谢你们!

感谢生命
空杯的心灵,放下所有的一切!其实我们和所有人一样,一样的只是一个人一颗心,一样的在这个世间经历,一样的在人生中感受、、、

感谢生命中的所有的滋味,那样的奇妙,那样的回味无穷!是那些相遇的人,是那些生命的经历,是那些妙不可言的场景,是它们组成了我们的一生!感谢她们在我生命中的参与,感谢她们给与我的每一次心湖波动,思绪纷飞!感谢遇见他们之后的每一次遭遇和经历,每一份滋味和感受! 非常的庆幸和感激能和你们相遇,谢谢!还有那些生命成长的经历,和人生中的印记场景,谢谢你们的妙不可言,让我的一生不虚此行、、、