- 博客(31)
- 收藏
- 关注
原创 idea maven 下载包失败的几种常见解决方法
1.检查maven仓库镜像是否是阿里云的!如果是私服,请检查连接是否可访问<mirrors><mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>https://maven.aliyun.com/repository/public</url>&l.
2021-03-29 18:57:13 1296
原创 JSON parse e rror: Invalid UTF-8 middle byte 0x3f;
线上tomcat部署的项目,运行过程中,某一个表修改数据一直报错,在本地没事!查看控制台日志报错如下org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Invalid UTF-8 middle byte 0x3f; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Invalid UT
2021-03-16 20:33:53 3364 1
原创 -source 1.6 中不支持 diamond 运算符
idea报错-source 1.6 中不支持 diamond 运算符 ,修改各种idea设置均无效,后来无意间找到了下面的解决方法!一次搞定!特此记录diamond运算符,指的是JDK1.7的一个新特性。Maven默认用的是JDK1.6去编译。所以需要配置成更高的版本,解决方法如下:在pom.xml中增加下面的配置<properties> <maven.compiler.source>1.8</maven.compiler.source>..
2021-03-16 08:58:15 1241
原创 mysql执行sql语句的过程(mysql优化系列二)
上节我们了解到,mysql数据库也会维护着自己的一个连接池,那么当程序通过连接给mysql数据库发送sql后,我们的mysql是如何处理的?1.首先,网络连接必须得分配给一个线程去处理,所以这里有一个线程去处理连接。2.线程从连接中获取到sql语句后,要怎么做才能执行sql呢?其实这里类似我们写的三层结构,控制器层接受请求,获取请求参数,再调用接口层去做具体的业务处理!在数据库这里,控制层:线程从连接中获取到sql语句,调用sql接口处理,逻辑层:sql接口呢会调用sql解析器.
2021-02-28 15:37:06 157
原创 连接系统如何跟mysql打交道(mysql优化系列一)
1.mysql是单独的服务,java程序想要连接数据库,需要对应的 数据库驱动!2.正常流程是,java程序通过驱动连接mysql数据库,编写的sql 通过建立的连接发送给mysql数据库去执行转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消正在上传…重新上传取消3.但是这样的话,当有多个用户访问咱们的tomcat应用程序时,tomcat会启动多个线程来跑。这时候,多个线程就会抢这一个数据库连接来访问数据库,这样肯定是不行的,如果说,每个线程用完之后都关闭连接的话,那得多
2021-02-28 09:55:17 112
原创 手写源码系列之ArrayList
手写ArrayList的实现,大致逻辑和原生中的大同小异!仅供学习参考import org.junit.Test;import java.util.Arrays;import java.util.ConcurrentModificationException;import java.util.function.Consumer;/** * @author liuxupeng * @create 2021/2/19 */public class ArrayListDemo {.
2021-02-24 15:14:33 83
原创 尚硅谷Netty系列学习笔记九《NIO搭建简易聊天室》
目录前言大致逻辑服务器:客户端代码服务器代码客户端代码前言通过NIO编写简单版聊天室,客户端通过控制台输入发送消息到其他客户端。注意:并未处理粘包半包问题。逻辑简述服务器:1)创建服务器NIO通道,绑定端口并启动服务器2)开启非阻塞模式3)创建选择器、并把通道注册到选择器上,关心的事件为新连接4)循环监听选择器的事件,5)监听到新连接事件: 5.1) 建立连接、创建客户端通道 5.2)客户端通道设置非阻塞...
2021-02-20 22:49:03 273
原创 尚硅谷Netty系列学习笔记八《NIO快速入门》
前言:1.由于工作需要,需要学习下Netty框架,随对学习进行整理。方便后期的翻阅。大家也可以借鉴下。 2.学习基于尚硅谷的Netty视频教程,笔记也会查阅其他资料来完善观看视频中本人理解模糊的地方。结合之前的知识,深入理解下NIO非阻塞的网络编程原理,并写一个NIO的demo,demo包含了服务端和客户端逻辑流程1.创建NIO服务器通道ServerSocketChannel,监听端口8888,并设置为非阻塞模式,2.创建Selector实例,并把ServerSoc...
2021-02-15 17:53:38 361
原创 尚硅谷Netty系列学习笔记七《NIO核心组件之Selector》
前言:1.由于工作需要,需要学习下Netty框架,随对学习进行整理。方便后期的翻阅。大家也可以借鉴下。 2.学习基于尚硅谷的Netty视频教程,笔记也会查阅其他资料来完善观看视频中本人理解模糊的地方。了解Selector1.Java的NIO,用非阻塞的IO方式,就可以用一个线程,处理多个客户端连接,就需要使用到Selector(选择器) 注意:NIO 有两种模式,阻塞模式和非阻塞模式,需要手动设置configureBlocking(false);为非阻塞模式,...
2021-02-15 17:09:38 218
原创 尚硅谷Netty系列学习笔记六《MappedByteBuffer的使用》
前言:1.由于工作需要,需要学习下Netty框架,随对学习进行整理。方便后期的翻阅。大家也可以借鉴下。 2.学习基于尚硅谷的Netty视频教程,笔记也会查阅其他资料来完善观看视频中本人理解模糊的地方。MappedByteBuffer是什么?有啥用?也是缓冲区的一种,可以让文件直接在内存(堆外的内存)中进行修改,操作系统不需要拷贝一次,性能高!注意:MappedByteBuffer在使用时,因为不需要拷贝,所以 需要通道所在的流具备读写双向功能,以往创建的F...
2021-02-15 16:00:18 320
原创 尚硅谷Netty系列学习笔记五《NIO核心组件之Channel》
前言:1.由于工作需要,需要学习下Netty框架,随对学习进行整理。方便后期的翻阅。大家也可以借鉴下。 2.学习基于尚硅谷的Netty视频教程,笔记也会查阅其他资料来完善观看视频中本人理解模糊的地方。Channel:可以理解为流,类似BIO中的输入流和输出流。不同的是 Channel是双向的,既可以读也可以写。也可以把它理解为一个连接,用于连接服务器和客户端常用的Channel :1)FileChannel:用于文件数据的读写2)DatagramChann...
2021-02-12 16:42:02 239 2
原创 尚硅谷Netty系列学习笔记四《NIO核心组件之Buffer介绍》
前言:1.由于工作需要,需要学习下Netty框架,随对学习进行整理。方便后期的翻阅。大家也可以借鉴下。 2.学习基于尚硅谷的Netty视频教程,笔记也会查阅其他资料来完善观看视频中本人理解模糊的地方。Buffer是什么?干啥用的?缓冲区:本质上是一个可以读写的内存块,可以理解为一个数据容器(数组)。没有缓冲区以前,我们只能使用 输入输出流来读取和写入数据,(第二节的BIO中有示例)所以需要单独的线程监听输入输出流!以便及时处理数据流!使用缓冲区之后,数据都会先到缓冲区临...
2021-02-11 17:51:41 233
原创 尚硅谷Netty系列学习笔记三《NIO介绍》
前言:1.由于工作需要,需要学习下Netty框架,随对学习进行整理。方便后期的翻阅。大家也可以借鉴下。 2.学习基于尚硅谷的Netty视频教程,笔记也会查阅其他资料来完善观看视频中本人理解模糊的地方。Buffer是什么?干啥用的?缓冲区:本质上是一个可以读写的内存块,可以理解为一个数据容器(数组)。没有缓冲区以前,我们只能使用 输入输出流来读取和写入数据,(第二节的BIO中有示例)所以需要单独的线程监听输入输出流!以便及时处理数据流!使用缓冲区之后,数据都会先到缓冲区临...
2021-02-11 17:16:56 1226 6
原创 尚硅谷Netty系列学习笔记二《BIO代码简单示例》
前言:1.由于工作需要,需要学习下Netty框架,随对学习进行整理。方便后期的翻阅。大家也可以借鉴下。 2.学习基于尚硅谷的Netty视频教程,笔记也会查阅其他资料来完善观看视频中本人理解模糊的地方。本章用Java实现一个BIO的服务器,客户端直接使用 telnet代码逻辑如下1.创建一个线程池2.启动一个ServerSocket服务器对象3.循环监听客户端连接4.有客户端连接了就要创建一个线程来维护和客户端的链连接5.线程中监听客户端的输入,并打印到控...
2021-02-06 20:13:04 458 1
原创 尚硅谷Netty系列学习笔记一《BIO、NIO、AIO简单介绍》
前言:1.由于工作需要,需要学习下Netty框架,随对学习进行整理。方便后期的翻阅。大家也可以借鉴下。 2.学习基于尚硅谷的Netty视频教程,笔记也会查阅其他资料来完善观看视频中本人理解模糊的地方。了解Netty之前需要熟悉 同步、异步、阻塞、非阻塞都是什么意思。同步:A调用B,需要A主动等待B处理完后返回结果!例如:去书店,问老板 有没有xxx书,老板说等一下啊,我去找一下。你必须等待老板找完后给你返回结果!异步:A调用B,A无需主动等待B的返回结...
2021-02-06 18:40:53 442
原创 idea 配置maven,其实不用单独下载Maven的。以及设置新项目配置,省略每次创建新项目都要配置一次Maven
说来也是惭愧,一直以来,在装环境的时候都会从官网下载Maven。然后再在idea里配置Maven。以为从官网下载的Maven是必须的步骤,直到今天才得知,idea有捆绑的 Maven 我们只需要搞一个配置文件就行了无需再官网下载Maven包以后再在新电脑装环境的时候,只需要下载idea ,网上找一个Maven的配置文件 放到 默认的 包下面就可以了!也省得每次创建项目都要重新配一次Maven了。如果不想每次新建项目都要重新配置Maven,一种方法就是使用默认的配置,另一种方法就是配置 ..
2021-02-01 21:38:11 13806
原创 实战系列之《自定义注解实现登录拦截功能》
前言:实际项目里面,对于一些只有登陆之后的才能访问的接口,我是如何进行登录校验的!本人在项目里,实现登录校验是采用 拦截器+自定义注解的方式!框架使用spring-boot 。版本 :2.3.4逻辑流程:1.用户在登陆成功之后,后台会生成一个token并返回给客户端,客户端需要保存token。在调用其他请求时,携带此token,到请求头中或者参数里。2.后台通过拦截器,拦截到请求后,判断请求的方法或方法所属类 中是否存在 我们 标注的 登录校验注解,如果存在,表示当前请求需要校...
2021-01-27 19:38:14 445
原创 java8新特性-lambda表达式
lambda表达式 主要用于简化代码,代码少,则bug少。要想无bug,除非不写代码!lambda表达式 只能用于 函数式接口,函数式接口定义:只有一个抽象方法。如下图,备注:对于 函数式接口 可以 用@FunctionalInterface 注解来声明这是一个函数式接口,该注解声明后,再增加抽象方法就会冒红了简单示例我们先来 使用匿名内部类的方式 来创建一个线程 @Test public void test5() { Thread t = n..
2021-01-21 23:21:55 178 2
原创 java代码优化之策略模式,代码示例
一个策略模式的小例子,比较直观的体现出设计模式的魅力。先看需求:一个用户表,含有 【名称、年龄 、分数】 字段。现有一个用户集合,需求1:获取年龄大于30岁的用户都是谁需求2:获取年龄小于30虽的用户都是谁。。后期可能会扩展其他需求。。。实现1(无设计模式),每扩展一个需求,只需要新增一个对应的方法即可。 //初始化用户集合 List<User> userList = Arrays.asList( new User("张三"..
2021-01-20 23:18:34 493 1
原创 使用easyPoi 通过SAX解析方法 读取excel中的数据遇到的 值解析不到的问题
最近有个项目做数据的导入,选用了 easyPoi 技术,由于导入的数据量偏大,所以采用了SAX解析。下面是官方给出的解释但是在使用过程中却遇到了问题,就是假如excel中的列名有重复的时候,类似如下你会发现你使用 importExcelBySax方法导入 你是永远取不到对应数据的,官方说 通过 fixedIndex 属性来定位列 ,此方法在调用普通的 导入方法有效 。但是使用importExcelBySax方法无效//有效-可以正常解析出数据ExcelImpo...
2021-01-20 20:46:06 5236 2
原创 实战:Excel百万级数据导入到数据库《easyPoi》
今天给大家来一个实战案例。需求:把excel中的企业数据导入到数据库。分析:步骤:数据从excel中取出,封装成对象,保存到数据库1.excel中的数据量大时,要保证执行效率2.excel中可能会有重复数据3.可能误操作,一个excel会导入多次,所以插入时需要检查数据库是否已存在当前要插入的数据了。使用技术:easyPoi 官方文档:http://easypoi.mydoc.io/开始实战: 1.1maven导包easyPoi<dependen...
2021-01-12 15:30:29 4217 5
原创 多线程系列-volatile(必学)
volatile 是多线程中必学的知识点,可以用该修饰词去保证资源的可见性以及禁止指令重排。volatile 定义:volatile 是 java虚拟机提供的轻量级的同步机制。特性:1.可见性2.禁止指令重排但是不保证原子性。下面会逐一进行讲解可见性: 首先要了解一个概念,在java内存模型JMM中有说明,变量的值存放在主内存中,线程创建时,jvm会为其分配一个私有的内存工作空间,线程要修改主内存中的变量的值时,需要先copy一份副本到自己的工作内存中。修改完毕再...
2021-01-07 17:34:06 208
原创 12颗小球,有一颗质量不一样的面试题
今日面试,遇到了一道比较有意思的面试题,由于本人才疏学浅,所以当时并没有答上来。回来翻阅资料后才能白其中的原理。有一种,卧槽,这么简单 的感觉,特此分享留念!题目:有12课小球,其中有一颗重量不一样,给你一个天平,要你称3次找出哪颗小球不一样,是重了还是轻了!最开始我想到的是二分法查找 即 12课球 分成 1 2 3 4 5 6 7 8 9 10 11 12 各6个 去天枰对比 ,后来发现 称3次不够。回来查阅资料后,恍然大悟。不能二分 要3分 即 1234 ,5678 , 9 10 ...
2021-01-04 20:27:46 1087 1
原创 工作中的git使用流程
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目!一般工作中都会使用到Git,但具体的使用流程是什么样的?今天来具体的说一下!首先,项目最开始 ,初始化时会有master分支,该分支主要和线上版本保持一致的。我们开发的话需要从master分支上创建一个dev分支作为我们的主开发分支这时候需要开发功能了,需求是开发功能A,交给小张,这时候小张需要根据dev分支再创建一个开发分支 功能A待功能A开发完毕,自测通过后,这时候需要切换到dev分支并且合并功能A分支.
2021-01-03 15:15:17 331
原创 JVM中的GC运行原理,学习记录。
做JAVA就是爽,不用手动垃圾回收,JVM里帮我们写好了垃圾回收器,自动帮我们清理程序运行过程中产生的垃圾对象,保证内存的重复使用!但是!咱们还是要了解一下的。一方面扩展自己的知识点,垃圾回收机制设计的确实牛逼。一方面,面试官容易问!好吧,我承认后者才是我学习的重点。首先,我们都知道 程序运行中,内存里 有 堆、栈、方法区等。那么GC主要是处理堆的,堆中的内存分布,分为了三大块,新生代,老年代 ,元空间(1.8之前叫永久代,1.8及以后废弃了并增加了元空间)。本文重点讲 新生代和老年代这块。元.
2021-01-02 22:01:09 222
原创 springIOC容器管理的bean默认都是单例的
springIOC容器管理的bean默认都是单例的我们平时使用的 @controller注解标注的控制器、@Service标注的接口等 默认都是单例的那么也就是说,我们定义一个成员变量,线程之间可以共用!滑稽!!!干了几年了我竟然不知道。先模拟个锁玩一下/** * 测试spring 管理的bean 的作用域 锁模拟 */@RestController@RequestMapping("/lock/")public class SpringActionScopelockC...
2020-12-30 23:22:59 2273 3
原创 台阶的走法(斐波那契数列)-递归处理和循环处理
题目:有n个台阶,每次只能走一个台阶或两个台阶,问 一共有多少种走法?即 f(n) = ?首先 先自己模拟下台阶的走法,以方便寻找其中的规律台阶数 走法过程 结果 1 走1步 1种 2 走1步 走1步 走2步 2种 3 走1步 走1步 走1步 走1步 走2步 走2步 走1步 3种 4 走1步 走1步 走1步 走1步 走2步 走2步 走1步 走2步 走1步 走1步 走1步 ..
2020-12-28 22:16:36 831
原创 方法的参数传递机制之包装类型的特性
废话不多说,先看一个简单的代码 public static void main(String[] args) { int a = 0; methodTest(a); System.out.println(a); } public static void methodTest(int a) { a += 1; }这个比较简单,输出结果是0原因:当方法形参为基本类型时 传递的是 值 在这里...
2020-12-20 22:21:37 271
原创 IO_file 文件基础,常用方法,字节流基础,文件拷贝 第二节
上一篇介绍了 File 以及 IO流的一些基础知识 那么这一节动手做一个简单版的文件夹拷贝功能 1.定义两个File 一个连接要拷贝的文件路径 一个连接拷贝的目标地点File src = new File("D:/demo");//要拷贝的文件夹File to = new File("D:/copyDemo");//拷贝目标地点demo文件下的文件结构如下 里面...
2019-02-24 17:48:12 173
原创 IO_file 文件基础,常用方法,字节流基础,文件拷贝 第一节
在日常工作中,经常需要操作一些文件,包括文件的读取和保存!下面简单的了解下file类和字节流!最后再通过一个文件拷贝的小功能,来实践一下!File->>>>是一种文件和文件路径的一种抽象表示 主要用于建立连接File类的常用方法File file = new File("D:/Game/1.png");Boolean exi...
2019-02-24 10:25:54 208
nginx学习笔记
今天闲来无事学了一下nginx 反向代理!学的比较浅!来总结一下! NGINX是为解决C10K问题而编写的少数服务器之一。与传统服务器不同,NGINX不依赖线程来处理请求。相反,它使用更具可扩展性的事件驱动(异步)体系结构。这种体系结构使用较小但更重要的是可预测的负载下的内存量。即使您不希望处理数千个并发请求,您仍然可以从NGINX的高性能和小内存占用中受益。NGINX可以从各个方向...
2018-03-18 23:42:35 138
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人