自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据库时区问题

查询数据时,当使用Date格式作为查询条件时,会增加8小时,所以使用JsonFormat格式应使用注解:查看mysql时区 SELECT @@global.time_zone;可以看到使用的全局时区是system,也就是系统时区。我们mysql所在windows系统,采用东8区。所以如果不加日期时区信息,JsonFormat格式化是序列化即前台向后台传递,传递的数据会被认为是utc时间,到java后台如果不加时区就会比实际大8小时,插入到数据库的时间转化后会大8小时。

2023-08-03 13:53:37 135

原创 程序基本功:排序算法经典算法

快速排序:import org.junit.Assert;import org.junit.Test;import java.util.Arrays;public class Sort { int[] initNums = {2, 45, 23, 11, 45, 3, 88, 19, 55, 109, 1998, 1, 26, 46, 67, 99}; @Test public void getFinalNum() { testAlgorithm(ini

2021-03-23 14:00:29 171

原创 数据库

阿里规范中有关数据库索引的规定:【强制】超过三个表禁止 join。需要 join 的字段,数据类型保持绝对一致;多表关联查询时, 保证被关联的字段需要有索引。说明:即使双表 join 也要注意表索引、SQL 性能。 【强制】业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引。说明:不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,但提高查找速度是明显的;另外,即使在应用层做了非常完善的校验控制,只要没有唯一索引,根据墨菲定律,必然有脏数据产生。【推荐】如果有order

2021-01-14 15:47:38 167

原创 字节数组和基本类型转换

基础知识boolean 一位byte 8位 一个字节short char 2个字节int float 4个字节double long 8字节java是unicode编码,一个char可以占两个bai字节,可以存储一du个汉字。一个String,要zhi看有几个字母或者dao几个汉字,一个英文字母就是一个字节,一个汉字就是两个字节,以此类推计算。带符号按位左移 << 带符号右移>> 不带符号右移 >>>1.内存中的位运算,都会先转换成int,4个字节

2020-12-22 16:13:45 1920

原创 运维

8.0以后的mqsqlCREATE USER 'root'@'%' IDENTIFIED BY '你的密码'; GRANT ALL ON *.* TO 'root'@'%'; ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';FLUSH PRIVILEGES;

2020-12-15 11:39:44 98

原创 Netty

一个Chennel信道包括一个pepeline管道。可以有多个ChannelHandlerContext信道处理者上下文,成员变量包含ChannelHandler信道处理者 ,并实现了ChannelInboundInvoker(入口信道调用者),看以下方法public interface ChannelInboundInvoker { /** * A {@link Channel} was registered to its {@link EventLoop}. *

2020-12-04 14:21:19 127

原创 ReferenceQueue与Reference

Reference的enqueue()方法 public boolean enqueue() { return this.queue.enqueue(this); }ReferenceQueue 的enqueue方法 boolean enqueue(Reference<? extends T> r) { /* Called only by Reference class */ synchronized (lock) {

2020-11-16 10:53:07 299

转载 java Type分类:GenericArrayType TypeVariable WildcardType ParameterizedType Class

java范型参数

2020-11-12 19:21:51 1396 3

原创 完美解决FastJson出现 com.alibaba.fastjson.JSONObject cannot be cast to model的bug

/** * 将map转list * * @param maps map * @param clazz clazz * @param <T> T * @return list * @throws NoSuchMethodException * @throws IllegalAccessException * @throws InvocationTargetException * @throw.

2020-11-12 16:41:45 2452 3

原创 自定义工具类:数据统计处理四分位数据,日期工具类

public class Tools { private static final double oneDayLong = 24 * 60 * 60 * 1000;// 一天时间 private static final double oneWeekLong = 7 * oneDayLong;// 一周的时间 private static final DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); p

2020-11-07 11:10:06 107

原创 flink入门

@SpringBootTest@SuppressWarnings("deprecation")class FlinkbizApplicationTests { @Test void contextLoads() throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelis

2020-11-04 17:08:44 369

原创 Enum类型

package cmtech.soft.biz.utils.model;import cmtech.soft.biz.utils.MyStrTool;/** * 工单状态 */public enum WorkOrderStatus { CREATED("created", "未开始生产"), RUNNING("running", "生产开始"), PAUSED("paused", "生产暂停"), ENDED("ended", "生产结束"); pri

2020-09-25 13:52:09 105

原创 Diboot mybatis plus辅助工具

diboot mybatis plus辅助工具

2020-09-24 11:37:24 392

转载 java 闭包与lambda

https://developer.ibm.com/zh/articles/j-java8idioms10/[闭包]

2020-09-23 14:34:00 128

转载 匿名内部类(转)

匿名内部类

2020-09-18 16:02:42 74

原创 mqtt的使用 broker:EMQ

MqttConfig类package cm.soft.collect.config;import cm.soft.collect.biz.CollectBiz;import cm.soft.collect.service.OnMqttCallBack;import org.eclipse.paho.client.mqttv3.*;import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;import org.springfr

2020-09-11 13:47:15 1005

原创 线程工具类

自定义线程package cm.soft.collect.threadUtil;import java.util.Queue;import java.util.concurrent.LinkedBlockingDeque;import java.util.concurrent.locks.LockSupport;/** * 仿照线程池的形式封装一个任务队列存放没有完成的老任务 */public class CustomThread extends Thread { private

2020-09-11 13:44:12 146

原创 字符串工具类

package cmtech.soft.equipment.utils;import cmtech.soft.equipment.utils.Aop.InterceptAction;import com.bestvike.linq.Linq;import org.joda.time.DateTime;import java.text.SimpleDateFormat;import java.util.*;public class MyStrTool { /** * 根据

2020-09-11 13:39:24 182

原创 集合工具类

package cmtech.soft.equipment.utils;import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Set;import java.util.function.Function;import java.util.stream.Collectors;/** * 集合工具类 * * @param <T> 范型 */pub

2020-09-11 13:38:06 88

原创 函数式引用

所谓方法引用,是指如果某个方法签名和接口恰好一致,就可以直接传入方法引用。方法签名只看参数类型和返回类型,不看方法名称,也不看类的继承关系。不论方法是静态方法还是实例方法。FunctionalInterface允许传入:接口的实现类(传统写法,代码较繁琐);Lambda表达式(只需列出参数名,由编译器推断类型);符合方法签名的静态方法;符合方法签名的实例方法(实例类型被看做第一个参数类型);符合方法签名的构造方法(实例类型被看做返回类型)。FunctionalInterface不强制继承关系

2020-09-10 14:41:20 270

原创 值类型和引用类型

通过查看源码forEach的源码是增强for说明增强for不是对源数据的修改,是对原来集合的拷贝。package com.example.test;import java.util.ArrayList;import java.util.List;import java.util.Optional;public class TestOptional { public static void main(String[] args) { List<Student&gt

2020-09-09 14:27:27 129

原创 java的回调

使用Mqtt的时候用到了回调,消息到达和连接上时触发回调函数的执行。java的回调类似于C#中的委托,事件。和函数接口,函数式接口(@FunctionalService),lambda紧密相关。一些常用的设计模式如发布订阅模式都使用了委托。一个含有委托类的类负责委托中函数的触发时机,委托类的函数的具体执行,放到实现委托类接口的类中实现。这样就减少了耦合性,灵活性,可以实现更复杂的功能。下边自己实现一个智能温控计的功能,使用回调实现,到达报警温度时,停止加热并报警的功能。先上回调类,用一个函数式接口实

2020-08-29 13:37:16 207

转载 分布式锁和分布式事务

分布式锁入门1分布式锁入门2seata分布式事务mybatis plus集成seata分布式事务

2020-08-29 08:37:45 164

原创 AQS:AbstractQueuedSynchronizer(队列同步器)

分析下边两个比较绕的方法: /** * Inserts node into queue, initializing if necessary. See picture above. * @param node the node to insert * @return node's predecessor */ private Node enq(final Node node) { for (;;) { Node

2020-08-19 20:59:35 295

转载 转:LockSupport 及Unsafe

concurrent包是基于AQS (AbstractQueuedSynchronizer)框架的,AQS框架借助于两个类:Unsafe(提供CAS操作) LockSupport(提供park/unpark操作) 因此,LockSupport非常重要。park函数是将当前调用Thread阻塞,而unpark函数则是将指定线程Thread唤醒。两个重点(1)操作对象Thread归根结底,LockSupport.park()和LockSupport.unpark(Thread thread)调用的.

2020-08-18 13:35:15 180

原创 java retry的作用:小实验

package com.example.test;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class TestApplicati

2020-08-14 14:29:57 151

原创 Java设计模式:代理模式

使用代理模式来实现数据库连接池,代码部分转自廖雪峰的官方网站代理模式我的理解是:代理类继承了被代理类。存储了真正的被代理类对象的访问钥匙或途径,封装在代理类的变量中,代理类可以有自己的功能,如鉴权等一些操作,等到真正需要用时才用钥匙获取被代理对象。定义抽象类(可以不实现接口中方法)执行被代理类中对应方法可以作为访问的钥匙,此方法在代理类中没有,于是去找父类被代理类中的此方法,这个方法引用又需要到代理类中获取,先到父类,又到子类,用了继承和多态两个特性...

2020-08-11 12:50:59 121

原创 设计模式:单例和抽象工厂

单例模式:全局只允许有一个实例对象,可以有饿汉和懒汉式抽象工厂:工厂和产品有多个,产品接口可以派生出多个产品,根据不同产品的组合可以派生出多个工厂。只关心想要的产品,不用关心工厂创建和产品生产的过程,将这个过程隐藏在程序内部。工厂方法:常用静态方法来实现。自己写的一个将工厂模式和单例模式结合起来的实例,工厂是单例,产品的获取用工厂模式。定义产品接口:可以吃的接口package com.example.designModel.factory;public interface IEat {

2020-08-10 17:08:27 281

转载 转:数据库的乐观锁和悲观锁

悲观锁当我们要对一个数据库中的一条数据进行修改的时候,为了避免同时被其他人修改,最好的办法就是直接对该数据进行加锁以防止并发。定义:这种借助数据库锁机制在修改数据之前先锁定,再修改的方式被称之为悲观并发控制(又名“悲观锁”,Pessimistic Concurrency Control,缩写“PCC”)。悲观锁认为并发下同一条数据被修改的可能性比较大。处理加锁的机制会让数据库并发效率降低,浪费CPU、服务器资源(一个事务如果锁定了某行数据,其他事务就必须等待该事务处理完才可以处理那行数据。),还有增

2020-08-07 13:45:15 244 1

转载 转:Spring循环依赖及解决方式

https://blog.csdn.net/YeaiqFeng/article/details/89057194

2020-08-07 12:28:38 124

原创 Spring Boot的多线程

Spring通过任务执行器(TaskExecutor)来实现多线程和并发编程。使用ThreadPoolTaskExecutor可实现一个基于线程池的TaskExecutor。而实际开发中任务一般是非阻碍的,即异步的,所以我们要在配置类中通过@EnableAsync开启对异步任务的支持,并通过在实际执行的Bean的方法中使用@Async注解声明其是一个异步任务。此外,还提供一种Java的实现方式,多种方式去尝试如何去实现多线程。一、基于Spring注解定义配置类import java.util.con

2020-08-06 14:55:48 288

原创 JVM内存模型、对象结构、JVM性能优化

jvm内存模型模型图各个内存块存放内容JVM内存结构主要有三大块:堆(heap space)、方法区(method area)、本地区(native area)。堆内存堆内存(heap space)存放所有线程共享的对象和数组。在虚拟机启动时创建,Java堆是垃圾收集器管理的主要区域,因此很多时候也被称做“GC堆”。GC回收的策略是按代回收。对象在实例化后的整个运行周期内,都被存放在堆内存中。堆内存又被划分成不同的部分:是JVM中最大的一块由年轻代(Young Generation S

2020-08-04 14:08:27 360

原创 java类加载和初始化

什么是类的加载类加载:类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。类预加载:类加载器并不需要等到某个类被“首次主动使用”时再加载它,JVM规范允许类加载器在预料某个类将要被使用时就预先加载它,如果在预先加载的过程中遇

2020-07-31 18:39:03 848

原创 零散知识点

1.如果不想通过构造方法产生对象,那么可以将构造方法声明为private2.如果父类只有有参构造方法,那么子类必须也有这个有参构造方法,因为要构造出子类必须先构造出父类。

2020-07-29 17:18:29 103

原创 java设计模式:发布订阅模式(观察者模式)

定义一个产品package com.example.observer;public class Product { private String name; private double price; public Product(String name, double price) { this.name = name; this.price = price; } public String getName() { return name; } public dou

2020-07-29 16:36:14 559

原创 java多线程:Future模式

Request-Per-Task每个请求一个任务可以实现异步任务,但是不能获取任务的结果,Future模式可以获取异步任务的结果一个Data的接口package com.FutureExample;public interface Data { public abstract String getContent();}RealData实现Data,构造方法延时产生真正数据,包含获取真正的数据getContent方法package com.FutureExample;publ.

2020-07-28 09:16:53 716

原创 java多线程:每个请求(任务)一个线程 模式Thread-Per-Task(request)和线程池模式

一次请求分配给一个线程public class ThreadAssign{ public void assign(Object... obj){ new Thread(){ public void run(){ ... }.start(); } }}

2020-07-15 21:50:32 963

原创 java多线程:Readers-Write模式读写分离

多个线程读不会冲突;多个线程读的时候,别的线程不能写;一个线程写的时候,其他线程不能读使用public class Data{ private final ReadWriteLock lock=new ReadWriteLock(); public void read(){ lock.readLock(); try{ // ... }finally{ lock.readUnlock(); } } public void write(){ lock.w.

2020-07-15 21:39:47 104

原创 java多线程:生产消费模式(缓冲区Chennel)

缓冲区package com.example.ConsumerAndProducer;public class ChannelCake { private final String[] buffer; private int putPos;// 放置的位置 private int takePos;// 拿走的位置 private int count;// 缓冲区放置实时个数 public ChannelCake(int maxCount){ t

2020-07-15 20:33:07 528

原创 java多线程:Balk(if return)模式

除了守卫暂停模式(while),守护条件的模式,一种是Balk模式 Balk模式:模拟服务器自动保存文件,用户修改同一个文件,如果服务器判断文件没有被修改,就不执行保存。定义被保护对象:向文件修改并保存数据,changed被synchronized保护表示文件状态的改变,用if来判断守护条件,如果文件没有被修改 changed=false那么就直接退出,即balk的含义package com.example.Balking;import java.io.FileWriter;import j

2020-07-07 10:46:57 207

空空如也

空空如也

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

TA关注的人

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