自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (6)
  • 收藏
  • 关注

转载 理解spring-boot-starter-parent

它表示当前pom文件从spring-boot-starter-parent继承下来,在spring-boot-starter-parent中提供了很多默认的配置,这些配置可以大大简化我们的开发。

2023-04-13 15:17:42 1846

转载 自定义注解详细介绍

1 注解的概念1.1 注解的官方定义首先看看官方对注解的描述:An annotation is a form of metadata, that can be added to Java source code. Classes, methods, variables, parameters and packages may be annotated. Annotations have no direct effect on the operation of the code they annota

2021-12-22 16:34:48 348

转载 基于springboot的RestTemplate、okhttp和HttpClient对比

1、HttpClient:代码复杂,还得操心资源回收等。代码很复杂,冗余代码多,不建议直接使用。2、RestTemplate: 是 Spring 提供的用于访问Rest服务的客户端, RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。引入jar包: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spr

2021-01-06 16:10:20 701

原创 MYSQL搜索多个对象的数据,合并重复,并只取第一条,解决办法

低版本:row_number() over partition by 分组聚合函数不能用如果版本高可以直接用:select * ,row_number() over (partition by c_id order by s_score) from score;现在来说说SQL该怎么写:第一种:SELECT t1.* FROM ( SELECT wh.id, wh.ywid, wh.ywlx, wh.jmxm, wh.jmsfzh, wh.xxzt, wh.c

2021-01-05 17:19:11 2492

转载 关于MySQL的命名规范

1. 命名规范1.1 建库规范数据库,表,字段,索引全部用小写英文字母,英文单词之间用下划线(_)隔开。1.2 表字段规范列设计规范根据业务区分使用tinyint/int/bigint,分别会占用1/4/8字节。 使用tinyint来代替enum,enum增加新值要进行DDL操作。 根据业务区分使用char/varchar解读:字段长度固定,或者长度近似的业务场景,适合使用char,能够减少碎片,查询性能高。 字段长度相差较大,或者更新较少的业务场景,适合使用varchar,能够减少空

2020-12-23 13:28:08 603

转载 java1.8新特性之stream流式算法

在Java1.8之前还没有stream流式算法的时候,我们要是在一个放有多个User对象的list集合中,将每个User对象的主键ID取出,组合成一个新的集合,首先想到的肯定是遍历,如下:List<Long> userIdList = new ArrayList<>();for (User user: list) { userIdList.add(user.id);}或者在1.8有了lambda表达式以后,我们会这样写:List<Long> user

2020-12-03 17:27:57 710

转载 Java 1.8 新特性—— 函数式接口 与 函数式编程

一、函数式接口1、概述有且仅有一个抽象方法的接口2、格式public interface FunctionInterface { void run();}3、@FunctionalInterface注解与 @Override 注解的作用类似,Java 1.8 中专门为函数式接口引入了一个新的注解:@FunctionalInterface 该注解可用于一个接口的定义上在这里插入图片描述一旦使用该注解来定义接口,编译器将会强制检查该接口是否确实有且仅有一个抽象方法,否则将会报错如果

2020-12-03 17:15:22 384

转载 MySQL 优化实战记录

背景本次SQL优化是针对javaweb中的表格查询做的。部分网络架构图业务简单说明N个机台将业务数据发送至服务器,服务器程序将数据入库至MySQL数据库。服务器中的javaweb程序将数据展示到网页上供用户查看。原数据库设计1、windows单机主从分离2、已分表分库,按年分库,按天分表3、每张表大概20w左右的数据原查询效率3天数据查询70-80s目标3-5s业务缺陷无法使用sql分页,只能用java做分页。问题排查前台慢 or 后台慢

2020-12-01 17:04:24 183

转载 MySQL索引优化

本文主要讨论MySQL索引的部分知识。将会从MySQL索引基础、索引优化实战和数据库索引背后的数据结构三部分相关内容,下面一一展开(本文图片可点开放大)。一、MySQL索引基础首先,我们将从索引基础开始介绍一下什么是索引,分析索引的几种类型,并探讨一下如何创建索引以及索引设计的基本原则。此部分用于测试索引创建的user表的结构如下:1. 什么是索引?“索引(在MySQL中也叫“键key”)是存储引擎快速找到记录的一种数据结构。”——《高性能MySQL》我们需要知道索引其实

2020-12-01 16:59:56 249

转载 Java中 static 和 volatile 关键字的区别?

static也是各个业务方可以去全局修改;volatile是处理多线程锁的替代方案,对应有时需要实时的修改共享资源的变量,被volatile修复的变量的值可以立刻被业务方取得最新的值。不过,猛地感觉,nnd,这不是一样么,static是静态的,所以理论上也可以在不同线程去访问,能访问也就是能修改,所以这里老穆在网上搜了搜 相关的资料,把这个知识点在加强下:变量放在主存区上,使用该变量的每个线程,都将从主存区拷贝一份到自己的工作区上进行操作。volatile, 声明这个字段易变(可能被多个线程使用)

2020-11-26 14:10:16 289

原创 jar包里的图片上传处理办法

因为获取jar包中的文件路径的格式已经变为*.jar!*(除了第一个),这种格式的路径,不能通过new File的方式找到文件。因此如果是单文件,可以用流来获取,多文件因为不能获取绝对路径因此不能用文件循环上传。解决办法:方法1:自己创建一个绝对路径,不存放在jar里面【docker 容器有复制命令,可以把jar包里的文件复制出来】,然后使用绝对路径进行操作方法2:因为不能用File 来直接读取,但是可以直接用流,因此换种思考方法,把所有的图片名称写入一个json文件,然后读取json 文件里的所有图片

2020-11-20 16:46:41 522

原创 springBoot集成flyway

Flayway是一款数据库版本控制管理工具,,支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里;不仅支持Command Line和java api ,也支持Build构建工具和Spring boot,也可以在分布式环境下能够安全可靠安全地升级数据库,同时也支持失败恢复。Flyway最核心的就是用于记录所有版本演化和状态的MetaData表,Flyway首次启动会创建默认名为SCHEMA_VERSION的元素局表。 表中保存了版本,描述,要执行的sql脚本等;sql

2020-11-17 10:55:17 173

转载 java中的各种锁详细介绍

Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录:1. 乐观锁 VS 悲观锁#乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。在Java和数据库中都有此概念对应的实际

2020-11-11 20:37:02 175

原创 SpringBoot 使用事务注解 @Transactional 遇到的问题

SpringBoot 使用事务注解 @Transactional 遇到的问题使用事务注意的地方:1:开启事务,使用注解 @EnableTransactionManagement 开启事务2:注意表的引擎:MyISAM 不能使用事务,要用 InnoDB 引擎3:事务触发的异常默认是运行时异常【具体看源代码】:/** * Defines zero (0) or more exception {@link Class classes}, which must be * subclasses of

2020-10-23 16:02:50 964

原创 远程图片URL下载

import java.net.URL;import java.net.URLConnection;@RestController@Slf4jpublic class MenuIconController { /** * 图片导出 */ @GetMapping("/doIconExport") //@LoginRequired public Response<Void> doIconExport(HttpServletResponse r

2020-09-28 09:30:49 299

原创 对象复制工具

使用场景:处理 domin 实体类与 model 类的属性映射的,我们只需定义 mapper 接口,mapstruct 在编译的时候就会自动的帮我们实现这个映射接口,避免了麻烦复杂的映射实现。【其实就是不同的对象不同的属性字段进行复制】如果不使用工具的写法,需要一个个写:import cn.xcewell.oms.entity.CdmbDocument;import com.xcewell.oms.vo.MenuVo;import org.springframework.util.Collecti

2020-09-23 18:55:49 182

原创 Linux下彻底删除docker

彻底删除docker及其组件yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-enginerm -rf /etc/systemd/system/docker.service.drm -r

2020-09-23 10:43:04 2473

转载 CentOS8安装Docker

文章目录1.背景简介2.错误提示3.问题分析4.解决方法1.背景简介最近用上了VULTR机器,默认使用了CentOS8,正好尝尝鲜,尝试安装Docker时出现了错误,故及时记录一下,方面其他同学。2.错误提示Problem: package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed - cannot in

2020-09-23 10:38:16 415

原创 springboot 注入,一个接口多个实现,怎么来获取对应实例对象

我的做法:在每个接口中加一个对应的标识【唯一】,如:@Getterpublic enum MessageTypeEnum { SEND_MESSAGE_XCX("标识1","xcx"), SEND_MESSAGE_SMS("标识2","sms"), SEND_MESSAGE_WX("标识3","wx"); MessageTypeEnum(String name, String type) { this.name = name; this

2020-09-14 11:17:35 1303

转载 CountDownLatch的使用和原理解析

1、CountDownLatch 概念CountDownLatch可以使一个获多个线程等待其他线程各自执行完毕后再执行。CountDownLatch 定义了一个计数器,和一个阻塞队列, 当计数器的值递减为0之前,阻塞队列里面的线程处于挂起状态,当计数器递减到0时会唤醒阻塞队列所有线程,这里的计数器是一个标志,可以表示一个任务一个线程,也可以表示一个倒计时器,CountDownLatch可以解决那些一个或者多个线程在执行之前必须依赖于某些必要的前提业务先执行的场景。2、CountDownLatch 常用

2020-09-14 10:59:49 256

原创 线程池-优化当前线程执行多任务

工作的时候遇到一个这么一个问题,信息的群发任务,当代码写完,发现执行太慢了,主要是任务数太多导致的,但是这个结果又是要同步返回的,不能说只提交任务,不用管执行结果是什么。因为我这边的做法是,使用CountDownLatch控制,代码: private final Semaphore semaphore = new Semaphore(10); private ExecutorService cachedThreadPool = Executors.newCache...

2020-09-14 10:55:08 256

原创 MySql常用函数记录

1:MySql截取日期中的年月日 select SUBSTR('2019-04-01',1,4);2019 select SUBSTR('2019-04-01',6,2);04 select SUBSTR('2019-04-01',9,10);01

2020-09-14 10:33:58 114

转载 springboot之使用redistemplate优雅地操作redis

概述本文内容主要关于spring-redis 关于redis的key设计 redis的基本数据结构 介绍redis与springboot的整合 sringboot中的redistemplate的使用之前看了很多博客,大都都只是粗略的介绍,这里想要记录的全面一些,也算是一个学习的过程首发于我的个人博客:janti的个人博客关于spring-redisspring-data-redis针对jedis提供了如下功能:1. 连接池自动管理,提供了一个高度封装的“RedisTempl

2020-09-03 17:20:10 495

转载 Java 几种队列区别的简单说明

前言  队列,字面意思就可以明白. 是一种线性的数据暂存与管理工具. 也可以让各种业务功能进行逐个的队列运行. 此篇博客只说明一下Java有几种队列未阻塞和阻塞队列的区别  未阻塞:    1.未阻塞的队列在并发想队列添加或者取得数据的时候,必定只会有一个成功,其他都可能添加失败.  阻塞:    1.阻塞的队列会进行线程阻塞操作,让并发的添加或者取得数据进行一定程度的延迟,可以保证大量并发数据的添加. 但是阻塞也是有超时时间的.. 超过一段时间后依然会抛出异常或者抛出false

2020-08-12 11:04:05 492

转载 Java中几种常用的队列

阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。同样,试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程使队列重新变得空闲起来,如从队列中移除一个或者多个元素,或者完全清空队列.第一种:ConcurrentLinkedQueue,高性能无阻塞无界队列代码demo: 1      ConcurrentLinked

2020-08-12 11:02:39 1148

转载 分布式锁的几种实现方式

分布式锁的几种实现方式目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。”所以,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证“最终一致性”,只要这个最终时间是在用户可以接

2020-08-12 10:28:17 261

转载 Redisson分布式锁使用说明

Redisson分布式锁使用说明概述:在一些高并发的场景中,比如秒杀,抢票,抢购这些场景,都存在对核心资源,商品库存的争夺,控制不好,库存数量可能被减少到负数,出现超卖的情况,或者 产生唯一的一个递增ID,由于web应用部署在多个机器上,简单的同步加锁是无法实现的,给数据库加锁的话,对于高并发,1000/s的并发,数据库可能由行锁变成表锁,性能下降会厉害。那相对而言,redis的分布式锁,相对而言,是个很好的选择,redis官方推荐使用的Redisson就提供了分布式锁和相关服务。 平台默认集成r.

2020-08-12 09:45:49 872

转载 sessionid如何产生?

sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。tomcat生成的sessionid叫做jsessionid。session在访问tomcat服务器HttpServletRequest的getSession(true)的时候创建,tomcat的ManagerBase类提供创建sessionid的方法:随机数+时间+jvmid;存储在服务器的内存中,tomcat的StandardManager类将session存储在内存

2020-06-11 11:34:09 636

原创 Spring拦截器,实现

刚做Java不久,写个拦截器,以及现在用到的。需求:登录拦截原本是想用过滤器实现的,可是发现过滤器会把静态资源文件也过滤【因为我写的是过滤所有请求,会把登录的静态文件给过滤了,可能也能实现,但是没找到,又有点急】,因此用了拦截器实现,因为它可以排除资源请求的拦截代码:1:先写一个拦截器类 ,并实现接口 HandlerInterceptor代码:package com.jesse.config.interceptor;import com.jesse.util.SessionU.

2020-05-21 11:02:42 218

转载 PHP 中的多种加密技术

信息加密技术的分类单项散列加密技术(不可逆的加密)属于摘要算法,不是一种加密算法,作用是把任意长的输入字符串变化成固定长的输出串的一种函数MD5 string md5 ( string $str [, bool $raw_output = false ] ); //MD5加密,输入任意长度字符串返回一个唯一的32位字符 md5()为单向加密,没有逆向解密算法,但是...

2018-11-17 14:20:34 936

转载 在php中调用接口以及编写接口

如:http://localhost/openUser.php?act=get_user_list&amp;type=json在这里openUser.php相当于一个接口,其中get_user_list 是一个API(获取用户列表),讲求返回的数据类型为JSON格式。你只需要在你PHP代码中执行这条链接他就会返回。GET方式的直接使用 $file_contents = file_get_conte...

2018-07-03 15:41:18 2466

转载 Apache重写URL

环境====UbuntuApache (sudo apt-get install apache2)STEP 1: 启用rewrite模块===================采用二进制文件安装的apache(apt-get install),默认会启用一部分模块。在apache2的配置目录下,有两个目录/etc/apache2/mods-enabled/    #已经被启用的模块/etc/apac...

2018-05-03 11:38:49 739

转载 简单的线程理解

1。单进程单线程:一个人在一个桌子上吃菜。2。单进程多线程:多个人在同一个桌子上一起吃菜。3。多进程单线程:多个人每个人在自己的桌子上吃菜。多线程的问题是多个人同时吃一道菜的时候容易发生争抢,例如两个人同时夹一个菜,一个人刚伸出筷子,结果伸到的时候已经被夹走菜了。。。此时就必须等一个人夹一口之后,在还给另外一个人夹菜,也就是说资源共享就会发生冲突争抢。1。对于 Windows

2017-05-08 17:14:19 234

转载 JQuery控制radio选中和不选中方法总结

JQuery控制radio选中和不选中方法总结投稿:junjie 字体:[增加 减小] 类型:转载 时间:2015-04-15 我要评论这篇文章主要介绍了JQuery控制radio选中和不选中方法总结,本文起讲解了设置选中方法、设置选中和不选中示例、另一种设置选中方法、根据值设置radio选中、使用prop方法操作示例等内容,需要的朋友可以参考下一、设置

2017-04-13 11:29:45 4119

转载 Java关键字final、static使用总结

Java关键字final、static使用总结 一、final        根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。        final类不能被继承,没有子类,final类中的方法默认是final的。        final

2017-03-26 19:41:43 246

转载 优化SQL Server

查询速度慢的原因很多,常见如下几种:      1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)      2、I/O吞吐量小,形成了瓶颈效应。      3、没有创建计算列导致查询不优化。      4、内存不足      5、网络速度慢      6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)    

2017-03-14 14:20:41 244

翻译 java学习路线

JAVA学习路线图,特此声明,转自柠檬学院http://www.bjlemon.com/。仅希望对热爱JAVA学习有所帮助如若转载或者使用本图,请注明出处,避免后期出现版权问题,谢谢!!!JAVA学习路线图此乃是java攻城狮的学习路线图,由简到繁,由易到难,一步步的学习,最后成为JAVA攻城狮。希望对大家的学习有所帮助阶段1  1:学习HTML

2017-03-14 10:50:28 251

转载 18个常用的JavaScript代码

[javascript] view plain copy一、取URL中的参数  function getParameterByName(name) { var match = RegExp('[?&]' + name + '=([^&]*)') .exec(window.location.search); return match && decodeURICom

2017-01-13 16:24:01 1161

转载 PHP服务器端API原理及示例(接口开发)

相信大家都做过PHP请求API接口获取数据,比如淘宝API,微信公众平台,天气查询,快递查询等,有的需要参照接口文档根据签名算法构造sign(签名),或者设置token,然后通过curl发送POST请求带上参数,获得返回数据,一般是json或者xml格式。 但是现在的情况反过来了,我们要开发PHP服务器端的API接口,也就是别人请求我们,我们验证请求合法性,并查询数据返回。

2017-01-13 14:53:31 18751

转载 书籍

超经典:为何要学编程?如何学编程?用什么语言最好?有什么好书?---------------------------------------------===============================================一、为何要学编程?每个人的动机不一样。大致有:1、为了找个好工作;或为了有

2017-01-13 09:52:04 388

rocketmq-console-ng-2.0.0.jar

rocktMQ可视化界面

2021-03-18

加速播放器

一款很好用的可以进行倍数播放的软件,加速后对说话声影响很小,还能捕捉页面!!!

2017-10-27

CSS3参考手册 v4.0中文版

CSS3参考手册 v4.0中文版。。。。。。。。。。。。。。。

2017-10-27

java入门经典pdf

java入门经典pdf

2017-08-18

jstljar jar包

jstljar包

2017-08-21

JDK_API_1_6_zh_CN.rar

JAVA_JDK1.6_中文文档

2019-07-22

空空如也

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

TA关注的人

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