自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(110)
  • 资源 (1)
  • 收藏
  • 关注

原创 为啥StringBuilder线程不安全呢?

好久没有写博客了,最近一直都在看书,争取明年要换工作。今天在微信公众号看见为啥说StringBuilder是线程不安全的,看了下自己整理下:StringBuilder builder = new StringBuilder();for (int i = 0; i < 10; i++) { new Thread(new Runnable() { @Over...

2019-10-16 14:52:02 310

原创 mybatis中使用map批量更新

最近项目中会用到批量更新功能,数据是存在map中的,key作为更新的id,而value作为更新的值。纠结了很久最后算是解决了。特此记录,希望对有需要的有一定帮助。...

2018-06-13 09:07:44 11685 2

转载 mysql中explain用法和结果的含义

[sql] view plain copyexplain  select * from user   [sql] view plain copyexplain extended select * from user  idSELECT识别符。这是SELECT的查询序列号select_typeSELECT类型,可以为以下任何一种:SIMPLE:简单SELECT(不使用UNION或子查询)PRIMAR...

2018-04-13 15:21:03 1011

转载 SpringBoot-@RequestParam

Request参数在访问各种各样网站时,经常会发现网站的URL的最后一部分形如:?xxxx=yyyy&amp;zzzz=wwww。这就是HTTP协议中的Request参数,它有什么用呢?先来看一个例子:在知乎中搜索web浏览器跳转到新页面后,URL变为https://www.zhihu.com/search?type=content&amp;q=web这里type=content&amp;q=we...

2018-04-13 15:19:30 2397 1

原创 springboot的项目build为jar放在服务器上运行出现乱码

最近项目中遇到一个很奇怪的问题,就是后端发布报警信息给EMQ(mqtt),前端去取这些报警信息,由于前后端是分离的,在测试的时候再各自的开发工具中使用没有什么问题,报警弹框也没有乱码,但是当项目打包成一个jar包发布的时候就会出现报警信息中文的乱码。找了好久原因,一位是前端的原因,是后端的原因,或是中间EMQ的原因,但是都没有解决任何问题。搁置了很久最后终于找到解决的原因了。就是在启动的jar...

2018-03-22 11:21:15 6313 9

转载 什么时候用GET,什么时候用POST

刚开始学习Web开发的时候,总会遇到提交表单时使用GET方法还是POST方法的问题,最开始的时候因为没有经验并没有领悟,后来框架开发做多了,更是把这些原始基础知识扔出了银河系。最近开到一段W3的资料,写的不错,原文地址如下:http://bu-choreography.iteye.com/admin/blogs/new。翻译总结如下: 快速判断: 如下情况使用GET方法:客户端与服务端的交互像是一...

2018-03-01 15:02:01 16192

转载 阿里开发的Java代码规约扫描eclipse插件安装和使用方法

环境:JDK1.8,Eclipse4+。有同学遇到过这样的情况,安装插件重启后,发现没有对应的菜单项,从日志上也看不到相关的异常信息,最后把JDK从1.6升级到1.8解决问题。Help -&gt; Install New Software...输入Update Site地址:https://p3c.alibaba.com/plugin/eclipse/update 回车,然后勾选Ali-CodeA...

2018-02-28 15:20:10 3491

转载 Spring Boot之分离测试和生产环境的应用配置

多环境应用配置将默认不变的配置,设置在application.properties文件中。新建开发环境下的属性文件application-dev.properties,将开发中的配置,设置在该文件中。新建生产环境下的属性文件application-prod.properties,将生产中的配置,设置在该文件中。最后在application.properties文件中配置:## 开发/测试/生产环境...

2018-02-02 11:17:59 1618

转载 Mysql常用SQL查询语句优化方法

1、应尽量避免在 where 子句中使用!=或2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中n

2018-01-23 15:18:53 263

原创 myBatis关于数据插入的问题

今天使用mybatis的接口方式对数据库进行插入数据,发现怎么都不成功,但是后台不会报错,数据库没有数据记录,这是怎么回事呢!原来是因为插入数据的时候要提交下。userMapper.insertUser(userI); mySession.commit(); mySession.close();

2017-06-20 11:53:52 761

原创 Java中管道报错:Write end dead

今天看了下关于管道的通信,Java中的管道只能在同一进程的不同线程间通信。今天测试两个线程进行通信发现报错。下面是我测试的代码。package com.wpl.testIO;import java.io.IOException;import java.io.PipedInputStream;import java.io.PipedOutputStream;public class

2017-06-01 09:59:56 6403

原创 eclipse中报的错:An internal error occurred during: "reload maven project". java.lang.NullPointerExceptio

在eclipse中新建一个maven项目,进行相应的设置,忽然就卡死了。再次打开就会报出这样的错误。查了下往上很多的解决的方法都是:.找到workspace文件夹下的/.metadata文件夹,将其删除掉,然后在讲项目重新导入进去eclipse中。这样做的话很多工作空间中的设置都不会保存,还要进行再次的设置,如果你的工作空间中已经导入很多项目的话,这就很不方便了。最后找到一个解决方法:在.me

2017-05-31 14:57:11 896

转载 关系型数据库和非关系型数据库区别

1. 关系型数据库关系型数据库,是指采用了关系模型来组织数据的数据库。关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为主流数据库结构的主流模型。简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。关系模型中常用的概念:

2017-05-22 13:54:58 2467

原创 ECharts3使用入门

最近项目中有用到百度ECharts,目前版本已经到3了,很多人说百度的这个东西是他最有良心的产品,用起来要比国外的插件简单点,这里主要讲一些简单的应用,算是简单的入门级别的,如果要是想更加的深入可以去看看范例。1.前期准备(1)相较于以前好像使用起来更加的简单了,直接引入echarts.min.js。(2)写一个div用来存放图表。(3)js代码中根据div的id号获取容器,写图表

2017-05-08 15:49:01 4276

原创 Spring学习(五):Spring中注入一些细节

1.字面值字面值:可用字符串表示的值,可以通过 元素标签或 value 属性进行注入。基本数据类型及其封装类、String 等类型都可以采取字面值注入的方式若字面值中包含特殊字符,可以使用 把字面值包裹起来。2.引用其他的bean组成应用程序的 Bean 经常需要相互协作以完成应用程序的功能. 要使 Bean 能够相互访问, 就必须在 Bean 配置文件中指定对 Bean 的引

2017-03-29 15:17:00 531

原创 Spring学习(四):Spring中的基于构造器注入

在Spring中依赖注入的方式上一章节中有介绍,主要分为三种:属性注入、构造器注入、接口注入(很少使用)。属性注入最常用,使用元素,使用name属性指定bean的属性名称,value属性或是value子节点指定属性值。如下所示就为属性注入。 通过构造方法注入bean的属性值或是依赖的对象,它保证了bean实例化后就可以使用。构造器注入在 元素里声明属性, 中没有 name

2017-03-29 14:56:07 2600

原创 Spring学习(三):Spring中的bean配置

上面一篇文章是Spring的一个简单的演示,从这篇文章开始主要详细的介绍Spring中的细节部分。IOC(Inversion of  control):其主要思想就是反转资源获取的方向,传统的资源查找方式要求组件向容器发起请求查找资源,作为回应,容器会返回资源,但是应用了IOC后,则是容器主动的将资源推送给它所管理的组件,组件所要作就是选择一种合适的方式来接受资源,这种行为称之为查找的被动形式

2017-03-22 21:22:21 509

原创 Spring学习(二):Spring的HelloWorld

上面写了一点关于Spring是什么,相信刚刚接触的人还是不理解,什么是IOC什么是AOP,现在先不管这些,我们先上手一个Spring的helloworld,这样会更加的直接。文章中并没有介绍如何在eclipse中安装Spring的插件,大家可以搜索其他的博客看看如何安装,这里面我就不介绍了,其实很简单的,只要有点耐心就好。Spring是开源的因此在开发之前要先下载Spring,这个大家可以去官

2017-03-22 20:38:16 462

原创 Spring学习(一):Spring是什么

最近在学习Spring这个框架,希望写一些关于Spring的相关学习笔记,一方面方便自己以后查看另一方面也方便大家学习,希望大家可以相互交流,也希望自己能够坚持下来能够把Spring学习笔记完成。首先学习Spring之前我们应该大致知道Spring是什么?(1)Spring是一个开源的框架。(2)Spring为简化企业级的开发而生的,有了Spring可以简化开发。(3)Spring

2017-03-22 20:08:59 690

原创 Java中抽象类和接口区别

简单概括下Java中抽象类和接口直接的区别,可以概括为如下几点:1.一个类可以实现多个接口 ,但却只能继承最多一个抽象类。2.抽象类可以包含具体的方法 , 接口的所有方法都是抽象的。3.抽象类可以声明和使用字段 ,接口则不能,但接口可以创建静态的final常量。4.接口的方法都是public的,抽象类的方法可以是public,protected,private或

2017-03-21 10:35:14 412

原创 MyBatis学习(六):MyBatis的一对多关联如何操作

上面一篇文章是关于MyBatis的一对一的关联如何操作,这一篇文章将主要讲述一对多,如何实现。首先还是在上面的一个class表,然后再构建一个student表,一个班级的学生会有很多,因此这就是所说的一对多。要实现的操作就是通过class的一个id查找班级的老师(一对一),在然后查获所有班级下面的学生。因此学生有很多,因此需要定义一个集合类来存储获取的学生信息。 priva

2016-12-22 18:50:57 2269

原创 MyBatis学习(五):MyBatis的一对一关联如何操作

现在有两张表,一张是班级表,另外一张是老师表。上面就是两张表,通过班级id号不仅仅能够获得班级的信息还要获取班主任的信息,其中c_teacher和t_id通过外键相连。1.首先mybatis的配置文件conf.xml这个好像与之前的没有多大的区别。<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//E

2016-12-20 21:26:06 651 1

原创 MyBatis学习(四):MyBatis使用代理方法(接口)实现数据库的操作

在第一篇简单的mybatis示例中,我们简单的介绍了如何通过SQL映射文件来实现对数据库的操作。在对数据库操作的时候是采用上图中的1+2来实现对数据库的操作。见上图就可以实现对数据库的操作了,但是这样做还是不太方便,有没有更好的方法呢?接口实现对数据库的操作首先要创建一个接口,名称为UserMapper。然后根据SQL的映射文件定义与映射文件中id号相同

2016-12-20 20:07:18 4176

原创 MyBatis学习(三):解析MyBatis的SQL映射XML文件写法和使用原理

上面的两篇文章,分别是MyBatis的入门小程序和MyBatis的配置XML解析,有需要的可以先去看看这两篇文章,本篇文章,会来讲解SQL映射XML文件的写法以及如何使用。MyBatis真正的力量在于其映射语句。这里应该是奇迹发生的地方。SQL映射的XML文件是相当简单的。如果与功能对等的JDBC相比较,你会发现它减少了大约95%的代码量。MyBatis的构建应该聚焦于SQL的XML文件的构建

2016-12-20 16:55:27 21046 1

原创 MyBatis学习(二):解析MyBatis配置文件的写法和使用原理

MyBatis学习(一):一个简单的演示上面就是一个很简单的MyBatis的应用实例,可以看看,对于如何如此做可能就不是很清楚了。首先每一个MyBatis的应用程序都是以一个SqlSessionFactory对象的实例为核心。SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象来获得。SqlSessionFactoryBuilder对象可

2016-12-20 11:27:16 3571

原创 MyBatis学习(一):一个简单的演示

MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。他是使用简单的XML或是注解用于配置和原始映射,将接口和java的对象映射为数据库中的记录。首先来做一个简单的例子。(一):添加jar包根据自己使用的Mybatis的版本添加相应的jar包,同时还要添加数据库的jar包,我在使用过程中Myb

2016-12-19 21:15:28 1025

原创 数据库中的视图理解和优点介绍

数据库中视图的概念:视图是从一个表或是多个表导出的表,视图与表不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中指存储视图的定义,在对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。视图是虚表,是从一个或是几个基本表导出的表。可以将视图看做是移动的窗口,通过它可以看到自己感兴趣的数据,视图是从一个或是多个表中获得的,这些表的数据存放在数据库中,那些用户产生视图

2016-10-31 20:21:03 12354

转载 Java泛型详解,通俗易懂的写法

我们知道,使用变量之前要定义,定义一个变量时必须要指明它的数据类型,什么样的数据类型赋给什么样的值。假如我们现在要定义一个类来表示坐标,要求坐标的数据类型可以是整数、小数和字符串,例如:x = 10、y = 10x = 12.88、y = 129.65x = "东京180度"、y = "北纬210度"针对不同的数据类型,除了借助方法重载,还可以借助自动装箱和向上转型。我们知

2016-10-27 09:19:02 4233

转载 java设计模式-单例模式

Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在。一些管理器和控制器常被设计成单例模式。       单例模式有很多好处,它能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间;能够避免由于操作多个实例导致的逻辑错误。如果一个对象有可能贯穿整个应用程序,而且起到了全局统一管理控制

2016-10-26 15:26:28 322

转载 Java多线程学习(吐血超详细总结)

写在前面的话:此文只能说是Java多线程的一个入门,其实Java里头线程完全可以写一本书了,但是如果最基本的你都学掌握好,又怎么能更上一个台阶呢?如果你觉得此文很简单,那推荐你看看Java并发包的的线程池(Java并发编程与技术内幕:线程池深入理解),或者看这个专栏:Java并发编程与技术内幕。你将会对Java里头的高并发场景下的线程有更加深刻的理解。目录(?)[-]一扩展java

2016-10-25 10:44:56 490

转载 利用jdk自带的运行监控工具JConsole观察分析Java程序的运行

一、JConsole是什么    从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行。您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码。二、如何启动JConsole如果是从命令行启动,使

2016-10-21 21:39:29 2043

原创 Java线程池

1.     线程池为什么需要线程池,其实线程池和数据库连接池一样,都是为了节省线程的创建和关闭的时间。在并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,的频繁创建线程就会大大降低系统的效率,因为频繁的创建和销毁线程需要时间。 Java中通过Executors提供四种线程池,分别为:1.      newCachedThreadPool:创建一个可缓存线程池,如

2016-10-21 21:34:35 295

原创 Java的三大特性(继承、封装、多态)

常见的我们会说java有三种特性(继承、封装、多态),面试的时候会让你简单的说说这三大特性的特点。 封装:封装就是指将对象的状态信息隐藏在对象的内部,不允许外部的程序直接访问对象内部的信息,而是通过该类的所提供的方法来实现对内部信息的操作和访问。继承:子类是父类的扩展,子类是一种特殊的父类。获得父类的属性和方法。多态:是面向对象的核心特性之一。在面向对象语言中,多态性是指一个方法可

2016-10-20 09:46:23 525

原创 Java中抛出的内存异常总结

Java中抛出的内存异常总结根据上述的总结:可以整理出来,JVM在运行的时候大致会分为五个区域。方法区、堆区、本地方法栈、虚拟机栈、程序计数器。其中程序计数器不会报出OutOfMemoryError错误,其他的都有可能会报出这个错误。StackOverflowError:如果线程请求的栈深度大于虚拟机所允许的深度就会报这样的错误。OutOfMemoryError:如果虚拟机栈可

2016-10-19 20:51:48 1985

原创 Java内存区域与内存溢出异常

Java内存区域与内存溢出异常如上图所示,首先java源代码文件(.java后缀)会被java编译器编译为字节码文件(.class后缀)然后再让类加载器加载各个类的字节码文件,加载完毕后,交由JVM执行引擎执行。在整个执行过程中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段控件一般称之为Runtime Data Area(运行时数据区),也就是我们常说的JVM

2016-10-19 14:20:46 363

原创 Java中的重写和重载

重载(overriding):1.     Java中的重载就是在一个类中可以创建多个方法,他们具有相同的名字,但是有不同个数的参数或是不同类型的参数,在使用时候根据不同的参数类型和参数个数来确定使用哪一个函数,这就是多态性。2.     重载的时候,方法名是一定要一样的,返回类型可以相同也可以不相同,但是参数个数或是参数类型一定是不同的。不能根据返回类型来判断是否是重载。重写(ove

2016-10-18 17:53:42 732

原创 Java死锁与如何避免死锁

所谓死锁就是进程循环等待它方占有的资源而无限制的僵持下去的局面。以一个简单的例子来解释:一个桥,最多可以通过一个车子,但是左右两边都来了车子,而且都上了桥,左边的车子,占用了左边的桥资源,二右边的车子,占用了右边的桥的资源。左边的车子等待右边的车子让出右边的资源,但是右边的车子却要左边的车子让出左边的资源。双方都不放弃自己所占有的资源,却都想着让对方让出自己的资源,这就会无限制的等待下

2016-10-18 15:59:15 5817

原创 java中的Socket编程

基于Socket的java网络编程网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端成为一个socket。Socket通常用来实现客户方和服务方的连接。Socket是TCP/IP协议的一个十分流行的编程界面,一个socket有一个IP地址和一个端口号唯一的确定。但是,socket所支持的协议类也不仅仅是TCP/IP一种。在java环境下,socket编程主要是指基于T

2016-10-17 10:37:50 365

转载 数据结构之【图】

一、基本术语图:由有穷、非空点集和边集合组成,简写成G(V,E);Vertex:图中的顶点;无向图:图中每条边都没有方向;有向图:图中每条边都有方向;无向边:边是没有方向的,写为(a,b)有向边:边是有方向的,写为有向边也成为弧;开始顶点称为弧尾,结束顶点称为弧头;简单图:不存在

2016-10-13 20:20:53 321

转载 Java多线程中join方法的理解

thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。t.join();      //使调用线程 t 在此之前执行完毕。t.join(1000);  //等待 t 线程,等待时间是1000毫秒 先上一段JDK中代码:Java代码

2016-10-08 09:55:47 2176 2

地图切图下载工具

地图切图下载工具,可以制作离线地图。里面使用简单各种地图都可以下载!

2018-01-24

空空如也

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

TA关注的人

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