
java学习
Sir_小三
苦海无涯,学无止境!
展开
-
java 多线程第一章 理论概念笔记 总结
线程的创建1.继承Thread,重写run方法, 创建 Thread 对象 调用 Thread 对象的start方法,让线程进入就绪状态这种方式没什么好说的,继承Thread类,重写run方法就行2.实现 Runnable 接口,实现接口中run方法,并且创建 Thread对象,将Runnable任务对象传递进Thread的构造方法,然后在调用 Thread 对象的start方法,源码调用流程:当线程被调度,执行Thread类的run方法,线程对象的run方法判断传进来的Runnable任务对象不为n原创 2022-03-29 16:47:10 · 3289 阅读 · 0 评论 -
mysql 数据库 创建用户,并赋予该用户 指定数据库,表权限
– 创建数据库 elf 用户 ‘%’ 代表任意ipCREATE USER 'elf'@'%' IDENTIFIED BY 'Flzxsqcelf@123456'; – 授权 给 elf用户授权cube_tourism.* 数据库所有表 all privileges 代表所有权限,增删改查,删除表等grant all privileges on cube_tourism.* to 'elf'@'%';– 取消elf 用户cube_tourism数据库下所有表的权限,假如之前赋予过所有权限,需原创 2021-11-22 15:23:10 · 1851 阅读 · 0 评论 -
java Pdf 加水印
Maven jar <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.9</version> </dependency> <dependency> <groupId>com.itextpdf</groupId>原创 2021-06-12 22:58:38 · 1391 阅读 · 3 评论 -
NIO 网络编程 群聊案例
服务端package com.bio.demo;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.*;import java.util.Iterator;import java.util.Set;/** * @author yanjun.liu * @date 2021/4/29--10:42 * <p原创 2021-04-30 11:38:22 · 193 阅读 · 0 评论 -
java Bio
前言I/O 模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能。Java 共支持 3 种网络编程模型 I/O 模式:BIO、NIO、AIO** 那么什么是Bio**?相信很多人应该对io不陌生吧,在java 中有 各种输入,输出流,那所谓的io其实就是对数据的流入和流出的一种抽象,那么为什么叫 BIO 呢?其实B 代表的是 blocking 这个单词,阻塞的意思,也就是说BIO == 阻塞io那数据的传输过程中,必定少不了网络的支持,在java 中提供了Sock原创 2021-04-25 15:54:37 · 147 阅读 · 0 评论 -
SpringBoot上传文件 MultipartFile.getBytes 导致内存溢出
记录一下生产环境上传大文件 发生的一次内存溢出问题管理平台在上传 大文件时抛出错误 OOM异常(jvm 内存溢出,就是内存不够用了),除了上传文件以外,其它操作没有什么问题经过排查发现,后端controller接口 使用了 MultipartFile.getBytes() 去拿到文件的字节数组,试想下如果上传2个g的视频,那么这个bytes数组得多大?需要占用多少内存?经常网上查找,找到了一个方法,通过拷贝流的方式来做错误的上传方式 FileUtils.uploadFile(file.get原创 2021-04-07 15:39:38 · 11215 阅读 · 3 评论 -
Nginx 作为代理服务器 对于大文件的上传 需要注意 client_max_body_size
简单记录一下生产出现大文件上传相关问题最近在处理大文件上传问题 时发现很多从潜在的问题,其中就包括 nginx 文件上传配置,之前也没有对nginx 上传做过很详细的了解,(可能都是因为上传的文件太小了吧,没有出现这种情况)问题场景:在超过1g的视频上传时,前端会出现,上传到一半,然后就不动了,最后导致直接断开,然后网络请求也不会有任何反馈(原因大概是,上传文件太大,nginx就没通过,当然也就没有调用到后端服务),当从这个简单的错误来看,很难定位问题出在哪里,nginx 日志我也看了,并没有出现原创 2021-04-07 15:08:25 · 1905 阅读 · 0 评论 -
java 8 日期相关操作
前端传日期后端controller 进行格式化date对象例如: @ApiOperation("查询") @GetMapping("/vaccine/date") public FastResponse<Map<String, Object>> getVaccineByDate(@DateTimeFormat(pattern = "yyyy-MM-dd") Date date, Long stationId) 对数据库日期进行格式化,返回给前端,实体类注解,原创 2021-03-24 13:52:04 · 140 阅读 · 0 评论 -
BigDecimal 的使用
此文参考博主https://www.cnblogs.com/jpfss/p/8072379.htmlhttps://blog.youkuaiyun.com/zhangxg_cq/article/details/80179399Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用j.原创 2021-02-24 08:58:48 · 348 阅读 · 0 评论 -
域名解析服务DNS,域名,ip之间的关系
最近将阿里云的域名转移到腾讯云,并更换域名解析DNS服务之后,网站出现域名解析不稳定的问题,那么到底这三者是什么关系呢,简单的记录一下重点 什么是DNS 域名服务器呢?还是看看百度百科怎么说吧,毕竟我说的也不算哈哈哈DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。把域名原创 2021-02-09 16:22:46 · 1130 阅读 · 0 评论 -
restTemplate 发送post 请求
HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); String REQUEST_SN = UUIDUtils.generate32BitId(); //请求序列号,企业随机生成 headers.add("REQUEST_SN",REQUEST_SN); //...原创 2020-12-25 14:29:22 · 323 阅读 · 0 评论 -
mybatis-plus 类属性自动填充功能
实现元对象处理器接口:com.baomidou.mybatisplus.core.handlers.MetaObjectHandler1.需要自行定义一个类去实现MetaObjectHandler类,并且此类一定要申明交给spring容器 @Component 声明@Componentpublic class UpdateRelatedFieldsMetaHandler implements MetaObjectHandler { /** * 新增操作 * *原创 2020-11-23 17:13:33 · 951 阅读 · 7 评论 -
RestTemplate 发送http post请求
RestTemplate :传统情况下在java代码里访问restful服务,一般使用Apache的HttpClient。不过此种方法使用起来太过繁琐。spring提供了一种简单便捷的模板类来进行操作,这就是RestTemplate来进行http或者https的调用post请求对于post请求提交有 FormData和Payload 两种形式:1.第一种是formdata形式,在header参数里可以直接看到2.payload则封装成json格式post过去,获取以后需要再解析成实体。restT原创 2020-10-15 11:56:28 · 2352 阅读 · 0 评论 -
阿里oss配置跨域 和防盗链
阿里oss存储配置跨域,不配置上传有跨域问题阿里oss存储配置防盗链,白名单原创 2020-09-09 20:26:21 · 404 阅读 · 0 评论 -
mysql 连接错误 too many connections
– 当前占用的连接SELECT count(*) FROM information_schema.PROCESSLIST WHERE DB = ‘smart_village’– 查询数据库默认配置最大连接数show global variables like ‘max_conn%’;– 查询数据库默认配置最大连接数SELECT @@MAX_CONNECTIONS AS ‘Max Connections’;– 当前存在的连接show processlist;show global variab原创 2020-08-14 13:34:07 · 198 阅读 · 0 评论 -
menu 使用,字段转换
package com.transnal.common.enums;/** * @author yanjun.liu * @date 2020/7/24--9:19 */public enum FastEnum implements InfoEnum { DEVELOPMENT_PHASE("development_phase", "研发阶段"), TEST_PRODUCTION_STAGE("test_production_stage", "试生产阶段"), MARK原创 2020-07-24 10:13:39 · 177 阅读 · 0 评论 -
java 并发interrupt 两阶段终止 ---- 监控案例
package com.ts.concurrent.mthread;import lombok.Data;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.TimeUnit;/** * @author yanjun.liu * @date 2020/7/1--18:06 * * 多线程两阶段终止案例 */@Data@Slf4jpublic class MyInterrupt { public s原创 2020-07-01 18:48:46 · 224 阅读 · 0 评论 -
java 并发 join 之 老王泡茶
package juc;import java.util.concurrent.TimeUnit;/** * @author yanjun.liu * @date 2020/7/1--17:00 */public class Test6 { public static void main(String[] args) throws InterruptedException { Thread lw= new Thread(()->{ t原创 2020-07-01 17:43:07 · 158 阅读 · 0 评论 -
java 并发编程 ReentrantLock
本文参考自大佬 公众号:路人甲java添加链接描述synchronized 的局限性synchronized是java内置的关键字,它提供了一种独占的加锁方式。synchronized的获取和释放锁由jvm实现,用户不需要显示的释放锁如果当前线程获取不到锁,那么会一直阻塞,其他线程也需要一直等待锁的释放。除非当前线程执行完成,或者结束阻塞,或者抛出异常,才能释放锁,别的线程才可以继续争取锁ReentrantLock是Lock的默认实现,在聊ReentranLock之前,我们需要先弄清楚一些概念原创 2020-06-29 19:27:08 · 222 阅读 · 0 评论 -
日期工具类 时间自由穿梭
package com.transnal.core.tool.utils;import lombok.experimental.UtilityClass;import org.springframework.util.Assert;import java.text.ParseException;import java.time.*;import java.time.format.DateTimeFormatter;import java.time.temporal.Temporal;imp原创 2020-06-29 15:17:24 · 410 阅读 · 0 评论 -
java 并发编程 线程中断的几种方式 interrupt线程标志
通过volatile修饰的变量来停止线程package juc;import java.util.concurrent.TimeUnit;/** * @author yanjun.liu * @date 2020/6/28--17:13 */public class MyInterrupt { public volatile static boolean falg=false; public static void setFalg() { falg =原创 2020-06-28 18:39:32 · 244 阅读 · 0 评论 -
Java 并发 synchronized 锁
当多个线程操作共享数据时会存在数据安全问题,java提供了synchronized可以帮助我们解决,先来看一段代码package juc;/** * @author yanjun.liu * @date 2020/6/28--13:21 */public class MySynchronized { private static int sum=0; public static void m1(){ for(int i=0;i<100000;i+原创 2020-06-28 14:46:30 · 119 阅读 · 0 评论 -
LocalDateTime 日期格式化
获取当前时间 LocalDateTime dateTime = LocalDateTime.now();对当前日期进行格式化String date=DateTimeFormatter.ofPattern("yyyy-MM-dd 00:00:00").format(dateTime);原创 2020-06-22 13:26:30 · 51401 阅读 · 0 评论 -
并发编程 join 阻塞
看看join 阻塞很多时候,一个线程的输入可能非常依赖于另外一个或者多个线程的输出,此时,这个线程就需要等待依赖的线程执行完毕,才能继续执行。jdk提供了join()操作来实现这个功能A依赖B,那么在A线程中去调用 B.join() ,A线程开始等待B线程无限等待,直到目标线程执行完毕public final void join() throws InterruptedException;在给定的时间,B线程没有执行完成,那么A线程就不等了,开始执行,(cpu调度获得执行权)publi原创 2020-06-20 14:04:39 · 190 阅读 · 0 评论 -
java 并发 饥饿锁(阻塞导致死锁)案例
饥饿是指某一个或者多个线程因为种种原因无法获得所要的资源,导致一直无法执行。比如它的优先级可能太低,而高优先级的线程不断抢占它需要的资源,导致低优先级线程无法工作package juc;import java.util.concurrent.*;/** * @author yanjun.liu * @date 2020/6/19--17:57 * 饥饿锁 */public class A { /** * 获取一个单例线程池,只有一个线程,任何有序执行,先到先执行原创 2020-06-19 19:36:46 · 522 阅读 · 0 评论 -
mybatis xml 日期格式化
<select id="count" resultType="java.lang.Integer"> select count(*) from ai_appointment_visitor where 1=1 <if test="entity.opStatus != null and entity.opStatus != ''"> op_status = #{entity.opStatus} &.原创 2020-06-17 13:20:52 · 3172 阅读 · 0 评论 -
WebMvcConfigurer配置Converters转换器,//将Long转为string 解决id过大 js只显示16位的问题,超出变0
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); ObjectMapper objectMapper = jackso...原创 2020-05-25 13:59:03 · 638 阅读 · 0 评论 -
后端返回数据fastjson排序问题-如何改变fastjson的排序规则
属性上添加@JSONFiedl注解可解决,按大小排序package com.youdu.zhondaban.resp;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import com.alibaba.fastjson.annotation...原创 2019-12-05 00:49:38 · 529 阅读 · 0 评论 -
springboot maven插件 mybatis generator 以及main方式启动的mybatis generator
**springboot maven配置mybatis generator 生成代码使用springboot2.0版本以上,我父工程默认引入的的mysql jar包是8.0以上的,连接mysql数据库的时候要这么写,驱动那里加了cj.的,如果你jar是6.0以下就可以不用加spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver...原创 2019-04-25 10:37:14 · 1658 阅读 · 0 评论