Java
GxDong_
这个作者很懒,什么都没留下…
展开
-
[Java] 多线程中的信号量与操作系统中的信号量
信号量在面试中被问到,操作系统的信号量,觉得回答的不是很好,查了些资料,将操作系统中的信号量及JUC下的信号量概念进行比较。操作系统中的信号量操作系统中的信号量主要负责进程间的信息同步 ,可以理解为常说的进程间通信。其本质上就是一个计数器 通过操作系统的P(上锁),V(释放锁)操作。在理解信号量的之前需要先理解临界资源 及 临界区临界资源临界资源:具有排他性的资源。可以理解为Java中的需要各个线程间增强的资源,在操作系统中等价于各个进程需要统一维护的一个变量。临界区临界区:访问临近资源的代码原创 2021-03-23 11:05:45 · 406 阅读 · 0 评论 -
[Java] 阻塞队列的实现原理
阻塞队列的实现原理核心: lock锁+多条件(condition)的阻塞控制Java中的阻塞队列使用BlockingQueue封装了根据condition条件阻塞线程的过程,使得我们不需要求关系繁琐的await和signal操作。以生产消费者模式举例,使用阻塞队列可以不关系什么时候阻塞生产,什么时候阻塞消费。实现: 各个阻塞队列都实现了BlockingQueue接口常用阻塞队列:ArrayBlockingQueue:是一个用数组实现的、有界的阻塞队列,其内部实现是将对象放到一个数组里。有界也原创 2021-03-23 10:11:08 · 406 阅读 · 0 评论 -
(八) 堆排序Java实现
堆排序核心:利用大顶堆进行进行排序,每次排序将最大数出去放入数组最后。动图代码public static void heapSort(int arr[]) { int temp = 0; for (int i = arr.length / 2 - 1; i >= 0; i--) { adjustHeap(arr, i, arr.length); } for (int j = arr.length - 1; j > 0; j--) {原创 2020-06-28 14:13:29 · 264 阅读 · 0 评论 -
[Java] 面试常考排序算法的Java实现
本文对常见、常用、面试中常考的排序算法,使用Java语言实现,并对个算法的时间复杂度进行了分析。排序算法,这一篇就够了原创 2020-06-24 15:01:33 · 415 阅读 · 0 评论 -
(七) 基数排序Java实现
基数排序核心:从元素的个位开始,按照数字放入0-19(不包含负数0-9)号桶,顺序取出,再按照倒数第二位排序动图(不考虑负数)代码(不考虑负数)public static void radixSort(int[] arr) { // 二维数组模拟桶 int[][] bucket = new int[10][arr.length]; // 一维数组模拟索引 int[] bucketCounts = new int[10]; // 确定数组最大数的位数原创 2020-06-24 14:51:03 · 281 阅读 · 0 评论 -
(六) 归并排序Java实现
归并排序核心:将数据分为单个数据,对单个数据进行不断组合并排序关键词:分治动图代码public static void mergeSort(int [] arr,int left,int right,int [] temp){ if (left<right){ int mid = (left+ right)/2; mergeSort(arr,left,mid,temp); mergeSort(arr,mid+1,right,tem原创 2020-06-24 14:43:15 · 276 阅读 · 0 评论 -
(五) 快速排序Java实现
快速排序核心:选定一个数作为中间数,比较其余元素,分别放在两边,对两边的数进行同样的的递归操作关键词:一个while循环、先定位后交换、递归、避免死循环动图代码public static void quicksort(int[] arr, int left, int right) { int l = left; int r = right; int pivot = arr[(left + right) / 2]; while (l < r) {原创 2020-06-24 14:39:32 · 237 阅读 · 0 评论 -
(四) 希尔排序Java实现与改进
希尔排序解决插入排序,位置靠后的元素需要对数组进行不断位移的问题核心: 分组插入排序关键词:步长、3个for循环(2个for一个while)动图(移动法)代码(交换法)public static void shellSort(int[] arr) { for (int gap = arr.length / 2; gap > 0; gap /= 2) { for (int i = gap; i < arr.length; i++) {原创 2020-06-24 14:37:00 · 259 阅读 · 0 评论 -
(三) 插入排序Java实现
插入排序核心:将原队列模拟为两个表,从无序表中取出数据比较后有序的插入有序表关键词:插入移动、一个for一个while、动图代码public static void insertSort(int[] arr) { for (int i = 1; i < arr.length; i++) { int insertVal = arr[i]; int insertIndex = i - 1; while (insertIndex >原创 2020-06-24 14:31:41 · 218 阅读 · 0 评论 -
(二) 选择排序Java实现
选择排序核心:遍历查找最小的元素放到前面,继续遍历剩下的数关键词:两个for循环、先遍历后交换动图代码public static void selectSort(int[] arr) { for (int j = 0; j < arr.length - 1; j++) { int minIndex = j; int min = arr[j]; for (int i = 1 + j; i < arr.length; i++)原创 2020-06-24 14:28:28 · 234 阅读 · 0 评论 -
(一) 冒泡排序Java实现与改进
冒泡排序核心:遍历相邻元素,逆序就交换关键词:交换、两个for循环动图代码public static void bubbleSort(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - 1; j++) { if (arr[j] > arr[j + 1]) { int te原创 2020-06-24 14:24:05 · 295 阅读 · 0 评论 -
Java常用默认端口号
转载 2020-04-08 19:17:14 · 1848 阅读 · 0 评论 -
Error creating bean with name 'XXX' defined in file 的解决方案
Error creating bean with name ‘XXX’ defined in file 同时 Servlet.init() for servlet [spring-dispatcher] threw exception 的解决方案问题描述:报错:Error creating bean with name ‘***’ defined in fileServlet.init...原创 2020-03-03 10:50:11 · 62150 阅读 · 3 评论 -
[Java] Java自学笔记(五)——异常
*异常 ·异常就是程序运行过程中出现了不正常现象导致程序中断 ·在Java中,把各种异常现象进行了抽象形成了异常类*异常处理 ·运行时异常不需要预处理,通过规范的代码可以避免 ·受检异常必须预处理,否则编译报错,有两种预处理方法 ·捕获处理 ·抛出处理*捕获处理 try{ 对可能产生异常的代码进行检视...原创 2019-06-18 17:02:37 · 130 阅读 · 0 评论 -
[Java] Java自学笔记(四)——包与接口
*包 ·定义 在Java中,用包来管理类 在同一个包中类名不能重名,在不同的包类名可以重名 ·常用包 java.lang java的语言包,自动导入 java.util 工具类 java.in ...原创 2019-06-04 10:55:42 · 258 阅读 · 0 评论 -
[Java] Java自学笔记(三)——继承重写与多态
*参数传递 ·基本数据类型参数传递时,传递数值。 ·当引用数据类型进行参数传递时,传递的是地址,当对象的值改变是时,一个改变另一个也改变。*static关键词修饰属性 ·静态属性 和 非静态属性 ·类的变量 和 实例的变量 ·静态属性方法区中存储所有都有可以访问 ·使用类名.名称或引用名称.属性名称 引用名称...原创 2019-05-19 16:26:48 · 157 阅读 · 0 评论 -
[Java] Java自学笔记(二)——面向对象
面向对象面向对象的概念面向对象:虚拟世界“模拟现实”生活,必须保证模拟一致面向过程:必须按照顺序逐步完成。类:对统一类事物的抽象的描述,不是具体的·人类、动物对象:万物皆对象,具体实例·某个事物类与对象的关系·抽象和具体的关系属性:描述对象的特征。· 颜色、尺寸……方法:对象做的事情·吃饭、睡觉……类对象的属性和方法形成类编写类语法格式:·[修饰符...原创 2019-05-15 10:31:07 · 158 阅读 · 0 评论 -
[Java] Java自学笔记(一)——方法
方法方法的定义方法:也叫做函数,实现某个功能方法的分类:系统提供的方法如:nextInt() next() nextDouble()用户自定义的方法基本语法格式:[修饰符] 返回值类型 方法名称([参数列表]){方法体}[]中可有可无修饰符暂时编写为 public static返回值的类型有两种情况*第一种:无返回值类型,void*第二种:有返回值类型,9种数据类...原创 2019-05-07 21:06:14 · 140 阅读 · 0 评论 -
[Java] Java自学笔记(九)——IO流
*IO流 ·输出/输出流 ·输出:把程序的内容保存到外面 ·输入:从程序外读取数据 ·字节流/字符流 ·字节流:以字节为单位处理数据 ·字符流:以字符为单位处理数据 ·节点流/处理流 ·节点流:直接从设备(数据源)上读写数据 ·处理流:对节点流的包装*文件读写需要使用IO流...原创 2019-08-15 10:55:08 · 173 阅读 · 0 评论 -
[Java] Java自学笔记(十一)——网络编程
*网络编程 ·在一定的协议下,实现两台计算机的通信的程序 ·软件结构 ·C/S 客户端服务器 ·B/S 浏览器服务器*网络通信协议 ·TCP/IP ·定义了计算机如何接入因特网以及数据如何在他们之间传输的标准 ·应用层:HTTP... ·传输层:TCP UDP ·网...原创 2019-08-20 15:03:39 · 188 阅读 · 0 评论 -
[Java] Java自学笔记(七)——常用类
*常用类*与字符串相关的类 *String类 java.lang.String类表示字符串的类 *常用方法 ·chatAt(int index)返回指定位置的字符 ·compareTo(String anotherString)字符串的大小比较 ·根据字符串第一个不相等的字符进行码值相减 ...原创 2019-08-12 10:02:09 · 131 阅读 · 0 评论 -
[Java] Java自学笔记(八)——集合
*集合 ·集合使用来存储引用类型数据的容器*Collection 集合 ·存取数据时单个存取,可以迭代(顺序访问集合中的每一个元素并只访问一次) ·子接口List集合:有序可重复(存储数据和添加顺序一致) ·实现类ArrayList底层是数组,线程不安全 ·实现类Vector底层是数组,是线程安全的 ...原创 2019-08-12 17:30:36 · 161 阅读 · 0 评论 -
[Java] Java自学笔记(十)——线程
*线程 ·进程 操作系统运行的一个程序 ·线程 进程的一个执行单元或执行路径 一个进程至少有一个线程,当有多个线程时成为多线程进程,每一个线程都有一个栈 所有线程共享堆区和方法区 ·主线程 Java虚拟机启动主线程运行,main方法 ·用户线程 开启的新的线程,也成子线程...原创 2019-08-16 14:00:57 · 139 阅读 · 0 评论 -
[Java] Java自学笔记(六)——数组
*一维数组的定义与访问 ·定义 数据类型 [] 数组名 = new 数据类型[数组长度]; ·数据类型就是数组中存储元素的数据类型 ·方括号就是定义的数组 ·数组名其实就是一个变量名,保存是数组的引用(数组的起始地址) ·new 运算符会在堆中分配一块连续的存储空间,把这块连续的...原创 2019-07-09 16:05:14 · 235 阅读 · 0 评论