- 博客(54)
- 收藏
- 关注
原创 NIO总结
NIO(Non-blocking IO)是Java 1.4版本开始引入的一个新的IO API,旨在代替传统IO,它引入了缓冲区和通道的概念,通过选择器实现多路复用。传统IO会区分字节流InputStream和OutputStream以及字符流Reader和Writer,可以发现他们都是单向的,而NIO的通道可以是双向的。
2023-06-28 10:11:51
251
原创 从简入繁详解代理模式(手写JDK动态代理)
1简单概要代理模式:指为其他对象提供一种代理来控制对这个对象的访问。代理模式主要有两个目的:①保护目标对象;②增强目标对象。它的类图如下:2分类与详解2.1 静态代理举个栗子:儿子正在找对象,而父母希望儿女早点找到另一半,于是在儿子找对象的同时帮他物色:interface Person{ void findLove();}public class Son implements Person { public void findLo...
2020-11-19 16:10:58
906
原创 由简入繁详解单例模式
1. 概念单例模式(SingletonPattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。2. 分类2.1 饿汉式单例模式饿汉式单例模式在类加载的时候就初始化并创建单例对象,它是绝对的线程安全,没有加任何锁、执行效率也比较高,但不管用或不用都必须占用一定空间,Spring的IOC容器ApplicationContext就是饿汉式的。它的代码如下,很好看懂:/** * 写法一:静态代码块初始化 */public class Single.
2020-11-05 11:08:56
512
原创 JVM垃圾回收
1.概念垃圾回收(Garbage Collection,GC)是JAVA特有功能,垃圾收集意味着程序不再需要的对象是"无用信息",这些信息将被丢弃回收。2.垃圾的判断如何判断程序中哪些是垃圾,哪些是有用的对象?2.1 引用计数法当一个对象被引用,给它设置一个初值为0的引用计数器,被引用一次,计数器加1,当引用失效,计数器减1,当计数器为0时该对象可被当做垃圾回收。存在问题:对象循环引用。对象间的相互循环引用导致计数器不为0。2.2 可达性分析算法根对象(gcro...
2020-10-05 18:45:28
250
原创 Java对象解密
1. 对象的创建检查类是否加载:虚拟机遇到一条new指令时,先去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化过,如果没有必须先执行相应的类加载过程;分配内存:类加载检查通过后,接下来虚拟机将为新对象分配内存,对象所需的内存大小在类加载后可以确定,为对象分配空间的任务等同于把一块确定大小的内存从Java堆中划分出来。这个操作有两种方法:指针碰撞(内存规整)、空闲列表(内存不规整)。为对象分配内存时的指针修改并不是线程安全的,解决
2020-10-05 16:02:08
212
原创 排序算法优劣势总结
插入类直接插入排序思想:将数组分为有序区和无序区,有序区开始只有一个元素,从第二个元素(无序区的第一个元素)arr[i]开始,由于arr[1]-arr[i-1]已经有序,所以从后面往前判断,若大于当前值r[j],则将r[j]-r[i-1]向后挪一位,随后插入。空间复杂度:O(1)时间复杂度:O(n^2)优势:小规模输入、有序劣势:刚好反序的、大规模输入稳定性:稳定折半插入排序思想:在直接插入的基础上,在r[1]-r[i-1]中确定r[i]的插入顺序使用二分查找。空间复
2020-09-26 23:09:04
1579
原创 操作系统知识梳理
1 引论1.1 操作系统的概念操作系统是控制和管理计算机硬件和软件资源、合理地组织计算机的工作流程,以及方便用户使用的程序和数据的集合。1.2 操作系统的作用①OS是用户和计算机硬件系统之间的接口;②OS是计算机系统资源的管理者;③OS实现了计算机资源的抽象。1.3 操作系统的发展1.3.1 未配置操作系统的计算机系统①人工操作系统(装带/卸带);②脱机输入/输出方式(为了解决CPU和IO速度不匹配)。1.3.2 批处理系统①单批道处理系统(一个作业紧接着一个
2020-09-05 15:56:04
342
原创 浅析finally关键字如何一定执行
finally关键字通常和try/catch搭配使用,当程序执行到try中时,finally中的代码一定会执行。finally为什么会一定实现? public static void main(String[] args) { try { System.out.println("try"); } catch (Exception e){ System.out.println("catch");
2020-05-11 16:53:30
547
原创 JVM内存结构
1. JVM的内存结构JVM的内存结构主要包括五个部分:程序计数器、虚拟机栈、本地方法栈、堆和方法区,其中程序计数器、虚拟机栈、本地方法栈是线程独有的,而堆和方法区是线程共享的。1.1 程序计数器(Program Counter Register)程序计数器是存放下一条指令所在单元的地址的地方,和汇编中的CS:IP寄存器差不多,都是记录下一条指令的地址。每一个线程有一个独立的程序计数器...
2020-05-05 19:03:32
640
原创 分别使用BIO和NIO来实现文件的拷贝并比较两者的效率
1. 本期竞争者有四位,分别是:第一位:FileInputStream+FileOutputStream(BIO);第二位:BufferedFileInputStream+BufferedFileOutputStream(BIO);第三位:ByteBuffer+Channel(NIO);第四位:MappedByteBuffer+Channel(NIO);2. 分别实现文件拷...
2020-04-29 14:11:54
779
原创 基于javafx、socket的联机五子棋:实现原理以及遇到的相关问题
1. 实现原理:(1)客户端:①:Client类:表示客户端的主线程,在这个类中定义了客户端的UI界面,所以javafx的按钮事件写在其中;②:Lisener类:客户端最重要的类,它是一个线程,作为内部类可以使用Client类里面的UI,Lisener主要的工作是负责和服务端通信,当收到服务端传来的信息时将信息反馈在UI界面上,也可以将UI界面上的信息发送给服务端,Lisener类在...
2020-04-14 12:57:53
844
原创 SpringMVC学习【2】
1. 响应:(1):返回值为String:①:使用方法: /** * 在request中存值 * @param model * @return */ @RequestMapping("/testString") public String testString(Model model){ User user...
2020-03-31 21:14:43
214
原创 SpringMVC学习【1】
1. SpringMVC介绍:概述:通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如JavaServer Pages(JSP)技术、Velocity、Tiles、iText和POI。Spring MVC 框架并不知道使用的视图,所以不会强迫开发者只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、过滤器以及处理程序对象的角色,这种分离让它们更容易进...
2020-03-26 15:21:01
387
原创 Spring学习【4】
1. JdbcTemplate使用:(1):jar包导入: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> ...
2020-03-23 14:22:37
106
原创 归并排序以及基于ForkJoin框架实现的并行归并排序(使用RecursiveAction)
1. 首先理解归并排序的实现过程:我想大家肯定都了解过归并排序,那些文字描述包括分治法我就不复制粘贴了,我这里以图的方式给出它的原理:重要点:(1):假设a数组存储待排序数组,在合并数组时避免不了改变数组内的值,所以需要一个t数组暂时保存中间结果,举个例子:在合并数组为【5,4】时,合并的结果应该是【4,5】,先将结果保存在t里面(因为中间不是简单的交换,可能还包含多个步骤),最后...
2020-03-13 12:40:52
555
2
原创 Spring学习【3】
1. AOP面向切面编程:(1):相关术语:①:JoinPoint:连接点:被拦截(代理)的方法;②:JoinCut:切入点:真正被拦截后增强的方法;③:Advice:通知:拦截到JoinPoint后所要做的事情:——分为前置通知、后置通知、异常通知、最终通知和环绕通知。④:Introduction:引介:可在运行期间为类动态添加一些方法;⑤:Target:目标:被代理...
2020-03-09 15:10:10
201
原创 回调机制:父亲与儿子
问题描述:父亲让儿子写作业,然后父亲去工作,当儿子写完作业后父亲需要检查儿子写的作业。①:请用Java回调机制模拟这个场景;②:当父亲和儿子都是一个线程时,模拟这个场景。问题①分析:分析结束,那么可以给出代码了:Father类:public class Father { private Son son = new Son(this);; publi...
2020-02-28 12:14:29
265
原创 并行任务求解:数豆子求PI(3.1415926...)
问题描述:给定一个边长2r的正方形,有这样一个圆:以正方形对角线为圆点,以r为半径。现在在正方形区域内随机撒豆子,落在圆内的豆子数为k个,落在正方形内的豆子数为n个,根据以上给定的信息编程求PI,要求用并发(多线程)提高解题效率。解:初步分析:由已知信息可以得出: (Sc表示圆的面积、Ss表示正方形的面积)所以: 得到: ...
2020-02-27 13:32:50
887
原创 Spring学习【2】
一. ioc的注解配置:1. 注解分类:(1):用于创建对象的注解:①:Component:——作用:用于把当前类对象存入spring容器中;——属性value:用于指定bean的id。当我们不写时,它的默认值是当前类名,且首字母改小写。②:Controller:一般用在表现层③:Service:一般用在业务层④:Repository:一般用在持久层⑤:说明:C...
2020-02-25 14:07:38
242
原创 Spring学习【1】
1. Spring体系结构:2. 耦合:①:含义:对象间的依赖性。②:简单例子说明耦合: //1.注册驱动 /** * 此种方式程序在编译期就会报错,不管有没有执行它 */ DriverManager.registerDriver(new com.mysql.jdbc.Driv...
2020-02-20 16:07:19
278
原创 Mybatis学习【4】
1. 延迟加载和立即加载:①:延迟加载:按需查询(多对多、一对多);②:立即加载:不管用不用全部查询(一对一、多对一)。③:延迟加载多对一的实现:IAccountDao.XML配置: <resultMap id="accountUserMap" type="cn.xupt.domain.Account"> <id property="i...
2020-02-13 14:50:15
155
原创 Mybatis学习【3】
1. 动态sql标签①:if标签:<if test = "username != null"> username = #{username}</if>②:where标签:<where> <!-- 添加condition --></where>③:foreach标签:<foreach ...
2020-01-31 15:33:04
274
原创 Mybatis学习【2】
1. 用Mybatis实现对user表的增删改查操作(XML配置):接口名:public interface IUserDao①:查询所有findAll()——XML配置信息: <select id="findAll" resultType="cn.xupt.domain.User"> select * from user <...
2020-01-17 19:17:22
146
原创 Mybatis学习【1】
Mybatis(持久层框架)1. 概述:让用户只关注sql语句本身,使用ORM思想实现结果集的封装。 ORM:Object Relational Mappging(对象关系映射)2. 环境搭建:(1):创建maven项目填入mybatis和mysql驱动包的依赖坐标;(2):创建实体类和dao的接口;(3):创建mybatis主配置文件:SqlMapConfi...
2020-01-15 19:22:15
133
原创 maven总结
1. maven的主要功能:(1):依赖管理:jar包的管理;(2):一键构建:自动编译、运行、打包、部署。2. maven的主要命令:(1):mvn clean:删除target目录;(2):mvn compile:编译项目;(3):mvn test:编译项目+编译测试项目;(4):mvn package:编译项目+编译测试项目+打包项目;(5):mvn inst...
2020-01-14 15:21:47
212
原创 硬件课程设计【微波炉】
需求:用3个七段教码管分别模拟微波炉的火力以及时间,两个数码管模拟时间(分),一个数码管模拟档位。在输入模式下,用户自定义要工作的时间以及档位,设置好之后拨动启动开关,开始工作,此时时间开始计时(时间递减),当时间减到00后,系统完成工作。原理:用8255的A和B口作为输出分别控制七段数码管显示的时间和档位,用Co低4位作 为输出控制数码管的位码,然后用仅剩的c口高四位作为时间及档位的...
2020-01-05 20:57:55
922
原创 设计模式(行为型)总结
行为型模式(Behavioral Pattern)是对在不同的对象之间划分责任和算法的抽象化,行为型模式不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用。作用:通过行为型模式,可以更加清晰地划分类与对象的职责,并研究系统在运行时实例对象之间的交互。在系统运行时,对象并不是孤立的,它们可以通过相互通信与协作完成某些复杂功能,一个对象在运行时也将影响到其他对象的运行。分类:模板方法模式(...
2019-12-29 11:41:20
583
原创 设计模式(结构型)总结
结构型模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构。结构型模式分为:适配器模式(Adapter)桥接模式(Bridge)组合模式(Composite)装饰模式(Decorator)外观模式(Facade)代理模式(Proxy)享元模式(Flyweight Pattern)...
2019-12-29 11:29:24
569
原创 操作系统进程管理实验【3】
继上次的创建线程后,我又带着一段新的代码来了QAQ这个代码也和线程有关,pthread_create()函数我上次提到了,就不再赘述了,不知道的朋友可以百度或者看我的进程管理实验【2】。今天的代码不仅和线程有关,它其实描述的是死锁。死锁是什么呢?死锁是指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处...
2019-12-21 23:42:56
1127
原创 操作系统进程管理实验【2】
pthread_create()创建线程:创建线程(实际上就是确定调用该线程函数的入口点),在线程创建以后,就开始运行相关的线程函数。int pthread_create(pthread_t *tidp, const pthread_attr_t *attr, (void*)*start_rtn(void*), void *arg);返回值返回0表示成功,返回-1表示失败。参...
2019-12-21 13:17:21
241
原创 操作系统进程管理实验【1】
fork函数:fork函数用于创建一个新进程,称为子进程,它与调用它的进程同时运行,此进程称为父进程。创建新的子进程后,两个进程将执行fork()系统调用之后的下一条指令。子进程使用相同的pc(程序计数器),相同的CPU寄存器。它不需要参数并返回一个整数值,下面是fork()返回的不同值: 负值:创建子进程失败。 零:返回到新创建的子进程。 正值:返回父母或来电者...
2019-12-10 22:57:14
388
原创 设计模式(创建型)总结
创建型设计模式主要包含:简单工厂模式(Simple Factory)工厂方法模式(Factory Method)抽象工厂模式(Abstract Factory)原型模式(Prototype)单例模式(Singleton)建造者模式(Builder)主要总结前三类。以下所有类图翻译中不是创建在一个类里面,你也可以将他们创建在一个类里面(1)简单工厂模式:示例类图:...
2019-12-07 11:43:56
214
原创 排序算法汇总
说明:从大一的实验室纳新需要了解排序算法到现在大三,期间还学了数据结构,详细讲了排序算法,但到了现在大三一提起排序,唯一有印象的还是冒泡排序,所以想抽点时间整合一下各类排序算法,差不多有14种算法,我用了比较粗略的方法计算每种排序算法分别在大数组和小数组的情况下的运行时间,并且给出了每种排序算法的时空复杂度。代码放在最下面1:插入类排序 a:直接插入排序:public ...
2019-10-26 20:41:51
183
原创 词法分析器
例题:构造一个DFA,它接受一个二进制符号串:每个1都有0直接跟在右边,并将其化简。解析:由题意可知这个符号串是由0和10构成的,所以它的正规式为:(0|10)*(1):求NFA:(2):NFA确定化:ԑ_I是初始集I的ԑ闭包,I_0是I集合的0弧转换的ԑ闭包,I_1同理。ԑ_I I_0 I_1 {X,A,Y} {A,Y} {B} {A,Y}...
2019-10-23 21:07:16
3555
2
原创 prim算法
这几个概念清楚就别看了完全图:任意两个顶点间都有直达的边相连的无向图。连通图:任意两个顶点间都有路径相通的无向图。 生成树:一个连通图的生成树是指一个极小连通子图,含有图中的全部n个顶点,但只有足以构成一棵树的n-1条边。为什么是n个顶点和n-1条边呢?我们知道树的结构,一个节点可以通过一根树支访问它的父节点,所以一个节点对应一根树枝,但树的根是没有父...
2019-10-10 21:14:34
984
原创 1002 A+B for Polynomials
1002 A+B for Polynomials (25 分)This time, you are supposed to find A+B where A and B are two polynomials.Input Specification:Each input file contains one test case. Each case occupies 2 lines, a...
2019-09-19 17:17:24
88
原创 1001 A+B Format
1001 A+B Format (20 分)Calculate a+b and output the sum in standard format -- that is, the digits must be separated into groups of three by commas (unless there are less than four digits).Input Spe...
2019-09-14 20:58:04
113
原创 课程设计感想(大二)
前两周做了软件工程的课程设计,项目内容是影院票务管理系统,基于mysql数据库,java自带的javafx界面设计和一部分JDBC连接数据库的知识,采用的体系结构是C/S架构,以下是项目的基本框架(我的部分:演出计划管理):bin存放类文件,lib存放导入的jar包,database存放sql语句和property文件,resource存放图片等资源,src为源码。我的部分的难点:时...
2019-06-18 23:13:45
1304
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人