互联网企业部署BFF 框架的优势

什么是BFF框架 BFF框架指的是一种逻辑分成,而非一种新技术; 即 Backend For Frontend(服务于前端的后端),也就是服务器设计 API 时会考虑前端的使用,并在服务端直接进行业务逻辑的处理,又称为用户体验适配器. 为什么要使用BFF 当然一般情况下后端 api 不需要区别对待不同的前端; 不同的前端平台所带来的差异化不会很大,但有些特殊的商业软件会细分到以上 3 种不同的前端平台. 如果是基于这个假设那么前端每做一点改变都需要后端的支持; 有没有一个中间件平台提供所有前端所需的 api,同时负责和后端交互呢? 对于基本的小改动中间件平台完全可以提供其相应的数据支持,而不

java 中 static 关键字的使用方法

static 概述 在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,只要程序在运行,那么这块内存就会一直存在; static 定义的类成员 可以直接访问 在Java程序里面,所有的东西都是对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员,但是用static修饰的成员可以通过类名加“.”进行直接访问. static 独立于类的其他成员 任何实例共享 static修饰的成员变量和成员方法独立于该类的任何对象; 它不依赖类

docker 构建镜像

docker 构建镜像 获取镜像 Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像 从 Docker 镜像仓库获取镜像的命令是 docker pull 格式 docker pull [选项] [Docker Registry 地址[:端口号]/] 仓库名[:标签] # 默认官方镜像库拉取,latest 标签 $ docker pull ubuntu # 指定版本标签 $ docker pull ubuntu:18.04 # 指定仓库域名(默认官方仓库) $ docker pull library/ubuntu # 第三方服务商或私有

java 语法的命名规范

项目名 命名规范 全部小写 如:yijiebuyi , helloworld package 包名命名规范 强烈推荐使用公司或机构的顶级域名为包名的前缀; 包名的前几个为固定名称, 如果是网站的话,采用网站的域名的反写; package 包名全部为小写字母,以符号(. )来分隔, 但是不能包含*号,具有实际的区分意义. 如: com.yijiebuyi.blog //博客系统 com.yijiebuyi.wechat //微信H5服务站 要求 有意义的名词 传达其用途 结合模块名来命名 使用范例 应用系统中经常应用分层,Dao层(数据库访问)、Service层(业务处理)、Web层(页

[投稿] 北京 招聘 node.js 全栈工程师

联系站长免费投稿发布招聘信息 职责 基于node.js 服务端开发 职位 node.js 全栈工程师 经验 2 年以上Server 开发 学历 大专以上 坐标 10号线地铁健德门站 要求 JavaScript 基本概念清晰 熟练掌握闭包、事件、回调、Promise 熟练掌握NodeJS核心模块的和常用模块 熟悉Node.js及其相关工具 有服务器端开发背景 (.NET、 Java、Python、PHP等其中一种后端语言的开发经验) 熟悉 MongoDB,Redis,MySQL,RabbitMQ 一种或多种 能阅读理解英文文档 GitHub帐号开通时间在半年以上 可以独立编

CommonJS 是什么 规范

概述 CommonJS是服务器端模块的规范,Node.js采用了这个规范。 根据CommonJS规范,一个单独的文件就是一个模块。 加载模块使用require方法,该方法读取一个文件并执行,最后返回文件内部的exports对象。下面就是一个简单的模块文件example.js。 console.log("evaluating example.js"); var invisible = function () { console.log("invisible"); } exports.message = "hi"; exports.say = function () { c

redis 如何处理客户端连接

redis如何处理客户端连接 redis 连接建立 Redis Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作: 首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型。 然后为这个socket 设置 TCP_NODELAY 属性,禁用 Nagle 算法 然后创建一个 readable 的文件事件用于监听这个客户端 socket 的数据发送 当客户端连接被初始化后, 会查看目前的连接数,然后对比配置好的 maxclients

nginx 命令行参数 启动 重启 重载 停止

今天和大家分享关于 nginx 的一些参数使用 首先,你应该安装了nginx CentOS 安装 nginx 这是很早之前的一篇博客,可以参考. 之前,我们如何去操作 nginx ##简单粗暴法 pkill -9 nginx kill -TERM 主进程号 kill -QUIT 主进程号 现在我们是不是要从容优雅的去面对这些操作了 nginx -s 参数 -s 参数包括下列功能: nginx -s stop – 快速的停止Nginx nginx -s quit – 优雅的停止Nginx nginx -s reload – 重载配置文件 nginx -s

[投稿] 北京 朝阳门 高薪招聘 javascript 全栈 攻城狮

你有招聘/求职机会,请联系 QQ:378989619 免费发布! 地点: 北京 坐标: 朝阳门 3-5 年web开发经验 本科 职位: javascript全栈攻城狮 我们找这样的你: • 仰望星空,脚踏实地。 • 计算机、通信、数学等相关专业毕业,有激情有梦想有野心,结果导向。 • 扎实的技术功底,优秀的沟通能力,能够身先士卒完成产品迭代。 • 能从技术和工程的角度与产品团队有效沟通合作。 • 对Web frontend, server stack, API design, data visualization有较深研究 • 较好的英文沟通能力。 我

博客新功能 在线工具 逐步上线,完善中

工欲善其事,必先利其器 所以逐渐 开发上线一些好玩的小工具 工具可以帮助我们完成很多事情,尤其是在线工具,不需要环境支持,不需要包的依赖,纯绿色,无公害 到今天为止,2个小工具上线,同时还专为为工具打造了一个聚合页 目前博客首页无入口,你可以点击下面链接进入 http://yijiebuyi.com/tools.html 在线生成二维码工具 支持二维码大小,前景色,背景色,长链接,多文字....等等 点击这里 在线生成二维码 欢迎玩耍,有想法,意见等可以进群讨论 --> 看右侧进群方式 回头还会专门开一篇博文讲述关于二维码生成 在线压缩 javascript 如果你的项目中

[投稿] 2015-09-25 北京地区招聘 node.js 开发工程师

你有招聘/求职机会,请联系 QQ:378989619 免费发布! 地点: 北京 坐标: 建国门 职位: node.js 开发工程师 岗位职责: 负责node.js网站后端开发。 我们找这样的你: 1. 1年以上node.js项目开发工作经验,熟悉MVC,熟悉express等开发框架 2. 熟悉linux系统 3. 良好的代码规范。对代码质量精益求精,志向于编写优美的代码 4. 善于思考,能独立分析和解决问题 5. 责任心强,具备良好的团队合作精神和承受压力的能力 我们的服务 手道轻来作为互联网健康养生020平台到家,主要包括整脊、拔罐、足底、艾灸四项服

node.js 利用 sitemap 为你的站点生成站点地图

node.js 下利用 sitemap 生成站点地图. 大致的工作就是,我们生成一份提供给搜索引擎的 Sitemap 之前你获取在网络上找过各种在线生成 sitemap 工具或者服务,使用起来却都不尽人意.有的收费,有的最大抓取2层url ,还有的最大链接数限制在500个. 所以今天和大家分享的是如何用 node.js 来为站点生成 sitemap 什么是sitemap 借用百科的一段话 Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页。最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间、更改的

一介布衣博客今天开始支持 markdown 编辑

博客经过几次改版,但是阅读性一直不太好,让人读起来比较累,分不清主次. 所以周末尝试把之前的百度编辑器换成了 markdown 编辑器,希望在阅读性方面有提升. 博客的几处改动 因为之前的博客是html格式,现在是 markdown 格式,所以在首页提取缩略内容的功能去掉了. 首页标题字号调小了 列表页标题下方增加了博客分类 内容页的渲染为了兼容以前的老博客,既可以渲染 html 博文,也可以渲染 markdown 博客. 代码视图变动 function(){ console.log('欢迎光临一介布衣博客'); } 单行代码视图 alert('一介布衣'); 关于mar

angular 系列一 简单介绍及准备工作

目录:angular.js 系列一之准备工作angular 系列二 搭框架-node.js后端,angular.js前端angular 系列三 gulp 代码构建工具简介angular 系列四 初识angular.js hello world!angular 系列五 控制器controller的作用angular 系列六 Module类的介绍及模块化依赖angular 系列七 ui-router路由控制器介绍angular 系列八 ui-router详细介绍及ngRoute工具区别angular 系列九 ui-router适配模板,模板指定controller控制器angular 系列十 使用

顺丰嘿客O2O全国布阵亲身体验 - 一介布衣

周末出去闲逛,发现小区附近多了一家嘿客店,顺丰的O2O布局在业界相传甚广,打算进去体验一把.上图就是实体店实景图,从外面看除了比较独具一格的招牌外似乎看不出哪些亮点.去店里看看.店面所售物品全面虚拟化,一个图片介绍卡面,上面的介绍和二维码,正中间2台触摸平板非常显眼.体验了一下,系统非常卡顿,不论是点击哪个按钮几乎都要坐在椅子上歇一歇才能反应过来,注册了一个账号,就因为点击的快了点,图上右侧的机器貌似死机了,我等了10分钟之久没有反应过来,业务员又把左侧机器启动,接着在左侧小心翼翼,稳稳当当的注册完.上面这个帐号注册费了很大劲,希望顺丰能改进这个系统体验.下单可以选择直接送货到家或者选择送货到

其实很早之前就玩公众号了昨天终于找到了一介布衣的官方号

我手里大概有10个左右公众号,以至于我昨天一个一个登录愣是没有找到一介布衣这个号,当然我明白这个号肯定是存在的,只是想不通但是为啥用那么难记的一个邮箱号去注册,以至于我想不到到底该用哪个邮箱号去登录找到它.我不玩公众号确实有点太久了,之前用.net做了好几个接口,每个公众号都能友好的接待访客,现在发现服务器早就挂了,接口是失效...粉丝流失很严重.还好,这个号我还是找到了.欢迎各位客人扫描交流,我不发广告,也不发垃圾,哈哈搜索公众号 yijiebuyicode扫描上面二维码:大会结束了,空气变差了,马路上的洒水车也不见了,但生活还得继续,祝各位周末好心情!

seo优化基础站点伪静态及去掉keyword - 一介布衣

之前博客从来没有注意过SEO的问题,这个博客当时完全是为了练手玩一玩,自己用node.js 和 levelup数据库 搭建起来的,由于levelup 是完完全全的nosql数据库,除了key-value意外再没有其他东西,以至于一个索引都要自己维护,所以博客功能比较简陋,之前有留言板,当时后来被阿里云的客服提醒让关闭留言功能,为了让博客好好的活下去,我就暂时不开放留言版功能了,你懂得!1.页面模板是仿造zanblog的模板套上去的,当时套的并不完善,我修改的一些东西貌似ui都比较丑陋,勉强看吧,不会UI的程序员不是好产品经理.所以今天的第一件是就是把之前不完整的dom结构补齐,以前没有 foo

node.js 下使用mocha 来做测试 test for node.js

NodeJS里最常用的测试框架估计就是mocha了。它支持多种node的assert libs, 同时支持异步和同步的测试,同时支持多种方式导出结果,也支持直接在browser上跑Javascript代码测试。本文示例大多源于官网示例,部分示例结合需要或自己的感想有所改动。更多介绍请看 官方网址:Mocha on GithubInstallation:当你成功安装nodejs v0.10 和 npm后执行下面这条命令。#npminstall-gmochap.s. Ubuntu的注意apt源里的nodejs版本会比较旧,某些module会不支持,请从nodejs官网进行源码安装。First st

Angular 基础学习教程

我们现在开始准备编写AngularJS应用——phonecat。这一步骤(步骤0),您将会熟悉重要的源代码文件,学习启动包含AngularJS种子项目的开发环境,并在浏览器端运行应用。进入angular-phonecat目录,运行如下命令:gitcheckout-fstep-0该命令将重置phonecat项目的工作目录,建议您在每一学习步骤运行此命令,将命令中的数字改成您学习步骤对应的数字,该命令将清除您在工作目录内做的任何更改。运行以下命令:nodescripts/web-server.js来启动服务器,启动后命令行终端将会提示Http Server running at http://lo

【随笔】博客终于熬过了百度的考核期

由于之前的各种免费云空间不给力,一介布衣 几乎是隔几个月就挂一次.这对于seo是致命的,去年各大搜索引擎收录还是不错的.经历了今年3月份bae云空间的下架独立域名导致一介布衣消失了一段时间,到目前搜狗和搜搜仍然不收录,必应删除了之前的所有收录记录,现刚刚开始重新收录.google收录最完整且保留了一介布衣的所有历史快照,感动ing~~这张图很明显的告诉我们今年3月份由于bae关闭独立域名绑定后,导致一介布衣搜索量直线下滑,4月初迁入阿里云后,服务器稳定,内容一直保持原创更新,搜索量逐渐上升,但是所有的搜索量都不会被立即放出,而是进入了百度的一个考核期,这个时间是漫长且无奈的,大致是1-2个月,

一个好的起点

是起点,是好的开始.由于blog空间,域名等种种原因,搜索引擎的收录量始终上不去,一度还被百度拉黑!2014年买了空间,备案了域名,进过这几天的blog搬家和零零碎碎的随想录贴上来,发现蜘蛛来的也频繁了,百度最为明显,从昨天的9个收录到今天的44个收录,百度一直对blog不感冒,这样的表现让我感到很欣慰.google 更青睐新网站,更喜欢原创及blog ,所以google 几乎收录了一介布衣各个版本的所有内容,即使点进去已经404了,google是一个尊重对方的搜索引擎,只要你有一口气在,它不会轻易删除你的快照.360搜索也还可以,因为以前在360提交过网站信息,所以蜘蛛很勤劳,但是目前为止还

jQuery 源码分析学习 — 优秀前端框架jQuery框架认识

从今天开始学习优秀前端开源框架jQuery源码.本系列主要针对 jQuery1.6 源码分析学习.准备工作:初始jQuery 框架.(function(){ // javascript  代码…… })();所有的jQuery 代码都包含在这个自调用匿名函数中什么是匿名函数?类似这样的函数定义(function(a,b) { console.info( a+b); })( 5,6);匿名函数其实是一种函数字面量,就像对象字面量一样{name:”小小”,age:1}  第一对圆括号括起来的function(){….}  是匿名函数的函数体,第二对圆括号 (5,6) 是匿名函数的参数,此函数字面量

javascript 基本类型有哪些?

Undefined:Undefined 类型只有一个值 undefined ,表示变量未定义此类型派生自Null 类型,所以出现一个很有趣的东西 if(null==undefined)alet(‘true’);将执行并弹出 true,因为条件是恒等的.当我们定义javascript变量的时候,其实默认就赋值为 undefined.var test; 其实等价于 var test=undefined;所以:当你要给一个对象定义变量时,最好这样, var testClass=null; 这样 testClass的默认值不少 undefined,保持的是一个空引用的null,下一步给testClas

node.js 下 express 框架如何获取参数

web下的提交数据的方法有2种,GET,POST,不明白的可以直接去面壁了.到底采用哪种方式提交,取决与form 的 method 值.作为node.js下大名鼎鼎的express框架,如何获取这2中参数呢(1) 先看路由规则app.get(‘/group/:groupID’,function(request,response,error){response.render(‘group’,{title:‘分组管理’,userList:[]};});上面的路由规则让我们不仅想起了MVC模式, 如: localhost:9210/group/1008这里要访问groupID 为 1008 的分组信

经典算法题随机从连续的100个不重复数中取出100个不重复随机数

经典的面试题: 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复网上实现的方法也千奇百怪.实现思路:(1)把N个数放入Hashtable 或者arrayList 中.(2)从上面的集合中随机抽取一个数放入int数组中.(3)把取出的这个数从上面的集合中删除.(4)循环 (2),(3) 步骤,直到int数组取满为止.我们一般都会想到这种做法,但是当Hashtable或者ArrayList中放几千万,几亿数据时,这时从集合中删除元素将严重影响性能,如果突破此瓶颈? 网上找到一种更好的方法.(1)把N个数放到容器A(int数组)中.(2)从N个数中随机取出1个数放入容器B(

Mac 常用快捷键整理

MAC下常用的快捷键:Command+W 将当前窗口关闭(可以关闭Safari标签栏,很实用)Command+Option+M 将所有窗口最小化Command+Q 关闭当前应用程序(相当于Dock鼠标右键推出.很实用)Command+M 将目前使用的窗口最小化Command+H 隐藏当前窗口或者软件Command+tab 为切换当前工作任务Control+Command+S 切换控制条的显示和隐藏Command+i 常规信息(显示及设置图标属性)Command+delete 移到废纸篓(删除)Optionion+鼠标 拖图像或文件夹可以将图像或文件夹拷贝到其它文件夹中,而不是移动Command

浅谈 javascript 中的比较操作符 ==

我们知道javascript中的比较操作符有2种,== 和 ===== 是只比较值, === 不仅比较值还比较类型 ,详细的区别自动google去.这里简单说下判断比较操作符 ==== 此操作符比较常用,但是隐藏的”坑”也不少,你在开发过程中有没有跳到 == 操作符设下的”坑”呢?由于javascript中的类型转化非常灵活,我们知道除了null,undefined,false,0,”空字符串 转化为布尔型 false 外,其他都是 true,其中有一个例外,NaN 是个非数字类型,NaN!=NaN 成立.这个非常特殊.javascript中比较操作符规则:(1)当基本类型比较时,两边会转化成

Git 简易使用笔记

git add . 会把当前目录中所有有改动的文件(不包括.gitignore中要忽略的文件)都添加到git缓冲区以待提交git add * 会把当前目录中所有有改动的文件(包括.gitignore中要忽略的文件)都添加到git缓冲区以待提交所以在有要忽略的文件(如:配置文件之类的)有做修改的时候git add .可以正常工作,会把所有非忽略的所有有改动的文件添加到缓冲区git add *则会报错,且此几命令不会添加任何文件到缓冲区本地代码添加修改首先(1) git add . 从本地代码文件夹添加到索引目录.(2) git commit -m”提交描述信息” 从代码索引目录提交到HEAD目录

比较俩个对象或者json格式数据是否相同

javascript 中的对象比较并不是值的比较.所以类似object 和json类型格式比较时要考虑是否包含相同的属性并具有相同的属性值.贴一个用于对象比较的函数.只需传入两个对象即可返回 true 或者 falsefunctioncompareObject(o1,o2){ if(typeofo1!=typeofo2)returnfalse; if(typeofo1=='object'){ for(varoino1){ if(typeofo2[o]=='undefined')returnfalse; if(!compareObject(o1[o],o2[o])

回到顶部