- 浏览: 77622 次
- 性别:
- 来自: 广州
最新评论
文章列表
一、绑定cpu线程,减少cpu切换开销,避免不同的CPU缓存失效
#指定四个数cpu
worker_processes 4;
#比如8核服务器,绑定0、1、4、7号cpu
worker_cpu_affinity 00000001 00000010 00001000 10000000;
[b][*]二、屏蔽无效爬虫
[/b]
一些情况下,做seo运营的网站,我们是避免死链,要求内容也多,基本上百度,google,360蜘蛛不拒绝,百度现在是机器+人工+人工,要求较高。
但是一些蜘蛛对网站会域名对运营一点作用都没有,都需要屏蔽,会严重影响系统性能,占用应用资源,特别是一些主页开启资 ...
spring项目中,要统一处理异常,ExceptionHandler是必须实现的,但是@ExceptionHandler是不能拦截HandlerInterceptorAdapter.preHandle()方法抛出的异常的,根本原因还要看执行顺序:Filter->Interceptor->ControllerAdvice->Aspect,preHandle不会受ControllerAdvice影响。
所以Filter我们可以可以通过跳转的方式特殊处理:
request.getRequestDispatcher("/exception/401").forwar ...
场景平台需要运营数据报表支持运营,因为是平台初建,搭建大数据平台成本较大,故使用零时使用mysql做olap。需求大概单表每日千万,从一张mysql近3亿数据的表里面查询统计一个月的数据。制定营收、留存等每日环比数据报表。配置硬盘SSD 6核12g数据量每月单表大概生产3亿数据测试sqlSELECT COUNT(1) FROMt_app_events_ad_data WHEREdata_key = ‘R’ AND create_date > ‘20221105’ 同时给data_key+create_date加入组合索引使用innerdb查询统计时间大概2分59秒,如下图图片:
...
很多时候我们做反爬虫都会建立ip黑名单,防止爬虫抓取信息,但是道高一尺魔高一丈;爬虫会使用代理ip跟拨号服务器去抓取内容;这是我们就会使用前端js生成类似浏览器指纹+代码混淆,来判断爬虫;除了浏览器指纹;
啥是浏览器指纹?就是说不同电脑的浏览器生成的指纹数值是不一致的;常用的指纹有Canvas指纹;webgl指纹;硬件指纹;AudioContext指纹;
类似:canvas指纹:https://browserleaks.com/canvas
以下是 canvas指纹算法实现:
function hashstr(s){
var hash = 0;
if (s.length == 0) ...
调用第三方接口操作业务的时候经常要用到分布式事务,以保证事务的完整性,我们常用的分布式事务模型有saga、tcc、2pc等。2pc不属于接口调用的场景,所以我们调用第三方接口常用的模型有saga、tcc
tcc要保证comfirm时报所有dml操作请求写在comfirm实现里面,这个有一定的局限性,回滚的的实现写在cancel接口里面,这个对业务有一定的局限性
saga更适合长事务、业务比较复杂的场景
本文实现saga事务异常处理,如果需要处理那种接口comfirm超时的情况,需要将事务id及comfirm调用链持久化保存起来,异步检查,也可以写在缓存里面定时检查。这 ...
业务场景多了,就应该把场景代码工具化,减少重复代码;趁周六在这里总结一下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 ...
通过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 ...
解释:
1、问题叙述:程序请求硬盘上的系统文件的时候,一般请求文件会在’系统缓存’和‘应用缓存’各存储一份,然后再由cpu操作应用缓存展示给用户。所以一般用户请求系统硬盘的文件时,文件在内存中可占了双份 ...
openoffice是单线程的,如果并发操作,不管是通过java调用,还是命令调用,都会出问题,异常处理,可能会在openoffice服务器生成文件锁,导致命令一直执行不下去造成线程死锁;这种情况,tomcat线程被占满,tomcat默认连接数10000,等待执行队列数100,也就是服务器会接受10100个连接,服务器最多产生10100个文件句柄,所以,线程假死执行不下去,文件句柄会飙升;所以要防止应用假死,防止openoffice并发操作, 应用在负载均衡的时候,nginx必须对openoffice转换文件的请求指向同一台机器或者每个应用单独部署一个openoffice服务;同时程序里面应用的 ...
今天打开jvm本来想监控一下本机jvm应用的性能,突然发现一年前帮一个广告平台做性能优化的配置居然还能看到相关应用信息,该平台一天单表数据量大概500w左右,忙时上千万数据,采用mysql分库每天定期分表;很多时候我们要对这种高并发的应用都要进行实时监控,一方面可以监控性能差的程序,另一方面及时发现程序运行异常信息;
使用jmx监控,jvm配置如下:
-Dcom.sun.management.jmxremote-Djava.rmi.server.hostname=×××××××××-Dcom.sun.management.jmxremote.port=8000-Dco ...
在爬取网页的时候要经常对js进行debug分析,selenium只做为测试工作使用,但是耗费资源高。目前很多网站的页面和报文都是通过js加密或者特殊处理生成,有些网站防爬策略是获取分辨率来判断的,最典型的应该是百度的防刷排名策略,就是通过分别率去判断,python或java是无法修改分别率的,比如说window.screen.height;比如说js文件中有个闭包方法里面的代码:
window.href = url+window.screen.height;
java程序或者python程序无法通过修改window.screen.height来模拟参数,那么这就需要修改js文件window ...
在独立开发一个跨云的集群应用的时候,突然发现以往使用的jekins、shell脚本完全不够用了,部署一个版本效率低下到要死要死了。于是觉得非常有必要手写一个bat脚本,去操作集群在linus上的jar应用,虽然忙乎了一个晚上,但是部署效率直线上升。
windows上传和操作应用使用到两个工具分别是pscp和plink
pscp,就像linux的scp命令指令如下,
Usage: pscp [options] [user@]host:source target
pscp [options] source [source...] [user@]host:target
...
发现很多人搞爬虫会把python作为首选技术,理由是简单,作为一家公司技术栈,多出一样语言是要多出很多维护成本的;本人最熟悉的还是java,所以对java内存浏览器技术htmlunit做了一次研究,发现原生的htmlunit的性能及对多线程的支持不是那么友好,特别是使用代理ip后,oom是很正常的,监控程序并查看源码总结问题原因:
1、js执行器执行js是使用多线程执行,在关闭js执行线程的时候,使用com.gargoylesoftware.htmlunit.javascript.background.DefaultJavaScriptExecutor这个类的时候,有段代码。
引用priva ...
shell自动化部署组件的时候对文件字符串处理配置文件的需求比较大,部署hadoop处理如下格式xml的量是非常多的:
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
以下是新增或者修改yarn.resourcemanager.ha.rm-ids节点的值
#!/bin/bash
filename="/hadoop-2.7.1/etc/hadoop/yarn-site.xml& ...
shell脚本部署无密码访问
- 博客分类:
- shell脚本部署无密码访问
为了实现一些组件的自动化部署,可能要设置服务器的免密访问比较方便,最后实现了自动化部署密码脚本,以下为实现代码逻辑。代码比较庞大,不能一一道出了。
#!/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=" ...