自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(177)
  • 收藏
  • 关注

原创 Tomcat入门

JavaEE:Java语言在企业级开发中使用的技术规范的总和,一共规定了13项大的规范Tomcat:web服务器软件下载:http://tomcat.apache.org/安装:解压压缩包即可。注意:安装目录建议不要有中文和空格卸载:删除目录就行了启动:bin/startup.bat ,双击运行该文件即可访问:浏览器输入:http://localhost:8080 回车访问自己http://别人的ip:8080 访问别人可能遇到的问题:黑窗口一闪而过:..

2021-06-01 14:50:23 141

原创 二、GitHub远程仓库

1、SSH协议推送项目到远程仓库复制公钥到gitbub中配置在repo1右键使用命令行窗口执行命令使用乌龟在repo1目录右键 选择 git同步2、HTTPS推送执行推送的时候需要Access Token 需要在github中获取3、拉取远程查库中的项目3.1 SSH3.2 HTTPS在clone-repos中右键选择git克隆4、修改部分文件提交到远程仓库添加 hello3 到本地版本库在repo1右键选择 git同步使用htt

2021-03-27 15:01:02 176

原创 一、Git入门

1、创建本地仓库使用图形化界面使用命令行使用乌龟2、添加文件或者项目到本地仓库需要在本地仓库同目录下

2021-03-27 12:52:05 171

原创 SpringBean生命周期及其扩展点

@Componentpublic class MyBeanPostProcessor implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println("BeanPostProcessor--->postProcess

2020-09-09 08:22:25 215

原创 spring事务

public interface IUserService { void update();}@Servicepublic class UserService implements IUserService { @Autowired UserMapper userMapper; @Autowired RoleMapper roleMapper; @Transactional public void update() { Us

2020-08-31 22:39:31 99

原创 Callable接口使用demo

public class MyCallableTask implements Callable<String> { int i; public MyCallableTask(int i) { this.i = i; } @Override public String call() throws Exception { Thread.sleep(1000); return Thread.currentThr

2020-08-27 20:23:55 203

原创 浅拷贝与深拷贝

浅拷贝public class ShallowCopy { public static void main(String[] args) throws CloneNotSupportedException { Teacher teacher = new Teacher("张三", 20); Student student1 = new Student("李...

2020-06-15 20:15:49 134

原创 取余与取模

/** * 取余 * x % y = z * z 与x 同号 */ @Test public void test3() { System.out.println(5 % 2); //1 System.out.println(-5 % 2); //-1 System.out.println...

2020-06-15 20:15:22 125

原创 Comparable与Comparator

public class ComparableTest { @Test public void test1() { Person p1 = new Person(18, "BB"); Person p2 = new Person(19, "CC"); Person p3 = new Person(20, "AA"); ...

2020-04-28 09:10:35 155

原创 配置文件获取

一、@Component + @ConfigurationProperties配置类:DingTalkProperties@Data@Component@ConfigurationProperties(prefix = "dingtalk")public class DingTalkProperties { private String corp_id; priva...

2020-04-11 13:40:37 190

原创 DP

这里写目录标题120. 三角形的最小路径和方法一 (自底向上)方法二 (自顶向下)120. 三角形的最小路径和方法一 (自底向上)class Solution { /** * dp: 自底向上 * https://leetcode-cn.com/problems/triangle/solution/javadong-tai-gui-hua-si-lu-yi-ji-...

2020-03-27 21:05:41 170

原创 排序算法总结

文章目录一、快速排序二、归并排序2.1 求数组的小和2.1 求数组的逆序对三、堆排序四、插入排序一、快速排序public class QuickSort { public static void main(String[] args) { int[] arr = {6, 3, 5, 4, 9, 1, 7, 8, 2}; quickSort(arr, 0...

2020-03-08 20:22:16 237

原创 操作系统

一、进程的描述(P35)二、进程的通信(P67)

2020-03-07 21:36:04 126

原创 字符串相关题目

3. 无重复字符的最长子串public static int lengthOfLongestSubstring(String s) { int n = s.length(), ans = 0; Map<Character, Integer> map = new HashMap<>(); for (int end = 0, start = 0; e...

2020-03-07 18:51:02 314

原创 数组相关题目

文章目录一、数组实现栈二、数组实现队列三、稀疏数组四、数组中的最大差值01. 两数之和04. 有序数组的中位数11. 盛最多水的容器15. 三数之和26. 删除排序数组中多余重复元素27. 删除数组中指定的元素53. 最大子序和74. 搜索二维矩阵88. 合并两个有序数组121. 买卖股票的最佳时机1122. 买卖股票的最佳时机2169. 多数元素189. 旋转数组_和恢复229. 求众数 II(...

2020-03-07 12:53:03 436

原创 二叉树相关题目

一、二叉树前、中、后序遍历public class PreInPosTraversal { public static class TreeNode { public int value; public TreeNode left; public TreeNode right; public TreeNode(int v...

2020-03-06 21:25:56 220

原创 交替打印ABC

ReentrantLock,配合Conditionpublic class PrintABC { private int signal;// 还是需要通过信号量控制abc的输出顺序 Lock lock = new ReentrantLock(); // 只有一个锁 Condition a = lock.newCondition();// 多个condition ...

2020-03-04 22:25:39 188

原创 InnoDB索引分析

InnoDB记录存储结构InnoDB数据页结构 MySQL的索引

2020-03-04 11:08:30 100

原创 二分法相关题目

704. 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。class Solution { /** * 二分法模板 * @param arr * @param target * @return */ publ...

2020-03-01 21:40:37 371

原创 寻找两个有序数组的中位数

给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。public class Solution { public double findMedianSortedArrays(int A[], int B[]) { ...

2020-03-01 16:05:36 115

原创 工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)

1、简单工厂模式抽象产品(这里的Product类可以是抽象类或者接口,考虑到单继承性,设计成接口是个不错的选择)public abstract class Product { abstract String getName();}具体产品public class ProductA extends Product{ @Override public String ...

2020-02-28 19:56:01 104

原创 布隆过滤器

如果一个黑名单网站包含100亿个黑名单网页,每个网页最多占64B,设计一个系统,判断当前的URL是否在这个黑名单当中,要求额外空间不超过30GB,允许误差率为万分之一。布隆过滤器其中重要的实现就是位图的实现,也就是位数组,并且在这个数组中每一个位置只占有1个bit,而每个bit只有0和1两种状态。如上图bitarray所示!bitarray也叫bitmap,大小也就是布隆过滤器的大小。假设一...

2020-02-27 10:04:03 451

原创 CyclicBarrier

参考:J.U.C之synchronizer框架:CyclicBarrier

2020-02-02 20:25:25 97

原创 lock()与lockInterruptibly()的区别

lock 优先考虑获取锁,待获取锁成功后,才响应中断。lockInterruptibly 优先考虑响应中断,而不是响应锁的普通获取或重入获取。ReentrantLock.lockInterruptibly允许在等待时由其它线程调用等待线程的Thread.interrupt方法来中断等待线程的等待而直接返回,这时不用获取锁,而会抛出一个InterruptedException。 Reentran...

2020-01-13 09:23:41 199

原创 排序算法的应用

一、利用归并排序求小和public class MergeSortSmallSum { public static void main(String[] args) { int[] arr = {1, 3, 4, 2, 5}; System.out.println(mergeSort(arr, 0, arr.length - 1)); } ...

2020-01-06 11:27:57 384

转载 三、Mysql 索引、锁

参考:InnoDB记录存储结构准备工作到现在为止,MySQL对于我们来说还是一个黑盒,我们只负责使用客户端发送请求并等待服务器返回结果,表中的数据到底存到了哪里?以什么格式存放的?MySQL是以什么方式来访问的这些数据?这些问题我们统统不知道MySQL服务器上负责对表中数据的读取和写入工作的部分是存储引擎,而服务器又支持不同类型的存储引擎,比如InnoDB、MyISAM、Memory啥的,不...

2020-01-04 20:13:08 182

原创 二、MySql优化

单表优化CREATE TABLE book ( bid INT (4) PRIMARY KEY, NAME VARCHAR (20) NOT NULL, authorid INT (4) NOT NULL, publicid INT (4) NOT NULL, typeid INT (4) NOT NULL) ;INSERT INTO book VALUES(1,'tj...

2019-12-27 22:23:13 253 1

原创 一、MySql优化

原理MYSQL逻辑分层 :连接层 服务层 引擎层 存储层引擎: InnoDB(默认) :事务优先 (适合高并发操作;行锁) MyISAM :性能优先 (表锁)查询数据库引擎: 支持哪些引擎: show engines ;查看当前使用的引擎: show variables like '%storage_engine%' ;指定数据库对象的引擎:create table...

2019-12-26 21:14:03 295

原创 计算机网络(HTTP协议相关)

各种协议与HTTP协议之间的关系HTTP长连接,短连接在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。而从HTTP/1.1起,...

2019-12-22 22:12:41 182

原创 计算机网络(分层模型、TCP/UDP)

一、模型应用层应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统DNS,支持万维网应用的 HTTP协议,支持电子邮件的 SMTP协议等等。我们把应用层交互的数据单元称为报文。域名系统域名系统(...

2019-12-22 20:52:35 710

原创 CountDownLatch

一、CountDownLatch简介CountDownLatch是一个辅助同步器类,用来作计数使用,它的作用有点类似于生活中的倒数计数器,先设定一个计数初始值,当计数降到0时,将会触发一些事件,如火箭的倒数计时。初始计数值在构造CountDownLatch对象时传入,每调用一次 countDown() 方法,计数值就会减1。线程可以调用CountDownLatch的await方法进入阻塞,当...

2019-12-21 17:37:51 248

原创 Semaphore

简单介绍信号量,这个类的作用有点类似于“许可证”。有时,我们因为一些原因需要控制同时访问共享资源的最大线程数量,比如出于系统性能的考虑需要限流,或者共享资源是稀缺资源,我们需要有一种办法能够协调各个线程,以保证合理的使用公共资源。Semaphore维护了一个许可集,其实就是一定数量的“许可证”。当有线程想要访问共享资源时,需要先获取(acquire)的许可;如果许可不够了,线程需要一直等待,直...

2019-12-21 16:32:51 154

原创 BlockingQueue

BlockingQueue 简单介绍阻塞队列(BlockingQueue)被广泛使用在“生产者-消费者”问题中,其原因是 BlockingQueue 提供了可阻塞的插入和移除的方法。当线程向队列中插入元素时,如果队列已满,则阻塞线程,直到队列有空闲位置(非满);当线程从队列中取元素(删除队列元素)时,如果队列未空,则阻塞线程,直到队列有元素。ConcurrentLinkedQueue和Conc...

2019-12-20 10:18:28 86

原创 ConcurrentLinkedQueue

参考文献:Java并发编程之ConcurrentLinkedQueue详解J.U.C之collections框架:ConcurrentLinkedQueueConcurrentLinkedQueue是一个线程安全的队列,线程安全的队列又分为阻塞队列和非阻塞队列,非阻塞队列的典型例子是 ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。 阻塞队列...

2019-12-20 09:55:36 134

原创 ReentrantLock

在介绍AQS中,我们自定义了一个基于AQS的简单的锁,并实现了基本功能,其实JUC包的其他很多锁,都是通过类似的方式去实现了,不过功能更强大而已。下面具体的看一下ReentrantLock是怎么实现的,首先看一下它的内部类可以看到它有三个内部类:抽象内部类Sync,其他两个内部类:FairSync和NonfairSync分别继承了该抽象类,毫无疑问抽象类Sync必定是继承了AbstractQu...

2019-12-19 21:49:50 167

原创 AQS

简介AQS的全称为(AbstractQueuedSynchronizer),这个类在java.util.concurrent.locks包下面讲到AQS的同时,也得提一下Lock接口:实现了Lock接口的某些锁提供比使用synchronized方法和语句可以获得的更广泛的锁定操作。 它们允许更灵活的结构化,可能具有完全不同的属性,并且可以支持多个相关联的对象Condition 。AQS是一...

2019-12-19 10:24:20 107

原创 CopyOnWriteArrayList

参考文献:死磕 java集合之CopyOnWriteArrayList源码分析CopyOnWriteArrayList源码剖析CopyOnWriteArrayList源码分析(基于JDK8)JavaGuide整理JDK中提供了 CopyOnWriteArrayList 类比相比于在读写锁的思想又更进一步。为了将读取的性能发挥到极致,CopyOnWriteArrayList 读取是完全不用...

2019-12-18 11:31:33 111

原创 System.arraycopy()和Arrays.copyOf()

public static void main(String[] args) { int[] arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9}; int[] arr2 = new int[5]; System.arraycopy(arr1,0,arr2,0,5); System.out.println(Arrays.toString(arr2))...

2019-12-18 11:11:47 200

原创 ConcurrentHashMap(JDK1.8)

数据结构ConcurrentHashMap取消了Segment分段锁,采用CAS和synchronized来保证并发安全。数据结构跟HashMap1.8的结构类似,数组+链表/红黑二叉树。Java 8在链表长度超过一定阈值(8)时将链表(寻址时间复杂度为O(N))转换为红黑树(寻址时间复杂度为O(log(N)))区别底层数据结构: JDK1.7的 ConcurrentHashMap 底层...

2019-12-18 10:43:06 276

原创 ConcurrentHashMap(JDK1.7)

简介ConcurrentHashMap相当于多线程版本的HashMap,不会有线程安全问题,在多线程环境下使用HashMap可能产生死循环等问题,我们知道除了HashMap,还有线程安全的Hashtable,Hashtable的实现原理与HashMap一致,只是Hashtable所有的方法都使用了synchronized来修饰确保线程安全性,这在多线程竞争激烈的环境下效率是很低的;Concurr...

2019-12-18 10:01:45 133

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除