java相关学习
文章平均质量分 84
记录相关的学习技术以及自我感受
原创小甜甜
方向,耐心
展开
-
MapStruct的使用场景
1.MapStruct是用来做什么的?现在有这么个场景,从数据库查询出来了一个user对象(包含id,用户名,密码,手机号,邮箱,角色这些字段)和一个对应的角色对象role(包含id,角色名,角色描述这些字段),现在在controller需要用到user对象的id,用户名,和角色对象的角色名三个属性。一种方式是直接把两个对象传递到controller层,但是这样会多出很多没用的属性。更通用的方式是需要用到的属性封装成一个类(DTO),通过传输这个类的实例来完成数据传输。User.java@AllAr转载 2022-05-05 09:54:15 · 215 阅读 · 1 评论 -
运用TreeSet来进行无自然排序元素的排序
当TreeSet所加元素无自然排序的时候,会抛出异常,解决:1、元素的类实现Comparable接口,并重写compareTo方法,返回数为正则大于指定对象。2、创建比较器,即一个类实现Comparator并重写compare方法,,创建TreeSet时将比较器传入。这样即可实现按重写方法来排序package he;import java.util.*;/*class Ji implemen...原创 2018-12-07 21:08:13 · 169 阅读 · 0 评论 -
LinkedList来实现扑克牌的生成以及自动洗牌功能
**运用LinkedList来创建一个扑克牌并实现自动洗牌功能`package he;import java.util.*;class Poker {String color;String number;public Poker(String color,String number){this.color=color;this.number=number;}@Override...原创 2018-12-07 20:21:13 · 176 阅读 · 0 评论 -
静态代码块于静态方法按代码顺序来执行
静态代码块与静态变量是在类加载的时候被载入内存,执行顺序按代码顺序来执行,且只执行一次;构造代码块与构造方法是在创建对象的时候执行,一般是慢于静态代码块。class StaticTest{ public static void main(String[] args) { staticFunction(); } static StaticTest st=new StaticTe...原创 2018-12-08 23:40:03 · 217 阅读 · 0 评论 -
web项目中路径的使用
理解java Web项目中的路径问题本文以项目部署在tomcat服务器为例,其他相信也是一样的。先说明请求页面的写法,在web中,页面路径主要写的有以下几种1、请求重定向2、浏览器的请求被服务器请求到新页面(我称为“转发”)3、超链接4、form表单提交的action为了演示路径写法,首先先建一个项目(项目名WebPath),并建立一个servlet(PathServlet)目录结...转载 2019-04-18 21:27:10 · 298 阅读 · 0 评论 -
js中的bom以及dom
一、BOM1、含义:浏览器对象模型2、对象:- navigator对象:获取客户机的信息- 属性:appName:获取浏览器名称-screen对象:获取屏幕信息-属性:width,height-location对象:请求url属性:href(获取请求的地址:location.href;设置url: ...原创 2019-04-13 17:31:27 · 82 阅读 · 0 评论 -
java中getRealPath("/")和getContextPath()的区别
三.总结。1.getRealPath("/")方法返回的是项目在服务器的绝对路径,而getRealPath(“WEB-INF/myfile”)返回的是包含一个给定虚拟路径的绝对路径,其中/myfile是虚拟的。2.getContextPath()方法返回的是项目相对路径,并不会返回其绝对的路径,就是说并不知道项目在哪个位置。...转载 2019-05-12 21:10:32 · 536 阅读 · 0 评论 -
QueryRunner的使用
了解QueryRunner之前要先了解为什么要使用它,它从何处来,为什么而存在。其实这个是dbutils中的一个方法什么是dbutils它的出现就是封装了jdbc的代码,开发dao层代码的简单框架框架的作用就是为你完成一些工作dbutils是由apache公司提供的为什么使用dbutils在它出现之前在dao层中使用的技术是jdbc(1)数据库链接对象、sql语句操作对象,封装结果...原创 2019-05-04 21:18:39 · 486 阅读 · 0 评论 -
springboot的缓存机制(一)
一、spring的缓存机制Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术;并支持使用JCache(JSR-107)注解简化我们开发;Cache接口为缓存的组件规范定义,包含缓存的各种操作集合;Cache接口下Spring提供了各种xxxCache...原创 2019-09-14 21:41:35 · 383 阅读 · 0 评论 -
git将本地文件上传到github
篇之前说下题外话,之前写过一篇博客,IOS-一步一步教你自定义评分星级条RatingBar,群里有人想要源码,我上传到github上了,有需要的可以去看一下,github地址自定义评分星级条言归正传,最近有人在群里问怎么将新创建的本地代码上传到github上,这里简单的记录一下,我喜欢使用命令行,这里全用命令行来实现,不了解git命令的可以去了解下。第一步:建立git仓库cd到你的本地项目根...转载 2019-05-04 22:28:28 · 94 阅读 · 0 评论 -
java实现分页技术
虽然现在有很多好用的框架,对分页进行支持,很简单的就把分页的效果做出来,但是如果自己手写是一个怎样的流程的?今天就来说说它,手动实现分页效果。一、分页的思路首先我们得知道写分页代码时的思路,保持思路清晰,有步骤的进行,才能行云如水。先来看看分页的效果这就是一个分页导航,其中能得到的数据有totalRecord:总共员工数,数据库中总的记录数,这里有55条totalPage:总页数,1...转载 2019-05-20 22:32:33 · 1059 阅读 · 0 评论 -
运用正则表达式来匹配邮箱
public class input{ public static boolean match(String str) { if(str.matches("[\\w]+(.[\\w]+)*@[\\w]+(.[\\w])+")) { return true; } else { return false; } } public static void main(S...原创 2018-12-20 00:33:37 · 918 阅读 · 0 评论 -
将java项目制作成exe文件
突然心血来潮,想自己做个小程序玩玩,但是怎么把他做成一个exe文件,让大家能够更好的理解和使用呢,百度了一下,说是需要exe4j来生成,但是看了很多关于exe4j将java程序生成exe文件的教程,觉着都不是自己想要的结果,还是自己综合一下,写篇文章记录一下.下载和安装的步骤我就略过了,直接说重点.一 : 将写好的java程序打成jar包,如下图:1:2:3:4:5:此处...原创 2019-03-15 17:34:02 · 4315 阅读 · 0 评论 -
用TreeSet实现对书的出版日期的排序
import java.util.Calendar;import java.util.Comparator;import java.util.TreeMap;class Comp implements Comparator{ @Override public int compare(Object o1, Object o2) { // TODO Auto-generated meth...原创 2018-12-22 10:34:59 · 342 阅读 · 0 评论 -
在centos7下安装rabbitmq以及mysql
因为之前的知识点所涉及到中间件的使用,这些中间件也是放在服务器当中的。博主最近也在一直搞中间件的安装,因为直接通过yum安装一直出错,搞了很久很久,今天才发现用docker进行安装是如此简单,当然,docker我也是刚刚接触,也不是很了解,只是发现按照教程安装相应的东西相对简单,所以在这里记录一下如何在centos7安装mysql以及rabbitmq一、安装docker一般centos7里...原创 2019-09-22 16:22:52 · 204 阅读 · 0 评论 -
关于springSecurity的权限限制的使用,基于springboot
1、人们使用Spring Secruity的原因有很多,单大部分都发现了javaEE的Servlet规范或EJB规范中的安全功能缺乏典型企业应用场景所需的深度。提到这些规范,重要的是要认识到他们在WAR或EAR级别无法移植。因此如果你更换服务器环境,这里有典型的大量工作去重新配置你的应用程序员安全到新的目标环境。使用Spring Security 解决了这些问题,也为你提供许多其他有用的,可定制的...原创 2019-09-07 16:51:18 · 664 阅读 · 1 评论 -
springboot2整合rabbitmq
方法得原创 2019-09-25 23:09:49 · 391 阅读 · 0 评论 -
springboot2.1.7整合redis(二)
一、springboot整合redis,基于springboot的缓存技术先在这里说明所用的版本号为2.1.7,一定得注意版本的问题,因为springboot1.0与springboot‘2.0整合redis上有很多不同,这里所用的是2.0以上的版本,至于springboot2.0与springboot1.0的redis配置,参照springboot1.5.x版本于springboot2.x版...原创 2019-09-17 21:35:34 · 779 阅读 · 0 评论 -
枚举类的详细解说
1、枚举类是个特殊的类2、枚举值默认的的修饰符是public static final3、枚举值就是枚举值所属的类的类型,枚举值是指向本类的对象。4、枚举的构造方法默认的修饰符是private的5、枚举类可以定义自己的成员变量和成员函数6、枚举类可以自定义构造方法,但是构造方法的修饰符必须是private7、枚举类可以存在抽象的方法,但是枚举值必须实现抽象方法。8、枚举值必须位于枚举...原创 2019-01-17 23:33:50 · 354 阅读 · 0 评论 -
#全文搜索引擎 Elasticsearch 入门教程
全文搜索引擎 Elasticsearch 入门教程全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选。它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。本文从零开始,讲解如何使用 Ela原创 2021-05-28 10:01:10 · 109 阅读 · 0 评论 -
Redis学习(一)
Redis的学习(一)简介redis就是我们常说的Nosql数据库的一种,redis中的数据是存储到内存中的,所以读写速度非常快,因此被应用与缓存方面。redis支持事务、持久化、LUA脚本、LRU驱动事件、多种集群方案为什么要用redis作为缓存高性能redis将数据存储到内存中,相较于从磁盘读取(磁盘-内存-读取出来),速度快得多。如果数据库中的数据发送改变之后,同步缓存中的数据即可高并发在高请求的情况下,直接访问数据库必将对数据库产生高额的负载。我们可以考虑将热点数据转移到缓存原创 2020-07-19 18:09:42 · 747 阅读 · 0 评论 -
zookeeper学习(一)
Zookeeper运用场景1、利用 ZooKeeper 可以非常方便构建一系列分布式应用中都会涉及到的核心功能。数据发布/订阅负载均衡命名服务分布式协调/通知集群管理Master 选举分布式锁分布式队列多个开源项目中都应用到了 ZooKeeper,例如 HBase, Spark, Flink, Storm, Kafka, Dubbo 等等。1.1 数据发布/订阅数据发布/订阅的一个常见的场景是配置中心,发布者把数据发布到 ZooKeeper 的一个或一系列的节点上,供订阅者进行原创 2021-02-01 16:00:40 · 265 阅读 · 0 评论 -
mysql根据某个重复的字段,只取出list中的一条
mysql根据某个重复的字段,只取出list中的一条场景说明:在一张数据库表中存储了题目的详细信息,另一张表是题目所对应的标签,是一个一对多的场景。现在的需求是只取出一个对象即可。即只需取出一个标签内容和题目所有内容来封装对象即可。举个例子:有一个表a如下:idname1张三2李四有另一个表bidaidimg11这是第一张图片21这是第二张图片32这是第三张图片42这是第四张图片此时,你使用查询语原创 2020-06-05 21:34:22 · 3294 阅读 · 0 评论 -
sql语句中on跟where执行区别
sql语句中on跟where执行区别前天写SQL时本想通过 A left join B on and 后面的条件来使查出的两条记录变成一条,奈何发现还是有两条。后来发现 join on and 不会过滤结果记录条数,只会根据and后的条件是否显示 B表的记录,A表的记录一定会显示。不管and 后面的是A.id=1还是B.id=1,都显示出A表中所有的记录,并关联显示B中对应A表中id为1的记录或者B表中id为1的记录。运行sql :select * from student s left joi转载 2021-04-15 09:44:50 · 229 阅读 · 0 评论 -
mysql触发器的使用案例
mysql触发器的使用案例先来说下我的案例:青协活动通过excel上传活动信息,基本内容如下:而我需要通过这张表的上传后自动跟新另外三张表的信息,一张是学生的总志愿时表跟新(某个学生的总志愿时再原来的基础上增多或者插入新的学生志愿时信息),一张是活动表的跟新,另一张是学院总志愿时的统计信息跟新(相同院的总志愿时)此时,我所采用的是触发器跟新,当批量插入数据时,顺带触发三张表的跟新插入操...原创 2020-02-06 02:46:11 · 295 阅读 · 1 评论 -
java操作redis以及springboot对redis的操作
java操作redis1、导入依赖<!--引入jedis连接依赖--><dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version></dependency>2、创建jedis对象并运用操作redis public static void原创 2020-07-19 20:40:48 · 182 阅读 · 0 评论 -
Docker安装ELK并整合Springboot(一)
Docker安装ELK并整合Springboot一、docker使用yum安装yum -y install docker启动dockersystemctl start docker二、elasticsearch拉取镜像,这里使用6.6.1版本,也可以使用其他版本,但elk版本最好相差不要太大docker pull docker.elastic.co/elasticsearch/elasticsearch:6.6.1启动es镜像docker run -d --name es -p 9原创 2021-05-27 17:38:17 · 333 阅读 · 0 评论 -
springboot与jpa的结合
之前一直用mybatis处理dao层,之后接触了jpa后,发现jpa自动帮你封装了常用了增删改查操作,用起来比mybatis方便得多,在这里记录下这里所用springboot是2.1.7版本一、QuickStart1、导入jpa的依赖以及数据库驱动的依赖 <!--加入对jpa的依赖--> <dependency> &l...原创 2019-11-09 18:32:14 · 313 阅读 · 0 评论 -
mybatis的多表查询
mybatis的多表查询今天项目涉及到多表查询,原本可以根据mybayis的逆向工程的每一个mapper查询数据库封装对象,但为了效率能够提高,使用mybatis的多表查询直接返回封装对象具体如下:1、首先,先在mybatis的xml配置文件中配置你需要返回的分装对象,大体如下:返回的封装类UserVOpackage com.zhongkai.volunteer.VO;impor...原创 2020-02-06 02:32:30 · 321 阅读 · 0 评论 -
Mock测试
Mock测试定义对于单元测试,对于一些不容易构造获取的对象,或者对于尚未开发的模块,创建一个mock对象模拟对象的行为何时使用mock测试1、被依赖的对象构造复杂class A 依赖 class Bclass B 依赖 class C和class Dclass C 依赖 ...class D 依赖 ... 比如我们想对A进行测试,而此时需要构造大量的class B、C、D等依赖对象,他们的构造过程复杂,此时可以利用mock构造虚拟的B、C、D对象对我们需要的A进行相关的测试原创 2021-04-28 17:08:39 · 850 阅读 · 0 评论 -
双列集合
双列集合的学习双列集合定义了映射java.util.Map,是以键值对的方式来存储元素的。接口有四种常用的实现类,分别为HashMap、Hashtable、LinkedHashMap和TreeMapHashMap:它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但它的遍历顺序是不确定的。HashMap最多允许一条记录的键位null,允许多条记录...原创 2020-04-18 14:45:11 · 394 阅读 · 0 评论 -
JVM学习(一)
jvm学习(一)运行时数据区1、由并发中所说的,java虚拟机把它管理的内存划分若干个不同的数据区域。JDK1.8之前:线程共享:堆、方法区线程私有:虚拟机栈、本地方法栈、程序计数器JDK1.8之后:将方法区去掉,换成直接内存中的元空间线程私有的数据区都是随着线程的创建而创建,随着线程的结束而死亡2、虚拟机栈:由一个个栈帧组成,一个栈帧包含局部变量表、操作数栈...原创 2020-05-05 20:26:40 · 194 阅读 · 0 评论 -
单列集合的学习
单列集合1、list、set、map的区别 答:list接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象。set存储唯一的元素,且是无序的。map是使用键值对来存储的,key值不能重复2、ArrayList与LinkedList区别 相同:都是线程不安全的 不同:ArrayList的底层是基于Object[]数组,而LinkList底层是基于双...原创 2020-04-16 21:41:32 · 135 阅读 · 0 评论 -
并发学习(一)
并发学习前言知识进程概念:进程是程序的一次执行过程,是系统程序运行的基本单位,也是资源分配的最小单位。进程是动态的,系统允许一个程序即是一个进程从创建到销毁的过程。线程概念:线程与进程相似,但线程是比进程更小的执行单位。一个进程在执行过程中可以产生很多个线程。同类的多个线程是共享进程中的堆区以及方法区,但每个线程都有自己的程序计数器以及虚拟机栈和本地方法区栈。线程开销比进程的开销小得多,因此...原创 2020-04-23 01:53:02 · 623 阅读 · 0 评论 -
jpa学习(一)通过jpa创建数据库表
jpa创建数据库表一对多关系1、创建实体类user以及department,一个department里面有多个user,代码如下package com.example.springbootjpatest.entity;import com.fasterxml.jackson.annotation.JsonIgnoreProperties;import lombok.Data;import lombok.ToString;import lombok.Value;import javax.m原创 2021-08-06 15:45:45 · 2825 阅读 · 0 评论 -
并发学习(二)
并发学习(二)并发相关的容器1、ConcurrentHashMap:JDK1.7底层采用Segment数组和HashEntry数组结构组成。Segment实现ReentrantLock,是一种可重入锁、扮演锁的角色。HashEntry则是存储键值对数据。每一个Segment守护着一个HashEntry数组里的每一个元素。要对HashEntry数组进行修改,首先需要获取到Segment的锁.JD...原创 2020-04-30 22:31:17 · 238 阅读 · 1 评论 -
synchronized的底层原理实现以及优化的轻量级锁以及偏向锁
synchronized的底层原理实现以及优化这里是对前面并发学习的一个补充首先,先来普及下对象头信息,如下:其中Mark Word的结构如下:1、Monitor锁这个是最原始的加锁方式,也称为重量级锁刚开始Monitor中的owner为null当Thread-2执行到同步代码块时,就会将Owner置为Thread-2另一个线程过来想占用锁,检测到这个锁对象的Monitor的Owner被占用,到Monitor中的EntryList中阻塞等待。等Thread-2线程完成操作释放原创 2020-07-29 00:14:05 · 342 阅读 · 0 评论 -
jvm学习(二)
JVM学习(二)类的加载过程系统加载Class类型的文件主要分为三步:加载————>连接---------->初始化。连接又可以分为三步:验证—>准备----->解析1、加载通过全类名获取定义此类的二进制字节流将字节流所代表的静态存储结构转换为方法区内的运行时数据结构在内存中生成一个代表改类的Class对象,作为方法区这些数据的访问入口加载过程和来连...原创 2020-05-06 18:28:55 · 168 阅读 · 0 评论