一.使用场景 在日常开发中,我们经常会遇到需要调用外部服务和接口的场景.外部服务对于调用者来说一般都是不可靠的,尤其是在网络环境比较差的情况下,网络抖动很容易导致请求超时等异常情况,这时候就需要使用失败重试策略重新调用 API 接口来获取.重试策略在服务治理方面也有很广泛的使用,通过定时检测,来查看服务是否存活( Active). Guava Retrying 是一个灵活方便的重试组件,包含了多种的重试策略,而且扩展起来非常容易. 用作者的话来说: This is a small extensi…
guava 学习笔记 使用瓜娃(guava)的选择和预判断使代码变得简洁 1,本文翻译自 http://eclipsesource.com/blogs/2012/06/06/cleaner-code-with-guava-optionals-and-preconditions/,有说的不对的地方,欢迎斧正. 2,我开发软件的时候,朝着干净代码发展是我的特权,有一段时间,我曾在我几乎所有的项目中使用谷歌瓜娃(Google Guava),理由很简单,guava为我编写漂亮代码提供了很大的便利,今天,…
Google Guava Collections 使用介绍 简介 Google Guava Collections 是一个对 Java Collections Framework 增强和扩展的一个开源项目.由于它高质量 API 的实现和对 Java特性的充分利用,使得其在 Java 社区受到很高评价.笔者主要介绍它的基本用法和功能特性. 使用介绍 Google Guava Collections(以下都简称为 Guava Collections)是 Java Collections Framew…
使用场景 在日常开发中,我们经常会遇到需要调用外部服务和接口的场景.外部服务对于调用者来说一般都是不可靠的,尤其是在网络环境比较差的情况下,网络抖动很容易导致请求超时等异常情况,这时候就需要使用失败重试策略重新调用 API 接口来获取.重试策略在服务治理方面也有很广泛的使用,通过定时检测,来查看服务是否存活. Guava Retrying 是一个灵活方便的重试组件,包含了多种的重试策略,而且扩展起来非常容易. 用作者的话来说: This is a small extension to Googl…
基于vue项目的组件中导入mui框架初始化滑动等效果时,控制台报错:Uncaught TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them 可使用 babel-plugin -transform-remove-strict-mode 移除严格模式 可先进行$ n…
背景: 随着公司的项目不断的完善,功能越来越复杂,服务也越来越多(微服务),公司迫切需要对整个系统的每一个程序的运行情况进行监控,并且能够实现对自动记录不同服务间的程序调用的交互日志,以及通一个服务或者项目中某一次执行情况的跟踪监控 根据log4net的现有功能满足不了实际需求,所以需要以log4net为基础进行分装完善,现在分装出了一个基础的版本,如有不妥之处,多多指点功能简介: 该组件是在log4net的基础上,进行了一定的扩展封装实现的自动记录交互日志功能 该组件的封装的目的是解决一下几个…
相信大家在使用vuejs时候会用到很多的第三方库,能够找到适合自己的库并且加以使用可以大大加快进度,减少bug.但是很多时候会出现这样一个尴尬的境地: 基线的第三方组件并不能很好地满足我们自己地需求,那么到底应该怎么办? 本文试图说一下我的方法. 我在使用element-ui作为标准组件库时使用了其中的el-steps/el-step,就是能够显示不同步骤的一个UI.但是我希望能够支持直接点击步骤切换回已经完成的步骤来做修改,这是很正常的需求.meiyi 比如在做一个作业系统时,要提交新的习题必…
https://github.com/kcloze/swoole-jobs 一个基于swoole的作业调度组件,已经实现了redis和rabitmq队列消息存储.参考资料:swoole https://wiki.swoole.com/wiki/page/1.html rabitmq https://www.kancloud.cn/yunxifd/rabbitmq/96997 RabbitMQ与Redis队列对比: http://www.cnblogs.com/chinaboard/p/38195…
如何基于 React 封装一个组件 前言 很多小伙伴在第一次尝试封装组件时会和我一样碰到许多问题,比如人家的组件会有 color 属性,我们在使用组件时传入组件文档中说明的属性值如 primary ,那么这个组件的字体颜色会变为 primary 对应的颜色,这是如何做到的?还有别人封装的组件类名都有自己独特的前缀,这是如何处理的呢,难道是 css 类名全部加上前缀吗,这也太麻烦了! 如果你正在困惑这些问题,你可以看看这篇文章. 我会参照 antd的divider组件 来讲述如何基于React封装…
原文出处: oschina 在这个系列的第一部分里,我简单的介绍了非常优秀的Google collections和Guava类库,并简要的解释了作为Java程序员,如果使用Guava库来减少项目中大量的样板代码.在这篇博文中我们将深入挖掘Guava提供的更高级的特性. 我们将深入挖掘Guava库,并了解一下优雅的CharMatcher类.Joiner以及Splitter类,以及在处理Java基本类型时Guava给我们带来的别的工具类. The Guava CharMatcher CharMatc…
原文出处: oschina (API:http://ifeve.com/category/framework/guava-2/ JAR DOC Source 链接:http://pan.baidu.com/s/1dDdEFZj 密码:cqfe ) 这个夏天的早些时候,我已经极力向我的所有同事推荐了 Google Collections . Kevin Bourrillion说他的一个同事告诉他"没有使用Google Collections前编程就像把一只手绑在背后". 我灰常同意Kev…
前段时间做的项目中需要用到highcharts绘制各种图表,其实绘制图表本身代码很简单,但是由于需求很多,有大量的图形需要绘制,所以就不得不复制粘贴大量重复(默认配置等等)的代码,所以,后来抽空自己基于highcharts封装了一个插件.组件暴露一个Hxt的全局对象,它有以下一些方法来绘制不同类的图形,从此以后,画图只需简简单单的几行配置就ok了!赶紧点进来看看实例吧! Hxt.line(elem, data, options); //渲染默认折线图 Hxt.spline(elem, data,…
eleme写的基于vue2.0的前端组件库: http://element.eleme.io 我在平时使用过程中,遇到的问题. 自定义表单验证出坑: 1: validate/resetFields 未定义. 原因: 1:要验证的DOM,还没有加载出来. 2:有可能this.$refs[ruleForm].validate() 方式不识别.需要使用: this.$refs.ruleForm.validate(); 解决方法 1: 要验证的DOM,还没有加载出来. this.ticketDialog…
了解FineUIMvc的都知道,FineUIMvc中采用了大量的IFrame框架,对于IFrame的优缺点网上也有很多的讨论,这里我要说它的一个优点“有助于隔离代码逻辑”,这也是FineUIMvc官网对它的描述.IFrame在网页上下文中是完全独立的,这样也就不存在了样式及脚本之间的冲突问题.但由于IFrame与上下文之间是隔离的,在交互上也给我们带来了一些不便. 在接下来的文章中,我将主要介绍如何使用TypeScript对FineUIMvc进行组件式开发,而这里的组件就是基于IFrame,同时…
WebForm与Mvc 我简单说一下WebForm与Mvc,WebForm是微软很早就推出的一种WEB开发架构,微软对其进行了大量的封装,使开发人员可以像开发桌面程序一样去开发WEB程序,虽然开发效率得到了提高,但可控性会一差.而MVC框架的出现,使WEB开发又回到了请求与响应的开发模式下,可控性增强了,但开发难度也增加了,所以说在架构的选择上没有好与坏,只有适合自己的才是最好的. FineUIMvc与IFrame 虽然FineUIMvc基于MVC架构,但是也沿用了WebForm页面开发的方式,…
1.开发伊始 根据源码中RequestHandler类中发现__init__函数中会调用自身initialize函数,此函数中为pass,即可以围绕initialize开发一系列的组件 2.开发实现 通过继承实现接口initialize的重写 3.具体代码与实现过程 1)接口 class SessionInterface(object): def initialize(self): self.session = Session(self) super(SessionInterface, self…
在我们写程序的时候,经常会需要判断数据的是空值还是null值,基本上十个方法函数,八个要做这样的判断,因此我们很有必要拓展出来一个类来做监控,在这里我们使用一个简单地,可拓展的第三方组件:Ardalis.GuardClauses 在这里首先提一点,一般我们的一旦给一个实体类或者集合类初始化了之后,其值将不会是Null,示例: List<Blog> Blogs = new List<Blog>(); 或是 Blog Blog = new Blog(); 这两个变量都不是null,而是…
[背景]基于System.Windows.Forms.UserControl实现的webBrower组件在html内使用window.external调用winform事件失败. [解决思路]借助winform的HtmlElementEventHandler完成html 页面元素点击时winform执行相应方法. HTML <input type="button" id="searchBtn" onclick="searchResource()&qu…
一.前言 随着业务的发展,并发量的增多,业务的复杂度越来越大,对于系统架构能力要求越来越高,这时候微服务的设计思想应运而生,但是对于微服务需要引擎进行驱动,这时候基于.NET CORE 的微服务引擎surging 就诞生了.  1.那么怎么样去理解微服务呢? 微服务是针对业务的松耦合,是对于业务的解耦,也是粒度最小的功能业务模块,对于本地和远程的抽象化,对于远程调用提供了服务治理保证了可靠性通信. 2. 那么什么是微服务引擎呢? 微服务引擎是微服务的容器,是扫描或引用加载业务服务模块驱动生成服务…
由于项目需要,需要一个在线预览office的功能,小编一开始使用的是微软提供的方法,简单快捷,但是不符合小编开发需求, 就另外用了:将文件转换成html文件然后预览html文件的方法.对微软提供的方法感兴趣的小伙伴可以去看一下,够简单直接:word+excle+pdf表格在线浏览 我们来说一下小编使用的方法,这种预览方式基于开源的NPOI+Office COM组件,使用是需要引入这几个动态链接库,总体如下: C#在线预览文档(word,excel,pdf,txt,png) 预览方式:将文件转换成…
目录 目录... 3 1. 前言... 1 2. 配置... 1 2.1. 建立组件的导出模块... 1 2.2. 建立组件入口文件... 1 2.3. 配置“ng-package.json”文件... 1 2.4. 配置package.json文件... 2 2.5. 复制git地址... 3 2.6. 配置Jenkins. 3 2.6.1. 新建项目... 3 2.6.2. 确定名称和项目类型... 3 2.6.3. 填写项目描述和地址... 4 2.6.4. 选择SDK.. 4 2.6.5…
基于vue cli创建一个vue项目 首先安装最新的vue cli脚手架, npm install --global @vue/cli npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules\@vue\cli\node_modules\fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for…
前言(*❦ω❦) 思维导图可能有点高糊,有点太大了,项目和导图文件放到github或giteee上,这个思维导图也是我文章的架构,思维导图是用FeHelper插件生成的,这个是一款开源chrome插件,访问地址按照插件项目说明安装即可,然后导入我的思维导图的JSON文件即可,JSON文件会放在项目中. 构建vue npm 组件库需要准备的事(会的同学可跳过)( ゚▽゚)/   这里主要讲一下搭建一个vue组件库需要事先准备的条件,其实也是一个合格的初级前端开发人员的必备条件. 编辑器工具: Vs…
最近使用React Hooks结合zarm组件库,基于js对象配置方式开发了大量的h5表单页面.大家都知道h5表单功能无非就是表单数据的收集,验证,提交,回显编辑,通常排列方式也是自上向下一行一列的方式显示 , 所以一开始就考虑封装一个配置化的页面生成方案,目前已经有多个项目基于此方式配置开发上线,思路和实现分享一下. 已经发布npm包 有兴趣的可以采用或适配自己的组件库 zarm-form-render ,不到100行代码. 使用场景 任意包含表单的h5页面(使用zarm库,或自行适配自己的库…
我们在产品推广过程中,经常需要判断用户是否对某个模块感兴趣.那么就需要获取该模块的曝光量和用户对该模块的点击量,若点击量/曝光量越高,说明该模块越有吸引力. 那么如何知道模块对用户是否曝光了呢?之前我们是监听页面的滚动事件,然后通过getBoundingClientRect()现在我们直接使用IntersectionObserver就行了,使用起来简单方便,而且性能上也比监听滚动事件要好很多. 1. IntersectionObserver 我们先来简单了解下这个 api 的使用方法. Inte…
基于svg写了一个涂鸦组件,说项目之前先附上几张效果图: 项目地址:SVGraffiti 由于篇幅问题,本文先总体介绍一下项目的大概情况,重点介绍一下组件间的通信方式. 一.项目说明 该项目是基于webpack@3.x.x构建的多页应用,使用ES6开发,以组件的方式组织代码.git clone项目后(文末附上该项目github仓库地址),npm i安装相关依赖,npm run dev运行项目,默认会打开应用的首页,也就是上面的效果预览对应的界面.开发过程会单独地为一些功能编写一些测试代码,所以该…
一个技术汪的开源梦 —— 目录 微软的 ASP.Net Core 强化了 Nuget 的使用,所有的 .Net Core 组件均有 Nuget 管理,所以有必要探讨一下 .Net Core 组件制作 Nuget 包和发布. 之前 .Net Framework 程序集打包 Nuget 有以下方法: 1. 使用命令  nuget pack  详见博客园的一篇博文 <用命令行工具创建 Nuget 程序包>: 2. 使用 NuGet Package Explorer: 3. vs 插件 NuBuild…
刀耕火种 刀耕火种是新石器时代残留的农业经营方式.又称迁移农业,为原始生荒耕作制. var TodoApp = Nuclear.create({ add: function (evt) { evt.preventDefault(); var textBox = this.node.querySelector('input'); this.option.items.push(textBox.value); }, installed: function () { var form = this.no…
/** * Copyright (c) 2015, www.cubbery.com. All rights reserved. */ package com.cubbery.event.retry; import com.cubbery.event.EventBus; import com.cubbery.event.EventStorage; import com.cubbery.event.conf.Configurable; import com.cubbery.event.conf.Co…
前天完成了一个新组件的开发,做的过程也是各种遇到问题,彻底弄懂了slot,巩固了一些flex布局和jquery的知识,比起自己第一次做组件开发,现在已经是能够下手做,遇到问题解决问题,还算有进步. 但是昨天写博客的时候,就在我快写完的时候,chrome崩溃了...我也崩溃了...写的东西全没有了!!!我还是继续重新码字吧...崩溃... 做的这个组件给它起个什么名字比较合理我想了半天也没想出来... 需求是这样的: 由两部分组成,上面是导航条,下面每一块显示内容.如下图. 导航条固定在顶部 点击…