安卓web投屏工具

在移动App信息安全的监测项目中,通常需要用到安卓web投屏,实时查看某些app的运行情况,可以使用stf,由于stf部署复杂,依赖众多,如果只要显示单个机器实时屏幕的情况下,部署stf过于浪费。以下为基于minicap和minitouch...

网关gateway搭建

为什么需要网关 为什么选择Spring cloud Gateway 常见的网关有gateway和zuul,和zuul相比,Spring Cloud Gateway具有如下优势: 基于Reactor模型的WebFlux构建,运行在Nett...

项目管理学习笔记

在极客时间上买了个项目管理课,花了一周时间学习了下,课程地址,学习笔记如下:

深入理解Java虚拟机

java开发过程难免会遇到内存溢出,CPU消耗过高等问题,理解JVM结构及其原理有助于排查以上问题,其架构如下: **其中方法区和java堆,为线程共享区域。程序计数器,虚拟机栈,本地方法栈为线程独占区。** 方法区:存储运行时常量池...

云原生微服务架构图

微服务和容器化已经成为目前互联网架构的主流选择,包含大量的中间件,如下: 版本1: 版本2:

使用Javassist实现AOP

在spring等框架中经常会用到AOP对已有的功能做切面处理,比如:日志记录,数据库事务处理,缓存,权限处理等,需要用到动态代理,常见的动态代理有: JDK ProxyGenerator、CGLIB、Javassist、ASM 其原理都是...

Java延时队列

在业务开发中常常存在超时处理机制,比如订单多久没支付自动取消,命令执行太久自动取消执行之类。可以使用redis的key过期订阅机制,也可以使用rabbitmq的死信队列,亦或是循环轮训数据库等等来实现。在业务量小,无中间件的情况下,就可以考...

基于Redis的分布式锁

在集群多机器环境中,为了避免并发导致的冲突问题,就会使用到分布式锁,同一时刻,集群中只有获取到锁的节点能够执行处逻辑,如下: import org.springframework.beans.factory.annotation.Autow...

JAVA策略模式

在多场景的代码中,需要根据前端传来的参数走不同的代码逻辑,例如: public static void main(String[] args) { String code = "前端传来的场景码"...

kafka架构

Kafka是一个分布式的消息队列,其架构如下: Broker :一台 kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker可以容纳多个topic; Producer :消息生产者,就是向 k...

高频八股文

理解八股文,可以提高面试成功率,亦可以提高我们对底层知识的理解: redis主从、哨兵、分片集群1 redis主从、哨兵、分片集群2 redis集群gossip协议 详解redis集群gossip协议 Redis缓存穿透/击穿/...

苹果登录服务端验证

java版本:POM文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apac...

基于Redis的限流

以下代码演示同一个IP在30秒内只能获取一次验证码: 限流类型枚举 public enum LimitType { //自定义限流 CUSTOMER, //手机号限流 MOBILE, //I...

架构师软能力

你在过去的项目中的角色和职责是什么 ? 你是如何管理项目的 ? 我在过去的项目中担任过开发人员和技术负责人的角色。作为开发人员,我的职责是根据需求完成代码编写和单元测试。 作为技术负责人,我的职责是制定项目计划,分配任务,协调团队成员之...

编写Chrome插件

新建文件夹 simple-porxy,并在文件夹下新建如下文件: manifest.json(描述文件) background.html(后台运行页面) background.js(后台运行js) on.png (插件图标) manif...

JWT与XSS-CSRF攻击

web服务中,用户输入用户名密码登入之后,后续访问网站的其他功能就不用再输入用户名和密码了。传统的身份校验机制为cookie-session机制: cookie-session机制 用户浏览器访问web网站,输入用户名密码 服务器校验用户名...

使用cheerio爬取gank-io妹子图

cheerio是nodejs的抓取页面模块,只需输入html,然后就可以像Jquery一样获取dom结构信息: const cheerio = require('cheerio') const $ = cheerio.loa...

Array.prototype.reduce()

recude 函数为 js 数组中较难理解的一个函数,其定义如下: 定义arr.reduce(callback,[initialValue]) 其中callback函数有四个参数: previousValue (第一次调用callbac...

slice.call(arguments)

javascirpt的类数组对象可以像数组一样使用for循环遍历,但是却不能调用数组原型链的方法,为了让类数组对象可以像数组对象一样调用push,pop等方法,可以将类数组对象转成数组对象: 将类数组对象转换成数组var args = []...

js-setter-&-getter

在mvvm框架中,数据双向绑定的底层实现中会用到setter和getter,javascript的中的setter和getter可以实现: 当获取对象的属性值时可以触发get方法 当为对象的属性赋值时可以触发set方法 主要有如下4种实...

Ehcache集群同步

Ehcache 是一个用Java编写的缓存框架,可以直接集成到Java项目中,与Redis,Memcache等需要另外搭建服务的缓存框架相比,更加轻量,适合集群节点较少的中小型项目。 目前Ehcache主流的集群解决方案主要有RMI与JGR...

js快速获取大图原始宽高

获取图片原始大小常规方式var url = 'http://www.xxx.com/xxx/xxxx.jpg'; var img = new Image(); img.src = url; //如果有缓存 if(img.co...

Broken-pipe-与-Hibernate

broken pipe 导致broken pipe的原因有很多,不过其根本原因都是:当往socket管道写入数据的时候,管道已经关闭。某次查生产问题的时候,发现日志中有很多booken pipe的错误,都发生在当服务器向客户端返回页面内...

socket-io集群解决方案

关于socket.io的群集解决方案,官网中给出了3个示例代码。除了负载均衡的软件不同,其他的代码其实都是一样的,分别为:nginx,httpd, haproxy。以下以nginx为例说明。官网给的demo基于docker,让你可以直接运行...

函数防抖和函数节流

网页开发中,onmousemove,onkeydown,onscroll,onresize 等事件会频繁的触发绑定函数。为了优化性能,我们会用到函数防抖和函数节流。 函数防抖function debounce(fn){ v...

shell脚本排查java进程cpu消耗过高问题

关于JVM性能调优监控,网上可以找到很多排查Java进程cpu消耗过高的方法,不过几乎都是告诉你如何依次输入命令排查,为了方便排查问题的时候不用依次输入众多命令,我们可以将排查命令写入脚本。 新建 monitor.sh,输入以下脚本: ...

eval(function(p,a,c,k,e,d){}())

前段时间,领导安排了一个poc的演示任务,将上面这个网站的左半部分替换成发票图片列表,点击发票列表中的图片,自动将图片中的信息填充到右侧的表单中,进行查验。 打开chrome的F12研究了一下网站的代码,网站所有的JS都是如下的加密形式:...

OpenSessionInViewFilter源码浅析

使用hibernate和spring的项目大部分都有可能会用到OpenSessionInViewFilter和Transactioninterceptor。OpenSessionInViewFilter的主要目的是为了解决hibernate...

Java线程池

在项目中为了提高系统性能,并发处理任务,减少线程创建的高开销,一般会用到线程池,java线程池构造如下: 通过ThreadPoolExecutor创建 public ThreadPoolExecutor(int corePoolSize, ...