hui008的博客

私信 关注
hui008
码龄10年
  • 246,497
    被访问量
  • 27
    原创文章
  • 62,840
    作者排名
  • 18
    粉丝数量
  • 于 2011-02-22 加入CSDN
获得成就
  • 获得54次点赞
  • 内容获得43次评论
  • 获得216次收藏
荣誉勋章
兴趣领域
  • #后端
    #架构#Java#Spring Boot#Elasticsearch#Spring#Redis#MySQL#分布式
TA的专栏
  • Git
  • Tomcat
    1篇
  • Eclipse
    2篇
  • Spring Boot
    5篇
  • Spring Cloud
    3篇
  • JAVA
    21篇
  • Maven
    1篇
  • MySQL
    4篇
  • 调试工具
    2篇
  • Spring
    1篇
  • 算法
  • MyBatis
    1篇
  • 面试
    1篇
  • Linux
    3篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

ThreadLocal原理源码详解

多看几遍,定能理解通透!原文链接:https://www.jianshu.com/p/3c5d7f09dfbd
转载
11阅读
2评论
0点赞
发布博客于 2 月前

linux定时任务 定时重启docker容器

Linux添加crontab定时任务由于公司古董项目,不知原因引发了,容器得每次重启才能正常使用。由于工作进度的原因没办法对老项目进行构架重构。就采取了这个定时任务的方式解决办法。首先根据网页提供资料,crontab分为两类,系统crontab,用户crontab。系统crontab可以使不同的用户crontab任务都放到/etc/crontab文件中指定。而用户crontab仅允许当前用户调用crontab -e命令来编辑自己的任务。crontab具体使用以及语法:crontab的一些基
转载
828阅读
0评论
0点赞
发布博客于 6 月前

Linux中下载文件到本地、本地上传文件至Linux服务器

使用上传下载工具sz和rz,简单实用!安装:执行yum install lrzsz安装完成后即可使用了下载:进入文件所在目录,输入 sz + 文件名执行即可下载文件上传:输入rz执行,会弹出上传框,选择文件上传即可...
原创
176阅读
0评论
0点赞
发布博客于 7 月前

freemaker生成word模板的各种坑,包含word打不开、批量添加图片、图片变形等问题总结

最近在使用freemaker做一个word模板,里面包含大量表格、截图、超链接等数据、历时一周多,遇到很多坑,现在想想都后怕,现在简单总结一下,希望给以后的小伙伴提供帮助,少走弯路!坑一:word打不开可能原因:1、往xml文件中添加数据占位时,不细心导致文件中出现多余的{、}、;、#等字符,导致xml校验错误,会导致生成的word打不开。2、word中有超链接,链接中包含多个参数时,会用&进行连接,然而在xml中&属于特殊字符,如若不处理,导致xml校验错误,会导致生成的w
原创
877阅读
2评论
1点赞
发布博客于 8 月前

JavaMail附件名字过长导致的乱码问题

问题背景:公司有个业务场景是审核客户机构通过后,给客户发送一封邮件,并将机构相关材料以附件形式一块发送,有些附件名正常,有些就乱了,如下图:后来发现是附近名称过长导致的!问题原因:java mail中设置附件名称会采用 base64格式进行编码,如果附件名称过长会被进行切割,将剩下字符抹去,所以导致不知道这是什么格式的文件。注:虽然将文件格式被改变了,但是若强制转换成原格式(右键->另存为->xxx.pdf) 仍然可以进行打开,文件内容也并非改变(这是测试后的结果)解
转载
322阅读
0评论
0点赞
发布博客于 9 月前

SpringBoot项目中创建大量redisMessageListenerContailner-X线程导致内存溢出问题分析及解决方案

具体问题描述:项目采用的spring cloud微服务架构,使用spring session(redis存储方式)达到各微服务之间session共享,即项目启动内会添加@EnableRedisHttpSession注解。其中有个发邮件的公共服务mail-service,有个业务模块每天执行定时任务会调用邮件服务,发送大量邮件,就会导致创建大量redisMessageListenerC...
原创
2054阅读
0评论
3点赞
发布博客于 2 年前

Git每次pull都需要输入用户名和密码的问题解决方案

cd到根目录,输入git config --global credential.helper store执行完后再操作一次git pull,然后它会提示你输入账号密码,这一次之后就不需要再次输入密码了。...
原创
293阅读
0评论
1点赞
发布博客于 2 年前

Linux查看日志三种命令

第一种:查看实时变化的日志(比较吃内存)最常用的:tail -f filename (默认最后10行,相当于增加参数 -n 10)Ctrl+c 是退出tail命令其他情况:tail -n 20 filename (显示filename最后20行)tail -n +5filename (从第5行开始显示文件)第二种:搜索关键字附近的日志最常用的:...
转载
7564阅读
0评论
6点赞
发布博客于 2 年前

Myeclipse中svn提交过滤class等不需要的文件

Window>Preference>Team>Ignored Resource>Add Pattern添加.settings.classpath.project*/target/*.class忽略文件夹:如忽略target文件夹,就Add Pattern,填入*/target/*忽略文件:如忽略.class类型的,直接填入 ...
原创
894阅读
0评论
0点赞
发布博客于 2 年前

SpringCloud面试题

一.SpringCloud面试题口述1.SpringCloud和DubboSpringCloud和Dubbo都是现在主流的微服务架构SpringCloud是Apache旗下的Spring体系下的微服务解决方案Dubbo是阿里系的分布式服务治理框架从技术维度上,其实SpringCloud远远的超过Dubbo,Dubbo本身只是实现了服务治理,而SpringCloud现在以及有21个子项目以...
转载
982阅读
0评论
5点赞
发布博客于 2 年前

mysql两个日期相减,得到相差的天数

CURDATE() 获取当前服务器日期(YY-MM-DD)NOW() 获取当前服务器日期(YY-MM-DD hh:mm:ss)DATEDIFF(date1,date2) 两个日期相减函数,返回date1-date2相差的天数SELECT CURDATE() FROM DUAL;SELECT DATEDIFF(CURDATE(),'2019-05-20') da...
原创
22878阅读
0评论
2点赞
发布博客于 2 年前

Java获取当月的每一天

/** * 获取当月所有天 * @return */ public static List<String> getDayListOfMonth() { List<String> list = new ArrayList<String>(); Calendar aCalendar = Cale...
原创
2881阅读
0评论
1点赞
发布博客于 2 年前

mysql操作查询结果case when then else end用法举例

Case具有两种格式。简单Case函数和Case搜索函数。--简单Case函数CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女'ELSE '其他' END--Case搜索函数CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女'...
转载
158阅读
0评论
0点赞
发布博客于 2 年前

url地址传参中文乱码问题

在传参前转码,接收参数后再转码回来。这种方式有两种:第一种:传参前:使用java.net.URLEncoder.encode("xxxx",“utf-8"),将中文转为16进制字符。接收参数后:使用java.net.URLDncoder.decode("xxxx",“utf-8")将16进制字符转为中文。这种方式需要注意的是,在使用encode转码后,会出现特殊字符,这时候,就...
原创
265阅读
0评论
0点赞
发布博客于 2 年前

java通用换行符

在java开发中Windows下换行符为: \r
Linux下换行符为:
Mac下换行符为:\r可以用通用代码System.getProperty("line.separator")替换String separator = System.getProperty("line.separator");System.out.println("第一行"+separator+"第...
原创
2152阅读
0评论
0点赞
发布博客于 2 年前

java删除文件夹中的所有文件及文件夹

删除文件夹(前提:文件夹为空以及InputStream和OutputStream等一些数据文件流关掉【close()】,否则文件无法删除)/** * 删除文件夹 * @param folderPath */ public static void delFolder(String folderPath) { try { delAllFile(folderPath); /...
原创
559阅读
0评论
0点赞
发布博客于 3 年前

java删除文件夹中的所有文件及文件夹

删除文件夹(前提:文件夹为空以及InputStream和OutputStream等一些数据文件流关掉【close()】,否则文件无法删除)/** * 删除文件夹 * @param folderPath */ public static void delFolder(String folderPath) { try { delAllFile(folderPath); /...
原创
559阅读
0评论
0点赞
发布博客于 3 年前

那些年让你迷惑的阻塞、非阻塞、异步、同步

在IT圈混饭吃,不管你用什么编程语言、从事前端还是后端,阻塞、非阻塞、异步、同步这些概念,都需要清晰地掌握,否则,怎么与面试官谈笑风生(chui niu pi)?但是,掌握这些概念又不是非常容易,尤其对非科班出身的,更加困难。本文试图给出一个清晰简明但不失深刻的介绍,希望对大家有所帮助。1、从I/O说起这些概念之所以容易令人迷惑,在于很多人对I/O就没有清晰准确的理解,后面的理解自然不可能...
转载
98阅读
0评论
0点赞
发布博客于 3 年前

FeignClient调用POST请求时查询参数被丢失的情况分析与处理

前言本文没有详细介绍 FeignClient 的知识点,网上有很多优秀的文章介绍了 FeignCient 的知识点,在这里本人就不重复了,只是专注在这个问题点上。查询参数丢失场景业务描述: 业务系统需要更新用户系统中的A资源,由于只想更新A资源的一个字段信息为B,所以没有选择通过 entity 封装B,而是直接通过查询参数来传递B信息文字描述:使用FeignClient来进行远程调用...
转载
6344阅读
0评论
0点赞
发布博客于 3 年前

MyBatis解决Update动态SQL逗号的问题

最做项目遇到以下情况,MyBatis中需要动态拼接Update,由于之前忙着赶项目,就直接照着下面的这样写,结果发现系统出现了异常,原来这样写如果id=null就会出错UPDATE TABLE SET &lt;if test="id!=null"&gt; id= #{id,jdbcType=INTEGER} &lt...
原创
2430阅读
0评论
2点赞
发布博客于 3 年前

Java Web利用POI导出Excel简单例子

采用Spring mvc架构: Controller层代码如下 @Controller public class StudentExportController{ @Autowired private StudentExportService studentExportService; @RequestMapping(value = "...
原创
564阅读
0评论
0点赞
发布博客于 3 年前

对List里的对象元素进行排序

方法一:实例化一个比较器public class Student { private int studentId; private String studentName; private int age; public Student(int studentId , String studentName, int age){ this.stud...
原创
123阅读
0评论
0点赞
发布博客于 3 年前

Java实现二分法查找数组中的元素的两种方法

二分查找算法思想:又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。1.非递归实现 /** * 非递归二分查找法 * @param array 查询的数组 * @param...
原创
2500阅读
0评论
1点赞
发布博客于 3 年前

Java中将File转化为MultipartFile的方法

话不多说直接上代码,简单明了import java.io.File;import java.io.FileInputStream;import org.springframework.web.multipart.MultipartFile;import org.springframework.mock.web.MockMultipartFile;import org.apache.h...
原创
60038阅读
19评论
9点赞
发布博客于 3 年前

获取Map中最大(小)的key

将Map中的key存放至set集合中,进行排序,排序后的set中第一个值即为最小,最后一个即为最大/** * 获取map中最大的key * @param map * @return */public static Integer getMaxKey(Map&lt;Integer, List&lt;User&gt;&gt; map) { if (map == null){...
原创
6615阅读
0评论
1点赞
发布博客于 3 年前

Map按照key进行排序

声明比较器:class MapKeyComparator implements Comparator&lt;Integer&gt; { @Override public int compare(Integer o1, Integer o2) { return o2 - o1; }}排序方法:public static Map&lt;Integer, List&lt;U...
原创
8063阅读
0评论
0点赞
发布博客于 3 年前

Java中将List中的实体类按照某个字段进行分组并存放至Map中

1、JDK1.8之前:假设有实体类User,里面有字段id,我们将相同id的User进行分组,并存放在Map中。(例子不是很恰当,但很能说明问题)​ public static void main(String[] args) { List<User> list = new ArrayList<>(); list.add(new User(1, 1...
原创
17382阅读
12评论
9点赞
发布博客于 3 年前

map转换成JSON的3种方法

http://www.json.cn/JSON格式校验1 json-lib&lt;dependency&gt; &lt;groupId&gt;net.sf.json-lib&lt;/groupId&gt; &lt;artifactId&gt;json-lib&lt;/artifactId&gt; &lt;version&gt;2.4&lt;/version&gt;
转载
37700阅读
4评论
3点赞
发布博客于 3 年前

【Spring Boot】使用Spring Boot来搭建Java web项目以及开发过程

一、Spring Boot简介Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。SpringMVC是非常伟大的框架,开源...
转载
6016阅读
0评论
1点赞
发布博客于 3 年前

MySQL使用总结-未完待续

一、mysql在指定的一个字段后面添加一个字段alter table user add address varchar(50) after user_id; 二、mysql中insert into select from的使用 如何在mysql从多个表中组合字段然后插入到一个新表中,通过一条sql语句实现。具体情形是:有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值...
原创
222阅读
0评论
0点赞
发布博客于 3 年前

java8中map的新方法--replace

译者:kingvikerMap在Java8中新增了两个replace的方法1.replace(k,v)           在指定的键已经存在并且有与之相关的映射值时才会将指定的键映射到指定的值(新值)           在指定的键不存在时,方法会return回来一个null       javadoc的注释解释了该默认值方法的实现的等价java代码: [java] view plain cop...
翻译
2912阅读
0评论
1点赞
发布博客于 3 年前

registry key 'Java Runtime Environment' has value'1.8',but '1.7' is requaired

当更新jdk后,运行java命令可能会提示类似这样registry key 'Java Runtime Environment' has value'1.8',but '1.7' is requaired的问题。这里对这个问题做个简单分析,并给出几种解决方案,希望能帮助到大家!导致这个问题的原因很明显文件版本不匹配导致的,当在cmd下运行java命令时,系统首先会去 a.%systemroot%S...
原创
137阅读
0评论
0点赞
发布博客于 3 年前

Postman传json参数图文详解

1.请求方式选择POST,然后将header的Content-Type设置为application/json,如下图所示2.切换至Body选项,编码方式为raw,JSON(application/json),然后在文本框中写入json参数3.点击Send发送请求,返回结果...
原创
21729阅读
0评论
3点赞
发布博客于 3 年前

Java中double和float精度丢失问题及解决方法

在讨论两位double数0.1和0.2相加时,毫无疑问他们相加的结果是0.2。但是问题总是如此吗?下面我们让下面两个doubles数相加,然后看看输出结果: @Test public void testBig(){ System.out.println(0.11+2001299.32); }控制台输出2001299.4300000002我们...
原创
273阅读
0评论
0点赞
发布博客于 3 年前

JAVA8 十大新特性详解

本教程将Java8的新特新逐一列出,并将使用简单的代码示例来指导你如何使用默认接口方法,lambda表达式,方法引用以及多重Annotation,之后你将会学到最新的API上的改进,比如流,函数式接口,Map以及全新的日期API“Java is still not dead—and people are starting to figure that out.”本教程将用带注释的简单代码来描述新特...
转载
58阅读
0评论
0点赞
发布博客于 3 年前

@RequestMapping 和 @PostMapping @GetMapping 区别

@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。 @PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。
原创
1855阅读
2评论
1点赞
发布博客于 3 年前

@Controller和@RestController的区别?

知识点:@RestController注解相当于@ResponseBody + @Controller合在一起的作用。 1) 如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。 2) 如果需要返回...
原创
65阅读
0评论
0点赞
发布博客于 3 年前

Postman调试上传文件

输入url:http://localhost:8060/newsInformation/uploadPic选择post方式选择body选择form-data,text改为file输入key:file  ,value:选择文件send即可
原创
1097阅读
0评论
0点赞
发布博客于 3 年前

navicat将模型生成表

登录进数据库后,点击模型--新建模型,如下点击“小手”下面的图标----双击右边的空白处,即出现一个表格,可命名,此时我们命名为A双击A表下空白处---即可设计A表属性,点确定。如下同理,生成一个B表这时模型建立起来,保存模型,命名模型为AB。其会默认保存在MySQL里,其保存不会让你选择保存地点,只能默认保存在MySQL中。如下图如何把模型导出来,AB模型界面中-----三条杠下拉单----工具...
原创
18400阅读
0评论
2点赞
发布博客于 3 年前

@SuppressWarnings注解

@SuppressWarnings注解  简介:java.lang.SuppressWarnings是J2SE5.0中标准的Annotation之一。可以标注在类、字段、方法、参数、构造方法,以及局部变量上。作用:告诉编译器忽略指定的警告,不用在编译完成后出现警告信息。使用:@SuppressWarnings(“”)@SuppressWarnings({})@SuppressWarnings(va...
转载
71阅读
0评论
0点赞
发布博客于 3 年前

net.sf.json Maven依赖配置

今天搭框架开始实现前台的json了,于是逐个找适合的框架,发现要实现json还要引入一个jar包叫json-lib好,看起来挺简单的,我就开始用maven倒入了,很自然的,我就去mvnrepository.com去查dependency的写法找到的是这样的[html] view plain copy&lt;dependency&gt;          &lt;groupId&gt;net.sf....
转载
215阅读
0评论
0点赞
发布博客于 3 年前

@Slf4j注解实现日志输出

自己写日志的时候,肯定需要:private final Logger logger = LoggerFactory.getLogger(LoggerTest.class);1每次写新的类,就需要重新写logger 有简单的方式,就是使用@Slf4j注解首先是在pom中引入:&lt;!--可以引入日志 @Slf4j注解--&gt;&lt;dependency&gt; ...
转载
6973阅读
2评论
1点赞
发布博客于 3 年前

史上最简单的 SpringCloud 教程 | 终章

原文作者:方志朋原文博主地址:http://blog.csdn.net/forezp原文地址:https://blog.csdn.net/forezp/article/details/70148833目录(?)[-]欢迎购买我的书深入理解Spring Cloud与微服务构建CSDN专栏汇总史上最简单的 SpringCloud 教程史上最简单的 SpringCloud 教程系列进阶篇源码篇番外篇怎么...
转载
97阅读
0评论
1点赞
发布博客于 3 年前

Spring Boot下的lombok安装以及使用简介

引言:Spring Boot是非常高效的开发框架,lombok是一套代码模板解决方案,将极大提升开发的效率,这里介绍给大家使用。1. Lombok  Lombok想要解决了的是在我们实体Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不会用到,但是某些时候仍然需要复写,以期方便使用的方法;在使用Lombok之后,将由其来自动帮你实现代码生成,注意,其是...
转载
102阅读
0评论
0点赞
发布博客于 3 年前

STS或eclipse安装SVN插件

安装sts--SVN插件 简介:sts是与eclipse类似的Java IDE开发工具(不了解的百度)1、sts菜单栏 help-&gt;install New Software 依据大家的版本选择:http://subclipse.tigris.org/update                  比如:http://subclipse.tigris.org/update_1.8.x4、选种s...
转载
442阅读
0评论
0点赞
发布博客于 3 年前

Tomcat注册成系统服务图文详解

将Tomcat注册为系统服务后,启动类型设置为自动,服务器重启后会自动开启Tomcat服务,便于维护。注册方法:1、进入Tomcat的bin目录下2、地址栏输入cmd,按回车键,打开dos窗口3、执行命令service.bat  install  服务名   后面的服务名可以随便取,别跟系统已有的服务名冲突就行4、出现如下界面即注册成功5、如果不需要此服务了,可将其移除,执行命令service.b...
原创
249阅读
0评论
1点赞
发布博客于 3 年前