
技术中台
小雷FansUnion
懂商业的技术合伙人。个人微信:FansUnion
微信订阅号:XiaoLeiFansUnion。
-
原创 天鸟技术中台-建设过程-日常经验7:核心core业务、非核心core业务、通用基础业务
在这篇文章“天鸟技术中台-建设过程-日常经验6:一个系统总是存在,core核心业务和not-core非核心业务”中,首次明确提出了,一个系统存在core和非core。以之前做过的项目ppw,票据理财网站为例非核心业务:old开头的,比如“内容”、"内容分类"、“图片”、“权限”等。核心业务:投标、创建票据项目今天,再补充1个概念,通用基础业务。这个项...2019-12-01 15:40:27292
0
-
原创 研发人员的刚需,那些必须掌握的技术和解决方案
做投资,有个思路是:抓住不变量。无论世界形势怎么变化,时代怎么发展,创新永远是最难跟踪的,但那些不变的确实非常确定的。茅台酒的商业模式基本不变,研发投入是固定的,很难因为时代发展,突然被人颠覆。格力空调,商业模式总体不变,生产制造会做一些优化。而科技股需要不断创新,医药股需要不断创新研发新药,投入巨大,收获却不一定大。只要不努力,随时被颠覆。从2019年开始,我也明确把这...2019-12-01 11:00:23231
0
-
原创 coding人员需要清晰地表达自己的意图:k8s改造のredis4部曲
一、缘起k8s改造,xx系统 用到了redis,解决了 缓存、分布式锁等常见问题。主要是 x群 x浩解决的。xx系统,xx等其它系统,进行k8s改造,也需要解决这种问题。但是呢,由于时间问题,两位小哥写的代码,不能简单配置就在其它项目用起来。这里,涉及到 软件复用的问题。另外,日常中发现的几个问题,正好顺手总结下:1、沉迷技术细节,http、sessio...2019-11-30 13:44:57226
0
-
原创 天鸟技术中台-建设过程-日常经验5:MybatisPlus工具代码封装,between-and封装
技术中台,目前主要就是解决 重复CRUD问题。数据库底层用MySql,DB框架用 MybatisPlus(今后简称MP)。MP封装,分2大类,一种是 纯工具方法,一种是 ServiceImpl类的进一步完善,实现那些标准化的方法。以下是 工具方法举例:常见代码-需求,查询某段时间范围的数据 queryWrapper.between("month", sta...2019-11-18 18:11:00230
0
-
原创 天鸟技术中台-建设过程-日常经验4:接口抽象和标准约定
publicinterfaceService { //----------------query-------------------// RpcResult<Page<Vo>> listPage(Query query); RpcResult<List<Vo>> l...2019-11-16 18:24:11173
0
-
原创 天鸟技术中台-建设过程-日常经验3:权限控制的进一步思考和细化
初步方案:技术中台管理接口和 对外提供的接口,统一起来。1、操作一条数据,必须带上appId。2、查询,必须带上appId or 不带 appId现在的接口分2大类,技术中台管理端。(既然存在这样有所有app权限的特殊项目,今后也可能存在第2个这样的项目,比如技术中台管理端的app端)权限控制思路1、token校验该token是否存在,是否过期...2019-11-16 18:12:40185
0
-
原创 天鸟技术中台-建设过程-日常经验2:通用参数和数据权限控制
技术中台,服务于 无数个 独立的项目。每个项目,单独对应1个App和appId。查询和创建等接口,必须提供appId,区分是哪个app的数据。而技术中台的平台管理端,是管理所有的数据,appId是可选的。普通项目的管理端,只管理自己的数据,查询数据的时候appId是固定的,是必填的。这里面有个经验,getById,removeById,通常写法,只需要id 1个参...2019-11-16 17:38:44264
0
-
原创 我的心,有点累~
在职场工作中,总是感觉若干同事,缺乏“精益求精”的精神气。工作,干完就好。系统,能运行就行。代码,不报错,就达标。系统越来越多的时候,重复性问题越来越多。软件工程,如果全套开发流程,不咋的,做一个烂一个,做两个烂一双。今天,特地再总结一些老生常谈的话题和问题。1、项目启动慢一个项目,启动时间最好控制在30秒,最多1分钟吧。项目的启动过程,有几个人看了。真...2019-10-30 17:43:48485
6
-
原创 天鸟技术中台-建设过程-日常经验1:标准、规范、约定、极简、可读、单一职责、自动化
1、标准、规范、约定、极简、可读技术中台,以模块来划分,不同模块,代码总体一致。因为,中台本来就是要解决类似问题。不同模型,主要还是CRUD,第1阶段,只考虑not core非核心业务。核心业务,不同项目,差别比较大,不方便复用。标准,标准化之后,才能发现规律。比如:常见的功能为CRUD,过程划分为:query查询、create创建、update更新、save保存(创建或...2019-11-16 16:02:53272
2
-
原创 天鸟技术中台-建设过程-日常经验6:一个系统总是存在,core核心业务和not-core非核心业务
一个系统总是 存在,core和非core,核心业务,非核心业务。1、电商购物:商品-购物-下单,核心业务。地址、短信通知、FAQ问答、平台公告等,非核心业务。2、P2P网贷:注册登录、充值、投标、分期回款、提现,核心业务。内容管理、图片管理、后台用户管理、系统配置,非核心业务。3、股权众筹:项目展示、预约、投钱,核心业务。图片文案、社区、公告等,非核心业...2019-11-07 19:45:24183
2
-
转载 叹!中台的末路
作者 |曹春晖来源 | 码农桃花源从 15 年开始,到 19 年现在为止。各大公司都在吹捧中台理念。仿佛中台是业务复杂性的救世主。是某些架构师和 PM 的新出路。各种割韭菜的讲中台的课程层出不穷。当然,吹牛逼的时候大家都是拣好的说,苦逼的东西就只有内部人士知道。中台到底靠谱还是不靠谱,只凭各路英雄的演讲内容,那看起来是靠谱的。先来看看这些公开的观点,再以我(码农桃花源注:资深研发...2019-10-23 17:21:18281
0
-
原创 天鸟技术:项目结构-架构设计
Web前端/App/小程序/PC客户端各种ajax接口1、Controller业务太多时,按照业务进行进一步分模块Order/Project/User核心业务Support 非核心业务,支撑类业务Config 各种配置coderTool System 系统级功能Base 基础功能thirdRpc 第三方系统交互2、Service业务分包,只处理CRUD ...2019-10-19 13:21:00207
2
-
原创 阿里云对象存储服务,OSS使用经验总结,图片存储,分页查询
阿里云OSS-使用经验总结,存储,账号-权限,分页,缩略图,账号切换最近项目中,需要使用云存储,最后选择了阿里云-对象存储服务OSS。总的来说,比较简单,但是仍然遇到了几个问题,需要总结下。1.OSS总的使用介绍 https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176....2016-03-18 14:54:3511149
7
-
原创 JFinal Enjoy:专为Java开发者打造的模版引擎,Java语法,快速掌握
友情提示:本篇总结,主要是便于自己 能有个“全局的认识”。具体学习和使用,参考官网。经验:对一个事物、事情,如果先有个全局的认识,学习起来快多了。有没有全局认识,也是检验掌握这个事的关键信号。分享特色:简单、简洁、有用、能用。一、模版引擎,解决的问题1、Web开发,前后端不分离时,页面渲染2、通用场景邮件模版、短信模版、PDF预览(签字协议、合同)、基于模版的代...2019-10-09 20:06:27702
0
-
原创 代码生成器-JtnTpCodeGenerator
JtnTpCodeGenerator,天鸟技术平台代码生成器,侧重从Dao到Controller上下游的CRUD。代码生成器的核心价值:根据1个数据库表,生成通用的代码。常见的类有:Mybatis的Mapper,偶尔用到的Manage,常用的Service,Web代码Controller,数据库模型类Model。常见的方法:增删改查CRUD,一些定制化模版方法。一、简单举例...2019-09-26 19:11:16112
0
-
原创 网站爬虫Spider-博客搬家-阶段总结
搜索引擎的爬虫,一般给1个起始页-首页url,自动爬取内容,存储到数据库。博客搬家等内容搬家型的爬虫,有点差别。起始url可以有,但目标页面实际上只关心 详情页。比如,对于CSDN博客,首页为 https://blog.csdn.net/FansUnion,列表页为list,详情页为detail。按照普通爬虫,有了首页,不断查询页面,查询里面的url,再递归根据url查...2019-09-25 15:19:39222
3
-
原创 写代码4条习惯-先定主体流程-单一职责-明确输入输出-尽可能用静态方法
1、先定主体流程。2、一个方法,解决一个问题。3、考虑一个方法,输入是,输出是。 输入输出不变,方法交互就不会变。 需求变了,只是内部规则、计算、算法、流程 的调整。不会打断总体思路。4、尽可能用静态方法。静态方法,方便调用,另外 静态方法 通常没有状态,不会有副作用。...2019-09-03 18:13:11147
0
-
原创 SpringBoot整合Swagger:@RequestBody接收参数,@ApiImplicitParam和@ApiModel(value="userVo")不能同时使用
问题,如标题所说。@ApiOperation(value = "添加用户", notes = "添加某个项目的用户") @ApiImplicitParam(name = "vo", value = "用户实体类", paramType = "body", required = true, dataType = "UserVo") @PostMapping("/addUser"...2019-08-27 11:47:293276
0
-
原创 Java工具类,精简优化,和过去的“重复代码”“重复工具类”说再见啦
过去,很有意识积累了不少工具类。今年,为进一步提高工作效率,积极学习了ApacheCommons Jodd Guava Hutool等众多开源项目的代码。这几个月一直在抽空整理自己的 工具类库。发现,自己的很多工具类,包括其他人的一些工具类,都没有必要再用了,因为其它开源框架,做得更好了。更重要的是,人家写的,也比较符合自己的风格和习惯。关注自己的业务场景,实用工具...2019-08-08 11:45:15341
0
-
原创 技术中台-清单(上次更新20190727)
API接口,标准模型业务系统的接口文档自动化部署第三方登录基础技术环境Dubbo Admin安装标准基础库 htool2019-07-27 14:46:13373
0
-
转载 hutool设计哲学
今天重新看了下Hutool开源工具的文档。先看了老版的文档http://hutool.mydoc.io/#text_319377又看了下新版文档https://hutool.cn/docs/发现,老版文档有“设计哲学”这段,感觉很不错。和自己的观念习惯基本一致,特意转载,以防老版文档没了。-------------设计哲学1.方法优先于对象在工具类中...2019-07-25 19:28:02141
0
-
原创 权限系统-标准设计和实现
一、概要描述1个用户,可以有1个或多个角色。用户真实的权限,可以来自角色,也可以来自用户直接配置。用户在组织机构中,可以存在下级。如果是上级,通常可以有下级对应的权限,或者说上级权限=自己权限+所有下级权限。功能菜单和按钮之类的权限,直接配置在权限表。而数据权限,再单独配置。有了用户、角色、权限、组织机构和上下级等模型,就可以对外提供权限API。业务系统,根据API拿到权限...2019-07-25 13:42:19284
4
-
原创 自动化部署-编写Shell脚本简单实现(终)
自动化部署,主流方式可能是:用开源的Jenkins。本质上来讲,Jenkins只是个工具,集成各种各样的打包部署工具,比如集成JDK、Maven、Git,甚至可以维护shell脚本,自动执行。实现自动化部署,咱们也可以自己写Shell脚本实现,当然是比较简单的那种。比如,Git clone代码,Maven打包,自动停机,复制war包jar包到指定目录,启动。如果,还需要执行 ...2019-07-23 15:07:14860
0
-
原创 写单元测试有啥用?怎样写好单元测试
单元测试的关键是,断言。Assert.assertEquals等各种各样的断言语句。没有断言的“单元测试”,可能都是“伪单元测试”。不知道输入,不知道输出,也是写不好单元测试的。尽管你自称已经了解了函数的作用。好处 重复测试:前提是方法的输入参数和函数的作用没有发生大的变化。单元测试代码,写好一次就行了。下次,函数内部逻辑进行了修改,只要不影响输出,或者说不...2019-07-21 09:33:48203
0
-
原创 Jenkins自动化部署-配置项目(下)
一、新建项目,设置Git地址,账号密码。多种方式,ssh方式,需要配置私钥。第1个错误:Git没安装Linux机器上,先安装Git软件。 CentOs系统,yum install gitgit -version 检查是否安装成功解决之后,再次构建之后,产生了项目目录。cd /root/.jenkins/workspace/test-auto-deploy第2个错误:权限...2019-07-22 20:53:261657
3
-
原创 SpringBoot整合Swagger
本文主要是总体配置和简单示例。具体每一个注解的用法,需要的再自行查找。Maven配置<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2...2019-07-20 11:45:46495
2
-
原创 Jenkins自动化部署-安装过程(上)
一、下载war包下载地址:https://jenkins.io/zh/我选择的是 通用Java包,war包格式Generic Java package (.war)用压缩软件打包war包看了下,既有Java命令行执行需要的main类,也可以用web.xml在Tomcat等Server下执行。二、执行war包java -jar jenkins.war --httpPort=90...2019-07-15 11:27:39181
4
-
原创 通用权限系统,初步思考
一.通用权限模型数据权限和功能权限,分开1.简版权限1个用户,有1个角色。1个角色,对应多个权限。用户:角色 = 1:1角色:权限 = 1:N只考虑功能权限:菜单权限和按钮权限。不考虑数据权限2.标准版权限在简版权限的基础上,增加数据权限。规则1:能看到哪些模型,商品/订单/公司/区域规则2:能看到模型里的哪些数据基于规则的:自己创建的。管理员看所有的。复杂点...2019-07-12 11:52:36315
0
-
原创 编写可读代码,提高工作效率
本次分享是怎么做到“可读性”的首先,正在进行的,说明下本文的可读性。1.背景 根据今年形势996icu,加班加点的情况比较多。与其抱怨,不如改变。从内因去改变:主题,编写可读代码,大大工作效率。2.观点:代码是写给人看的,推荐一本书《编写可读代码的艺术》。3.方法:以《编写可读代码的艺术》内容,结合实际项目代码,给出13条建议。4.个性化建议。5.项目代码举例。6.总结,可读性的...2019-06-24 19:08:17391
0
-
原创 5步搞定vue-webpack前端项目本地启动
为提高生产效率,越来越多的公司,采用了前后端分离开发模式。前端解决方案之一,vue-webpack之类的模式,后端提供http API JSON格式的数据。Web前端工程师和Java/PHP/Python各自开发,然后联调。前端,可以模拟json格式的数据,方便开发。同理,后端也可以应该把前端的项目,启动起来,直接自己联调。之前学习过vue,大概熟悉webpack,...2019-03-28 15:34:31406
0
-
原创 单页应用还是多页应用,哪些场景适合单体项目vue-webpack?
Web开发最早全是后端,后端渲染JSP+后端Java。后来,Ajax+后端Java,Ajax尤其适合 个人中心这种 不需要SEO优化和纯移动端的项目。现在,Vue-Webpack模式非常流行。一、什么时候,选择使用vue-webpack这一套,开发单页应用。1.内部管理系统:CRUD为主2.运营支撑项目:业务逻辑稍微多一些,比如大型电商平台,服务商家、供应商、内部运营...2019-03-28 18:10:022014
0
-
原创 一个电商项目的Web服务化改造3:改进方案の规范和约定、单表、单一职责
最近一直在做一个电商项目,需要把原有单系统架构的项目,改造成基于服务的架构,SOA。 有点挑战,做完了,会有很大进步。 上一篇,我们描述了原有项目中的问题。或者说是,本篇的基本背景。 本篇开始,给出我们的改进方案和技术架构。 不过,根据自己的理解,我先列出了“规范和约定”。 因为,我认为“规范和约定”是具体方案和解决办法的基石,也是很多互联网项目的基本准则吧。...2016-04-30 15:27:455113
0
-
原创 一个电商项目的Web服务化改造5:面向服务的分层架构设计(有图有真相)
最近一直在做一个电商项目,需要把原有单系统架构的项目,改造成基于服务的架构,SOA。 有点挑战,做完了,会有很大进步。 本篇,以我亲自画的3个图,阐述一下架构设计。一、分层架构-总体图 1.服务提供方和服务调用方,通过接口交互,调用方并不需要知道怎么实现的。 2.层次划分 mapper:Mybatis接口映射,原子数据库操作 ...2016-04-30 17:14:547212
0
-
原创 一个电商项目的Web服务化改造6:单元测试4步走,构造数据、执行操作、断言、回滚
最近一直在做一个电商项目,需要把原有单系统架构的项目,改造成基于服务的架构,SOA。 有点挑战,做完了,会有很大进步。 单元测试,在很早之前的文章已经介绍过。 可以在这里看到相关的几篇文章:http://blog.csdn.net/FansUnion/article/category/1333595/2 在这次Web服务化改造中,理论上有4层需要测试。1....2016-05-01 11:20:364941
0
-
原创 一个电商项目的Web服务化改造7:Dubbo服务的调用,4个项目
使用dubbo服务的过程,很简单,和之前学习的WebService完全一样,和本地接口调用也基本一致。 dubbo和WebService的区别:我认为dubbo就是封装了WebService,然后提供了更多的配套功能。看jar包依赖,dubbo依赖的WebService。(青出于蓝,而胜于蓝。冰,水为之,而寒于水。) dubbo接口和本地service接口的区别:dubbo调用的是...2016-05-01 12:07:199103
0
-
原创 陈年旧事,一堆烂项目
陈年旧事,一堆烂项目。最近1个月,认真清理了下。不常用的项目,都从git上删除,备份到1个git项目里,留作备份就好了。没任何价值的项目,删除。删之前,看看有没有一点还能复用的代码,工具类之类的。一直以来,都比较注重基础库的积累,虽然也没积累啥。尽可能用Apache Commons,Guava,Jodd,Hutool, feilong-core等全世界有点人气的库。...2019-08-01 08:48:04231
2