自定义博客皮肤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)
  • 收藏
  • 关注

原创 log4j配置过程踩坑记录

文章目录一、开发过程复盘二、解决过程1、创建log4j.properties文件2、将resources文件夹设置为source目录一、开发过程复盘在使用Logger类的时候需要导入相关类,代码如下import org.apache.log4j.Logger;logger.info(user.getId());之后跑动代码时出现以下错误信息。出现上面错误原因是因为IDEA找不到log4j的properties文件,因为没有将其加入到项目的classpath中。二、解决过程1、创建log4

2021-05-02 17:33:37 167

原创 ReentrantLock加锁、解锁源码解读

一、ReentrantLock类继承关系二、方法1、加锁:lock()首先看一下方法调用线路图,RenntrantLock默认是非公平锁。1、公平锁final void lock() { // 调用AQS的acquire() acquire(1);}// 排它模式下,尝试获得锁public final void acquire(int arg) { // tryAcquire 方法是需要实现类去实现的,实现思路一般都是 cas 给 state 赋值来决定是否能获

2020-07-10 20:40:36 244

原创 Java内存区域与“String”对象比较问题

一、Java运行时数据区域方法区与堆是所有线程共享的部分,虚拟机栈、本地方法栈、程序计数器为每个线程私有的部分。1、方法区​ 方法区是各个线程共享的内存区域,它用于保存被虚拟机加载的类信息、静态变量、常量、即时编译器编译后的代码缓存等数据;运行时常量池是方法区的一部分。字符串常量池保存在永久代中,而永久代1、运行时常量池JDK1.7之前运行时常量池逻辑包含字符串常量池存放在方法区, 此时hotspot虚拟机对方法区的实现为永久代JDK1.7字符串常量池被从方法区拿到了堆中, 这里没有提到

2020-07-09 21:43:31 340

原创 JVM垃圾回收算法与常见面试题

常见面试题问题答案在文中都有提到如何判断对象是否死亡(两种方法)。简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)。如何判断一个常量是废弃常量如何判断一个类是无用的类垃圾收集有哪些算法,各自的特点?HotSpot 为什么要分为新生代和老年代?常见的垃圾回收器有哪些?介绍一下 CMS,G1 收集器。Minor Gc 和 Full GC 有什么不同呢?一、对象已死?1、引用计数法在对象中设置一个引用计数器,当有别的对象引用它时,

2020-07-05 15:38:08 304

原创 ubuntu16.04安装keepalived+Mysql主从切换

文章目录一、keepalived安装与配置1、安装组件2、压缩包方式安装3、检测脚本4、配置文件转移到系统下5、配置文件修改6、启动7、华为云虚拟ip1、申请虚拟ip8、ip漂移测试二、MySql5.7.27 互为主从配置1、双主互备注意事项2、A主B从1、主数据库修改mysql配置2、从数据库修改**1.修改mysql配置****2.重启mysql,打开mysql会话,执行同步SQL语句**(需...

2019-10-21 16:54:57 643

原创 java多态-向上转型

这篇文章是我看了这个参考博客的解题分析过程,查看下面结果前请将它看懂,有需要再与我讨论。class A { public String show(D obj) { return ("A and D"); } public String show(A obj) { return ("A and A"); }}class B ...

2019-10-08 09:53:12 153

原创 centos7安装Mysql5.7

文章目录1、检查是否装有MySQL2、下载mysql的repo源3、安装上面下载的repo包4、安装mysql5、无密码登录6、重启7、查看初始密码8、有密码登陆mysql9、修改root密码10、创建新用户11、給新用户授予mysql相关权限12、刷新授权13、服务器重启13、服务器重启1、检查是否装有MySQLrpm -qa | grep mysql2、下载mysql的repo源wg...

2019-09-12 16:39:46 83

原创 spring boot + 策略模式消除代码中过多的ifelse结构

利用spring boot + 策略模式消除代码中过多的if~else结构 // 结构示例: if (warnType == A) { System.out.println("A"); } else if (warnType == B) { System.out.println("B"); } else if (warnType == C) { Syste...

2019-09-09 09:21:21 1041

原创 mysql 关联查询连接条件选择注意事项

一、内连接关键字:inner join on语句:select * from a_table a inner join b_table b on a.a_id = b.b_id;说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。二、左连接(左外连接)关键字:left join on / left outer join on语句:select * f...

2019-04-04 18:16:25 2482 2

原创 理解Java中的抽象

在计算机科学中,抽象是一种过程,在这个过程中,数据和程序定义的形式与代表的内涵语言相似,同时隐藏了实现细节。抽象:一个概念或者想法不和任何特定的具体实例绑死。什么是抽象简单地说:“抽象只从正确的角度,透露对象的某些相关细节。”在面向对象编程理论中,抽象涉及到定义抽象对象的语言基础,它到底如何工作、如何获取和改变状态,并与系统中的其他对象进行“交流”。抽象在任何编程语言...

2019-03-18 12:23:23 238

原创 Java 构造器重写

public class SomeTrying{ public static void main(String[] args){ new Son(); new Son().Father(); }} class Father{ //父类Father的无参构造函数 pub...

2019-03-18 12:23:16 568

原创 Java 接口使用

Java 接口接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。接口无法被实例化,但是...

2019-03-10 18:14:32 123

原创 HashMap使用

前期准备:首先给hashMap里面put一些键值对,代码如下:HashMap<Integer, Integer> hashMap = new HashMap<>(); hashMap.put(5, 2); hashMap.put(9, 2); hashMap.put(8, 1); has...

2019-03-10 16:28:15 106

原创 Java的String中的subString()方法

方法:public String substring(int beginIndex, int endIndex)第一个int为开始的索引,对应String数字中的开始位置,第二个是截止的索引位置,对应String中的结束位置1、取得的字符串长度为:endIndex - beginIndex;2、从beginIndex开始取,到endIndex结束,从0开始数,其中不包括endInd...

2019-01-20 15:28:49 153

原创 @Deprecated 注解

当外部正在调用或者二方库依赖的接口,不允许修改方法签名,避免对接口调用方产生影响。接口过时必须加 @Deprecated 注解,并清晰地说明采用的新接口或新服务是什么。    这其中提到了 @Deprecated 注解,在之前的开发过程中没遇到过这个注解,于是查了下他的功能:    简单来讲就是,若某类或某方法加上该注解之后,表示此方法或类不再建议使用,调用时也会出现删除线,但并不代表不能...

2019-01-20 15:05:57 373

原创 “apt-get -f install” 错误与解决方法

​ apt-get -f install = apt-get install -f ,是修复依赖关系(depends)的命令,就是假如你的系统上有某个package不满足依赖条件,这个命令就会自动修复,安装那个package依赖的package。​ 1、sudo命令:sudo命令用来以其他身份来执行命令,预设的身份为root,简单来说就是提升权限,因为apt-get ins...

2019-01-06 20:32:55 5032

原创 ubuntu下将nginx配置成开机启动

​ 在安装完nginx后,开启nginx需要执行sudo /usr/local/nginx/sbin/nginx命令,这显然十分不方便。如果能像apache一样,直接通过脚本进行管理就方便多了。执行以下方法将nginx配置成service服务,则会简化操作指令。执行:vim /etc/init.d/nginx​ 将下面的脚本文件复制进去#! /bin/bash#...

2019-01-06 20:08:11 2085 3

原创 rabbitMq的TopicExchange方式推送配置

//application.yml 文件配置rabbitmq: host: 116.62.155.356 port: 5672 username: asdad password: 1232456//接受者配置@Configurationpublic class RabbitConfig { @Bean public Queue ...

2018-12-21 18:15:29 1245 4

原创 mybatis-plus 中mapUnderscoreToCamelCase配置

mapUnderscoreToCamelCase类型:boolean 默认值:true是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN(下划线命名) 到经典 Java 属性名 aColumn(驼峰命名) 的类似映射。注意:1.此属性在 MyBatis 中原默认值为 false,在 MyBatis-Plus 中,此属性也将用于生成最终的 SQ...

2018-12-21 18:06:33 9980 2

原创 rabbitMQ简介

什么是MQ?       MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取队列中的消息。      RabbitMQ是MQ的一种。下面详细介绍一下RabbitMQ的基本概念。1、队列、生产者、消费者      队列是RabbitMQ的内部对象,用于存储...

2018-12-16 21:39:33 126

原创 rabbitMQ报警推送简单方法

application.yml配置spring: rabbitMQ: host:125.25.23 port:5672 userName:dfwfwd password:635623 maven配置<dependency> <groupId>org.springframework.boot&...

2018-12-16 20:40:06 1270

原创 RabbitMQ安装流程

1.安装Erlang首先,使用以下命令在系统上添加erlang apt repository。您只需从其官方网站下载erlang存储库软件包并安装在您的系统上即可1. wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb2. dpkg -i erlang-solutions_1.0_all.deb...

2018-11-28 11:06:52 109

原创 调研充电桩项目比较int类型时间大小的方法

一、unix_timestamp函数用法 1、UNIX_TIMESTAMP() :若无参数调用,则返回一个 Unix timestamp ('1970-01-01 00:00:00' GMT 之后的秒数) 作为无符号整数,得到当前时间戳 2、UNIX_TIMESTAMP(date) :若用date 来调用 UNIX_TIMESTAMP(),它会将参数值以'1970-01-01 00:00:00...

2018-11-17 22:12:45 263

原创 Ubuntu安装Nginx 过程与错误原因总结

1.更新安装源执行:sudo apt-get update执行这步的原因:避免安装nginx相关依赖包时出现:unable to locate package xxx。这个错误提示2.安装nginx相关依赖包~~~1.# 查看zlib是否安装 dpkg -l | grep zlib~~~2.# 解决依赖包openssl 安装:sudo apt-...

2018-11-08 10:51:22 2169

原创 JAVA读取txt文件的三种方式

public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。 */ public static void readFileByBytes(String fileName) { File file = new File(fileName); InputSt...

2018-10-28 18:00:47 305

原创 数据库更新以后的一些修改

mysql数据库的批量update需要在URL处添加:allowMultiQueries=true没有设置的话,无法批量更新、插入数据。  出现下图报警信息。 原因:MySQL在高版本需要指明是否进行SSL连接,这里不需要使用SSL:useSSL=false                                                                   ...

2018-10-18 11:37:02 125

原创 ftp配置用户权限的一些细节问题

设置用户只能访问家目录: 执行 usermod -s /usr/sbin/nologin userName 配置注意操作顺序 修改具体配置 1.执行:vi /etc/vsftpd.conf  在文件中添加上图步骤6中的指令 2.执行:useradd -m  userName  添加用户 3.执行:passwd userName 添加密码 4.执行:vi /etc/vsftpd.ch...

2018-10-15 11:44:12 127

原创 Ubuntu上配置nginx时遇到的一些问题

1.执行  vim /usr/local/nginx/conf/nginx.conf修改配置文件问题1:打开配置文件以后,在配置多站点的时候由于粗心造成 “}” 一个,如图。问题2:configuration file /usr/local/nginx/conf/nginx.conf test failed错误原因:需要配置文件位置执行命令:/usr/local/nginx/s...

2018-10-09 11:30:14 252

原创 方法重写(override)遵循的原则

1.两同两小一大原则两同:方法名相同,形参列表相同。 两小:子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常更小或相等。 一大:子类方法的访问权限应比父类方法的访问权限更大或相等。 尤其指出:覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法。2.注意方法重写(override)与方法重载(ove...

2018-08-31 16:08:54 2173

原创 Java 使用三目运算简化条件语句

 三目(条件)运算符1)语法结构:(boolean表达式)?(表达式1):(表达式2)2)执行流程先判断boolean表达式的值: 若为true,则整个运算式的值为表达式1的值; 若为false,则整个运算式的值为表达式2的值。3)代码案例用三目运算符找出变量a和b中较大的数 ,int a=10,b=1;int max=a>b?a:b; 使用if条件语...

2018-08-26 17:23:25 1654

原创 Mybatis中使用foreach标签批量插入数据

 我们在MySQL中可以使用foreach标签进行批量插入数据。foreach中可以有两种方式批量插入数据:方式1: INTERT INTO TableName Values(值1,值2,值3….),(值1,值2,值3….)….方式2: INTERT INTO TableName Values(值1,值2,值3….);INTERT INTO TableName Values(值1,...

2018-08-26 17:10:14 10386

原创 批量插入中foreach中的元素类型

foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有 item,index,collection,open,separator,close。item表示集合中每一个元素进行迭代时的别名,index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为...

2018-08-19 11:36:29 851

原创 Mybatis传入List实现批量更新

Dao层写法/** * 批量更新新库存 * @param list * @return */ int updateNewStock(@Param(value = "list") List<GreenBeanMsg> list);xml具体实现代码<update id="updateNewStock" paramet...

2018-08-17 16:51:20 94397 20

原创 Mysql 查询语句执行顺序

MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作。其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入,只是这些虚拟的表对用户来说是透明的,但是只有最后一个虚拟的表才会被作为结果返回。如果没有在语句中指定某一个子句,那么将会跳过相应的步骤。 下面我们来具体分析一下查询处理的每一个阶段FORM: 对FROM的左边的表...

2018-08-12 11:51:47 320

原创 postman URL中含特殊字符传参

URL出现了有+,空格,/,?,%,#,&amp;,=等特殊符号的时候,可能在服务器端无法获得正确的参数值,此时需要对字符进行转译。字符 - URL编码值空格 - %20"      - %22#     - %23%    - %25&amp;    - %26(      - %28)      - %29+     - %2B,       - %2C/      ...

2018-08-12 11:38:37 23279 1

原创 数据库设计时要遵循的一些原则

1.表及字段的命名规则(1).可读性原则:使用大小写来格式化的库对象名字以获得良好的可读性。例如:使用custAddress而不是custaddress来提高可读性。(2).表意性原则:对象的名字应该能够描述它所表示的对象。例如:对于表,表的名称应该能够体现表中存储的数据内容;对于存储过程,存储过程应该能够体现存储过程的功能。(3).长名原则:尽可能少使用或者不使用缩写,适用于数据库(...

2018-08-04 17:44:22 11863

原创 设计数据库流程

1.为什么要进行需求?1.了解系统所要存储的数据。2.了解数据的存储特点。3.了解数据的生命周期。2.要搞清楚的一些问题。1.实体与实体之间的关系(一对一、一对多、多对多)。2.实体所包含的属性是什么?3.哪些属性或属性的组合可以唯一标识一个实体。3.逻辑设计是做什么的1.将需求转化为数据库的逻辑模型。2.通过ER图的形式对逻辑模型进行展示。3.同所选的...

2018-08-02 11:38:46 406

原创 Java web开发分层逻辑梳理

对于Web开发项目的程序,为了便于开发与维护,需要对程序逻辑划分层次。分层次开发的好处是可以多人协作分工开发,提高开发效率。使用SpringMVC框架便会划分为Controller层、Service层、Dao层(Data Access Object)、Mapper。Controller层负责从Service层获取数据,发送相应的视图,核心逻辑在Service层。Service层写业务逻...

2018-07-24 16:23:14 2215

原创 MySQL连表查询方式:内连接、左连接、右连接、全连接

一、内连接关键字:inner join on语句:select * from a_table a inner join b_table b on a.a_id = b.b_id;说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。二、左连接(左外连接)关键字:left join on / left outer join on语句:select * from a_t...

2018-07-07 10:49:47 1932 2

原创 关于Mybatis中update语句更新表中数据的流程!(有问题没有搞清楚)

   今天在写公司API接口时遇到Mybatis中实现交换监控点顺序时具体该怎么使用update,由此想到update语句执行流程是怎样? 1.更新一个表中的一列。        例如:update 表A                     set B=C                     where  id=100(过滤条件)    此时执行顺序时由上到下,先定位到表A,然后找到列B设...

2018-06-30 17:21:40 6877

空空如也

空空如也

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

TA关注的人

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