中间件技术

Koa 还是 Express

醉酒当歌 提交于 2020-04-06 20:03:52
先放一些别人写的 http://yemista.com/koa-js-vs-express-js-which-one-better-for-node-js/ https://www.airpair.com/node.js/posts/nodejs-framework-comparison-express-koa-hapi https://cnodejs.org/topic/540335d0cd66f2eb379b21d5 我也来凑个热闹 群里很多人在问到底该用Koa还是express,本文会对比2个框架的各种细节,并给出指导意见,希望能够为大家解惑。 http://koajs.com/ http://expressjs.com/ koa koa 是由 Express 原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的 Web 框架。使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,并极大地提升错误处理的效率。koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。 版本要求 Koa 目前需要 >=0.11.x版本的 node 环境。并需要在执行 node 的时候附带 --harmony 来引入 generators 。 express无所谓,目前0.10+都ok

了不起的Node.js读书笔记

六月ゝ 毕业季﹏ 提交于 2020-03-30 03:32:57
原文摘自我的前端博客,欢迎大家来访问 http://www.hacke2.cn 第二章 Js概览 基于GoogleV8引擎 Object.keys(o) 数组方法:遍历forEach、过滤filter、改变map 实现了String.prototype.trim() 含有JSON解析 第三章 阻塞与非阻塞IO 单线程注意点 小心处理内存中的变量,可能会影响两次访问的结果 不要编写阻塞式代码,可能会影响第二次访问的时间 事件轮训 先注册事件 不断询问这些事件是否已经分发dispatch 当事件分发了,相应的回调就会被触发 如果事件未触发,则继续执行其他代码 捕获未来才会执行到的函数所抛出的异常是不可能的 避免同步IO 第四章 Nodez中的Javascript global对象 对应于浏览器window process对象 process.nextTick == serTimeout(fn,1) 模块 require module exports NPM 绝对模块指Node内置模块以及在node_modules模块require(‘fs’) 相对模块指通过相对路径找的模块require(‘./module’) 暴漏数据exports.a(多个)、重写module.exports(一个) ##事件 EventEmitter 事件监听 on,事件分发emit

Mycat 数据库分库分表中间件

我的未来我决定 提交于 2020-03-21 07:18:23
Mycat关键特性 关键特性 支持SQL92标准 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster 基于Nio实现,有效管理线程,高并发问题。 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。 支持多租户方案。 支持分布式事务(弱xa)。 支持全局序列号,解决分布式下的主键生成问题。 分片规则丰富,插件化开发,易于扩展。 强大的web,命令行监控。 支持前端作为mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。 支持密码加密 支持服务降级 支持IP白名单 支持SQL黑名单、sql注入攻击拦截 支持分表(1.6) 集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。 什么是MYCAT 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID

数据库中间件漫谈

允我心安 提交于 2020-03-16 21:44:59
某厂面试归来,发现自己落伍了!>>> 1.前言 随着业务的发展,MySQL数据库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作的开销也会越来越大;另外,无论怎样升级硬件资源,单台服务器的资源(CPU、磁盘、内存、网络IO、事务数、连接数)总是有限的,最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。 分表、分库和读写分离可以有效地减小单台数据库的压力。 本文主要针对业界主流的数据库中间件的实现、功能、成本等方面进行对比,总结数据库中间件的实现方式,并展望未来的可能发展。 2. 实现方式 一般来说,对于数据库中间件,可以在以下六个层次做切入。 2.1 代码层 在同一个项目中创建多个数据源,采用if else的方式,直接根据条件在代码中路由。 Spring中有动态切换数据源的抽象类,具体参见AbstractRoutingDataSource。 如果项目不是很庞大,使用这种方式能够快速的进行分库。但缺点也是显而易见的,这种海量的代码侵入是绝不能被接受的。 而且当查询结果返回时,需要对跨库、聚合等查询结果进行归并,开发工作量非常巨大。 这种方式了解一下即可,一般不会去使用。 2.2 框架层 主要是修改或增强现有ORM框架的功能,在SQL中增加一些自定义原语或者hint来实现。 常见的比如实现一些拦截器(比如Mybatis的Interceptor接口)

互联网公司的面试官是如何360°无死角考察候选人的?[z]

落爺英雄遲暮 提交于 2020-03-16 08:15:27
[z]https://juejin.im/post/5c0e47ebf265da614e2be9a7 一、写在前面 最近收到不少读者反馈,说自己在应聘一些中大型互联网公司的Java工程师岗位时遇到了不少困惑。 这些同学说自己其实也做了精心准备,网上搜集了不少Java面试题,然而实际去互联网公司面试才发现,人家问的,和你准备的东西,对不上号,这就很尴尬了。。。 因此,从这篇文章开始,笔者准备写一个长期连载的系列: 《Java进阶面试系列》 。主要跟大家聊聊中大型互联网公司Java面试中的一些热门、高频的技术问题。 希望这个系列的文章,能在年后金三银四的跳槽季中,助各位小伙伴一臂之力。 二、先来体验一个真实的面试连环炮 好,闲话不多说,我们进入正题! 本系列文章,我们将会从消息中间件、分布式缓存、分布式搜索、分布式架构、海量数据、NoSQL、高并发、高可用、高性能、数据库、JVM虚拟机等各个方面来聊一下面试中的高频技术问题。 现在一些中大型互联网公司的面试官,很多都是技术水平非常不错的兄弟。在面试候选人的时候,一般都会采取连环炮的策略来深挖一个候选人的技术水平。 举个例子,比如说看你简历上写了 熟悉消息中间件(MQ技术) 。那么可能我们就会有一个类似下面这样的连环炮式发问: 说说你们公司线上生产环境用的是什么消息中间件? 那你们线上系统是有哪些技术挑战

Mycat 数据库分库分表中间件

心已入冬 提交于 2020-03-14 04:43:34
http://www.mycat.io/ Mycat 国内最活跃的、性能最好的开源数据库中间件! 我们致力于开发高性能的开源中间件而努力! 实体书 Mycat权威指南 » 开源投票支持Mycat 下载 » start » Mycat关键特性 关键特性 支持SQL92标准 支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster 基于Nio实现,有效管理线程,解决高并发问题。 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。 支持多租户方案。 支持分布式事务(弱xa)。 支持XA分布式事务(1.6.5)。 支持全局序列号,解决分布式下的主键生成问题。 分片规则丰富,插件化开发,易于扩展。 强大的web,命令行监控。 支持前端作为MySQL通用代理

互联网公司的面试官是如何360°无死角考察候选人的?

拈花ヽ惹草 提交于 2020-03-12 11:39:16
作者: 石杉的架构笔记 一、写在前面 最近收到不少读者反馈,说自己在应聘一些中大型互联网公司的Java工程师岗位时遇到了不少困惑。 这些同学说自己也做了精心准备,网上搜集了不少Java面试题,然而实际去互联网公司面试才发现,人家问的,和你准备的对不上号,这就很尴尬了。 二、先来体验一个真实的面试连环炮 好,闲话不多说,我们进入正题! 本系列文章,我们将会从消息中间件、分布式缓存、分布式搜索、分布式架构、海量数据、NoSQL、高并发、高可用、高性能、数据库、JVM虚拟机等各方面聊一下面试中的高频技术问题。 现在一些中大型互联网公司的面试官,在面试候选人时,一般都会采取连环炮的策略来深挖一个候选人的技术水平。 举个例子,比如说看你简历上写了熟悉消息中间件(MQ技术)。那么可能我们就会有一个类似下面这样的连环炮式发问: 说说你们公司线上生产环境用的是什么消息中间件? 那你们线上系统是有哪些技术挑战,为什么必须要在系统里引入消息中间件? 你们的消息中间件技术选型为什么是RabbitMQ? 为什么不用RocketMQ或者是Kafka?技术选型的依据是什么? 你们怎么保证消息中间件的高可用性?避免消息中间件故障后引发系统整体故障? 使用消息中间件技术的时候,你们怎么保证投递出去的消息一定不会丢失? 你们怎么保证投递出去的消息只有一条且仅仅一条,不会出现重复的数据?

ICE专题:ICE起步

这一生的挚爱 提交于 2020-03-08 08:23:38
ICE初步 最早开始接触ICE是在2005,3月份,当时一个朋友向另一个正打算研究corba的朋友强烈的推荐了ICE. 参考: http://www.zeroc.com/ 1.什么是ICE? ICE(internet communications engine)是适用于异种环境的面向对象中间件平台。 那么什么是中间件呢? 比较流行的定义是:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/服务器的操作系统之上,管理计算资源和网络通讯。 从中间件的定义可以看出,中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,定义中特别强调了其网络通讯功能. (如此说来,twisted就是一个中间件) 目前中间件的三大主流平台: 1.OMG的CORBA 2.sun的J2EE(包括ejb等技术) 3.MS的Microsoft DNA 2000(DCOM/COM/COM+等技术) 关于中间件的介绍: http://tech.ccidnet.com/pub/article/c322_a204949_p3.html 2.ICE的一些概念 服务器/客户端(server/client):这个的定义与一般的定义相同,主动的一方被认为是client ICE对象:跟OOP中的对象类似,不同之处在于

使用mycat做Mysql读写分离

人盡茶涼 提交于 2020-03-06 11:42:07
本文转载自: https://www.93bok.com 实验环境: Centos6.5 minimal 64位系统 服务器IP:192.168.10.22(mycat) 192.168.10.27(master) 192.168.10.29(slave) 192.168.10.21(测试客户端) 说明: 1. 安装包已经提前下载好,此文档中不再演示下载步骤 2. 根据笔者习惯,所有的源码包都在/a01/apps/apps_src/ 3. 所有的服务安装路径都在/a01/apps/xxxxxxx 4. 服务器只安装了MySQL,如果不会安装,请参考之前文章 包版本: MySQL: mysql-5.7.19.tar.gz或者mysql-boost-5.7.19.tar.gz Mycat: Mycat-server-1.6.5-release-20171117203123-linux.tar JDK: jdk-8u151-linux-x64.tar.gz JDK去oracle官网下载: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Mycat官网下载: http://www.mycat.io/ MySQL读写分离的概述 Mysql作为目前世界上使用最广泛的免费数据库

1

时光毁灭记忆、已成空白 提交于 2020-03-02 13:00:08
Python面试重点(web篇) 注意:只有必答题部分计算分值,补充题不计算分值。 第一部分 必答题 注意:除第四题4分以外,其他题均每题3分。 写出常用的bootstrap的样式。 container,row,col-md-1,table table-striped,active,success,form-inline,form-group 什么是响应式布局? 利用媒体查询,让同一个网站兼容不同的终端(PC端、移动端)呈现不同的页面布局。 请通过jQuery发送ajax请求。 <script> $("#sub").click(function(){ var uname = $("#username").val(); var pwd = $("#password").val(); var csrf = $("[name=csrfmiddlewaretoken]").val(); #第二步 $.ajax({ url:"{% url 'login' %}", type:"post", 第三步添加键值对 data:{username:uname,password:pwd,csrfmiddlewaretoken:csrf}, {#headers:{"X-CSRFToken":$.cookie('csrftoken')},#} success:function (res) { console