Java学习
文章平均质量分 87
敲代码的ciery
认真做事,勤于搜索,不畏困难。
展开
-
LeetCode每日一题02.08-02.14
2021.02.08-最长湍流子数组978最长湍流子数组题目描述:摘自:https://leetcode-cn.com/problems/longest-turbulent-subarray/solution/zui-chang-tuan-liu-zi-shu-zu-by-leetcode-t4d8/ /** * 滑动窗口 * @param arr * @return */ public int maxTurbulenceSize(int原创 2021-02-08 17:50:07 · 231 阅读 · 0 评论 -
LeetCode每日一题02.01-02.07
2021.02.01-公平的糖果棒交换888公平的糖果棒交换题目描述:题目解析:原创 2021-02-01 14:21:35 · 341 阅读 · 0 评论 -
LeetCode每日一题01.25-01.31
2021-01.25-由斜杠划分区域959题目描述:在由 1 x 1 方格组成的 N x N 网格 grid 中,每个 1 x 1 方块由 /、\ 或空格构成。这些字符会将方块划分为一些共边的区域。返回区域的数目。题目解析:连通性问题可使用BFS DFS 并查集,因为此题需要的是数目,并非连通的路径,所以推荐使用并查集难点在于将1 x 1的方格根据grid分割为nn份的小方格,一个小方格由四个三角形构成,求区域即求4 * n *n个区域中连通的个数,一个三角形为一个节点,可分别从[向左,向上原创 2021-01-25 15:25:38 · 402 阅读 · 1 评论 -
LeetCode每日一题不定时更新
LeetCode刷题记录2021.01.04-斐波那契数列题目:计算斐波那契数列题目分析:如果直接使用递归,时间复杂度O(2^n),会爆;观察使用递归时间复杂度这么高的原因主要是递归树结点的重复计算,可以考虑将中间结果存入到HashMap集合中,在递归计算前先查看下集合中有没有数据,如果已经有的话则无需递归计算也可以使用动态规划的思想,要求的值为从开头,前两个相加得到结果,在和第二个值相加…不断向后移动知道要求的值的那一位,可以设first=0,second=0,temp=1然后从2开始,一直原创 2021-01-17 16:50:21 · 348 阅读 · 0 评论 -
LeetCode专题学习记录
本着快速积极复习数据结构和算法基础的目的,按照LeetCode的标签,一个个过。根据标签复习总结相关的知识点,每个标签保证10道左右的刷题量(简单程度),目的是确保掌握这个知识点的基本使用方式。数组知识点数组:把具有相同类型的若干元素按有序的形式组织起来,线性表的实现方式之一(另外一个是链表)数组利用索引来记录每个元素在数组中的位置,索引从0开始,即数组A[m]的索引值范围是[0,m-1],可通过索引快速访问数组中的元素,索引指向的是内存地址数组中的元素在内存中连续存储,每个元素占用相.原创 2020-12-04 11:00:44 · 171 阅读 · 0 评论 -
读取配置文件的方法总结
前言在项目中经常会用到从配置文件读取配置的需求,毕竟有些例如ip/端口/文件存储路径等配置,为了代码的复用性和可移植性,最好是能从配置文件读,最大程度避免在代码中写死(不要硬编码,不要硬编码)遇到过好几种从配置文件读取配置的方法,在此做下汇总,方便之后复用~方法一、使用Properties配置类对象获取一般会给一个static静态代码块,在其中实例化好Properties对象,然后定义一个方法,根据key去配置文件中获取对应的配置其中配置文件可以直接写文件名的原因:通过类加载器进行加原创 2020-11-22 16:44:01 · 2671 阅读 · 0 评论 -
有关File的常用操作实现汇总
前言最近参与了一个小项目,主要负责的是文件的跨服务器传送,其中包含按要求对文件进行压缩后传送,实现的时候使用的是Restful接口,实现的过程中遇到了很多关于文件File的操作,感觉实现的时候有思路知道该如何如何实现这个功能,但是具体的代码实现还是得百度搜索,想着之后也会常用不如总结一下,后续遇到相关操作继续更新~常用操作一、MultipartFile转FileSpringBoot中通常前端上传文件到后端,对应接口的文件参数类型为MultipartFile,后端获取到这个Multipa...原创 2020-10-09 21:46:32 · 1460 阅读 · 2 评论 -
Spring Security学习之会话管理
概念会话:session,对于无状态的HTTP 实现用户状态可维持的一种解决方案。 HTTP的无状态特点使得用户给与在服务器交互的过程中,每个请求间没有关联性,即用户的访问没有身份记录,站点无法为用户提供个性化服务。session的诞生解决这个问题(利用session保存用户身份) 服务器通过与用户约定,每个请求都会携带一个id类的信息,使得不用请求间有了关联;id也方便与用户绑定,就可把不同请求归类到同一用户 基于此方案,为了使同一个用户的每个请求都携带一个id,需要一个载体原创 2020-09-10 19:55:32 · 505 阅读 · 1 评论 -
Spring Security学习之OAuth介绍
OAuth概念OAuth:解决了在用户不提供密码给第三方应用的情况下,让第三方应用有权获取用户数据及基本信息的难题 Open Authorization开放授权,是一种资源提供商用于授权第三方应用代表资源所有者获得有限访问权限的授权机制。由于整个授权过程中,第三方应用无需触及用户的密码即可取得部分资源的使用权限,所有OAuth是安全开放的。 例如登录CSDN的时候支持QQ、新浪微博、百度、开源中国和GitHub: 在选择QQ作为第三方登录的时候,会跳转到QQ站点(避免在CSD...原创 2020-09-10 19:41:17 · 764 阅读 · 0 评论 -
Spring Security学习之自动登录与自动注销
前言设置自动登录的原因: 有的网站可能对密码要求比较繁琐(例如必须包含大小写甚至特殊字符),可能下次用户登录的时候会忘记密码,不得不找回密码从而又回到如何设计密码的环节 支持用户对信任的设备使用remember-me功能,直接登录提升用户登录体验 实现基本思路将用户的登录信息保存在用户浏览器的cookie中,当用户下次访问的时候,自动实现校验并建立登录态Spring Security在自动登录中支持两种令牌(检验机制): 用散列算法加密用户必要的登录信息并生成令牌原创 2020-09-10 19:32:03 · 534 阅读 · 0 评论 -
Spring Security学习之密码加密
前言密码安全的重要性: 防止被黑客“拖库” 拖库:数据库术语,从数据库中导出数据。现特指网站遭到入侵后,黑客窃取数据库文件 如果发生拖库:大量用户信息被暴露,面临数据安全和数据隐私双重威胁,尤其如果数据库密码是明文存储 预防错误:数据库加密 如果拖库已经发生,那么密码如果有加密的话可以最大限度的防止被破解从而减少安全损失 提高密码破解难度,让黑客主动放弃高成本破解 另外通知用户登录,跳转手机号/邮箱验证,验证通过话原创 2020-09-10 19:02:30 · 589 阅读 · 1 评论 -
《Java开发手册》学习总结
前言实际开发以来,总是觉得自己的代码不够优雅,但是往往学习的对象只单纯是同组/前人的代码以及自己的惯用编程习惯,后续发现阿里有出《Java开发手册》,便下了华山版进行学习并记录。学习完后上阿里云官网发现后续出了泰山版和嵩山版,进行简单对比后补充。参考资料:《Java开发手册-华山版》《Java开发手册-泰山版》《Java开发手册-嵩山版》下载链接:https://developer.aliyun.com/topic/java20?spm=a2c6h.12873581.0.0.e407转载 2020-08-18 19:28:34 · 2853 阅读 · 0 评论 -
基于Spring AOP的日志功能实现
前言前一段时间学习了Spring,明确Spring的两大特征:IoC控制反转和AOP面向切面编程。后续遇到了系统日志功能,实现的时候使用到了AOP,在此进行总结。IoC:主要是将程序中的对象通过创建bean对象的方式将其加入到Spring容器中,通过依赖注入的方式调用容器中的bean对象,从而降低程序间的依赖性(传统是通过new 方式获取类对象)AOP:面向切面编程,抽取出程序中重复度较高的代码,然后项目中哪里需要使用,就通过反向代理的方式调用这部分重复度高的代码,实现原功能的代码增强。参考原创 2020-08-11 11:34:54 · 3526 阅读 · 0 评论 -
SpringMVC学习简单总结
前言过了下SpringMVC,简单总结一下。知识点一. 基本概念1.1 三层架构表现层:即web层,负责接收客户端请求,向客户端返回响应结果。通常客户端通过http协议请求web层,web需要接受http请求并完成http响应。表现层包括展示层和控制层,展示层负责结果的展示(前端),控制层负责接收请求(servlet)。MVC是表现层的常用设计模型,SpringMVC是MVC模型的一个具体的实现框架业务层:即service层,负责业务逻辑处理,与开发需求息息相关,web层依原创 2020-08-09 16:39:52 · 298 阅读 · 0 评论 -
Spring学习简单总结
前言前一段时间简单学习了Spring,了解核心内容Ioc和AOP,根据学习的东西简单总结记录下。知识点一. 基础概念二. Ioc三. AOP四. 基于Spring的事务控制总结及时汇总总结,学知识要融会贯通,多联想思维。...原创 2020-08-03 23:20:02 · 279 阅读 · 0 评论 -
简易版电商系统实现记录
前言最近手上没啥活了,就干脆把之前一直想练的一个项目拿出来做做,挺有意思的一点就是平时都是自己在别人搭好的项目结构上直接写业务逻辑,当自己从0开始写项目的时候还是遇到了一些问题,也算是更宏观的学习如何做出一个项目。这个项目的角色有用户和管理员,主要涉及到的业务逻辑有用户管理、商品管理、购物车管理、订单管理和支付管理。实际应用中的电商项目肯定很复杂,除了基本的业务逻辑外,如果数据访问量比较大的话还会加redis缓存机制,如果需要离线计算还会加Hadoop框架...这个练手的项目本身是使用SSM框架做的原创 2020-07-25 20:57:24 · 2125 阅读 · 0 评论 -
LocalDateTime学习笔记
前言项目中遇到使用时间处理类LocalDateTime,查询后发现是Java8的新特性,一定程度上可以替代Date类型,进行简单学习并总结相关链接。参考链接1. Java 8 特性:https://ifeve.com/java-8-features-tutorial/2. LocalDateTime类:https://www.yiibai.com/javatime/javatime_localdatetime.htmlhttps://www.cnblogs.com/huanshilang转载 2020-07-09 21:35:43 · 247 阅读 · 0 评论 -
自定义密码规则功能实现
前言最近遇到一个功能需要用户可以自定义系统的密码规则,传统中对于密码规则这块一般都是后端给定常用的密码正则表达式,然后当用户注册的时候填写密码,系统获取密码后会匹配这个给定的正则表达式,如果不匹配会提示用户密码不符合规范。现在如果是可以自定义密码规则,首先不太可能由用户直接写正则表达式,难度较大且正则表达式的正确性无法得到保证。通过分析一般密码的正则表达式发现基本都是数字、大小写字母、特殊字符以及规定密码的长度,所以如果自定义规则的话不妨让用户可以自定义密码中数字、大小写这些字段的长度,然后系统读取原创 2020-07-03 16:08:25 · 2133 阅读 · 0 评论 -
MyBatis学习简单总结
前言知识点1. MyBatis框架简介2. 基于XML和基于注解的开发实例代理模式+daoImpl都说明一下,之后用代理模式3. MyBatis的基本操作xml+注解开发都说明一下4. MyBatis的多表查询操作4.1 多对一4.2 一对多5. MyBatis中的连接池6. MyBatis中的事务7. MyBatis中的缓存总结...原创 2020-07-01 23:46:05 · 280 阅读 · 0 评论 -
定时检查数据是否过期,如过期则更新字段
前言项目中遇到一个检查数据库数据是否过期,并且如果过期的话需要更新字段的功能,当时想到的是数据库的存储过程+定时实现,后续想着很多方法如果能在后端代码实现的话就不用在数据库添加太多功能,所以尝试搜了一下springboot这块是否有这个功能,发现还真有,通过定时任务实现该功能,定时检查是否过期,如果过期更新字段;如果没有过期的则不作任何操作。在此进行简单记录。参考链接1. mysql event实现:https://blog.csdn.net/qq_40425961/article/detail原创 2020-06-22 17:16:37 · 2854 阅读 · 0 评论 -
Spring Security集成Oauth2实现用户身份验证+授权
前言最近的项目有使用到Sping Security和Oauth做用户身份验证和授权机制,所以在网上找了点资料简单学习并写了个小demo,在此进行记录总结。参考链接1. Spring Security了解:https://www.springcloud.cc/spring-security-zhcn.html2. Spring Boot集成Spring Security:https://www.jianshu.com/p/afe6619d9663https://www.cnblogs.原创 2020-06-05 20:06:00 · 5631 阅读 · 0 评论 -
SpringBoot集成Swagger实现JWT验证token
前言最近有个项目涉及用户权限管理,然后之前也有看到的一个小技术JWT,简单学习了解以后结合SpringBoot Swagger实现了一个简单的demo,这个demo主要是实现用户通过用户名和密码登录系统,登录成功以后系统给一个token,之后的用户操作需要验证token,只有token符合要求才能进行其他系统资源访问操作,否则提示权限不够或者token过期有误等提示信息,现将实现过程进行简单记录。参考链接1. Swagger了解:https://www.jianshu.com/p/349e130原创 2020-06-04 19:18:33 · 4218 阅读 · 3 评论 -
组织树结构后端实现
前言最近遇到一个显示树结构的问题,需要将结果以树的形式进行展示,想着这个东西其实很普遍很常见,所以在网上找了两个方法+自己想的一个笨办法,现此进行简单思路说明总结。参考链接https://blog.csdn.net/ldllovegyh/article/details/102692948 https://blog.csdn.net/weixin_39819191/article/details/84180652?utm_medium=distribute.pc_relevant.none-ta原创 2020-06-04 17:31:52 · 1787 阅读 · 0 评论 -
JDBC使用简单记录
前言Java Database Connectivity,Java数据库连接,即Java通过JDBC来操作关系型数据库。(JDBC相当于Java的一个接口,不同关系型数据库通过实例化实现这个接口来具体的实现对数据库的具体CRUD操作)由于开发中常用JDBC,特此进行简单的代码记录,以便之后直接使用。常用代码记录1. JDBC快速入门2. JDBC工具类3. 数据库连接池...原创 2020-04-14 21:38:29 · 211 阅读 · 0 评论 -
Java基础学习总结记录
前言之前基本确定之后的求职方向,但一直学习没有方向没有系统的路线,放假期间捋了一下自己的思路,感觉确确实实知识得系统的学,尤其基础的应用最多的技术知识。Java是本科选修过,但是当时只是单纯考试考完基本上就是平常有项目的时候会用到,没有很系统的知识体系。既然以后大几率是往后端开发去靠近,那完全是有必要把基础夯实,构建完整的知识体系,所以也就利用时间过了一遍JavaSE基础,在此进行简单的记录总...原创 2020-04-03 20:12:42 · 263 阅读 · 0 评论 -
通过GET/POST方式获取第三方接口的数据
前言遇到一个项目,需要通过API去获取数据,API接口的调用方式支持GET和POST。一开始不同这个API具体是个啥,是需要我们自己设计还是说用户给定,后续搜索明确是用户自定义提供API接口,开发人员只需要获取到API的url及调用这个API所需要的必要参数,然后分别以GET/POST方式连接API,通过API获取数据返回即可。这块对我来讲是个新知识点和新的处理方式,所以进行简单记录。参考...原创 2020-03-25 23:59:26 · 12223 阅读 · 0 评论 -
Java学习——斗地主升级版(玩家手牌和底牌顺序输出)
需求三个人斗地主,54张牌(包括大王、小王)。每人按顺序摸牌,最后剩3张底牌,请打印分别从大到小顺序输出三个玩家的手牌以及所剩的底牌。设计表面上看起来同https://blog.csdn.net/qq_38586378/article/details/104780112的逻辑相同,就是准备牌、洗牌、发牌、牌输出,但是需要注意的是加了一个新需求,三名玩家和底牌输出并不是直接输出,而是将摸...原创 2020-03-12 18:34:23 · 606 阅读 · 0 评论 -
Java学习——斗地主
需求设计实现总结原创 2020-03-11 10:06:05 · 472 阅读 · 0 评论 -
JSON学习(二)—— 简单实战篇(使用Jackson实现Java对象、数组与JSON的互相转换)
一、前言之前简单的了解了一下JSON的一些类似JSON是个啥,为什么要有JSON,JSON与XML的区别,JSON的语法规则等基础概念(可跳转学习笔记:https://blog.csdn.net/qq_38586378/article/details/102989550),想着后端尤其在Java Web项目中的话应该是要学会Java与JSON的相互转换的,恰好之前毕设的时候又遇到过这个技术点,...原创 2019-11-10 20:54:04 · 1383 阅读 · 1 评论