自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 流(43)

因为在多路复用IO模型中,只需要使用一个线程就可以管理多个socket,系统不需要建立新的进程或者线程,也不必维护这些线程和进程,并且只有在真正有socket读写事件进行时,才会使用IO资源,所以它大大减少了资源占用。从JDK1.4开始Java引入了一系列改进的输入/输出处理的新功能,统称为NIO,即新IO,新增了许多用于处理输入输出的类,新IO采用内存映射文件的方式处理输入输出,新IO将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样来访问文件,这种方式进行输入输出比传统的输入输出快的多。

2022-10-20 12:00:00 173

原创 流(42)

可以看到编译器推荐两种方式,一种是生成默认的versionID,这个值为1L,还有一种方式是根据类名、接口名、成员方法及属性等来生成一个 64 位的哈希字段,只要类名、方法名、变量有修改或者有空格、注释、换行等操作,计算出来的哈希字段都会不同,当然这里需要注意,每次有以上的操作的时候尽量都要重新生成一次serialVerionUID,编译器并不会自动修改。克隆的对象可能包含一些已经修改过的属性,而new出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的状态就靠clone方法。

2022-10-10 14:42:18 221 1

原创 流(41)

FileInputStream和FileOutputStream是文件字节流,是一种节点流文件字节输入流的构造方法:FileInputStream(“文件名称”),如果文件不存在则FileNotFoundException文件字节输出流的构造方法:FileOutputStream(“文件名称”) 如果文件不存在则新建文件,如果文件存在则覆盖文件内容FileOutputStream(String name文件名称, boolean append是否采用追加方式。

2022-09-30 12:00:00 188

原创 流(40)

字节流是字节序列,它与外部设备中的字节存在着一一对应的关系,不存在字符的转换,被读写字节的个数与外部设备中的字节个数是相同的。System类不能创建对象,也就是说,System类的所有属性和方法都是静态的,引用时要以System作为前缀。System.in与System.out是System类的两个静态属性,分别对应了系统的标准输入/输出流。System.out:把输出送到缺省的显示(通常是显示器),是PrintStream的对象。path.toAbsolutePath()//获取path对应的绝对路径。

2022-09-20 12:00:00 67

原创 流(39)

Input/Output:指跨越出了JVM 的边界,与外界数据的源头或者目标数据源进行数据交换Java程序会从各种地方输入数据,比如文件,磁盘,网络,其它程序中Java会采用不同的方式输出执行结果,比如屏幕、文件、磁盘、网络等输入/输出是针对JVM 而言在Java程序中,对于数据的输入输出操作以流Stream方式进行,JavaSE提供各种各样的类用于使用相同的方法获取不同类型的数据,程序中通过标准的方法输入或者输出数据流是处理输入/输出的一个洁净的方法,它不需要代码理解键盘和网络的不同。

2022-09-10 12:00:00 60

原创 微服务(38)

分布式结构就是一个完整的系统,按照业务功能,拆分成一个个独立的子系统,在分布式结构中,每个子系统就被称为“服务”。这些子系统能够独立运行在Web容器中,他们之间通过RPC(Remote Procedure Call)方式通信。系统之间的耦合度大大降低,可以独立开发、独立部署、独立测试,系统与系统之间的边界非常明确,排错也变得相当于容易,开发效率大大提升。系统之间的耦合性降低,从而系统更易于扩展,我们可以针对性地扩展某些服务,就是对子系统集群。...

2022-08-30 12:00:00 67

原创 Java基础(37)

使用ajax请求的时候,如果发送请求的页面url 同 接口 url的 协议、ip(域名),端口号,只要有一个同,那么浏览器就会阻止服务器的响应, 这是浏览器的一种安全机制,这种请求称为:跨域请求。formData 表单数据, 后端要求接收一个 key1=value1&key2=value2的字符串,前端必须拼接成对应的格式发送。后端要求收到一个 json字符串,前端必须发送json 字符串。$.ajax默认发送也是formData。form表单标签默认发送的就是这种格式。发送网络请求的url。...

2022-08-20 12:00:00 57

原创 Java基础(36)

concurrentHashmap用 cas 和 syh 保证线程安全分布式cdn内容分配平台,静态资源,降低响应时间

2022-08-10 12:00:00 52

原创 Java基础(35)

计算属性主要是用于对各个状态之间进行运算,数据过滤的一种处理。

2022-07-30 12:00:00 185

原创 Java基础(34)

手动安装vue-router默认安装出来的版本是4.x版本,4.x版本是为vue3.x匹配制作的,导致我们vue2.x核心的项目无法使用解决方案:重装低版本的vue-router

2022-07-20 12:00:00 53

原创 Java基础(33)

1、html js css 导入​ xxx.vue4、SPA: single page application5、MPA : multiple page application6、模块化 node require Import​ .js css 都会被模块化主流版本 cli2 cli3.x != vue版本安装完成后,就可以使用vue指令来创建和管理一个脚手架项目创建项目先在cmd中进入要创建项目目录,然后再执行以下指令 cli3.x+Cli2 创建方式三、项目架

2022-07-10 12:00:00 37

原创 Java基础(32)

盒子的 display 属性值有三种,将盒子分成了三大类block : 块级标签inline-block : 内联级标签inline : 内嵌级标签2.1、三大类型盒子特点block 标签特点 标签独占一行,可以让超文本从上到下排列 支持所有的 CSS 样式设置 垂直方向上的 margin 会重叠 在不设置宽度时,width 大小为自动的情况下块级标签盒子在界面上默认占满父级内容宽度此时在设置盒子水平方向的 margin,border,padding 时,都会向内压缩内容空间(w

2022-06-30 12:00:00 122

原创 Java基础(31)

html 概述HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言 Hyper Text Markup Language,是一种用于创建网页的标准标记语言。 标记语言是一套标记标签 markup tag HTML 使用标记标签来描述网页 HTML 文档的后缀名:.html 或者.htm,两种后缀名没有区别,都可以使用 HTML5 是 HTML 最新的修订版本,2014 年 10 月由万维网联盟 W3C 完成标准制定。 HTML5 的设计目的是为了在移动设备上支持多媒

2022-06-20 12:00:00 39

原创 Java基础(30)

网站的基本特征网站就是一个或多个网页的集合。从广义上讲,网站就是当网页发布到Internet上以后,能通过浏览器在Internet上访问的页面按照网站处理的业务不同,将网站可以分为:政府部门网站、电子商务网站、企业信息网站、信息资源网站、信息导航网站域名网站标志数量众多的网页网页的风格统一便捷的导航系统分层的栏目组织切合主题的内容用户能与网站进行双向交流的栏目搜索信息的功能用户指南和网站动态信息Web网站开发流程从制作的角度,建立一个网站可分为十个阶段,每一个阶段都有不同的目

2022-06-10 12:00:00 42

原创 Java基础(29)

web

2022-05-30 12:00:00 37

原创 Java基础(28)

接收方MulticastSocket ms=new MulticastSocket(5000);InetAddress group=InetAddress.getByName("225.0.0.1");ms.joinGroup(group);byte[] buffer=new byte[8192];DatagramPacket packet=new DatagramPacket(buffer,buffer.length);Thread t=new Thread(()->{ whil

2022-05-20 13:15:00 33

原创 Java基础(27)

0410try { URL url = new URL("http://campus.51job.com/ssjkq/images/banner.jpg"); InputStream is = url.openStream();//获取服务器返回图片的响应字节流 OutputStream os=new FileOutputStream("d:/banner.jpg"); byte[] buffer=new byte[8192]; int len=0; while((len=is.read(bu

2022-05-10 12:00:00 69

原创 Java基础(26)

公平锁ReentrantLock的底层实现为AbstractQueuedSynchronizer,其中的同步器有NonfairSync和FairSync两种publicReentrantLock(booleanfair) { sync=fair?newFairSync() :newNonfairSync(); } publicReentrantLock() { sync=newNonfairSync(); //默认使用非公平的同步器,非公平锁优势在于比公平锁具有更大的吞吐量,但是

2022-04-30 12:00:00 45

原创 Java基础(25)

聚合操作将流中的数据进行汇聚为一个值,一般都是终止操作min和max用于获取最小值和最大值,注意Comparator接口count用于统计元素个数List<Integer> list = new ArrayList<>(); list.add(10); list.add(39); list.add(10); list.add(78); list.add(39);Integer maxValue = list.stream().max(Integer::c

2022-04-20 12:00:00 54

原创 Java基础(24)

List<User> userList = new ArrayList<>(); Random r = new Random(); for (int i = 1; i < 11; i++) { User tmp = new User(); tmp.setId(i + 0L); tmp.setName("name-" + i); tmp.setAge(r.nextInt(18) + 10); tmp.setSalary(r.nextDou..

2022-04-10 12:00:00 42

原创 Java基础(23)

Hashtable和HashMap的区别线程安全问题:HashMap不是线程安全的,Hashtable线程安全的;目前已经不建议使用Hashtable得到线程安全的特性,一般建议并发量不大时采用Collections.synchronizedMap,或者使用ConcurrentHashMap效率:因为线程安全问题,HashMap的执行效率比Hashtable高一些,目前Hashtable基本被淘汰,已经不建议使用空值和空键:HashMap中允许null的key,但是只能有一个,允许null的

2022-03-30 12:00:00 46

原创 Java基础(22)

如果使用Comparator自定义定义排序的写法,则默认类上的Comparable比较则无效分析:定义一个类用于封装产生的序号和对应的数据因为需要对数据进行排序,则必须是可比较的类。实现方式可以是类实现Comparable接口public class Num implements Comparable<Num> { private int index;//序号 private int number;//具体存储的整数值 public int co.

2022-03-20 12:00:00 56

原创 Java基础(21)

Consumer方法定义public void bb(double num, Consumer<Double> consumer){ consumer.accept(num);}调用Test test=new Test();test.bb(1000,num->System.out.println("消费了"+num+"元!"));public class TestSupplier { public static void main(String[] args) {

2022-03-15 21:52:48 599

原创 Java基础(20)

二叉树的遍历方式有前序遍历、中序遍历和后序遍历三种方式前序遍历:根–左--右 1,2,4,5,7,8,3,6 public void preOrder(Node root){ if(root==null) return; System.out.println(root.data); preOrder(root.left); preOrder(root.right);}中序遍历:左–根--右 4,2,7,8,5,1,3,6public void middleOrder(

2022-03-10 12:00:00 51

原创 Java基础(19)

克隆方法的定义如果需要深克隆可以使用对象流实现,它会将所有相关的内容进行一次拷贝,而不会针对引用类型属性只是拷贝地址值。通过对象流实现对象的拷贝,则要求对象所属于的类必须实现Serializable接口...

2022-03-05 12:00:00 38

原创 Java基础(18)

- 集合对象没有记录元素的具体类型,获取数据时需要进行类型转换,很容易出现运行时异常ClassCastException- 存储数据时没有进行类型判断需要一种方法实现集合能够记住集合中元素的类型,编译期能够进行合法类型判断,获取时不需要进行类型转换:泛型:可以将运行时的类型检查搬到编译期实现,直接获取指定类型数据避免强制类型转换操作出错的原因是:进行强制类型转换之前没有进行类型判定将一个对象放入集合中,集合不会记住这个对象的具体类型(向上转型Object tmp=new Date();),当再次从集合中

2022-03-01 10:38:20 159

原创 Java基础(17)

集合

2022-02-24 12:00:00 51

原创 Java基础(16)

ArrayList是实现了List接口的可扩容的数组【System.arrayCopy】,它的内部是基于数组实现的,相较于Java中的数组,容量能动态增长继承于AbstractList抽象类,实现了List接口RandomAccess接口,提供了随机访问支持。遍历元素的方法有快速随机访问和通过迭代器Iterator访问Clonable接口,可以被克隆clone()Serializable接口,支持序列化ArrayList不是线程安全的,所以在无需考虑线程安全时使用,在需要考虑线程安全的多线程环境下可以考虑

2022-02-21 12:10:14 36

原创 Java基础(15)

1、new新建态(初始态): new Thread(…)2、就绪态(可运行态): 线程初始化后,调用start方法,只能针对新建态线程对象调用start方法,否则出现异常illegalThreadStateException3、执行态(运行态):就绪态获取了CPU,执行线程run方法。注意有多CPU则会有多个线程并行执行。目前采用的是基于时间片轮转法的抢占式调度策略,在选择可以运行线程时会考虑线程的优先级。4、运行态的线程中可以调用yield方法使运行态的线程转入就绪态,重新竞争CPU资源5、阻塞

2022-02-18 01:58:38 51

原创 Java基础(14)

多线程线程是进程中的一个执行实体,用来描述进程的执行,负责指向包括在进程内部地址空间中的代码在Java中一个应用可以包含多个线程,每个线程执行特定任务,可以与其它线程并发执行引入多线程的目标在于减少CPU空转时间,提供CPU的利用率,java多线程提供了一个编程模型隐藏CPU在多任务间切换的实现细节,不需要修改代码就可以实现跨多CPU、多核的处理器提高吞吐量,充分利用cpu资源,减少cpu空转时间伸缩性,可以通过CPU核数提升性能。使用多线程并不能提高硬件的性能注意:在很多情况下可以显

2022-02-12 12:00:00 34

原创 Java基础(13)

进程 vs 线程一个线程只能属于一个进程,而一个进程可以包含多个线程,至少有一个线程(主线程)资源调度和分配给进程,同一进程中的所有线程共享该进程的所有资源线程在执行过程中,共享数据一般都需要进行协作同步CPU分给线程,真正在处理机上运行的是线程线程是指在进程内部的一个执行单元,也是进程内的可调度的实体,两者都是动态的概念进程和线程最大的区别在于:进程是由操作系统来控制的,而线程是由进程来控制线程本身的数据通常只有寄存器数据以及当前程序在运行时使用的堆栈,所以线程的切换比进程切换的成本要小

2022-02-05 09:00:00 357

原创 Java基础(12)

进程每个进程都有独立的代码和数据空间,进程切换成本较高,一个进程中可以包含1-n个线程,进程是资源分配的最小单位同一个进程中的线程可能会有共享代码,可以共享进程的数据空间,每个线程由独立的运行栈和程序计数器,线程切换的开销很小,线程是CPU调用的最小单位启动进程.........

2022-01-30 12:20:33 568

原创 Java基础(10)

内部类一个类或者接口定义在另外一个类后者接口的内部public class A{//外部类 class B{}//内部类 interface C{}//内部接口}将一个类定义置入另一个类定义中,这就叫作"内部类"内部类之外的类称为外部类内部类的名称必须区别于它所在的外部类,和其它类之间没有要求内部类的全名叫做外部类名称$内部类名称内部类可以访问其外部类的所有变量和方法,外部类不能直接访问内部类的实现细节内部类比外部类多了private/protected/static三个修饰符,这

2021-12-24 20:34:27 169

原创 Java基础(11)

Java异常处理程序运行时发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭、立刻退出终止?程序员真理凡是程序一定会出错出错不是问题,关键是出错之后,错误如何处理?谁处理?程序可以从错误中恢复吗?恢复不了就崩溃么?意外产生和处理过程概述运行时有许多因素引起出错,硬件失败,除法溢出,数组下标越界。出错的位置都在方法Method里出错后方法生成一个Exception对象,并把它交给JVM。这个对象里包括许多信息:错误类型,错误位置

2021-12-24 18:22:27 411

原创 Java基础(9)

接口比抽象类更抽象例:需求:需要飞到北京出差飞机、鸟和超人不能归A个类属,但是具备有相同的特性:会飞的。所以引入了概念叫做接 口,可以用于规范实现接口的类中必须实现接口中抽象方法。接口可以理解为一种契约使用关键字interface定义接口接口中只能定义抽象方法,从JDK1.8引入default关键字开始允用加认实现public interface 会飞的{ public void 起飞(); public void 巡航飞行(); public void 降落();}接口不

2021-12-24 18:07:09 310

原创 Java基础(8)

抽象类面向对象编程的核心就是面向抽象编程,一般在开发过程中依赖抽象,不依赖具体public class A{ public void pp(Pig pig){}//如果使用具体类,则不具备灵活性。如果需要使用Cat,则只能修改源代码}public class B{ public void pp(Animal obj){}//调用方法时实际上可以传入任何Animal的子类,例如Pig或者Cat}class Animal{}class Pig extends Anima1{}class

2021-12-19 12:00:00 54

原创 Java基础(7)

成员应用细节JVM主要包括三块内存空间,分别是栈内存、堆内存和方法区Java虚拟机包含类装载器子系统、执行引擎、运行时数据区、本地方法接口和垃圾收集模块。类装载器子系统:根据给定的全限定类名(如: java.lang.Object)来装载class文件到运行时数据区域的方法区中。执行引擎:执行字节码或执行本地方法。运行时数据区:就是常说的JVM的内存,堆,方法区,虚拟机栈,本地方法栈,程序计数器。本地方法接口:与本地方法库交互,作用就是为了融合不同编程语言为Java所用,它的初

2021-12-15 12:00:00 55

原创 Java基础(6)

补充说明Java基础(5)中static关键字部分静态static 关键字用于修饰成员随着类加载, 随着类消失优先于对象, 用类名直接访问静态属性static属性是当前类的所有对象所共有的共同属性(只有一个, 而普通属性各个对象都有自己的, 相互隔离),任何一个当前类对象修改这个属性,所有其他类对象的这个属性都会受影响。典型应用:统计A1类的构建次数执行顺序静态属性—属性—构造器访问的方式可以使用"类名.静态属性名"或者"对象名.静态属性名"的方式进行访问。定义常量命名规则:名

2021-12-10 21:38:23 74

原创 Java基础(5)

排序算法查找算法:折半查找法冒泡排序冒泡排序是一种稳定的排序算法时间复杂度为O(n**2)空间复杂度为O(1)快速排序快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。本质上来看,快速排序应该算是在冒泡排序基础上的递归分治法。快速排序的时间复杂度为O(nlogn)。如果不考虑递归问题的化空间复杂度为O(1)。快速排序也是一种稳定的算法。基本操作步骤:1、从数列中挑出一个元素,称为"基准"(pivot);2

2021-12-01 19:28:04 602

原创 Java基础(4)

Java应用的注释:一般按照软件工程的要求20%以上的代码量是注释说明,这是合理的。但是实际开发中并没有人写这么多的注释说明,一定要注意不写注释是不合理的注释的语法://开头的整句就是一个单行注释以/*开头,以*/收尾的多行注释以/**开头,以*/收尾的文档注释,可以使用javadoc命令生成页面格式的文档说明系统预定义类Java 5添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序。nextInt()只读取int值,就是只能读取整数类型的数据,如果输入了非整

2021-11-19 16:59:24 122

空空如也

空空如也

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

TA关注的人

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