- 博客(46)
- 收藏
- 关注
原创 Postman返回乱码问题解决
在Headers中设置:keyvalueAccpetapplication/json;charset=UTF-8如果接口返回的是其他数据格式,改一下application/json即可。
2021-09-26 11:51:59
9142
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
472
原创 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
141
原创 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
471
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
330
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
74
原创 如何使用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
4220
原创 HttpServletRequest.getParameterNames方法
1.可以获取query String中的参数和form-data,其他的,如json字符串,无法获取。
2020-10-21 15:52:51
1395
原创 Thrift方法调用流程
客户端:调用client中的对应同名方法->根据传入的参数构造thrift给方法参数生成的类对象(类的命名methodName_args)->构造message,将参数类methodName_args写入message中->发送给服务端->获取服务端返回的message,解析协议(检查message type是否是异常及校验序列号seqid是否和client类的seqid相等),提取出返回值,并把反序列化后的返回值返回给调用函数服务端:...
2020-09-15 10:57:22
401
原创 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
266
原创 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
494
原创 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
267
原创 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
842
原创 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
782
1
原创 Java 动态代理-JDK动态代理源码简析
简述Java动态代理有两种,即JDK提供的原生的动态代理(要求被代理类实现某个接口)或者CGLIB(要求被代理类可继承,即不使用final修饰),本文主要是对jdk原生的动态代理的源码进行简单的分析。如何使用JDK动态代理创建一个动态代理?方法:调用Proxy.newProxyInstance方法即可public static Object newProxyInstance(ClassLoader loader, C
2020-08-31 17:27:47
175
原创 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
456
原创 具体问题具体分析-关于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
456
原创 简记
这里其实是起到管理依赖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
101
原创 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
147
原创 工作中碰到的问题集锦(一)
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
262
原创 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
162
原创 双写数据库和缓存方案
参考链接: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
293
原创 Mybatis#{}和${}的区别
参考链接:1、https://segmentfault.com/a/11900000046170282、https://www.jianshu.com/p/b3b4a4fb8a54
2019-12-10 15:20:10
106
原创 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
277
原创 关于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
149
原创 开发常见问题
1.拉取新分支后,编译报错,可能是因为之前分支的target目录的文件还存在的缘故,拉取新分支时,target不会被覆盖(远端代码不包含编译后的问题),使用maven-clean命令清楚target目录文件即可。...
2019-11-19 14:38:13
83
原创 好用的工具
1.mybatis generator(自动生成常用的sql语句,如根据某个列查询等)2.mapstruct(自动转换类型,提供一个接口即可)3.swift(同通过注解的方式使用thrift)
2019-11-18 19:46:37
71
原创 7-9月看的书的列表
spring in actionspringmvc文档mybatis文档深入Java虚拟机Java内存模型高性能MySQLMySQL技术内幕effective Java第三版阿里巴巴Java开发规范confluent kafka
2019-09-19 14:48:26
85
1
原创 父子表
父子表的概念表1:学生信息表学号姓名年龄性别1ghost25男2king35男3queen30女表2:成绩表学号课程号课程名成绩11数学9012语文85在成绩表中的学号,相当于外键,那么对于成绩表来说,学生信息表就是父表,它自己是字表。...
2019-09-19 14:38:15
1143
原创 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
400
原创 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
116
原创 MySQL的一些细枝末节
1.如果数据库存储的值与要写入数据库来更新的值一样的话,MySQL不会进行更新,因此utime也不会发生变化;2.使用UNIT_TIMESTAMP对列值进行转换的时候,不会走索引。...
2019-09-05 11:18:13
154
原创 批量更新问题
1.结合mybatis使用case when进行批量更新时,一般使用如下的模板:<update id="batchUpdate"> UPDATE student <trim prefix="SET" suffixOverrides=","> <trim prefix="age...
2019-09-05 11:05:43
391
原创 Maven碰到的一些问题
在pom.xml中右键增加依赖时,可以搜索一些依赖并自动加入到该文件中,但是只有本地仓库中已下载的依赖可以被搜索到,且要在idea设置中更新maven本地索引。当在pom.xml文件中添加了新的依赖时,maven会从远程仓库中自动下载该依赖到本地仓库中。当有多级pom时:顶级的pom的dependency management标签负责填写全局的依赖,子模块的pom.xml文档只需要填写好pa...
2019-09-05 10:42:07
96
原创 Effective-Java item 30
第30条款中有类似这样一段代码:测试代码块1public class GenericTest { private static UnaryOperator<Object> IDENTITY_FN= t->t; @SuppressWarnings("unchecked") public static <T> UnaryOperator<...
2019-08-28 14:45:28
150
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人