自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 图片压缩,分辨率和尺寸大小修改工具(完全免费)

图片压缩,分辨率和尺寸大小修改工具(完全免费)今天帮我妹妹修改一个图片尺寸大小,发现在线修改图片分辨率、文件大小和尺寸的网站极坑!!!不说功能不够人性化,收费还贼离谱。本着技术宅男永不为奴,白嫖党万岁的原则,良心推荐一款不收费的Windows系统软件Caesium。软件界面如下:附上下载链接:http://www.pc6.com/softview/SoftView_53677.html...

2021-04-07 16:29:26 3132 2

原创 python爬虫实战-爬取新闻联播视频和新闻文稿

一、爬取新闻联播视频1. 将视频拖到最后2. 分析视频缓存链接如图所示url:https://hls.cntv.baishancdnx.cn/asp/hls/1200/0303000a/3/default/46c6c76d679340d5bb1df3a87573c952/270.ts3. 将url对应的二进制内容抓取下来代码如下:import requestsimport osif __name__=="__main__": for i in range(270):

2020-10-10 13:28:17 2779 1

原创 python爬虫实战之爬取成语大全

业余之余想学习中华文化之成语,身边没有成语词典,网上一个个翻网页又比较懒,花了半个小时搞定数字成语词典,你值得拥有!爬取思路找到首页网址:https://www.chengyucidian.net/按照拼音字母种类抓取,注意有些字母没有成语;获取每个字母种类的每一页所有成语链接获取每一页链接下的内容废话不多说,直接上代码给各位看客拿去上手撸!import requestsfrom bs4 import BeautifulSoupimport reheaders = { '

2020-08-07 21:24:30 1632 1

原创 分布式缓存详解

1. 缓存雪崩缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU 和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。一般有三种处理缓存雪崩的办法:一般并发量不是特别多的时候,使用最多的解决方案是加锁排队。给每一个缓存数据增加相应的缓存标记,记录缓存的是否失效,如果缓存标记失效,则更新数据缓存。为key 设置不同的缓存失效时间。2. 缓存穿透缓存穿透是指用户查询数据,在数据库没有,

2020-05-20 20:29:34 499

原创 数据库存储引擎(InnoDB、MyIASM、Memory和Archive)详解

1. 数据库存储引擎概念:数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。2. InnoDB(B+树)InnoDB 底层存储结构为B+树(如下图所示), B树的每个节点对应innodb的一个page,page大小是固定的,一般设为16k。其中非叶子节点只有键值,叶子节点包含完成数据。

2020-05-20 19:28:58 1117

原创 Spring反转控制(IoC)原理详解

1.IoC 概念Spring 通过一个配置文件描述 Bean 及 Bean 之间的依赖关系,利用 Java 语言的反射功能实例化Bean 并建立 Bean 之间的依赖关系。 Spring 的 IoC 容器在完成这些底层工作的基础上,还提供了 Bean 实例缓存、生命周期管理、 Bean 实例代理、事件发布、资源装载等高级服务。两种实现: 依赖查找(DL)和依赖注入(DI)。IOC 和 DI 、DL 的关系如下:DL 已经被抛弃,因为他需要用户自己去是使用 API 进行查找资源和组装对象。即有侵入

2020-05-19 22:32:58 466

原创 JVM类加载机制详讲

1. 类加载机制JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化。加载: 类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的java.lang.Class 对象,作为方法区这个类的各种数据的入口。注意这里不一定非得要从一个Class 文件获取,这里既可以从ZIP 包中读取(比如从jar 包和war 包中读取),也可以在运行时计算生成(动态代理),也可以由其它文件生成(比如将JSP 文件转换成对应的Class 类)。验证: 这一阶段的主要目的是为了确保Class 文件的字节

2020-05-16 10:49:41 196

原创 全面讲解Java NIO(Channel、Buffer和Selector)

1. Java NIONIO的缓冲区Java IO 面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。此外,它不能前后移动流中的数据。如果需要前后移动从流中读取的数据,需要先将它缓存到一个缓冲区。NIO 的缓冲导向方法不同。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。这就增加了处理过程中的灵活性。但是,还需要检查是否该缓冲区中包含所有您需要处理的数据。而且,需确保当更多的数据读入缓冲区时,不要覆盖缓冲区里尚未处理的数据。NIO的非阻塞IO 的各种

2020-05-15 19:35:19 434 1

原创 爬取豆瓣读书-豆瓣成员常用的标签(Python爬虫实战)

前两篇博客,我们介绍了如何对豆瓣读书中用户信息和都是历史记录进行抓取,这一篇博客是一个收尾工作。传送门:爬取豆瓣读书-用户信息页链接(Python爬虫实战)爬取豆瓣读书-用户所有阅读书籍名称、日期和书籍链接(Python爬虫实战)本文适用于利用标签系统(Tagging System)对豆瓣读书用户的读书兴趣建模,对用户进行相关推荐研究工作。import requestsfrom bs4 import BeautifulSoupheaders = { "Host": "book.d

2020-05-12 15:06:11 1140

原创 爬取豆瓣读书-用户信息页链接(Python爬虫实战)

接着上一篇博客(爬取豆瓣读书-用户所有阅读书籍名称、日期和书籍链接),进行对用户信息页链接抓取,采用BeautifulSoup框架我的上一篇博客传送门这篇博客主要是获取大量的用户介绍网页链接,这样结合上一篇博客,就可以获取大量用户的读书信息,供分析豆瓣读书中用户兴趣的相关研究者使用。废话不多说,直接上代码!!!import requestsfrom bs4 import BeautifulSoupimport redef GetUrlList(link): #保存用户信息页链接

2020-05-11 10:20:24 950

原创 天眼查反爬的曲线救国道路-爬取红盾网企业信息(Python爬虫实战)

先在这里给出红盾网抓取企业信息代码,有时间再去研究如果对天眼查进行企业信息抓取,后续更新…import requestsimport timefrom lxml import etreeheaders = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3730.400 QQB

2020-05-09 22:49:32 1400

原创 爬取豆瓣读书-用户所有阅读书籍名称、日期和书籍链接(Python爬虫实战)

获取用户的所有阅读的书籍、日期和链接,是对豆瓣用户画像刻画的基础,本文介绍如何利用BeautifulSoup框架对豆瓣读书用户阅读信息进行抓取。import requestsfrom bs4 import BeautifulSoupimport reheaders = { "Host": "book.douban.com", "Referer":"https://www.douban.com/people/fayolee/collect", 'User-Agent': 'M

2020-05-09 19:42:50 1009 2

转载 进程和线程基础知识必看(常见面试题)

1、线程和进程 线程:线程是进程的一个实体,是CPU调度和分派的基本单元。进程:进程是具有一定独立功能的程序,它是系统进程资源分配和调度的一个独立单元。区别: (1)一个线程只属于一个进程,一个进程包含一个或者多个线程。 (2)进程拥有独立的内存单元,而多个线程共享内存。 (3)进程的创建调用fork或者vfork,而线程的创建调用pthead_create,进...

2020-05-08 17:02:03 572

原创 Java版-经典算法“约瑟夫环问题”(企业高频笔试算法题)

经典算法-约瑟夫环问题(初级版)直接上经典的例题:案例1:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为1的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列(也类似于变态杀人狂问题)。通常解决这类问题时我们把编号从0~n-1,最后结果+1即为原问题的解。求最后一个出列人的编号问题。常见的解法...

2020-05-08 09:30:42 356

原创 在二分法查找中,求中位数的一些坑(左中位数和右中位数)

在二分法查找中,求中位数的一些坑(左中位数和右中位数)@TOC使用二分法查找时,我们经常会通过求中位数,来判断与目标值的大小关系。但是一定要注意!!!若在选择选择中位数时要进行取整迭代,就要选择合适的中位数求法,不能只简单的使用mid=(left+right)>>>1;,会导致出现死循环的情况。常见的有取左中位数和右中位数两种方法,代码如下://左中位数求法mid = ...

2020-05-03 11:56:35 1198 2

原创 Spring之手动配置bean和自动装配bean讲解

传统的手动配置bean相关的准备类Cat类代码public class Cat { public void action(){ System.out.println("miao~"); }}Dog类代码public class Dog { public void action(){ System.out.println("wang~"); }}Person类代码import org.springframewor

2020-06-24 10:43:07 711

原创 JavaWeb之三种创建Servlet方式讲解

本文介绍使用IDEA来实现Servlet的三种方法管理pom.xml依赖jar包<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http

2020-06-20 22:21:37 814

原创 JDBC编程之连接Mysql数据库实现和SQL注入问题讲解(超详细!!!)

1.数据库驱动2.JDBCSUN公司为了简化开发人员对数据库的统一操作,提供了一个Java操作数据库的规范,俗称JDBC。这些规范的实现由具体的数据库生产商去做,开发人员只需要掌握JDBC接口的操作即可。1.所需要的包:java.sqljavax.sql需要导入一个数据库驱动包:mysql-connector-java-8.0.20.jar2.jdbc代码:package jdbcProject;//第一步:导入必须的包import java.sql.*;public cl

2020-06-14 21:32:25 334

原创 Java开发工具-lombok的介绍和使用

Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO),通过注解实现这一目的。在一般情况下,我们通常将一个类中的各个属性设置getter和setter等函数,如下所示(getter和setter):public class User { private int id; private String name; private String pwd; public int getId() {

2020-06-14 10:50:44 167

原创 数据结构学习之并查集

“并查集”是一种常见的数据结构,在互联网大厂的笔试题中也能看到它的身影。在刷LeetCode每日一题过程中,发现这种数据结构的妙处,参考LeetCode官方题解,写了这篇博文,供各位小伙伴们学习使用。并查集的相关知识并查集用于判断一对元素是否相连,它们的关系是动态添加的,这一类问题叫做【动态连通性】问题;支持【合并】与【查询是否在同一集合】的操作;底层结构为【数组】或者【哈希表】,用于表示【结点】指向【父结点】,初始化时指向自己;【合并】就是把一个集合的根结点指向另一个集合带的根结点,只要根结点

2020-06-08 10:29:02 154

原创 JVM-获取最大堆内存

public class Test { public static void main(String[] args) { //返回jvm试图使用的最大堆内存 long max=Runtime.getRuntime().maxMemory(); //返回jvm的总内存 long total=Runtime.getRuntime().totalMemory(); System.out.println("max="+max+"

2020-05-28 21:26:54 410

原创 Java网络编程之TCP文件上传

服务器类-TcpServerDemo02import java.io.*;import java.net.ServerSocket;import java.net.Socket;//TCP文件上传实现-服务器端public class TcpServerDemo02 { public static void main(String[] args) throws Exception { //1.创建服务 ServerSocket serverSocket=n

2020-05-22 20:04:58 161

原创 Java线程协作之线程通信问题

应用场景:生产者和消费者问题假设仓库中只能存放一件产品,生产者生产出来的产品放入仓库。消费者从仓库中取走消费。如果仓库中没有产品,则生产者将产品放入仓库,否则停止生产并等待,直到仓库中的产品被消费者取走为止。如果仓库中放有产品,则消费者可以将产品取走消费,否则停止消费并等待,直到仓库中再次放入产品为止。这里的仓库我们可以理解为一个缓冲区,如下图所示:这种问题可以归为线程同步问题,生产者和消费者共享同一个资源,并且生产者和消费者之间相互依赖,互为条件。对于生产者,没有生产产品之前,要通知消

2020-05-22 16:13:03 155

原创 Java中的复制机制详讲

1. 什么是复制?复制就是将一个对象的引用复制给另外一个对象,目的是进行对象拷贝。通常有以下三种方式:直接赋值浅拷贝深拷贝2. 直接赋值复制直接赋值。在Java 中,A a1 = a2,我们需要理解的是这实际上复制的是引用,也就是说a1 和a2 指向的是同一个对象。因此,当a1 变化的时候,a2 里面的成员变量也会跟着变化。3. 浅复制(复制引用但不复制引用的对象)创建一个新对象,然后将当前对象的非静态字段复制到该新对象,如果字段是值类型的,那么对该字段执行复制;如果该字段是引用类型的话

2020-05-21 21:24:20 309

原创 Java内部类详讲

Java 类中不仅可以定义变量和方法,还可以定义类,这样定义在类内部的类就被称为内部类。根据定义的方式不同,内部类分为静态内部类,成员内部类,局部内部类,匿名内部类四种。1. 静态内部类定义在类内部的静态类,就是静态内部类。public class Out { private static int a; private int b; public static class Inner { public void print() { System.out.println(a); }

2020-05-18 15:29:28 121

原创 关于Java守护线程(Daemon)必须知道的7点知识

定义:守护线程,也称“服务线程”,他是后台线程。守护线程有一个特性,即为用户线程提供“公共服务”,在没有用户线程可服务时会自动离开。优先级:守护线程的优先级比较低,用于为系统中的其它对象和线程提供服务。设置:通过setDaemon(true)来设置线程为“守护线程”。将一个用户线程设置为守护线程的方式是在 线程对象创建 之前 用线程对象的setDaemon 方法。在Daemon 线程中产生的新线程也是Daemon 的。线程则是JVM 级别的,以Tomcat 为例,如果你在Web 应用中启动一个线程.

2020-05-18 09:26:39 208

原创 Java线程基本方法详解

线程基本方法线程相关的基本方法有wait,notify,notifyAll,sleep,join,yield 等。1. wait()函数-线程等待调用该方法的线程进入WAITING 状态,只有等待另外线程的通知或被中断才会返回,需要注意的是调用wait()方法后,会释放对象的锁。因此,wait 方法一般用在同步方法或同步代码块中。2. sleep()函数-线程睡眠sleep 导致当前线程休眠,与wait 方法不同的是sleep 不会释放当前占有的锁,sleep(long)会导致线程进入TIMED

2020-05-17 20:50:24 784

原创 深入讲解Java Map集合

Map集合概述:将键映射到值的对象,一个映射不能包含重复的键每个键最多只能映射到一个值。Map接口和Collection接口的区别:Map是双列的,而Collection则为单列。Map中的键唯一,而Collection子体系Set是唯一的。Map集合的数据结构针对键有效,跟值无关。而Collection集合的数据结构是针对元素有效。1. HashMap(线程不安全)1.1 Java7实现HashMap结构如图所示:Java7中的HashMap 类里面是一个数组,数组中每个元素是一个

2020-05-16 15:50:44 333

原创 全面讲解Java引用

1.什么是引用?简单的说,引用是一个对象别名,与被引用的对象共享同一块内存区域。例如“鹿晗”这个对象,他的原名是“刘壮实”,但两者其实都是指同一个人(内存)。对象在创建时会请求一块内存空间来保存数据,会根据对象大小分配存储空间大小不等的内存区域。在Java中,访问对象时,不会直接访问对象在内存中的数据,而是通过引用去访问。因此,引用也是一种数据类型,类似于C/C++ 语言中的指针。引用定义时在栈中分配内存,引用变量在程序运行到作用域外释。注意:引用可以独立存在,并不一定依赖于一个对象,例如:Strin

2020-05-15 10:03:59 2138

原创 Java位运算的应用(异或运算)-求数组中唯一只出现一次的元素(LeetCode136)

在算法题中,异或运算是一种常用的位运算方法,本文将介绍利用异或运算来求数组中唯一只出现一次的元素。异或运算的三点重要性质如下:任何数与0的异或运算结果等于他本身,即a⊕0=a;任何数与其本身的运算结果等于0,即a⊕a=0;异或运算满足交换律和结合律,即a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b。题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例

2020-05-14 15:20:47 505

原创 JVM内存管理机制详讲

一、JVM的内存区域1.基本概念JVM是可运行Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接的交互。2.运行过程我们都知道Java 源文件,通过编译器,能够生产相应的.Class 文件,也就是字节码文件,而字节码文件又通过Java 虚拟机中的解释器,编译成特定机器上的机器码 。也就是如下:① Java 源文件—->编译器—->字节码文件② 字节码文件—->JVM

2020-05-14 11:39:45 253

原创 二叉树的层序遍历(Java版)-LeetCode102题(每日一题)

二叉树的层序遍历本文更新一种二叉树的遍历方式(层序遍历),来自LeetCode102题,题目来源:LeetCode102题传送门其他二叉树遍历方法传送门如下:遍历二叉树(前序、中序和后续的递归和非递归遍历,绝对简单易懂!!!)二叉树的广度优先遍历和深度优先遍历(Java版)题目详情如下:package LeetCode102;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;

2020-05-13 10:24:46 169

原创 Java数组转为二叉树-由LeetCode236题(求二叉树的最近公共祖先)引出的问题拓展

直接上题目给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]下图是该数组转换成二叉树的形状来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lowest-

2020-05-10 17:31:04 160

原创 Java中Arrays.sort()函数几种常见的用法

Java中Arrays.sort()函数,常用于对数组进行快速排序,原理就是基于快速排序的算法思想快速排序快速排序使用的是分治思想,将原问题分成若干个子问题进行递归解决。选择一个元素作为轴(pivot),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比轴元素小,另外一部分的所有数据都比轴元素大,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。基础知识点:若是基本类型,需要转化为对应的对象类型(如:int转化为Integer

2020-05-09 22:25:01 1442

原创 经典算法-求解最长回文子串问题(返回所有符合条件的子串集合)Java版题解

求解最长回文子串,有一个中心扩展算法思想。模版如下: /*算法思想很好理解,如果一个元素的左右两端也相等,那么就将左指针和右指针向两端移动一位,再来比较当前左右指针的元素是否还相等,如果还相等,则继续移动,否则跳出循环。最后返回能匹配到的回文字符串长度 */ private static int expandAroundCenter(String s, int left, int r...

2020-05-08 11:04:26 186

原创 二叉树的广度优先遍历和深度优先遍历(Java版)

import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Queue;import java.util.Stack;class TreeNode { int val; TreeNode left; TreeNode right; ...

2020-05-07 17:17:38 252

原创 遍历二叉树(前序、中序和后续的递归和非递归遍历,绝对简单易懂!!!)

最详细的二叉树遍历方法,包含递归和非递归遍历方法,适合小白入门!!!/** * 二叉树的前序、中序、后序遍历 * */import java.util.ArrayList;import java.util.List;import java.util.Stack;class TreeNode{ TreeNode left; TreeNode right; int val;...

2020-05-07 16:18:55 178

空空如也

空空如也

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

TA关注的人

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