Java
文章平均质量分 92
JAVA学习笔记、心得
雨下一整晚real
梦里不觉秋已深,余情岂是为他人
展开
-
【设计】OOA、OOD、OOP
OOA,OOD,OOP 是针对现实的需求最终输出产品过程。在现实中 OOA,OOD 并没有显著的区分。OOA,OOD,OOP 有时是不断的交替进行。对于现在的软件开发中,大部分迅速敏捷至极的项目,基本上是不会输出相关的开发设计图资源的,而是直接进入到 OOP 的阶段。直接进入 OOP 阶段,缺乏足够的 OOA 以及 OOD 过程,那么就会对 OOP 阶段的代码质量造成影响。这里也并不是说有了 OOA 和 OOD,系统的质量就一定好;原创 2022-11-28 20:35:19 · 1856 阅读 · 0 评论 -
【Java】JDK 1.8新特性
缺陷是当需要修改接口时候,需要修改全部实现该接口的类,目前的 Java 8 之前的集合框架没有 foreach 方法,通常能想到的解决办法是在 JDK 里给相关的接口添加新的方法及实现。他们的目的是为了解决接口的修改与现有的实现不兼容的问题。Java 8 中新的时间和日期管理 API 深受 Joda-Time 影响,并吸收了很多 Joda-Time 的精华,新的java.time 包包含了所有关于日期、时间、时区、Instant (跟日期类似但是精确到纳秒)、duration(持续时间)和时钟操作的类。原创 2022-10-12 01:15:57 · 334 阅读 · 0 评论 -
【项目】API接口的加签和验签
接口的安全性,和网络是分不开的。所以大多数情况下,还是需要考虑网络环境的安全性。提到的解决方案,也有很多思想借鉴于网络协议。API接口入门(二):API接口的签名验签和加解密原理API 接口签名验签_新猿一马的博客-CSDN博客_接口签名。原创 2022-09-10 17:31:36 · 3855 阅读 · 0 评论 -
【项目】微信接口定时推送天气信息
此处可以做一些优化,比如授权用户的地址信息,根据用户的经纬度信息,计算得出区号 ID,然后请求对应的区号 ID 的天气信息即可。要查询的城市ID配置到 application.yml 的 district_id。的服务文档的请求参数的 district_id一栏下载 “行政区划编码” 查看。中申请对应的接口,配置到application.yml 的 txKey 中即可。备注:需要开启对应的接口服务,此处需要开启的有彩虹屁以及天气诗句接口。项目的整体运行,需要依赖于微信的公众号推送接口。原创 2022-09-04 19:35:18 · 554 阅读 · 0 评论 -
【Java】switch-case 和 if-else 的运行效率差异
同理来说,如果是 String 类型,则同样换算数字来进行计算,只不过使用的是 String 的 Hashcode 方法来获取 String 的对应数值。那么在这种情况下,switch-case 的效率是比较低的。在 switch 的情况稀疏的情况下,tableswitch 的 table 表示在空间方面变得低效,也可以使用lookupswitch 指令。在 switch-case 中,case 的值是连续的话,会生成一个 TableSwitch 来进行优化,这样的情况下,只需要在表中进行判断即可。原创 2022-09-04 18:58:43 · 2429 阅读 · 4 评论 -
【项目】多种方式统一登录入口的设计方案
在编写项目的时候,通常会遇到很多情况下,需要实现统一登录入口。统一登录入口通常指的是:能够实现手机号、邮箱、用户名等信息登录,且共用一个登录入口。这种登录方式现在属于一种主流的登录方式,除此之外,移动端通常还有本机号码一键登录。鉴于各种登录账号(指的是手机号、邮箱、用户名等可以唯一鉴别用户的信息,以下统称登陆账号)的组成不一样,我们可以在后端对数据进行区分。我们在后台对用户的数据进行记录,一般要使用一个数据表来进行存储。表结构类似这种 。那么我们在规划登录的时候,设置了手机号和邮件均可登录,且要求统一登录入原创 2022-06-02 02:07:37 · 1655 阅读 · 2 评论 -
【项目】基于TRTC的实时多人会议实现
一、需求分析最近项目中需要实现一个多人会议的功能。由于考虑到功能的复杂性,选择接入第三方平台实现。为了功能的稳定性,选取当前比较流行的 TRTC (Tencent Real-Time Communication,腾讯实时音视频)。完成技术选型之后,我们需要了解该技术是如何实现和使用的。这一部分参考腾讯云对于 TRTC 的官方文档说明可以得知:实时音视频 新手指引-文档中心-腾讯云-腾讯云 (tencent.com)二、TRTC 的实现TRTC 在使用的时候,主要是作为一个转发云平台,负责处理多端的原创 2022-05-30 22:10:17 · 1709 阅读 · 0 评论 -
【项目】实现登录鉴权管理的方式(自定义注解、Security)
最近的项目中涉及到了登录用户的鉴权管理。对于权限管理,一共采用过两种方式:自定义注解拦截标注方法、 Spring Security 权限管理。根据可扩展性以及复用性考量,更推荐使用 Spring Security 方式。但是对于要求不是特别高的用户来说,更推荐使用第一种方式; Spring Security 中涉及的要素过多,更容易出现错误。自定义注解标注拦截方法项目中有一些路径是需要在用户登录之后才能访问的,所以需要对登录才能访问的路径映射方法进行自定义注解标注。标注了的方法,表示需要进行登录才能访问原创 2022-01-08 16:50:30 · 894 阅读 · 0 评论 -
【Java项目】社区论坛项目
仿照牛客网的社区论坛,包括页面以及后端开发、数据库搭建。使用技术整体框架:Spring Boot 2.4.10、Spring 5.3.9 、jdk 11.0版本控制:Git 2.33.1数据库:MySQL 8.0.23 、Redis 3.2.100模板引擎:Thymeleaf应用服务器:Apache Tomcat 9.0.52消息队列:Kafka 2.12-2.8.1分布式搜索:Elasticsearch 6.4.3使用Spring Initializr工具初始化项目,名称的处理相关如下:需要事原创 2021-12-23 14:31:55 · 6370 阅读 · 3 评论 -
【面试】Java中的synchronized关键字
一、并发编程三大特性可见性多个线程对同一个共享变量的环境中,单一线程对共享变量进行修改,不能让其他线程立马感知到。这就是个可见性的问题。主要解决方式:volatile关键字。原子性多线程环境下,对于一些指令的完成,可能被其他线程打断,导致只进行到一个并不存在的“中间态”,造成数据的一些错误。原子性应该是保证命令不可再分,要么完成要么失败。主要通过加锁的方式解决。有序性Java程序在执行之前,编译器会对程序做一些优化。这些优化有可能导致程序的实际执行顺序与开发者的编写顺序并不一致,导致了有序性的问原创 2021-09-27 22:48:02 · 364 阅读 · 0 评论 -
【面试】Spring框架面试题
一、谈谈你理解的 Spring 是什么?Spring是一个生态,包含了23个开源框架,可以构建Java应用所需的一切基础设施Spring通常指Spring Framework核心解释Spring是一个开源的、轻量级的容器(包含并管理对象的生命周期)框架Spring是为了解决企业级开发中业务逻辑层中对象之间的耦合问题Spring的核心是IoC和AOP二、Spring的优缺点有哪些?从IoC、AOP、事务管理、JDBC、模板集成(简化开发)、源码方面进行解释IoC:集中管理Bean对原创 2021-09-25 17:33:11 · 1575 阅读 · 0 评论 -
【Java基础】day01-day10
day01一、switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上?Java5以前,只能是byte,short,int,charJava5开始,加入枚举类型(enum)Java7开始,加入String,但long是所有版本都不可以的二、用最有效率的方法计算 2 乘以 82<<3,左移三位三、float f=3.4;是否正确?Java中默认写的小数属于 long 类型,直接赋值给float类型,属于将long强转型至flo原创 2021-09-12 17:37:42 · 557 阅读 · 1 评论 -
【MQ】MQ消息中间件RabbitMQ
第一部分:RabbitMQ一、MQ概念MQ,Message Queue,消息队列。本质是队列,遵循FIFO先进先出原则。只不过队列中存放的内容是message而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了MQ之后,消息发送上游只需要依赖MQ,不用依赖其他服务。功能流量消峰例如现在有一个订单系统,高峰期订单量过多,而系统最多只能处理1w次/s。此时可以通过消息队列使得这些超出处理能力的下单请求处于原创 2021-09-01 13:55:19 · 2611 阅读 · 0 评论 -
【Zookeeper】分布式技术Zookeeper
一、Zookeeper概述概念Zookeeper是Apache基金组织下的一个开源项目,是Apache Hadoop下的一个子项目,是一个树形目录服务。Zookeeper直译动物园管理员,管理由Hadoop(大象)、Hive(蜜蜂)、Pig(小猪)的管理员,简称zk。Zookeeper是一个分布式的、开源的分布式应用程序的协调服务。主要功能配置管理:可以简化配置信息变更带来的配置复杂度。子服务的配置信息变更,只需要修改配置中心的配置即可完成批量对子服务配置信息的变更。分布式锁单机环境下,原创 2021-07-18 14:36:59 · 458 阅读 · 2 评论 -
【Dubbo】Dubbo的概述、快速入门
一、大型互联网项目架构目标传统项目和互联网项目传统项目指的是在一定范围内限定人群使用的项目,比如各种小范围的管理系统。互联网项目指的是在互联网上面发布使用的项目,比如各种商用应用网站。人数上:互联网项目面向的是全体网民,而传统项目面向的大多是企业内部用户数量级:互联网大型项目的用户数量级可达数亿,而传统项目最多上万左右容忍度:互联网项目的用户对于项目的使用大多是零容忍,而传统项目的用户容忍度更高用户体验:互联网项目讲究用户体验:美观、功能、速度、稳定性;传统项目的用户体验要求更低互联网项原创 2021-07-17 10:53:44 · 467 阅读 · 1 评论 -
【Mybatis】Mybatis-Plus框架
【Mybatis】Mybatis-Plus框架一、概述特性无侵入损耗小强大的 CRUD 操作支持 Lambda 形式调用更多特性参照Mybatis-Plus官网架构图片来源官网二、Mybatis-Plus使用入门应用首先在使用之前,我们先使用Mybatis完成CRUD操作,之后对Mybatis与Mybatis-Plus进行整合操作。一、创建项目之后,首先创建数据库中的数据对象-- 创建测试表CREATE TABLE `tb_user` (`id` bigint(20原创 2021-07-02 14:45:40 · 3485 阅读 · 2 评论 -
【Java】HashMap的实现原理
一、简介HashMap是基于Map接口的具体实现类,可以存储null键和null值。相比于Hashtable,HashMap是线程不安全的,没有同步操作,效率高。二、键唯一性HashMap中的泛型是<K,V>格式的,在具体的实现中,HashMap是可以保证键的唯一性的,但是存在特殊情况。如果是基本数据类型或者内置数据类型的包装类,例如:Integer、String等,可以保证键的唯一性。如果添加相同的键的数据多次,则会按照添加顺序覆盖最先添加的数据。如果是引用数据,如Object类原创 2021-06-28 20:41:48 · 306 阅读 · 1 评论 -
【Java】Spring Boot框架
【Java】Spring Boot框架一、Spring Boot概述概念SpringBoot提供了一种快速使用Spring的方式, 基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。2014年4 月,Spring Boot 1.0.0发布,Spring的顶级项目之一(https://spring.io)。Spring的缺点配置繁琐:需要配置各种不同的配置文件,配置过程繁琐。依赖繁原创 2021-06-23 10:47:51 · 4157 阅读 · 1 评论 -
【Java基础】反射;Java类加载以及反射
十、反射类加载当程序要使用某个类时,如果该类还没有被加载到内存中时,该系统会通过类的加载、类的连接、类的初始化三个步骤来对类进行初始化。如果没有出现意外,JVM会连续完成这三个步骤,所以有时也将这三个步骤统称为类加载或类初始化。类的加载类加载就是将class文件读入内存,并为之创建一个java.lang.Class的对象任何类被使用时,系统都会为之建立一个Java.lang.Class对象类的连接验证阶段:用于检验被加载的类是否具有正确的内部结构,和其他类是否协调一致准备阶段:负责为类原创 2021-06-07 22:06:57 · 225 阅读 · 2 评论 -
【Java基础】Lambda表达式的使用
九、Lambda表达式函数式编程思想概述面向对象的思想强调:”必须通过对象的形式来工作“函数式编程思想则尽量忽略面向对象的复杂思想;”强调做什么,而不是以什么形式去做“我们学习的Lambda表达式就是以函数式编程思想的一种体现Lambda表达式体验需求:启动一个线程,在控制台输出一句话:多线程程序启动了public class LambdaDemo { public static void main(String[] args) { // 实现类的方式实现原创 2021-06-07 22:04:49 · 306 阅读 · 1 评论 -
【Java基础】多线程、TCP/UDP网络编程
七、多线程实现多线程进程和线程进程:是系统正在运行的程序,系统进行资源分配和独立调用的基本单位;每一个进程都有它自己的内存空间和系统资源;线程:是进程中的单个顺序控制流,是一条执行路径单线程:一个进程中只有一条执行路径,则称为单线程程序多线程:一个进程中如果有多条执行路径,则成为多线程程序实现多线程方式一:继承Thread类创建MyThread类继承Thread类重写Thread类中的run()方法创建MyThread类对象启动线程public class MyTh原创 2021-06-07 22:03:29 · 518 阅读 · 3 评论 -
【Java基础】接口、泛型;集合;IO流
四、接口、泛型接口Interface接口就是一种公共的规范标准,Java中的接口更多体现在对行为的抽象接口使用interface关键字来创建;接口的使用是通过类来实现该接口实现的public interface Jumping { public abstract void jump();}接口不能实例化,要想使用需要通过一个类来实现该接口,通过实现类对象来实例化(与抽象类在这一方面类似),叫做接口多态接口的成员特点成员变量只能是常量,默认由public static fina原创 2021-06-07 21:58:32 · 306 阅读 · 1 评论 -
【Java基础】数组、抽象;面向对象:继承、封装、多态
一、数组单个数组内存分配图多个数组内存分配图多个数组指向相同地址这种情况下,多个数组指向同一个地址值。中间一行的赋值操作是将arr的地址值赋值给arr2,如果这个时候针对arr2进行操作,那么也就相当于是对arr进行操作,本质上指向的是同一个数组。所以无论操作arr还是arr2,结果上没有本质上的区别。数组空指针异常如果数组被赋值为null,那么将找不到数组本身存放的堆内存地址。再次使用的时候会报错:空指针异常二、内部类、抽象类、包装类、修饰符内部类在一个类中定义一个类,类中被定原创 2021-06-07 21:49:42 · 218 阅读 · 3 评论 -
【软件工程】重要知识点
【软件工程】重要知识点一、软件工程概述软件工程的诞生1968年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,讨论软件危机问题。在这次会议上正式提出并使用了“软件工程”这个名词,一门新兴的工程学科就此诞生了。软件危机① 对软件开发成本和进度的估计常常很不准确。② 用户对“已完成的”软件系统不满意的现象经常发生。③ 软件产品的质量往往靠不住。④ 软件常常是不可维护的。⑤ 软件通常没有适当的文档资料。⑥ 软件成本在计算机系统总成本中所占的比例逐年上升。⑦ 软件开发生产率提高的速度,既原创 2021-05-28 17:15:20 · 2269 阅读 · 1 评论 -
【Java】基础知识部分
【Java】基础知识部分一、数组单个数组内存分配图多个数组内存分配图多个数组指向相同地址这种情况下,多个数组指向同一个地址值。中间一行的赋值操作是将arr的地址值赋值给arr2,如果这个时候针对arr2进行操作,那么也就相当于是对arr进行操作,本质上指向的是同一个数组。所以无论操作arr还是arr2,结果上没有本质上的区别。数组空指针异常如果数组被赋值为null,那么将找不到数组本身存放的堆内存地址。再次使用的时候会报错:空指针异常二、内部类、抽象类、包装类、修饰符内部类在一原创 2021-05-28 16:33:16 · 241 阅读 · 0 评论 -
【Java】Spring MVC框架
【Java】SpringMVC框架十、Spring集成web环境基本三层架构环境搭建①创建基本的环境架构创建相应的三层架构,然后分别编写对应的接口以及实现编写UserServlet类import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSe原创 2021-04-26 13:17:28 · 1068 阅读 · 0 评论 -
【Java】Mybatis框架
【Java】Mybatis框架十七、Mybatis简介原始jdbc操作// 注册驱动Class.forname("com.mysql.jdbc.Driver");// 获取连接Connection conn = DriverManager.getConnection("jdbc:mysql:///test", "root", "123456");// 获得StatementPreparedStatement ps = conn.prepareStatement("select id, nam原创 2021-04-26 13:16:23 · 376 阅读 · 0 评论 -
【Java】Spring框架
【Java】Spring框架一、spring简介简介Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IoC(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核。现在,2017年9月发布了最新的Spring版本——Spring 5.0通用版(GA)优势二、Spring体系结构其中,核心容器最为关键,SpEL——Spring Expression Language(spri原创 2021-03-31 13:20:50 · 6211 阅读 · 1 评论 -
【Java】JVM
【Java】JVM1.什么是JVM2.学习JVM的意义3.常见的JVM4.学习路线5.内存结构5.1 程序计数器PC Register(Program Counter Register)程序计数器是通过寄存器实现的,用来记住下一条JVM指令的执行地址。特点:①是线程私有的;②是JVM中唯一不会出现内存溢出的区域5.2 虚拟机栈(JVM Stacks)栈:程序运行需要的内存空间栈帧:程序运行时一次方法的调用,即每个方法运行时需要的内存问题:1.栈每次调用后会被弹出,故原创 2021-03-29 14:51:24 · 311 阅读 · 2 评论 -
【Java】课程设计—学生在线考试系统
Java课程设计—学生考试系统阅前注意系统中所有密码均已默认设置为123456开发时使用的Java版本为JDK 14.0.1使用的开发工具为 IntelliJ IDEA Community 2019.2数据库为MySQL 8.0.22.0已在Windows10下通过测试一、数据库设计数据库考试系统 ExamSystem数据表学生表 STUDENTcreate table student( sname varchar(10) not null,原创 2020-12-29 23:08:01 · 15402 阅读 · 50 评论 -
【Java】命名规范
一、Java总体命名规范类一般采用大驼峰命名,方法和局部变量使用小驼峰命名,而大写下划线命名通常是常量和枚举中使用。创建一个项目之后,子类中的东西命名规范如下:项目名全部小写,多个单词中间用-连接包名全部小写类名首字母大写,其余组成词首字母依次大写(大驼峰命名)变量名、方法名首字母小写,其余组成词的首字母都要大写(小驼峰命名)常量名全部大写,多个单词中间用_连接所有命名规则必须遵循Java本身的规则:名称只能由字母、数字、下划线、$符号组成不能以数字开头名称不能使用Java中的关转载 2020-12-15 23:27:43 · 1225 阅读 · 0 评论 -
【Java】JDBC
JDBCJDBC概念概念:Java Database Connectivity Java数据库连接 ,Java语言操作数据库JDBC本质:是官方定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口编程,真正执行的代码是驱动jar包中的实现类。使用步骤导入jar包详细步骤将需要导入的Jar包复制添加进Project下的libs文件夹中选中jar包文件,添加为libs选择Add As Libraries对象详原创 2020-12-02 01:53:16 · 250 阅读 · 0 评论 -
【Java】面向对象、内存调用
JAVA面向对象1.面向过程和面向对象**面向过程:**当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为,详细处理每一个细节,这样的叫做面向过程。**面向对象:**当需要实现一个具体的功能的时候,不关心具体的步骤,而是找一个已经具有该功能的对象,来帮我完成这件事。面向过程编程举例:面向对象编程举例:面向对象直接使用的是一个对象,一个封装好的Package;而面向过程编程则需要对一整个方法步骤进行逐步编写,容错率更低。2.面向对象的特征封装、继承、多态封装:继承:原创 2020-09-29 20:02:37 · 231 阅读 · 0 评论