java开发
zch1990s
这个作者很懒,什么都没留下…
展开
-
Java中utc时间转换成c#utc时间
Java UTC时间转C# UTC时间原创 2018-01-05 13:16:15 · 565 阅读 · 0 评论 -
Spring Boot 自定义Controller所在路径
Spring Boot 官方默认controller包需要和启动类同级,但正常开发这样做有些不规范,因此需要通过其他方式将Controller及启动类进行分离。解决办法是在启动类上添加@ComponentScan注解:@ComponentScan(basePackages = {"项目路径"})这里举例,假设这里项目路径如下:这里@ComponentScan可以加在启动类上:...原创 2018-11-07 11:46:34 · 2810 阅读 · 0 评论 -
Spring Boot 通过@PropertySource或者@PropertySources实现设置多配置文件
Spring Boot 官网使用的是application.properties文件来实现文件的配置。但是实际情况下一个配置文件是不够用的,比如项目集成redis,mq,以及数据库比如mysql的时候,多个配置文件有利于开发及维护的管理。Spring Boot是通过@PropertySource或者@PropertySources来实现多配置文件的。首先看下@PropertySource源码:...原创 2018-11-07 15:26:29 · 16939 阅读 · 0 评论 -
通过Executors工具类创建线程池的隐藏风险
最近看了下阿里开发手册,其中有一条写的是通过Executors工具类创建的线程有可能会OOM。因为平时处理多线程问题的时候多以ExecutorService配合Excutors使用,专门查看了下源码,这里记录下加深印象。通过Executors工具类创建线程池一般有4种方式:newFixedThreadPool:创建一个有固定线程数的线程池。newSingleThreadExecutor...原创 2018-11-21 11:41:01 · 916 阅读 · 0 评论 -
Shiro学习笔记(二)UsernamePasswordToken源码简单解析
在shrio中,AuthenticationToken用于存储前端传来的登录信息,通俗来说就是用户名及密码等。而在这之中比较常用的就是UsernamePasswordToken。为了了解shrio的验证过程有必要先了解与验证相关的主要的几个类。首先看下shrio对UsernamePasswordToken的描述:/** * <p>A simple username/passwo...原创 2019-03-27 09:53:46 · 30414 阅读 · 2 评论 -
Shiro学习笔记(三)权限验证的两种方式
一般来说,项目中能用两种方式进行权限验证:手动调用shrio提供的login方法并捕捉异常或者由shrio自己验证并返回验证的异常信息。网上对于shrio的验证流程已经有很多这里不再具体说明。手动调用shrio提供的login方法 @RequestMapping("/login") public String login(HttpServletRequest request...原创 2019-03-27 11:53:56 · 839 阅读 · 0 评论 -
使用HttpURLConnection传递文件及参数
这几天在研发公司自用的excel校验工具,需要将后台存储的excel通过http传递到excel校验服务端同时传递相关的参数,查询网上的解决方案并没有适合的,这里结合网上提供的解决方案给出我自己的解决办法:Http传输工具类方法: /** * 文件上传 * @param httpUrl 文件上传的url * @param uploadFilePath ...原创 2019-05-24 14:27:29 · 5046 阅读 · 0 评论 -
poi 解决读取整数会转为double问题
poi默认读取数值时会将其转为double,但有些时候这样做会带来数据的不准确,比如Excel里是1而读取出来的数值时1.0,因此我们需要将真正的数值获取到。这里可以先检测当前cell格式,若为数值则将单元格强制转为string类型再获取stringValue,如此可获取真实的数值,代码如下: //校验数值型单元格 private static String validateC...原创 2019-06-20 15:01:32 · 5081 阅读 · 0 评论 -
Java 基于volatile关键字修饰的变量在并发中不一致性的问题
这几天在复习多线程及高并发的相关知识。volatile关键字一般认为是一种较轻量级的多线程并发解决方案。确实,使用volatile关键字所修饰的变量能够保证变量值一旦更新则所有线程都能够看到最新的值,但这并不意味着使用volatile关键字修饰的变量在做运算操作时能够保证数据的一致性,因为Java的运算操作并非为原子操作。下面我们举个例子:public class test { pub...原创 2019-07-12 15:47:52 · 2564 阅读 · 0 评论 -
ExecutorService的invokeAll方法详解
平时工作中因为用到ExecutorService的频率略多,而在这之中invokeAll方法又是常用方法,因此这里详细解读下invokeAll方法。首先贴上源代码:public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) ...原创 2018-11-09 16:06:27 · 15405 阅读 · 0 评论 -
Shiro学习笔记(一)ThreadContext源码解析
最近有空,看了下shiro源码,这里写下来用以加深记忆。本篇记录下ThreadContext类的源码解析。本篇用到的ThreadLocal及ThreadLocalMap的相关知识戳这里。首先看下ThreadContext类的说明:/** * A ThreadContext provides a means of binding and unbinding objects to th...原创 2018-10-25 15:50:01 · 11546 阅读 · 5 评论 -
HashSet add()方法源码详解
HashSet实现了set接口,也是日常开发中比较常用的类,今天通过对HashSet add()方法源码的分析进一步加深对HashSet的理解。首先先看下HashSet的构造函数,代码如下: /** * Constructs a new, empty set; the backing <tt>HashMap</tt> instance has * d...原创 2018-03-20 15:34:57 · 2302 阅读 · 0 评论 -
关于Java类初始化的一些特性
在 Java中,虚拟机对于类的加载时机并未严格的约束而是根据各虚拟机的特性自行决定,但是对于初始化来说,存在几种情况使得类必须立即执行初始化操作: 1)当使用new,putstatic,getstatic,invokestatic这4条指令时,若该类未被初始化则需立即对该类进行初始化。 2)对类进行反射调用时,若该类未被初始化则需立即对该类进行初始化。 3)初始化一个类时,若该类...原创 2018-05-18 16:19:53 · 122 阅读 · 0 评论 -
bootstrap-datetimepicker日期选择框左右箭头不显示解决办法
今天碰到一个问题,正常引入bootstrap-datetimepicker相关css及js之后日期选择框的左右箭头图片显示不出来,不同于网上的直接图表部分为空白,而是找不到图片的样子,问题截图如下:如果只是显示为白色则在input的class里加上form-control应该就可以了但是这种情况不行,F12之后查看浏览器控制台发现几个404,如下图:问题找到,就是在项目static/fonts下缺...原创 2018-05-08 14:22:37 · 7150 阅读 · 1 评论 -
[翻译]方法重载在JVM中的实现原理(Method overloading in the JVM)
原文链接:https://www.javaworld.com/article/3268983/learn-java/java-challengers-1-method-overloading-in-the-jvm.html什么是方法重载?方法重载是一种允许开发者在同一个类中多次使用拥有不同参数及相同方法名方法的一种编程技巧。在这种情况下,我们称之为方法被重载。下面的示例显示了拥有不同参数(不同之处...翻译 2018-06-06 15:02:28 · 215 阅读 · 0 评论 -
[翻译]在字符串常量池中字符串方法,关键字以及运算符如何处理字符串比较 (How String methods, keywords, and operators process comparison)
原文链接:https://www.javaworld.com/article/3276354/java-language/java-challengers-2-string-comparisons.html在Java中,String类封装一个char数组。简单来说,String 是一个char数组用于组合文字,语句或者任何你想要的数据。封装是面向对象编程最强大的概念之一。因为封装,你不用了解Str...翻译 2018-06-01 14:30:45 · 171 阅读 · 0 评论 -
[翻译]不可变空集合与迭代器(Immutable empty collections and iterators)
原文链接:https://www.javaworld.com/article/3103442/learn-java/immutable-empty-collections-and-iterators.html你是否曾经有过这样的疑问:为什么 java.util.Collections 类会包含各类"empty"的类方法并且这些方法会返回不可变空集合以及不可变空迭代器?这篇文章将会揭示答案。 ...翻译 2018-06-20 14:05:17 · 259 阅读 · 0 评论 -
使用ExecutorService接口及Executors工具类实现多线程操作
今天项目上碰到一个问题,需要调取第三方的数据来处理一些业务需求。因为一次性调用数据返回的json格式的结果无论是响应速度还是解析效率上都是十分低下,为了优化这个功能,于是想到了通过ExecutorService接口及Executors工具类来实现多线程的处理数据。这里分享下本次优化的内容同时也复习下这几个相关的知识点。Executor工具类在说ExecutorService前必须先了解下E...原创 2018-09-06 21:05:39 · 1532 阅读 · 0 评论 -
ThreadLocal内存泄漏基于源码的个人理解
前段时间在网上看到一篇关于ThreadLocal内存泄漏的文章,觉得很有趣,因此最近抽空看了下ThreadLocal的源码,在这里记录下自己对于ThreadLocal内存泄漏的个人理解。ThreadLocal的定义和作用这里不写了,网上有很多,这里直奔主题,首先看下ThreadLocal几个比较核心的方法。GET方法 /** * Returns the value i...原创 2018-10-18 17:24:42 · 835 阅读 · 0 评论 -
Java查看class文件字节码
现在对Java的class文件反编译工具功能已十分强大,强大的反编译工具使得我们能够轻松的查看class文件对应的Java代码,但是有时候我们为了学习及研究,需要查看class文件对应的字节码,这里提供一个简单的指令来查看:假设我们现在需要查看single.java的字节码:在路径栏其输入cmd并按回车打开指令框:首先我们需要生成class文件:javac Single.jav...原创 2019-07-12 15:56:49 · 317 阅读 · 0 评论