自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 计算机网络复习1

计算机网络计算机网络定义计算机网络是指将分布在各地,具有独立功能的许多个计算机连接起来,按照某种协议进行通信,并通过网络操作系统进行管理实现资源共享的系统计算机网络系统的组成软件系统:网络系统软件网络应用软件硬件系统:网络基本硬件网络通信设备网络传输介质网络外部设备计算机网络的功能数据通信和信息服务资源共享其它功能集中管理,避免孤岛实现协同计算实现分布式处理数据通信时计算机网络最基本的功能互联网的组成边缘部分核心部分边缘部

2021-12-20 10:08:31 1269

原创 HashMap的hash()方法与tableSizeFor()方法

HashMap源码hash()方法这是扰动函数,目的是为了避免碰撞问题 static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); }从上面的方法可以看到key的hash值得计算方法,key的高16位不变,低16位与高16位进行异或操作作为最终的hash值(h >>&gt

2021-12-12 17:05:52 681

原创 深入理解Java虚拟机4(几种垃圾收集器的原理)

垃圾收集器垃圾收集算法是内存回收的方法论垃圾收集器就是内存回收的具体实现Serial收集器Serial收集器是最基本、发展历史最悠久的收集器,曾经是虚拟机新生代收集的唯一选择这个收集器是一个单线程收集器,但它的单线程的意义并不仅仅说明它只会使用一个CPU或一条收集线程区完成垃圾收集工作,更重要的是在于它进行垃圾收集时,必须暂停其它所有工作线程,直到它收集结束使用复制算法“Stop The World”这项工作实际上是由虚拟机在后台自动发起和自动完成的。在用户不可见的情况把用户正常工作的线程

2021-12-10 20:13:58 915

原创 深入理解Java虚拟机3(垃圾收集算法,HotSpot算法的实现)

垃圾收集算法分代收集理论当前商业虚拟机的垃圾收集器,大多数都遵循了“分代收集”(Generation Collection)的理论进行设计,分代收集名为理论,实际是一套符合大多数程序运行实际情况的经验法则,它建立在两个分代假说上:弱分代假说:绝大多数对象都是朝生夕灭的强分代假说:熬过越多次垃圾收集过程的对象就月难以消亡这两个分代假说共同奠定了多款常用垃圾收集器的一致的设计原则:收集器应该将Java堆划分出不同的区域,然后将回收对象依据其年龄(年龄即对象熬过垃圾收集过程的次数)分配到不同的区域之

2021-12-10 20:09:09 755

原创 深入理解Java虚拟机2(如何判断对象已死?)

对象已死吗在堆里存放着Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还”存活“着,哪些已经”死去“(即不可能再被任何途径使用的对象)引用计数算法很多教科书判断对象是否存活的算法是这样的:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。客观说,引用计数算法的实现很简单,判定效率也很高,在大部分情况下都是一个不错的算法。但是至少主流的Java虚拟机里面没有选

2021-12-10 20:06:00 337

原创 深入理解Java虚拟机1(Java内存区域与内存溢出异常)

Java内存区域与内存溢出异常运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范((JavaSE 7版)》的规定,Java 虚拟机所管理的内存将会包括以下几个运行时数据区域,如图2-1所示。程序计数器程序计数器是一块较小的内存空间它可以看作是当前线程所执行的字节码的行号指示器。在虚

2021-12-07 09:53:39 716

原创 Redis学习笔记4(事件)

事件Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件:文件事件:Redis服务器通过套接字与客户端(或者其它Redis服务器)进行连接,而文件事件就是服务器对套接字操作的抽象。服务器与客户端(或者其它服务器)通信会产生相应的文件事件,而服务器则通过监听并处理这些事件来完成一系列网络通信操作时间事件: Redis服务器中的一些操作(比如serverCron函数)需要在给定的时间点执行,而时间事件就是服务器对这类定时操作的抽象。文件事件Redis基于Reactor模式开发了自己的网络

2021-12-06 09:39:19 229

原创 Redis学习笔记3(RDB持久化)

RDB持久化文章目录RDB持久化RDB文件的创建与载入SAVE命令执行时服务器状态BESAVE命令执行时的服务器状态RDB文件载入时的服务器状态自动间隔性保存设置保存条件dirty计数器和lastsave属性检查保存条件是否满足RDB文件结构databases部分key_value_pairs部分总结我们将Redis非空数据库以及它们的键值对统称为数据库状态举个例子,图10-1展示了一个包含三个非空数据库的Redis服务器,这三个数据库以及数据库中的键值对就是该服务器的数据库状态因为Redis是内

2021-11-29 09:24:42 150

原创 Redis学习笔记2(跳跃表)

跳跃表跳跃表是一种有序数据结构,它通过在每个节点中维持多个指向其它节点的指针,从而达到快速访问节点的目的跳跃表支持平均logNlogNlogN、最坏O(n)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。在大部分情况下,跳跃表的效率可以和平衡树媲美,并且因为跳跃表的实现比平衡树简单,很多程序用跳跃表代替平衡树Redis使用跳跃表作为有序集合键的底层实现之一,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员是比较长的字符串时,Redis就会使用跳跃表来作为有序集合键的底层实现

2021-11-21 20:41:40 1722 2

原创 Redis学习笔记1(SDS,链表,字典)

Redis简单动态字符串Redis没有直接使用C语言传统字符串(以空字符结尾的字符数组)表示,而是自己构建了一种名为简单动态字符串(SDS)的抽象类型,并将SDS用作Redis的默认字符串表示在Redis里面,C字符串只会作为字符串自变量,用在一些无须对字符串值进行修改的地方,比如打印日志当redis需要的不仅仅是一个字符串字面量,而是一个可以被修改的字符串值得时候,Redis就会使用SDS来表示字符串的值,比如在Redis的数据库里面,包含字符串值的键值对在底层都是由SDS实现的。例如:那

2021-11-21 00:09:38 708

原创 MySQL学习笔记3---覆盖索引

覆盖索引通常大家都会根据where条件来创建合适的索引,不过这只是索引优化的一个方面。设计优秀的索引应该考虑到整个查询,而不单单是where条件部分。索引确实是一种查找数据的高效方式,但是MySQL也可以使用索引来获取列的数据,这样就不再需要读取行数据行。如果索引的叶子节点已经包含要查询的数据,那么还有什么必要再回表查询呢?如果一个索引包含(或者说覆盖)所有需要查询的字段的值,我们称之为“覆盖索引”覆盖索引的好处覆盖索引是非常有用的工具,能够极大的提高性能。考虑一下如果查询只需要扫描索引而无需回表,会

2021-11-18 22:40:26 275

原创 MySQL学习笔记2(创建高性能的索引)

创建高性能的索引索引基础索引:是存储引擎用于快速找到记录的一种数据结构。这是索引的基本功能索引对于良好的性能非常关键,当表中数据量越来越大的时候,索引对性能的影响愈发重要。在数据量较小且负载较低时,不恰当的索引对性能的影响可能不明显索引优化重要的原因:索引经常被忽略,有时候甚至被误解,所以在实际案例中经常会遇到又糟糕索引导致的问题。要理解索引是如何工作的,最简单的方法是去看看一本书的索引部分,如果想要在一本书中找到某个特定主题,一般会先去看书的索引,然后找到对应的页码索引的类型索引是存储在引擎

2021-11-13 10:42:36 994 1

原创 LeetCode刷题记录3--电话号码的字母组合

思路dfs深度优先搜索class Solution {public: vector<string> letterCombinations(string digits) { vector<int>res; map<int,string>mp; vector<string>ans; mp[2]="abc"; mp[3]="def"; mp[4].

2021-11-06 13:27:08 94

原创 LeetCode刷题记录2--最接近的三数之和

思路:因为每组输入答案要唯一,所以先排序,然后满足i<j<z,使用双指针,第一层遍历第一个数,然后设置左指针j=i+1,右指针th=n-1。如果a+b+c>=target则th–;反之则j++;代码:class Solution {public: int threeSumClosest(vector<int>& nums, int target) { sort(nums.begin(),nums.end()); .

2021-11-06 12:36:53 83

原创 LeetCode刷题记录1--三数之和

三数之和难点:不可重复优化思路:因为题目要求三元组不能重复,对于一个无序数组来说,筛选不能重复的三元组是很复杂的,所以我们可以先通过快速排序,然后严格满足i<j<z,假如碰到了与上一个一样的就跳过为了减少复杂度,三层变两层,可以采用双指针,因为当a+b+c==0的时候,b增加指针向右,那c必然减少指针向左代码:class Solution {public: vector<vector<int>> threeSum(vector<i

2021-11-06 12:28:49 71

原创 MySQL学习笔记1

MySQL1.MySQL架构与历史1.1 MySQL逻辑架构以下是MySQL逻辑架构图最上层是基于网络的客户端/服务器的工具或者服务都有类似的架构。比如连接处理,授权认证,安全等等。第二层架构是大多数MySQL核心服务功能所在的层,包括查询解析,分析优化,以及所有的内置函数(例如日期,时间,数学和加密函数),跨存储引擎的功能都在这一层实现:存储过程,触发器,视图等第三层包含了存储引擎。存储引擎负责MySQL中数据的存储和提取读写锁读锁:共享的,相互不阻塞的,多个用户在同一时刻可以同时

2021-11-06 12:18:54 376

原创 Linux学习(目录,常用基本命令,基本属性

Linux目录文章目录Linux目录常用的基本命令基本属性/bin:bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。/boot:这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev :dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。/etc:etc 是 Etcetera(等等) 的缩写,这个目录用来存

2021-10-14 22:22:14 109

原创 Educational Codeforces Round 113 (Rated for Div. 2)--C. Jury Meeting

代码思路这是一道排列组合题,稍微推一下公式就能求出,主要是要用到逆元,组合数等方法求解#include <bits/stdc++.h>using namespace std;#define ll long long#define mod 998244353ll jc[200005], in[200005];ll ksm(ll a, ll b) { ll ans = 1; while (b) { if (b & 1)

2021-09-09 20:08:15 131

原创 Educational Codeforces Round 113 (Rated for Div. 2)--B. Chess Tournament

思路只需求出主对角线上半部分,或者下半部分的情况就行,因为另一部分肯定与对称的部分相反用一个二维数组b记录一下情况,和一个一维数组vis表示第i个人是否有赢过判断b[i][j]的值分情况讨论,若a[i]==1或者a[j]==1,则b[i][j]为平局;若a[i]=2且i未胜过一局,则b[i][j]为i胜,若a[j]=2且j未胜过一局,则b[i][j]为i败最后判断一下是否所有为2的人都赢过至少一局,假如否则输出NO,是则输出YES代码#include <bits/stdc++.h&g.

2021-09-09 00:40:48 196

原创 SpringMVC学习笔记(回顾Servlet,RestFul风格,结果跳转方式,数据处理)

回顾Servletservletpackage servlet;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class HelloS

2021-09-08 21:08:10 145

原创 Codeforces Round #729 (Div. 2)--C. Strange Function

Codeforces Round #729 (Div. 2)–C. Strange Function思路满足f(n)=i,即1,2,3…i-1都是n的倍数,即n为1,2,3…i-1的最小公倍数的整数倍思路是i从1开始枚举,求满足f(k)=i等式的k的个数的和(k<=n)当1,2,3…,i的最小公倍数大于n的时候,循环结束,因为n不可能是往后的1,2,3…i+1的最小公倍数的整数倍了如何求k的个数呢,当k为lcm(1,2,3…,i-1)的最小公倍数的倍数且k不为lcm(1,2,3…,i)的

2021-09-07 18:05:51 134

原创 Codeforces Round #742 (Div. 2)–C. Carrying Conundrum

Codeforces Round #742 (Div. 2)–C. Carrying Conundrum思路将n每隔一位拆成两个数,例如n=12345的时候,拆成两个数a和b,a=135,b=24,问题转化为求和等于135乘以和等于24的值,举个例子45+90=135,9+15=24,再每隔一位合在一起变为495+1905=12345#include <bits/stdc++.h>#define ll long longusing namespace std;int main(

2021-09-06 19:57:29 95 1

原创 Codeforces Round #742 (Div. 2)--B. MEXor Mixup

Codeforces Round #742 (Div. 2)–B. MEXor Mixup思路首先知道确定一个异或的数a和异或后的值x满足a^b=x,那么有且只有一个b满足该等式数组的最小长度肯定是大于等于a的,所以先让ans=a首先初始化将1到n的异或的值全都筛选出来保存到一个数组中如果异或的值等于b的话,那么答案就是a,否则,将得到的值与数组中没有出现的最小值(也就是a)异或,假如得到的值等于k,那么ans=n+2,否则ans=n+1#include <bits/

2021-09-06 00:15:52 231

原创 Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2)--C. Compressed Bracket Sequenc

AC代码#include <bits/stdc++.h>#define ll long longusing namespace std;const int N = 10005;ll a[N];int main() { int n; cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; ll ans = 0; for (int i = 1; i &l.

2021-09-01 14:04:28 358

原创 Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2)--B. Take Your Places!

Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2)–B. Take Your Places!William has an array of nn integers a1,a2,…,ana1,a2,…,an. In one move he can swap two neighboring items. Two items aiai and ajaj are considered neighboring if the co

2021-08-30 12:27:18 402

原创 Codeforces Round #741 (Div. 2)--C. Rings

Codeforces Round #741 (Div. 2)–C. RingsSomewhere in a parallel Middle-earth, when Saruman caught Frodo, he only found nn rings. And the ii-th ring was either gold or silver. For convenience Saruman wrote down a binary string ss of nn characters, where the

2021-08-27 12:23:26 150

原创 Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine))--C. Deep Down Below

Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine))–C. Deep Down BelowIn a certain video game, the player controls a hero characterized by a single integer value: power. The hero will have to beat monsters that are also characterized by

2021-08-26 12:43:24 107 1

原创 Codeforces Round #737 (Div. 2)---C. Moamen and XOR

Codeforces Round #737 (Div. 2)—C. Moamen and XORMoamen and Ezzat are playing a game. They create an array aa of nn non-negative integers where every element is less than 2^k.Moamen wins if a1&a2&a3&…&an≥a1⊕a2⊕a3⊕…⊕ana1&a2&a3&…

2021-08-26 12:22:42 154 1

原创 Python爬虫实战项目------爬取天天基金

爬虫实战项目------爬取天天基金功能展示技术语言:pythonBeautifulsoup解析htmljs2py解析JavaScriptpython 爬虫正则表达式提取数据界面设计用的PyQt5功能片段伪装头# headersheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/7

2021-08-17 20:20:10 1722 3

原创 Python爬虫学习(爬虫基础知识,Beautifulsoup的使用)

Python爬虫文章目录Python爬虫爬虫基础知识环境搭配获取一个get请求获得一个post请求超时处理进行伪装(伪装成浏览器爬取网页)Beautifulsoup的使用准备工作Tag标签NavigableStringBeautifulSoupComment文档的遍历文档的搜索字符串过滤正则表达式搜索kwargs 参数text参数limit参数css选择器正则表达式简单使用爬虫基础知识环境搭配# @author VV# @date 2021/8/14 19:34import urlli

2021-08-15 22:39:02 227 1

原创 数据库常见面试题(一)

数据库常见面试题什么是事务:数据库事务是指作为单个逻辑工作单元执行的一系列操作(sql语句),这些操作要么全部执行,要么全部不执行。事务的四大特性原子性:事务中的所有操作是不可再分割的原子单位,要么执行,要么不执行一个事务中的操作,要么全部成功,要么全部失败如果全部失败,就回滚到事务开始前的状态隔离性:一个事务执行的过程中,不应该受到其它事务的干扰当多个用户并发的访问数据库中时,如果操作同一张表,数据库则为每一个用户都开启一个事务,且事务之间互不干扰,也就是说事务之间的并发

2021-08-12 11:41:23 66

原创 Vue学习(五)列表渲染,维护状态,事件处理,表单输入绑定

列表渲染我们可以用v-for指令基于一个数组来渲染一个列表,v-for指令需要使用item in items形式的特殊语法,其中items是源数据数组,而item则是被迭代的数组元素的别名<ul id="example-1"> <li v-for="item in items" :key="item.message"> {{ item.message }} </li></ul>var example1 = new Vue({ el

2021-07-18 22:04:35 548 1

原创 Vue学习(四)计算属性与侦听器,条件渲染

计算属性与侦听器在模板中放入太多的逻辑会让模板过重且难以维护,例如:<div id="app"> {{msg.split('').reverse().join('')}}</div>在这个地方,模板不再是简单的声明式逻辑。你必须看一段时间才能意识到,这里是想要显示变量 msg 的翻转字符串。当你想要在模板中的多处包含此翻转字符串时,就会更加难以处理。所以,对于任何复杂逻辑,你都应当使用计算属性。基础例子<!DOCTYPE html>&lt

2021-07-16 17:04:11 135

原创 Vue学习(三)模板语法

模板语法插值文本数据绑定最常见的形式就是使用"Mustache"语法,(双大括号)的文本插值:<div id="app">message:{{message}}</div>Mustache标签将会被替代为对应数据对象上msg property的值。只要数据对象上msgproperty发生了改变,插值内容也会实时更新通过使用v-once可以执行一次性插值,当数据改变时,插值处内容不会更新。但这会影响到该节点上的其它数据的绑定。<!-- 这个不会发生改变 --&gt

2021-07-15 18:48:41 193 2

原创 Vue学习(二)Vue实例

Vue实例创建一个Vue实例:一个Vue应用通过用Vue函数创建一个Vue实例开始:var vm = new Vue({ // 选项})数据与方法当一个Vue实例被创建时,它将data对象中的所有property加入到Vue的响应式系统中。当这些property的值发生变化时,视图将会产生响应,即匹配更新的值。// 我们的数据对象var data = { a: 1 }// 该对象被加入到一个 Vue 实例中var vm = new Vue({ data: data})/

2021-07-15 13:49:53 225

原创 Vue学习(一)

VueVue是一套用于构建用户界面的渐进式框架第一个Vue程序声明式渲染<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title>

2021-07-15 00:32:40 146

原创 Mybatis学习笔记(二)动态SQL,缓存,延迟加载,逆向工程,PageHelper分页插件

动态SQL根据具体的参数条件,来对SQL语句进行动态拼接。在以前的开发中,由于不确定查询参数是否存在,许多人会使用类似于where 1 = 1来作为前缀,这样,就算要查询的参数为空,也能够正确执行查询,如果不加1 = 1,则如果查询参数为空,SQL语句就会变成SELECT * FROM student where,SQL语句不合法mybatis里的动态标签:if<!-- 示例 --><select id="find" resultType="student" paramet

2021-07-13 19:17:29 153

原创 MyBatis学习笔记(一)

MyBatisParameter用Map替代对象dao:User getUserById2(Map<String,Object> map);xml <select id="getUserById2" parameterType="map" resultType="com.vv.pojo.User"> select * from mybatis.user where id= #{helloid} and name = #{name} </

2021-07-12 22:24:21 148

原创 MyBatis 用Map作为参数,模糊查询

MyBatisParameter用Map替代对象dao:User getUserById2(Map<String,Object> map);xml <select id="getUserById2" parameterType="map" resultType="com.vv.pojo.User"> select * from mybatis.user where id= #{helloid} and name = #{name} </

2021-07-12 15:31:12 241

原创 Spring学习 使用注解开发,代理模式

8. 使用注解开发说明在spring4之后,想要使用注解形式,必须先导入aop的包在配置文件中,还要引入一个context的约束<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context

2021-07-12 13:38:09 258

空空如也

空空如也

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

TA关注的人

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