java
小奔跳跳
技术之路,无穷无尽,尽然选择,便要一如既往,蹦蹦跳跳,愉快地立于天地之间。天行健,大侠当坚韧不拔,地势坤,大侠当始终如一。
展开
-
数组、字符串/Array & String
Java 数组数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。Java 语言中提供的数组是用来存储固定大小的同类型元素。你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,…,number99。优点构建一个数组非常简单能让我们在O(1)的时间里根据数组的下标(index)查询某个元素缺点构建时必须分配一段连续的空间查询某个元素是否存在时,需要遍历整个数组,耗费O(n)的时间(其原创 2020-05-31 07:40:15 · 523 阅读 · 0 评论 -
Java虚拟机
Java虚拟机之所以被称为是“虚拟”的,就是因为它仅仅是由一个规范来定义的抽象计算机。因此,要运行某个Java程序,首先需要一个符合该规范的具体实现。1、Java虚拟机是什么要理解Java虚拟机,你首先要意识到,当你提到“Java虚拟机”时,指的可能是如下三种不同的东西:1.1抽象规范1.2一个具体的实现1.3一个运行中的虚拟机实例Java虚拟机抽象规范仅仅是一个概念,而该规范的具体实...原创 2020-01-28 21:21:19 · 264 阅读 · 0 评论 -
补码
补码计算机中的有符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位的表示,0表示“正”,1表示“负”,而数值位,就是0和1的组合。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理 。补码的优点:(1)解决了符号的表示问题;(2)可以将减法运算转化为补码的加法运算来实现,克服了原...原创 2020-01-28 15:53:01 · 445 阅读 · 6 评论 -
java 冒泡排序
冒泡排序:它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。由来:这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。比较轮数:数组长度-1;...原创 2020-04-22 22:13:54 · 271 阅读 · 0 评论 -
拼接sql语句,实现多条件模糊查询
sql拼接,多条件模糊查询dao层代码public List findBy(String name, String keywords) throws SQLException {QueryRunner qr = new QueryRunner(DataSourceUtil.getDataSource());String sql="select * from product where ...原创 2019-06-18 19:25:28 · 3667 阅读 · 0 评论 -
10亿个数取前k大的数
10亿个数取前k大的数解法:PriorityQueue是优先队列,可以当作堆来使用。这里:利用最小堆来做,维护堆的大小是k,每次读数,让大于堆顶的元素进堆。public static void main(String[] args) { int k = 1000; //不写comparator,默认是小根堆 PriorityQueue<Integer> pq = new PriorityQueue<>(k, new Comparator<Integer>原创 2020-08-04 11:19:12 · 516 阅读 · 0 评论 -
java io字节流、字符流读写
java.io概述Java的核心库java.io提供了全面的IO接口。包括:文件读写、标准设备输出等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。java.io的描述通过数据流、序列化和文件系统提供系统输入和输出。流的概念流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样原创 2020-09-05 10:07:58 · 544 阅读 · 0 评论 -
java死锁(synchronized嵌套使用)
Java 实例 - 死锁及解决方法死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。java 死锁产生的四个必要条件:1、互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用2、不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放。3、请求和保持,即当资源请求者在请求其他的资源的同时保持对原有资源的占有。4、循环等待,即存在一个等待队列:P1占有P2的资源,P2占有P3的资原创 2020-09-04 10:37:01 · 2756 阅读 · 0 评论 -
矩阵的转置 java
矩阵的转置是矩阵的一种运算,在矩阵的所有运算法则中占有重要地位。设A为m×n阶矩阵(即m行n列),第i 行j 列的元素是a(i,j),即:把m×n矩阵A的行换成同序数的列得到一个n×m矩阵,此矩阵叫做A的转置矩阵。例如:代码:public static void main(String[] args) { int[][] a= {{1,2,0},{3,-1,4}}; //行和列发生调换 int[][] b = new int[a[0].length][a.length]; fo.原创 2020-06-30 10:16:17 · 5039 阅读 · 3 评论 -
LRU java实现
LRU介绍LRU是Least Recently Used的缩写,即最近最少使用,常用于页面置换算法,是为虚拟页式存储管理服务的。简单的说就是:缓存一定量的数据,当超过设定的阈值时就把一些过期的数据删除掉。举个例子:比如现在要缓存100条数据,当小于100条时,可以随意添加,当超过100条时,就需要把新的数据添加进来,同时要把过期数据删除,以确保我们最大缓存100条,那怎么确定删除哪条过期数据呢,采用LRU算法实现的话就是将最老的数据删掉。package com.map;import java原创 2020-06-28 10:58:19 · 253 阅读 · 0 评论 -
java 快速排序
快速排序是一种排序执行效率很高的排序算法,它利用分治法来对待排序序列进行分治排序,它的思想主要是通过一趟排序将待排记录分隔成独立的两部分,其中的一部分比关键字小,后面一部分比关键字大,然后再对这前后的两部分分别采用这种方式进行排序,通过递归的运算最终达到整个序列有序。代码:package com.demo1;public class TestQ { public static void main(String[] args) { int a[] = {25,84,21,47,15,27,6.原创 2020-06-23 20:58:46 · 353 阅读 · 0 评论 -
java 字符串判空方法
如何判断字符串是否为空(null)或者是空字符串("")的方法基础:null和""的区别null表示这个字符串没有任何指向,因为null没有分配空间。而""在堆中分配了空间。方法介绍:方法一: 使用很多的一个方法, 直观, 方便, 但效率很低。if(s == null || s.equals(""));方法二: 比较字符串长度, 效率高的最好一个方法。 if(s == null || s.length() == 0);方法三: Java1.6 才开始提供的方法, 效率和方法二几乎原创 2020-06-16 16:21:19 · 659 阅读 · 0 评论 -
Java 插入排序
插入排序思想:插入排序是一种简单直观的排序方法,其基本思想在于每一次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中,直到全部记录插入完成。实现:把n个元素的数列分成有序(前)和无序(后)的两部分{{a1},{a2,a3,a4,…,an}}{{a1⑴,a2⑴},{a3⑴,a4⑴ …,an⑴}}…{{a1(n-1),a2(n-1) ,…},{an(n-1)}}代码package com.demo1;public class TestDemo4 { public原创 2020-06-08 20:38:39 · 129 阅读 · 0 评论 -
Java Map集合
Interface Map<K,V>参数类型K - 由此地图维护的键的类型V - 映射值的类型All Known Subinterfaces:Bindings , ConcurrentMap <K,V>, ConcurrentNavigableMap <K,V>, LogicalMessageContext , MessageContext , NavigableMap <K,V>, SOAPMessageContext , SortedMap &l原创 2020-06-08 10:44:53 · 146 阅读 · 0 评论 -
Java Set集合
Interface Set说明参数类型E - 由此集合维护的元素的类型All Superinterfaces:Collection , Iterable All Known Subinterfaces:NavigableSet , SortedSet 所有已知实现类:AbstractSet , ConcurrentHashMap.KeySetView , ConcurrentSkipListSet , CopyOnWriteArraySet , EnumSet , HashSet , Jo原创 2020-06-08 09:16:13 · 129 阅读 · 0 评论 -
java中 == 和equals方法
##基本数据类型1.对于基本数据类型,它们之间的比较应该使用“==”,它比较的是:值是否相等。(不能使用equals方法)eg:int a = 10;int b = 10;System.out.println(a == b);答案:true;2.引用数据类型当引用数据类型用(==)进行比较时,比较的是它们在内存中的存放地址。当复合数据类型之间进行equals比较时,这个方法的初始行为是比较对象在堆内存中的地址。equals()方法是用来判断其他的对象是否和该对象相等。Java提供的所原创 2020-06-04 15:08:41 · 165 阅读 · 0 评论 -
java 选择排序
选择排序思想:选择排序的基本思想是:每一趟(例如第i趟)在后面n-i+1(i=1,2,…,n-1)个待排序元素中选取关键字最小的元素,作为有序子序列的第i个元素,直到第n-1趟做完,待排序元素只剩下1个了,就不用再选了。package com.demo1;public class TestDemo1 { public static void main(String[] args) { //选择排序 int a[] = {1,6,4,7,3,9,8,2,0,5,1}; int min原创 2020-06-03 09:05:01 · 126 阅读 · 0 评论 -
Arrays类
Arraysjava.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能:给数组赋值,通过fill方法。对数组进行排序:通过sort方法,按升序。比较数组:通过equals方法比较数组中的元素是否相等。查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法进行操作。具体:1.用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(原创 2020-05-30 11:24:44 · 198 阅读 · 0 评论 -
Java Stack类
栈:栈是Vector的一个子类,它实现了一个标准的后进先出的栈。堆栈只定义了默认构造函数,用来创建一个空栈。 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。一些方法介绍:1.判断是否为空 boolean empty() 2.查看堆栈顶部的对象,但不从堆栈中移除它。 Object peek( )3.进栈Object push(Object element)...原创 2020-04-19 12:51:14 · 121 阅读 · 0 评论 -
Java StringBuffer 和 StringBuilder类
当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类。和String类不同的是,StringBuffer和StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuilder类在java5中被提出,它和StringBuffer之间最大不同在于StringBuilder的方法不是线程安全的。StringBuffer方法主...原创 2020-03-22 12:45:22 · 127 阅读 · 0 评论 -
Arrays类操作数组
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。功能:fill:给数组赋值sort:按升序对数组进行排序equals:比较数组中元素值是否相等binarySearch:对排好序的数组进行二分查找法操作1.public static int binarySearch(Object[] a, Object key)用二分查找算法在给定数组中搜索给定值的对...原创 2020-03-22 12:18:34 · 339 阅读 · 0 评论 -
java实现线性表中的顺序表
顺序表的java实现,可以看做一个具备线性表的功能的数组定义接口Listpackage arrayList;public interface List {public int size();//线性表的长度public boolean isEmpty();//判断是否为空//对位置进行判断,会有异常发生public void insert(int index,Object obj) ...原创 2019-07-03 15:21:19 · 390 阅读 · 0 评论 -
java实现线性表之单链表
list接口,定义了线性表的长度,判空,插入,删除,获取package list;public interface List { public int size(); public boolean isEmpty(); public void insert(int index,Object obj) throws Exception; public void delete(int in...原创 2019-07-04 14:01:16 · 251 阅读 · 0 评论 -
Java中,三种长度表现形式
数组int[] a = new a[10];a.length;数组.length属性,返回值int字符串字符串.length() 方法,返回值intString str = “hello”;str.length();集合Set set = new HashSet;集合.size()方法,返回值intset.size();后续补充,未完待续、、、、、、...原创 2020-02-15 21:58:07 · 314 阅读 · 0 评论 -
Java Character类
Character类用于对单个字符进行操作。Character类对对象中包装一个基本类型char的值实例char ch = 'a';char[] charArray = {'a','b','c','d'};Character方法原创 2020-02-15 21:27:18 · 113 阅读 · 0 评论 -
Java String类
Java String类字符串广泛应用于在java编程中,在Java中字符串属于对象,Java提供了String类来创建和操作字符串。创建字符串String str = "hello";注意:String类是不可变的,所以你一旦创建了String对象,那它的值就无法改变了。如果需要对字符串进行修改,那么请使用StringBuffer或者StringBuilder类。常用方法(Stri...原创 2020-02-15 21:00:19 · 98 阅读 · 0 评论