- 常见的Web攻击手段SQL注入介绍SQL注入,就是在我们执行Sql的时候,拼接了一些不可控的入参,导致执行的sql偏离了我们预期的效果,从而被攻击者所利用。错误代码示例// 错误1 任意拼接sql// 说明:当name值为 1’ or 1=1时,造成注入String sql = “select * from user where name =”+name+" and password="+p... 常见的Web攻击手段SQL注入介绍SQL注入,就是在我们执行Sql的时候,拼接了一些不可控的入参,导致执行的sql偏离了我们预期的效果,从而被攻击者所利用。错误代码示例// 错误1 任意拼接sql// 说明:当name值为 1’ or 1=1时,造成注入String sql = “select * from user where name =”+name+" and password="+p...
- 业务场景查询商品详情页的逻辑比较复杂,有些数据还需要远程调用,必然需要花费更多的时间。编辑假如商品详情页的每个查询,需要如下标注的时间才能完成 那么,用户需要 5.5s 后才能看到商品详情页的内容。很显然是不能接受的。 如果有多个线程同时完成这 6 步操作,也许只需要 1.5s 即可完成响应。 需求产生 Future 是 Java 5 添加的类,用来描述一个异步计算的结果。你可以使用`... 业务场景查询商品详情页的逻辑比较复杂,有些数据还需要远程调用,必然需要花费更多的时间。编辑假如商品详情页的每个查询,需要如下标注的时间才能完成 那么,用户需要 5.5s 后才能看到商品详情页的内容。很显然是不能接受的。 如果有多个线程同时完成这 6 步操作,也许只需要 1.5s 即可完成响应。 需求产生 Future 是 Java 5 添加的类,用来描述一个异步计算的结果。你可以使用`...
- 快速排序1.基本介绍快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列2.思路分析3.需求引入要求:对[-9,78,0,23,-567,70]进行从小到大的排序,要求使用快速排序法... 快速排序1.基本介绍快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列2.思路分析3.需求引入要求:对[-9,78,0,23,-567,70]进行从小到大的排序,要求使用快速排序法...
- 数据结构包括:线性结构和非线性结构。所以博主会通过这两个角度来对线性结构和非线性结构进行梳理归纳。1.稀疏(sparse array)数组需求引入编写的五子棋程序中,有存盘退出和续上盘的功能。分析问题因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据->稀疏数组1.1介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:1)记... 数据结构包括:线性结构和非线性结构。所以博主会通过这两个角度来对线性结构和非线性结构进行梳理归纳。1.稀疏(sparse array)数组需求引入编写的五子棋程序中,有存盘退出和续上盘的功能。分析问题因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据->稀疏数组1.1介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:1)记...
- 本文是学习Java所做的笔记,包括JDK的下载,java基础语法,面向对象的有关内容,异常处理和Java的常用API原是自己记录的笔记,为了更适宜阅读,会不断进行优化修改编辑更羡慕街边咖啡座里的目光,只一闪。便觉得日月悠长、山河无恙。 ——余秋雨 ... 本文是学习Java所做的笔记,包括JDK的下载,java基础语法,面向对象的有关内容,异常处理和Java的常用API原是自己记录的笔记,为了更适宜阅读,会不断进行优化修改编辑更羡慕街边咖啡座里的目光,只一闪。便觉得日月悠长、山河无恙。 ——余秋雨 ...
- 业务场景查询商品详情页的逻辑比较复杂,有些数据还需要远程调用,必然需要花费更多的时间。编辑假如商品详情页的每个查询,需要如下标注的时间才能完成 那么,用户需要 5.5s 后才能看到商品详情页的内容。很显然是不能接受的。 如果有多个线程同时完成这 6 步操作,也许只需要 1.5s 即可完成响应。 需求产生 Future 是 Java 5 添加的类,用来描述一个异步计算的结果。你可以使用`... 业务场景查询商品详情页的逻辑比较复杂,有些数据还需要远程调用,必然需要花费更多的时间。编辑假如商品详情页的每个查询,需要如下标注的时间才能完成 那么,用户需要 5.5s 后才能看到商品详情页的内容。很显然是不能接受的。 如果有多个线程同时完成这 6 步操作,也许只需要 1.5s 即可完成响应。 需求产生 Future 是 Java 5 添加的类,用来描述一个异步计算的结果。你可以使用`...
- @[toc] 前言涉及到BigDecimal类型的比较,最好使用compareTo()方法,不要用equals()方法(除非对精度有要求)。 关键方法:修饰符方法描述BigDecimalcompareTo(BigDecimal val)将此 BigDecimal与指定的BigDecimal进行 比较,小于返回-1,等于返回0,大于返回1 代码测试:import java.math.BigDe... @[toc] 前言涉及到BigDecimal类型的比较,最好使用compareTo()方法,不要用equals()方法(除非对精度有要求)。 关键方法:修饰符方法描述BigDecimalcompareTo(BigDecimal val)将此 BigDecimal与指定的BigDecimal进行 比较,小于返回-1,等于返回0,大于返回1 代码测试:import java.math.BigDe...
- 处理InterruptedException异常时要小心,如果在调用执行线程的interrupt()方法中断执行线程时,抛出了InterruptedException异常,则在触发InterruptedException异常的同时,JVM会同时把执行线程的中断标志位清除,此时调用执行线程的isInterrupted()方法时,会返回false。此时,正确的处理方式是在执行线程的run()方法中捕获 处理InterruptedException异常时要小心,如果在调用执行线程的interrupt()方法中断执行线程时,抛出了InterruptedException异常,则在触发InterruptedException异常的同时,JVM会同时把执行线程的中断标志位清除,此时调用执行线程的isInterrupted()方法时,会返回false。此时,正确的处理方式是在执行线程的run()方法中捕获
- tcp_nodelay参数并不是在操作系统级别进行配置的,而是在TCP套接字上添加tcp_nodelay参数来关闭粘包算法,以便使数据包能够立即投递出去。tcp_nodelay参数主要是对TCP套接字来说的,那对于服务器硬件,如果要使其能够支撑上百万甚至上千万的并发,我们该如何对其进行优化呢? tcp_nodelay参数并不是在操作系统级别进行配置的,而是在TCP套接字上添加tcp_nodelay参数来关闭粘包算法,以便使数据包能够立即投递出去。tcp_nodelay参数主要是对TCP套接字来说的,那对于服务器硬件,如果要使其能够支撑上百万甚至上千万的并发,我们该如何对其进行优化呢?
- new Thread弊端: (1)每次new Thread新建对象,性能差。 (2)线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致死机或OOM。 (3)缺少更多的功能,如更多执行、定期执行、线程中断。 new Thread弊端: (1)每次new Thread新建对象,性能差。 (2)线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致死机或OOM。 (3)缺少更多的功能,如更多执行、定期执行、线程中断。
- AQS内部维护了一个CLH队列来管理锁,线程会首先尝试获取锁,如果失败,就将当前线程以及等待等信息封装成一个Node节点,加入到同步队列SyncQueue,接着会不断循环尝试获取锁,获取锁的条件是当前节点为Head的直接后继节点才会尝试获取锁,如果失败,就会阻塞自己,直到自己被唤醒。而持有锁的线程释放锁的时候,会唤醒队列中的后继线程。基于这些基础的设计和思路,JDK提供了许多基于AQS的子类 AQS内部维护了一个CLH队列来管理锁,线程会首先尝试获取锁,如果失败,就将当前线程以及等待等信息封装成一个Node节点,加入到同步队列SyncQueue,接着会不断循环尝试获取锁,获取锁的条件是当前节点为Head的直接后继节点才会尝试获取锁,如果失败,就会阻塞自己,直到自己被唤醒。而持有锁的线程释放锁的时候,会唤醒队列中的后继线程。基于这些基础的设计和思路,JDK提供了许多基于AQS的子类
- 不可变对象需要满足的条件 (1)对象创建以后其状态就不能修改 (2)对象所有域都是final类型 (3)对象是正确创建的(在对象创建期间,this引用没有溢出) 对于不可变对象,可以参见JDK中的String类 不可变对象需要满足的条件 (1)对象创建以后其状态就不能修改 (2)对象所有域都是final类型 (3)对象是正确创建的(在对象创建期间,this引用没有溢出) 对于不可变对象,可以参见JDK中的String类
- 异常@[toc] 认识异常首先要知道什么是异常(exception)在Java中,将程序执行过程中发生的不正常行为称为异常,异常是一种类型事实上,我们已经接触过一些异常了public static void main(String[] args) { System.out.println(10/0);}这是算数异常,具体一点,就是除零异常public static void main... 异常@[toc] 认识异常首先要知道什么是异常(exception)在Java中,将程序执行过程中发生的不正常行为称为异常,异常是一种类型事实上,我们已经接触过一些异常了public static void main(String[] args) { System.out.println(10/0);}这是算数异常,具体一点,就是除零异常public static void main...
- 其他互联网大厂面试题1:阿里巴巴Java面试题2:阿里云Java面试题-实习生岗3:腾讯Java面试题-高级4:字节跳动Java面试题5:字节跳动Java面试题-大数据方向6:百度Java面试题7:蚂蚁金服Java面试题-中级8:蚂蚁金服Java面试题-高级9:京东Java面试题-中级10:拼多多Java面试题-电商部11:商汤科技Java面试题12:中软国际Java面试题-初级13:唯品会... 其他互联网大厂面试题1:阿里巴巴Java面试题2:阿里云Java面试题-实习生岗3:腾讯Java面试题-高级4:字节跳动Java面试题5:字节跳动Java面试题-大数据方向6:百度Java面试题7:蚂蚁金服Java面试题-中级8:蚂蚁金服Java面试题-高级9:京东Java面试题-中级10:拼多多Java面试题-电商部11:商汤科技Java面试题12:中软国际Java面试题-初级13:唯品会...
- 常见的面试题如下:八种基本数据类型的大小,以及他们的封装类引用数据类型Switch能否用string做参数equals与==的区别自动装箱,常量池Object有哪些公用方法HashMap数据结构是怎样的HashMap是线程安全的吗如何实现线程安全的HashMapHashMap可以动态扩容吗HashMap的HashCode之类的问题HashMap的Put原理HashMap 和 Hashtabl... 常见的面试题如下:八种基本数据类型的大小,以及他们的封装类引用数据类型Switch能否用string做参数equals与==的区别自动装箱,常量池Object有哪些公用方法HashMap数据结构是怎样的HashMap是线程安全的吗如何实现线程安全的HashMapHashMap可以动态扩容吗HashMap的HashCode之类的问题HashMap的Put原理HashMap 和 Hashtabl...
上滑加载中
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
回顾中 -
一个AI团队帮你写代码:华为云码道Agent Space实战2026/06/25 周四 19:00-21:00
张翰文-华为云码道工程师/郭英旭-青软创新科技集团股份有限公司 软件架构师
本场直播聚焦华为云码道Agent Space两大模式:研发办公、代码开发,亲身体验从需求到代码的AI自动化能力。实操演示基于华为 CodeArts CLI,依托 OpenSpec 规格体系从零搭建业务项目。
回顾中
热门标签