聚合文章列表
20 浏览

在 Java 中使用 redis 的消息队列服务

前言关于redis我们前面已经讨论过了缓存、分布式锁、分布式唯一标识、LBS服务的用法,这里我们来谈谈利用redis来实现一个消息服务。典型的消息服务是一个生产者和消费者模式的服务。一般是有生产者产生消息,将消息发送到队列中。而消息的消费者则监听消息,对消息进行处理。有很多非常优秀的消息队列服务的产品。例如RabbitMQ、RocketMQ、Kafka等。这些产品都具备非常高级的功能。可靠性、扩展性都非常的好。但是redis自身也能够很简单的实现消息队列的生产者和消费者模式。本文简单介绍一下在Java下是如何实现的。相关命令介绍参考redis官网redis和pubsub模式相关的命令如下。PUBLISHchannelmessage:发布一条消息到指定的频道SUBSCRIBEchannel[channel...]:订阅指定频道的消息。频道可以是多个PSUBSCRIBEpattern[pattern...]:订阅符合给定模式频道的消息UNSUBSCRIBE[channel[c

消息系统 2018-01-03 发布
18 浏览

中间件-消息中间件(二)本地消息队列的应用

任何技术演变都离不开业务发展和设计者重点解决的问题的推动,从早期狭隘的内存消息队列到现如今的独立的消息中间件,消息中间件在应用系统中承担了很重要的削峰填谷,系统解耦以及业务处理实时性的作用。这里就先八一八本人经历过的内存消息队列设计研发的场景和设计思路,即使到消息中间件时代,依然能从内部实现机制看到过去的思路。大约从2006年开始,接触实时处理类应用,应用系统不再是准实时处理离线的文件数据,也就是从各个业务模块之间文件数据方式实现业务数据处理传递转变为实时消息请求。准实时处理应用结构:消息处理模式增强处理实时性:1)第一个阶段,引入本地模式内存消息队列达到实时性处理能力的手段:a.基于TCP之上socket通信标准API,封装应用层协议实时系统要解决分布式部署的能力,就需要涉跨主机应用通信。对于实时处理系统,跨主机之间通过封装客户端/服务端通信框架,来实现跨主机之间数据通信问题。另外封装应用层协议,来实现数据传递的标准定义和序列化处理。本文主要聊一

消息系统 2018-01-04 发布
25 浏览

kafka性能技术分析

1.通过磁盘顺序读写,效率高,appendLog,对比raid-57200rpm的磁盘sequenceio600M/srandomio100kb/skafka写操作时,依赖底层文件系统的pagecache功能,pagecache会将尽量多的将空闲内存,当做磁盘缓存,写操作先写到pageCache,并将该page标记为dirty;发生读操作时,会先从pageCache中查找,当发生缺页时,才会去磁盘调整;当有其他应用申请内存时,回收pageCache的代价是很低的,使用pageCache的缓存功能,会减少我们队JVM的内存依赖,JVM为我们提供了GC功能,依赖JVM内存在kafka高吞吐,大数据的场景下有很多问题。如果heap管理缓存,那么JVM的gc会频繁扫描heap空间,带来的开销很大,如果heap过大,fullgc带来的成本也很高;所有的In-ProcessCache在OS中都有一份同样的PageCache。所以通过只在PageCache中做缓存至少可以提高一倍的缓存空间。如果Kafka重启,所有的In-Proc

消息系统 2018-01-04 发布
AD 友情赞助
17 浏览

iOS面试/我是个程序员,我想要份稳定的工作怎么了?

坐标:广州背景:我是一个iOS程序员,从事开发iOS工作3年多些,先后待了4家公司,Swift、OC项目都做过。前面两家在深圳,后面由于家庭原因,2016年9月到广州工作。2016年9月是iOS行业比较不景气的环境,我在一家企业的广州分公司工作,到2017年6月,分公司宣布解散,总部在广西,要我考虑过去广西总部,但跟我的职业规划不同,所以我被迫开始重新找工作。2017年6月底,在广州一家挂了新三板做信息服务的公司开始了我在广州的第二份工作,到昨天(也就是2018年1月2号),公司决定不再需要研发App,要使用H5做产品。所以,我再一次失业了。2017年,我待了两家公司。------------------------------------此是背景--------------------------------------昨天(2018年1月2号)我更新了招聘网上简历,广州某企业联系到我,希望我今天过去面试,今天下午我去了。于是有了接下来让我有些不知到该作何感想的一幕。到了某公司进行面试,iOS端负责人面试了我

程序员 2018-01-04 发布
19 浏览

Spring Cloud微服务实战

本书从时下流行的微服务架构概念出发,结合SpringCloud的解决方案,深入浅出地剖析了其在构建微服务架构中所需的各个基础设施和技术要点,包括服务治理、容错保护、API网关、配置管理、消息总线等。对于各个组件的介绍,《SpringCloud微服务实战》主要以示例与源码结合的方式来帮助读者更好地理解这些组件的使用方法以及运行原理。同时,在介绍的过程中,还包含了作者在实践中所遇到的一些问题和解决思路,可供读者在实践中作为参考。《SpringCloud微服务实战》适合所有Java开发人员,尤其适合正在做微服务架构技术选型或正在实施微服务架构的团队查阅和参考。SpringCloud是一个微服务架构实施的综合性解决框架,而在如何构建微服务的选择上,由于我们团队是从SSM(Spring+SpringMVC+MyBatis)框架开始演进的,基于让演进中改动最小的初衷,我们决定使用SpringBoot做微服务构建。关注微信公众号:白玉盘(baiyu_pan),后台发送“SpringCloud微服务实战1”下载电子书。

软件架构 2018-01-04 发布
17 浏览

程序猿的日常——SpringMVC系统架构与流程回顾

web开发经历了很漫长的时间,在国内也快有十几年的时间了。从最开始的进程级到现在的MVC经历了很多的改进和优化,本篇就主要复习了解下SpringMVC相关的知识。发展历程第一阶段CGI进程响应这一阶段,服务器比较弱,请求也很简单,就是用户发一个请求,服务器接收后新建进程,然后返回结果。这种方式一看代价就很大,每次都新建进程,很麻烦。第二阶段Servlet线程级别响应Servlet结构跟上面差不多,只不过每次都只是新建一个线程,这样代价就小很多了。Servlet的生命周期有四个阶段:1加载和实例化:启动Tomcat这种Servlet容器,容器会根据配置文件加载Servlet类,并通过new方法进行实例化2初始化:然后调用init()方法初始化,每个Servlet只会初始化一次,可以理解为单例模式3请求处理:当服务器接收请求后,接收请求的线程找到对应的Servlet,调用service()方法响应。因此会存在多个线程同时掉用一个Servlet实例的情况,因此这里会有线程安全问题的!4销毁:Tomcat关

软件架构 2018-01-04 发布
AD 友情赞助
16 浏览

Swagger-强大的API文档工具

本地方式:基于node.js、npm、http-server,如果还没有安装node环境的同学可以参考Node安装教程。npminstall-ghttp-server//安装http-serverwgethttps://github.com/swagger-api/swagger-editor/releases/download/v2.10.4/swagger-editor.zip//不用wget命令也可以,复制链接去下载zip包unzipswagger-editor.zip//解压下载的zip包http-serverswagger-editor//启动swagger打开http://127.0.0.1:8080/#/,之后你可以看到与远程方式相同的页面:image.png至此,编辑环境搭建完成~功能介绍你可以引用本地的json、yaml文件,也可以新建,编写完成后下载。

软件架构 2017-05-30 发布
15 浏览

实时迁移以及Jelastic中微服务的高可用性的Docker多容器编配

容器震动了IT世界,由于其轻量级的虚拟化,更高的密度,弹性和快速配置,为云PaaS和IaaS提供了全新的虚拟化解决方案。在公共云,私有云或混合云中使用容器可为用户在负载峰值,维护时段或数据中心可用性问题期间随时放置工作负载和更改位置提供新的自由度。容器的尺寸比虚拟机(VM)小得多,因此将它们从一个云移动到另一个容易得多。这使得应用程序在云设置中更具移动性,易于管理,节省了DevOps团队的时间和精力。在这个由三部分组成的博客系列中,我们将探讨Jelastic平台中Docker模板实现的主要优点。我们将阐述Jelastic自2011年以来如何使用容器,以及为什么我们相信我们的解决方案提供了先进的容器编排,这可能是目前市场上最好的。JelasticCloud中的容器系统与微服务体系结构模式并行不悖。每一个庞大的,复杂的,为企业准备就绪的应用程序代表一个可以被分别调整,配置和监视的服务。如果在项目中需要进行任何更改,则可以轻松地在特定服务中进行更改,而无需重新构建和重新部署整个应用程序(由于它是单一庞大的应用程序中的要求)。有了这样的

软件架构 2018-01-04 发布
17 浏览

由FTWRL导致的MySQL从库死锁分析及参数深究

最近线上执行备份的从库时出现复制卡死现象,分析以后发现是两个死锁,showfullprocesslist的状态如图1所示,其中,数据库版本是官方5.7.18版本,我们内部做了些许修改,但与此次死锁无关。图一先说一下结论,图一中:162线程是执行innobackup执行的flushtableswithreadlock;144是SQL线程,并行复制中的Coordinator线程;145/146是并行复制的worker线程,145/146worker线程队列中的事务可以并行执行。144Coordinator线程分发relaylog中事务时发现这个事务不能执行,要等待前面的事务完成提交,所以处于waitingfordependenttransactiontocommit的状态。145/146线程和备份线程162形成死锁,145线程等待162线程globalreadlock释放,162线程占有MDL::globalreadlock全局读锁,申请全局commitlock的时候阻塞等待146线程,146线程

MySQL 2018-01-04 发布
AD 友情赞助
12 浏览

Java中最简单的连接Oracle数据库和Mysql数据库的方式

学习了数据库之后,我们就需要通过Java代码去连接一些数据库,比如Oracle、Mysql等。那么怎么样才能最简单轻松有效的连接到数据库呢?下面我们就一起来分享下,怎么使用最简单的代码实现数据库的连接。我们先来看看连接Oracle数据库:1.需要加入连接Oracle数据库的驱动jar包等准备工作(本文最后有加入jar包的图解步骤),然后在静态static代码块中注册驱动(利用反射原理)2.封装一个返回值为Connection类型实例的方法,调用DriverManager的getConnection(url,user,password)方法将三个参数输入,该方法的返回值就是一个连接Connection对象,然后将其返回即可3.在需要连接Oracle数据库时,只需要创建这个OracleJdbcUtils的实例对象(或者直接类名.静态方法),调用静态方法,便可获得数据库的连接。下面我们一起来看看连接Mysql数据库:1.加入mysql-connector-java-5.1.7-bin.jar、co

MySQL 2018-01-04 发布
10 浏览

想知道PHP数据库编程之MySQL优化策略概述吗?进来我告诉你

本文简单讲述了PHP数据库编程之MySQL优化策略。分享给大家供大家参考,具体如下:前些天看到一篇文章说到PHP的瓶颈很多情况下不在PHP自身,而在于数据库。我们都知道,PHP开发中,数据的增删改查是核心。为了提升PHP的运行效率,程序员不光需要写出逻辑清晰,效率很高的代码,还要能对query语句进行优化。虽然我们对数据库的读取写入速度上却是无能为力,但在一些数据库类扩展像memcache、mongodb、redis这样的数据存储服务器的帮助下,PHP也能达到更快的存取速度,所以了解学习这些扩展也是非常必要,这一篇先说一下MySQL常见的优化策略。几条MySQL小技巧1、SQL语句中的关键词最好用大写来书写,第一易于区分关键词和操作对象,第二,SQL语句在执行时,MySQL会将其转换为大写,手动写大写能增加查询效率(虽然很小)。2、如果我们们经对数据库中的数据行进行增删,那么会出现数据ID过大的情况,用ALTERTABLEtablenameAUTO_INCREMENT=N,使自增ID从N开始计数。3、对int类型添加ZER

MySQL 2018-01-04 发布
16 浏览

p3:pyCharm与mysql

1、安装mysqldebian执行:sudoapt-getinstallmysql-servermysql-client2、安装python与mysql接口接口or驱动非常多,主流的有pymysql、mysql-connector等等,这里推荐pymysql执行:pip3installpymysql3、连接1importpymysql23#创建连接4conn=pymysql.connect(host='localhost',port=3306,charset='utf8',5user='username',password='123789',database='test1db')6cr=conn.cursor(#创建游标,默认获取的数据是元祖类型7cursor=pymysql.cursors.DictCursor)#游标设为字典类型8print(conn)9db=cr.execute("showda

MySQL 2018-01-04 发布
AD 友情赞助
18 浏览

SQL Server 的 Enterprise、Standard、Express、Developer、LocalDB 的区别

SQLServerEnterprise不用说了,企业版,要啥有啥。SQLServerStandard对大多数公司来说,足够了,限制了少部分功能、性能,但是无大碍。限制为最多使用CPU的24个核、最多使用128GB内存。SQLServerExpress,2017版本(不支持WindowsServer2008R2)现在分为ExpressCore、ExpressAdvanced版本,Advanced版本在Core版本基础上增加了全文索引和报表服务。Express版本可以用于小型型服务器,因为限制为最多使用CPU的4个核、最多使用1410MB内存、10GB容量。免费SQLServerDeveloper这玩意儿和企业版一样,无限制,但是它许可在非生产环境下用作开发和测试。免费SQLServerLocalDB只要用户模式下运行,也就是说不适合于做服务器,功能和Express差不多,性能就别谈了,不然不叫LocalDB了,所以常常用于开发机。免费以

SQL Server 2018-01-04 发布
14 浏览

SQL Server 2016 行级别权限控制

背景假如我们有关键数据存储在一个表里面,比如人员表中包含员工、部门和薪水信息。只允许用户访问各自部门的信息,但是不能访问其他部门。一般我们都是在程序端实现这个功能,而在sqlserver2016以后也可以直接在数据库端实现这个功能。解决安全已经是一个数据方面的核心问题,每一代的MS数据库都有关于安全方面的新功能,那么在SqlServer2016,也有很多这方面的升级,比如‘RowLevelSecurity’,‘AlwaysEncrypted’,‘DynamicDataMasking’,和‘EnhancementofTransparentDataEncryption’等等都会起到安全方面的作用。本篇我将介绍关于RowLevelSecurity(RLS--行级别安全),能够控制表中行的访问权限。RLS能使我们根据执行查询人的属性来控制基础数据,从而帮助我们容易地为不同用户提透明的访问数据。行级安全性使客户能够根据执行查询的用户的特性控制数据库中的行。为了实现RLS我们需要准备下面三个方面:谓

SQL Server 2018-01-04 发布
14 浏览

Nodejs的运行原理-架构篇

前言本来是想只做一个Nodejs运行原理-科普篇,但是收到了不少私信,要我多分享一些更进阶,更详细的内容,所以我会在接下来的两个月里继续更新Nodejs运行原理。PS:此系列只做Nodejs的运行原理(架构,libuv,v8etc),并不介绍Nodejs功能以及使用方法。本文以两个view来看Nodejs的架构,一个是从模块依赖的角度,另一个是从函数调用的角度。1.模块依赖如上图所示:yourcode为编辑代码,node.js核心,Hostenvironment为宿主环境(提供各种服务,如文件管理,多线程,多进程,IOetc)1.1node.js这里重点介绍,nodejs组成部分:v8engine,libuv,builtinmodules,nativemodules以及其他辅助服务。v8engine:主要有两个作用1.虚拟机的功能,执行js代码(自己的代码,第三方的代码和nativemodules的代码)。2.提供C++函数接口,为nodejs提供v8初始化,创建con

JavaScript 2018-01-04 发布
15 浏览

关于 react 那些小知识点

摘要:这个总结可能大概也许会以问答的形式总结希望你能各个击破,像闯关卡一样一个一个过!开始吧!Let'sgo!说在前面关于react的总结过去半年就一直碎碎念着要搞起来,各(wo)种(tai)原(lan)因(le),没错就是我太懒了。上个月去体检的时候,查体检报告时都顶着各种心理压力呢,和想象中的一样各种职业病各种身体亚健康呢。所以现在尽量早睡坚持早起了,然后呢,起得早就有时间做点儿总结了。心心念的东西重新拿了起来了。希望这个总结归纳能对你的日常开发或者跳槽面试有帮助哪怕只有那么一点点,反正对我帮助是挺大,温故而知新嘛!!!废话说了一堆,这个总结可能大概也许会以问答的形式总结希望你能各个击破,像闯关卡一样一个一个过!开始吧!Let'sgo!【1】reactcomponent有几种写法?分别是什么?①函数式定义的无状态组件(StatelessFunctional)性能更高效、代码更简洁没有state,也就是无状态不需要管理/维护组件的生命周期纯函数,相同的props会得到同样的UI渲染结果

JavaScript 2018-01-04 发布
9 浏览

五個月成為 JavaScript 工程師的完整攻略,每個月要幹嘛都寫出來讓你照著做!

【我們為什麼挑選這篇文章】我就不說太多了,如果你跟本篇作者有相同的毅力,相信做什麼都能成功的!(責任編輯:陳君毅)如果你是一個初學者,初級開發人員,或者對這個行業很好奇,這篇文章就是為你準備的。如果你是一個成熟的開發者​​,你可能會在這裡找到一些有用的連結,因為我列出了最好的資源,能給你的技能提升帶來巨大好處。利用在線課程和大多數免費工具,你可以獲得一項有價值的技能,讓你在一個有回報、充滿挑戰的行業中工作。2018年,需要有技術素養的人的工作領域將會越來越多。這也是我第一次進入這個行業的原因。我想要控制自己的生活,並對自己從事什麼類型的工作有發言權。直到今天,我還在堅持自己的觀點:如果這是你的目標,這是一個最好的行業。重要提示:這篇文章看起來可能像是指導你一步一步成為開發者的指南,但如果你仔細觀察,這背後有一種你可以應用於任何領域學習的策略。為什麼要學coding?在我們進入真正成為一名開發者的步驟之前,必須要先了解一下為什麼你要沿著這條路走下去。每一個需要你付出生命中重要時間的決定都應該是合理。畢竟,時間是我們擁有的最

JavaScript 2018-01-04 发布
8 浏览

windows下使用IDEA创建VUE项目

1.环境搭建1.1检测是否安装好nodejs和npm检测命令node-vnpm-v如果没有安装需要先安装nodejs的下载路径:https://nodejs.org/en/download/在Windows上安装时务必选择全部组件,包括勾选AddtoPath。安装完成后,在Windows环境下,请打开命令提示符,ideacmd窗口然后输入node-v,如果安装正常,你应该看到版本号输出:检查nodejs是否安装成功npm是Node.js的包管理工具(packagemanager),Nodejs的安装程序默认安装npm,在命令提示符或者终端输入npm-v,可以看到类似以下的输出:检查npm在cmd中直接使用npm来安装的一些工具的话会比较慢,所以我们使用淘宝的npm镜像:输入npmi-gcnpm--registry=https://registry.npm.taobao.org,即可安装npm镜像,以后再用到npm的地方直接用cnpm来代替就好了,如果权限不够,请使用管理员运

JavaScript 1900-01-01 发布
14 浏览

angular2.0的安装

你一定喜欢看的Webpack2.×入门实战最近在学习Webpack,网上大多数入门教程都是基于Webpack1.x版本的,我学习Webpack的时候是看了zhangwang的<<入门Webpack,看这篇就够了>>写的非常好,不过是基于Webpack1.x版本的,语法上和Webpack...

JavaScript 1900-01-01 发布
6 浏览

Vue组件的使用

官网:https://cn.vuejs.org/v2/guide/components.html1.Vue组件的介绍组件(Component)是Vue.js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。在较高层面上,组件是自定义元素,Vue.js的编译器为它添加特殊功能。2.使用组件对于自定义标签的命名Vue.js不强制遵循W3C规则(小写,并且包含一个短杠)组件在注册之后,便可以作为自定义元素在一个实例的模板中使用。注意:在初始化根实例之前注册组件注册组件的时候,首先要编写需要的组件(相当于一个页面,包含js操作,css样式等),比如:新建一个头部组件上面这个头部组件只有一句话,放在h标签中,使用的时候,需要先导出组件,即(exportdefault块),这样才能在需要该组件的位置使用import导入export和exportdefault使用的区别:两个都是用于导出不同之处在于:export导出之后,在要接收的地方需要import{变量名}from

JavaScript 1900-01-01 发布
AD 友情赞助