自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(118)
  • 收藏
  • 关注

原创 Java使用for和迭代器Iterator中remove比较

1. Iterator介绍  对于java中的集合类(Collection),可以使用迭代器Iterator对集合中的元素进行遍历。迭代器是一种设计模式,它可以在不暴露集合中元素的情况下而去遍历集合中的所有元素。  Iterator为一个接口,只定义了三个方法,hasNext(),next(),和remove()。Collection接口继承Iterable接口,提供了一个iterator()方法,使得Collection子类通过iterator()方法获取Collection内部实现的Iterator

2021-04-10 11:27:22 560

原创 SpringBoot中InitializingBean接口和ApplicationContextAware接口

1. InitializingBean这个接口 InitailizingBean中只有一个方法,就是afterPropertiesSet。该方法是指Spring容器在启动后主动调用该接口的方法。如果一个Bean实现了InitializingBean,则该方法会在容器实例化该Bean,初始化Bean的属性完毕之后,再调用afterPropertiesSet方法。afterPropertiesSet通过方法名称即可知道含义:在bean的属性设置完毕后调用该方法。接口InitializingBean接

2021-04-03 16:21:27 867 1

原创 Java 8中的mapToInt

1. 介绍  Stream mapToInt(ToIntFunction mapper)返回一个IntStream,其中包括将给定函数应用于此流的元素的结果。既然有mapToInt,那么必定有mapToDouble,mapToLong等操作,不过学习了这个其它的就一目了然了。2. 例子import java.util.Arrays;import java.util.List;public class mapToIntTest { public static void main(Strin

2021-02-28 16:49:17 24989 1

原创 Java8中的IntStream,LongStream,DoubleStream

1. 简介  IntStream、LongStream 和 DoubleStream 分别表示原始 int 流、 原始 long 流 和 原始 double 流。  这三个原始流类提供了大量的方法用于操作流中的数据,同时提供了相应的静态方法来初始化它们自己。这三个原始流类都在 java.util.stream 命名空间下。  其他两个流操作其实是很类似的,所以下面就只举例IntStream。2. IntStream  java.util.stream.IntStream 是一个原始整数值序列 (

2021-02-21 20:39:08 409

原创 Java8中的Collectors.toMap

Collectors.toMap会经常和流stream配合使用,可以将一个List转化为Map。在使用的过程中需要避免key冲突问题,通过以下例子就一目了然了。例子package com.company;import java.util.*;import java.util.function.Function;import java.util.stream.Collectors;public class collectorsToMapTest { public static cl

2021-02-16 18:28:20 703

原创 Java中AtomicInteger

1. 介绍  在Java语言中,++i和i++操作都不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。AtomicInteger,命名带有Atomic,很明显本身是原子性。这个类常是线程安全,多用于高并发对数据的修改。2. 使用例子import java.util.concurrent.atomic.AtomicInteger;@Testpublic void use AtomicInteger() { AtomicInteger integer = new A

2021-02-15 21:21:57 536 2

原创 java8四大基本函数式接口

  java8中提供了四个内置的函数式接口,通过直接使用这四个接口,或者使用它们的扩展接口,可以让我们很方便的使用lambda表达式。1. Consumer<T> 消费型接口@FunctionalInterfacepublic interface Consumer<T> { /** * Performs this operation on the given argument. * * @param t the input argume

2021-02-14 17:22:02 857

原创 mysql中的唯一索引

1. 前言  工作使用的数据库是mysql,经常会与唯一索引打交道,借此记录下来。表的主键一般都会使用一个自增的数值(一般从0或1开始),所以更加关心的是如何建立唯一索引以及有没有必要建立唯一索引问题。  注意,别把唯一索引和主键相混淆了。主键是索引的一种不同行的主键和唯一索引对应值都是不同的主键值不允许为null,而唯一索引允许一个表只能有一个主键,唯一索引不一定主键和唯一索引可以是表中多个字段的组合,一般只会在一列上建立唯一索引,多列的话则会考虑联合索引关于唯一索引和主键区别的一些资

2021-01-31 16:47:14 1112 1

原创 在SpringBoot中编写Mock单元测试

1. 新建测试类在IDEA中写好的类中,右建GO TO,选择TEST,如果没有对应的单元测试类就选择创建。在创建该类的单元测试类前,先讲一下这几个基本注解:@Test:使用该注解标注的public void方法会表示为一个测试方法;@BeforeClass:表示在类中的任意public static void方法执行之前执行;@AfterClass:表示在类中的任意public static void方法之后执行;@Before:表示在任意使用@Test注解标注的public void方法执行之

2021-01-19 19:54:01 1406

原创 生产中常用的Linux日志查询语句

1. less1.1 打开文件less 文件名.log1.2 查询关键字/ 关键字紧接着n:向下查找关键字【用最多】N:回到上一个关键字【用最多】g:跳到开头G:跳到文件结尾b:往前翻一页(一屏幕)f:往后翻一页(一屏幕)空格:滚动一页回车键:滚动一行h:显示帮助退出当前q2. head2.1 使用head 文件名.log:head命令默认显示文件前10行内容2.2 常用命令head -n 3 文件名.log:显示文件前3行内容更多命令输入:head --h

2021-01-02 18:31:41 703

原创 java中的thorw和throws

1. throws关键字  throws关键字通常应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象。public class ThrowsTest { //定义方法并抛出NegativeArraySizeException异常 public static void testThrows() throws NegativeArraySizeException { int[] arr = n

2020-12-28 15:30:34 196

原创 SpirngBoot使用RocketMQ

消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,日志记录,流量削锋、分布式事务等问题,实现高性能,高可用,可伸缩和最终一致性架构。1. Maven添加rocketmq依赖<dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>${r

2020-12-27 09:58:59 162 2

原创 java8新特性Optional用法

Java8引入Optional库来解决NullPointerException ,从而避免源码被各种null检查污染,以便开发者写出更加整洁的代码。引用import java.util.Optional;使用1Optional<String> test = Optional.ofNullable(null);System.out.println(test.isPresent());System.out.println(test.orElseGet(()->"[none

2020-12-27 09:57:25 155

原创 springboot事务操作

1. 概念事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在计算机术语中,事务通常就是指数据库事务。2. 特性并非任意的对数据库的操作序列都是数据库事务。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。一致性(Consistency):事务应确保数据库的状态

2020-12-15 22:10:55 409

原创 Java8 接口interface默认方法

在 java 8 之前,接口与其实现类之间的 耦合度 太高了(tightly coupled),当需要为一个接口添加方法时,所有的实现类都必须随之修改。默认方法解决了这个问题,它可以为接口添加新的方法,而不会破坏已有的接口的实现。接口默认方法有两种:1. 非静态默认方法定义package com.testpublic interface DefaultTest { default void print() { System.out.println("我是非静态方法!");

2020-12-13 10:08:29 483

原创 SpringBoot使用setRollbackOnly()实现数据库事务操作

使用1import org.springframework.transaction.support.TransactionTemplate;// 执行数据库操作@Autowiredprivate TransactionTemplate transactionTemplate;public T methodName(T parameter1, T parameter2, ...) { Object result = (Object)transactionTemplate.execute(sta.

2020-12-01 20:22:54 1395

原创 com.alibaba.fastjson学习笔记

1. 简介fastjson是由alibaba开源的一套json处理器。与其他json处理器(如Gson,Jackson等)和其他的Java对象序列化反序列化方式相比,有比较明显的性能优势。fastjson主要用于将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。2. 使用说明2.1 配置在 maven 中央仓库中直接下载http://repo1.maven.org/maven2/com/alibaba/fastjson/配置maven依赖&

2020-11-21 20:18:29 739

原创 Java序列化和反序列化

1. 什么是序列化和反序列化序列化:把Java对象转化为字节序列的过程。反序列化:把字节序列恢复为Java对象的过程。2. 为什么需要序列化和反序列化把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中。在网络上传送对象的字节序列。3. 如何实现序列化与反序列化3.1 JDK类库中序列化API使用到JDK中关键类 ObjectOutputStream(对象输出流) 和ObjectInputStream(对象输入流)ObjectOutputStream 类:通过使用 writeO

2020-11-21 20:15:04 165

原创 String、StringBuffer、StringBuilder, StringJoiner 的区别

1. StringJava中的String对象是不可变对象,针对字符串对象的操作(例如subString、contact、replace)都会生成一个新的String对象,如果应用中有大量这样的操作,就会产生大量的临时String对象,然后将指针指向新的String对象,会影响Java应用运行的性能,所以经常改变内容的字符串最好不要用 String 。2. StringBufferJDK 1.0中提供了StringBuffer类,这个类的对象是可变对象,它的原理是申请一个缓冲区来存放字符串,可以避免产

2020-10-25 11:33:51 1460

原创 PO、POJO、BO、AO、VO、DTO、DO、DAO

1. POpersistant object:持久层对象有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录。在hibernate持久化框架中与insert/delet操作密切相关。PO中不应该包含任何对数据库的操作。2. POJOplain ordinary java object:无规则简单java对象传统意义的 java 对象。可以转化为PO、DTO、VO,比如POJO在传输过程中就是DTO。3. BObusiness objec

2020-10-18 21:16:14 343

原创 @Autowired与@Resource与@Reference注解的区别

在说明这三者的区别前,先了解一下Spring自动装配byName和byType区别。1. byName与byType1.1 byNamebyName会搜索整个配置文件中的bean,如果有相同名称的bean则自动配置,否则显示异常。1.2 byTypebyType会搜索整个配置文件中的bean,如果有相同类型的bean则自动装配,否则显示异常。【注】 这两者的详情可以在看一下参考文献1。2. @Autowired@Autowired按byType自动注入,是有Spring提供的注解,需要导入包

2020-09-26 16:40:36 994 1

原创 软件架构的演变:从 All in one 到 MA

1. 单体架构1.1 简单单体模式图1:简单单体模式示例图1.2 MVC模式图2:MVC模式示例图1.3 前后端分离模式:C/S图3:C/S模式示例图1.4 前后端分离模式:B/S图4-1:B/S模式示例图图4-2:B/S模式中缓存技术的出现1.5 总结图5:单体架构示例图2. 面向服务架构(Service Oriented Architecture,简称:SOA)图6:SOA架构示例图3. 分布式服务架构(Distributed Service Archit

2020-09-13 15:42:36 206 1

原创 Java 读取Excel文件(xlsx/xls/csv)

1. 读取xlsxprivate static FormulaEvaluator evaluator;String static void readXlsx(String path) { try{ // 读取的时候可以使用流,也可以直接使用文件名 FileInputStream is = new FileInputStream(path); Workbook xwb = new XSSFWorkbook(is);

2020-09-13 15:30:07 4453 1

原创 Java8中的Stream

1. 什么是Stream  Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator。原始版本的 Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作;高级版本的 Stream,用户只要给出需要对其包含的元素执行什么操作,比如 “过滤掉长度大于 10 的字符串”、“获取每个字符串的首字母”等,Stream 会隐式地在内部进行遍历,做出相应的数据转换。  Stream 就如同一个迭代器(Iterator),单向,不可往复,数据只能遍

2020-09-13 15:28:49 166

原创 Java常用的时间操作

1. Date与String互换1.1 Date转Stringpublic static String Date2Str(Date date, String format) { // 自定义返回时间格式 SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); return simpleDateFormat.format(date);}1.2 String转Datepublic static Str

2020-09-13 15:27:53 190

原创 springboot+mybatis+vue实现一个简单的注册登录功能

1. mybatis简要概述MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。2. vue简要概述Vue.js 是用于构建交互式的 Web 界面的库。它提供了 MVVM 数据绑定和一个可组合的组件系统

2020-08-12 19:34:11 6408

原创 第一个SpringBoot项目

1. 新建一个SpringBoot项目2. 创建HelloControllerpackage com.example.demo.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloController {

2020-08-08 19:29:26 190

原创 Maven项目结构说明

1. maven概念是一个基于Java平台的自动化构建工具(make->ant->maven->gradle,它主要有五大功能:(1)清理:删除编译的结果,为重新编译做准备(2)编译:java->class(3)测试:针对与项目中的关键点进行测试,方便开发人员与测试人员交互(4)报告:将测试结果进行显示(5)打包:将项目中包含的多个文件压缩成一个文件,用于安装或部署(java项目打成jar包,web项目打成war包)(6)安装:将打包结果放入本地仓库,供其他项目使用(

2020-08-08 12:23:13 2876

原创 SpringBoot项目目录结构说明

1. 项目一般命名规则com.公司名的简写.项目的名字在写相关业务的时候可以在其目录新建业务模块名,即’com.公司名的简写.项目的名字.业务模块名2. 目录结构图(Controller是我自己加入的)2. 代码目录:src/java/com.example.demoDemonApplication:启动类除了启动类以为,还可以建立如下类:实体类(domain):置于com.example.demo.domain数据访问层(Dao):置于com.example.demo.r

2020-08-01 23:06:40 2063

原创 python爬取豆瓣Top250电影导入csv和MySQL中

1. 准备工作  最近在写毕业课设,需要一些电影的信息,所以网上找了一些代码自己做了修改。在爬取之前先在你的数据库建立movie表,以下是我自己建的表,你可以根据自己需求设计字段。细心的网友会发现字段paihang为啥不用rank显得高大尚一点,我也想用,但是在插入数据的时候会插入不成功,然后把字段改成paihang就竟然插入成功了。这个奇葩的错误我刚开始以为表的字段太多了,发现只要改名就行...

2020-04-11 12:13:44 940

原创 2020春招上岸经贴

1. 前期回顾本人山东大学16级计算机专业本科生,在大三下学期结束后就准备考研,今年的数学和408直接把我杀死了。研究生没考上,也没有实习经历,就踏上了春招之路。从成绩出到签约offer期间大概一个月,所以你的情况如果和我是类似的话,我觉得你的春招没问题。当然,我的经验贴不可能适合所有人,但如果里面有你需要参考或者想要问我的,我都会感到非常开心。2. 海投历程以下是提供笔试和面试机会的单位,...

2020-03-26 22:09:48 980

原创 SQL中的授权grant与回收revoke

1. 授权:grant1.1 命令grant <权限> [,<权限>]...on <对象类型> <对象名> [,<对象类型 > <对象名>]...to <用户> [,<用户>]...[with grant option];1.2 例子例1把查询Student表的权限授给用户U1。...

2020-03-04 13:37:00 1857

原创 SQL中数据的插入、删除、更新

1. 插入操作1.1 命令(1)插入一条指定好值的元组insert into table_name (column1, column2, column3, ...)values (value1, value2, value3, ...);如果要为表中的所有列添加值,则不需要在SQL查询中指定列名称。但是,请确保值的顺序与表中的列顺序相同。(2)插入子查询结果中的若干条元组inser...

2020-03-01 15:34:50 872

原创 SQL中的集合操作

1. 命令集合并:union集合交:intersect集合差:except(minus)注意:集合操作自动去掉重复元组,如果要保留重复元组的话,必须用all关键字指明。2. 例子例1求选修了001或(且)002号课程的学生号。(select SNO from SC where CNO = 001)union(intersect)(select SNO from SC w...

2020-02-29 22:54:11 1488

原创 SQL中的字符串匹配

1. 命令格式找出满足给定匹配条件的字符串。列名 [not] like "字符串"2. 匹配原则%:匹配零个或多个字符_:匹配任意单个字符\:转义字符,可以去掉特殊字符的特点含义,使其作为普通字符看待,可以\%去匹配%,\_ 去匹配 _3. 例子例1列出姓名以“张”打头的教师的所有信息select *from PROFwhere PNAME like "张%"...

2020-02-29 22:45:23 7555

原创 MySQL查看列、添加列、删除列、修改列

1. 查看列desc 表名;2. 添加列执行下列命令,列会默认添加到表字段末尾。alter table 表名 add column 列名 字段类型;如果想指定字段位置,可以使用mysql提供的first(设定为第一列)和after(设定位于某个字段之后)设定为第一列:alter table 表名 add 列名 字段类型 first设定位于某个字段之后:alter table 表名 ...

2020-02-29 21:36:45 649

原创 MySQL中表连接方式

为了能够很好理解MySQL中表连接方式,以如下两个表作为例子演示:Table1:t1idname1张三2李四4王五Table2:t2idage1182203191. 笛卡尔积两表关联,把左表的列和右表的列通过笛卡尔积的形式表达出来。语法select * from t1 join t2...

2020-02-28 21:01:47 1694

原创 python3中的zip()函数

1. 说明  zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。我们可以使用 list() 转换来输出列表。  如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。2. 语法zip([iterable, ...])返回值:对象3. 例子例...

2020-02-26 22:23:33 837

原创 python中的collection模块

collection模块引用:from collections import *1. Counter类(最常用):计数器counter相当于计数器,是对字典类型的补充,用于统计元素出现的次数,具备字典的所有功能+自己的功能。例子from collections import *string = "abcdedgaabbccdd"out = Counter(string)print...

2020-02-26 21:33:57 427

原创 python中的sort()和sorted()函数

1. sort()函数(1)说明sort() 是应用在 list 上的方法,属于列表的成员方法,执行完后会改变原来的list。(2)语法iterable.sort(cmp, key, reverse)iterable:指要排序的listcmp:指定排序时进行比较的函数,可以指定一个函数或者lambda函数。该函数带有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大...

2020-02-23 22:10:46 217

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除