- 博客(13)
- 收藏
- 关注
原创 Java并发机制的底层实现原理
文章目录Java并发机制的底层实现原理valatile的应用volatile的定义与实现原理volatile的使用优化synchronized的实现原理与应用Java对象头锁的升级与对比原子操作的实现原理术语定义处理器如何实现原子操作Java如何实现原子操作Java并发机制的底层实现原理valatile的应用在多线程并发编程中synchronized和volatile都扮演着重要的角色,volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性“。可见性的意思是当一
2021-11-09 15:37:09 450
原创 常见的设计模式
文章目录策略模式观察者模式装饰者模式工厂模式单例模式(单件模式)命令模式适配器模式与外观模式面向对象适配器:类适配器外观模式模板方法模式迭代器与组合模式迭代器组合模式状态模式复合模式策略模式策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。设计原则多用组合,少用继承。例子:我们有一个duck(鸭子)体系时,并不是所有的鸭子都会叫/飞。那么我们在设计这个类对象时,就不能使用继承方式来继承鸭子的叫(call)或者飞(fly),因为如果使用继承方式
2021-11-07 22:14:44 257
原创 接口和抽象类的区别
抽象类可以存在普通成员函数,而接口中只能存在public abstract方法抽象类中的成员比变量可以是各种类型的,而接口中的成员变量只能是public static final类型的抽象类只能继承一个,接口可以实现多个接口和抽象类的设计目的是不一样的。接口的设计目的是对类行为进行约束。规定类能够做什么。但是只约束了行为的有无,不管具体是怎么实现的。抽象类的设计目的是为了代码复用,不同的类具有一些相同的行为,并且一部分行为是一样的。可以让这些类提取出一些共同的行为。比如:对于狗和猫都要.
2021-11-01 17:49:35 146
原创 分页常用工具类
分页工具类把分页的概念分享出来。仅供参考先说实现思路:我这里是使用的MySql的分页,使用limit关键字来实现,如果使用Oracle,需要麻烦一点,使用rownum+子查询来实现分页MySql语句 limit关键字需要两个参数select * from emp limit i,j;i表示起使位置,j表示查询长度假设一个页面显示3条数据,那么这里查询的语句就应该是select * from emp limit 0,3;第二页:select * from emp limit 3,3;
2021-10-31 16:48:58 1617
原创 并发线程的挑战
文章目录并发编程的挑战上下文切换多线程一定快吗如何减少上下文切换死锁资源限制的挑战并发编程的挑战并发编程的目的是为了让程序运行得更快,但是并不是启动更多的线程就能让程序最大限度地并发执行。在进行并发编程时,如果希望通过多线程执行任务让程序运行得更快,会面临非常多的挑战,比如上下文切换的问题、死锁的问题。以及受限于硬件和软件的资源限制问题。上下文切换即使是单核处理器也支持多线程执行代码。通过CPU给每个线程分配时间片来实现。CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一
2021-10-31 12:49:37 95
原创 Lunece介绍和简单实用
文章目录Lunece什么是全文检索数据分类结构化数据查询方法非结构化数据查询方法如何实现全文检索Lunece实现全文索引的流程索引和搜索的流程图创建索引获取原始文档创建文档对象分析文档创建索引查询索引用户查询接口创建查询执行查询渲染结果测试案例——配置开发环境Lunece是开发全文检索功能的工具包,从官方网站上下载lunece-7.4.0,并解压入门程序需求:创建索引查询索引分词器Lunece自带的中文分词器IKAnalyzer索引库维护索引库的添加Field域的属性添加文档代码实现索引库删除删除全部指定查
2021-10-31 00:06:43 733 1
原创 GIT入门使用
Git概述:Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是linus Torvalds为了帮助管理Linux内核开发的一个开放源码的版本控制软件。Git采用了分布式版本库的方式,不必服务器端软件支持。模块Git 有一下几个模块:工作区:我们写文件的地方,拥有(.git)的文件夹缓存区:Git所提供,是用来暂时存储文件的位置。本地库:Git所保存版本快照的地方。入门在使用Git前,需要先创建一个仓库,您可以使用一个已经存在的目录作为Git仓
2020-09-11 09:02:32 112
原创 JavaWeb简单实现一个做题
构思在看题库时,就能直接看到答案,从而不去思考本题,就想到做一个软件来实现,从本地拿到题库,自己来做的想法。题库这里我简单找一个题库文件类型是docx
2020-09-06 13:38:54 798
原创 XML解析和Java的反射
目录XML解析XML概述XML的作用XML语法文档声明元素属性注释转义字符CDATAXML约束DTD约束Schema约束dmo4j解析DOM解析原理API使用反射类的初始化XML解析XML概述XML全称为Extensible Markup Language,意思是可扩展的标记语言。W3C在1998年2月发布1.0版本,2004年2月又发布1.1版本,但因为1.1版本不能向下兼容1.0版本,所以1.1很少有人使用。同时,在2004年2月W3C又发布了1.0版本的第三版。所以我们通常使用1.0版本。X
2020-09-06 13:30:48 286
原创 Java8新特性——流式操作
Stream流流概述Stream更加简洁写法流式思想概述获取流流概述说道Stream流很容易想到I/O Stream,而实际上,Stream流不是I/O的一种,而是Lambda所带来的的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库该有的弊端。几乎所有的集合(Collection接口或Map接口等)都支持直接或者间接的遍历操作,而我们需要对集合中的元素进行操作的时候,除了必须的添加、删除、获取外,典型的就是集合遍历。例如:public class Demo01ForEach
2020-09-03 17:57:39 377
原创 Java——网络编程
网络编程网络编程入门软件结构网络通信协议协议分类网络编程三要素协议IP协议端口号TCP通信编程概述Socket类构造方法成员方法ServerSocket类构造方法成员方法简单的TCP网络程序分析实现服务器向客户端回写数据模拟B\S服务器网络编程入门软件结构C/S结构 :全称Client/Server结构,只是客户端和服务器结构,常见程序有QQ、迅雷等软件。B/S结构:全称为Browser/Server结构,是指浏览器和服务器结构。常见的浏览器有谷歌、火狐等。两种架构各有优势,但是无论哪种架构,
2020-09-01 20:26:21 144
原创 Java——IO流
流IO流概述IO的分类顶级父类字节流一切皆为字节字节输入流(OutputStream)FileOutputStream类构造方法写出字节数据数据追加续写写出换行字节输入流(InputStream)FileInputStream类构造方法读取字节数据字节流练习:图片复制字符流字符输出流(Reader)FileReader类 输入流构造方法读取字符数据字符输出流(Writer)FileWriter类构造方法基本写出数据关闭和刷新写出其他数据IO流概述当你电脑上插入语一个U盘,可以把视频,拷贝到你的电脑硬盘
2020-09-01 16:49:45 115
原创 Java中ArrayList集合的扩容机制
ArrayList扩容机制集合和数组ArrayList扩容集合和数组集合的底层也是用数组来实现的,数组在创建的时候是需要定长度的。那这样为什么集合在创建的时候不需要定长呢?看源码/** * Constructs an empty list with an initial capacity of ten. */ public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
2020-08-20 20:20:41 1258
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人