Redis总结(五)缓存雪崩和缓存穿透等问题   前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhong/category/771056.html .今天总结总结缓存使用过程中遇到的一些常见的问题.比如缓存雪崩,缓存穿透,缓存预热等等. 缓存雪崩 缓存雪崩是由于原有缓存失效(过期),新缓存未到期间.所有请求都去查询数据库,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机.从而形成一系列连锁…
WCF开发实战系列三:自运行WCF服务 (原创:灰灰虫的家 http://hi.baidu.com/grayworm)上一篇文章中我们建立了一个WCF服务站点,为WCF服务库运行提供WEB支持,我们把这个WCF服务站点布署到IIS中去,实现WCF服务在Web上的发布.这一篇文章中我们来谈一下“自运行WCF服务”.什么是“自运行WCF服务”呢?就是通过我们编写的控制台程序或WinForm程序来为本机或远程机提供WCF服务的方式. 下面我们使用控制台程序来提供WCF的自运行服务 第一步:建立控制台应…
前面讲了webapi的安全验证和参数安全,不清楚的朋友,可以看看前面的文章,<Web API系列(二)接口安全和参数校验>,本文主要介绍Web API异常结果的处理.作为内部或者是对外提供的统一webapi 接口,统一的异常处理,把正确的信息返回给调用者很重要.这样可以让接口开发人员,了解具体的原因所在,这样可以得到有效的错误处理. 需要注意的是,webapi异常的状态码,尽量不要和业务状态码混淆.可以分为两个不同的字段,或者是状态码的规则不同.相关返回数据的格式,可以参考,前面的文章. 1.…
使用java API操作kafka 1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.…
基于java使用RabbitMQ 框架:SpringBoot1.5.14.RELEASE maven依赖: <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>3.6.5</version> </dependency> <dependency> <groupId&g…
上面两章,主要讲基本的配置,今天我们来做一个比较有趣的东西,为每个客户加一个头像图片.如果我们图片保存在自己的服务器,对于服务器要求有点高,每次下载的时候,都会阻塞网络接口,要是1000个人同时访问这张图片,会彻底报废掉整个网络.如果你跟我一样,在小公司,没有自己专业的图片服务器,又想用图片,那就跟我一样,尝试着用七牛吧.这个真的是一款很不错云产品. 首先,在model里加一个字段, # coding:utf-8 from sqlalchemy import create_engine, For…
Apache Kafka系列(一) 起步 Apache Kafka系列(二) 命令行工具(CLI) Apache Kafka系列(三) Java API使用 摘要: Apache Kafka Java Client API 一.基本概念 Kafka集成了Producer/Consumer连接Broker的客户端工具,但是在消息处理方面,这两者主要用于服务端(Broker)的简单操作,如: 1.创建Topic 2.罗列出已存在的Topic 3.对已有Topic的Produce/Consume测试…
软件国际化是在软件设计和文档开发过程中,使得功能和代码设计能处理多种语言和文化习俗,在创建不同语言版本时,不需要重新设计源程序代码的软件工程方法.这在很多成熟的软件开发平台中非常常见.对于.net开发者来说,我们一般可以通过以下两种方式来实现软件的国际化. 语言配置文件 资源文件 在.net平台中,软件的国际化主要依靠工作线程的国际化来完成.在.net框架的的处理线程中,我们通过设置Thread.CurrentCulture属性来实现对日期.时间.数字.货币值.文本的排序顺序,负载约定和字符串比…
canvas的图像变换api,可以帮助我们更加方便的绘画出一些酷炫的效果,也可以用来制作动画.接下来将总结一下canvas的变换方法,文末有一个例子来更加深刻的了解和利用这几个api. 1.画布旋转api 这里要先了解另一个api translate(x,y):重新定义画布上(0,0)的位置. 首先定义一个旋转的角度a,比如想要旋转45度. a=45*Math.PI/180 rotate(a):rotate的旋转参数是弧度.注意,旋转之前要先设定旋转的中心点. function cxt_rota…
基础篇 基础场景见上面两个帖子,这里单独说明字符串和可变长度字符串的用法. 话不多说,开始今天的演(表)示(演) Profile和插件开发 添加一个string类型的属性: 在插件里添加一条数据上报消息:(已添加一个messageId,值为0x02) 再添加一个固定长度的字符串型字段,长度为6个字节: 与profile里的属性关联起来: 再添加一条数据上报消息:(已添加一个messageId,值为0x03) 再添加一个长度字段: 添加一个可变长度字符串,并关联长字段: 与profile里的属性关…
上一章,我们讲到,怎么用蓝图建造一个好的项目,今天我们继续深入.上一章中,我们所有的接口都写在view.py中,如果几十个,还稍微好管理一点,假如上百个,上千个,怎么找?所有接口堆在一起就显得杂乱无章.flask没有推荐大家在这方面的功能,通常都是由自己来实现.我们通常的做法,都是按照功能划分文件,把不同功能的应用接口,划分到不同文件,如果某个功能的接口很多,再细分一下.当然你也可以按照其他划分方式划分,只要记住一点,项目怎么管理方便,就怎么划分,千万不要被框架框死. 废话说过了,来点实际的.上…
概述 介绍了 api 的各种写法之后,下面介绍构建 api 时与数据库连接的方式. 注 下面使用的工程的完整代码已经公开在: http://git.oschina.net/wangyubin/phoenix-api ecto 简介 ecto 其实是独立于 phoenix framework 的,它是 elixir 语言实现的用来访问数据库的框架,类似于 ORM 但是和传统的 ORM 又有些不一样. 可以这么理解,它是利用了 elixir 语言的动态性和函数式的特性,参考了传统的 ORM 的优势后…
phoenix 开发API系列(一)创建简单的http api phoenix 开发API系列(二)phoenix 各类 api 实现方式 phoenix 开发API系列(三)phoenix api 结合数据库…
概述 上一篇已经提到如何安装以及利用 phoenix framework 来开发一个简单的 api. 接着上次的工程,下面演示如何通过 phoenix framework 来构建各种类型的 api 来应对前端的各类请求. 注 下面使用的工程的完整代码已经公开在: http://git.oschina.net/wangyubin/phoenix-api 各类 api 的实现示例 restful url 的参数 introduce by code: controller 中相关代码: @doc "/…
安装 phoenix framework 安装 phoenix 很简单: mix archive.install https://github.com/phoenixframework/archives/raw/master/phoenix_new.ez 安装之后,mix 的子命令中就多了 phoenix 相关的内容了. $ mix help | grep phoenix $ mix local.phoenix # Updates Phoenix locally $ mix phoenix.ne…
在EJB 2.x中.EJB有3种类型的Bean.各自是会话Bean(Session Bean).消息驱动Bean(Message-Driven Bean)和实体Bean(Entity Bean). 随着EJB 3的推出,EJB2.x中的实体Bean逐渐被JPA规范所替代,JPA不仅能在EJB环境中使用,并且能在Java SE.Java EE环境中使用.相对于EJB 2.x中的实体Bean,它的使用范围更广. 但这里我们仍然将其称做实体Bean.         与会话Bean和消息驱动Bean类…
在注册成为BIMFACE的应用开发者后,要能在浏览器里浏览你的模型或者获取你模型内的BIM数据, 首先需要把你的模型文件上传到BIMFACE.根据不同场景,BIMFACE提供了丰富的文件相关的接口. 文件相关所有接口都需要提供有效的Access token.不支持View token. 方式一:普通文件流上传 请求地址:PUT https://file.bimface.com/upload 说明:使用普通文件流上传,不支持表单方式:文件流需要在request body中传递. 参数: 内容类型(…
系列目录     [已更新最新开发文章,点击查看详细] 在代表模型的源文件上传到BIMFACE后,一般会进行三种API调用操作: 发起模型转换 查询转换状态 如转换成功,获取模型转换后的BIM数据 在模型成功进行转换后,模型内的BIM信息会在云端进行解析,抽取并结构化入库.这些信息包含: 构件属性信息 构件分类树 楼层 单体 专业 构件材质 模型链接 空间 房间 图纸 …​ 在确认模型转换成功后,为了开发者能方便的获取这些BIM信息并集成在自己的应用中,BIMFACE提供了一系列的数据接口,这些…
系列目录     [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列12 服务端API之文件转换>中详细介绍了7种文件转换的方法.发起源文件/模型转换后,转换过程可能成功也可能失败.那么在这种情况下就需要查询源文件/模型的转换状态.一共有三种方式可以知道转换是否成功. 第一种:调用文件转换接口 https://api.bimface.com/translate,该接口的返回结果中包含转换结果信息. 第二种:调用文件转换接口 https://api.bimface.com/tr…
BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在前一篇博客<C#开发BIMFACE系列45 服务端API之创建离线数据包>中通过调用接口成功的创建一个离线数据包 离线数据包是存储在BIMFACE公有云服务器上的,所以使用之前需要将其下载到本地.本文将介绍通过接口下载离线数据包的操作过程. 获取离线数据包下载地址 调用接口的实现代码 1 /// <summary> 2 /// 获取数据包下载地址 3 /// </summary> 4 ///…
系列目录 前端构建大法 Gulp 系列 (一):为什么需要前端构建 前端构建大法 Gulp 系列 (二):为什么选择gulp 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gulp专家 前端构建大法 Gulp 系列 (四):gulp实战 gulp 本身能做的事情非常少,主要是通过插件来提供各种功能,gulp本身只提供了4个非常简洁的API, 掌握这4个API你就基本掌握了gulp的全部. 一.gulp.task gulp 是基于task的方式来运行 定义 gulp.task…
如果有几个原因可以让你爱上flask这个极其灵活的库,我想蓝图绝对应该算上一个,部署蓝图以后,你会发现整个程序结构非常清晰,模块之间相互不影响.蓝图对restful api的最明显效果就是版本控制:而对整个项目来说,总要有后台管理系统吧,总要有web管理吧,但这些东西不能全部放到view.py.不单单是这样,如果你是一个经验丰富的程序员,你应该知道,一个程序最好只有一个入口点,从这个入口点进去,全是单向的,就像一棵树一样,入口点就在树根,然后蔓延到树干,树枝.树枝和树枝之间最好不要太多交集,也就…
在<C#开发BIMFACE系列4 服务端API之源上传文件>.<C#开发BIMFACE系列5 服务端API之文件直传>两篇文章中详细介绍了如何将本地文件上传到BIMFACE服务器及BIMFACE后台的分布式存储系统中.文件上传成功后,BIMFACE的服务会返回与该文件相关的信息,如下图: 开发者在成功上传了文件并获得相关文件信息后,可以将信息保存到数据库中供后续的业务开发使用. 除此之外,BIMFACE平台还提供了单独的服务用于获取文件信息.获取文件信息列表.获取文件上传的状态信息…
系列目录     [已更新最新开发文章,点击查看详细] BIMFACE 平台为开发者提供了大量的服务器端 API 与 JavaScript API,用于二次开发 BIM 的相关应用. BIMFACE 所有的 RESTful API 都有对应的鉴权机制保护,目前 BIMFACE 支持两种鉴权方式: Access token 代表自身应用的身份,使用应用的 appkey, secret,通过调用/oauth2/token接口获取. View token 代表对单个模型/集成模型/模型对比的访问权限,…
系列目录     [已更新最新开发文章,点击查看详细] 本文详细介绍如何获取BIMFACE平台中所有上传过的文件信息列表. 请求地址:GET https://file.bimface.com/files 说明:根据多种查询条件获取文件详细信息列表,支持分页 参数: 请求 path(示例):https://file.bimface.com/files 请求 header(示例):"Authorization: Bearer dc671840-bacc-4dc5-a134-97c1918d664b&…
系列目录     [已更新最新开发文章,点击查看详细] 在BIMFACE控制台上传文件,上传过程及结束后它会自动告诉你文件的上传状态,目前有三种状态:uploading,success,failure.即上传中.上传成功.上传失败. 如果是通过调用服务接口来上传文件,上传结束后也可以再调用BIMFACE提供的“获取文件上传状态信息”接口来查询状态. 下面详细介绍如何获取文件上传状态信息. 请求地址:GET https://file.bimface.com/files/{fileId}/uploa…
系列目录     [已更新最新开发文章,点击查看详细] BIMFACE最核心能力之一是工程文件格式转换.无需安装插件,支持数十种工程文件格式在云端转换,完整保留原始文件信息.开发者将告别原始文件解析烦恼,数据抽取全部自动完成.BIMFACE目前能够解析38种常见工程图纸和模型,具体包括:rvt.rfa.rte.skp.nwd.nwc.ifc.dwg.dxf.3dm.stl.dgn.stp.3ds.obj.dae.ply.fbx.dwf.gmp.gtj.gbq.gcl.ggj.gqi.gdq.gj…
系列目录     [已更新最新开发文章,点击查看详细] 通过BIMFACE控制台或者调用服务接口上传文件成功后,默认场景下需要下载该源文件,下载文件一般需要知道文件的下载链接即可.BIMACE平台提供了“获取文件下载链接”的服务接口.下面详细介绍其使用方法. 请求地址:GET https://file.bimface.com/download/url 说明:应用通过该接口获取文件的下载地址,然后下载文件.下载地址有效时间是5分钟. 参数: 请求 path(示例):https://file.bim…
系列目录     [已更新最新开发文章,点击查看详细] 通过BIMFACE控制台或者调用服务接口上传文件成功后,如果不再需要该文件,则可以通过BIMFACE平台提供的“源文件删除”服务接口删除具体的文件.下面详细介绍其使用方法. 请求地址:DELETE https://file.bimface.com/file 说明:根据文件ID删除文件 参数: 请求 path(示例):https://file.bimface.com/file?fileId=1418750515413120 请求 header…
系列目录     [已更新最新开发文章,点击查看详细] 上一篇<C#开发BIMFACE系列13 服务端API之获取转换状态>中介绍了根据文件ID查询单个文件的转换状态. 本文介绍批量获取转换状态详情. 请求地址:POST https://api.bimface.com/translateDetails 说明:应用发起转换以后,可以根据筛选条件,通过该接口批量查询转换状态详情 参数: 请求 path(示例):https://api.bimface.com/translateDetails 请求…