The Attitude to Blogging

Blogging the work&life.

Uber的初体验

| Comments

自5月17日,第一次使用uber出行后,一发不可收拾,现在共使用uber次数达10多次,见识到了各式的私家车,以及各样的司机,有与司机聊天的过程中,也见识到互联网租车服务不仅给人们的出行方式上带来了影响,在是思想上也带来不小的影响。

武汉的出租车拒载是名声在外,每次打车都小心翼翼地向司机询问“师傅,去不去XXX?”,换回来的就是骄傲的摇摇头,如果你一时气愤跟他理论几句,那他一定操起浓重的汉腔和爆脾气与你辩论一番,尔后在双方都不愉快地情况下,出租车扬长而去。出租车行业缺乏管理,各种拒载、拼车的现象屡见不鲜,出租车司机抢道,不文明驾驶更是不在话下。以前的现状是:乘客打不到车抱怨,司机赚不到钱抱怨(并且以此来选择乘客而拒载)。有问题就会有相应的解决方案,这时uber横空出世了,很大程度上解决了乘客打不到车的问题。将空余闲置的私家车利用起来,根据用车高峰时段和节假日阶段定价,变化多样的优惠活动,极大地调动了私家车主的积极性。比出租车更舒适的乘车环境以及更便宜的乘车费用,也极大地调动了乘客使用的积极性。而且uber的派单模式,很大程度地避免了私家车主对乘客和服务线路的选择,也极大地促进了乘客叫车的成功率,这也是我愿意使用最大的一个原因,不想再经历之前使用滴滴快的时的那种尴尬,明明周围有很多空车,但司机就是不抢单,很是无奈。

前两天有点急事,由于手机没电,无法叫uber,就乘坐了一次的士,习惯性地和司机有一句没一句地闲聊。的士大叔对uber专车第一印象就是“黑车”,对于司机的看法我也没有去辩论,以后自有分晓。后来聊到了的士司机每天都必须向公司交纳不低的”份子钱”,而且司机对于出租车只收钱而无任何实质性服务的出租车公司更是义愤填膺。其实这里存在几个问题,司机对于旧的事物,很是厌恶,厌恶他们仅仅因拿到国家出租车的指标,就可以收取高昂的份子钱,但对于新鲜事物(专车服务)也是一味地否定,不能试着去接收新的观念,并去改变自己的现状。仅仅是从自身出发,抱怨专车司机抢夺了他们的生意。他们没有意识到,对于做专车司机,他们是有先天优势的,技术本来就过硬,需要转变地只是服务态度而已。

相反对于这10余次的专车体验来说,整体上司机的平均服务质量都比较高,基本能够在不影响乘客的基础上去服务。在跟他们闲聊的过程中,也明显能感受到,他们对于新鲜事物的接受能力要大大超过的士司机,甚至有司机大谈在当今社会没有互联网思维不行。在发展如此迅速的当今,确实是变则通,不变则不通。

拿出租车司机和专车司机的思想做对比,其实也可以反映出社会上两种人的观念:一种人可以很快地接受新的事物,并可以抢得先机,从中获利,也就是我们工作中常说的“拥抱变化”的能力非常强; 另一种人呢,相反固守着自己的饭碗,仅只盯着自己饭碗里的食物,对于外界的变化充耳不闻,并且仇视一切与自己有利害关系的人或事物,固步自封在自己的世界里。两种人最后的结局,稍微思考下也能得出个大概。在变化异常迅速的社会中,谁能快速转变观点,夺得先机,谁就能够更好地生存下去,并且幸福指数也会更高。

最近的uber出行过程中,对于这种空间共享的和谐方式非常感兴趣。对于同样以共享住宅以服务于大众的airBNB也非常感兴趣,以后旅行出游,打算体验一下这一方式,相信也能带来非常棒的体验。

Spring AOP

| Comments

对Spring AOP的实现机制一直是只知其然,而不知其所以然,平时工作中也仅限于会配置会用而已。前几周Debug时,发现BeanCopier这个类,进而了解到 cglib (code generate library)这个jar,后来顺藤摸瓜地发现,cglib是实现Spring AOP动态代理的基础,就想着写对Spring AOP的理解梳理一下,并参照网上的例子,在本地搭建maven工程调试了下。查看到是如何通过Enhancer来生成代理类,了解其运行原理。

AOP存在的价值

AOP 专门用于处理系统中分布于各个模块(不同方法)中的交叉关注点的问题,在 Java EE 应用中,常常通过 AOP 来处理一些具有横切性质的系统级服务,如事务管理、安全检查、缓存、对象池管理等,AOP 已经成为一种非常常用的解决方案。 解决了一些OOP无法解决的问题。是OOP很好的补充,在保证原有实现类和方法不变的情况下,添加额外的一些操作,从另一种行式上实现类的开闭原则

应用场景

  • 切面上实现事务,当要在某些/个方法上实现事务时,将方法定义为切面,使用Spring AOP来实现事务
  • 切面上记录日志,当某个Action被人操作或Service调用时,可以将时间(操作或调用时间)、人物(操作人或调用方)记录下来,方便问题定位。
  • 权限控制,在某个类上加上权限控制,在程序运行过程中,通过CGLib动态生成带有权限或没有权限的类,由此来实现权限控制。

Spring AOP 支持的4种类型advice

  • before advice 在方法执行前执行
  • after returning advice 在方法执行后返回一个结果后执行
  • after throwing advice 在方法执行过程中抛出异常的时候执行
  • Around advice 在方法执行前后和抛出异常时执行,相当于综合了以上三种通知。但在所定义的AroundMethod中要显示地去调用主体方法函数。

AOP代理

代理分为静态和动态两种。静态是指使用AOP框架提供的命令进行编译,从而在编译阶段就可生成AOP代理类,因此也被称为编译时增强,可使用AspectJ在编译时增强进行AOP; 而动态代理则在运行时借助于JDK动态代理或CGLIB[1]等在内存中“临时”生成AOP动态代理类,因此也被称为运行时增强。 一般来说,编译时增强的AOP框架在性能上更有优势,因为运行时动态增强的AOP框架需要每次运行时进行动态增强。

Spring AOP 采用运行时动态地、在内存中临时生成代理类的方式来生成AOP代理。Spring AOP框架对AOP代理类的处理原则是:如果目标对象的实现类实现了接口,Spring AOP将会采用JDK动态代理来生成AOP代理类;如果目标对象的实现类没有实现接口,Spring AOP将会采用CGLIB来生成AOP代理类—不过这个选择过程对开发者完全透明,开发者也无需关心。当Spring AOP选择使用JDK动态代理时,直接使用JDK提供的Proxy和InvocationHandler来生成AOP代理即可。

简而言之:AOP原理的奥妙就在于动态地生成了代理类,这个代理类实现了对原有类方法进行的额外的操作。

Reference

  1. Spring AOP 实现原理与 CGLIB 应用
  2. Spring AOP官方文档
  3. 深入浅出 java动态代理

[1]CGLIB(Code Generation Library)简单来说,就是一个代码生成类库,它可以在运行时候动态地生成某个类的子类。

我为什么又开始写博客了?

| Comments

小学时,老师要求每天要写日记,记录当天发生的事情,为每次语文考试作准备,记得当时最头疼的莫过于800字作文,像我这种在小学时明显偏科(偏数学)的问题学生来说,更是如此。当时日记连流水账都算不上,只能说是应付老师的凑数字而已。

中学时代,由于课程增多,学习压力也上来了,语言老师也就适度“减负”了,把日记改为了周记,每周写下自己印象深刻的所看,所听或所感,不要求写得多么好,但要求是真实的感受和见闻。当时每每玩到周末后的最后几小时才提笔开始写作文,有时提笔分神半个多钟头,也才写完第一段…..以致每回作文都是个人成绩单上的一大短板。后来到了初三,不知是个人醒悟还是在老师的循循善诱和各种威逼之下,尽然养成了每天写日记的习惯,现在想来,可能是情感和压力宣泄地需要吧!这个习惯一直坚持了两年,跨越了初三和高一。在当时的氛围下每次看着自己写下的文字总能安静下来,去思考一些东西。后面高二玩耍去了,高三备考去了,也把这一优良的习惯给丢失了。

大学时,空闲的时间更多了,但好玩的也似乎更多了,也没能重拾这一习惯,不过也会偶尔在心情波动比较大或环境变化的时候,写些随笔,通过文字来让自己安静下来,更好地面对生活中的变迁。

在大学时,接受到另一好玩且有用的工具,event-time日记。每天晚上将当天自己所做的事及花费的时间记录下来,长此以往来让个人更好地感知时间,也可促进个人更好地把控自己的时间。断断续续的记过一段时间,最长的一次,连续记录72天,由于没有坚持下来,也没能很好地体会到它的好处。现在重新写博客的同时,也尝试着记录event-time日记。

总是仗着个人记性比较好,所以以前都没能体会”好记性不如烂笔头”。不过后来发现慢慢地很多事情,很多宝贵的经历和教训都忘了。再次写起博客,有几个原因:

  • 给时间一个更精细的度量,记录生活的点滴
  • 作为一个程序员,要学习的技术和领域不断更新,写博客可以使自己更好地思考,避免由于要学量大而”蜻蜓点水”。写技术博客,可以逼迫自己更深入地理解技术的内在机理,从而养成思考的习惯。
  • 浮躁的生活和社会环境,更需要一份静,一点专,文字可以促使人安静地思考一些东西。

一周年

| Comments

求学约莫十六载,工作一年,mark一下,从工作和生活来总结一下,以更好地把握当下。

工作

在工作中也经历过一些事情,同事的离去,部门的调整,自己的生活和工作也多少受到些影响,从心态,工作内容上来总结下工作一周年。 结合老同事所提的意见。

生活

生活类的总结。 体育运动,如羽毛球和游泳。

2014年目标:养成写技术博客的习惯

在这里记录所思,所想,为时间找一把更精细的尺子。

Learning Markdown

| Comments

On the beginning of contacting Octopress, which is a fantastic Blogging tool, I find markdwon is a perfct “text-to-xml”, you can use it to enjoy wonderful text edit.Usually, I make note in the evernote, but it’s waste of some time to compose the type. I think I could solve this problem to use markdown grammer, now start the journey to study.

Bold word: Bold word

italic: I’m the italic ooh

Following is the mark of classify

  • Firstly
  • Secondly

## Secondly

  • the format of writing formula: (the Pythagorean theorem)

$a2 = b2 + c2$

  • this is a highlight words

  • the way to insert a picture

tool-editor

the basic usually grammer is introduced abovely, about the detail, you can look at the documents followling

Markdown grammer manual

Author: weibo @lj_wang Blogwanglijie

9th March, 2014

in Wuhan

Say Hello to the First Blog in GitHub

| Comments

This is the first blog in GitHub.
In order to make a blog in Github, I learn how to use Git again. (I contacted GitHub in the July,2013, but give up not soon.)
Maybe this is another chance to learn in GitHub, and make a little change in the long way of lifeLearning.