自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 横表和纵表

业务员大横表,横表就是表示各个纬度的数据,各自一个字段。例如一级单位是code1,二级单位是code2。要找一个二级的单位数据还得code2有值,codeE是空。就很麻烦纵表就是各个纬度的数据,在一个字段中。例如一级单位,二级单位等都在code字段中...

2020-07-20 22:53:57 17

原创 分析请求的链路上的所有节点

最近遇到了一个问题.客户端发起的请求参数,到了应用程序,却有些参数改变了.由此分析客户端发起请求,经过了哪些节点,可能是有些节点对请求入参做了处理.分析过程客户端->ngix->网关->应用A->应用B->最终应用等.最终定位为网关和应用A,都对请求入参做了SQL注入处理,导致了到最终应用的时候,请求入参发生了改变....

2020-05-30 21:38:27 153

原创 大数据开发:sqoop和hive

大数据开发:sqoop和hiveHadoop生态系统包含了用于协助Hadoop的不同的子项目(工具)模块,如Sqoop, Pig 和 Hive。Sqoop: 它是用来在HDFS和RDBMS之间来回导入和导出数据。Hive: 它是用来开发SQL类型脚本用于做MapReduce操作的平台我们以一般的从关系型数据库读取数据,然后大数据平台做分析处理,然后将处理完后的数据回写到关系型数据库中这种步骤为例操作步骤1.用sqoop工具,将关系型数据库写入到hive的数据库表中2.用hiveQL语句,对导入

2020-05-26 22:36:21 86

原创 记一次防止SQL注入引起的生产问题

记一次防止SQL注入引起的生产问题最近在生产系统上遇到了一个问题.在前后端代码都没有修改的情况下,某个用@RequestBody ADTO接受请求参数的接口,突然报错了错误信息大概是说,入参xxxupdateXXX,在 ADTO中找不到对应的属性.ADTO中有属性xxxUpdateXXX,就是差了一个大写一个小写.但是抓包看前端的入参,确实是xxxupdateValue但是到了请求里面,不知道怎么变成小写的了.然后听另外一个同事说,她那边也有select从大写被替换成小写的问题.才反应过来,两

2020-05-26 20:32:09 49

原创 MyBatis的缓存

MyBatis一级缓存是sqlsession级别的缓存MyBatis 的一级缓存存在于 SqlSession 的生命周期中,在同一个 SqlSession 中查询时, MyBatis 会把执行的方法和参数通过算法生成缓存的键值,将键值和查询结果存入一个 Map对象中。如果同一个 SqlSession 中执行的方法和参数完全一致,那么通过算法会生成相同的键值,当 Map 缓存对象中己经存在该键值时,则会返回缓存中的对象。强制刷新缓存的方式<select id=” selectByid” f

2020-05-16 14:27:29 67

原创 OOM解决方案

OOM解决方案-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+HeapDumpOnOutOfMemoryError内存映像分析工具(例如eclipse memory analyzer)堆dump出来的堆转储快照进行分析,重点是确认内存中的对象是否是必要的.也就是要先分清楚到底是出现了内存泄漏(memory leak)还是内存溢出(memory overflow)注意项目名称不要有下划线,不然会报错说找不到主类.[GC (Allocation Failure) 7

2020-05-16 14:20:00 48

原创 java注解

注解什么是注解?注解是一种元标签.注解也就是一种标签@Retention()注解@Retention可以用来修饰注解,是注解的注解,称为元注解。Retention注解有一个属性value,是RetentionPolicy类型的,Enum RetentionPolicy是一个枚举类型,这个枚举决定了Retention注解应该如何去保持,也可理解为Rentention 搭配 RententionPolicy使用。RetentionPolicy有3个值:CLASS RUNTIME SOURCE

2020-05-16 14:15:27 22

原创 springmvc-异步请求-返回DeferredResult

61、springmvc-异步请求-返回DeferredResult1.线程中创建DeferredResult<Object> deferredResult对象并返回.主线程推出2.当拿到deferredResult对象的线程调用了deferredResult.setResult(order);方法之后,response就可以拿到结果并返回3.假如超出等待时间,则直接提示失败. @ResponseBody @RequestMapping("/createOrder") publi

2020-05-16 14:11:41 79

原创 java用命令行的方式启动jar包

格式java -jar [jar包的路径] [--参数名称键值对]例如java -jar springcloud_eureka.jar --spring.profiles.active=peer1java -jar springcloud_eureka.jar --spring.profiles.active=peer2

2020-05-16 14:09:20 197

原创 Servlet为什么要3.0(异步)

在Servlet 3.0之前,Servlet采用Thread-Per-Request的方式处理请求。即每一次Http请求都由某一个线程从头到尾负责处理。如果一个请求需要进行IO操作,比如访问数据库、调用第三方服务接口等,那么其所对应的线程将同步地等待IO操作完成, 而IO操作是非常慢的,所以此时的线程并不能及时地释放回线程池以供后续使用,在并发量越来越大的情况下,这将带来严重的性能问题。即便是像Spring、Struts这样的高层框架也脱离不了这样的桎梏,因为他们都是建立在Servlet之上的。为

2020-05-16 14:01:44 24

原创 SQL尽量合并成一个,减少查询次数

在某些业务场景中,需要先查询a数据,根据数据是否满足条件,再用a去查b,b去查c。这样就会有多次查询要执行。可以考虑大部分都是满足的场景中,直接联合查询,一次查出ABC数据,然后进行判断。...

2020-05-12 20:04:20 39

原创 使用fastjson的问题

1.如果你的key对应的value是null,那么jsonobject.tojsonstring的时候,这个key会被去掉。2.如果对象中很多的值相同,那么就会显示为$ref,避免Stack Overflow。要避免有开关。

2020-05-10 15:17:02 66

原创 布隆过滤器_不存在的一定不存在_存在的不一定存在

布隆过滤器_不存在的一定不存在_存在的不一定存在是用哈希的方式,加上字节数组的方式。判断对应位是否是0,1。来实现过滤。因为哈希冲突不可避免,所以过滤器判断存在的不一定存在。...

2020-04-29 13:50:41 271

原创 使用触发器实现删除数据的备份

--postgresql触发器测试create table person(p_no int PRIMARY KEY,p_name VARCHAR(40),age int);--备份表create table person_back(p_no int PRIMARY KEY,p_name VARCHAR(40),age int);--创建触发器执行函数create or ...

2020-04-12 11:47:46 148

原创 使用阿里巴巴的代码规约进行代码规范化

离线下载规约包idea上进行插件安装重启idea使用规约进行代码扫描好处就是支持中文,方便强大

2020-04-01 09:37:29 163

原创 一种大文件异步下载的方式

在导出excel等场景中,可能文件很大。用户不可能一直等待。这个时候,可以用后台记录下用户的请求参数到数据库。数据库执行定时任务,组装出用户所需文件,通过邮件发送给用户来实现。...

2020-03-27 16:29:25 226

原创 mybatis和SQL嵌套子查询的坑

最近碰到了一个生产问题.经过分析,发现一次请求调用,执行了很多次的SQL查询.是因为在mybatis中用了嵌套查询的写法,照成了该问题.原因是返回的数据要求格式如下class A{XXX a1xxxx a2List list}开发人员就先查询出满足的a1和a2记录,然后为了省事,在mybatis中写返回值的resutlMap的时候,就用了嵌套查询</>这...

2020-03-25 21:50:49 759

原创 对象的定位和访问

对象的定位和访问reference,有两种主要的方式1.是句柄。reference_句柄池_对象的实例数据指针和对象的类型数据指针2.直接指针。reference_对象实例数据数据(实例数据中有类型的指针),sun是用这种,优点是速度快...

2020-03-13 09:32:49 36

原创 编写复杂SQL的一些感想

编写复杂SQL,不会一步到位的.是会通过多步的子查询,每一步加工出一部分数据,然后这部分数据再和其他SQL进行组合,多次嵌套加工,最后才能得到我们所要的结果.这个过程,很类似于我们编写JAVA代码,复杂的逻辑,是通过一步步互相独立,又相互关联的方法,层层调用之后,才能得到我们最终想要的结果.每一个方法负责接收上一层加工出来的数据,然后在本方法中,再次进行数据的加工(可能是直接用传入的数据进行加...

2020-02-05 21:01:55 105

原创 StopWatch计时器

有时候,我们需要分析一段的代码中,各个步骤所用时间和所占比例,就可以适用StopWatch来实现(有s[pring的,google的)package com.hgh.springcloud.admin.test;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.util.St...

2020-01-11 14:16:29 49

原创 正则表达式匹配任意字符的写法

原来正则表达式中的".“代表的是除换行以外的任意字符,如果要真正代表任意字符,需要把换行符也加进去,但是经过测试”[.\n]“不生效,可以使用”\s\S"代表,即所有空字符+所有非空字符。注:为了适用于java程序,上述表达式已把斜杠替换成双斜杠。package com.hgh.springcloud.feign;import java.util.regex.Matcher;import...

2020-01-11 13:18:36 347

原创 Servlet

javax.servlet.Servletpublic interface Servlet {//根据配置初始化,例如在web.xml文件中的写的servlet内容配置信息public void init(ServletConfig config) throws ServletException;//获取配置信息public ServletConfig getServletConfi...

2019-12-19 20:25:47 27

原创 一种excel导出文件的方式

1.设置好表头,并且在表头区域指定好表的数据范围(用批注的方式写入函数,通过函数来进行指定)2.设置好表的第一行替换数据,指明map的key值,list的遍历对象,例如xxx.a,xxx.b中的xxx。并在列中指定最后一列的数据。3.通过工具类,读取上述表模板数据,然后用map->list进行数据填充。这样的好处就是表头和格式等,都可以通过预先设置好的来实现。而不用自己再去通过代码控制表...

2019-12-09 20:41:56 29

原创 使用AOP的方式来处理用户和管理员的日志,异常

使用AOP的方式来处理用户和管理员的日志因为我们一般处理用户或者管理员的日志的时候,返回值一般就两种:string(页面),map(string,object),所以我们可以写一个切面,分别处理一下这两种情况,注意切开的范围例如如下两种情况,这样就可以比较方便的处理用户和管理员出错的时候的日志处理,以及错误值返回的的处理.而controller层只需抛出异常即可. /** * ...

2019-08-19 10:19:13 61

原创 linux改成固定ip

先好看网卡,centos7的网络IP地址配置文件在 /etc/sysconfig/network-scripts 文件夹下,然后使用service network restart命令即可配置静态IP地址修改前TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO="dhcp"DEFROUTE="yes"IPV4_...

2019-08-08 16:03:03 104

原创 将一个maven项目的多个分支同时导入eclipse的方法

将一个maven项目的多个分支同时导入eclipse的方法修改pom.xml文件的如下内容,不同即可.portal_master

2019-08-08 09:17:08 915

原创 springboot整合Mybatis提示org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

springboot整合Mybatis提示org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):解决方案1.首先在pom.xml中,将xxxmapper.xml添加到类路径下 <build> <plugins> <plugin>...

2019-07-30 17:12:22 2186

转载 tomcat 性能优化(主要)

tomcat默认参数是为开发环境制定,而非适合生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈。&nbs...

2019-07-29 13:49:31 51

转载 使用guava加速java的开发

guava是google开源的项目,里面包含了很多我们平常对java的操作.教程可以参考:https://www.yiibai.com/guava/guava_multimap.html

2019-07-24 13:49:22 47

转载 阿里巴巴的26款超神Java开源项目!

1、分布式应用服务开发的一站式解决方案 Spring Cloud AlibabaSpring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Sprin...

2019-07-23 16:53:37 100

原创 Fiddler抓取java代码发起的请求包

主要方式是设置代理,fiddler运行在8888端口上。例如 //RestTemplate restTemplate = new RestTemplate(); RestTemplate restTemplate = new RestTemplate(new SimpleClientHttpRequestFactory() {{ setProxy(new java...

2019-07-11 16:42:20 1265

原创 时间戳相关知识研究

最近项目上想使用时间戳,做防止重放攻击的校验(时间差N分钟则认为是重放攻击,拒绝处理)但是发现普通的"yyyy-MM-dd HH:mm:ss"格式的时间,在各个时区中,会出现问题.时间戳的就是要能在各个时区之间,统一的转好转换.大家处于物理上的同一时刻.你是东八区的时区,我是东九区的时区.你8点整,正好是我的9点整.实现方案:1.timestamp 是指格林威治时间( GMT ) 197...

2019-07-10 15:44:22 30

转载 阿里巴巴设计规约-服务器

【推荐】 高并发服务器建议调小 TCP 协议的 time_wait 超时时间。说明:操作系统默认 240 秒后,才会关闭处于 time_wait 状态的连接,在高并发访问下,服务器端会因为处于 time_wait 的连接数太多,可能无法建立新的连接,所以需要在服务器上调小此等待值。正例:在 linux 服务器上请通过变更/etc/sysctl.conf 文件去修改该缺省值(秒):net....

2019-07-10 10:56:13 82

原创 mysql常用sql的练习

#mysql常用sql的练习/*DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter等。DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的...

2019-07-05 11:14:11 138

原创 windows下redis配置密码

需要设置:redis.windows.conf和:redis.windows-service.conf查看windows注册服务中的服务,属性,执行,可以知道,执行的是哪一个H:\devsoft\Redis\redis-server.exe --service-run “H:\devsoft\Redis\redis.windows-service.conf”...

2019-07-04 17:06:34 375

原创 idea配置tomca

2019-06-20 11:30:34 99

原创 linux查看java jdk安装路径和设置环境变量

最近项目上暂停tomcat的时候,出现了如下错误root@ubuntu2015251:~/apache-tomcat-7.0.63/bin# ./shutdown.sh Using CATALINA_BASE: /root/apache-tomcat-7.0.63Using CATALINA_HOME: /root/apache-tomcat-7.0.63Using CATALIN...

2019-06-20 10:23:58 2316

原创 docker的安装,运行,使用

https://www.runoob.com/docker/docker-container-connection.html

2019-06-12 17:18:17 128

原创 tomat启动成功-但是应用没有启动成功

核心:这种情况要查看所有的tomcat的日志,才能定位问题.可能是tomcat报错了之类的.最近在部署一个系统的时候,tomat已经启动成功了,但是通了浏览器访问应用总是报错404.在本机和远程telnet tomcat的端口都是没有问题的.就猜想,可能是单单tomcat启动成功了,但是应用没有启动成功.或者说应用关闭了.在一个类中设置,当bean销毁的时候,打印信息,确实发现日志中出...

2019-06-11 17:25:57 620

原创 http请求端快速关闭,导致服务端tcp大量等待

最近项目上,有一次出现了某一个ip下,出现了大量的tcp链接.导致了服务端的其他请求,一直等待超时.CLOSE_WAIT状态的一个很大可能性:当使用httpClient时,由于对方的服务器突然中断,导致在最后一步没有收到返回信息,就处于CLOSE_WAIT了。如果程序中没有设定超时时间,那么就会一直等待,不会结束CLOSE_WAIT状态。大量close_wait导致服务器服务无响应场景:...

2019-05-28 13:41:35 1461

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