
Java
文章平均质量分 96
FuYouJ
这个作者很懒,什么都没留下…
展开
-
SpringIoC容器的源码解析
源码也看了好几遍了,但是就是记不住,所以又来缕缕。IOC现在是一个框架都具备了,虽然在自己也实现了一个简单的 框架,也具备IOC的功能,但是还是太简单了。下面来看看Spring的IOC到到底是个什么情况。初始化容器一般用两种方式,从xml文件读取,从配置类解析。分别对应于以下代码。 ApplicationContext applicationContext = new FileSystemXmlApplicationContext(xmlPath);//Entrance.class 你的配置.原创 2020-06-13 16:18:04 · 286 阅读 · 0 评论 -
在线留痕阅卷系统功能说明及其演示
引言追求速度浏览者可以直接跳到项目图文展示下本在线阅卷系统主要服务于高校,支持试卷导入到系统,动态分配任务给多个教师,同时在阅卷工作完成后从班级,知识点,试卷高分低分区分度,评判试卷难度,得分率,及格率,分数标准差等多角度多维度统计学生成绩展示考试成果。在支持成绩统计分析和成绩到处这方面极大的减轻了考试阅卷后试题改卷携带试卷的负担,减少了阅卷工作完成后,统计成绩分析成绩的工作量。在传统的考试情况中,每个老师的阅卷工作上报成绩流程及其繁琐麻烦,老师往往需要与学生试卷卷不离身导致便携性很差,即使在改完试原创 2020-06-08 13:03:52 · 6717 阅读 · 13 评论 -
自己手写一个AOP动态代理框架(2)
之前实现的自己手写一个AOP动态代理框架(1)只能根据控制器,业务层,DAO层等等注解的形式来进行切面,这里仿Spring,支持AspectJ的表达式进行定位类方法资源,然后进行代理。集成AspectJ的语法树,即复用AspecJ的对资源的定位功能。也就是说可以使用 execution(* com.fuyouj.service..*.*(..))这样的表达式。AspectJ简介提供了完整的AOP实现。定义了切面语法和切面语法的解析。Spring支持方法级别的织入(满足80%的需求了),Aspe.原创 2020-06-02 17:22:13 · 613 阅读 · 0 评论 -
万字长文!自己手写一个AOP动态代理框架(1)
前面提到过动态代理的有两种简单的实现方式,就是JDK动态代理和CGLIB。不懂先看前文:SpringAOP的实现之代理模式自己写嘛当然是乞丐版了,为了实现简单 但是又具有一定的通用性(拒绝对被代理类有实现接口的强硬要求)。所以采用CGLIB的方式实现AOP。工程目录结构。首先要实现注解一样的 AOP,要定义与AOP相关的注解。定义2个AOP相关的注解标签。//作用在类上@Target(ElementType.TYPE)//运行时有效@Retention(RetentionPolicy.R原创 2020-06-02 01:04:23 · 1069 阅读 · 2 评论 -
小总结:ArrayList 和LinkedList的面试题
ArrayList 无参数构造器构造,现在 add 一个值进去,此时数组的大小是多少,下一次扩容前最大可用大小是多少?此处数组的大小是 1,下一次扩容前最大可用大小是 10,因为 ArrayList 第一次扩容时,是有默认值的,默认值是 10,在第一次 add 一个值进去时,数组的可用大小被扩容到 10 了。如果我连续往 Arraylist 里面新增值,增加到第 11 个的时候,数组的大小是多...原创 2020-03-30 20:48:37 · 1120 阅读 · 2 评论 -
深入Java集合LinkedList
现在由大恶人付有杰来从增删改查几个角度轻度解析LinkedList的源码1.整体架构LinkedList 底层数据结构是一个双向链表(),整体结构如下图所示:链表中的每个节点都可以向前或者向后追溯,我们有几个概念如下:链表每个节点我们叫做 Node,Node 有 prev 属性,代表前一个节点的位置,next 属性,代表后一个节点的位置;first 是双向链表的头节点,它的前一个节...原创 2020-03-30 20:33:46 · 373 阅读 · 0 评论 -
深入Java集合ArrayList的源码解析
现在由大恶人付有杰来从增删改查几个角度轻度解析ArrayList的源码首先ArrayList的底层数据结构非常简单,就是一个数组。从源码第115行我们可以得出信息,他的默认数组长度是10。/** * Default initial capacity. */ private static final int DEFAULT_CAPACITY = 10;那么...原创 2020-03-30 19:30:57 · 639 阅读 · 1 评论 -
复习之路之JAVA多线程基础面试题
我自己总结的,我觉得很全了,本篇章针对多线程基础,不包括JUC有几种实现线程的方法?从不同的角度看有不同的答案,通常来说,可以分为两类,继承和实现的两种方式。准确的讲,实现线程只有一种方式,那就是构造Thread类,但是在Thread类里面,他的run方法有两种情况。第一种,实现一个runnable接口,重写他的run方法,然后再把这个实例传给Thread类,再让Thread类执行这个...原创 2020-03-18 11:39:20 · 1252 阅读 · 0 评论 -
复习之路之JAVA基础知识概括
摘抄自公开的笔记,一部分做自我补充。1. 面向对象和面向过程的区别面向过程 : 面向过程性能比面向对象高。 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发。但是,面向过程没有面向对象易维护、易复用、易扩展。面向对象 :面向对象易维护、易复用、易扩展。 因为面向对象有封装、继承、多态性...原创 2020-03-17 17:11:20 · 283 阅读 · 0 评论 -
自己总结的计算机网络常见面试题
自己的笔记,自己才看的懂,很多图片我都没有说明,见谅TCP/IP参考模型说说TCP的三次握手IP协议是无连接协议,他不会占用两个正在通信计算机的通信线路,这样IP就降低了对网络线路的需求,每条线可以同时满足不同计算机之间的通信需要。通过IP消息会被分割成较小的比较独立的包,并通过因特网在计算机之前传送,IP负责将每个包路由至他的目的地。IP协议没有做任何事情来确认数据包是否按顺序发送,...原创 2020-03-12 17:23:24 · 3572 阅读 · 1 评论 -
JavaIO之NIO,BIO的复制文件的简单比较(3)
本文展示BIO,NIO复制文件的不同写法,和一丢丢的效率对比。在演示NIO之前 ,先简单说一下 NIO在BIO中,根据方向的不同,分为输入流,输出流,而在NIO中,就没有这个概念了,NIO中,提出了Channel的概念,一个通道是可以读也可以写的。channel通过和Buffer的交互,可以往buffer写数据也可以读数据,这是怎么实现的呢?首先,Buffer是一个数组,有三个重要的指针...原创 2020-03-09 22:12:55 · 426 阅读 · 0 评论 -
javaBIO之实现一个聊天室(2)
上篇简单实现了回音壁,但是这也太不够意思了,如果可以多人发言那就稍微有点意思了。这里先来说说java BIO 编程模型。BIO也就是我们经常说的java IO,在这种传统的模式下,如果要实现服务端服务,1.首先他要等待客户端连接吧?执行serverSocket.accept();会一直阻塞在这句话这里,直到有客户端连接才会做其他的事情。2.那么如何做到服务多个客户端呢?我们采用新开一个...原创 2020-03-09 21:43:06 · 300 阅读 · 0 评论 -
javaBIO之实现最简单的回音壁(1)
闲来无事做,不如写博客。今晚准备抽点时间,写一点java网络编程的BIO,NIO,AIO。本文从最简单的回音壁开始,我们也是要讲究循序渐进的哈~回音壁就是客户端向服务端发送一个消息,服务端原样的回复回来。在java中实现客户端和服务端通信,有很多的类。这里先演示最简单的。具体思路很简单实现也非常简单,就是服务端监听888端口,客户连接指定的IP地址,服务端读取客户端的消息,然后再写回去...原创 2020-03-09 20:33:17 · 459 阅读 · 0 评论 -
你知道死锁,但是你知道活锁吗?
说来也是有趣,我完全是被代码带笑了。什么是活锁?线程没有阻塞,始终在运行,但是程序始终得不到进展,因为线程始终做重复的同样的事情。假设有这样一堆恩爱夫妻,贫困年代,大家条件不好,有了吃的互相谦让,过于谦让,一张纸谦让,就会导致活锁。就是线程一直在运行,事情却没有任何进展。和死锁相比,活锁更害人,因为活锁一直在消耗CPU资源,而死锁会阻塞。定义一个 勺子类:static class Sp...原创 2020-02-15 22:01:57 · 270 阅读 · 0 评论 -
从Happens-before 原则说volatile和synchronized
什么是Happens-before ?1.)Happens-before 规则是用来解决可见性问题的:在时间上,动作A发生在动作B之前,B保证能看见A,这就是Happens-before 原则。2.)如果一个操作Happens-before 第二个操作,那么我们就说第一个操作对于第二个操作是可见的。什么不是Happens-before ?两个线程没有相互配合的机制,所以代码X和Y的执行结果...原创 2020-02-15 14:14:14 · 282 阅读 · 0 评论 -
一段代码演示代码重排序带来的影响
假设在类中,定义这样的4个变量。 private static int x = 0, y = 0; private static int a = 0, b = 0;两行代码分别由两个线程进行如下的操作。线程1: a = 1; x = b;线程2: b = 1; y = a;在一般的情况下,由于两个线程的快慢顺序前后顺序,均可能出现如下情况。发生碰撞:a=...原创 2020-02-15 10:34:00 · 259 阅读 · 0 评论 -
JAVA中N种单例模式简单概括(防反射,克隆,序列化,实例化,多线程安全)
里面包括了老生常谈的饿汉式,懒汉式以及枚举类 静态代码块 序列化场景下,多线程场景下的问题。话不多说,直接开干。**饿汉式:**就是立即加载的意思,立即加载在中文中有着急,急迫的意思。所以就叫饿汉式吧。1.饿汉式的最简洁版本package 单例模式的几种写法.饿汉式;/** * @Author:FuYouJie * @Date Create in 2020/1/23 13:32...原创 2020-01-23 16:46:57 · 690 阅读 · 2 评论 -
多线程之notify唤醒的随机性
在看多线程核心技术这本书的时候,里面提到了一句,notify()方法可以随机唤醒等待队列中等待统一资源的“一个一个线程”。突然很疑惑什么是统一共享资源,是不是随机。于是改动书上的代码实验一下,看一年运行结果。原来代码如下 package 线程间通信.wait_notify_size5;import java.util.ArrayList;import java.util.List;/...原创 2019-11-12 00:05:19 · 670 阅读 · 0 评论 -
ecilipse+Maven项目创建中的一些小技巧(1)
这是问我的第一篇博客。鉴于网上的资料太多报错了的,所以这里我慢慢记录我的心得。首先正确下载moven版本:http://maven.apache.org/download.cgi选择哪个带BIN的压缩包下载,解压,具体配置环境自行百度。因为众所周知的原因,直接访问maven公共仓库的速度比较慢,所以推荐使用阿里的maven仓库镜像。编辑setting.xml文件,在mirrors节点下,新增...转载 2019-06-06 17:21:37 · 400 阅读 · 0 评论