技术
FastDFS资料整理
需求至上,最近的,尽心费神,搭建图片服务器,研究了下分布式存储,最后选用了轻量级的fastdfs,刚接触使用难免会踩坑,整理些互联网上的资料都是大牛们的走过的路,这些资料能尽量避免少踩坑。
介绍
最先看的是由FastDFS的作者happyfish100发表的分布式文件系统FastDFS架构剖析
原理篇
Java后台验证组件
在项目中前端和后端的验证都必不可少,公司使用的框架是基于Spring MVC开发,但未对验证做相应的解决方案,在网上找到了Validation.FO的验证框架,顿时被其简洁的设计所吸引,经过对其自定义的拓展开发,集成到了项目中。
Validation.FO 框架说明
- 这是一个验证框架,并且是一个 独立的验证框架 ,不依赖与其他已有的框架;
- 可以自由的嵌入到其他框架,比如Spring、Struts等流行框架,但实质来说他是独立的,所以无所谓嵌入到哪里,如果需要在GUI桌面应用中,也是完美的;
- 配置简单,可自由扩展验证器,实际只要实现IValidator接口,以及在rules.fo.xml中添加相关的配置即可;
- 支持Spring接口
- 使用过程中,你会感觉好像只用了 IValidateService.validate() 一个方法,这会让人感觉良好
Spring MVC接收List集合和数组参数
Spring MVC在接收集合请求参数时,需要根据参数情况对Controller和前端JS代码做相应的调整。在接收基本类型的List或数组时,只需使用@RequestParam
指定对应名称即可完成转换。但是在接收对象实体类型的List时,需要在Controller方法的集合参数里前添加@RequestBody
,而@RequestBody
默认接收的enctype (MIME编码)是application/json
,因此发送POST请求时需要设置请求报文头信息,否则Spring MVC在解析集合请求参数时不会自动的转换成JSON数据再解析成相应的集合。
AJAX跨域POST问题(HTTP,HTTPS)
浏览器遵循同源策略(same-origin policy),它不允许当前站点的脚本与不同源的站点之间进行数据交互,只要协议、域名、端口有任何一个不同,都被视为不同源。但有时确实又必须在当前站点通过Ajax请求其他不同源的资源,这明显与同源策略相悖,于是就有了JavaScript跨域问题。
至于为什么要有同源策略,可以Google一下同源策略的详解,这里只记录如何解决Ajax跨域POst的问题,包括不同协议(HTTP, HTTPS)之间的Ajax请求。跨域问题的解决办法有很多,对于端口和协议的不同,只能通过后台来解决。
跨域资源共享(CORS)
CORS原理
CORS(Cross-Origin Resource Sharing)跨域资源共享,定义了一种跨域访问的机制,当必须在访问跨域资源时,浏览器与服务器应该如何沟通。CORS背后的基本思想就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功还是失败。
MySQL获取汉字拼音首字母函数
功能:支持多个汉字
用法:SELECT PINYIN(‘单身不是狗’);
+———————-+
| PINYIN(‘单身不是狗’) |
+———————-+
| DSBSG |
+———————-+
1 row in set
注意:数据库的字符编码集得是UTF8或GBK才行。
编程高手的进阶之路
对于外界,Coding是被神化的,似乎需要极高的智商和热情才能从事这个行业。
IT界聪明的人很多,但极具天赋真正的能称之为天才的人不多,一般人们口中所谓的天才,只不过是比平常人更快的掌握技能、完成工作罢了;只要你找到了正确的方向,并辅以足够的时间,你一样能够踏上成功彼岸。
工作中解决问题的途径有很多,你能最快想到的方法一部分取决于你的天赋另一部分是靠经验。事实上,大部分人由于平时的工作繁重,不会去思考寻找最优的解决方案,写的代码能刚好满足需求就算完事了。这样无法得到提示你甚至会无形中加重自己的工作量,因为随着年龄的增长,属于你自己的时间会越来越少,你的精力会被生活瓜分。
如何才能得到最优秀的方案呢?
首先,我们得知道什么才是最优秀的解决方案,最优解决方案需要你能够走在需求的前面,将当前需求里有的、没有直接提出来的、现在暂时没有但将来可能有的等等,及编程潜规则等各个方方面面都综合考虑,给出最优方案。以一招胜万招。
你不再被需求牵着走,而是你牵着需求走。注重细节,注意那些当前需求里没有明文给出的细节:代码性能的差异、运行平台(浏览器)的差异、需求的隐性扩展、代码的向后兼容等等。