- 博客(32)
- 收藏
- 关注
原创 RabbitMQ发布与订阅模式
订阅模式中多了一个Exchange交换机,用来接收和处理信息,Exchange有常见三种类型: Fanout:广播,将消息交给所有绑定到交换机的队列 Direct:定向,把消息交给符合指定routing key 的队列 Topic:通配符,把消息交给符合routing pattern(路由模式) 的队列例子采用的是广播模式。因为上一篇文章创建连接的代码有过多的重复,因此创建了一个ConnectionUtil工具类。public class ConnectionU...
2021-11-29 17:27:31
617
原创 java中转换流和对象操作流
转换流:InputStreamReader:解码操作,字节→字符,父类是Reader ——构造方法InputStreamReader(InputStream in) 使用默认字符编码创建InputStreamReader对象 InputStreamReader(InputStream in,String chatset) 使用指定的字符编码创建InputStreamReader对象 OutputStreamWriter:编码操作,字符→字节,父类是Writer...
2021-09-27 17:22:44
845
原创 java之网络编程(TCP和UDP)
在接触网络编程前,首先要了解:1、IP:Internet上计算机的唯一标识。 分类:IPv4(万维网)和IPv6(局域网) 本地Localhost对应的ip是:127.0.0.1 域名解析:域名容易记忆,当在连接网络时输入一个主机的域名后,域名服务器(DNS)负责将域名转化成IP地址,这样才能和主机建立连接。2、端口号:正在计算机上运行的进程 ——不同的进程不同的端口号,范围0 ~ 655353、InetAddress类:...
2021-09-25 16:30:28
105
原创 java之多线程原子性
我们来看一段简单的代码:public class marry { static int money = 0; public static void main(String[] args) { new Thread(() ->{ while (money < 220000){// System.out.println("现在的钱有"+ money); }
2021-09-23 19:13:11
483
原创 java之多线程面试题
面试题:sleep()和wait()的异同?* 1.相同点:一旦执行方法,都可以使得当前的线程进入阻塞状态。* 2.不同点:1)两个方法声明的位置不同:Thread类中声明sleep() , Object类中声明wait()2)调用的要求不同:sleep()可以在任何需要的场景下调用。 wait()必须使用在同步代码块或同步方法中3)关于是否释放同步监视器:如果两个方法都使用在同步代码块或同步方法中,sleep()不会释放锁,wait()会释放锁。线程通信的三个方法:wait()、n
2021-09-23 14:14:53
62
原创 Java之多线程基础
首先我们来了解一些概念程序:是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码。进程 :程序的一次执行过程,或是正在运行的一个程序。线程:进程可进一步细化为线程,是一个程序内部的一条执行路径。进程可以细化为多个线程。每个线程,拥有自己独立的:栈、程序计数器。多个线程,共享同一个进程中的结构:方法区、堆。△一个Java应用程序java.exe,其实至少三个线程:main()主线程,gc()垃圾回收线程,异常处理线程。当然如果发生异常,会影响主线程。并行
2021-09-22 20:25:19
67
原创 java之Stream流
特点: Stream流把真正的函数式编程风格引入到Java中 代码简洁 生成Stream流的方式1、Collection体系集合List<String> list = new ArrayList<String>();Stream<String> listStream = list.stream();Set<String> set = new HashSet<String>();Stream<String.
2021-09-17 20:57:54
105
原创 java集合之Map集合
Map:interface Map<K,V> K:键的类型;V:值的类型特点:双列集合,一个键对应一个值,且键不可以重复,值可以。方法:方法名 说明 V put(K key,V value) 添加元素 V remove(Object key) 根据键删除键值对元素 void clear() 移除所有的键值对元素 boolean containsKey(Object key) 判断集合是否包含指定的键 boolean con
2021-09-17 20:38:01
110
原创 java之IO节点流
File类: ——它是文件和目录路径名的抽象表示构造方法:方法名 说明 File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例 File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例 File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例 方法:创建方法:...
2021-09-17 15:58:36
126
原创 java集合之Set集合
Set特点:1、不可以存储重复元素2、没有索引,不能使用普通for循环遍历3、无序性,但是底层是根据数据的哈希值决定,不是随机性。***向Set(主要指:HashSet、LinkedHashSet)中添加的数据,其所在的类一定要重写hashCode()和equals()。Set接口中没额外定义新的方法,使用的都是Collection中声明过的方法。Set集合的三个实现类:HashSet、LinkedHashSet、TreeSetHashSet:作为Set接口的主要实现类;
2021-09-16 19:28:05
246
原创 java集合之List集合
List集合的特点:1、存取有序2、可以重复3、有索引****添加的对象,所在的类要重写equals()方法List集合的方法:方法名 描述 void add(int index,E element) 在此集合中的指定位置插入指定的元素 E remove(int index) 删除指定索引处的元素,返回被删除的元素 E set(int index,E element) 修改指定索引处的元素,返回被修改的元素 E get(int index)
2021-09-16 18:42:35
126
原创 java之集合接口Collection与迭代器Iterator
数组和集合的区别 相同点 都是容器,可以存储多个数据 不同点 数组的长度是不可变的,集合的长度是可变的 数组可以存基本数据类型和引用数据类型 集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类 Collection的常用方法 :集合与数组之间的转换:集合------>数组 : toArray()数组------>集合 : asList(T... t)遍历Collection的两种方...
2021-09-15 20:39:19
90
原创 java之泛型理解
What?所谓泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。简单来说就是在使用的时候已经确定了类型参数。Why? 泛型的好处 把运行时期的问题提前到了编译期间 避免了强制类型转换 How?1、在集合中使用ArrayList<Integer> list = new ArrayList<Integer>();Map<String,Integer> map =
2021-09-15 19:14:09
101
原创 java链表之单链表
1、链表是以节点的方式来储存,是链式储存2、每个节点包含data域,next域(指向下一个节点)3、单链表带头节点应用实例:使用带head的单向链表实现增删改查操作首先定义一个HeroNode类,每个HeroNode对象就是一个节点class HeroNode{ public int no; public String name; public String nickname; public HeroNode next; //指向下一个节点..
2021-09-14 12:05:23
88
原创 java常用API之异常类
异常信息检查:其中包含了三个重要的信息,异常出现的位置,异常的类型,错误语句的提醒。Exception有两种异常:1、RuntimeException(运行时异常):无需显式处理,都是RuntimeException类及其子类。2、编译时异常:除RuntimeException之外的所有异常。不处理的话就无法通过编译。处理异常的两种方法:1、throws方式处理异常:public void 方法() throws 异常类名{}throw抛出异常:主动抛...
2021-09-10 17:00:30
167
原创 java常用API之时间时期类(Date)
Date类**时间原点为1970年1月1日 00:00:00 Date类构造方法SimpleDateFormat类Jdk8提出了新的一套APILocalDate/LocalTime/LocalDateTimeInstanstDateTimeFormatter次重要时间APIZonedDateTime/ZoneIdDurationPeriodTemporalAdjuster...
2021-09-09 19:01:45
152
原创 快速排序初体验
首先定义一个标准值(一般是定义头或尾)再定义左右(或者头尾)指针先从右边开始检索,如果值大于标准值,public static void quickSort(int[] arr,int start,int end){ if (start < end) { int base = arr[start]; int left = start; ...
2021-09-09 08:24:27
55
原创 String,StringBuffer,StringBuilder三者的区别
StringString类代表字符串,字符串不可以变,它们的值在创建后不能被修改。Why?我们通过查看String源码可以看到,String底层是由byte[]来实现的,并且有final修饰,这就决定了它的不可变性。private final byte[] value;(原来jdk8中String底层是由char[]实现的,jdk9中改为了byte[]。具体可以参考一下https://blog.csdn.net/tc979907461/article/details/117435.
2021-09-07 17:29:15
100
原创 java面向对象知识点汇总
面向对象的三大特征封装 ,继承,多态封装:隐藏实现细节,对外提供访问方式1、封装方法:将代码封装成一个方法2、封装属性:将属性使用,提供get,set方法3、封装类:将属性和方法,封装在一个类中好处:提高安全性,提供复用性javabean类的写法:1、类名public2、有无参构造器3、将属性私有化(private)4、有get()和set()方法...
2021-09-06 21:16:12
93
原创 java中abstract和interface知识点
1、abstract修饰的类为抽象类;2、abstract修饰的方法为抽象方法;特点:1.抽象类中可以构造方法2.抽象类中可以存在普通属性,方法,静态属性和方法。3.抽象类中可以存在抽象方法。4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。6,抽象类不能被实例化,抽象类和抽象方法必须被abstract修饰关键字使用注意:抽象类中的抽象方法(其前有abst...
2021-09-06 16:13:05
153
原创 java中重载(overload)和重写(override)区别
★怎么判断重载?两同一不同: 同一个类,相同方法名 参数列表不同( 跟方法的权限修饰符、返回值类型、形参变量名、方法体都没关系!)public void getSum(int i ) {}public void getSum(int i, int j){}public void getSum(double d){}★怎么判断重写?子类中与父类同名同参数的方法(包括形参列表,权限修饰符,返回值类型A(也可以是A子类))对于重写:...
2021-09-05 11:44:19
126
原创 简单阐述二分查找
思路分析:1、首先确定数组的中间下标int mid = (left + right)/2;其中有个小细节,为了防止变量溢出(left+right过大),可以用以下方法来表示int mid = left + (right - left)/2;2、让你要查找的数target和arr[mid]比较int[] arr ={1,1,2,4,6,2};int left = 0;int right = arr.length - 1;int target = 4;3、..
2021-09-02 20:24:02
41
原创 冒泡排序与选择排序
这两种数组排序算法较为常见,属于必会的基础算法堆排序属于选择排序,选择排序属于交换排序选择排序: 时间复杂度:O(n²)冒泡排序: 时间复杂度:O(n²)选择排序代码示例:就拿数组{4,7,3,6,9}来说 1、先拿arr[0]的4和后面的4个数进行对比,利用k来记录最小的数的坐标。 2、通过比对4和7,4和3后得到坐标k=2是最小。(后面比对也是3最小,因此k依然等于2) 3、比对...
2021-09-01 20:52:55
86
原创 java内存分配
我们先来看下JVM架构简图(借用尚硅谷的图).class文件经过类加载子系统进入运行时数据区,我们着重来说一下栈内存和堆内存就拿简单的main方法来说1、main方法进入方法区2、main方法被JVM自动调用进入栈内存执行,形成一个栈帧,一个方法对应一个栈帧3、方法中new出来的int[] 在堆内存中开辟空间,产生地址值4、int[]初始化,开辟三个空间并赋值0,然后通过索引(蓝色数字)来执行下面的赋值语句。如有不正确的地方,欢迎指正,谢谢。...
2021-09-01 19:25:36
62
原创 水仙花和猜数字案例
水仙花案例for (int i = 100; i < 1000;i++){ int ge = i%10; int shi = i/10%10; int bai = i/100%10; if (ge*ge*ge + shi*shi*shi + bai*bai*bai == i){System.out.println(i); }}猜数字案例 Random random = new Random(10); int t
2021-08-31 19:54:41
195
原创 用简单java代码查找质数
以1-100为例子,每五个质数换行一次public class Number{ public static void main (String[] args){ boolean flag = true; int count = 0; //计数 for(int i = 2;i <= 100;i++){ for(int j = 2;j < i;j++){ if(i % j == 0) flag = flase;
2021-08-31 17:34:16
315
原创 java基本语法
1、关键字,保留字,标识符关键字:被java赋予了特殊含义的单词,字母全部小写保留字:goto,const;以后版本可能会使用,要避免使用标识符:自己可以起名字的地方。注意标识符是由26个英文字母大小写,0-9,_或者$组成,且禁止数字开头,不能仅用关键字和保留字,不能包含空格。2、常量的使用常量:在程序运行中,其值不可以发生改变的量类型:字符串常量(“abc”),整数常量(1),小数常量(1.1),字符常量(‘a’),布尔常量(true,false),空常量(不...
2021-08-30 18:32:04
48
原创 java开发环境的搭建
java语言跨平台原理:java程序是由Java编码器将Java程序编译成字节码文件(.class文件),然后由不同操作系统的Java虚拟机(JVM)对字节码文件解释后执行的。JDK(java开发工具)包含JRE和开发工具(bin包里)JRE(java运行环境)包含JVM和Java核心库为什么要配置环境变量?希望java的开发工具(javac.exe,java.exe)在任何的文件路径下都可以执行成功。如何配置?1、下载对应版本的JDK,找到bin包的路径。2、我的电
2021-08-30 17:10:47
3488
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人