SpringMVC_高级

SpringMVC_高级 1.文件上传 定义:指的是用户将自己本地计算机中的文件通过网络的形式上传到系统所在服务器上的过程,这个过程称之为文件上传。 注意:文件上传功能不是所有业务系统都需要的。 什么时候需要文件上传功能? 需要用户提交文件时,必须开发文件上传功能。 SpringMVC中如何开发文件上传? 引入文件上传的相关依赖 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> 在系统中开发一个可以进行文件上传的页面,包含一个form表单。在表单中开发一个可以选择本地计算机文件的入口: <form enctype="multipart/form-data" method="post" action="${pageContext.request.contextPath}/file/upload"> 选择文件:<input type="file" name="aa"> <input type="submit" value="提交"> </form> 注意: a.form method提交方式必须是post b.form enctype属性的值 必须为 multipart/form-data(二进制文件) 开发Controller 在控制器方法中使用MultipartFile 进行文件的接收 @Controller @RequestMapping("file") public class FileController { @RequestMapping("upload") public String upload(MultipartFile aa,HttpServletRequest request) throws IOException { System.out.println("文件名:"+aa.getOriginalFilename()); System.out.println("文件大小:"+aa.getSize()); System.out.println("文件类型:"+aa.getContentType()); //文件上传 //1.根据upload相对路径获取部署到服务之后的绝对路径 String realPath = request.getSession().getServletContext().getRealPath("/upload"); //2.将文件上传到upload对应路径 File file = new File(realPath, aa.getOriginalFilename()); aa.transferTo(file); return "index"; } } 在springmvc配置文件中加入文件上传解析器的配置

Linux 安装ffmpeg

1.添加RPMfusion仓库 我的是CentOS 7 如果是其他版本 请参考:https://download1.rpmfusion.org/free/el/ sudo yum install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm 2.安装SDL媒体库 sudo yum install http://rpmfind.net/linux/epel/7/x86_64/Packages/s/SDL2-2.0.10-1.el7.x86_64.rpm 3.安装FFmpeg sudo yum install ffmpeg 如果需要开发的同学 可以在安装开发库 sudo yum -y install ffmpeg-devel 4.查看是否安装成功 rpm -qi ffmpeg [root@iZuf69fe7vrj77jnaq5xn2Z pk]# rpm -qi ffmpeg Name : ffmpeg Version : 3.4.8 Release : 1.el7 Architecture: x86_64 Install Date: 2020年11月04日 星期三 15时05分46秒 Group : Unspecified Size : 2260881 License : GPLv2+ Signature : RSA/SHA1, 2020年07月06日 星期一 20时39分14秒, Key ID 758b3d18f5cf6c1e Source RPM : ffmpeg-3.

WinEdt 和 Sumatra在关联中出现的问题

这里写自定义目录标题 PDF search功能不能用 PDF search功能不能用 PDF search功能不能用 这几个设置完全正确的情况 却不能互联。 问题:请观察Winedt底部是否还有–src ![]没有 请单击,出来即可实现互联。 very easy

SpringMVC_基础

SpringMVC_基础 1.SpringMVC是什么? SpringMVC 是 Spring 基础上开发的控制器框架 ,在现有MVC架构中充当控制器,也是一个典型的MVC框架。 SpringMVC可以替换项目中现有的struts2技术。 2.SpringMVC第一个环境搭建 1)引入依赖 <dependencies> <!--spring框架的相关依赖--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>5.2.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>5.2.9.RELEASE</version> </dependency> <!--springMVC的相关依赖--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.9.RELEASE</version> </dependency> <!--面向切面--> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.5</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.9.6</version> </dependency> <!--servlet 及 jsp--> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl-api</artifactId> <version>1.2</version> </dependency> </dependencies> 2)配置web.

Spring——注解编程

Spring——注解编程 第一章 注解的基本概念 1.1 什么是注解编程 指的是在类或者方法上加上特定的注解(@XXX),完成特定功能的开发。如: @Component public class OrderService{ ... } 1.2 为什么要讲解注解编程 注解开发非常方便:代码简洁,开发速度大大提高。Spring开发的潮流:Spring 2.x引入注解,Spring 3.x完善注解,SpringBoot 普及推广注解编程。 1.3 注解的作用 替换xml这种配置形式,简化配置。替换接口,实现调用双方的契约型。 通过注解的方式在功能的调用者和功能的提供者之间达成约定,进而进行功能的调用。因为注解的应用更为方便灵活,所以在现在的开发中,更为推荐使用注解的方式完成开发。 1.4 Spring注解的发展历程 Spring2.x 开始支持注解编程:@Component、@Service、@Scope等; 目的:提供这些注解只是为了在某些情况下简化xml的配置,作为xml开发的有益增补。 Spring3.x 提供了更多的注解:@Configuration @Bean等; 目的:彻底替换xml配置,基于纯注解编程。 Spring4.x 开始衍生出了SpringBoot。 提倡使用注解完成常用开发。 1.5 Spring注解开发的一个问题 Spring基于注解进行配置后,还能否解耦合? 在Spring框架应用注解时,如果对注解配置的内容不满意,可以通过Spring配置文件进行覆盖。 第二章 Spring的基础注解 这个阶段的注解,仅仅是简化xml的配置,并不能完全替代xml。 2.1 对象创建的相关注解 搭建开发环境 <context:component-scan base-package="com.itheima.ssm"> <!-- 不扫描Controller注解 --> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> 作用:让Spring框架在设置包及其自爆中扫描对应的注解,使其生效。 对象创建相关注解 @Component: 作用:用于替换原有spring配置文件中的<bean>标签,进而创建对象。 注意: id属性 component注解 提供了默认的设置方式 首单词首字母小写 class属性 通过反射获得class内容 @Component细节: 如何显式指定工厂创建对象的id值: @Component("user") Spring配置文件覆盖注解配置内容: 在applicationContext.xml文件中,配置标签,指定id与@Component注解指定的id一致: <bean class="

excel怎么设置打印区域_WPS表格技巧:打印的内容很少,不能打印在纸张中间区域怎么办?...

当我们打印的内容很少,表格很小的时候,总是印偏怎么办? 打印出来表格太小,很不美观怎么办? 一起来看以下的解决方法! 让表格内容居中打印的设置方法 步骤: 1.如果是无框的表格,可以先把单元格内容居中或让单元格自适应内容。 2.选择要打印的单元格区域,点击“页面布局”——“打印区域”——“设置打印区域”。 3.点击“打印预览”,按照实际情况选择“横向(打印)”或“竖向(打印)”,输入缩放比例(数字必须在10与400之间)。(否则出现以下提示) 4.点击“页面设置”,选择“页边距”选项卡,居中方式勾选“水平”和“垂直”。(水平即水平方向居中,垂直即垂直方向居中) 5.最后点击确定即可。 具体操作及效果如下图: 补充说明: 1.如果预览中缩放400%还是觉得表格内容很小,就先修改字号,或拖拽图片改变图片大小,然后再点击打印预览进行调整。 2.如果发现勾选了水平居中和垂直居中以后,表格(内容)还没有居中,可以检查看是否遗漏第1步(单元格内容居中或让单元格自适应内容)和第2步(设置打印区域)。 3.如果发现单元格的内容显示不全,可以检查看单元格大小是否已经适应单元格的内容。

libssh2编译安装及例程

一、下载源代码: 官网:https://www.libssh2.org/ github:https://github.com/libssh2/libssh2 二、编译安装: 1.安装依赖库(选一个即可) OpenSSLLibgcryptWinCNGmbedTLS 2.安装libssh2,生成静态库和动态库 三、例程 #include "libssh2.h" #ifdef HAVE_WINSOCK2_H # include <winsock2.h> #endif #ifdef HAVE_SYS_SOCKET_H # include <sys/socket.h> #endif #ifdef HAVE_NETINET_IN_H # include <netinet/in.h> #endif # ifdef HAVE_UNISTD_H #include <unistd.h> #endif #ifdef HAVE_ARPA_INET_H # include <arpa/inet.h> #endif #ifdef HAVE_SYS_TIME_H # include <sys/time.h> #endif #include <sys/types.h> #include <fcntl.h> #include <errno.h> #include <stdio.h> #include <ctype.h> int main() { unsigned long hostaddr; int sock, i, auth_pw = 1; struct sockaddr_in sin; const char *fingerprint; LIBSSH2_SESSION *session; LIBSSH2_CHANNEL *channel; const char *username = "

python画圣诞树代码-圣诞节!教你用Python画棵圣诞树

原标题:圣诞节!教你用Python画棵圣诞树 | 作者:糖糖甜甜 | 来源:经管人学数据分析(ID:DAT-2017) | 欢迎转载,请注明出处。 如何用python画一个圣诞树呢? 最简单: 1height = 5 2 3stars = 1 4fori inrange(height): 5print((' '* (height - i)) + ('*'* stars)) 6stars += 2 7print((' '* height) + '|') 效果: 哈哈哈哈,总有一种骗了大家的感觉。 其实本文是想介绍turtle库来画圣诞树。 方法一: 1importturtle 2screen = turtle.Screen() 3screen.setup(800,600) 4circle = turtle.Turtle() 5circle.shape('circle') 6circle.color('red') 7circle.speed('fastest') 8circle.up() 9square = turtle.Turtle() 10square.shape('square') 11square.color('green') 12square.speed('fastest') 13square.up() 14circle.goto(0,280) 15circle.stamp() 16k = 0 17fori inrange(1, 17): 18y = 30*i 19forj inrange(i-k):

python恶搞-python—做一个恶搞程序

python—做一个恶搞程序 very easy print("You can't win this game") #你不可能赢这个游戏 n = int(input("Between 1 and 10 type a number(integer)")) #在1到10之间写一个数字(整数) print("Your answer isn't integer or not between 1 and 10,this game is over.") #你的回答不是整数或者1到10之间的一个数字(整数) 输入&输出: Your answer isn’t integer or not between 1 and 10,this game is over. easy while True: n = input("我现在心里想的啥?") print("猜错咯") normal try: ln = [] for i in range(99): n = int(input("Between 1 and 99 choose a number"

内网离线地图

1.第一种瓦片数据源 MapDownloader: 链接:https://pan.baidu.com/s/1Hz__HcA5QhtGmjLNezC_pQ 提取码:6lek GISMysqlToLocalFile: 链接:https://pan.baidu.com/s/1rzVsj_DJxKr6OyvRwve4dg 提取码:pp6f 自测可以使用 教程来自:https://www.cnblogs.com/kanyun/p/8571711.html 使用 Leaflet 加载地图瓦片: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>web 版离线地图测试页面</title> <link rel="stylesheet" href="https://unpkg.com/leaflet@1.4.0/dist/leaflet.css" /> </head> <body> <div id="map" style="width:90%;height:600px;margin-top:30px;text-align:center;margin:0 auto;"> </div> <script src="https://unpkg.com/leaflet@1.4.0/dist/leaflet.js"></script> <script type="text/javascript"> window.onload=function () { var map = L.map('map').setView([34.3195,108.9131], 11); L.tileLayer('./map/{z}/{x}/{y}.png' //瓦片路径 , { minZoom: 1, maxZoom: 18, attribution: '<b style="color:#dddddd">百度地图</b>' }) .addTo(map); }; </script> </body> </html> leaflet更多复杂操作可以查看中文文档: https://blog.csdn.net/YXWik/article/details/103389800 2.第二种瓦片数据源 全能电子地图下载器(破解版) 链接:https://pan.baidu.com/s/1EBa0Ck8UGiFK0G7DCUhw1w 提取码:i8yc 自测可以使用 教程来自:https://blog.csdn.net/qq_41619796/article/details/90241491

vue 设置背景颜色及透明度

如上图,如果是第一张图片,需要在左上角加上灰色背景,白色“封面”字样,背景色需要有透明度。 首先,需要知道rgba() 函数。 rgba() 函数使用红(R)、绿(G)、蓝(B)、透明度(A)的叠加来生成各式各样的颜色。 RGBA 即红色、绿色、蓝色、透明度(英语:Red, Green, Blue、Alpha)。 红色(R)0 到 255 间的整数,代表颜色中的红色成分。。绿色(G)0 到 255 间的整数,代表颜色中的绿色成分。蓝色(B)0 到 255 间的整数,代表颜色中的蓝色成分。透明度(A)取值 0~1 之间, 代表透明度。数值越小,透明度越高。 下面上vue代码: 首先设置父级元素位置position: relative;然后设置子元素位置position: absolute;通过设置left、right、top、bottom来调整位置,然后设置背景色background:rgba(34,34,34,0.5);

element-admin后台管理系统使用时遇到的问题及解决

element-admin后台管理系统 element-admin后台管理系统使用时遇到的问题及解决 1.文件上传 elementUI后台管理系统上传文件时不能直接用action属性,因为还需要有错误回调的提示信息,所以要用http-request来覆盖这一默认的上传行为: 组件中加上http-request属性 <el-upload class="upload-demo" action="" :headers="{'Authorization': header}" :on-preview="handlePreview" :on-remove="handleRemove" :before-remove="beforeRemove" :show-file-list="false" multiple :on-success="handleUploadSuccess" :on-change="handleUploadError" :http-request="uploadFile"> <el-button type="primary" size="mini">导入数据</el-button> </el-upload> headers属性设置请求头,header值通过getToken方法获取token this.header = 'Bearer ' + getToken() 上传给后台的表格要以formData的格式 handleRemove(file, fileList) { console.log(file, fileList) }, handlePreview(file) { console.log(file) }, uploadFile(param) { const _file = param.file if (_file.size > 1024 * 1024) { this.$message({ message: '上传文件超过1M,导入失败', type: 'error' }) } var formData = new FormData() formData.append('file', _file) uploadAgentAccountView(formData) .then((response) => { this.

python中format的用法-Python中format的用法

自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足。那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱。 语法 它通过{}和:来代替%。 "映射”示例 通过位置 字符串的format函数可以接受不限个参数,位置可以不按顺序,可以不用或者用多次,不过2.6不能为空{},2.7才可以。 通过关键字 通过对象属性 通过下标 有了这些便捷的"映射”方式,我们就有了偷懒利器。基本的python知识告诉我们,list和tuple可以通过"打散”成普通参数给函数,而dict可以打散成关键字参数给函数(通过和*)。所以可以轻松的传个list/tuple/dict给format函数。非常灵活。 格式限定符 它有着丰富的的"格式限定符”(语法是{}中带:号),比如: 填充与对齐填充常跟对齐一起使用 ^、<、>分别是居中、左对齐、右对齐,后面带宽度 :号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充 比如 精度与类型f精度常跟类型f一起使用 其中.2表示长度为2的精度,f表示float类型。 其他类型主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制。 用,号还能用来做金额的千位分隔符。 python中format所有用法 平时只用参数匹配,偶尔看到别人的format用法楞住没反应过来,遂记下 #通过位置 print '{0},{1}'.format('hehe',20) print '{},{}'.format('he ... python 中del 的用法 python中的del用法比较特殊,新手学习往往产生误解,弄清del的用法,可以帮助深入理解python的内存方面的问题. python的del不同于C的free和C++的delete. 由于pyth ... python中argparse模块用法实例详解 python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ... python中format函数 python中format函数用于字符串的格式化 通过关键字 1 print('{名字}今天{动作}'.format(名字='陈某某',动作='拍视频'))#通过关键字 2 grade = {'nam ... 【313】python 中 print 函数用法总结 参考:python 中 print 函数用法总结 参考:Python print() 函数(菜鸟教程) 参考:Python 3 print 函数用法总结 目录: 字符串和数值类型 变量 格式化输出 p .

小白第一次使用git仓库记录

1,在GitHub创建一个远程仓库,使用New repository填好仓库名称后,点击create repository 2,在本地项目的根目录中右键打开Git Bash,使用git init初始化本地仓库。 3,添加远程仓库 git remote add future + 地址,(本地仓库与远程仓库的关联)。 future 为远程主机名(仓库名),可自定义,对应地址有HTTPS和SSH两种方式,推荐使用SSH方式 此处易出现以下情况: 关于ssh秘钥权限被拒绝的解决方案: 关于SSH秘钥权限被拒绝的解决方案 关于ssh_config和sshd_config的区别: 文件ssh_config与文件sshd_config的区别 4,git push future master把本地库的所有内容push到远端主分支 master(本地主分支名) 将本地的master分支推送到future主机的master分支。如果后者不存在,则会被新建 master分支为主分支一般不进行开发,要新建开发分支dev 坑: 本地仓库和远程仓库进行远程同步,首次向远程同步代码时出现问题 error: src refspec master does not match any error: failed to push some refs to 'git@github.com:xxxxxxxx/xxx.git' 解决方案: 解决已上报错原文地址 5,git checkout -b dev 创建开发分支 6,git push future dev (push到远端开发分支) 尽量不要在dev开发分支上直接开发 7,git checkout -b zfy (创建自己的分支,开发完毕后再合并到dev分支) 8,工作完成git status 查看修改的内容 9,提交代码git add . 全部提交

VRay4.2 for 3dsMax2013-2020

软件简介 VR4.2渲染器,是由保加利亚的知名渲染器开发商ChaosGroup公司推出的最新版渲染引擎。VR4.2渲染器是以插件的安装方式应用于3dsMax、Maya、SketchUp等三维软件中,不管是室内外空间表现、工业产品表现、游戏场景表现还是角色造型表现,VR4.2渲染器都能轻松应付。跟之前的版本相比,VR4.2渲染器的渲染速度得到了很大地提升,并且进行了大量地改进,比如全新的快速视口交互式产品渲染IPR,用户可以边渲染边工作,使工作更加高效。还有全新的光晕和光芒镜头特效,以及更快更准确的V-RayGPU环境雾气采样,使用户可以快速增加场景的层次感。这里提供的是VRay4.2 Next for 3dmax2013-2020英文破解版64位下载地址,大家可以下载下来慢慢体验。 软件特色及功能介绍 VRay4.2Next for 3dmax特色: 1、改进的卷帘快门 模拟数字视频和手机摄像头中常见的扭曲运动模糊效果。 2、改进的V-RAYCLOUD云渲染 改进的VRay场景导出,支持更多功能在VRayCloud的渲染。 3、改进的GPU色散 色散效果现在支持V-RayGPU,渲染高度准确的光线折射色散效果。 4、改进的场景智能分析 VR4.2渲染器的场景智能分析带来了更快的光线追踪速度,噪点更少的采样和更准确的渲染,使我们的工作更智能,效率更高 5、改进的直接光照渲染元素 VR4.2渲染器的直接光照通道提供了更加稳定的,完美的运算结果,并且不受灯光采样质量的影响,此外还对自适应穹顶灯光增加了支持。 VRay4.2Next for 3dmax功能介绍: 1、新增头发闪光参数 V-Ray物理头发材质增加了闪光参数,用户可以更好地控制高光效果。 2、GPU小块式渲染多 GPU同时工作,在工作站和分布式渲染上表现更快速,而且支持Cryptomatte渲染元素。 3、GPU快速雾气 VR4.2渲染器拥有更快以及更准确的V-RayGPU环境雾气采样,帮助您快速增加场景的层次感。 4、全新的镜头特效 VR4.2渲染器提供了全新的光晕和光芒镜头特效,用户可以彻底重新设计,更快更准确。 5、增强的颜色校正 VFB颜色校正【包括背景和LUT】可以和最终结果一并保存为raw.vrimg或者OpenEXR文件。还可以调整LUT强度。 6、全新视口IPR,增强的交互性 VR4.2渲染器拥有全新的快速视口交互式产品渲染IPR,用户可以边渲染边工作,而且V-RayCPUIPR现在交互更快,并且支持大气效果。 安装说明 1.以下以2020版安装为例,安装前需要卸载之前的vray版本并且删除之前的破解文件, 比如 vray201X.dlr, vray_zzz201X.dll, LastVRay.dlr, BlackStorm.dlr and etc.(之前的破解文件不删除会导致崩溃)。 2.将下载压缩包解压,右键点击“vray_adv_42001_max2020_x64”选择“以管理员身份运行”。 3.勾选“接受许可协议”点击“Next”. 4.软件会自动识别3dsmax的安装路径,直接点击”Install Now"如果识别不到需要自己手动选择路径,点击"Customize",选择好路径之后点击"Install Now"。 5.取消勾选上面两个选项,点击“Finish”。 6.安装许可证服务,点击“I Agree” 7.点击“Install Now” 8.点击“Skip”跳过,之后点击“Finish”完成安装。 9.在桌面上右键点击3dsmax快捷方式,选择“打开文件所在位置”,然后进入“Plugins”文件夹。 10.然后将破解补丁文件夹中的“vray_v42000_fix.dlr”文件复制到上一步刚打开的plugins文件夹中,只有2020版有汉化包要汉化的话把汉化补丁plugins中的文件也复制到这里面然后点击替换(半汉化)。 11.然后将补丁文件夹中的“vray_v42000_max_fix.dll”复制到默认路径“C:\Program Files\Chaos Group\V-Ray\3ds Max 2020\bin\plugins”中。 12.打开3dsmax,点击vray工具栏的水壶图标后点击“是”,就可以启动vray渲染了。 获取方式 https://u9baoku.xyz/tag/vray 链接容易被屏蔽,可以在公众号后台回复:vray 文章来自公众号:U9软件宝库

c++ 语言三角形判断

#include <iostream> using namespace std; int main() { float a,b,c; cout << "请输入三角形的三条边:" << endl; cin>>a>>b>>c; if(a+b>c&&a+c>b&&b+c>a){ if(a==b&&b==c){ cout << "三条边可以构成一个等边三角形" << endl; }else if(a==b||a==c||b==a){ cout << "三条边可以构成一个等腰三角形" << endl; }else{ cout << "三条边可以构成一个三角形" << endl; } }else{ cout << "三条边不可以构成一个三角形" << endl; } return 0; }

[链表]3.判断给定的链表中是否有环 扩展: 你能给出空间复杂度O(1)的解法么?[网易互娱,中国移动考过]

码字不易,记得点赞加收藏 题目:.判断给定的链表中是否有环 扩展: 你能给出空间复杂度O(1)的解法么 知识点:快慢指针 1.快慢指针的妙用 我们先来简单介绍一下何为快慢指针。快慢指针就是定义两根指针,移动的速度一快一慢,以此来制造出自己想要的差值。这个差值可以让我们找到链表上相应的节点。 如果现在对这里的简介不是很理解,没有关系,我们一起来看看如下的几个例子。相信看完后,就会明白了。 1.1 找中间值 一般的思路是:先遍历一次链表,记录住一共有多少个节点,然后,再次遍历找寻中点。 利用快慢指针,我们来看看这个问题会变成什么样。思路如下:我们把一个链表看成一个跑道,假设a的速度是b的两倍,那么当a跑完全程后,b刚好跑一半,以此来达到找到中间节点的目的。 如下图,最开始,slow与fast指针都指向链表第一个节点,然后slow每次移动一个指针,fast每次移动两个指针。 1.2 判断链表中的环 还是把链表比作一条跑道,链表中有环,那么这条跑道就是一条圆环跑道,在一条圆环跑道中,两个人有速度差,那么迟早两个人会相遇,只要相遇那么就说明有环。 为了不失一般性,我们在环上加了额外的两个节点,我们可以想象一下,只要两个指针跑进了环里,那么因为存在速度差,他们之间的距离总会由远及近,然后相遇,在远离。像极了我们人世间某些人在你生命中匆匆而过的感觉。 代码如下: /** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public boolean hasCycle(ListNode head) { //解法1.快慢指针 if(head == null)return false; //定义快慢指针 ListNode fastNode = head; ListNode slowNode = head; while(fastNode !

github上标星70.5k,贼火的Java面试突击手册,不看就真的亏了

Github作为程序员们的后花园,一直以来都是程序员最喜欢逛逛、学习的地方,小编也不例外,最近看到一份Java面试突击手册,已经标星70+K了,很是惊讶,看了一下,觉得知识点整理的非常的详细,也不愧能获得这么多星,资料已被整理好,发放福利给朋友们! 需要这份GitHub上最火的Java面试突击手册的朋友文末自取! 面试前得搞清楚技术⾯可能会问哪些⽅向的问题 你准备⾯试的话⾸先要搞清技术⾯可能会被问哪些⽅向的问题吧! Java基础+集合+多线程+JVM Java基础 Java 基本功Java 语法数据类型方法(函数)Java 面向对象集合多线程文件与I/O流 Java集合 多线程 JVM 计算机基础 计算机网络 数据结构 算法 操作系统 数据库面试题总结 MySQL Redis 常用框架面试题总结 Spring面试题总结 MyBatis面试题总结 Kafka面试题总结 Netty 面试题总结 优质面经 五面阿里,终获offer 蚂蚁金服实习生面经总结 Bigo的Java面试,我挂在了第三轮技术面上......... 2020年字节跳动面试总结 2019年蚂蚁金服、头条、拼多多的面试总结 微服务/分布式 真实大厂面试现场 目录大纲: 需要这份GitHub上贼火的Java面试突击手册的朋友文末自取! 以上就是这份Java面试突击手册的内容,感兴趣的朋友可以加下方小助理VX来免费领取!

用java的LinkedHashMap实现LRU

package LRU; import java.util.*; /** * LRU class * * @author wsy * @Date 2020/10/20 18:50 */ public class LRU extends LinkedHashMap { private static float LOAD_FACTOR = 0.75f; private static int INIT_CAPACITY = 3; private float maxCapacity; public LRU(int maxCapacity){ super(INIT_CAPACITY,LOAD_FACTOR,true); this.maxCapacity = maxCapacity; } @Override /** * 如果当前该函数返回true,表示应该删除EldestEntry。否则不删,继续扩容。 */ protected boolean removeEldestEntry(Map.Entry eldest) { if (size() > maxCapacity){ return true; } return false; } public static void main(String[] args) { LRU cache = new LRU(3); cache.

Makefile中$(SRC:%.c=%.o)的含义

gnu make工具的Makefile中$(SRC:%.c=%.o)的含义:将SRC变量中所有以.c结尾的文件名替换成对应的以.o结尾的文件名,然后赋回给SRC。