07 2021 档案
摘要:这里主要是因为最近使用jdbc连接数据库时,发现相比之前一般的连接过程,现在竟然不用加载驱动也可以了。这里研究记录下。 JDBC JDBC是一个连接数据库的Java API,包含了相关的接口和类。 但是,他不提供针对具体数据库(MySQL、MS、Oracle)的实际操作,而只是提供了接口,以及调用框
阅读全文
摘要:地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。 一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+
阅读全文
摘要:一 几个常见的对比 1 Runnable vs Callable Runnable自 Java 1.0 以来一直存在,但Callable仅在 Java 1.5 中引入,目的就是为了来处理Runnable不支持的用例。 Runnable 接口不会返回结果或抛出检查异常,但是**Callable 接口*
阅读全文
摘要:使用线程池的好处 池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http 连接池等等都是对这个思想的应用。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。 线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。 这里
阅读全文
摘要:给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 例
阅读全文
摘要:1.Atomic原子类概述 Java1.5的Atomic包名为java.util.concurrent.atomic。 这个包提供了一系列原子类。 这些类可以保证多线程环境下,当某个线程在执行atomic的方法时,不会被其他线程打断,而别的线程就像自旋锁一样,一直等到该方法执行完成,才由JVM从等待
阅读全文
摘要:1.synchronized 关键字 1.1.说一说自己对于 synchronized 关键字的了解 1.2. 说说自己是怎么使用 synchronized 关键字 1.3. 构造方法可以使用 synchronized 关键字修饰么? 1.3. 讲一下 synchronized 关键字的底层原理 1
阅读全文
摘要:Java 并发基础常见面试题总结 1. 什么是线程和进程? 1.1. 何为进程? 1.2. 何为线程? 2. 请简要描述线程与进程的关系,区别及优缺点? 2.1. 图解进程和线程的关系 2.2. 程序计数器为什么是私有的? 2.3. 虚拟机栈和本地方法栈为什么是私有的? 2.4. 一句话简单了解堆和
阅读全文
摘要:什么是重入锁? 通常情况下,锁可以用来控制多线程的访问行为。 那对于同一个线程,如果连续两次对同一把锁进行lock,会怎么样了? 对于一般的锁来说,这个线程就会被永远卡死在那边,比如: void handle() { lock(); lock(); //和上一个lock()操作同一个锁对象,那么这里
阅读全文
摘要:所谓重入锁,指的是以线程为单位,当一个线程获取对象锁之后,这个线程可以再次获取本对象上的锁,而其他的线程是不可以的。 synchronized 和 ReentrantLock 都是可重入锁。 可重入锁的意义在于防止死锁。 可重入锁简单演示 什么是 “可重入”,可重入就是说某个线程已经获得某个锁,可以
阅读全文
摘要:线程的开销 : 线程的创建和销毁 线程的上下文切换和调度 线程的同步 多线程的内存模型: 线程独有的工作内存(线程缓存用于提高效率) 所有线程共享的主内存 线程读取在主内存的成员变量(即共享变量)的过程: 线程的工作内存会去读取主内存的成员变量并保存副本 线程在工作内存中修改副本 将修改后的副本的值
阅读全文
摘要:1.背景: countDownLatch是在java1.5被引入,跟它一起被引入的工具类还有CyclicBarrier、Semaphore、concurrentHashMap和BlockingQueue。 存在于java.util.cucurrent包下 2.概念 countDownLatch这个类
阅读全文
摘要:目录 一.对ThreadLocal的理解 二.深入解析ThreadLocal类 三.ThreadLocal的应用场景 一.对ThreadLocal的理解 ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。 可能很多朋友都知道ThreadLocal为变量在每
阅读全文
摘要:【强制】SimpleDateFormat 是线程不安全的类,一般不要定义为 static 变量,如果定义为 static,必须加锁,或者使用 DateUtils 工具类。 怎么理解,这里记录下。 SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化
阅读全文
摘要:线程池解决了两个不同的问题: 提升性能:它们通常在执行大量异步任务时,由于减少了每个任务的调用开销,并且它们提供了一种限制和管理资源(包括线程)的方法,使得性能提升明显; 统计信息:每个ThreadPoolExecutor保持一些基本的统计信息,例如完成的任务数量。 为了在广泛的上下文中有用,此类提
阅读全文
摘要:ThreadPoolExecutor提供了四个构造方法: 我们以最后一个构造方法(参数最多的那个),对其参数进行解释: public ThreadPoolExecutor(int corePoolSize, // 1 int maximumPoolSize, // 2 long keepAliveT
阅读全文
摘要:【强制】获取单例对象需要保证线程安全,其中的方法也要保证线程安全。 【强制】创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。 【强制】线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。 【强制】线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecu
阅读全文
摘要:这里是使用 CookieContainer 获取 到 Cookie string contentUrl = "https://home.cnblogs.com/u/xinjian/"; HttpWebRequest reqContent = (HttpWebRequest)WebRequest.Cr
阅读全文
摘要:当maven需要到的依赖jar包不在本地仓库时, 就需要到远程仓库下载 . 这个时候如果mavensetting.xml中配置了镜像 , 而且镜像配置的规则中匹配到目标仓库时 , maven认为目标仓库被镜像了, 不会再去被镜像仓库下载依赖jar包, 而是直接去镜像仓库下载. 简单而言, mirro
阅读全文
摘要:mvn clean package -Dmaven.test.skip=true 可以添加 -s setting.xml路径 用来指定使用哪个setting.xml文件。 https://maven.apache.org/guides/getting-started/index.html
阅读全文