如何获取两个LocalDate类型之间间隔多少天 使用以下代码即可 LocalDate nowDate = LocalDate.now(); LocalDate overDate = LocalDate.of(creditBillDTO.getBillYear(), Month.of(creditBillDTO.getBillMonth()), 1); ChronoUnit.DAYS.between(overDate, nowDate);
java之Cookie&Session(八) 会话跟踪技术 包括Cookie与Session;为什么需要会话跟踪? HTTP协议是无状态协议,即不保留用户的任何状态信息,数据提交完成后连接就会关闭。那么就出现一个问题,如果一个文件传到一半,突然断开连接,那下次该怎么继续从断点处传送?服务器如何知道是哪个用户在何处断掉了呢? W3C就提出了:给每一个用户都发一个通行证,无论谁访问的时候都需要携带通行证,这样服务器就可以从通行证上确认用户的信息。通行证就是Cookie Cookie 浏览器访问服务器,如果服务器需要记录该用户的状态,就使用response向
java之Servlet(七) 学习路径 Tomcat 一个web服务器,也是装servlet的容器,要理解各个目录含义,学会使用 使用Servlet写出第一个程序 JavaWeb的标准目录结构,写一个程序和配置,了解继承体系和生命周期 ServletConfig与ServerContext request与response Cookie与Session会话机制 Cookie的有效期如何设置 Cookie如何保存中文 Cookie的不可跨域性是什么意思 使用Cookie来显示用户上次访问的时间 使用Cookie来显示上次浏
java之HTTP集合(六) 对于HTTP我们需要了解什么 Request Method: GET, POST, PUT, DELETE Status Code: 200OK 各个版本的特点:HTTP1.0 HTTP1.1 HTTP/2 HTTP/3 HTTPS的特点 HTTP各版本特点 HTTP1.0: 默认短连接,每次与服务器交互都需要新开连接 HTTP1.1: 最主要的是默认持久连接。只要客户端服务端任意一端没有明确提出断开TCP连接,就一直保持连 接,可以发送多次HTTP请求。 其次就是断点续传(Chunked
java之atomic(五) 为什么有atomic 简单的变量更改不需要频繁使用对象的内置锁,原子变量使用CAS算法(compare and swap) 比较并交换(compare and swap, CAS),是原子操作的一种,可用于在多线程编程中实现不被打断的数据交换操作,从而避免多线程同时改写某一数据时由于执行顺序不确定性以及中断的不可预知性产生的数据不一致问题。 该操作通过将内存中的值与指定数据进行比较,当数值一样时将内存中的数据替换为新的值。 CAS有3个操作数: 内存值V 旧的预期值A 要修改的新值B 当多个线程尝试使用
java之死锁(四) 死锁 死锁只能通过中止并重启方式重新执行 造成死锁原因: 当前线程拥有其他线程需要的资源 当前线程等待其他线程已拥有的资源 都不放弃自己拥有的资源 锁顺序死锁 两个线程试图以不同顺序获得相同的锁;所以如果线程以固定的顺序来获得锁就不会出现顺序死锁 动态锁顺序死锁 // 转账 public static void transferMoney(Account fromAccount, Account toAccount,
java之线程池(三) 为什么使用线程池 线程池可以看做是线程的集合。在没有任务时线程处于空闲状态,当请求到来:线程池给这个请求分配一个空闲的线程,任务完成后回到线程池中等待下次任务(而不是销毁)。这样就实现了线程的重用。 如果没有使用线程池,就需要为每个请求都新开一个线程,虽然可以,但是有缺点: 线程生命周期的开销非常高。每个线程都有自己的生命周期,创建和销毁线程所花费的时间和资源可能比处理客户端的任务花费的时间和资源更多,并且还会有某些空闲线程也会占用资源。 程序的稳定性和健壮性会下降,每个请求开一个线程。如果受到了恶意攻击
java之Java锁(二) 多线程加锁 Synchronized 显式Lock Synchronized 关键字,只要在代码块(方法)添加关键字synchronized,即可以实现同步的功能 本质上是一种互斥锁,Java中每个对象都有一个内置锁(监视器,也可以理解成锁标记),而synchronized就是使用**对象的内置锁(监视器)**来将代码块(方法)锁定的!即锁的使用以对象为单位,一个对象被锁住后,其他线程无法使用该对象内部的代码 修饰普通方法,用的锁是本对象(内置锁) 修饰代码块用的锁是括号内obj(内置锁) 修饰静态方
java之反射(一) 何为反射 简单来说,不使用new来创建对象,而是绕个圈子,拿到java.lang.Class对象,再调用Class对象方法来创建对象。 获取和使用反射方法 /* 下面是我初学反射时做的笔记,应该可以帮到大家,代码我就不贴了。(Java3y你值得关注) */ 想要使用反射,我先要得到class文件对象,其实也就是得到Class类的对象 Class类主要API: 成员变量 - Field 成员方法 - Constructor 构造方法 - Metho
#12.1Python爬虫的进阶之路---百度贴吧漫画资源爬取 代码 #coding:utf-8 import os import re import requests import urllib import json from bs4 import BeautifulSoup as BS class urlmanager(object): def __init__(self): self.new_urls = set() self.old_urls = set() def add_new_urls(self, url
#14 Python爬虫的进阶之路---数据库介绍 SQL语法 两个部分:数据定义语言(DDL)和数据操作语言(DML) 前者用于创建或删除表格,定义索引,规定链接,施加约束 后者用于增删改查 SQL语法对大小写不敏感 primary key 关键词DISTINCT 加在 SELECT之后,用于合并重复值 有条件查找用到where子句 还可以使用and与or以及括号进行合并查找 排序则需要用到ORDER BY语句,默认按照ASC升序,可以改为...
#14.1 MongoDB的安装与简单介绍 MongoDB的下载 MongoDB官网提供了免费的下载地址:https://www.mongodb.com/download-center/community,但下载速度较慢 若需要快速下载,可以使用以下链接:http://www.mongodb.org/dl/win32 一般根据系统选择最新版的msi文件进行下载;官网一般会推荐适合的版本,点击download后进入下一个界面,不需要填任何东西,自动开始下载,但因连接网速问题可能会有延迟。 Windows安装MongoDB与配置 下载完成后,点击msi进
#12 Python爬虫的进阶之路---多媒体文件抽取,存储,邮件与爬虫基本构成 无数据库存储 JSON python利用json模块对json进行编码和解码 编码使用函数dump和dumps dump将python对象编码为json对象并存入fp指定文件;dumps将python对象生成字符串。 dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None...
#11 Python爬虫的进阶之路---BeautifulSoup Python包的镜像安装 在使用pip或conda进行库安装时,由于使用海外服务器下载数据慢,我们可以选择使用国内的镜像站,本文以使用清华镜像源为例 #临时使用镜像源 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package #将镜像源设为默认 #首先升级pip到高于10.0.0版本 pip install -i ht...
Python包的镜像安装 在使用pip或conda进行库安装时,由于使用海外服务器下载数据慢,我们可以选择使用国内的镜像站,本文以使用清华镜像源为例 #临时使用镜像源 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package #将镜像源设为默认 #首先升级pip到高于10.0.0版本 pip install -i https://pypi.tu...
#10 Python爬虫的进阶之路---HTML解析正则表达式 元字符 \b是一个常用的元字符,他代表一个位置,用于指示单词的开始或结束。如我们想要寻找we,忽略大小写我们可能匹配到we,We,Welcome等位置,而\bwe\b则限定了寻找we而不是一个单词中的一部分。 如果我们想要匹配两个单词之间的所有字符呢?可以使用以下方法:\bwe\b.*\bus\b实现了匹配we与us之间的所有字符。其中.表示除换行符外的任意字符,*表示任意长度。 举例:文本we...
#9:Python爬虫的进阶之路---爬虫概述 爬虫基本流程 选取部分种子URL。 放入待抓取URL队列 从队列中读取URL,解析dns并得到主机IP,将URL对应的网页下载下来存入网页库,将URL放入已抓取队列。 分析已抓取URL队列中的URL,从已经下载的网页中分析出其他URL,并和已抓取的URL进行比较去重后放入待抓取队列,循环。 Python中的爬虫 Python3.X将urllib和urllib2整合在一起 Python2.x...
#8:Python爬虫的进阶之路---HTTP HTTP请求过程 请求响应模型,客户端发起请求,服务器回应请求。 无状态协议。同一客户端两次请求相互独立。一次HTTP操作称为一个事务,执行过程分四步: 建立连接,如单击某个超链接 客户端发送请求,请求格式:统一资源标识符(URL)、协议版本号、MIME信息(包括请求修饰符、客户机信息和可能的内容) 服务器收到请求,给予响应信息,格式为一个状态行,包括信息协议版本号、一个成功或错误代码,MIM...
#7:Python爬虫的进阶之路---XPath与JSON XPath XPath是一门在XML中查找信息的语言,用于XML和HTML中通过元素和属性进行导航。 XPath节点 XPath将XML文档视为节点树,包括七种类型节点:元素,属性,文本,命名空间,处理指令,注释,文档(根)节点。 <?xml version="1.0" encoding="ISO-8859-1"?> <classroom> <student&...