- 博客(12)
- 收藏
- 关注
原创 破坏单例模式的方式
单例模式是创建型模式,它目的是使得类的一个对象成为系统中的唯一实例。单例模式的构建有懒汉式、饿汉式、双检锁式、枚举。实现单例的核心是将该类的私有化,是的只能通过该类的内部静态方法获取或者创建对象,无法使用 new 调用构造函数创建对象。普通的单例模式模式并不安全,想要破坏单例模式有多种方法,同时也有对应的处理方式。
2023-01-21 18:07:55
191
原创 Leetcode_3.无重复字符的最长子串
Leetcode_3.无重复字符的最长子串给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注
2022-02-09 01:34:58
240
1
原创 Java8_Optional类
1.Optional作用Optional类JDK8开始引入的,为的是能够更加优雅地处理NullPointerException,优雅地判空和处理空值。Optional对象是一种包装器对象,包装了类型T的对象或者是没有包装任何对象。若是包装了类型T的对象可以认为值是存在的。Optional类以更安全的方式代替了类型T的引用,这种引用要么就是引用某个对象,要么为null。2.Optional的创建使用 Optional.of 、Optional.ofNullable 或 Optional.emptyO
2022-01-22 16:44:22
551
原创 HashMap的底层原理
HashMap的底层原理HashMap在JDK1.8之前是使用数组加链表的形式实现,也称为链表散列。在JDK1.8以后使用的是数组加链表或红黑树组成。HashMap的key通过扰动函数的到hash值后,在通过**(n-1) & hash** 判断存储位置(n为数组长度),若是当前位置以存在元素,则判断该元素的hash值是否与key的相同,若是相同则直接覆盖,若是不同则使用拉链法解决。HashMap的链表和红黑树转换JDK1.8 的HashMap链表长度大于阈值(default 为 8 ),链表
2022-01-17 17:17:03
485
原创 越权漏洞的理解
越权漏洞超出了用户的权限范围但对数据进行了修改且成功的漏洞,就是越权漏洞。通常由于权限控制功能设计缺陷导致。越权漏洞可以分为平行越权和垂直越权。平行越权:是指相同的权限下,不同的用户可以相互修改或者访问数据,则为平行越权也可以叫水平越权。垂直越权:假设用户A权限低于用户B,A可以访问到或者修改到用户B的数据,则为垂直越权。**越权漏洞根源:**开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信在部分步骤中遗漏对权限的判定,或对用户提交的参数未进行充分的权限校验,如订单信息、身份信息到支
2022-01-13 00:03:03
3447
原创 Netty入门案例
何为Netty? Netty是一个基于NIO的客户端、服务器端的编程框架,用于快速开发可维护、高性能的网络服务器和客户端。Netty具有并发高、传输快、封装好等特点,Netty还可以通便编程自定义各种协议,可通过codec来编码或解码字节流。入门案例需求完成一个简单的服务器端和客户端:客户端向服务器端发送Hello Netty服务器端只接收客户端发来的消息服务端public class NettySever { public NettySever(){ //
2022-01-10 16:56:44
382
原创 Java线程(2) 学习笔记
线程安全的三大特性**原子性:**一个或多个操作,要么全部执行并且执行过程不被任何因素打断,要么不执行。**可见性:**一个线程对某个共享变量修改,另外的线程可以立即看到。**有序性:**程序执行的顺序按照代码的先后顺序进行。volatile关键字Volatile是一种轻量级的同步机制1.保证可见性2.不保证原子性 (例如 i++)3.禁止指令重排序防重排序实例化一个对象可以分三个步骤:分配内存空间初始化对象将内存空间的地址赋值给对应的引用但操作系统可以对指令进行重排序:
2021-12-04 10:54:04
208
原创 Leetcode_122(做题记录)
Leetcode_122. 买卖股票的最佳时机 II给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1:输入: prices = [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润
2021-12-01 10:15:47
95
原创 Leecode_1014(做题记录)
Leecode-1014. 最佳观光组合给你一个正整数数组 values,其中 values[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的 距离 为 j - i。一对景点(i < j)组成的观光组合的得分为 values[i] + values[j] + i - j ,也就是景点的评分之和 减去 它们两者之间的距离。返回一对观光景点能取得的最高分。示例 1:输入:values = [8,1,5,2,6]输出:11解释:i = 0, j = 2, values[i
2021-11-30 09:41:24
240
原创 LeetCode_乘积为正数的最长子数组长度(做题记录)
LeetCode题目 1567:乘积为正数的最长子数组长度https://leetcode-cn.com/problems/maximum-length-of-subarray-with-positive-product/给你一个整数数组 nums ,请你求出乘积为正数的最长子数组的长度。一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。请你返回乘积为正数的最长子数组长度。示例 1:输入:nums = [1,-2,-3,4]输出:4解释:数组本身乘积就是正数,值为 24 。
2021-11-29 10:59:48
135
原创 Java线程(1)学习笔记
Java 线程(1)1.什么是线程线程是计算机能过进行运算调度的最小单位,也是程序运行的最小单位,任务调度由时间片论转的调度方式交替运算。2.线程和进程的区别(1)线程是程序执行的最小单位,进程是一个计算过程或者是一个任务。(2)一个进程可以分配多个线程运行。3.线程的状态[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W5C0Oa7c-1637854611967)(/home/yao/下载/线程状态 (1)].jpg)(1)创建状态:当用new操作符创建一个新
2021-11-25 23:47:36
334
原创 TCP学习笔记
TCP协议(控制传输协议)是一种保证数据完整性和可靠性、面向连接、基于字节流的传输层通信协议。在通信的两端各建立一个socket,从而在通信的两端形成网络虚拟链路。TCP被称为面向连接是因为在一个应用进程可以开始向另外一个应用进程发送数据之前,这两个进程必须先进行 "握手”(即它们必须相互发送某些预备报文段,以建立确保数据传输的参数)。TCP连接提供的是全双工服务,例如A进程与另外一台主机的B进程建立了一条TCP连接,那么应用层的数据可以从B进程流向A...
2021-11-23 20:33:41
1449
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人