![](https://img-blog.csdnimg.cn/20210806150533701.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
文章平均质量分 90
Java学习之路
Honor_z
因为纸质笔记不好保存所以写博客了。
展开
-
【学习笔记】SMBMS项目练习
文章目录SMBMS(超市管理项目)准备工作1、登录功能实现(一次完整的MVC)1.1、MVC理解1.2、重定向访问WEB-INF目录问题(权限页面的访问)2、登录功能优化2.1、如何为WEB-INF目录下文件加过滤器3、密码修改4、优化密码修改使用Ajax5、用户管理实现5.1、获取用户数量5.2、获取用户列表5.3、获取角色列表5.4、用户管理的Servlet5.4.1、数据获取和数据回显5.4.2、转发访问WEB-INF目录问题底层数据库访问公共类存在的坑SMBMS(超市管理项目)准备工作搭建原创 2021-09-15 14:20:16 · 892 阅读 · 0 评论 -
【Java】乌龟的屁股
记录一些规定要做的事,一来顺手,二来方便随时查看和修改。1、空白Maven_WEB项目 空白的maven_web项目一旦创建好,就立刻去修改。(1)web.xml加4.0的头文件<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance原创 2021-09-13 18:25:21 · 176 阅读 · 0 评论 -
【Java框架】手写实现简单的微服务之RMI框架
文章目录Ⅰ什么是RMIⅡRMI框架需求分析(一)准备工作:使用哪种代理ⅢRMI框架的实现(一)实现思路(二)RMI服务器启动前准备工作a. RMIBeanDefinitionb. RMIBeanFactoryc. RMIBeanFactoryBuilder(三)RMI服务器端a. RMIServerb. RMIServerWorker(四)RMI客户端a. RMIClientⅣ 后记和收获(一)RMI的诡异及其犀利之处(二)收获Ⅰ什么是RMI Remote Method Invoke(远程方法调用)。原创 2021-02-01 14:20:20 · 415 阅读 · 0 评论 -
【Java】关于equals方法踩过的坑
发现问题 这个坑是在写资源发现时候遇见的,具体问题可以简化成下面这个问题。首先是默认网络节点public class DefaultNetNode { private String ip; private int port; public DefaultNetNode(String ip, int port) { this.ip = ip; this.port = port; } @Override public int hashCode() { final int原创 2021-01-28 10:10:13 · 634 阅读 · 0 评论 -
【Java】手写实现负载均衡(LoadBalance)框架
文章目录负载均衡的提出手动实现轮询实现法随机法负载均衡的提出 一个网络应用应该有服务器和客户端两个角色。在我们以前写的网络项目中,例如以前我们用C/S框架写的聊天室应用。其本质是一个服务器和多个客户端。 这些客户端和服务器是长连接,在这种单服务器的情况下,服务器成为整个应用的核心,如果服务器崩掉,客户端所有请求将会失败。如果服务器要进行升级,那就得全体用户下线,服务停止。或者说同一个服务器总有自己的最大承载用户量吧,这种肯定不能满足用户们日益增长的需求。 因此就提出了多个服务器。服务器数量相原创 2021-01-26 14:38:28 · 1104 阅读 · 0 评论 -
【Java框架】RMI框架的一步步实现
RMI框架一步步实现首先来写我们的RMI服务器这边的代码import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class RMIServer implements Runnable { public static final int DEFAULT_PORT = 54189; private int port; private ServerSocket server;原创 2020-11-17 11:21:40 · 190 阅读 · 0 评论 -
【Java】Java线程池ThredPoolExcutor分析及源码解析
文章目录为什么要使用线程池为什么要使用线程池 说到线程池那么一定是应用在多线程情况中,所谓的多线程系统,即多线程并发执行,实际上是通过共享CPU时间片段实现的。OS将CPU时间分成“CPU时间片段”,每一个片段CPU执行某一个线程;当时间片段到了,由OS中的线程调度程序来选择下一个时间片段内执行的线程。但不是立即切换,还要做一些事,分析其过程:线程A时间片段到后,线程调度进程需要先保护现场信息,即需要将当前正在执行的线程暂时中断,并将这个线程当前执行的状态保存起来,当然是为了以后这个线程恢复执行时,原创 2020-10-30 00:32:06 · 315 阅读 · 1 评论 -
【Java】关于序列化的事和Gson工具以及泛型
文章目录序列化JSONJSON概述JSON与XML比较JSON语法规则GsonGson概念及基本用法由Gson产生的工具ArgumentMaker泛型泛型擦除泛型擦除的应用序列化序列化:将对象写入IO流中,以便于传输和存储反序列化:从IO流中恢复成序列化之前的对象,以便从流中得到数据进行解析意义:可以将Java对象转换为字节序列,就方便保存在磁盘或者网络传输了,也可以将已存在的字节序列恢复为原来的对象。所有在网络上传输的对象和在磁盘中保存的对象都需要序列化。给如下例子可以清晰感受到序列化的意原创 2020-10-21 23:20:01 · 368 阅读 · 0 评论 -
【Java】Java强大的机制——代理机制
文章目录JDK代理JDK代理要求Cglib代理Cglib代理分析 今天来整理新学到的Java中一种强大的机制——代理机制。先简单讲下我在网上看到的代理机制的描述,有一个目标类的对象,他不直接面对用户,而是在它的基础之上有另外一个对象,称为代理对象,用户用的是这个代理对象,真正的操作还是用的目标对象。接下来给例子讲下两种动态代理JDK和Cglib。JDK代理直接简单粗暴点上例子,给出我们要代理的目标类SomeClass和接口ISomeClasspublic interface ISomeClass原创 2020-10-19 10:52:36 · 240 阅读 · 0 评论 -
【Java】用Copy文件例子来描述文件操作
文章目录解决方法一解决方法一原创 2020-10-18 21:34:25 · 142 阅读 · 1 评论 -
【Java框架】自主模拟实现Spring核心——循环依赖问题的解决
文章目录(一)循环注入(二)循环依赖承接上文制作的工具(IoC容器),我们可以进行对循环依赖问题的讨论。(一)循环注入给三个类说明这个问题import com.mec.mSpring.core.Autowired;import com.mec.mSpring.core.Component;@Componentpublic class A { @Autowired private B b; public A() { } public B getB() { return b原创 2020-10-11 16:49:36 · 275 阅读 · 0 评论 -
【Java框架】自主模拟实现Spring核心——实现一个简易的IoC容器
什么是IoC IoC(Inversion of Control)控制反转,是一种设计思想,DI(依赖注入)只是实现ioc的一种方式。是Spring的核心内容。可以xml配置,注解。Spring容器在初始化先读取配置文件,根据配置文件或者元数据创建与组织对象存入容器,程序使用时再从ioc容器中取出需要的对象。 没有IoC,传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,对象的创建和对象间的依赖关系完全在代码中,代码是程序员写的,控制权在程序员手里,对象的创建由代码控制。原创 2020-10-09 17:23:08 · 377 阅读 · 0 评论 -
【Java工具】精准定时器工具(毫秒级误差)
需求分析由用户自行设定触发事件由用户提供具体工作过程在规定的触发事件到达时,自动执行具体工作过程。尽可能保证时间的精确性。这个工具有广泛的用途,例如轮询和CSFramework中踢出长时间不和服务器说话的客户端。SimpleDidadida首先给个简单的定时器实现SimpleDidaDida类public abstract class SimpleDidadida implements Runnable { public static final long DEFAULT_DELAY_原创 2020-10-08 03:14:51 · 2253 阅读 · 0 评论 -
【Java框架】CSFramework框架的应用——简易聊天室
先做服务器这边的界面,服务器界面这里不需要很花哨,只需要简简单单个控制台,命令行就行。要记得我们CSFramework有个观察者模式,Server(作为publisher)发出的消息要被这个界面(listener)得到,因此要实现IListener接口。import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.FlowLayout;import java.awt.even原创 2020-10-07 22:31:58 · 555 阅读 · 0 评论 -
【Java框架】保姆级教你写出简易框架——CSFramework
我们在计算机网络课程中学过网络的OSI的七层模型,但只是理解其描述的一些概念,并没有真正的实现,只是个概念性框架。而另一种提出的TCP/IP参考模型被投入应用了。参考前两种层次模型,我们可以提出CSFramework使用的层次模型,如下图。 首先是最底层通信层(Communication),该层只关心最底层通信的事和对端异常掉线问题,但不关心接收到的相关信息该如何处理。信息的处理不在这一层,这一层没有权利处理信息,只是将信息发给对端的作用。 下来是会话层(Conversation),该层会收到原创 2020-10-06 16:18:07 · 588 阅读 · 0 评论 -
【Java基础】Java网络编程基础
前言 现如今,互联网几乎在我身边随处可见,早已深入我们人类生活中。如今的软件如果没有网络功能,那是很不可思议的事情。(单机游戏都有局域网功能,小时候和朋友联机打的红警就是例子)。许多语言都支持网络编程,我见过C与Java有关网络的程序代码,从中深刻感受到有工具和没工具编代码效率是多么天差地别。就相当于在赛跑,C还在那里造车轮子,Java已经开始用别人给的车开始跑了。 最近一直在学习Java,因此用Java学习网络编程。C/S模式,又称客户端服务器模式。至少用两台计算机来分别充当客户机和服务器角色。C原创 2020-10-06 01:40:30 · 182 阅读 · 0 评论 -
【Java】关于synchronized的深入理解
近日在Java编程中使用到了synchronized这个关键字,对此不是特别了解想深挖以下内部原理,就在网上搜视频,看的是马士兵老师的讲解,听完之后有许多感想就此写出。CAS(无锁/乐观锁) 要讲清synchronized之前我们首先要了解什么是CAS。CAS(compare and swap)比较并且交换。CAS包括三个操作数:需要读写的内存位置的值E,进行比较的预期原值N和经过线程完后拟写入的新值V。首先读取值E,然后放到线程计算结果得V,计算结果后往回写的时候比较E与N,如果相同说明没人动原创 2020-10-05 23:51:23 · 223 阅读 · 0 评论 -
【Java】关于关键字volatile的深入理解
Volatile关键字 volatile:adj易变的;不稳定的;用来修饰变量的。翻译里的易变是针对多线程的,多线程修改同一个变量有可能会造成某些问题,就要使用volatile关键字。其最主要的两个作用是:线程可见性与禁止指令重排。线程可见性(禁止寄存器优化)我们首先来看一个程序public class Visiable implements Runnable { private static boolean flag = true;// private static volatile b原创 2020-09-28 22:10:20 · 191 阅读 · 0 评论 -
【Java笔记】关于面向对象的思考和自己用的工厂模式
面向对象的思考 在大学期间课堂有C语言课程和自学了Java。C语言是一个面向过程的程序设计语言,Java是面向对象程序设计语言。 在相关编程时,C语言实现的思想角度是:解决这个问题需要哪些过程,及这些过程进一步细分,最终形成一个功能函数,通过组合,协调这些函数,最终实现这个过程。 而Java实现的思想角度是,问题由哪些部件组成(对象),这些部件本身有哪些属性(成员)和关于这些属性的操作(方法)?部件和部件之间有什么联系,以及部件如何联系起来的,最终实现应用的目的。 举个例子来区分下两者吧。例原创 2020-09-28 01:58:43 · 77 阅读 · 0 评论 -
【Java工具】自主实现简易的ORM框架
ORM ORM(Object Relational Mapping)对象关系映射,作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作Java对象一样操作它就可以了 。也就是将对象与数据库系统中的一条记录对应起来。我们首先来看一张表。 我们首先看表中表头是每一条记录拥有的东西,那我们是否可以把它变成一个model类,其成员就是表头。这样一条记录就可以变成一个model类的对象了。对象是在内存中,无法长期存储,但访问很原创 2020-09-25 22:18:23 · 415 阅读 · 0 评论 -
【Java工具】包扫描工具
包扫描 这个工具是在学了注解和反射机制后,遇到要把Model包下的所有有相关注解的类进行操作的时候遇到的。手动一个个Class.forName(className)太麻烦了,并且还要进行相应的筛选。因此才想出来做包扫描工具,把扫描过程用一个类完成,其他如何操作向外提供。 包扫描工具功能:给一个包名字,扫描该包下的所有类,如何操作这些类对外提供出去。import java.io.File;import java.io.IOException;import java.net.JarURLConne原创 2020-09-25 11:11:36 · 351 阅读 · 0 评论 -
【Java工具】EasySwing一键生成界面的工具
EasySwing介绍 不知道大家在编写Java界面部分的时候有没有这种感觉,就是设计界面这部分步骤大部分都大同小异,都是首先先new出一个新控件,然后设置这个新控件的一些属性,最后将这个控件加进相应的面板(例如:Jpanel)或者容器(例如:Container)里。反正我在设置界面的时候对于这些纷繁复杂的控件类的设置方法记不清,总要去网上查相应文档才能设置。例如jfrmMain.setLocationRelativeTo(null);设置窗口位于屏幕中央这句代码我总是漏写。 所以,对于这些大致逻辑原创 2020-09-25 01:24:00 · 1031 阅读 · 0 评论 -
【Java基础】关于Java接口的作用
接口功能与特点类型的统一与保护 我们在编程的时候,会不断的创建出许多类,类的本质就是类型,随着类得种类越来越多,数据类型也变得越来越多。假如我们有个需求,需要统一管理某些类,我们很容易就能想到使用HashMap,处理键值对的好帮手。在没有接口的情况下,我们可以使用万物的基类Object。HashMap<String, Object>,但是,问题也出在Object上,正是因为它的包容性,任何其他类类型的对象也可以存储到这个Map里,对这个Map进行捣乱。 上述问题本质是因为“类型保护的缺原创 2020-09-25 00:19:15 · 304 阅读 · 0 评论 -
【Java工具】XML文件与Properites文件解析工具
XML文件与Properties文件在我的Java学习中和以后要接触的框架中十分常见的文件类型。这些文件懂了相关的编写规则后会十分容易写出来,但是作为配置文件如何去用它才是关键。人根据自己要完成的目的编写相关文件,可是你把这个文件放在计算机面前它不懂啊,它只知道01序列。因此,对于这种高频出现的文件,我们有必要编程,编写一个工具来解析它,方便以后使用。我不是直接把相关解析工具代码直接贴出来,而是一步步写关于这个工具如何造出来,这样才能学习更深刻并且里面蕴含的工具思想也能写出来。XML文件解析工具初识原创 2020-09-24 23:48:08 · 285 阅读 · 0 评论