- 博客(12)
- 资源 (11)
- 收藏
- 关注
原创 可能是全网唯一一个基于windows和java的关于selenium webDriver绕过网站反爬服务的方法
事情的起因是我需要用selenium的webDriver技术实现一些简单操作,一直用的是chrome和配套的webDriver(chrome的强大和轻量化真的是无敌的),但是突然有一天发现有些网站我用webDriver启动的浏览器是怎么也登录不进去(本来是用自动化登录的,现在人工登录都不行),于是开始在google上找答案,发现chrome和firfox默认的驱动都会被反爬服务识别出来:we...
2018-12-21 14:28:55 7628 17
转载 ThreadLocal
不要将ThreadLocal翻译为线程本地化或本地线程,英语的解释为:CopyValueIntoEveryThread Thread的三个重要方法: set():如果没有set操作的ThreadLocal,容易引起脏数据问题。 get():始终没有get操作的ThreadLocal对象是没有意义的。 remove():如果没有remove操作,容易引起内存泄...
2018-12-18 10:49:41 112
原创 Reactive Streams, flux, mono介绍之白话版
目录要解决的问题:解决原理:解决方法: 发布者Publisher 订阅者Subscriber 订阅对象Subscription 处理者Processor源码简析spring中响应式流的应用 服务端技术栈 响应式Http客户端服务端修改客户端webClient的使用方法 ...
2018-12-14 18:54:29 2146 1
原创 hadoop到底哪里牛逼了?(不要只说HDFS和MapReduce,要理解!理解!)
传统的计算就是在一台或多台机器上部署程序,然后把数据获通过接口抓取到程序里进行分析,这称之为移动数据。而hadoop不是,而是把程序自动分发到各hadoop结点上进行计算,然后通过一定机制把结果进行汇总最后返回出来,这称之为移动计算。 解释一下,第一种,移动数据,到头来还是一个中央计算机从很多台机器上拉数据,拉倒自己的机器上处理,终究还是一台机器处理,慢不慢?慢! 而hadoop呢...
2018-12-12 10:16:05 944
原创 DispatchServlet干了啥
HandlerMapping是个接口,里面就只有一个方法getHandler,源码如下: spring项目启动的时候会扫描包,专门有个map用来存储controller类的(key是@RequestMapping里面的value),这个getHandler方法就是根据这个value找到这个类对象。 HandlerAdapter里面有个方法handle,参数需要一个hand...
2018-12-11 17:09:40 899
转载 MySQL索引底层实现
索引的本质MySQL官方对于索引的定义为:索引是帮助MySQL高效获取数据的数据结构。即可以理解为:索引是数据结构。 我们知道,数据库查询是数据库最主要的功能之一,我们都希望查询数据的速度尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找,当然这种时间复杂度为O(n)的算法在数据量很大时显然是糟糕的,于是有了二分查找、二叉树查找等。但是二分查找...
2018-12-11 12:13:47 95 1
转载 GET和POST两种基本请求方法的区别
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。 当你在面试中被问到这个问题,你的内心充满了自信和喜悦。 ...
2018-12-11 10:19:28 110
转载 进程中的一个线程死了所引发的后果
我们知道,同一个进程中的多个线程共享进程资源,包括主内存、文件句柄、锁资源等。那么当一个线程死了(非正常退出、死循环等)就会导致线程该占有的资源永远无法释放,从而影响其他线程的正常工作,看下面一个例子。 import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;...
2018-12-10 18:38:10 3001
转载 volatile关键字的一个解释
volatile的意思是不稳定的,也就是敏感的。 当使用volatile关键字修饰变量时,意味着任何对此变量的操作都会在内存中进行,不会产生副本,以保证共享变量的可见性,局部阻止了指令重排的发生。(每个线程都有独占的内存区域,如操作栈、本地变量表等等。线程本地内存保存了引用变量在堆内存中的副本,线程对变量的所有操作都在本地内存区域中进行,执行结束后再同步到堆内存中去。这里必然有一个时间...
2018-12-10 16:05:46 113
转载 authentication plugin caching_sha2
mysql 8.0 默认使用 caching_sha2_password 身份验证机制 —— 从原来的 mysql_native_password 更改为 caching_sha2_password。 从 5.7 升级 8.0 版本的不会改变现有用户的身份验证方法,但新用户会默认使用新的 caching_sha2_password 。客户端不支持新的加密方式。方法:修改用户的加密方式...
2018-12-05 10:41:54 167
原创 ERROR StatusLogger No log4j2 configuration file found. Using default configuration
spring5与log4j不兼容的问题 maven中 需要导入log4j 2以上的版本 在web.xml中配置监听器和log4j的配置文件 log4j2.xml放在资源根目录就行,不配置系统也会自己找到 log4j的配置文件(log4j2.xml) ...
2018-12-04 16:06:00 3385
原创 springMVC是如何实现方法参数类型转换的
先看看基本类型转换: 通过convertNumberToTargetClass方法就可以把参数与类型绑定上,于是我简单实现了下参数类型中有String和Integer的情况: 如果参数是对象类型则会去spring容器中去找这个对象,找到之后也是通过set方法把属性进行注入。...
2018-12-04 15:29:09 423
elasticsearch集群部署配置
2019-01-03
高效能程序员的修炼(HOT)
2016-11-01
自己用struts2和hibernate改的一个博客第二版
2016-11-01
自己用struts2和hibernate改的一个博客
2009-12-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人