09 2020 档案

摘要:本文基于JDK1.8 ThreadLocal是啥?用来干啥? public class Thread implements Runnable { //线程内部局部变量 ThreadLocal.ThreadLocalMap threadLocals = null; //子线程继承父线程的变量 Thre 阅读全文
posted @ 2020-09-26 17:00 天乔巴夏丶 阅读(790) 评论(0) 推荐(3) 编辑
摘要:本文基于JDK1.8 Atomic原子类 原子类是具有原子操作特征的类。 原子类存在于java.util.concurrent.atmic包下。 根据操作的数据类型,原子类可以分为以下几类。 基本类型 AtomicInteger:整型原子类 AtomicLong:长整型原子类 AtomicBoole 阅读全文
posted @ 2020-09-25 22:34 天乔巴夏丶 阅读(480) 评论(0) 推荐(2) 编辑
摘要:CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作。类似于join的操作,可以进行类比: join用于让当前执行线程等待join线程执行结束,如A.join()方法,将不停检查A线程是否存活,如果A存活,则当前线程永远等待。 public class J 阅读全文
posted @ 2020-09-24 23:50 天乔巴夏丶 阅读(246) 评论(0) 推荐(0) 编辑
摘要:几种Executors创建的常见线程池总结 FixedThreadPool 可重用固定线程池数的线程池,任务队列使用的是无界的LinkedBlockingQueue。 FixedThreadPool运行示意图【图片来源《Java并发编程的艺术》】 如果当前运行的线程数小于 corePoolSize, 阅读全文
posted @ 2020-09-24 16:04 天乔巴夏丶 阅读(262) 评论(0) 推荐(1) 编辑
摘要:并发编程三大特性 原子性 一个操作或者多次操作,要么所有的操作全部都得到执行并且不会受到任何因素的干扰而中断,要么所有的操作都执行,要么都不执行。 对于基本数据类型的访问,读写都是原子性的【long和double可能例外】。 如果需要更大范围的原子性保证,可以使用synchronized关键字满足。 阅读全文
posted @ 2020-09-21 18:27 天乔巴夏丶 阅读(471) 评论(0) 推荐(2) 编辑
摘要:说说自己对于synchronized关键字的了解 synchronized关键字用于解决多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。 值得注意的是,在Java早期,JDK1.6之前,synchronized属于重量级锁,效 阅读全文
posted @ 2020-09-21 00:03 天乔巴夏丶 阅读(2122) 评论(2) 推荐(3) 编辑
摘要:进程和线程? 进程? 进程是程序的一次执行过程,是系统运行程序的基本单位,进程是动态的。 系统运行一个程序就是一个进程从创建,运行到消亡的过程。 Java中,启动main函数的时候其实就是启动了一个JVM进程,而main函数所在的线程就是这个进程的主线程。 线程? 线程是一个比进程更小的执行单位。 阅读全文
posted @ 2020-09-18 16:07 天乔巴夏丶 阅读(257) 评论(0) 推荐(1) 编辑
摘要:为什么要用线程池? 池化技术:减少每次获取资源的消耗,提高对资源的利用率。 线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。 使用线程池的好处: 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。当任务到 阅读全文
posted @ 2020-09-18 16:05 天乔巴夏丶 阅读(239) 评论(0) 推荐(1) 编辑
摘要:类加载器 Java虚拟机设计团队有意把类加载阶段中的“通过一个类的全限定名来获取描述该类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的类。实现这个动作的代码被称为“类加载器”(Class Loader)。 对于任意一个类,都必须由加载它的类加载器和这个类 阅读全文
posted @ 2020-09-18 12:57 天乔巴夏丶 阅读(208) 评论(0) 推荐(0) 编辑
摘要:类加载机制:Java虚拟机将描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。 类加载的时机 加载阶段合适开始,《Java虚拟机规范》并没有强制约束,交由虚拟机自己实现。 而初始化阶段,严格规定有且只有以下六种情况,如果类型没有进 阅读全文
posted @ 2020-09-15 16:21 天乔巴夏丶 阅读(154) 评论(0) 推荐(0) 编辑
摘要:强引用 在 Java 中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可能被垃圾回收机制回收的,即使该对象以后永远都不会被用到 JVM 也不会回收。因此强引用是造成 Java 内存泄漏的主要原因之一。 软引用 软引用需 阅读全文
posted @ 2020-09-15 16:18 天乔巴夏丶 阅读(237) 评论(0) 推荐(0) 编辑
摘要:参考于:JavaGuide JVM内存区域 JDK1.8前后,JVM内存区域的变化 一、JDK1.8前 二、JDK1.8之后 线程共享 一、堆 Java 虚拟机所管理的内存中最大的一块,Java 堆是所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象 阅读全文
posted @ 2020-09-15 16:16 天乔巴夏丶 阅读(219) 评论(0) 推荐(0) 编辑
摘要:79. 单词搜索 给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例: board = [ ['A','B','C','E'], ['S','F 阅读全文
posted @ 2020-09-13 23:29 天乔巴夏丶 阅读(150) 评论(0) 推荐(0) 编辑
摘要:这个是不久前在面试的时候遇到的一个问题,当时直接懵了,两个单拎出来,虽然不太完全,但都大概知道可以对请求进行拦截,放在一起比较,可真是头疼。 其实之前面试完就去学习了一波,只不过那个时候没及时总结,现在总结一下,以免日后遇到这类问题又给忘咯。 要理解这类问题,光靠死记硬背可能当时有用,过一阵子就差不 阅读全文
posted @ 2020-09-12 21:36 天乔巴夏丶 阅读(1459) 评论(0) 推荐(2) 编辑
摘要:文章首发于:https://blog.csdn.net/Sky_QiaoBa_Sum/article/details/105042151 Filter过滤器 与Servlet一样,Filter也是一门web开发中的三大核心技术之一。 见名知义,过滤器的功能其实很好理解:我允许你通过,你就能通过,不允 阅读全文
posted @ 2020-09-12 16:11 天乔巴夏丶 阅读(238) 评论(0) 推荐(0) 编辑
摘要:一、SpringMVC简介 参考于:https://www.cnblogs.com/myitnews/p/11565941.html#autoid-1-0-0 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想, 阅读全文
posted @ 2020-09-12 00:15 天乔巴夏丶 阅读(489) 评论(0) 推荐(1) 编辑
摘要:本文是对近期学习知识的一个总结,附带源码注释及流程图,如有不足之处,还望评论区批评指正。 此处感谢javadoop的源码解析,收益匪浅:https://javadoop.com/post/spring-aop-intro 一、AOP、SpringAOP、AspectJ的区别 AOP为Aspect O 阅读全文
posted @ 2020-09-11 17:28 天乔巴夏丶 阅读(900) 评论(2) 推荐(2) 编辑
摘要:啥是循环依赖? 下面这种情况比较常见,A中注入了属性B,B中注入了A属性。 @Component public class A { @Autowired private B b; //在A中注入B } @Component public class B { @Autowired private A 阅读全文
posted @ 2020-09-10 21:01 天乔巴夏丶 阅读(1831) 评论(4) 推荐(4) 编辑
摘要:1、横向流程图源码格式 ​```mermaid graph LR A[方形] -->B(圆角) B --> C{条件a} C -->|a=1| D[结果1] C -->|a=2| E[结果2] F[横向流程图] ​``` 2、竖向流程图源码格式 ​```mermaid graph TD A[方形] 阅读全文
posted @ 2020-09-10 13:17 天乔巴夏丶 阅读(990) 评论(0) 推荐(0) 编辑
摘要:如果对SpringIoc与Aop的源码感兴趣,可以访问参考:https://javadoop.com/,十分详细。 Spring容器的启动全流程 Spring容器的启动流程如下,这是我在看源码过程中自己总结的流程图,如有错误,还望评论区指点: 接下来附上源码: 为什么是refresh方法命名,而不是 阅读全文
posted @ 2020-09-09 16:57 天乔巴夏丶 阅读(7873) 评论(0) 推荐(9) 编辑
摘要:本篇文章参考于【江南一点雨】的公众号。 Authentication 使用SpringSecurity可以在任何地方注入Authentication进而获取到当前登录的用户信息,可谓十分强大。 在Authenticaiton的继承体系中,实现类UsernamePasswordAuthenticati 阅读全文
posted @ 2020-09-08 23:15 天乔巴夏丶 阅读(9894) 评论(0) 推荐(7) 编辑
摘要:SpringSecurity中对过滤器的配置:addFilterBefore SpringSecurity基于Filter技术,通过一系列内置的或自定义的安全Filter,实现接口的认证与授权。我们一定在使用的过程中,定义过WebSecurityConfigurerAdapter的扩展,为程序自定义 阅读全文
posted @ 2020-09-08 21:59 天乔巴夏丶 阅读(36836) 评论(2) 推荐(6) 编辑
摘要:TCP报文结构 源端口和目的端口:唯一确定一条TCP连接,TCP在发送数据前必须在彼此间建立连接,意思是:双方需要保存对方的信息。 序列号seq:占4个字节,用于标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生,给字节编上序号后,就给每一个报文段指派一 阅读全文
posted @ 2020-09-08 17:31 天乔巴夏丶 阅读(234) 评论(0) 推荐(0) 编辑
摘要:转自阮一峰网络日志:http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html JWT是JSON WEB TOKEN的缩写,它是基于 RFC 7519 标准定义的一种可以安全传输的的JSON对象。 跨域认证问题 互联网服务离 阅读全文
posted @ 2020-09-08 17:13 天乔巴夏丶 阅读(324) 评论(0) 推荐(0) 编辑
摘要:来源于Acwing yxc的闫氏dp分析讲解,本文为几道经典例题的笔记 53. 最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,- 阅读全文
posted @ 2020-09-08 16:36 天乔巴夏丶 阅读(503) 评论(0) 推荐(0) 编辑
摘要:349. 两个数组的交集 难度简单227 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4] 说明 阅读全文
posted @ 2020-09-07 14:48 天乔巴夏丶 阅读(389) 评论(0) 推荐(0) 编辑
摘要:347. 前 K 个高频元素 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], k = 1 输出: [1] 提示: 你可以假设给定的 k 总是合理的, 阅读全文
posted @ 2020-09-07 12:40 天乔巴夏丶 阅读(259) 评论(0) 推荐(0) 编辑
摘要:前言 介绍HashMap遍历的几种方式 介绍HashMap迭代删除的几种方式 HashMap遍历的几种方式 一、迭代器遍历 迭代EntrySet @Test public void testEntrySet() { Iterator<Map.Entry<String, String>> iterat 阅读全文
posted @ 2020-09-07 12:18 天乔巴夏丶 阅读(2076) 评论(0) 推荐(0) 编辑
摘要:字符串的翻转问题 344 反转字符串 双指针做法,反转问题的经典的解决方案,利用两个指针,每次相对移动,移动过程中交换,直到指针相遇。 public void reverseString(char[] s) { if(s.length == 0) return; int l = 0, r = s.l 阅读全文
posted @ 2020-09-06 23:08 天乔巴夏丶 阅读(247) 评论(0) 推荐(0) 编辑
摘要:一、虚拟头节点的选取 一般来说,如果对链表进行的操作有可能改变head节点,比如删除head或者移动head,可以对边界条件进行判空。但这种情况的一般做法是:我们创建一个虚拟头节点,无论head如何变化,虚拟头节点是始终存在的。 虚拟头节点的运用十分广泛,我们来看一看具体的运用。 19. 删除链表的 阅读全文
posted @ 2020-09-05 23:51 天乔巴夏丶 阅读(279) 评论(0) 推荐(0) 编辑
摘要:题目描述 784. 字母大小写全排列 给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。 示例: 输入:S = "a1b2" 输出:["a1b2", "a1B2", "A1b2", "A1B2"] 输入:S = "3z4" 输出:["3 阅读全文
posted @ 2020-09-05 00:32 天乔巴夏丶 阅读(340) 评论(0) 推荐(0) 编辑
摘要:本文摘自:《JavaGuide》 redis简介 redis数据库,与传统数据库不同,redis的数据存储在内存中,读写速度非常快。 redis可以应用的方向:缓存,分布式锁,事务,持久化,LUA脚本,LRU驱动事件,多种集群方案。 为什么要用redis 高性能: 假设数据存储在数据库中,从中读取其 阅读全文
posted @ 2020-09-04 22:46 天乔巴夏丶 阅读(181) 评论(0) 推荐(0) 编辑
摘要:chapter1 快速开始 import networkx as nx from matplotlib import pyplot as plt G = nx.Graph() # create a graph object G.add_node('A') # 一次添加一个节点(这里使用字母作为节点的 阅读全文
posted @ 2020-09-04 22:25 天乔巴夏丶 阅读(1502) 评论(0) 推荐(0) 编辑
摘要:深度优先搜索刷题总结 46. 全排列 46. 全排列 给定一个 没有重复 数字的序列,返回其所有可能的全排列。 输入: [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] public List<List<Integer>> fi 阅读全文
posted @ 2020-09-04 19:54 天乔巴夏丶 阅读(847) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示