
java基础
文章平均质量分 61
xisuo002
这个作者很懒,什么都没留下…
展开
-
spring boot 中热编译的常用方式
平时开发Sprig Boot的时候,经常改动个小小的地方就要重新启动项目,这无疑是一种很差的体验。在此,博主收集了3种热部署的方案供大家选择。正文目前博主用过的有三种:Spring Loaded spring-boot-devtools JRebel插件博主开发环境系统:win10 开发工具:IDE:IntelliJ IDEA 2017.1 spring-boot版本:1...转载 2019-10-29 19:05:01 · 1000 阅读 · 0 评论 -
JAVA 将图片转换成pdf文件
/*** 将图片转换成pdf文件*imgFilePath 需要被转换的img所存放的位置。 例如imgFilePath="D:\\projectPath\\55555.jpg";*pdfFilePath 转换后的pdf所存放的位置 例如pdfFilePath="D:\\projectPath\\test.pdf";* @param image* @return* @thro转载 2018-01-09 21:09:30 · 21462 阅读 · 7 评论 -
从输入url到页面展示的过程
原文地址:http://www.cnblogs.com/xianyulaodi/p/6547807.html 刚开始写这篇文章还是挺纠结的,因为网上搜索“从输入url到页面展示到底发生了什么”,你可以搜到一大堆的资料。而且面试这道题基本是必考题,二月份面试的时候,虽然知道这个过程发生了什么,不过当面试官一步步追问下去的,很多细节就不太清楚了。 最近刚好也在看http协转载 2018-01-25 15:41:54 · 296 阅读 · 0 评论 -
http请求从浏览器到服务器过程
前些天刚看完《How Tomcat Works》,虽然书比较老,但是看完后收获还是挺多的,懂得了tomcat的内部结构和一个请求进出tomcat的全过程。前些天看的为什么现在提呢,因为做到了面试题呀,发现自己原本很清晰的思路突然模糊了,所以花点时间总结一下。题目是说一说在浏览器中输入一个url后,直到浏览器显示页面的过程中发生了什么? 如果我说的话,会分四步: 1.通过访问的域名找转载 2018-01-25 14:37:07 · 11544 阅读 · 0 评论 -
ngrok反向代理使用
近期由于需要对自己写的一些代码进行调试,因为是前后端分开开发的,前段调试的时候需要访问部分资源,但是由于处于开发阶段没有真正上传到服务器,但是又要进行调试,很矛盾,就在网上看到ngrok反向代理,让外网也能访问本机的资源来进行调试。1.下载ngrok ngrok下载地址:http://ngrok.ciqiuwl.cn/可以在网上根据自己需要的版本进行下载,linux或者windows的原创 2018-01-23 14:50:17 · 3313 阅读 · 0 评论 -
pdf 内容设置详解
import java.awt.Color;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import com.lowagie.text.Cell;import com.lowagie.text.Chapter;import com.lowagie.text.Document转载 2018-01-11 11:31:58 · 1155 阅读 · 0 评论 -
java poi 通过excel模板导出并且生成多个sheet
下面写一下,关于通过excel模板生成之后,生成多个sheet;代码如下:(只写关键代码)FileOutputStream fileOut = new FileOutputStream("D:\\excel.xls");HSSFWorkbook workbook = null;InputStream fis = new FileInputStream(filePath);转载 2017-12-26 09:38:11 · 1235 阅读 · 0 评论 -
FileInputStream 与 BufferedInputStream 的区别和效率对比
BufferedInputStream是套在某个其他的InputStream外,起着缓存的功能,用来改善里面那个InputStream的性能(如果可能的话),它自己不能脱离里面那个单独存在。FileInputStream是读取一个文件来作InputStream。所以你可以把BufferedInputStream套在FileInputStream外,来改善FileInputStream的性能。转载 2017-12-07 16:13:02 · 2488 阅读 · 0 评论 -
java文件读写耗时比较
public class ImageSaveServiceImpl implements ImageSaveService { /** * 图片读取(一次性读取) * @param imgPath * @return */ @Override public String saveImage(String imgPath) {原创 2017-12-07 16:10:44 · 3220 阅读 · 0 评论 -
java实现img与pdf相互转换
import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; imp转载 2018-01-09 21:26:59 · 1811 阅读 · 0 评论 -
Java中操作pdf模板生成pdf
【java】 iText使用PDF模板生成输出PDF项目需求涉及到操作pdf模板,根据生成好的模板向里面填充数据 用到的jar包是iText-5.0.6.jar 和iTextAsian.jarpdf模板效果如下:import java.io.ByteArrayOutputStream; import java.io.FileOutpu转载 2018-01-09 21:34:28 · 1352 阅读 · 0 评论 -
java8 optional
从 Java 8 引入的一个很有趣的特性是Optional 类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异常。本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。Optional 是 Java 实现函数式编程的强劲一步,并且帮助在范式中实现。但...转载 2019-07-25 13:31:29 · 210 阅读 · 0 评论 -
java8中Stream的学习
直接上代码public class TestStream { public static void main(String[] args) { TestStream test = new TestStream(); //test.test0(); //test.test1(); //test.test2(); ...原创 2019-07-19 16:47:46 · 334 阅读 · 0 评论 -
java中参数校验
1.常见的验证的方式前端的校验是必须的,这个很简单,因为客户体验。后台的校验更是必须的,关键在于如何与目前我们的分层思想(控制层、业务层、持久层)综合起来考虑。在每层都要进行校验吗?还是只在是某个特定层做就可以了?是否有好的校验框架(如前端的jquery校验框架、springmvc校验框架)?总之校验框架还是有很多的,原理不就是对后端接收的数据进行特定规则的判断,那我们怎么制定规则,有怎么去检...转载 2019-07-18 17:28:32 · 1161 阅读 · 0 评论 -
idea 创建web项目
说明:IntelliJ IDEA 版本为17.JDK 版本为1.8tomcat 版本为apache-tomcat-8.5.29注:在创建过程中注意相关软件版本位数的问题。32位,64位的软件混搭会导致访问不成功的问题!!!首先要理解一个基本问题:对比eclipse ,在IntelliJ IDEA中“new Project”相当于eclipse中的工作空间(Workspace)...转载 2018-12-29 11:10:51 · 195 阅读 · 0 评论 -
java并发编程之Executor框架
Eexecutor作为灵活且强大的异步执行框架,其支持多种不同类型的任务执行策略,提供了一种标准的方法将任务的提交过程和执行过程解耦开发,基于生产者-消费者模式,其提交任务的线程相当于生产者,执行任务的线程相当于消费者,并用Runnable来表示任务,Executor的实现还提供了对生命周期的支持,以及统计信息收集,应用程序管理机制和性能监视等机制。 1.Exexctor简介Execu...转载 2018-07-19 16:50:35 · 295 阅读 · 0 评论 -
Java过滤器与SpringMVC拦截器之间的关系与区别
过滤器和拦截器的区别: ①拦截器是基于java的反射机制的,而过滤器是基于函数回调。 ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。 ③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。 ④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。 ⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一转载 2018-01-19 15:58:30 · 198 阅读 · 0 评论 -
优化MySQL数据库性能的一些基本技巧
优化技巧 #1:学习如何使用 EXPLAIN使用任何数据库所做的两个最重要的决定是设计应用程序实体之间的关系如何映射到表(数据库模式),以及设计应用程序如何以所需的格式获得所需的数据(查询)。复杂的应用程序可以有复杂的模式和查询。如果想得到应用程序所需要的性能和扩展性,不能仅仅依靠直觉来理解如何执行查询。应该学习如何使用EXPLAIN命令,而不是随意的猜测和想象。此命令展示了如何执行查询,并让您了转载 2018-01-19 11:46:24 · 304 阅读 · 0 评论 -
多张图片合成PDF
一: 把图片路径存到一个list . List list = new List(); list.Add("d:\\6.png"); list.Add("d:\\8.png"); list.Add("d:\\7.png"); list.Add("d:\\1.png"); string dateTim转载 2018-01-09 21:45:58 · 2682 阅读 · 0 评论 -
自定义MyBatis Generator Plugin
现在可以自定来定义一个MyBatis Generator Plugin了,我们从什么功能下手呢?在我们平时基于MySQL的数据库对应的mapper.xml映射文件中,在insert元素上,我们往往会定义keyColumn="id" keyProperty="id" useGeneratedKeys="true"这三个参数,在MBG中,这是可以配置的,就是在每一个table元素中使用来生成。但转载 2017-12-15 17:14:18 · 868 阅读 · 0 评论 -
SpringBoot+Redis+Nginx实现负载均衡以及Session缓存共享
1.环境信息nginx-1.11.10redis-latest包(redis windows版本)springboot1.5.1.RELEASE2.新建一个SpringBoot项目,参考如下链接:https://segmentfault.com/a/11...3.nginx和redis解压缩即可,并正常启动4.springboot集成Redis以及spr转载 2017-12-06 22:11:05 · 5710 阅读 · 0 评论 -
mybatis 联合查询
mybatis 是通过什么来实现多表联合查询的。首先看一下表关系,如图:这里,我已经搭好了开发的环境,用到的是 SpringMVC + Spring + MyBatis,当然,为了简单期间,你可以不用搭前端的框架,只使用 Spring + MyBatis 就可以,外加 junit 测试即可。环境我就不带大家搭了,这里只说涉及到联合查询的操作。设计好表之后转载 2017-11-19 11:17:39 · 339 阅读 · 0 评论 -
mybatis 联合查询2
在这篇文章里面主要讲解如何在mybatis里面使用一对一、一对多、多表联合查询(类似视图)操作的例子。 注:阅读本文前请先大概看一下之前两篇文章。 一、表结构 班级表class,学生表student,班级学生关系表ClassStudent。 这里一个学生只会在一个班级里面,也就是一对一的关系;一个班级有多个学生,也就是一对多的关系。 结构如下:CREATE转载 2017-11-19 11:53:17 · 205 阅读 · 0 评论 -
ConcurrentHashMap原理分析
集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理上细致的了解它们,能够让我们在深度项目开发中获益非浅转载 2017-08-07 11:12:42 · 199 阅读 · 0 评论 -
中间带环的单向循环链表
中间带环的单向链表 判断链表有没有环和环的大小以及切入点和链的长度原创 2017-05-08 20:38:44 · 308 阅读 · 0 评论 -
linux常用命令
常用指令ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all)mkdir 创建目录 -p 创建目录,若无父目录,则创建p(parent)cd 切换目录touch原创 2017-08-04 11:07:40 · 151 阅读 · 0 评论 -
浅析JVM内存模型
在计算机中,最重要的部件莫过于CPU,和CPU联系最紧密的要属内存了,他们之间的交互时非常频繁的,然而,由于CPU的读写速度远远把内存的读写速度甩在身后,这样机会使得计算机整体的性能下降。未解决此问题,CPU厂商在每颗CPU上加入了高速缓存,用来缓解这种症状,就像是接力跑一样,cpu提前替内存跑了一段距离一样的道理。所以,cpu上都有包含了一部分叫高速缓存区的区域。但是,随着计算机的发展,由于翻译 2017-08-03 10:33:17 · 201 阅读 · 0 评论 -
多线程的优缺点
何时使用多线程技术,何时避免用它,是我们需要掌握的重要课题。多线程技术是一把双刃剑,在使用时需要充分考虑它的优缺点。多线程处理可以同时运行多个线程。由于多线程应用程序将程序划分成多个独立的任务,因此可以在以下方面显著提高性能: (1)多线程技术使程序的响应速度更快 ,因为用户界面可以在进行其它工作的同时一直处于活动状态;(2)当前没有进行处理的任务时可以将处理器时间让给其它任务;(转载 2017-08-03 10:56:02 · 237 阅读 · 0 评论 -
缓存穿透与缓存雪崩
缓存穿透什么是缓存穿透?一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB)。如果key对应的value是一定不存在的,并且对该key并发请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。转载 2017-08-03 09:15:00 · 208 阅读 · 0 评论 -
mybatis 中 or 的使用
NoticeCoreExample noticeCoreExample = new NoticeCoreExample();NoticeCoreExample.Criteria criteria = noticeCoreExample.createCriteria();NoticeCoreExample.Criteria criteriaMemberName = noticeCoreExamp原创 2017-12-11 19:45:10 · 13822 阅读 · 0 评论 -
MyBatis的Mapper接口以及Example的实例函数及详解
一、mapper接口中的方法解析mapper接口中的函数及方法方法功能说明int countByExample(UserExample example) thorws SQLException按条件计数int deleteByPrimaryKey(Integer id) thorws SQLException按主键删除in转载 2017-12-04 10:34:19 · 246 阅读 · 0 评论 -
spring boot:使用fastJson解析json数据
如果我们想在spring boot中使用第三方的json解析框架:1)我们需要在pom.xml文件中引入第三方包的依赖;2)实现方法:方法1 需要在启动类中继承WebMvcConfigurerAdapter 类,并重写该类的configureMessageConverters方法。方法2. 我们直接使用@Bean注入第三方的 解析框架。 1、引入fastJson的依赖库转载 2017-12-15 16:09:33 · 340 阅读 · 0 评论 -
Spring高级话题-@Enable***注解的工作原理
@EnableAspectJAutoProxy@EnableAspectJAutoProxy注解 激活Aspect自动代理 aop:aspectj-autoproxy/>开启对AspectJ自动代理的支持。在用到AOP的自动代理的时候用,如果你理解了Java的动态代理,很容易的就会熟悉AOP的自动代理的。@EnableAsync@EnableAsync注解开启异步方法的支持转载 2017-12-15 14:20:44 · 284 阅读 · 0 评论 -
java自定义注解
java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在 java.lang.annotation 包中。1、元注解元注解是指注解的注解。包括 @Retention @Target @Document @Inherited四种。1.1、@Retention: 定义注解转载 2017-12-15 13:54:10 · 244 阅读 · 0 评论 -
spring boot 定时器的使用例子
spring boot 中使用的时候不像spring中使用的时候还需要配置,直接拿来就可以用上栗子@Componentpublic class MeetingTask { Logger logger = LoggerFactory.getLogger( MeetingTask.class ); @Resource private Mapper1原创 2017-12-15 12:38:45 · 542 阅读 · 0 评论 -
枚举在java项目中的应用
近期做项目要用到枚举,所以研究了一下,以前都是用接口来定义一些值来作为常量用后来让用枚举,其实枚举真的比接口那样写好很多以前接口的写法public interface Status { // 未认证 Short NOT_AUTH = 1; // 已认证 Short HAS_AUTH = 2;}用的时候直接 Status.NOT_AUTH原创 2017-12-15 11:41:48 · 755 阅读 · 0 评论 -
Mybatis generator 自动生成代码时 ,insert返回主键值
mvn mybatis-generator:generate如果要让generator自动添加该功能,可以如下配置: enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false转载 2017-12-06 10:00:42 · 10973 阅读 · 0 评论 -
CollectionUtils工具类的使用
CollectionUtils在真实项目中,是一个非常好用的工具类,使用非常频繁。它可以使代码更加简洁和安全。刚好在工作中利用这个工具类重构代码,顺便总结下分享分享:并集@Testpublic void testUnion(){ String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" }; Strin转载 2017-12-14 14:26:21 · 677 阅读 · 0 评论 -
Java 实现系统权限控制思路
首先介绍下思路:1、用户表 user;2、角色表 role;3、菜单 menu;4、角色菜单权限表 role_menu;5、用户菜单权限表 user_menu;如图:根据用户角色取出该角色所有权限,并对用户进行权限分配;注意菜单的按钮(新增、删除、修改)权限是放在中间表(user_menu)中的;1、新增用户时,是要根据用户角色进行分配权转载 2017-12-04 13:44:30 · 1688 阅读 · 0 评论 -
一个简单的贪吃蛇
这是一个可以吃东西的简单的贪吃蛇,有兴趣的朋友可以看一下。翻译 2017-04-18 22:17:19 · 227 阅读 · 0 评论