文章列表
- 博客分类:
很多时候我们做反爬虫都会建立ip黑名单,防止爬虫抓取信息,但是道高一尺魔高一丈;爬虫会使用代理ip跟拨号服务器去抓取内容;这是我们就会使用前端js生成类似浏览器指纹 代码混淆,来判断爬虫;除了浏览器指纹;
啥是浏览器指纹?就是说不同电脑的浏览器生成的指纹数值是不一致的;常用的指纹有canvas指纹;webgl指纹;硬件指纹;audiocontext指纹;
类似:canvas指纹:https://browserleaks.com/canvas
以下是 canvas指纹算法实现:
function hashstr(s){
var hash = 0;
if (s.length == 0) ...
- 2022-04-01 18:26
- 浏览 154
- 分类:互联网
- 博客分类:
调用第三方接口操作业务的时候经常要用到分布式事务,以保证事务的完整性,我们常用的分布式事务模型有saga、tcc、2pc等。2pc不属于接口调用的场景,所以我们调用第三方接口常用的模型有saga、tcc
tcc要保证comfirm时报所有dml操作请求写在comfirm实现里面,这个有一定的局限性,回滚的的实现写在cancel接口里面,这个对业务有一定的局限性
saga更适合长事务、业务比较复杂的场景
本文实现saga事务异常处理,如果需要处理那种接口comfirm超时的情况,需要将事务id及comfirm调用链持久化保存起来,异步检查,也可以写在缓存里面定时检查。这 ...
- 2021-12-15 23:54
- 浏览 1129
- 分类:编程语言
- 博客分类:
业务场景多了,就应该把场景代码工具化,减少重复代码;趁周六在这里总结一下java实现的redis分布式锁代码;
使用的技术点:
1、redis函数setnx;
2、redis监控函数watch;
3、string.intern在jvm的内存操作,和string.intern的替代方案:guava;
4、@functionalinterface函数接口和lambda表达式的应用。
5、redistemplate;尽量使用redistemplate操作redis;直接操作jedispool人多的时候会乱。
reidis锁操作类
package com.fr ...
- 2021-07-10 16:25
- 浏览 1829
- 分类:研发管理
- 博客分类:
通过kubeadm init初始化master
服务器
名称
ip
k8s-master
192.168.2.131
k8s-node01
192.168.2.132
k8s-node02
192.168.2.133
linux内核版本(所有节点)
确保服务器版本linux内核支持k8s安装 , 我使用的是linux5.12,如果版本不支持kubeadm init 执行的时候会报错
报错config_cgroup_pids: not set;cgroups_pids: missing
查询linux版本
una ...
- 2021-06-19 18:09
- 浏览 362
- 分类:编程语言
解释:
1、问题叙述:程序请求硬盘上的系统文件的时候,一般请求文件会在’系统缓存’和‘应用缓存’各存储一份,然后再由cpu操作应用缓存展示给用户。所以一般用户请求系统硬盘的文件时,文件在内存中可占了双份� ...
- 2021-06-10 22:54
- 浏览 399
- 分类:编程语言
- 博客分类:
openoffice是单线程的,如果并发操作,不管是通过java调用,还是命令调用,都会出问题,异常处理,可能会在openoffice服务器生成文件锁,导致命令一直执行不下去造成线程死锁;这种情况,tomcat线程被占满,tomcat默认连接数10000,等待执行队列数100,也就是服务器会接受10100个连接,服务器最多产生10100个文件句柄,所以,线程假死执行不下去,文件句柄会飙升;所以要防止应用假死,防止openoffice并发操作, 应用在负载均衡的时候,nginx必须对openoffice转换文件的请求指向同一台机器或者每个应用单独部署一个openoffice服务;同时程序里面应用的 ...
- 2020-09-24 00:08
- 浏览 650
- 分类:行业应用
- 博客分类:
今天打开jvm本来想监控一下本机jvm应用的性能,突然发现一年前帮一个广告平台做性能优化的配置居然还能看到相关应用信息,该平台一天单表数据量大概500w左右,忙时上千万数据,采用mysql分库每天定期分表;很多时候我们要对这种高并发的应用都要进行实时监控,一方面可以监控性能差的程序,另一方面及时发现程序运行异常信息;
使用jmx监控,jvm配置如下:
-dcom.sun.management.jmxremote-djava.rmi.server.hostname=×××××××××-dcom.sun.management.jmxremote.port=8000-dco ...
- 2020-06-02 00:11
- 浏览 208
- 分类:研发管理
- 博客分类:
在爬取网页的时候要经常对js进行debug分析,selenium只做为测试工作使用,但是耗费资源高。目前很多网站的页面和报文都是通过js加密或者特殊处理生成,有些网站防爬策略是获取分辨率来判断的,最典型的应该是百度的防刷排名策略,就是通过分别率去判断,python或java是无法修改分别率的,比如说window.screen.height;比如说js文件中有个闭包方法里面的代码:
window.href = url window.screen.height;
java程序或者python程序无法通过修改window.screen.height来模拟参数,那么这就需要修改js文件window ...
- 2020-05-26 15:29
- 浏览 396
- 分类:开源软件
- 博客分类:
在独立开发一个跨云的集群应用的时候,突然发现以往使用的jekins、shell脚本完全不够用了,部署一个版本效率低下到要死要死了。于是觉得非常有必要手写一个bat脚本,去操作集群在linus上的jar应用,虽然忙乎了一个晚上,但是部署效率直线上升。
windows上传和操作应用使用到两个工具分别是pscp和plink
pscp,就像linux的scp命令指令如下,
usage: pscp [options] [[email protected]]host:source target
pscp [options] source [source...] [[email protected]]host:target
...
- 2020-04-29 20:11
- 浏览 320
- 分类:操作系统
- 博客分类:
发现很多人搞爬虫会把python作为首选技术,理由是简单,作为一家公司技术栈,多出一样语言是要多出很多维护成本的;本人最熟悉的还是java,所以对java内存浏览器技术htmlunit做了一次研究,发现原生的htmlunit的性能及对多线程的支持不是那么友好,特别是使用代理ip后,oom是很正常的,监控程序并查看源码总结问题原因:
1、js执行器执行js是使用多线程执行,在关闭js执行线程的时候,使用com.gargoylesoftware.htmlunit.javascript.background.defaultjavascriptexecutor这个类的时候,有段代码。
引用priva ...
- 2019-10-10 08:25
- 浏览 453
- 分类:研发管理
- 博客分类:
shell自动化部署组件的时候对文件字符串处理配置文件的需求比较大,部署hadoop处理如下格式xml的量是非常多的:
yarn.resourcemanager.ha.rm-ids
rm1,rm2
以下是新增或者修改yarn.resourcemanager.ha.rm-ids节点的值
#!/bin/bash
filename="/hadoop-2.7.1/etc/hadoop/yarn-site.xml& ...
- 2016-05-11 23:14
- 浏览 822
- 分类:操作系统
- 博客分类:
为了实现一些组件的自动化部署,可能要设置服务器的免密访问比较方便,最后实现了自动化部署密码脚本,以下为实现代码逻辑。代码比较庞大,不能一一道出了。
#!/bin/bash
ips=( '10.100.112.79' '10.100.112.203' '10.100.112.204' '10.100.112.205' '10.100.112.95' '10.100.112.125' ) //所有关联ip
masterlenth=4 //ips集合前几个需要配置无密访问
gname=hgroup
uname=root //无密访问账号(要先生成root无密访问权限)
password=" ...
- 2016-05-11 22:56
- 浏览 561
- 分类:操作系统
- 博客分类:
#!/bin/bash
ip=$1
currpath=$2
hostip=$3 //本机ip
if [ -z "$hostip" ] || [ "$ip" != "$hostip" ];then
ssh ${ip} $currpath/base/annotationcol.sh "/etc/ssh/sshd_config" "authorizedkeysfile\ "
ssh ${ip} $currpath/base/annotationcol.sh "/etc/ssh/sshd_co ...
- 2016-05-10 18:04
- 浏览 635
- 分类:操作系统
- 博客分类:
#!/bin/bash
filename=$1
key=$2
#sed -i '2,5s/'"$key"'.*/#/' $filename
sed -i 's/^'"$key"'/#&/' $filename
- 2016-05-10 18:00
- 浏览 791
- 分类:操作系统
- 博客分类:
#!/bin/bash
gname=$1
uname=$2
password=$3
echo "==========$gname,$uname,$password======"
#userdel $uname
isuserexist=` cat /etc/passwd|grep $uname|wc -l `
isgroupexist=` cat /etc/group|grep $gname|wc -l `
if [ $isgroupexist -eq 0 ];then
echo "groupadd $gname"
groupadd $gname
fi
i ...
- 2016-05-10 17:49
- 浏览 278
- 分类:操作系统
« 上一页 1