自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

记录点滴

技术

  • 博客(46)
  • 收藏
  • 关注

原创 Postman返回乱码问题解决

在Headers中设置:keyvalueAccpetapplication/json;charset=UTF-8如果接口返回的是其他数据格式,改一下application/json即可。

2021-09-26 11:51:59 8871 1

原创 Java泛型-Type简析

目录1.简介2.细节分析2.1 如何获取一个filed的泛型类型?2.2 如何获取一个方法的参数的泛型类型?1.简介Type接口的出现是为了解决Java泛型擦除导致的无法获取泛型信息的问题,通过getGenericInterfaces,getGenericType和getGenericParameterTypes等方法来获取泛型信息,type的直接子类和间接子类主要有以下五种:名称描述Class常用的class类,不包含泛型信息,又称为raw type,如 Integer.cl

2021-06-16 00:21:03 445

原创 Spring注解

1.@requestParam注意,该注解会对参数进行一个自动的解码。因此,如有如下链接:http://www.foo.com?query=+有如下controller:@GetMapping public void handleRedirect(@RequestParam query, HttpServletRequest request, HttpServletResponse response) ;此处得到的query是一个空格。因为’+'号进行URL解码后是一个空格。...

2021-06-07 11:56:49 115

原创 SpringBoot启动流程分析(二):ApplicationStartingEvent事件的发布(基于SpringBoot2.1.9.RELEASE)

2. ApplicationStartingEvent事件的发布概览:从获取SpringApplicationRunListeners到发布ApplicationStartingEvent事件的发布及SpringBoot启动流程分析:SpringApplication初始化中获取到的监听器ApplicationListener对该事件的处理。public ConfigurableApplicationContext run(String... args) { StopWatch stopWat

2021-06-06 21:36:17 436 2

原创 SpringBoot启动流程分析(一):SpringApplication初始化(基于SpringBoot2.1.9.RELEASE)

1.从SpringApplication开始@SpringBootApplicationpublic class ApplicationLoader { public static void main(String[] args) { SpringApplication application = new SpringApplication(ApplicationLoader.class); application.run(args); }}1.

2021-06-05 21:19:08 305 1

原创 MySql常用函数

1.group_concat 函数,将查询出来的某列连接起来,默认使用逗号连接。select group_concat(id) from table;应用场景:查询出一个表的ID,并用逗号连接,最后将该ID串作为其他表的查询条件,如select * from other_table where table_id in(select group_concat(id) from table)。...

2021-05-24 11:15:47 66

原创 如何使用Excel的数据去查询数据库?

工作中常会用Excel中的数据去查询MySQL数据,比如Excel里面有一系列ID,需要使用这些ID去查询数据库,比如使用如下查询语句:select * from test where id in (1,2,3)那么如何快速的达成这个目的?1)如果Excel中存储的数据对应MySQL的列的类型是字符类型的,那么需要先将Excel中这列的数据加上引号,方法如下图所示:使用函数="'"&C2&"'"“” 包着 ’ ,中间为行列号,表示给这一单元格左右添加上引号。在往下拉,

2021-04-14 17:14:15 4047

原创 HttpServletRequest.getParameterNames方法

1.可以获取query String中的参数和form-data,其他的,如json字符串,无法获取。

2020-10-21 15:52:51 1359

原创 Thrift方法调用流程

客户端:调用client中的对应同名方法->根据传入的参数构造thrift给方法参数生成的类对象(类的命名methodName_args)->构造message,将参数类methodName_args写入message中->发送给服务端->获取服务端返回的message,解析协议(检查message type是否是异常及校验序列号seqid是否和client类的seqid相等),提取出返回值,并把反序列化后的返回值返回给调用函数服务端:...

2020-09-15 10:57:22 392

原创 IDL文件生成的Java类浅析-方法返回值部分(命名格式:methodName_result)

以下所有分析基于下方一个简单的IDL文件来分析。service EchoService{ string echo(1:string str);}基本上与Thrift根据方法参数生成的类一致(IDL文件生成的Java类浅析-方法参数部分(m_args)public static class echo_result implements org.apache.thrift.TBase<echo_result, echo_result._Fields>, java.io.Seriali

2020-09-14 19:38:54 253

原创 IDL文件生成的Java类浅析-方法部分

对于service来说,一般会生成两个接口,即Iface和AsyncIface,一个同步一个异步。接口中的方法自然就是IDL文件中定义的方法。Iface: public interface Iface { public java.lang.String echo(java.lang.String str) throws org.apache.thrift.TException; }AsyncIface: public interface AsyncIface { pu

2020-09-14 17:16:17 467

原创 IDL文件生成的Java类浅析-方法参数部分(m_args)

以下所有分析基于下方一个简单的IDL文件来分析。service EchoService{ string echo(1:string str);}类似的,thrift也会为每一个方法的参数生成一个类,默认的命名是:方法名_args生成的代码如下(省去一些不重要的方法)public static class echo_args implements org.apache.thrift.TBase<echo_args, echo_args._Fields>, java.io.Seri

2020-09-14 17:15:15 251

原创 Thrift通信协议

thrift通信的单位是一个message,格式如下:各字段解释:1)版本号:用15个bit表示,因为前导1的存在,这16位总是一个负数。每次预先读取msg的前32位,使用VERSION_MASK 0xffff0000来获取前16位。目前默认的版本号是0x80010000。2)待使用:待使用的一个字节。3)消息类型:用后3个bit表示消息类型,分别是:消息类型16进制值处理方式CALL0x80010001调用方法,并期望获得返回REPLY0x80010002

2020-09-14 11:49:05 823

原创 Thrift序列化协议

下面所有序列化或者反序列化均以下方IDL文件为例。struct Header { 1: string sendHostName, 3: string senderHostIP, 12: i32 sendCount, 13: map<string,string> nameMapping, 14: list<i32> nums;}string、数组类型数据格式:string反序列化:public String readString()

2020-09-11 20:42:51 758 1

原创 Java 动态代理-JDK动态代理源码简析

简述Java动态代理有两种,即JDK提供的原生的动态代理(要求被代理类实现某个接口)或者CGLIB(要求被代理类可继承,即不使用final修饰),本文主要是对jdk原生的动态代理的源码进行简单的分析。如何使用JDK动态代理创建一个动态代理?方法:调用Proxy.newProxyInstance方法即可public static Object newProxyInstance(ClassLoader loader, C

2020-08-31 17:27:47 166

原创 Spring工具的一些细节

1.BeanUtils.copyProperties是浅拷贝

2020-08-19 10:58:45 77

原创 常用Linux命令-查询类

1.查看指定文件的路径。realtpath <file>

2020-08-18 17:13:28 114

原创 mac Idea开发常用提效快捷键-Java

命令行输出快捷键:soutsystem.out.println()Main函数快捷键:psvmpublic static void main(String[] args){}3.try-catch快捷键:option+command+Ttry{}catch{}

2020-08-18 17:04:27 440

原创 具体问题具体分析-关于jar包冲突导致的兼容性问题

  一般编译时碰到这种问题,”Correct the classpath of your application so that it contains a single…",主要是因为在jar包冲突的情况下,maven根据它的依赖原则最终选择了某个版本,这样可能会出现以下的问题:在保证向后兼容的前提下,如果maven最终选择了版本比较高的jar包,那么一般不会出现兼容性问题。如果没有保证向后兼容,那么使用较低版本依赖的程序很有可能出现找不到相关类的错误。如果maven最终选择了版本比较低的jar包,

2020-08-17 11:45:48 432

原创 简记

这里其实是起到管理依赖jar版本号的作用,一般只会在项目的最顶层的pom.xml中使用到,所有子module如果想要使用到这里面声明的jar,只需要在子module中添加相应的groupId和artifactId即可,并不需要声明版本号,需要注意的是这里面只是声明一个依赖,并不是真实的下载jar,只有在子module中使用到,才会去下载依赖。2.mybatis做if判断注意mybatis做if 判断 注意:下面这种写法只适用于 id 类型为字符串.id = #{id}如果id类型为in...

2020-08-07 14:16:54 90

原创 Java共享变量可见性研究(二)

代码块2-1private static int a=10; public static void main(String[] args) { Thread t1=new Thread(new MyRunnable()); Thread t2=new Thread(new MyRunnable()) ; try { t1.start(); t2.start(); t1.join

2020-06-17 19:28:41 136

原创 工作中碰到的问题集锦(一)

1.MySQL text属性不能设置默认值2.insert 如果不指定某列,即使这列有not null约束,也会为该列插入null值。3.thrift返回值里有map这种对象,若map里面有个键对应的值是null,这种也不行,thrift会报value is null的错误4.mapstruc 中@named方法需要是public的,否则无法被mapstruct实现类所调用5.class...

2020-04-29 15:22:05 237

原创 Java共享变量可见性研究(一)

1.在主线程启动另一个线程thread1public static void main(String[] args) { Runnable demo = new MyRunnable(bonkBean); Thread thread = new Thread(demo,"thread1"); /*try { Thread.s...

2020-01-07 14:47:49 151

原创 双写数据库和缓存方案

参考链接:1、https://cloud.tencent.com/developer/article/11655082、https://zq99299.github.io/note-book/cache-pdp/037.html#%E8%AE%B2%E5%B8%88%E6%97%81%E7%99%BD

2019-12-10 15:24:08 287

原创 Mybatis#{}和${}的区别

参考链接:1、https://segmentfault.com/a/11900000046170282、https://www.jianshu.com/p/b3b4a4fb8a54

2019-12-10 15:20:10 98

原创 mysql深入研究

1.MySQL in的执行1.1 in的字段有索引:如select from test where id in (1,2,5,6);这种情况下,MySQL从in的列表中逐个取id,然后根据id在聚簇索引中查找到对应的行;1.2 in的字段没建索引如select * from test where age in (20,19,24);这种情况下,MySQL会将in列表中的数据排...

2019-12-05 15:00:02 267

原创 关于Git

1.git提交之前要检查远端配置;(git remote -v)2.git三段式:git add . -> git commit -m ‘the description of the modification’ -> git push3.git push时,需要加入 -m参数,说明此次提交修改的内容,不加这个参数会进入vim界面,很麻烦。甚至会提交失败4.Git...

2019-11-21 10:52:50 126

原创 开发常见问题

1.拉取新分支后,编译报错,可能是因为之前分支的target目录的文件还存在的缘故,拉取新分支时,target不会被覆盖(远端代码不包含编译后的问题),使用maven-clean命令清楚target目录文件即可。...

2019-11-19 14:38:13 77

原创 好用的工具

1.mybatis generator(自动生成常用的sql语句,如根据某个列查询等)2.mapstruct(自动转换类型,提供一个接口即可)3.swift(同通过注解的方式使用thrift)

2019-11-18 19:46:37 64

原创 7-9月看的书的列表

spring in actionspringmvc文档mybatis文档深入Java虚拟机Java内存模型高性能MySQLMySQL技术内幕effective Java第三版阿里巴巴Java开发规范confluent kafka

2019-09-19 14:48:26 76 1

原创 父子表

父子表的概念表1:学生信息表学号姓名年龄性别1ghost25男2king35男3queen30女表2:成绩表学号课程号课程名成绩11数学9012语文85在成绩表中的学号,相当于外键,那么对于成绩表来说,学生信息表就是父表,它自己是字表。...

2019-09-19 14:38:15 1133

原创 Java的时间

1.UTC是现在用的时间标准,GMT是老的时间计量标准。2.DateTimeStampLocalDateTime

2019-09-11 11:09:05 84

原创 CAS(乐观锁策略)

测试场景  cas,即compare and swap,比较后再交换,使用的场景:线程1执行如下指令:read a; a++;write a;线程2执行如下指令:read a;a++;write a;此时有这样的执行顺序:线程1:read a;(线程调度,线程1变为就绪状态,线程2变为运行状态)线程2:read a;a++;write a;(线程2执行完毕,被...

2019-09-06 17:44:36 379

原创 Java捕获异常

1.可以多次catch异常,如下所示:try(query()){}catch(E1 e){}catch(E2 2){}catch(Exceptioin e){}将catch(Exceptioin e)写在最后,和switch的default有类似的效果,如果异常不是写在上面的异常的任意一个时,就由最下面的catch语句进行捕获(任何一个异常都属于Excep...

2019-09-05 11:59:16 107

原创 MySQL的一些细枝末节

1.如果数据库存储的值与要写入数据库来更新的值一样的话,MySQL不会进行更新,因此utime也不会发生变化;2.使用UNIT_TIMESTAMP对列值进行转换的时候,不会走索引。...

2019-09-05 11:18:13 149

原创 批量更新问题

1.结合mybatis使用case when进行批量更新时,一般使用如下的模板:<update id="batchUpdate"> UPDATE student <trim prefix="SET" suffixOverrides=","> <trim prefix="age...

2019-09-05 11:05:43 372

原创 Maven碰到的一些问题

在pom.xml中右键增加依赖时,可以搜索一些依赖并自动加入到该文件中,但是只有本地仓库中已下载的依赖可以被搜索到,且要在idea设置中更新maven本地索引。当在pom.xml文件中添加了新的依赖时,maven会从远程仓库中自动下载该依赖到本地仓库中。当有多级pom时:顶级的pom的dependency management标签负责填写全局的依赖,子模块的pom.xml文档只需要填写好pa...

2019-09-05 10:42:07 90

原创 Java内存模型

Java 线程模型示意图

2019-09-02 15:43:57 58

原创 MarkDown使用技巧

1.空两个全角空格:&emsp;&emsp;

2019-08-28 14:49:57 155

原创 Effective-Java item 30

第30条款中有类似这样一段代码:测试代码块1public class GenericTest { private static UnaryOperator<Object> IDENTITY_FN= t->t; @SuppressWarnings("unchecked") public static <T> UnaryOperator&lt...

2019-08-28 14:45:28 140 1

空空如也

空空如也

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

TA关注的人

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