<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[eric_aprilwang的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/eric_aprilwang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; eric_aprilwang]]></copyright><item><title><![CDATA[详细记录Word文档(包含doc文件和docx文件的上传图片会回显)转Html实现前端预览]]></title><link>https://blog.youkuaiyun.com/eric_aprilwang/article/details/121579538</link><guid>https://blog.youkuaiyun.com/eric_aprilwang/article/details/121579538</guid><author>eric_aprilwang</author><pubDate>Sat, 27 Nov 2021 17:26:05 +0800</pubDate><description><![CDATA[实现了两种格式Word文档转Html的需求
优点：可以实现多图的doc文档和docx文档转HTML代码，图片也会完美展示，图片不需要保存到本地服务器，直接上传到文件服务器即可，文档格式也会保留
缺点：文档的页边距格式也会保留，由于html代码比较复杂，如果需要去除页边距格式建议是前端进行处理
controller层
    @PostMapping("/uploadAndConvert")
    public ApiResult&lt;DocVO&gt; uploadAndConvert(@Request]]></description><category></category></item><item><title><![CDATA[Java提供了哪些IO方式？ NIO如何实现多路复用？]]></title><link>https://blog.youkuaiyun.com/eric_aprilwang/article/details/107675567</link><guid>https://blog.youkuaiyun.com/eric_aprilwang/article/details/107675567</guid><author>eric_aprilwang</author><pubDate>Wed, 29 Jul 2020 21:19:56 +0800</pubDate><description><![CDATA[Java IO 方式有很多种，基于不同的 IO 抽象模型和交互方式，可以进行简单区分。
首先，传统的 java.io 包，它基于流模型实现，提供了我们最熟知的一些 IO 功能，比如 File 抽象、输入输出流等。交互方式是同步、阻塞的方式，也就是说，在读取输入流或者写入输出流时，在读、写动作完成之前，线程会一直阻塞在那里，它们之间的调用是可靠的线性顺序。
java.io 包的好处是代码比较简单、直观，缺点则是 IO 效率和扩展性存在局限性，容易成为应用性能的瓶颈。
很多时候，人们也把 java.net 下面]]></description><category></category></item><item><title><![CDATA[Synchronized与ReentrantLock（重入锁）的区别]]></title><link>https://blog.youkuaiyun.com/eric_aprilwang/article/details/107675449</link><guid>https://blog.youkuaiyun.com/eric_aprilwang/article/details/107675449</guid><author>eric_aprilwang</author><pubDate>Wed, 29 Jul 2020 21:14:30 +0800</pubDate><description><![CDATA[这两种方式最大区别就是对于Synchronized来说，它是java语言的关键字，是原生语法层面的互斥，需要jvm实现。而ReentrantLock它是JDK 1.5之后提供的API层面的互斥锁，需要lock()和unlock()方法配合try/finally语句块来完成。
很明显Synchronized的使用比较方便简洁，并且由编译器去保证锁的加锁和释放，而ReenTrantLock需要手工声明来加锁和释放锁。
synchronized 竞争锁时会一直等待；ReentrantLock 可以尝试获取锁，并得]]></description><category></category></item><item><title><![CDATA[乐观锁和悲观锁]]></title><link>https://blog.youkuaiyun.com/eric_aprilwang/article/details/107675313</link><guid>https://blog.youkuaiyun.com/eric_aprilwang/article/details/107675313</guid><author>eric_aprilwang</author><pubDate>Wed, 29 Jul 2020 21:10:49 +0800</pubDate><description><![CDATA[乐观锁和悲观锁是一种程序设计思想，而不是具体的代码。乐观锁和悲观锁应用的场景有很多，在数据库和多线程等等都会用到。
悲观锁
总是假设最坏的情况，每次去拿数据的时候都认为别人会修改，所以每次在拿数据的时候都会上锁，这样别人想拿这个数据就会阻塞直到它拿到锁（共享资源每次只给一个线程使用，其它线程阻塞，用完后再把资源转让给其它线程）。传统的关系型数据库里边就用到了很多这种锁机制，比如行锁，表锁等，读锁，写锁等，都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观锁]]></description><category></category></item><item><title><![CDATA[被面试官虐到体无完肤的mysql索引]]></title><link>https://blog.youkuaiyun.com/eric_aprilwang/article/details/107650678</link><guid>https://blog.youkuaiyun.com/eric_aprilwang/article/details/107650678</guid><author>eric_aprilwang</author><pubDate>Wed, 29 Jul 2020 00:58:36 +0800</pubDate><description><![CDATA[之前有过一次面试，关于MySQL索引的原理及使用被面试官怼的体无完肤，立志要总结一番，然后一直没有时间（其实是懒……），准备好了吗？
索引是什么？
数据库索引，是数据库管理系统(DBMS)中一个排序的数据结构，它可以对数据库表中一列或多列的值进行排序，以协助更加快速的访问数据库表中特定的数据。通俗的说，我们可以把数据库索引比做是一本书前面的目录，它能加快数据库的查询速度。
为什么需要索引？
思考：如何在一个图书馆中找到一本书？设想一下，假如在图书馆中没有其他辅助手段，只能一条道走到黑，一本书一本书的找，经过]]></description><category></category></item><item><title><![CDATA[百度面试题（部分）]]></title><link>https://blog.youkuaiyun.com/eric_aprilwang/article/details/107650282</link><guid>https://blog.youkuaiyun.com/eric_aprilwang/article/details/107650282</guid><author>eric_aprilwang</author><pubDate>Wed, 29 Jul 2020 00:37:05 +0800</pubDate><description><![CDATA[1、自我介绍以及未来规划
2、平时写过什么程序吗？3、JDK和JRE区别？
4、final关键字，抽象类可以使用final修饰吗?
5、JAVA容器
6、JAVA怎么保证线程安全？锁在项目中具体怎么使用？
7、JAVA怎么避免死锁？
8、ThreadLocal具体怎么使用？使用在什么场景？
9、了解反射吗？怎么用？用在哪里？
10、动态代理为什么使用反射而不使用继承？
11、设计模式中简单工厂和抽象工厂的区别？
12、异常类型，常见的异常？
13、HTTP状态码？3XX和4XX区别，404是啥？
14、数据]]></description><category></category></item></channel></rss>