- 博客(64)
- 资源 (2)
- 收藏
- 关注
原创 使用PageHelper不允许出错,晓得伐?
很久之前出的一个问题了-使用pagehelper分页已经开启分页了,但是没有生效,一直没总结,直到今天看到一个wechat作者总结的一篇文章-在一定场景下回导致OOM,那么就来总结一下。下方为Error Code:/** @author sunshaocong */@RestController@RequestMapping("/test")public class TestController { private final GpsService gpsService; priv
2021-07-29 15:14:35 252 1
原创 哥哥教你不引入第三方Quartz的定时任务
环境: SpringBoot 2.X JDK 8 Maven 3.5.XOK,开始正文. . . 因为目标是实现基本的定时任务,另外ToB且为单体,所以可以忽略并发,那么这种场景的话引入第三方Quartz框架(如XXL-Job)有些多余,所以我们从框架本身出发,看是否有合适的包供我们使用(需要做调研),那么结果是好的,我们可以借助org.springfra.
2021-06-08 16:06:34 245 2
原创 无语子之都2021年了你还只会MySQL吗?
要说现在企业中哪种类型数据库使用最为普遍,那么MySQL当仁不让的第一,但是无语子如果你除了MySQL就不知道其他的数据库,那么建议你好好看看本文章。????,摆好小板凳认真听讲了。相信作为一个开发人员的你应该对MySQL这一企业常用数据库很了解了,但是为了照顾少部分人,我还是从MySQL开始进行一步步扩展,首先MySQL数据库是使用关系型数据库管理系统(RDBMS)来存储和管理大数据量,也就是所谓了关系型数据库。而所谓的关系型数据库是建立在关系模型基础之上的数据库,借助于集合代数等数学概念和方法来处
2021-04-02 20:00:39 274
原创 菜是原罪之回温Spring事务
不是不会,菜是原罪今天,today,localdatetime,⭐哥在????????上问了一个问题之本地事务的正确姿势,我很果断的说加try catch当时不知道哪里来的自信,⭐哥的一句我想杀死你聪聪,让我害怕了,秉着认真负责的态度,我还是去Baidu一下。直接上来就说问题原因和解决办法有点突兀,所以还是一点点来说吧,先来聊一聊什么是事务事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操
2021-03-28 19:31:50 751
原创 你还在new Date(),System.currentTimeMillis()吗?
又又又一次拖更,原因就是出去玩耍了,游客照附上,大家也要注意劳逸结合,马上清明节了出去玩耍的朋友们还是要注意好防护。别问我为什么歪头,我也不知道。好了,开始扯正文。相信大家在开发过程中都有过要处理日期/时间的情况,比如createTime、updateTime啥的应该都有过吧。在处理这些字段的时候用new Date()、System.currentTimeMillis()还有SimpleDateFormat比较多吧。但是当用阿里巴巴规范插件检测的时候就会有warning存在(特指:new Date()
2021-03-24 12:41:08 651 1
原创 处理集合交集的小tips
本来想昨天来总结这篇没什么水平的文章,但是因为一些事情搞得我心情有些不佳,虽然现在也是,但是也不想拖了,拖来拖去就脱没了。最近也是都不知道写点什么,没什么太多的输入(约等于0),就吃吃老本,再扩展一下吧。这次主要是想说一下开发过程中的对数据处理(tips:集合)。引子????:現在假如你遇到了一个场景,有两个集合,需要你来判断一下集合中是否有相同的元素,存在就返回true,不存在就返回false,你会怎么做?第一个想法应该是这样吧:“暴力解决一切”,双层for循环外加flag标志位。这不是简简单单?
2021-03-15 16:22:32 277
原创 Mybatis-plus 类型转换的那些坑如何躲避?
不知道你有没有用过mybatis/mybatis-plus?应该都用过吧(碎碎念:没用过我也就很无奈了),那么在用这个半orm框架的时候不知道你们都遇到了哪些坑,今天我就来说说我遇到的坑以及解决方案。因为在设计数据库的时候使用到了json类型结构要对应Entity的List<Entity>类型,就需要考虑如何完成这个蜜汁操作??对mybatis有些了解的应该知道实体映射只会自动映射基本类型,像list或者map这种类型是没办法来进行自动映射的,所以很多人在处理的时候常采用以下方案:将En
2021-03-06 18:20:11 1533 1
原创 Activiti7_剖析springboot创建activiti数据库~
讲在前头:本篇阐述springboot集成activiti7数据库创建方式环境:IDE:IDEA 2020.3SpringBoot:2.4.2Activiti:7.0.0.Beta1你应该知道的:springboot是从spring的基础上演变而来的,相对于spring来说的话,springboot的配置会更加简化一点,不仅表现在多了很多注解方式导入bean,更是表现在依赖引入方面,springboot对原有的依赖包进行了又一层的封装你还应该知道的:创建一个项目我们应该做的事情有哪些?导
2021-02-09 19:54:37 381
原创 双类加载
讲在前头:首先明确一下双类加载概念,双类加载常出现在父子类,即加载子类(子类中有继承父类方法),主要来说一下父类子类加载流程。如下:public class Father { public static int a = 1; static { System.out.println(a); }}public class son extends Father { public static int b = 2; static {
2021-02-05 12:34:31 185
原创 MySQL_公共字段自动填充
讲在前头:字段自动填充你可以选择在设计数据库的时候对字段进行函数设计–或者触发器方式,也可以选择我的这种在代码中进行控制。常用于创建时间,更新时间以及乐观锁字段因为是要填充到数据库中,所以不难想到需要对实体进行一些处理,如下:@Data@EqualsAndHashCode(callSuper = false)@Accessors(chain = true)public class Account implements Serializable { private static final
2021-01-29 17:37:13 506
原创 List<对象>转换Map<String,List<对象>>方案
前提:List<对象>转换成Map<String,List<对象>>,对象中存在type字段,依据type为Map的key,进行数据的拆分public class File { private static final long serialVersionUID=1L; private String id= new ObjectId().toHexString(); private String size; private Strin
2021-01-25 16:58:21 6758 1
原创 如何理解反射?
在开发过程中我们会经常听到、见到、乃至使用到反射,但是对于反射的理解大家应该都有自己的独特见解,本文章仅在叙述个人对反射的理解,如有补充请评论。在讲述个人理解之前,先来看一下jdk官方对反射的解释:看到英文应该就有人头疼了,不要紧,可以用高德翻译一下,大概的意思就是:反射使Java代码能够发现有关已加载类的字段、方法和构造函数的信息,并在安全限制内使用反射的字段、方法和构造函数对其底层对应项进行操作。API容纳需要访问目标对象的公共成员(基于其运行时类)或给定类声明的成员的应用程序。它还允许程序抑制默
2021-01-24 20:44:08 221
原创 数组To集合为什么不能增删?
最近有频繁的数组集合的转换,之前的方案就是for循环遍历操作,最近有用到Arrays.asList()方法,但是在测试中发现这种转换后的集合不可增删。只是说的话还不是很直观,跑个代码看一下:/** * 增 * @param args */public static void main(String[] args) { String[] a = {"1", "2", "34", "5"}; List<String> temp = Arrays.asList(a);
2021-01-20 18:59:54 135
原创 protoBuf_语法
秉着讲武德的态度,本周一更。那么就接着上周的protobuf语法来开展吧,目前使用的protobuf语法有两种,分别是proto2和proto3,那么这两种语法有什么区别呢?我们下文详细来讲<长江后浪推前浪,肯定会把前浪拍在沙滩上>emmm,首先目前如果你想要使用proto3语法那么就需要在.proto文件中的syntax中指定语法类型为proto3,否则,编译器会默认采用proto2语法其次呢,就是在书写.proto文件中的一些区别:1、proto3字段默认是singular,不需要
2020-11-22 10:41:45 353
原创 protoBuf_demo
说到做到,今天就出一个demo,其实网上protobuf和spring结合的demo有很多,可能我写的不一定就能帮助大家,但是我会把我理解的protobuf和spring结合的一些东西都写下来首先我们需要创建一个.proto文件,如下:就是使用创建文件的方式进行创建,后缀名是proto就可以了。看到上边的文件内容,肯定第一感觉是懵的,这都是啥跟啥,这个为什么要这样写,那个格式为什么是那样???那就来解释一下各部分的含义:...
2020-11-14 18:48:30 543
原创 protoBuf_为什么要使用protoBuf编码?
我们在日常码代码的时候通常会有涉及到对象的序列化和反序列化;因为TCP协议只能发送字节流,所以需要应用层将Java对象序列化成字节流,数据接收端在反序列化成Java对象。目前我们常用的序列化和反序列化编码是–JSON当然编码方式除了JSON之外还有XML或者是Java内置的编码和序列化机制,但是为什么我今天会提出protoBuf这种编码方式?肯定是有原因的!!1、首先,使用JSON,将对象转换成JSON字符串,通常应用在web应用或者移动开发等方面,是基于http请求的一种方式,主要是因为他的可读性高,
2020-11-04 14:41:28 586
原创 protoBuf_安装教程
原因去做一件事肯定是带有一定目的性的,就比如我要写的这件事,前几天老大说在数据传输时不打算使用xml或者json,想用protobuf,但是我菜啊,不知道那是个啥,那咋办?学呗,看了一些人的帖子还是没领悟太透,所以就先出个安装教程吧,后续的等我理解的差不多的再抛出来…注意这次的安装教程是windows环境下的,linux或者其他环境请绕路…start安装东西肯定是需要有安装包的,对不对,所以就先下载个安装包吧,下载地址如下:https://github.com/protocolbuffers/p
2020-10-30 12:32:24 343
原创 Java_GPS经纬度转坐标
需求GPS是常见的定位硬件,当佩戴GPS时会提供经纬度数信息,需要将经纬度数转换成为坐标值方法常见的经纬度转坐标值有墨卡托算法,米勒投影算法等,那么今天就来说一下这两种方法的实现。首先还是来引入一下这两种算法吧,详情如下:墨卡托算法:https://blog.csdn.net/ryfdizuo/article/details/20793669米勒投影算法:https://baike.baidu.com/item/%E5%A2%A8%E5%8D%A1%E6%89%98%E6%8A%95%E5%B
2020-10-28 18:13:55 2324 4
原创 Java_Event事件发布与监听
使用场景要接受消息进行存库操作,但是消息的来源是不固定的,有多个来源,触发的事件也是不固定的,最简单的一种方式是通过写接口然后二次调接口的方式来实现,但是这样又相当于多了一次操作,性能会降低,所以通过事件监听的方式来进行。Event组成部分完成一个完整的Event操作需要有三个部分:事件、事件监听器、事件发布器示例1、首先如果我们需要先定义一个事件,这里我们定义一个MessageEvent事件。需要继承Spring提供的ApplicationEvent类,这个类继承了JDK中的事件基类EventO
2020-10-21 16:16:37 2918 2
原创 启动ElasticSearch必踩坑
前提centos版本:6.X问题1max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]解决1切换到root用户,编辑limits.conf 添加类似如下内容vi /etc/security/limits.conf##添加如下内容* soft nofile 65536* hard nofile 131072* soft nproc 2048* hard
2020-08-15 10:11:10 190
原创 你对HashMap有多少了解?
基于jdk8进行分析,并与jdk7进行比较HashMap概述HashMap是基于Map接口实现的,元素以键值对的方式进行存储,并且允许使用null键和null值,因为key不允许重复,所以只能有一个就键为null,另外HashMap不能保证放入元素的顺序,所以他是无序的,和放入的顺序并不能完全相同。而且HashMap是线程不安全的(主要体现在Put方法)继承关系public class HashMap<K,V> extends AbstractMap<K,V> impl
2020-07-13 14:21:27 264
原创 线程唤醒等待机制
在Java最早期的时候,常常采用suspend()和resume()方法对线程进行阻塞和唤醒,但是现在不再推荐使用了,是因为: suspend()方法在导致线程阻塞的过程中,不会释放任何锁资源。其他线程都无法访问被它占用的锁。直到对应的线程执行resume()方法后,被挂起的线程才能继续,从而其他被阻塞在这个锁的线程才能继续执行。如果resum...
2020-07-05 20:20:06 332
原创 你所知道的synchronized关键字
原理在Java中,每一个对象有且仅有一个同步锁。这也意味着,同步锁是依赖于对象而存在的。当我们调用某个对象的synchronized方法的时候,就获取到了该对象的同步锁。如:synchronized(e)就获取到了"e这个对象"的同步锁。不同线程对同步锁的访问是互斥的,在某个时间点,对象的同步锁只能被一个线程获取到。通过同步锁,我们可以在多线程中实现对“对象/方法”的互斥访问。比如:有两个访问同一个同步锁的线程A和线程B,在某一时刻,线程A获取到这个同步锁并执行一些操作;而此时,线程B也企图获取同步锁
2020-07-03 18:39:11 217
原创 Thread类中的start和run!!!
经常看源码的大家应该都知道,Thread中包含了start和run两个方法,这两个方法都是用来启动线程的,那么他们到底有什么区别,我们来讲一讲…是什么??start()方法是什么? 线程类的start方法可以用来启动线程,该方法会在内部调用Runnable接口的run方法,以在单独的线程中执行run方法中所指定的代码 启动线程执行的任务:统计一个新线程线程从New state移动到Runn
2020-07-03 14:03:31 314
原创 Java_the way to create threads
有句话说前头:Java使用Thread类表示线程,所有线程都会是Thread类或者其子类的实例。你所能想到的创建方式先来说说最常用的实现多线程的两种方式:Thread和RunnableRunnable是一个接口,包含一个run()方法public interface Runnable{ public abstract void run();}通过实现Runnable的方式来创建线程,实现多线程。比如:class MyThread implements Runnable { p
2020-07-01 15:40:24 272
原创 Java多线程“敲门砖”
简述线程 操作系统支持进程的概念,所有运行中的任务通常就是一个程序,每个运行中的程序就是一个进程。当一个程序运行时,其内部可能包含有多个顺序执行流,每一个顺序执行流就被称为“线程”。 多线程扩展了多进程的概念,使得一个进程可以同时执行多个任务。线程(Thread)也被称作轻量级进程(Lightweight Process)。再究多线程多线
2020-06-30 21:32:39 162
原创 Activiti_core context
前言每一个技术都必然有其核心,那么今天就来说一下Activiti的核心大纲Activiti的核心有:流程引擎(☆☆☆☆☆)、和由流程引擎创建的各种服务。流程引擎流程引擎(ProcessEngine),流程引擎初始化的主要目的就是初始化Activiti所需要的表,所以这边配置数据源 相当重要通过流程引擎对象获取各种核心服务例如:ProcessEngine processEngi...
2019-12-28 19:53:56 218 2
原创 Activiti_what it is
介绍Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。从基础开始构建,旨在提供支持新的BPMN 2.0标准,包括支持对象管理组(OMG),可以定义流程、执行流程并以不同方式对其实现运行。Activiti基于Apache许可的开源BPM平台,创始人Tom...
2019-12-22 20:09:45 306 4
原创 Windows下MyEclipse 2019安装Activiti插件
下载插件下载activiti插件,地址为 https://www.activiti.org/designer/archived/ ,下载5.18可用,已经测试放入根目录解压后,将解压后的文件放入文件的dropins目录下如:添加link文件添加activiti.link文件,内容path=…\MyEclipse 10\dropins\activiti,你的插件安装地址。如:重启...
2019-12-14 08:59:18 829 2
原创 Java中的魔法值及其解决办法
什么是魔法值魔法值就是指在代码中直接出现的数值,只有在这个数值记述的那部分代码中才能够明确了解它的含义。影响魔法值会使得代码的可读性下降。并且如果数值出现多次不能够明确说明这些数值的含义,在使用数值的时候也容易出现错误。代码举例//定义array数组int [] array = new int[24];//遍历array数组输出值for (int i =0; i < 24;...
2019-12-08 20:26:24 2258
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人