![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计
文章平均质量分 63
kyfxbl
这个作者很懒,什么都没留下…
展开
-
中秋活动开发总结
这几天中秋节,配合运营部门开发了个中秋活动,本文总结一下过程中的一些体会 微信订阅号和服务号混用的方案我们的微信主账号是个订阅号,所以没有OAuth的能力,也就是说从网页上无法获得当前访问者的微信身份。而稍微完善一点的流程,都要求有这个能力。比如识别此人是否访问过此页面,显示访问者的微信昵称和头像等所以我们就想了一个巧妙的办法,又认证了一个微信服务号,然后把订阅号和服务号关联起来,于是就可以通过u原创 2016-02-06 22:39:33 · 612 阅读 · 0 评论 -
防刷票方案
APP里有一个功能是用户上传图片以后,让其他人来投票,最后得票最多的可以得到某种奖励。最近发现了几次刷票的情况,本文总结一下处理的方法 投票无需登录基本的规则是投票无需登录,因为如果需要登录了才能投票的话,会影响活动的传播效率。所以规则设置为任何人都可以投票,这就给拉票行为留下了隐患相反,如果限制登录才能投的话,刷票就很困难了,服务端可以很容易地控制刷票行为在服务端控制的方案所以既然不能用acco原创 2016-02-06 22:37:18 · 2458 阅读 · 0 评论 -
抓取第三方网站数据
最近需要把某网站的统计数据聚合到我们自己的系统里,但是该网站没有提供标准API,所以就尝试自己抓取了一下。本文总结一下一般的方法 分析服务地址通常网站有2种做法,一种是后端渲染,直接把渲染后的完整界面呈现在浏览器;另一种前端是静态页面,通过ajax到后台取数据后端渲染这种网页抓取起来比较麻烦,因为结构不标准,需要从DOM里把需要的数据抠出来。node平台我推荐使用cheerio,API类似jque原创 2016-02-06 22:36:33 · 2438 阅读 · 0 评论 -
服务器和客户端同步状态,客户端不能依赖服务器的响应
客户端和服务器的数据同步场景,讨论一种容易出错的方案,和解决的办法原创 2015-02-11 02:15:57 · 2944 阅读 · 2 评论 -
基于文件的离线数据同步方案
一种基于文件的离线APP数据同步方案原创 2015-02-04 00:51:22 · 4255 阅读 · 1 评论 -
微站共享公众号的方案设计
共享公众号的方案原创 2014-12-04 13:10:58 · 1444 阅读 · 0 评论 -
转载:SPI和API的区别
转载自Stack Overflow,原文地址:http://stackoverflow.com/questions/2954372/difference-between-spi-and-apiWhat is the difference between Service Provider Interface (SPI) and Application Programming Interface原创 2013-09-24 11:09:05 · 1966 阅读 · 0 评论 -
关于平台的一点想法
4年前在上一家公司,实现了一个RBAC平台,现在回头看一下,那个平台还很幼稚一种常见的情况是,一个公司会有多个业务系统,每个业务系统都需要一些共享的东西在我理解,共享包括2个层面:较低的层面仅仅是二进制共享,比如数据库访问、服务路由等代码。将这些公共代码封装成jar包,如果没有业务系统的话,这些代码就无法运行较高的层面是服务层面,比如用户管理、权限管理、登陆、鉴权、日志平台等。这个原创 2013-09-24 11:11:38 · 853 阅读 · 0 评论 -
我对协议的理解
今天工作进展不佳~~回来路上还在胡思乱想,突然想到一个对“协议”的解释“协议”就是protocol,平时很常见的包括http协议,soap协议,tcp/ip协议,那么协议是什么意思呢按我的个人理解,“协议”可以理解为编码,或者语言比如英语就是一种协议,“hello”这种编码,就表达了问好的意思;两个人都懂英语这种协议,那么一方就可以用“hello”表达问好的意图,另一方也可以知道他的意原创 2013-09-24 11:14:22 · 754 阅读 · 0 评论 -
一种值得借鉴的设计思路
近期工作是分析某个业界产品的架构与设计,重点关注其支持配置和二次开发的特性,过程中感觉有些设计值得借鉴,在此总结一下背景:系统大致上是C/S架构server可以响应多种client的请求。client包括与产家提供的标准client,也包括用户自行二次开发的client浏览器不直接访问Server,而是专门由单独的Web Server提供页面,因此可以认为Web Server是一个原创 2013-09-24 11:14:27 · 916 阅读 · 0 评论 -
系统的扩展性(怎么设计插件)
本文谈下我个人对“系统的扩展性”的看法首先需要声明,这里的扩展性不是指伸缩性(scalability),而是指灵活性(flexibility)一、名词解释这里有2个关键词,一个是系统,一个是扩展性那么要说明这个主题,就先要解释一下这2个关键词。按照我的习惯,还是从最小的东西开始举例子“系统”,我认为就是三要素,输入,逻辑,输出。按照这个定义,最小的系统就是一个方法publ原创 2013-09-24 11:14:42 · 1187 阅读 · 0 评论 -
利用servlet规范,一种实现动态路径的方法
最近在分析的这个产品是闭源的,所以它的特性都不知道是怎么实现的,只能看到了效果以后反向推测,好辛苦一、特性描述今天看到其中的一个特性是这样的:这个系统是动态DDL的,当用户做了某些操作以后,会实时在数据库中建表。并且,无需重启,马上可以用浏览器访问一个新的URL,访问刚创建的这张表比如新建了一个User表,就可以在浏览器里输入类似下面的URL来访问到:http://ip:por原创 2013-09-24 11:14:53 · 1328 阅读 · 0 评论 -
关于平台与框架,我的一点看法
部门最近的一个产品,想基于另一个平台开发。所以最近做了一下平台选型,顺便思考了点关于“平台”和“框架”的问题,在这里记录一下一、“平台”与“规范”一提平台,首先会想到JAVA EE平台,然后就会想到JAVA EE平台规范,“平台”和“规范”常常会混淆,所以先澄清一下这2个概念“规范”大概是提出一种标准,与“规范”对应的概念是“实现”,也就是specification和implement原创 2013-09-24 11:22:45 · 809 阅读 · 0 评论 -
企业应用与互联网应用的区别,多租户方案
我们的产品最近在规划做一个比较大的变化,从单应用支持单个项目,向单应用支持多项目转变(多租户)企业应用和互联网应用的区别产品是所谓的企业应用,虽然用的技术差不多,但是我感觉和互联网应用有很大区别,暂时想到以下几点:1、并发数企业应用的并发数和互联网应用(近似理解为网站)相比,差别极大。因为网站面对的是数以万计的互联网用户,而企业应用面对的是内部用户,所以并发量完全不在一个层面上。不原创 2013-09-24 11:25:19 · 1313 阅读 · 0 评论 -
多项目的实现和部署方式
昨天那个“多租户”的话题,今天继续跟同事讨论了一下,把思路整理得更明确一点:目前产品还没有实现数据路由(数据路由的概念见上一篇博客:http://kyfxbl.iteye.com/blog/1901642),所以这就限定了一套应用,只能操作一套数据库表现在要实现多项目集中部署,就只有2种办法:方法1把多项目的数据放在同一套表里,用字段来区分。这是产品当前的做法,也是大部分网站的做法原创 2013-09-24 11:25:24 · 823 阅读 · 0 评论 -
不同应用间互相调用,兼谈重用性
我们的应用,包含若干个子系统,运行完部署脚本,会打出若干个war包,部署在同一个jboss里子系统之间有接口,是通过web service来互相调用的。我昨天突然想到,既然这些应用都是跑在同一个jboss里的,那就是同处一个进程,为什么不能直接互相调用呢下面就开始一步步做试验,首先我在tomcat里,部署了3个应用,分别是Spring、AnotherServlet、ThirdServlet原创 2013-09-24 11:06:41 · 954 阅读 · 0 评论 -
什么是SPI
我理解SPI就是一种“服务发现机制”很多规范里,都既包括API,也包括SPI。区别在于,API用来给开发者用的,SPI是给服务提供者用的比如说,开发连接池组件时,不知道运行时的JDBC Driver是谁提供的(也就是不知道实现类的类名),这时候就只依赖接口,然后在运行时通过某种服务发现机制,再加载具体的实现类在JDCB规范里,JDBC的厂商需要提供DataSource这个接口的实现类,原创 2013-09-24 10:53:29 · 820 阅读 · 0 评论 -
一种客户端同步server数据的方案
一种客户端同步server数据的方案原创 2014-06-25 16:39:12 · 1590 阅读 · 0 评论 -
通用的设计模式
入行至今,经历过服务端,前端,终端的开发,也用过若干种语言。我发现有些设计模式是语言特有的,或者比较细节,总之适用范围不广泛;而另一些更高层面的设计模式,则具有更强的通用性。比如最近感触比较深的是mvc和三层分离的思想只要涉及到界面的开发,mvc的思想总是适用的。视图决定界面的模板,其中的数据来源于模型,控制器起到居中调度的作用。我认为,很多情况下控制器扮演的都是转换模型的角色。视图上展现的模原创 2014-04-08 23:11:37 · 884 阅读 · 0 评论 -
ios app初始化和数据迁移的设计思路
总体思路一般app启动之后,都有一个初始化的过程。此外后续app升级,还需要考虑数据迁移。所以初始化和数据迁移的框架,在初期的版本就要考虑好总结一下我们的app采取的方案:1、在持久化的文件夹内(比如UserDefaults或者Documents目录),用一个字段保存老版本号2、在开始初始化之前,读取老版本号,以及当前版本号3、如果该应用是第一次加载,那么老版本号就取不到(因为原创 2014-05-14 23:06:16 · 1617 阅读 · 0 评论 -
2种安全下载的方案
系统后台提供恢复文件的下载,原本是放在一个开放目录中,客户端可以直接下载app.use('/svc/public', express.static(__dirname + '/../public'));但是这样没有鉴权,不安全,用户A只要知道另一个用户的企业ID,就可以下载到他的恢复文件。另外整个下载过程没有经过程序的干预,也不利于后续做一些统计方面的工作改造为下载需要先经过后台的服务原创 2014-02-19 16:37:13 · 779 阅读 · 0 评论 -
一种接口统一返回值的设计方法
应用中经常会涉及到server和client的交互,目前比较流行的是基于json格式的数据交互。但是json只是消息的格式,其中的内容还需要设计。当接口很多的时候,保持返回值格式统一很重要,因为返回值格式一致,客户端才能相应地做统一的处理以前有一个产品使用的接口格式还不错,所以也继续带到现在的产品中使用,格式类似:{ "code":0 , "result":{原创 2013-12-22 15:07:57 · 1918 阅读 · 1 评论 -
浅谈系统拆分
今晚好冷啊,回去的路上,我突然想到一件关于系统拆分的事情。举的例子很极端,仅供参考,不一定有实际的意义我感觉拆分系统,和拆分代码,本质上是一样的。小到一个方法,大到几个系统,都是一个从输入到输出的序列Level 1:public void doSomething(){ System.out.println("111"); System.out.println("2原创 2013-09-24 10:53:08 · 1049 阅读 · 0 评论 -
怎么重用一个功能
想重用一个功能,有3种方法:1、拷贝代码2、打成jar包,直接复用.class3、将功能发布成服务(web service、rpc等)比如今天做一个系统原型,有这么一个片段:// 前面的一些操作PluginServerProxy.handle(requestEvent);// 后面的一些操作作用就是将一个请求转发到“插件server”处理有3个子系统,都需要原创 2013-09-24 10:53:18 · 786 阅读 · 0 评论 -
一种异步保存的思路
当用户进行了post操作之后,后台可能会做很多的操作。比如说,创单人录入一条工单,点击“提交”之后。后台需要将工单数据写入数据库,然后要计算工单关联关系,计算任务优先级,进行工单智能分析,进行预调度等等操作这些操作涉及到大量的IO,以及逻辑判断,因此要耗费比较长的时间。但是对于创单人来说,他关注的首先是这条工单创建是否成功,也就是是否能够尽快得到创建成功的反馈页面。那么这个时候,就原创 2013-09-24 11:06:25 · 1369 阅读 · 1 评论 -
系统集成的2种方式
我以前是不是写过一篇类似的东西,说系统集成的今天做一个别的事情的时候,突然想到系统集成的问题。我觉得系统集成归结来说只有2种方式。分别画图说明,图略粗糙:1、从天上走这张图里,系统A和系统B,都开放了一些接口。实现方式可以有很多,web service、rpc、rmi,都有可能,总之是发布了接口,然后对方就可以调用到这个图有一个变体如下:也是一个系统A发布了一个接口,另原创 2013-09-24 10:52:37 · 3289 阅读 · 0 评论 -
框架和平台的扩展性
我们的产品底层是一个平台,提供基础业务,以及扩展API。在平台之上,通过个性化配置,和定制开发,得到最终的产品本文不谈配置的事,只说说定制平台发布到不同的项目之后,各项目自行定制。由于不同的项目需求差异较大,有时候平台提供的扩展API无法满足,项目就直接修改或增加平台的代码。但是这样就有个问题,平台就不能随意升级了,因为项目对平台代码的修改不可控,平台升级之后,很可能与定制的代码冲突延原创 2013-09-24 11:25:39 · 1141 阅读 · 0 评论