AOP浅析
aop 是现代web框架底层核心技术之一,很多人能熟练运用 @aspect @joinpoint 去实现业务代码,但未必明白 aop 的来龙去脉。考虑这样一个say():
public class Hello0 { public void say(){ System.out.println("hello"); }}
如果想在say()前后执行一些增强代码,该怎么做呢?
实现方案一小A采用了下面的写法。很不幸,小A这段代码写完后,就被辞退了。
public class Hello0plus { private Hello0 hello0; public Hello0plus() { this.hello0 = new Hello0(); } public void say(){ before(); hello0.say(); after(); } priva ...
JointJS试用记录
由于一个项目需要绘制流程图。在做JS元素的选型时,看到 JointJS 的介绍,感觉应该可以满足我们的需要。不过还是得试试才知道。所以我打算按照以下顺序去试用 JointJS 。
快速了解如何使用 JointJS
试验如何用 JointJS 实现我们的关键需求点
自定义元素
自定义元素属性
与后端交互
JointJS速览入门Hello World下面时官方给出的入门demo例子,可以看到 JointJS 依赖jquery、lodash、backbone,使用 JointJS 只需要引入joint.css和joint.js即可。定义一个div用来盛放绘制的图形。
<!DOCTYPE html><html><head> <link rel="stylesheet" type="text/css" href="css/joint.css" /></head><body><!-- content --><div id=" ...
使用JS检测自定义协议是否存在
之前在《自定义通用URL协议实现在浏览器中打开本机任意程序》介绍了通过自定义协议使的浏览器可以调起客户端本地程序的方法,在企业环境的实际应用中,又面临着如何检测自定义的协议是否存在的问题,ie下可以通过activex检测注册表项,chrome该怎么办呢?有没有通用的解决办法呢?答案是肯定的,甚至有人已经将该功能封装成了通用JS。具体如下。
访问 github,下载 protocolcheck.js 。引用该js后,即可使用以下代码检测
window.protocolCheck(href,callback)
示例代码
example.html。ff协议是自定义通用URL协议实现在浏览器中打开本机任意程序文中示例的协议。你可以替换成任意存在的协议。
<!DOCTYPE html><html><head lang="zh"> <meta charset="UTF-8"> <title>自定义协议探测</title></head><body& ...
yum删除无用的包
yum在安装包时,会自动安装相关依赖,但是yum在卸载包时却只会卸载指定的包,这就导致了系统里多了很多当初当作依赖被安装进来的无用的包。由于linux系统的机制,没有特别好的解决办法,有以下两个方法近似处理。
使用 yum autoremove 命令
sudo yum autoremove
这个命令的问题是识别的并不完整。但基本没有风险。
使用 yum history undo命令
sudo yum install tomcatsudo yum history list tomcat已加载插件:fastestmirrorID | 命令行 | 日期和时间 | 操作 | 变更数 ------------------------------------------------------------------------------- 47 | install tomcat.noarch | 2018-08-21 10:56 | Install | 21 history ...
spring-boot-ws从.wsdl到?wsdl
spring-boot-starter-web-services 发布的webservice默认url是http://xx:xx/xxx.wsdl,不符合常规的http://xx:xx/xxx?wsdl格式,我们可以利用urlrewritefilter去做一下转发,让一切都回到熟悉的样子。详情如下:
添加依赖<dependency> <groupId>org.tuckey</groupId> <artifactId>urlrewritefilter</artifactId> <version>4.0.4</version></dependency>
实现UrlRewriteFilterimport org.springframework.beans.factory.annotation.Value;import org.springframework.core.io.Resource;import org.springframework.stereotype.Compone ...
SQL Server 使用SQL获取建表语句
SQL Server 没有提供函数或存储过程直接查看建表语句(?),当然它的DBMS客户端提供了这个功能,但只为了这点小事就安装那个大玩意?…还是自己写一个更快。
完整代码create Procedure sp_helptable( @table varchar(100))-- exec sp_helptable tablename-- 增加获取注释信息(感谢 袁罗)AS Begindeclare @sql table(s varchar(1000), id int identity)-- 创建语句insert into @sql(s) values ('create table [' + @table + '] (')--获取注释SELECTA.name AS table_name,B.name AS column_name,C.value AS column_descriptioninto #columnspropertiesFROM sys.tables AINNER JOIN sys.columns B ON B.object ...
Spring boot starter开发指南
Spring boot一大特色就是提供了许多启动器,比如spring-boot-starter-web,spring-boot-starter-cache等,这些启动器实现了自动配置,方便用户更快的聚焦于实际业务。对于我们来说,这也提供了一个新的思路去实现组件化:将过往的jar包封装提供类/方法依赖的模式改进成bean注入的模式。而这是通过我们可以开发自己的启动器去实现的。下面就说说如何去做。
创建工程starter工程可以不是spring boot,只需要是一个maven工程即可。此时,我们需要在pom中指明依赖管理器。当然,如果你用spring boot去构建starter工程就不需要再声明这点。
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-d ...
在 Centos 7 中使用shadowsocks
本文不讨论,如何搭建或者获取shadowsocks服务,仅仅从技术角度探讨下如何在centos 7中使用这种socks5代理。
安装shadowsocks-qt5
wget https://copr.fedorainfracloud.org/coprs/librehat/shadowsocks/repo/epel-7/librehat-shadowsocks-epel-7.reposudo mv librehat-shadowsocks-epel-7.repo /etc/yum.repos.d/sudo yum updatesudo yum install -y shadowsocks-qt5
安装proxychains
wget https://github.com/rofl0r/proxychains-ng/archive/master.zipunzip master.zipcd master./configuremakesudo make installsudo cp ./src/proxychains.conf /etc/proxychains.conf
配置prox ...
使用wrk测试api性能
Restful Api 压力测试有很多专业工具,但那些工具对于开发人员说过于复杂了(我觉得那些是给测试人员用的)。wrk 是一个简单的多线程的基于命令行的测试工具,它的一个很好的特性是用很少的线程压出很大的并发,能快速的验证接口的性能,比较适合开发场景。下面是使用过程记录。需要注意的是 wrk 只能运行在 linux 平台。
安装wrk需要从github拉代码并编译
git clone https://github.com/wg/wrk.git cd wrk make
编译成功后,会在当前目录中生成可执行的wrk。将其copy到bin目录。
sudo cp wrk /usr/local/binwhick wrk
使用wrk简单使用
命令
wrk -t4 -c10 -d10s -T3s --latency http://www.lefer.cn
-t4 开启四个线程
-c10 保持10个连接
-d10s 持续测试10秒
-T3s 超时设置为3秒
–latency 统计延迟分布
执行结果
[web@localhost ~]$ wrk -t4 -c10 -d10 ...
Centos7安装最新内核并开启BBR
Google 开源了 TCP BBR 拥塞控制算法,并提交到了 Linux 内核(> 4.9)。据悉,特别适用于网速不稳定的场景。根据网上的测试,在开启BBR后,网速甚至可以提升好几个数量级。 以下是我在GCP上开启BBR的步骤。系统版本是Centos 7。
# 更新系统yum update -y# 安装内核rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgrpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpmyum --enablerepo=elrepo-kernel install kernel-ml# 查看安装内核并设置,从返回结果中找到版本号最大的一行的序号,设置为默认启动awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg# 0是版本号最大的一行的序 ...
