摘要:早期的前端是由后端开发的,最开始的时候仅仅做展示,点一下链接跳转到另外一个页面去,渲染表单,再用Ajax的方式请求网络和后端交互,数据返回来还需要把数据渲染到DOM上。写这样的代码的确是很简单。在Web交互开始变得复杂时,一个页面往往有非常多的元素构成,像社交网络的Feed需要经常刷新,展示内容也五 阅读全文
posted @ 2020-06-22 20:50 猫叔玩流量 阅读(160) 评论(0) 推荐(0) 编辑
摘要:今天在人人都是产品经理的上,看到一篇文章 《一个创业程序员的35岁人生总结(下)》 。其实也道出了我曾经作为技术人员,各种失败的尝试。 下面是一种的一段引用,我非常认可 先说技术,技术是我死磕时间最长的技能。最早在大学选择FLASH,完全是出于爱好,当时别说我,全世界估计也没几个人能预测到仅仅两年后 阅读全文
posted @ 2020-06-21 13:41 猫叔玩流量 阅读(2477) 评论(17) 推荐(11) 编辑
摘要:开始写blog有两年了,刚开始的时候由于没有独立主机,要在各大技术blog中进行选择,作为一个java程序员,自然首先想到的是javaeye (iteye的前身),或者是最著名的程序员网站csdn,但是最终选择了博客园,虽然刚开始的时候还不知道这是一家以.net技术为主的社区网站。当然,这一篇文章肯定不是为了拍马屁的,最近看了很多对于微信产品设计的讨论以及张小龙的产品观,主要是从产品设计的角度来看待用户或者技术人员的选择,我从以下几点来分析为什么选择博客园。1.核心功能要突出我们做一个产品,这个产品肯定要突出自己的核心功能,你的核心功能是什么,这个不能经常改变。javaeye开始的时候定位是非 阅读全文
posted @ 2013-12-02 09:05 猫叔玩流量 阅读(7037) 评论(62) 推荐(46) 编辑
摘要:前几天用微信支付预约了小米三,以为没有多少人会开通微信抢手机,于是并不在意,等今天再去抢的时候,发现已经卖光,让我对觉得不可思议。后来看新闻,有630W人用微信支付参与预约。先无论这个数字是否有水分,但是至少说明这次微信支付获得了非常大的关注度。在微信5.0之前,就听说微信要推出支付,从当时的想法,直接和财付通关联即可,就和淘宝以及支付宝打通一样,这样选择财付通支付就可以ok了,这样可以扩展财付通的使用场景,增加财付通的市场占有率。但微信5.0之后,大出乎我的意料,竟然直接绑定银行卡,完全跳过忽略了财付通(虽然后背是财付通提供技术支持),不依赖现有的用户,而是重新去挖掘用户,一直很费解,当时只 阅读全文
posted @ 2013-11-29 09:11 猫叔玩流量 阅读(6635) 评论(22) 推荐(12) 编辑
摘要:在上一篇文章里面提到了 《跨行清算的实现原理》,这次来分析一下线下支付的场景和流程。今天看到一篇文章:http://www.huxiu.com/article/23248/1.html?f=chouti 银泰和支付宝线下合作,推广支付宝当面付款的功能其实仔细分析一下,觉得当面付这个功能说实在的,对消费者来说,并没有太大的优势,主要表现在以下几点:1 当面付的资金要么从支付宝余额支付,要么从关联的快捷银行卡支付。对于大多数用户来说,直接使用信用卡支付即可,为什么要经过支付宝钱包绕一圈,人为增加了一道手续。2 线下支付最重要的是支付效率,从个人经验来看,银行卡的支付效率是除现金之外,目前线下支付场 阅读全文
posted @ 2013-11-28 09:16 猫叔玩流量 阅读(7427) 评论(9) 推荐(3) 编辑
摘要:最近看了很多银联方面的清算系统的设计原理,对于跨行清算系统有了很大的了解,写这篇文章的目的是在于从一个程序员的角度去思考一个跨行清算系统的架构是如何实现的以及整个过程中我们有哪些思想是可以借鉴的。由于金融里面涉及到太多的专业名词,包括借贷,备付金,头寸,调拨等等,这里不会涉及到这些,取而代之的是以大家可以理解的概念去解释。下面简单的介绍一下两种跨行清算系统的实现原理以及特点。一种跨清算系统是我们最熟悉的银联,还有一种是越来越流行的第三方支付系统,比较典型的是快钱。首先来拿生活中的一个非常常见的例子来说明跨行清算的整个过程,这里面不涉及交易费等其他概念。跨行取款流程张三是工行的持卡人,他需要取现 阅读全文
posted @ 2013-11-24 09:41 猫叔玩流量 阅读(28842) 评论(15) 推荐(11) 编辑
摘要:最近看了几篇《逻辑思维》的视频,这是我第二个比较认同且愿意去看的脱口秀的节目,和高晓松的晓说不同,这个脱口秀更偏向发表个人的一种独特的见解,关注互联网对人类社会带来的具体影响。在《逻辑思维》中,有几期是互联网对大型组织的影响以及个体如何在互联网的影响下做出对自己更有利的影响。里面说的一种人才我觉得很有意思,就是U盘型人才——自带信息,不装系统,随时拔插,自由协作。简单的说就是一个自由职业者,利用自己的技能通过互联网协作的方式去实现自己的价值,而不再依赖于任何组织。说实话,这个也是我工作几年一直在思考的问题。在传统型社会,你对社会的价值很难直接反映出来,你需要依附一个组织,在这个组织中提供自己的 阅读全文
posted @ 2013-11-21 12:21 猫叔玩流量 阅读(2100) 评论(11) 推荐(4) 编辑
摘要:最近在项目里面遇到一个比较难以解决的问题,简单的说就是查询问题。某一张表的数据量比较大,很多业务都会根据条件来查询相关的数据,查询主要分为两类,一类是业务查询,能够根据指定的条件查询出相关的数据,数据量比较小,查询速度快,一类是后台查询,偏向数据分析,特点是查询耗时长,查询数据量比较大。由于大量系统访问这个数据库,那么对数据源连接的实时性要求就比较高,如果后台查询大量占用数据源的连接,会影响到外部业务,从而影响业务功能的稳定性。如何解决这个问题,在一般的情况下,我们首先会考虑设置一个合理的超时时间,由于业务查询都是大多是根据关键字查询,耗费时间都会在几十毫秒之下,很少会有大量长耗时的sql,后 阅读全文
posted @ 2013-11-18 18:20 猫叔玩流量 阅读(2101) 评论(4) 推荐(3) 编辑
摘要:这段时间一直都在学习python,主要目的还是打算学习一门互联网的编程语言,为后续的职业生涯做一些规划,毕竟java在互联网除了电商领域有叫广泛的使用场景之外,在互联网其他领域还不是很普及,并且java太重量级了。而python在相对来说轻量级并且易于使用,很适合互联网产品快速迭代开发方式。个人之前接触的唯一一个纯面向对象编程语言就是java,以至于很长一段时间内,我都以为面向对象编程的模型应该都是以java这样为基础的,直到看了javasript和python等以函数式编程为主,支持面向对象编程的语言,才更深的了解面向对象的编程本质。什么是对象,对于对象的理解,我感觉就是具有某些特性的物质, 阅读全文
posted @ 2013-11-15 15:50 猫叔玩流量 阅读(7591) 评论(3) 推荐(4) 编辑
摘要:在这么多年的工作生活中,发现人都比较喜欢去做一些自己熟悉的,经历过的,有经验的事情,在采取的方法上,也偏向于自己熟悉的,流行的,通用的方案,在思维上,也偏向简单的,重复的,机械式的思考。简单的说,我觉得这个就是思维上的惰性,之所以我们都有以上的行为,主要是不想浪费脑细胞,由于习惯和适应,在考虑事情的时候,不想去做思考,仅仅是把大脑内存里面形成的物质重新取出来,毕竟这样短期内比较节省时间,也比较节省脑细胞。作为一个码农,这种现象在IT界更为普遍,为什么那么多的码农在工作四五年都和工作一年的时候所掌握的知识差不多,其实很大一部分都是思维的惰性。他们在做解决问题的时候,往往都是选择简单的,熟悉的方案 阅读全文
posted @ 2013-07-29 23:46 猫叔玩流量 阅读(3674) 评论(16) 推荐(10) 编辑
摘要:所谓道,就是事物的基础和本质,是一种思想和理论,是不易改变的部分。所谓术,就是具体实现的方法和手段,是一种实践的过程,是容易改变的部分。在科学发展的过程中,一般都是先从术开始,开始解决某一个具体的问题,从研究这个具体问题所用的方法,研究这个问题后背的本质,从而推导出一些基础理论和思想,再有这个基础理论,应用到实践,交替的发展。之所以说这个话题,主要是在回顾这些年自己的技术生涯中存在的问题以及思考如何再进一步提高我们的技术水平。个人觉得学习的过程应该是和科学的发展规律是类似的,先从解决一系列具体的问题入手,在思考这些问题后背的本质是要解决哪些基础问题,在抽象出来这些问题背后的本质,进而思考这一类 阅读全文
posted @ 2013-07-18 23:11 猫叔玩流量 阅读(3635) 评论(8) 推荐(4) 编辑
摘要:上文见《spring事务管理器设计思想(一)》对于第二个问题,涉及到事务的传播级别,定义如下:PROPAGATION_REQUIRED-- 如果当前没有事务,就新建一个事务。这是最常见的选择。PROPAGATION_SUPPORTS-- 如果当前没有事务,就以非事务方式执行。PROPAGATION_MANDATORY-- 如果当前没有事务,就抛出异常。PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。PROPAGATION_NEVER-- 阅读全文
posted @ 2013-06-29 13:32 猫叔玩流量 阅读(4964) 评论(0) 推荐(3) 编辑
摘要:在最近做的一个项目里面,涉及到多数据源的操作,比较特殊的是,这多个数据库的表结构完全相同,由于我们使用的ibatis框架作为持久化层,为了防止每一个数据源都配置一套规则,所以重新实现了数据源,根据线程变量中指定的数据库连接名称来获取实际的数据源。一个简单的实现如下:public class ProxyDataSource implements DataSource {/** 数据源池配置 */private Map dataSourcePoolConfig;public Connection getConnection() throws SQLException { return... 阅读全文
posted @ 2013-06-24 17:08 猫叔玩流量 阅读(8323) 评论(2) 推荐(3) 编辑
摘要:在最近一个项目中,在项目发布之后,发现系统中有内存泄漏问题。表象是堆内存随着系统的运行时间缓慢增长,一直没有办法通过gc来回收,最终于导致堆内存耗尽,内存溢出。开始是怀疑ThreadLocal的问题,因为在项目中,大量使用了线程的ThreadLocal保存线程上下文信息,在正常情况下,在线程开始的时候设置线程变量,在线程结束的时候,需要清除线程上下文信息,如果线程变量没有清除,会导致线程中保存的对象无法释放。从这个正常的情况来看,假设没有清除线程上下文变量,那么在线程结束的时候(线程销毁),线程上下文变量所占用的内存会随着线程的销毁而被回收。至少从程序设计者角度来看,应该如此。实际情况下是怎么 阅读全文
posted @ 2013-06-22 23:22 猫叔玩流量 阅读(6054) 评论(3) 推荐(1) 编辑
摘要:我们经常说要关注细节,这个从大的方向上来说,是没有问题的。以前有一本书《细节决定成败》讲的这一方面。在对于某些领域,细节是需要关注的,但是不能陷入细节。换个说法,如果你一直纠结与细节的上的问题,就很难突破自己,把握全局,毕竟人的时间是有限的,能够把握整体,抓住重点细节,关注核心领域所处的细节才是王道。以前做过很多项目,在项目整体业务确定之后,就陷入到细节的讨论之中,当一群人坐在一起,你说一句,我说一句,把大家都能想到的各种可能性都拿出来,然后你针对各种可能性找出相应的解决方案。这些细节中,有一部分是针对某一特例的,有一些是业务异常规则引起的,有一些是交互方面的,而有一些是具有抽象的,公共性质的 阅读全文
posted @ 2013-03-10 11:08 猫叔玩流量 阅读(2936) 评论(3) 推荐(0) 编辑