最后
Java架构进阶面试及知识点文档笔记
这份文档共498页,其中包括Java集合,并发编程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面试解析及知识点整理
Java分布式高级面试问题解析文档
其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!
互联网Java程序员面试必备问题解析及文档学习笔记
Java架构进阶视频解析合集
import java.util.regex.Pattern;
/**
-
快手去水印
-
@author taishan
-
@version 1.0
-
@date 2020/8/4
-
@since JDK1.8
*/
@Slf4j
public class KuaiShou {
//视频保存目录
private static final String videoSavePath=“d:/快手视频/”;
//分享链接(手动修改)
private static String targetPath = “奇怪,刚刚和妈妈的衣架子交心攀谈后,怎么感觉头上有一圈星星呢~ http://v.kuaishou.com/s/mhn5haAq 复制此链接,打开【快手App】直接观看!”;
public static void main(String[] args) {
parseUrl(filterUrl(targetPath));
}
/**
-
方法描述: 解析下载视频
-
@param url
-
@author tarzan
-
@date 2020年08月04日 10:33:40
*/
public static void ksParseUrl(String url) {
HashMap<String, String> headers = MapUtil.newHashMap();
headers.put(“User-Agent”, “Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Mobile Safari/537.36”);
String redirectUrl = HttpUtil.createGet(url).addHeaders(headers).execute().header(“Location”);
String body= HttpUtil.createGet(redirectUrl).addHeaders(headers).execute().body();
Document doc= Jsoup.parse(body);
Elements videoElement = doc.select(“script[type=text/javascript]”);
String videoInfo = videoElement.get(3).data().replaceAll(“window.pageData= “,””);
JSONObject json =JSONObject.parseObject(videoInfo);
String title = json.getJSONObject(“video”).getString(“caption”);
String videoUrl=json.getJSONObject(“video”).getString(“srcNoMark”);
videoUrl=videoUrl.substring(0,videoUrl.indexOf(“?”));
log.debug(videoUrl);
log.debug(title);
downVideo(videoUrl,title,“快手视频”);
}
/**
-
方法描述: 下载视频到本地
-
@param httpUrl
-
@param saveFile
-
@author tarzan
-
@date 2020年08月04日 10:34:09
*/
public static void downVideo(String httpUrl, String saveFile) {
int byteRead;
try {
URL url = new URL(httpUrl);
//获取链接
URLConnection conn = url.openConnection();
//输入流
InputStream inStream = conn.getInputStream();
//封装一个保存文件的路径对象
File fileSavePath = new File(saveFile);
//注:如果保存文件夹不存在,那么则创建该文件夹
File fileParent = fileSavePath.getParentFile();
if(!fileParent.exists()){
fileParent.mkdirs();
}
//写入文件
FileOutputStream fs = new FileOutputStream(fileSavePath);
byte[] buffer = new byte[1024];
while ((byteRead = inStream.read(buffer)) != -1) {
写在最后
学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!
最后再分享的一些BATJ等大厂20、21年的面试题,把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。
Mybatis面试专题
MySQL面试专题
并发编程面试专题
20140199)]
并发编程面试专题