自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Wxc的Blog

慢慢学习,慢慢沉淀

  • 博客(56)
  • 收藏
  • 关注

转载 Go限流算法之计数器

Go限流算法之计数器算法思想计数器是一种比较简单粗暴的限流算法,其思想是在固定时间窗口内对请求进行计数,与阀值进行比较判断是否需要限流,一旦到了时间临界点,将计数器清零。面临的问题一段时间内(不超过时间窗口)系统服务不可用。比如窗口大小为1s,限流大小为100,然后恰好在某个窗口的第1ms来了100个请求,然后第2ms-999ms的请求就都会被拒绝,这段时间用户会感觉系统服务不可用。计数器算法存在“时间临界点”缺陷。比如每一分钟限制100个请求,可以在00:00:00-00:00:58秒里面都

2022-04-14 10:10:25 490

原创 Golang安装

Golang安装下载地址Go官网下载地址:https://golang.org/dl/Go官方镜像站(推荐):https://golang.google.cn/dl/Windows安装此安装实例以 64位Win10系统安装 Go1.14.1可执行文件版本为例。将上一步选好的安装包下载到本地。双击下载好的文件,然后按照下图的步骤安装即可。Linux下安装如果不是要在Linux平台敲go代码就不需要在Linux平台安装Go,我们开发机上写好的go代码只需要跨平台编译(详见文章末尾

2022-04-07 11:48:34 6489

原创 Go Protobuf学习笔记

Go Protobuf学习笔记Protocol Buffers 简介protobuf 即 Protocol Buffers,是一种轻便高效的结构化数据存储格式,与语言、平台无关,可扩展可序列化。protobuf 性能和效率大幅度优于 JSON、XML 等其他的结构化数据格式。protobuf 是以二进制方式存储的,占用空间小,但也带来了可读性差的缺点。protobuf 在通信协议和数据存储等领域应用广泛。例如著名的分布式缓存工具 Memcached 的 Go 语言版本groupcache 就使用了 pr

2022-04-06 20:08:02 267

转载 彻底解决Golang获取当前项目绝对路径问题

导读由于Golang是编译型语言(非脚本型语言),如果你想在Golang程序中获取当前执行目录将是一件非常蛋疼的事情。以前大家最折中的解决方案就是通过启动传参或是环境变量将路径手动传递到程序,而今天我在看日志库的时候发现了一种新的解决方案。Go程序两种不同的执行方式用Go编写的程序有两种执行方式,go run和go build通常的做法是go run用于本地开发,用一个命令中快速测试代码确实非常方便;在部署生产环境时,我们会通过go build构建出二进制文件然后上传到服务器再去执行。两种启动方

2022-04-02 21:26:22 5445

原创 JS逆向之浏览器补环境(一)

JS逆向之浏览器补环境(一)简介今天分享是是浏览器环境检测以及node js补环境我们点击检测设备信息看发出的请求,可以看到是sign和data这个data看起来像base64,我们试一下,发现不是分析加密位置可以看到经过混淆了我们选中看一下那我们接下来就知道了,要逆向的两个参数变量_0x392f2d_0xd9e63f我们直接把整个文件拷贝到webstrom里,看一下这两个变量在哪里定义的,可以看到在这由于我们只需要这两个变量,所以下面的代码可以删除了,变成这样

2022-03-16 18:08:59 11564 10

原创 JS逆向之常见编码如JSFuck

JS逆向之常见编码JSFuckJSFuck源码地址(GitHub):https://github.com/aemkei/jsfuckJSFuck在OSC上的介绍页面:http://www.oschina.net/p/jsfuckJSFuck可以将JavaScript代码进行转换,转换后的代码只使用6个字符([,],(,),!,+),实现的功能和转换前代码是一样的。例子http://www.jsfuck.com/把alert(1)变成以下这鬼样子(![]+[])[+!+[]]+(![]+[]

2022-03-14 16:41:55 1409

原创 百度AI识别验证码

百度AI识别验证码这次我们要使用百度AI来识别验证码,在一定额度内是不需要钱的创建应用https://console.bce.baidu.com/ai/?_=1646966441317&fromai=1#/ai/ocr/app/list文字识别默认是选上的SDKhttps://cloud.baidu.com/doc/OCR/s/9kibizye4安装pip install baidu-aip使用from aip import AipOcr""" 你的 APPID

2022-03-11 11:13:47 6020 1

原创 JS逆向之Webpack(三)

JS逆向之Webpack(三)难度: ⭐️网址如下https://pab.yqb.com/bank/product-item-50896319.html需要逆向的值找到加密位置看了一下是40位,并且每次都不一样,应该是带着时间戳的SHA1随便搜搜发现有点多,那我们就直接下xhr断点吧刷新一下发现已经加密了再往前找找,找到了我们看一下S在哪里定义的那我们可以先把S的值拿出来然后调用了这个方法,sign就有了S.sign = (0,v.default)(S)其

2022-03-10 18:06:44 1952

原创 JS逆向之Webpack(二)

JS逆向之Webpack(二)难度: ⭐️网址如下https://synconhub.coscoshipping.com/需要逆向的值:登录请求的password找到加密的位置看起来想RSA,所以试着搜搜以下关键词setPublicKey(encrypt(passwordusername比如搜password,73个,直接放弃~setPublicKey(,这个少,就这个了xhr断点也打一个可以看到已经是加密的翻翻方法栈,找到个很可疑的,也加个断点再提交一下

2022-03-10 14:13:02 2313 6

原创 JS逆向之RSA(一)

JS逆向之RSA(一)难度: ⭐️网站:https://beijing.tuitui99.com/denglu.html介绍:表单提交的RSA,很简单开始首先确定我们想要逆向的值可以看到是个表单提交直接定位到表单提交触发的方法全局搜一下加密的地方很明显了然后发现进了加密的库文件里,上下滑滑发现是RSA那就很好办了,我们直接复制这个文件出来就可以了,而且很贴心的把我们把这个对象导出来了但是我们知道RSA是有公钥的,那么我们找找设置公钥的地方,发现直接定位到了好了已经

2022-03-09 17:57:45 1132 1

原创 JS逆向之Webpack(一)

JS逆向之Webpack今天我们来学习一下js逆向之扣webpack代码网址如下https://www.gm99.com/需要逆向的值:登录请求的password首先肯定不是md5或者sha1或者des这类的,看上去想rsa,因为可以看到输入相同的密码加密后的结果不一样,好了那我们就开始吧找到加密点这是一个xhr请求,那我们直接看方法栈,很容易定位到时在n.login这里做了手脚,点进去看看然后已经可以发现加密的地方了然后我们下个断点,再提交一次看看可以看到是对raw pass

2022-03-09 14:29:32 6178 1

原创 学生事务管理平台自动填写互评

学生事务管理平台自动填写互评这每个20填过去再提交哪是人填的????????????????基于科技改命,我选择了写脚本,那自然就得从登录页面开始写了访问该请求服务器会让我们set-cookie,所以我用requests.session来维持会话抓login包不验证验证码就离谱!!源码#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2021-03-18 19:08# @Author : wxc# @File

2021-03-18 20:44:08 444 2

转载 pyppeteer 安装 chromium 遇到的问题解决

在安装chromium的时候,因为是谷歌源所以我们下载不了或者下载很慢,并且网上大多数的资料都是复制别人的,并没有给出具体的解决办法,很坑,这里给出我搞了一天的解决办法,有点复杂我们选择系统默认的版本,这样最保险用清华源安装pyppeteerpip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pyppeteer然后我们在新建一个py文件写入一下代码import pyppeteer.chromium_downloader# 这里的 m

2021-03-08 21:58:28 2565

原创 云战役自动打卡脚本

云战役自动打卡脚本前言实在苦恼于每天云战役打卡,于是写了一个python脚本用来进行每天自动打卡。涉及到的知识点有requests,yagmail,schedule,以及一点点的js分析,先来看下效果图,将每天的打卡情况通过yagmail发送到邮箱,定时的部分可以用schedule做或者放到PC上的定时脚本中,有条件的直接放到服务器上话不多说,正式开始分析流程由于进行了headers验证,首先需要改成手机端的请求头然后是登录抓post请求,老方法,先写个错误的密码看看发现post请求d

2021-01-29 16:31:42 2074 5

原创 mysql事务

参考资料mysql锁:https://tonydong.blog.csdn.net/article/details/103324323幻读幻读会在 RU / RC / RR 级别下出现,SERIALIZABLE 则杜绝了幻读,但 RU / RC 下还会存在脏读,不可重复读,故我们就以 RR 级别来研究幻读,排除其他干扰。注意:RR 级别下存在幻读的可能,但也是可以使用对记录手动加 X锁 的方法消除幻读。SERIALIZABLE 正是对所有事务都加 X锁 才杜绝了幻读,但很多场景下我们的业务sql并不

2021-01-05 09:23:24 167

原创 数据库系统概论葵花宝典

数据库系统概论葵花宝典一些定义和规则候选码的定义:如果关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码;主码的定义:如果一个关系有多个候选码,则选定其中一个为主码;主属性定义:所有候选码的属性集合称为主属性;非主属性定义:不包含在任何候选码中的属性称为非主属性;实体完整性规则:如果属性(一个或者一组属性)A是基本关系R的主属性,则A不能取空值。函数依赖集求法①根据推理规则的分解性,右部最小化(右切)②消除左边的冗余属性(除本求包)③消除冗余的依赖(左部最小化)

2021-01-05 09:22:44 1377

原创 Windows环境下实现WireShark抓取HTTPS

Windows环境下实现WireShark抓取HTTPS本教程讲述了如何在 Windows 操作系统中通过 WireShark 抓取 HTTPS 或 HTTP2 数据包。关键步骤如下:设置系统环境变量(SSLKEYLOGFILE)WireShark 设置 SSL 选项操作设置设置系统环境变量1、打开 “系统属性” 对话框(我的电脑 -> 属性-> 高级系统设置),打开 “环境变量” 对话框,打开 “新建系统变量” 对话框,添加以下内容。(注意文件要存在)2 设置W

2021-01-01 23:09:13 4730 1

转载 利用 Chrome 原生工具进行网页长截图

利用 Chrome 原生工具进行网页长截图之前试用 Firefox Quantum 时,我最喜欢的特性之一就是其自带的截图功能。它不仅可以自动检测网页元素边界,还能轻松保存整个网页,十分方便。后来由于扩展及习惯等原因,我又换回了 Chrome,但还是对该功能念念不忘。尽管商店里也有许多截图增强扩展,但在截取一些比较复杂的网页时,往往会出现元素错位、重复的现象。经过一番探索,我发现 Chrome 开发者工具中其实自带了截图命令,效果也令人满意,在这里分享给大家。要想使用截图功能,你需要首先确保 Chro

2020-12-19 16:31:07 407 1

原创 赫夫曼树以及赫夫曼编码

赫夫曼树以及赫夫曼编码赫夫曼树的基本介绍:给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree), 还有的书翻译为霍夫曼树。赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近。如下图中第二个树才是赫夫曼树,因为它的wpl值最小赫夫曼树的几个重要概念:1)、路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为

2020-12-07 18:14:15 480

原创 Java代码实现二叉树前序中序后序层序遍历

Java代码实现二叉树前序中序后序层序遍历Node结点类public class Node { // 左子结点 public Node left; // 右子结点 public Node right; // 结点的值 public String value; public Node(String value) { this.value = value; } @Override public String

2020-12-06 15:53:57 239

原创 二叉树的(4种)遍历算法

浅谈二叉树的(4种)遍历算法遍历这棵二叉树无非有以下两种方式层次遍历普通遍历:从上到下从左到右在普通遍历方式中,整个遍历二叉树的过程中,每个节点都被经过了 3 次(虽然叶子节点看似只经过了 2 次,但实际上可以看做是 3 次)。以节点 2 为例,它被经过了 3 次。因此,在编程实现时,我们可以设定真正访问各个节点的时机,换句话说,我们既可以在第一次经过各节点时就执行访问程序,也可以在第二次经过各节点时访问,甚至可以在最后一次经过各节点时访问。这也就引出了以下 3 种遍历二叉树的算法:

2020-11-26 17:16:11 732

转载 命令设计模式

命令设计模式命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式的结构命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。命令模式允许请求的一方和接收的一方独立开来

2020-11-26 15:21:06 187

原创 组合设计模式

组合设计模式问题场景假设现在有一个学校,学校中有不同的学院,学院中又有不同的专业,要求设计代码可以方便的对学院。专业进行增加删除,同时还可以遍历出这个学校的所有专业。在没有学习组合模式之前,我是通过学校类组合学院类,学院类组合专业类来进行设计的。由于学校包含学院,学院包含专业,所以首先需要设计的是专业类,然后是学院类,最后是学校类// 专业类public class Department { public String name; public Department(Strin

2020-11-24 13:04:05 192 1

原创 桥接设计模式

桥接设计模式在开始学java的时候老师讲到继承的时候,总是喜欢用一个例子来讲解,那就是画图,这里有一个画笔,可以画正方形、长方形、圆形(这个大家都知道怎么做吧,我就不解释了)。但是现在我们需要给这些形状进行上色,这里有三种颜色:白色、灰色、黑色。这里我们可以画出3*3=9中图形:白色正方形、白色长方形、白色圆形。。。。。。到这里了我们几乎到知道了这里存在两种解决方案:方案一:为每种形状都提供各种颜色的版本。方案二:根据实际需要对颜色和形状进行组合。我们我们采用方案一来实现的话,我们是不是也可以这样来

2020-11-22 11:24:05 278

原创 适配器设计模式

java适配器(Adapter)1. 概念适配器模式把一个类的接口转换成客户端期待的另外一种接口, 从而是原本应用接口不匹配而无法在一起工作的两个类能够在一起工作.举个例子来说,现在一般的家用电器要求的电压都是 220V,但有个别电器要求使用110V 电压,怎么办?这时就需要用一个能把 220V 电压转换成 110V 电压的变压器,这个变压器就是一个适配器。2. 哪些情况需要适配器模式?系统需要使用类的接口不符合系统的要求要建立一个可以重复使用的类, 用于与该类之间的关联不大的一些类, 包括工

2020-11-21 21:14:02 105

原创 建造者设计模式

建造者设计模式前言建造者模式又被称呼为生成器模式,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。使用多个简单的对象一步一步构建成一个复杂的对象,有点像造房子一样一步步从地基做起到万丈高楼。注重的是new完对象之后的过程,而不是new 对象简介1、定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示2、主要作用:在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。(指挥者的作用)3、如何使用:用户只需要给出指定复杂对象的类型和内容

2020-11-20 16:53:25 148

原创 Java对象创建流程

Java对象创建流程public class ObjectTest { public static void main(String[] args) { Object obj = new Object(); }}第一步判断对象所属的类是否加载链接初始化虚拟机遇到一条new指令时,首先去检查这个指令的参数是否能在元空间运行时常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过(即判断类元信息是否存在)。如果没有,那么须先执行相应的

2020-11-12 10:24:31 312

原创 Java创建对象的几种方法

Java创建对象的几种方法Java中有5种创建对象的方式,下面给出它们的例子还有它们的字节码使用new关键字} → 调用了构造函数使用Class类的newInstance方法} → 调用了构造函数使用Constructor类的newInstance方法} → 调用了构造函数使用clone方法} → 没有调用构造函数使用反序列化} → 没有调用构造函数如果你运行了末尾的的程序,你会发现方法1,2,3用构造函数创建对象,方法4,5没有调用构造函数。1.使

2020-11-11 17:12:29 182

转载 关于`Object.clone()`子类不能调用的思考

关于Object.clone()子类不能调用的思考我们知道,Object.clone()这是个被protected修饰符定义的方法,而在访问权限修饰表里我们可以看到protected修饰的成员变量或方法可以被本包以及这个类的子类中调用访问修饰符本类本包子类其他包public√√√√protected√√√×(default)√√××private√×××现在我们来看一个情况,在protected_test包下有两个类,一个

2020-11-11 15:56:17 525

原创 模板方法设计模式

模板方法设计模式定义定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。代码实现抽象模板类public abstract class HummerModel { abstract protected void start(); abstract protected void stop(); abstract protected void alarm(); abstract protecte

2020-11-10 22:04:39 126

原创 javaWeb通过反射动态调用方法

javaWeb通过反射动态调用方法BaseServletpublic abstract class BaseServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.

2020-10-28 22:53:36 259

原创 grade构建阅读spring源码环境 Idea2020.3

grade构建阅读spring源码环境 Idea2020.3笔者看了很多博客,从早上搞到晚上,终于成功了????第一步:下载spring源码​ 在这里我推荐到码云上下载,网速比较快,顺便附上网址https://gitee.com/mirrors/Spring-Framework?_from=gitee_search第二步:下载对应gradle版本首先我们要确认我们下载的源码所需要的gradle版本是哪个,我们先解压源码,进入这个目录下的properties这个文件spring-framewo

2020-10-27 10:56:54 824 1

原创 Servlet中关于web.xml的测试

<servlet-mapping> <servlet-name>FileServlet</servlet-name> <url-pattern>/fileUpload</url-pattern> </servlet-mapping>在这里我配置了/fileUpload,然后我尝试访问了以下几种路径http://localhost:8081/maven_tomcat/fileUpload/http://lo..

2020-10-11 14:16:11 184

转载 Spring不能给静态变量注入值的原因

Spring无法直接给静态变量注入值,因为静态变量不属于对象,只属于类,也就是说在类被加载字节码的时候变量已经初始化了,也就是给该变量分配内存了,导致spring忽略静态变量。所以如下这种写法就是错误的,这样是无法注入的,在使用该变量的时候会导致空指针错误:@Autowiredprivate static StudentMapper studentMapper;Spring 依赖注入是依赖set方法,静态变量不属于对象,只属于类。解决方法就是加上非静态的set方法,如下:private static

2020-10-09 21:12:55 1028

转载 关于 Mybatis 设置懒加载无效的问题

看了 mybatis 的教程,讲到关于mybatis 的懒加载的设置:只需要在 mybatis 的配置文件中设置两个属性就可以了: <settings> <!-- 打开延迟加载的开关 --> <setting name="lazyLoadingEnabled" value="true" /> <!-- 将积极加载改为消息加载即按需加载 --> <setting name="aggr

2020-10-09 12:21:09 719

原创 IDEA Maven配置

IDEA Maven配置第一步(这两个都要改,先打开上面那个)第二步(如果这个文件不存在的话自己创建一个,顺便配置了阿里源)<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="

2020-10-01 10:28:10 117

原创 Maven [ERROR] 不再支持源选项 5,请使用 7 或更高版本的解决办法

Maven [ERROR] 不再支持源选项 5,请使用 7 或更高版本的解决办法一定要在pom.xml写上这个<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>13</maven.compiler.source> <maven.compiler.target&

2020-10-01 10:26:59 2887

原创 json-server的使用

json-server的使用作为一个前端,在后端还没有ready的时候,不可避免的要使用mock的数据。很多时候,我们并不想使用简单的静态数据,而是希望自己起一个本地的mock-server来完全模拟请求以及请求回来的过程。json-server是一个很好的可以替我们完成这一工作的工具。说明: 可以快速把一个json文件托管成一个 web 服务器(提供接口)**特点:**基于Express,支持CORS和JSONP跨域请求,支持GET, POST, PUT和 DELETE 方法1.安装json-

2020-09-17 13:59:17 159

原创 java中sleep()和wait()的异同

java中sleep()和wait()的异同相同点:一旦执行方法,都可以使线程进入阻塞状态不同点:两个方法声明的位置不同,Thread类中声明sleep(),Object类中声明wait()调用的要求不同,sleep()可以在任何场景下使用,wait()只能在同步代码块中使用,且调用者必须是同步监视器如果两个方法都使用在同步代码块中,前者不会释放锁,后者会释放锁。...

2020-09-16 19:48:17 114

原创 SQLyog导入sql文件

SQLyog导入sql文件第一步第二步第三步

2020-09-14 12:11:33 684 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除