感悟

这周做东西的时候收获了不少东西。踩了不少的坑,分享一下这些坑,让大家以后别像我一样掉坑里了。

关于java读取properties的问题。

这个问题是在开发日志收集预警统计的时候遇到的,因为这个些问题开发过程中产生了不少问题。

问题描述:java读取properties中的时候使用流的时候默认中文是乱码

产生原因:看了一下源码,读取的时候不设置流的话默认会以char来读取。而properties文件会有2中情况。
1.使用的时候会采用转码格式使用,即ascii码以及unicode转义码。
2.直接类似文件操作。

解决办法:根据Java自带的类java.util.Properties来看使用第一种是比较好的方式,这样就会避免中午乱码的可能。
第二种方式只有针对流进行二次封装了。设置好流的读取编码,这样也可以避免乱码问题。

阅读全文

《精益创业》读后感

我花了几个星期阅读这本书,不得不说大部分内容我真的很喜欢。这本书也是我读的第一本关于创业的,我觉得它的作用不仅仅是对于创业人员。对于开发人员它也会影响对开发产品把握和认知。

创业的定义

书中前两章划定了创业的人员,定义了“创业”。

开发-测量-认知的反馈机制。

提倡企业进行“验证性学习”,先向市场推出极简的原型产品,在不断试验和学习中,以最小的成本来验证产品是否符合用户需求和市场需求。为了尽快的验证市场与客户需求,要求更快的迭代产品,然后用户反馈,修改然后再迭代。也就是“开发-测量-认知”的循环。

  • 尽早接触顾客,让客人使用产品
  • 最小化产品
  • 尽早放弃已经验证为用户不需要的功能
阅读全文

REST学习了不少,但是对其的认证方式却很模糊。通常一个好的REST API应该能适应浏览器或者本地客户端的认证。我开发了一个JAVA的WEB程序,提供了一个service的REST API,一开始我计划采用HTTP session的方式来认证。HTTP session可以很方便的提供认证。无论是ajax还是传统浏览器方式基于API可以很方便的认证,但是当我在使用客服端的时候遇见了问题。于是我开始尝试无状态的认证方式。我尝试了很多认证方式,比如HTTP basic 、 数字认证、http session、cookies、xsrf等等……。现在我都不知道是使用什么才是比较适合的认证了。

HTTP session VS stateless auth token

这·两种方式有什么不同?我不是太了解。

http session:

  • 基于URL,必须提供一个url来认证
  • server必须记住一些用户信息,而且会返还session id来标记(session的实习原理)
  • 浏览器或者客服端必须每次在请求中包括这个字段,用来标示身份。(当清除cookies的时候会发生认证丢失)
  • 浏览器或者客服端不用输入认证信息,当已经认证了的时候。(浏览器会发送比如session id给server)

stateless auth token:

  • 需要请求的URL。
  • server只会返回成功与否的状态,不会返回任何key、value。
  • server会创建auth token然后发送给客服端。
  • 访问需要权限的页面的时候,要求带着auth toke。

两种方式都很容易实现。无论是在浏览器或者客服端使用。

http basic

使用SSL协议的很多WEB service网站都使用http basic 来认证。http basic 认证非常的容易实现。但是认证需要https通道,登出注销无法控制。

参考文档

注释和共享

读《和时间做朋友》有感

花了一周时间,断断续续的读完了《和时间做朋友》。书中说了很多道理,有的感觉有用,记录下来。

感受

  1. 态度的重要性

本书从人,自己的态度去描述了时间。其中指出了时间的不可变性,但是人为的态度是很不一样的。书中例举出来一个常见现象:比如学生常问老师单词的意义。为什么?为什么学生不能自己解决呢?书中指出是因为“懒惰”,不愿花费时间去解决。

从中会感慨很多,人何尝不是懒惰的?比如下面情况:

  • 有电梯和楼梯的时候,大家都愿意走电梯。
  • 网上能获取的资源,都不愿意去图书馆。
  • 有近路的时候,都走近路。
  • 愿意问别人自己不知道的问题,不愿自己研究。
阅读全文

selector是jQuery主打的一个模块,可以说jQuery的强大就是其selector。目前其的selector已经分成另外的一个(sizzle)[]项目了。

在jQuery中采用调用sizzle来实现selector,接下来详细分析。

模块结构

jQuery的selector模块依赖如下:

selector -> selector-sizzle -> sizzle

主要实现是sizzle。selector-sizzle只是定义了一些jQuery常用的sizzle的变量。selector直接就是一个申明依赖。
阅读全文

DOM是什么?

DOM(文档对象模型)是针对HTML和XML文档的一个API。DOM描绘了一个层次化的节点树,允许开发人员添加、移除和修改页面的节点。

自JavaScript成为最常用的语言时JavaScript和DOM通常被视为独立的实体。DOM接口用于存取、遍历和控制HTML和XML文档。

DOM起始于Netscape(网景)和Microsoft(微软)的DHTML(动态HTML),但是现在它已经成为基本文档结构及查询接口。
阅读全文

jQuery中的parseHTML模块主要是用来创建DOM元素的,类似于createElement。

1
2
3
4
5
6
// data: html字符串
// context (可选): 如果定义, 将会在这个上下文中将创建的HTML片段, 默认是document
// keepScripts (可选): 一个布尔值,表明是否在传递的HTML字符串中包含脚本。
jQuery.parseHTML = function( data, context, keepScripts ) {
// ...... 实现省略
}
阅读全文

jQuery从1.5版本开始引入了Deferred对象。在jQuery中Deferred对象用来解决回调函数问题。

Deferred对象是非常cool的。比如:当你想将一个事件程序关联到一个鼠标点击,你就会为它分配的元素的onclick事件,如:button.onclick= MyHandler。这个控件也需要这个处理的逻辑的时候,比如:button.onclick= MyHandler2时。常规中这样是满足不了要求的,因为你只能在一个时间分配一个功能。原来可以使用 DOM的addEventListener()的功能,它允许您添加尽可能多的事件,这个问题最终得到解决。现在,类似的问题又出现了使用Ajax调用。这一次,因为Ajax的限制,只支持一个回调函数。 所以,再使用DOM的addEventListener()却不可能满足。所以引入了Deferred对象。
阅读全文

使用jQuery库时,通常会使用ready函数。jQuery的ready函数不同与window.onload,如果你测试一下就会发现。

window.onload是在所有资源都加载完成时候触发,当资源比较大,比如图片文件较多的时候,window.onload的触发就会延迟很多,
影响用户体验。

jQuery.ready是在页面准备好之后就会触发,会先于window.onload事件。

jQuery是如何实现这个过程的呢?看完ready模块就明白了。
阅读全文

Javy Liu

author.bio


author.job


beijing