在移动App信息安全的监测项目中,通常需要用到安卓web投屏,实时查看某些app的运行情况,可以使用stf,由于stf部署复杂,依赖众多,如果只要显示单个机器实时屏幕的情况下,部署stf过于浪费。以下为基于minicap和minitouch...
为什么需要网关
为什么选择Spring cloud Gateway
常见的网关有gateway和zuul,和zuul相比,Spring Cloud Gateway具有如下优势:
基于Reactor模型的WebFlux构建,运行在Nett...
在极客时间上买了个项目管理课,花了一周时间学习了下,课程地址,学习笔记如下:
java开发过程难免会遇到内存溢出,CPU消耗过高等问题,理解JVM结构及其原理有助于排查以上问题,其架构如下:
**其中方法区和java堆,为线程共享区域。程序计数器,虚拟机栈,本地方法栈为线程独占区。**
方法区:存储运行时常量池...
微服务和容器化已经成为目前互联网架构的主流选择,包含大量的中间件,如下:
版本1:
版本2:
在spring等框架中经常会用到AOP对已有的功能做切面处理,比如:日志记录,数据库事务处理,缓存,权限处理等,需要用到动态代理,常见的动态代理有:
JDK ProxyGenerator、CGLIB、Javassist、ASM
其原理都是...
在业务开发中常常存在超时处理机制,比如订单多久没支付自动取消,命令执行太久自动取消执行之类。可以使用redis的key过期订阅机制,也可以使用rabbitmq的死信队列,亦或是循环轮训数据库等等来实现。在业务量小,无中间件的情况下,就可以考...
在集群多机器环境中,为了避免并发导致的冲突问题,就会使用到分布式锁,同一时刻,集群中只有获取到锁的节点能够执行处逻辑,如下:
import org.springframework.beans.factory.annotation.Autow...
在多场景的代码中,需要根据前端传来的参数走不同的代码逻辑,例如:
public static void main(String[] args) {
String code = "前端传来的场景码"...
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...
以下代码演示同一个IP在30秒内只能获取一次验证码:
限流类型枚举
public enum LimitType {
//自定义限流
CUSTOMER,
//手机号限流
MOBILE,
//I...
你在过去的项目中的角色和职责是什么 ? 你是如何管理项目的 ?
我在过去的项目中担任过开发人员和技术负责人的角色。作为开发人员,我的职责是根据需求完成代码编写和单元测试。
作为技术负责人,我的职责是制定项目计划,分配任务,协调团队成员之...
新建文件夹 simple-porxy,并在文件夹下新建如下文件:
manifest.json(描述文件)
background.html(后台运行页面)
background.js(后台运行js)
on.png (插件图标)
manif...
web服务中,用户输入用户名密码登入之后,后续访问网站的其他功能就不用再输入用户名和密码了。传统的身份校验机制为cookie-session机制:
cookie-session机制
用户浏览器访问web网站,输入用户名密码
服务器校验用户名...
cheerio是nodejs的抓取页面模块,只需输入html,然后就可以像Jquery一样获取dom结构信息:
const cheerio = require('cheerio')
const $ = cheerio.loa...
recude 函数为 js 数组中较难理解的一个函数,其定义如下:
定义arr.reduce(callback,[initialValue])
其中callback函数有四个参数:
previousValue (第一次调用callbac...
javascirpt的类数组对象可以像数组一样使用for循环遍历,但是却不能调用数组原型链的方法,为了让类数组对象可以像数组对象一样调用push,pop等方法,可以将类数组对象转成数组对象:
将类数组对象转换成数组var args = []...
在mvvm框架中,数据双向绑定的底层实现中会用到setter和getter,javascript的中的setter和getter可以实现:
当获取对象的属性值时可以触发get方法
当为对象的属性赋值时可以触发set方法
主要有如下4种实...
Ehcache 是一个用Java编写的缓存框架,可以直接集成到Java项目中,与Redis,Memcache等需要另外搭建服务的缓存框架相比,更加轻量,适合集群节点较少的中小型项目。
目前Ehcache主流的集群解决方案主要有RMI与JGR...
获取图片原始大小常规方式var url = 'http://www.xxx.com/xxx/xxxx.jpg';
var img = new Image();
img.src = url;
//如果有缓存
if(img.co...
broken pipe
导致broken pipe的原因有很多,不过其根本原因都是:当往socket管道写入数据的时候,管道已经关闭。某次查生产问题的时候,发现日志中有很多booken pipe的错误,都发生在当服务器向客户端返回页面内...
关于socket.io的群集解决方案,官网中给出了3个示例代码。除了负载均衡的软件不同,其他的代码其实都是一样的,分别为:nginx,httpd, haproxy。以下以nginx为例说明。官网给的demo基于docker,让你可以直接运行...
网页开发中,onmousemove,onkeydown,onscroll,onresize 等事件会频繁的触发绑定函数。为了优化性能,我们会用到函数防抖和函数节流。
函数防抖function debounce(fn){
v...
关于JVM性能调优监控,网上可以找到很多排查Java进程cpu消耗过高的方法,不过几乎都是告诉你如何依次输入命令排查,为了方便排查问题的时候不用依次输入众多命令,我们可以将排查命令写入脚本。
新建 monitor.sh,输入以下脚本:
...
前段时间,领导安排了一个poc的演示任务,将上面这个网站的左半部分替换成发票图片列表,点击发票列表中的图片,自动将图片中的信息填充到右侧的表单中,进行查验。
打开chrome的F12研究了一下网站的代码,网站所有的JS都是如下的加密形式:...
使用hibernate和spring的项目大部分都有可能会用到OpenSessionInViewFilter和Transactioninterceptor。OpenSessionInViewFilter的主要目的是为了解决hibernate...
在项目中为了提高系统性能,并发处理任务,减少线程创建的高开销,一般会用到线程池,java线程池构造如下:
通过ThreadPoolExecutor创建
public ThreadPoolExecutor(int corePoolSize,
...