Mybatis框架学习之使用篇二:标签语法
常用标签的使用姿势小结及参数绑定的三种方式
- select
- update
- delete
- insert
- choose, when, otherwise
- if
- bind
- foreach
- trim
- set
- where
alfred可以说是mac上必备的一个app了,可以极大的提高工作效率,再加上它支持自定义实现各种扩展,完全可以满足大部分的需求场景了
首先下载安装包,推荐一个神奇的网站,下载各种mac的破解软件,工具下载链接: http://xclient.info/s/alfred.html
破解方式:
下载包内直接包含了所有的流程和源码,也没什么好具体说的,下载完毕之后双击即可
点击下载:time.alfredworkflow
demo:
点击下载: md5.alfredworkflow
demo:
点击下载: URL编码.alfredworkflow
demo:
点击下载: table.alfredworkflow
demo:
基于hexo + github pages搭建的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
尽信书则不如,已上内容,纯属一家之言,因本人能力一般,见识有限,如发现bug或者有更好的建议,随时欢迎批评指正
PopClip是mac上的一个工具集,最大的特点就是扩展,复制一段文本,然后根据你的需求写插件,把赋值的文本作为输出,做一些你想干的事
基于PopClip,也写了一些小工具,主要是php写的,写插件的教程还是比较简单的,一个配置文件Config.plist
和一个脚本文件xxx.php
即可
以JSON格式序列化为demo进行演示,如何从0到1创建一个popclip插件,先看一下最终的成品
一个插件的文件比较简单,主要有两个
Config.plist
下面是一个实际的配置,里面指定了两个脚本:
需要注意的是里面正则规则,这个主要是用来表示当你划中一段文本之后,是否会出现这个插件的规则(比如时间戳和日期的相互转换,只有选中纯数字时,才支持时间戳转日期)
1 | <?xml version="1.0" encoding="UTF-8"?> |
这个里面就是写具体的业务逻辑,一般是将粘贴板中的内容作为输入,然后进行一段业务逻辑,然后输出到粘贴板内
如str2json.php
1 | <?php |
注意第一行,获取输入 $input=getenv("POPCLIP_TEXT");
, 不同的脚本有不同的获取方式
输出就比较简单了,传统的输出方法,会重写到粘贴板内 echo 'xxx';
上面完成之后,就是打包安装了,流程如下:
zip -r xxx.popclipextz xxx.popclipext/
说明: 上面新建的文件夹,一定要以.popclipext结尾
作用:实现base64编码解码
源码地址: base64
demo:
作用:实现日期和时间戳的相互转换
源码地址: date
demo:
源码 : unicode
源码: json
源码: url
所有的插件都可以访问: PopClip
基于hexo + github pages搭建的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
尽信书则不如,已上内容,纯属一家之言,因本人能力一般,见识有限,如发现bug或者有更好的建议,随时欢迎批评指正
记录下使用到的Chrome插件,有些挺有意思的东西
在网页的右下角(or左下角)显示当前网页的服务器IP,用来判断当前的系统的工作环境非常有用,特别是在线下、预发和生产环境的切换时,判断host是否切换的时候
拦截小广告
拦截视频广告,我常逛的优酷,腾讯视频,爱奇艺,芒果的视频广告都被可以被吃掉,节省两分钟的等待时间
码云提供的gitee,侧边栏提供一个直接查看代码的树状结构
写json的插件
json结构化,针对请求直接返回json串的场景用起来比较爽,除了结构化输出之外,还可以修改json串内容,个人感觉比JSONView好用
github源码视图工具,和前面的 GitCodeTree 差不多
模拟各种http请求
以vim的方式操作浏览器页面,实现真正的无鼠标全键盘操作
当前网页生成一个二维码,方便手机打开
网页截图工具,可以截长图文,但是在网页特别长时,截取失败,有些时候用起来还可以
覆盖默认的新打开标签页,显示一些有意思的git项目和掘金上的优秀博文
自己写的一个插件,主要是为了提供一些常见的转换, 源码&下载地址: Chrome-Coder
自己写的插件,源码&下载地址: Chrome-ImgRender
选择网页中的dom结构,输出图片的小工具,使用演示如:
基于hexo + github pages搭建的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
尽信书则不如,已上内容,纯属一家之言,因本人能力一般,见识有限,如发现bug或者有更好的建议,随时欢迎批评指正
jvm的垃圾回收算法,除了我们熟悉的引用计数判断对象是否活着之外,其他还有那些有意思的东西呢?
总是听到的年轻代年老代又是啥?
传说中的YoungGC(MinorGC) 和 FullGC的时机是什么,又干了些啥?
当服务有较多外部依赖时,如果其中某个服务的不可用,导致整个集群会受到影响(比如超时,导致大量的请求被阻塞,从而导致外部请求无法进来),这种情况下采用hystrix就很有用了
出于这个目的,了解了下hystrix框架,下面记录下,框架尝新的历程
通过官网和相关博文,可以简单的说一下这个工作机制,大致流程如下
首先是请求过来 -> 判断熔断器是否开 -> 服务调用 -> 异常则走fallback,失败计数+1 -> 结束
下面是主流程图
1 | graph LR |
熔断机制主要提供了两种,一个是基于线程池的隔离方式来做;还有一个则是根据信号量的抢占来做
线程池方式 : 支持异步,支持超时设置,支持限流
信号量方式 : 本线程执行,无异步,无超时,支持限流,消耗更小
基本上有上面这个简单的概念之后,开始进入我们的使用测试流程
1 | <dependency> |
从官方文档来看,支持两种Command方式,一个是基于观察者模式的ObserverCommand, 一个是基本的Command,先用简单的看以下
1 | public class HystrixConfigTest extends HystrixCommand<String> { |
使用起来还是比较简单的,一般步骤如下:
HsytrixCommand
类写上面的代码比较简单,但是有几个地方不太好处理
根据上面那一段代码的删删改改,貌似理解了以下几个点,不知道对误
run方法是核心执行服务调用,如果需要某些服务不统计到熔断的失败率(比如因为调用姿势不对导致服务内部的异常抛上来了,但是服务本身是正常的),这个时候,就需要包装下调用逻辑,将不需要的异常包装到 HystrixBadRequestException
类里
如
1 | @Override |
当发生失败时,hystrix会把原生的异常包装到 HystrixRuntimeException
这个类里,所以我们可以在调用的地方如下处理
1 | try { |
当定义了fallback逻辑时,异常则不会抛到具体的调用方,所以在 fallback 方法内,则有必要获取对应的异常信息
1 | // 获取异常信息 |
然后下一步就是需要获取对应的异常原因了,通过FailureType来表明失败的根源
1 | ((HystrixRuntimeException) t).getFailureType() |
hystrix自己提供了一套监控插件,基本上公司内都会有自己的监控统计信息,因此需要对这个数据进行和自定义,目前还没看到可以如何优雅的处理这些统计信息
主要是看了下这个东西可以怎么玩,整个用下来的感觉就是,设计的比较有意思,但是配置参数太多,很多都没有完全摸透
其次就是一些特殊的case(如监控,报警,特殊情况过滤)需要处理时,用起来并不是很顺手,主要问题还是没有理解清楚这个框架的内部工作机制的问题
基于hexo + github pages搭建的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
尽信书则不如,已上内容,纯属一家之言,因本人能力一般,见识有限,如发现bug或者有更好的建议,随时欢迎批评指正
Update your browser to view this website correctly. Update my browser now