![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
幸福的娃娃菜
人生如戏,爽快一时是一时
展开
-
java采集控制台日志
java采集控制台日志原创 2022-02-12 15:43:52 · 1671 阅读 · 0 评论 -
springboot 在线调整日志级别
网页上在线调整java后台日志级别;原创 2022-02-12 15:25:02 · 1467 阅读 · 0 评论 -
mybatis 限制查询数量
背景之前因为业务应用写SQL查询数据不规范,可能查询10条也可能查询100条以及10W条,造成数据库IO流过大,以及大量数据返回应用中,造成应用宕机,领导要求查询数据量限制大小,从底层控制,遂查询各种资料终找到办法;在mybatis拦截器中下手,代码比较简单,我就直接截图了:其实也有一行吧,我们把参数中的RowBounds对象中的limit值改成设计需要的大小,则查询出来的数据就在这个范围...原创 2020-01-08 22:27:40 · 10467 阅读 · 6 评论 -
java 查看接口运行时各方法耗时
使用开源工具: xrebel安装解压1.将压缩包解压到某目录,比如D:\XRebel-3.4.9,效果见下图在idea启动命令里增加参数-javaagent:D:\XRebel-3.4.9\xrebel\xrebel.jar注意,不要放在Program Files下。。因为中间有空格,会被认为是两个参数。导致如下的报错:agent library failed to init:...原创 2020-01-08 15:41:49 · 7506 阅读 · 0 评论 -
This is very likely to create a memory leak. Stack trace of thread 错误分析
报错内容2020-01-08 15:08:49-[ERROR ContextLoader.java:355] Context initialization failedjava.lang.NoClassDefFoundError: Could not initialize class org.springframework.beans.factory.BeanCreationExceptio...原创 2020-01-08 15:14:16 · 3827 阅读 · 0 评论 -
Oracle移植PG
字段类型区别发现的其他改造点1.获取当前时间oracle:sysdatepg:now()2.序列oracle: 序列名.nextvalpg:nextval(‘sequence_name’)3.decodeoracle:decode(expr, search, result [, search, result…] [, default])pg:CASE WHEN expr TH...原创 2019-10-12 13:42:53 · 1735 阅读 · 0 评论 -
Java 操作ftp实现文件上传,下载
最近在使用ftp进行保存文件的时候碰到下载文件能切换到指定目录 ,但获取不到目录底下的文件问题,作如下改动,分享一下,包括3个方法, 1. 上传 2. 下载 3. 切换到指定目录,如不存在则生成import com.XXX.res.frame.web.util.ResMessageSourceUtil;import org.apache.commons.net.ftp.FTP;im...原创 2018-08-22 22:39:11 · 153 阅读 · 0 评论 -
spring 初始化完成调用功能
刚好再开发过程中遇到了要在项目启动后自动开启某个服务,由于使用了spring,我在使用了spring的listener,它有onApplicationEvent()方法,在Spring容器将所有的Bean都初始化完成之后,就会执行该方法。 应用场景:很多时候我们想要在某个类加载完毕时干某件事情,但是使用了spring管理对象,我们这个类引用了其他类(可能是更复杂的关联),所以当我们去使...原创 2018-09-04 10:04:37 · 677 阅读 · 0 评论 -
spring在代码中获取多个properties文件的属性
前2天在处理spring中动态获取properties所配置属性的内容,由于我所写的内容是一个工具类, 不知道配置文件名称,一般我们在获取配置项的时候都会有一个指定的配置文件名称,然而今天却没有, 着实花费了一点点时间来摸索, 特此分享! 还有一个功能就是我这边区分了业务侧与公共侧配置文件所配置的目录,最后提供了一个接口类用于获取属性。先贴配置文件 value值不要配置到具体的文件,...原创 2018-09-08 21:14:47 · 2232 阅读 · 0 评论 -
tomcat集群Spring-Session+Redis实现session共享
一、Jar包引用我们目前使用的spring版本是如下org.springframework.version----4.3.15.RELEASE<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-se原创 2018-09-29 15:12:41 · 382 阅读 · 0 评论 -
读取ftp图片显示在页面中
前几天碰一个故障,图片花的,之前的做法是把图片下载到服务器中再去显示,由此出现此故障,后来一分析,应用集群之后此法会出现严重的问题,故直接改造了,从FTP中读取数据然后直接显示在页面, 不下载保存到应用服务器中。/** * 获取文件集合 * @param request * @param response */ @RequestMapping( ...原创 2019-02-25 09:54:48 · 2632 阅读 · 0 评论 -
mybatis传多个参数(不使用@param注解情况下),3.4.2版本之后使用#{0}引起的参数绑定异常
在此前版本中编写的代码如下:Dao层函数List<QueryLinkVO> findAllQueryLinkByRestypeId(int queryId, String envDomainId);对应的XML编写<select id="findAllQueryLinkByRestypeId" resultMap="PubQueryLinkList"> sel...原创 2019-03-27 10:32:21 · 1826 阅读 · 0 评论 -
JAVA将百万级数据高效的导出到Excel表单
今天,一朋友问我使用JAVA有没有什么办法导出百万级的数据到Excel工作表。当时我的第一个念头就是这真的是一个好疯狂的念头。然后就想假如真的有这样类似的需求,我自己应该怎么做呢?ps: 首先科普一下基础知识Excel 2003及以下的版本。一张表最大支持65536行数据,256列。也就是说excel2003完全不可能满足百万数据导出的需求。Excel 2007-2010版本。一张表最大...原创 2019-04-21 16:43:07 · 2625 阅读 · 0 评论 -
java map不区分KEY的大小写
有时候我们会需要一个不区分 key 大小写的MAP,当然仅仅是Map<String, Object>这种类型的Map3今天来给大家讲一下. 以下这个 CaseInsensitiveMap类.org.apache.commons.collections.map.CaseInsensitiveMap例子:public static void main(String[] args) ...原创 2019-04-18 09:50:02 · 8807 阅读 · 0 评论 -
分布式唯一id:snowflake算法思考
缘起为什么会突然谈到分布式唯一id呢?原因是最近在准备使用全局唯一ID,项目要搞微服务化,看看官网介绍:同一业务场景要全局唯一,这个id的要求就是局部唯一或者全局唯一即可,由于这个id是唯一的,可以用来当数据库的主键。那么该id需要有2个特性:局部、全局唯一。趋势递增。snowflake算法snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。...原创 2019-09-07 17:29:06 · 235 阅读 · 0 评论 -
二进制转10进制代码分享
最近接到需要把64位的雪花算法反算出来得到里面的信息, 首先是需要把得到的二进制转为10进制, 底下是2串示例数据, 下面是代码分享;二进制: 1000111001110001011110000101111010010110010110000001100100000000十进制: -8182626700310865664public static long binary2To10(Strin...原创 2019-09-11 10:57:50 · 4192 阅读 · 0 评论 -
HttpClient高并发内存溢出
apache 的HttpClient很强大,据说可以承受一万左右的高并发,但是在做项目的时候用HttpClient进行附件上传,并发1000不到的时候都导致了内存溢出,核心代码为:HttpPost post = new HttpPost(url.toString()); post.setEntity(multipartEntityBuilder.build());HttpResponse ...转载 2018-08-18 08:32:58 · 3662 阅读 · 0 评论 -
HttpClient:connection still allocated 完美处理
最近一个现场在使用应用访问SSO时频繁出现 Connection timed out: connect,导致应用卡顿,挂机频繁, 由于是使用了HttpClient。后来查了查资料 此问题出现原因是并发调用同一个httpclient去请求数据。在上一个请求尚未结束时,又启新的线程再次使用该httpclient请求数据,因为 httpclient 我用的是一个静态常量 ,应用中只有一个,导致问题出...原创 2018-08-18 08:29:48 · 6468 阅读 · 0 评论 -
java 调用存储过程
这2天正好在做通用导入工具,把所有数据先导入到中间表,再通过存储过程的形式执行到其它的业务表,搜集了一下java调用存储过程的方法。//返回值与底下 CallableStatementCallback&lt;String&gt; 定义的一致String retValue = jdbcTemplate.execute(new CallableStatementCreator() { ...原创 2018-08-18 08:13:50 · 301 阅读 · 0 评论 -
Junit4中的新断言assertThat的是用方法
1.JUnit4.4引入了Hamcrest框架,Hamcest提供了一套匹配符Matcher,这些匹配符更接近自然语言,可读性高,更加灵活; 2.使用全新的断言语法:assertThat,结合Hamcest提供的匹配符,只用这一个方法,就可以实现所有的测试; 3.assertThat语法如下: assertThat(T actual, Matcher matcher);原创 2016-07-06 11:14:37 · 2658 阅读 · 0 评论 -
Shiro 登录验证 那点事儿
Apache Shiro 官网: http://shiro.apache.org/从官网上,我们基本上可以了解到,她提供的服务非常明确:Authentication(认证)Authorization(授权)Session Management(会话管理)Cryptography(加密)首先,她提供了 Authentication(认证)服务,也就是说,通过她可以完成身份认证,让她去判断您是否为真实的原创 2016-08-27 11:56:48 · 5196 阅读 · 0 评论 -
C#实现调用Java类中方法
基本思路: 用C#实现调用Java编写的类中的方法;重点是将Java编写的程序打包成Jar,然后使用开源工具(IKVM)将其转化成DLL控件,在.NET环境下调用。1.打开Eclipse编写Java应用程序,然后将其打包成Jar包(方法不详细列出)(也可以在cmd下使用命令进行)2.到IKVM官方网站下载IKVM需要的组件 http://www.ikvm.net/ 下载ikvmbin-XX.zi原创 2016-09-07 14:49:56 · 2419 阅读 · 1 评论 -
BeanUtils.populate 转换器将 integer等字段的默认值为null
今天在使用json数据转为bean的时候, 1. integer类型的数据为空时填写–写null直接报以下错误 2. integer类型的数据为空时填写–写”直接转为0以上情况均不符合要求,数据库要求为integer的默认值NULL后来查阅资料寻找到以下方法 ConvertUtils.register(new IntegerConverter(null), Integer.class)原创 2017-05-11 22:25:06 · 3729 阅读 · 2 评论 -
java获取jar包中指定目录中的内容
java获取jar包中指定目录中的内容前几天在做国际化的控件支持,使用的是ReloadableResourceBundleMessageSource来使用国际化,但需要在XML中配置很多消息文件。如下&lt;!--消息资源文件 --&gt; &lt;bean id="messageSource" class="org.springframework.contex...原创 2018-07-19 22:46:35 · 3371 阅读 · 0 评论 -
JAVA 获取java版本号
JAVA 获取系统配置信息重点内容System.out.println(“java版本号:” + System.getProperty(“java.version”)); // java版本号 System.out.println(“Java提供商名称:” + System.getProperty(“java.vendor”)); // Java提供商名称 ...原创 2018-07-14 10:52:18 · 7808 阅读 · 0 评论 -
web项目上之深入理解Java国际化
假设我们正在开发一个支持多国语言的Web应用程序,要求系统能够根据客户端的系统的语言类型返回对应的界面:英文的操作系统返回英文界面,而中文的操作系统则返回中文界面——这便是典型的i18n国际化问题。对于有国际化要求的应用系统,我们不能简单地采用硬编码的方式编写用户界面信息、报错信息等内容,而必须为这些需要国际化的信息进行特殊处理。简单来说,就是为每种语言提供一套相应的资源文件,并以规范化命名的...原创 2018-07-20 15:30:56 · 1650 阅读 · 2 评论 -
Jsonp 跨域方案
Jsonp post 跨域方案本文给大家讲述的是个人在一个项目中遇到的关于jsonp的post跨域问题的解决过程,这里记录下来,分项给大家。最终问题得以解决,今天抽空与大家分享下。处理的问题是国际化语言切换,SSO中选择语言需要带入各个应用中,在SSO中前台调用各个应用的后台方法,SESSIONID相同, 在当前浏览器中访问其它应用则语言带过去了. 原理: 同一个浏览器中调用A应用的S...原创 2018-08-03 17:41:10 · 136 阅读 · 0 评论 -
mybatis把0识别为null
用mybatis时遇到一个问题,java代码中传递的整数0在mybatis中被识别成null<if test="workGroupId!=null and workGroupId!=''"> b.work_group_id=#{workGroupId,jdbcType=DECIMAL} </if>这样编写如果workGroup...原创 2018-08-09 09:56:52 · 4125 阅读 · 1 评论 -
spring中MessageSource 免配置消息文件方案
spring中MessageSource 免配置消息文件原创 2018-08-04 22:10:58 · 1370 阅读 · 0 评论 -
分布式Session一致性入门简介
Session简介Session是什么?Session在网络中表示“会话控制”,用于存储特定用户所需的属性和其他的配置信息; Session表示一个特定的时间间隔,可以指用户从登陆系统到注销退出系统之家的时间。为什么出现?因为http 是一种无状态协议,如果没有Session的话,服务器无法识别请求是否来自同一个用户! 在一些业务场景中需要知道前面的操作和后台的操作是不是同一...转载 2018-07-27 23:19:42 · 128 阅读 · 0 评论 -
Ajax跨域每次请求产生新的sessionId
Ajax跨域每次请求产生新的sessionId在处理多语言过程中,需要在门户中往其它应用的session中设置语言ID,跳转到其它应用时从session中获取出语言ID设置语言,才能整个应用圈使用同一种语言。浏览器在使用请求首页访问时会把获取到的sessionId返回到浏览器中,如下图: 当第2次请求时则使用已有的,如下图: 那么我们跨域往这个以下sessionId中设置数据,...原创 2018-08-05 19:47:46 · 12258 阅读 · 3 评论 -
mybatis运行时拦截ParameterHandler注入参数
在实现多租户系统时,每个租户下的用户,角色,权限,菜单都是独立的,每张表里都有租户Id字段 (tenantId),每次做数据库操作的时候都需要带上这个字段,很烦。现在的需求就是在mybatis向sql设置参数时拦截,获取当前登录用户的tenantId,若参数的集合中没有 tenantId,将当前登录用户的tenantId 放到 sql参数的集合中,这样就不必在业务代码中关心租户信息了。...转载 2018-08-10 14:14:49 · 5540 阅读 · 4 评论 -
java 获取方法返回值list中的类型
周末写了个小功能,有部分指定请求不走mybatis, 而是走其它http数据服务接口,需要判断dao接口方法中的返回值,来进行赋值.public interface LanguageDao { /** * 查询当前配置的语言 * @return */ List<LngLanguage> queryLanguageList();}...原创 2018-08-13 09:03:29 · 18774 阅读 · 0 评论 -
今天提示myeclipse subscription expiration,如何手动获取MyEclipse 注册码!很牛!
1.新建一个类,命名为MyEclipseGen把.java里本来有的代码全部删掉,再把下面的代码复制到文件中。运行,按照提示输入一串字符,建议取名字的首字母,然后回车,就会生成一行注册码. 如下图: 然后MyEclipse –> Subscription Information 按提示第一行输入你刚刚输入的字符串,第二行粘贴注册码即可。 如果成功的话应该会发现如下提示,点击finish结束,原创 2016-06-13 15:49:40 · 2519 阅读 · 0 评论