自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HashMap源码解析(JDK1.8)

前言java的HashMap实质上是一个哈希表,采用了链地址法处理哈希冲突。本文将从HashMap的存储结构、HashMap重要属性、构造方法以及其它相关方法方面解析,在每一部分中分别掺入对HashMap静态变量的介绍。HashMap的存储结构HashMap的底层数据结构是由数组、链表、红黑树组成的。数组:// HashMap的底层数组transient Node<K,V>[] table;HashMap中的数组又称为桶数组,因为数组中的每个位置都存放...

2020-08-01 15:56:26 249

原创 Java注解详解

11121二点efw

2020-06-13 20:02:08 162

原创 java8新特性之lambda表达式与函数式接口

前言本文的思路是先介绍lambda重要特征并给出实际用例,再介绍lambda与函数式接口的关系引出函数式接口,再叙述函数式接口的相关特点。lambda重要特征1、可选的大括号当方法体内只包含了一个语句时,可以选择省略大括号,方法体末尾不需要分号。如上例,System.out.println("lambda1")语句就没有用大括号括起来,语句末尾也没有分号。如果方法体有多行,就要用{}括起来,末尾也要跟上分号。2、可选的类型声明lambda表达式有类型推断机制,在上下...

2020-06-08 21:26:49 281

原创 深入Java并发编程(四):ThreadLocal与ThreadLocalMap。

前言通常情况下,我们创建的变量是可以被任何线程访问和修改的,但有时线程会希望有专属于自己的本地变量来进行一些操作。ThreadLocal类正是为了满足这一需求而被提出的。ThreadLocal类主要解决的就是对于变量,每个线程都可以有这个变量的副本,在对变量副本读写时都不会对其它的副本造成影响。一、ThreadLocal示例我们准备通过这个实例来论证ThreadLocal修饰的变量确实可以在不同的线程中有自己的变量副本。我们设计一个UserSession类用来存储用户登录信息的bean。.

2020-06-02 17:43:58 198

原创 深入Java并发编程(三):volatile原理

前言我们在前一章了解到了volatile可以保证并发时的可见性和有序性,但对其原理未曾详述,本章就来谈谈volatile具体实现原理。一、volatile如何保证变量的可见性volatile变量在被修改后对其他线程是立即可以得知的。这是由这条规则决定的:当它被一个线程修改后会立即将新值写入主内存的变量里,如果此时有其他线程要使用这个变量,那么就会从主内存中重新读取volatile变量载入到工作内存中,如果不是要使用volatile变量,线程是不会重新读取的。而这条规则反映到底层细节处则是对诸..

2020-06-01 21:02:10 91

原创 深入Java并发编程(一):多线程基础

前言本文主要讲述线程实现、线程状态、线程优先级、守护线程、线程常用API以及线程中断和停止。一、线程实现1、继承Thread类,继承后重写run方法,调用start()方法就可以跑起来了2、实现Runnable接口,实现后一定要重写run方法,然后传参给Thread类的构造函数创建出Thread对象,然后调用start(0方法3、实现Callable接口,与Runnable相比,执行完run方法后有返回值,其它一致二、线程状态线程共有5种状态:1、创建状态:我们创建出一.

2020-06-01 19:41:57 115

原创 深入Java并发编程(二):深入理解JMM

一、前言内存和线程的关系就跟水和????一样,没有内存线程压根跑不起来。而Java内存模型是为了解决不同平台下的硬件和操作系统的内存模型差异而被定义的,以达到java的程序能够在不同平台下都能有一致的内存访问的效果。二、主内存和工作内存JMM规定了内存主要划分为主内存和工作内存。主内存是线程公有的,所有的线程都可以对其进行读写;而工作内存是线程私有的,用来拷贝主内存中的变量。其中主内存中存放共享变量,主要对应的是Java堆中的对象实例,而工作内存对于栈中的部分区域,主要是一些方法参数以及局部变量

2020-06-01 16:23:57 121

原创 ArrayList源码分析

在解析源码前,我们先要认识两个重要的数组函数。它们分别是①、public static native void System.arraycopy(Object srcArray,int srcPos,Object destArray,int destPos,int length);②、public static <T,U> T[] copyOf(U[] original, int newLength, Class<? Extends T[]> newType);...

2020-05-25 15:51:56 130

原创 jmeter.jar启动中出现的报错以及解决方案

在命令行界面首部出现下面提示:WARNING:Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002原因:权限不够。解决方案:关闭该界面,重新以管理员身份运行。...

2019-12-10 09:50:22 524

原创 nginx的简介和安装

Nginx的简介和安装一、Nginx的简介Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。二、Nginx的常用功能①、web缓存...

2019-08-29 22:45:56 1261

原创 SpringBoot项目多模块设计和应用

工具jdk1.8IntelliJ IDEAMaven项目模块主项目: demo-parent子模块: demoweb、demoservie、demodao简介本次我们使用Maven的module形式进行分模块。这里简单介绍Maven的几个属性概念。 groupId 公司或组织...

2019-08-29 22:35:20 1724

原创 SpringBoot修改静态资源映射

简介 SpringBoot默认为我们配置了静态资源的地址转发,我们只需要将静态资源放到/resources/static目录下,就可以直接进行访问。但是这样会向外界暴露出我们的项目结构,不利于项目安全,因此我们本章我们讲解如何修改静态资源路径。默认访问资源文件Spring Boot 使用 WebMvcAutoConfiguration 中的配置以下几个默认地址。...

2019-08-29 22:27:11 1737

原创 SpringBoot上传文件(使用form)

介绍文件上传是企业开发中最常用的功能。本文主要介绍SpringBoot中使用表单上传时单文件上传和多文件上传的操作方式。maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifa...

2019-08-29 22:21:19 2695

原创 SpringBoot整合Mybatis

项目创建和配置1、在创建项目时要在web和SQL中选择这几项,然后完成创建项目2、在项目的pom.xml文件中加入以下依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</arti...

2019-08-29 22:14:09 1235

原创 用Helloworld来阐释SpringBoot的简单与快速

简介spring框架已经盛行多年,然而还是有许多刚入门spring的程序员因为配置文件不熟练而出错导致运行失败或其他五花八门的问题。spring开源组织据此开发了整合了spring框架的全系列组件,对外只是提供maven或gradle的形式引入parent.pom或parent.gradle,让每一个spring项目都是以spring子项目的方式来运行,这样子开发人员的精力可以更多的投入到业务...

2019-08-29 22:04:00 1229

原创 Class文件详解(四)

前情回顾上篇博客中我们讲到了class文件的访问标志、类索引、父索引和接口索引集合。本篇博客我们介绍字段表集合。字段表集合字段表集合是指由若干个字段表组成的集合。对于在类中定义的若干个字段,经过JVM编译成class文件后,会将相应的字段信息组织到一个叫做字段表集合的结构。比如:如果一个类中定义了5个字段,JVM在编译该类时会生成5个字段表,并将字段表集合计数器(fileds...

2019-08-29 20:34:31 1464

原创 Class文件详解(三)

前情回顾上一篇文章中我们详细介绍了常量池,本文我们来介绍Class文件中的访问标志,类索引、父索引和接口索引集合。访问标志在常量池结束以后,紧挨着的两个字节代表访问标志(access_flags)。这个标志用来识别一些类和接口层面的访问信息。我们现在举个实例来说明这个访问标志是如何识别的。Comments.javapackage com.zust.bean;...

2019-08-29 17:55:32 1414

原创 Class文件详解(二)

前情回顾在上一章我们介绍了jvm、class文件和class文件中的魔数、版本号和常量池计数值(见Class文件结构(一))。本章我们来具体介绍常量池。class文件特殊字符串在介绍常量池之前,我们得先介绍一下在class文件中出场率较高的一些特殊字符串。1、简单名称没有类型和参数修饰的方法或字段名称2、全限定名假设一个类的全名是com.example.demo,...

2019-08-29 16:54:07 1500 1

原创 Class文件详解 (一)

Java虚拟机概述了解过java的人大多听说过它的"Write Once,Run Anywhere"口号,java强大的跨平台性让它成为计算机界的中流砥柱。这么强大的跨平台性很大程度上要归功于java虚拟机,它可以将javac编译器编译的class文件在不同平台上解释出来。并且随着Java虚拟机发展到JDK1.7~1.8时,JVM做到了很大程度上的语言无关性,包括Kotlin、Scala...

2019-08-29 11:43:23 1635

转载 WEB服务器与应用服务器区别

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。转载自:https://blog.csdn.net/ma_hoking/article/details/46508559Web服务器(Web Server)通俗的讲,Web服务器的基本功能就是提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL。与客户...

2019-08-13 22:23:04 1201

原创 http请求头host字段作用

host是HTTP 1.1协议中新增的一个请求头字段,能够很好的解决一个ip地址对应多个域名的问题。当服务器接收到来自浏览器的请求时,会根据请求头中的host字段访问哪个站点。举个栗子,我有一台服务器A ip地址为120.79.92.223,有三个分别为www.baidu.com、www.google.com、www.sohu.com的域名解析到了这三个网站上,当我们通过http://www....

2019-08-12 22:34:25 14092 4

原创 客户端发送请求到服务器端回应过程的简单解析

客户端发送请求到服务器端回应过程的简单解析①浏览器会将我们的url中的要访问的域名取出,接下来进行DNS解析②在DNS解析过程中,OS会先后进行以下操作:      1、先检查本地的hosts文件中是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析;     &...

2019-08-12 21:41:34 2570

原创 eclipse编译后可能出现的问题和解决方案

eclipse编译后classes文件夹中未出现class文件可能有多种原因,接下来笔者把四种主要原因及其解决方案分享给大家:1、问题一:eclipse导航栏上的project中的build automatically(自动编译功能)未被选中 解决方案一:将这项功能选中点击clean。2、问题二:项目中导入了某个jar包,那么.classpath文件中将会添加对该jar包...

2019-03-05 09:14:09 1918

原创 对java单态模式应用场景的浅显理解

概述:        实际生活中单态模式的应用场景有挺多的,比如windows的任务管理器、回收站、网站的计数器、应用程序的日志应用。那么存在什么需求时会使用单态模式?答案是在我们仅创建类的一个实例成为我们的最优选择时,例如1、网站的计数器,如果我们创建了多个实例,那么我们难以同步网站的计数情况;2、windows的回收站,多个实例很不方便维护....我们选择让像同类的实力指向同一个内存区...

2018-12-01 16:41:30 1103

原创 java IO之初识InputStream和OutputStream

InputStream和OutStream作为抽象类,派生出了很多子类try(){}语句可以自动补全close()方法。InputStream类中,咱们先实例化一个FileInputStream对象,再传给InputStream引用。read()方法没有参数时将一次读入文件的一个字符,返回值便是文件的字符,当读到文件末尾时,将返回-1,有参数时将文件数据读到byte数组中,并返...

2018-11-14 14:53:34 1271

原创 java IO之IO基础学习--File对象

File类:(弥补了IO流的不足--不能对文件夹进行操作)1、File  fp = new File(),将文件或文件夹封装成对象,要注意的是,构建一个File对象,不会构成对磁盘的操作,也即是,即便传入File构造函数的路径是不存在的,系统也不会报错,只有在使用了File的方法时,才会产生对磁盘的操作;2、方便了对文件和文件夹的操作3、File对象可以作为参数传递给流的构造函数。...

2018-11-14 00:00:10 1122

原创 Java IO学习之初步了解输入类和输出类

Java按照流的方向分为输入类和输出类,按照单位分,则可分为字节流和字符流。字符流和字节流的继承关系: 

2018-11-13 23:33:12 1076

原创 CTFcrackTools的下载与安装

去百度的话搜到的很多链接都是不能安装的,我鼓捣了半天终于装好了,的确是一个不错的解密软件。下面是这个软件的链接:链接:https://pan.baidu.com/s/1bGtcmWhNCtMhg7DD4UN62w 提取码:aizl下了之后点击 begin.bat就可以运行了...

2018-10-23 12:53:21 11558 7

原创 ZCMU2112美食家

【AC代码】: #include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;algorithm&gt;#include&lt;vector&gt;using namespace std;vector&lt;int&gt;memo;int n,a[200000];int max(int a,int b){ retu...

2018-08-02 10:32:10 1242

原创 ZCMU2164去注释

 【AC代码】:#include&lt;iostream&gt;#include&lt;string&gt;using namespace std;int main(){ string str[100001]; int k=0,i=0,j=0,t,q; while(getline(cin,str[i])){ i++; k++; } for(i=...

2018-08-02 10:27:59 1124

原创 ZCMU2165黄金矿工

【初步分析】:这题是一道加了约束条件的01背包问题,约束条件是同一条直线上的黄金必须要按顺序挖。【twice分析】: 约束条件就是假如有c1、c2、c3三个同一直线上的黄金,假设c1&lt;c2&lt;c3,我们要挖c2就必须要挖c1,要挖c3,就必须要挖c1、c2。先给出代码,下面再对代码给出解释。#include&lt;bits/stdc++.h&gt;#define me...

2018-07-31 20:33:49 1166

原创 树状数组详解

树状数组引入:介绍一个东西总要先说它用来干嘛吧。树状数组简单点来说就是在一个数组的n过大时,我们去求这个数组的一段区间和时间复杂度太高,我们无法接受这么高的时间复杂度,因此用了树状数组这么一种结构来简化我们的区间求和复杂度。普通数组时间复杂度为O(n),树状数组为O(logn).初步认识:认识一个事物最直观的还是图啊。所以在这里我们给出一张图来辅助学习。我们在这里记原数组为A[],...

2018-07-29 21:06:21 1477

原创 二分专题题解

 【初步分析】:解题的关键在于找到一个适合的差值,使得比这个差值再大的值,在N个数中无法找到C个数满足。 【思路拓展】:将N个数进行排序,得到最大和最小的数的差值,作为right,0作为left,二分寻找合适的差值,而这个差值如果太大,就让mid = right-1,如果太小,就让mid=left+1,这样最后就能找到合适的差值了。 【给出代码】:#include&lt;iost...

2018-07-28 20:43:18 1042

原创 贪心专题--Max Sum

【初步分析】:这是一个加了约束条件的贪心算法。约束条件:这个序列必须连续不中断。【twice分析】:我们将这样一个约束条件转换成代码逻辑上的约束条件 :1、用sum记录下从起点位置一直累加到i时的值,如果sum小于0,那么清空为0,令起点=i后面的一个数,再开始相加;2、sum不一定是最大的和,我们可以用一个summax表示,在遍历每一个数时,如果sum&gt;summax,我们就让sum...

2018-07-28 16:11:20 1147

原创 ZCMU1206之种树问题

【once分析】 初步判别这道题是求最优化问题,那么可以从动态规划和贪心算法这两方面去思考。【twice分析】这是一个加了约束条件的贪心算法,我们在加上了一个位置的值后就不能再加上相邻位置的值。而我们又无法判断究竟是两边相加的大还是中间单个位置的大,这就需要一个方法去解决。【解决方案】1、首先我们确定我们存放这些数据的容器是一个优先队列,该队列中的优先级我们确定是从数字的从大到小;2、...

2018-07-28 15:11:56 883

原创 优先队列杂谈

优先队列引入优先队列是一种功能强大的队列,我是在做一道排序题时遇到的。它的功能强大在它能够实现自动排序。下面给出代码:#include&lt;iostream&gt;#include&lt;queue&gt;using namespace std;int main(){ priority_queue&lt;int&gt; q; int b; int n,a[10]...

2018-07-28 10:56:44 861

原创 浙江中医药OJ暑期训练五题解

【分析】就是练习一下类的运用吧。直接给代码了:#include&lt;iostream&gt;#include&lt;cstdio&gt;using namespace std;class toy{public:int money(){ return count*price; } toy(int c,int p){count = c,price = p;}priv...

2018-07-27 20:59:48 1508

原创 错误票据问题

【分析】 :这一题的难点在于数据的读入,N行的数据中每一行的数据都是不等长的,所以我们最好使用getchar()的方式读入。简单的分析,就是一共有N行,我们要读入每一行的数据并将它们存入一个数组中去。期间我们需要解决当getchar()为空格和换行符时候的问题。下面给出代码:#include&lt;iostream&gt;#include&lt;algorithm&gt;#inc...

2018-07-27 19:55:39 1337

原创 浙江中医药大学 暑期训练四题解

【解析】这也是我自己第一次刷到dfs的题,不过这题在dfs中应该算是入门题了,话不多说,先上代码吧。  #include&lt;iostream&gt;#include&lt;cstdio&gt;using namespace std;int m,n,ans = 0,a[30];//a[21]就是WA,a[30]就AC了void dnf(int oj,int k){ if(...

2018-07-24 15:14:51 869

原创 动态规划学习一之初步了解动态规划概念

动态规划(Dynamic Programming),简称DP。简介什么是动态规划,我们要如何描述它?动态规划算法通常基于一个递推公式以及一个或多个初始状态。当前子问题将由上一个子问题的解推出。使用动态规划来解题只需要多项式时间复杂度,因此比暴力法和回溯法快很多。DP的基本原理:我们要找到一个状态的最优解,在它的帮助下,去找到下一个状态的最优解。DP的做法通常是自底向顶的。状态是...

2018-07-23 15:35:30 978

空空如也

空空如也

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

TA关注的人

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