<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Xu_JL1997的博客]]></title><description><![CDATA[温故而知新，可以为师矣。]]></description><link>https://blog.youkuaiyun.com/Xu_JL1997</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Xu_JL1997]]></copyright><item><title><![CDATA[StarUML 导出图片显示未注册]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/106137387</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/106137387</guid><author>Xu_JL1997</author><pubDate>Fri, 15 May 2020 11:18:30 +0800</pubDate><description><![CDATA[看到一个方法非常不错，特意记录一下，转载自 简书 ，侵权删。

第一步，官网安装 StarUML（已经安装的跳过）
第二步，安装 Node.js（已经安装的跳过）
第三步，安装 asar
StarUML 是用 asar 打包的，一行命令简单安装：
sudo npm install -g asar

第四步，解压 app.asar
先找到这个压缩包，应用程序 -&gt; StarUML -&gt; 显示包内容 -&gt; Content -&gt; Resources -&gt; app.asar
将 app]]></description><category></category></item><item><title><![CDATA[Nginx 部署 Vue 项目报 500 错误]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/105751623</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/105751623</guid><author>Xu_JL1997</author><pubDate>Sat, 25 Apr 2020 16:27:38 +0800</pubDate><description><![CDATA[今天在阿里云的 Ubuntu 上部署一个 Vue 项目，使用 Nginx 做代理，端口能正常访问，但 Nginx 一直响应是 500。
后来发现是 Nginx 访问不了 dist 文件夹，权限的问题，因为我把 dist 放在了 /root 目录下面。将 dist 放在 /var 目录下，问题就解决了。
下面是我的 Nginx 配置文件/etc/nginx/sites-enable/default：...]]></description><category></category></item><item><title><![CDATA[集成 ijkplayer 时执行脚本 init-**.sh 慢]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/104376417</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/104376417</guid><author>Xu_JL1997</author><pubDate>Tue, 18 Feb 2020 16:30:35 +0800</pubDate><description><![CDATA[ijkplayer是B站开源的一款视频播放器，功能十分强大，特别适合直播平台。安装也很简单，按照 GitHub 的 README 文件指示执行几个脚本即可。
比如IOS集成（Android也是类似的）：
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git che...]]></description><category></category></item><item><title><![CDATA[Swift 4 最新版“沉浸式”效果，导航栏下滑改变透明度]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/104175636</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/104175636</guid><author>Xu_JL1997</author><pubDate>Tue, 04 Feb 2020 22:05:33 +0800</pubDate><description><![CDATA[代码地址：GitHub 仓库 - HideNavigationbarDemo

以前的沉浸式做法有很多，比如拿到 navigationBar 的 backgroundImage 修改透明度，或者往 navigationBar 的view层加一个占位的视图，修改这个占位视图的透明度在视觉上形成直接修改navigationBar 的效果。
上面的做法我都试过，也许是版本过时了。第一种 navigati...]]></description><category></category></item><item><title><![CDATA[Swift 4 UINavigationController导航栏添加按钮UIBarButtonItem无效]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/103987723</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/103987723</guid><author>Xu_JL1997</author><pubDate>Wed, 15 Jan 2020 13:59:00 +0800</pubDate><description><![CDATA[设置UINavigationController的rootViewController属性后，root页面的上方会自动补充一个导航栏（实际上是Navigation Item），如下：

如果是使用StoryBoard，我们可以直接拖拽UIBarButtonItem加入按钮。
如果我们使用的是代码控制页面跳转，怎么在跳转后的页面上添加UIBarButtonItem呢？可以如下面这样写：
/// My...]]></description><category></category></item><item><title><![CDATA[Swift 5 一款简单、灵活的下拉框（文本输入下拉框）]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/103951298</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/103951298</guid><author>Xu_JL1997</author><pubDate>Mon, 13 Jan 2020 00:01:12 +0800</pubDate><description><![CDATA[代码地址：
github.com/XuJiaLe1997/DropBoxDemo
I 思路
以TableView为基础，提供一个可以灵活地实现文本输入选择、菜单选择的下拉框。

    
    

第一张效果图展示了从StoryBoard直接拖拽TextField、通过代码添加TextField和结合菜单键实现菜单的三种效果。
第二张效果图来源于我们开源的一个课程作业项目，我们应用下拉框来实现账...]]></description><category></category></item><item><title><![CDATA[JPA 中 @JoinColumn 的 name 和 referencedColumnName 属性怎么辨别]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/103018249</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/103018249</guid><author>Xu_JL1997</author><pubDate>Mon, 11 Nov 2019 21:55:03 +0800</pubDate><description><![CDATA[一、@JoinColumn
@JoinColumn 的作用就是声明关联关系的，什么是关联关系？
就是我们在数据库设计时常说的一对多、多对一、多对多关系。因此，@JoinColumn 必须和这些关系注解一起使用，否则是没有意义的。
二、name 和 referencedColumnName
刚开始接触这两个属性会觉得很难理解，特别是看书的时候总是分不清，比如 User 表关联 Address 表：
...]]></description><category></category></item><item><title><![CDATA[ORA-12154: TNS: 无法解析指定的连接标识符]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/100735810</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/100735810</guid><author>Xu_JL1997</author><pubDate>Wed, 11 Sep 2019 15:02:23 +0800</pubDate><description><![CDATA[原文链接：(博客园) ORA-12154: TNS: 无法解析指定的连接标识符
安装 Oracle 时帮助很大，特意转载过来。如有侵权，请留言联系我删除。

相信使用过Oracle数据库的人一定碰到过“ORA-12154: TNS: 无法解析指定的连接标识符”错误，我在此做一个小小的总结。（转者：我是在安装PL/SQL Developer时遇到的）
一、一般情况，需要配置client网络服务
在程...]]></description><category></category></item><item><title><![CDATA[IDEA +Tomcat + maven 搭建 Dubbo REST 项目]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/99652315</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/99652315</guid><author>Xu_JL1997</author><pubDate>Fri, 16 Aug 2019 14:05:57 +0800</pubDate><description><![CDATA[本文主要介绍在 IDEA 环境下开发 Dubbo 的 REST 风格项目，并结合 IDEA 部署到外部 Tomcat 上，文章提供了具体的 Github 项目供读者使用。]]></description><category></category></item><item><title><![CDATA[Wineskin不能打开添加的程序？macOS版本太高？]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/98679225</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/98679225</guid><author>Xu_JL1997</author><pubDate>Wed, 07 Aug 2019 19:54:42 +0800</pubDate><description><![CDATA[如果想要在 macOS 上运行 Windows 下的程序，除了双系统/虚拟机，估计就只剩下 wine 了，Wineskin/Crossover 其实都是 wine 的一套工具。Wineskin 是免费的，Crossover 永久许可也就 100 多，界面好看点，稳定。（吐槽 Wineskin即使装上了，能不能跑起来也是看天意了）。下面进入正题。

按照教程装好 wineskin 后，无论怎么点击添...]]></description><category></category></item><item><title><![CDATA[Spring 与 Mybatis 中的 @Repository 与 @Mapper]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/90934359</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/90934359</guid><author>Xu_JL1997</author><pubDate>Wed, 05 Jun 2019 20:22:27 +0800</pubDate><description><![CDATA[使用注解的方式开发Dao层的时候，常常会混淆这两个注解，不知道怎么添加，这里做个记录。

1 - @Mapper
@Mapper 是 Mybatis 的注解，和 Spring 没有关系，@Repository 是 Spring 的注解，用于声明一个 Bean。（重要）
使用 Mybatis 有 XML 文件或者注解的两种使用方式，如果是使用 XML 文件的方式，我们需要在配置文件中指定 XML 的...]]></description><category></category></item><item><title><![CDATA[解决报错dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/90580397</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/90580397</guid><author>Xu_JL1997</author><pubDate>Sun, 26 May 2019 20:50:33 +0800</pubDate><description><![CDATA[在调用npm的时候报错。

简单来说就是链接失效了，其实就是版本的问题。
我的 node 很久没有更新了，以前安装的时候 node 依赖的是62版的 icu4c，但是 homebrew不知道什么时候更新了 icu4c，比如我就是更新到了64版的，这样之前安装的 node 依赖62版的 icu4c 被覆盖了，找不到了，自然就报我们没有 “Library not loaded” 的错误。
解决的办法很...]]></description><category></category></item><item><title><![CDATA[后台开发如何区分Http请求的用户，记录登录状态]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/84105215</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/84105215</guid><author>Xu_JL1997</author><pubDate>Sat, 18 May 2019 21:36:48 +0800</pubDate><description><![CDATA[写在前面：本文主要讲解两种后台开发如何区分Http请求用户的方式，附加部分Java后端代码的实现。如果同学们使用其他语言编写后端，可以阅读完文章后Google其他语言的代码实现，思路大体上是一样的。

（一）引言
1. 为什么需要区分Http请求的用户？
Http是一种无状态的协议，也就是说Http并没有记录连接状态的功能。没有状态的情况下意味着服务器不能确认这一次请求和下一次请求是否来源于同一个...]]></description><category></category></item><item><title><![CDATA[分布式事务实战：分布式环境下的最终一致性与消息事务]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/90239103</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/90239103</guid><author>Xu_JL1997</author><pubDate>Wed, 15 May 2019 21:13:30 +0800</pubDate><description><![CDATA[摘要：CAP 理论中的强一致性与可用性的告诉我们两者不可兼得，并由此催生出了 BASE 理论，将强一致性和可用性弱化为最终一致性和基本可用性。本文主要叙述笔者对最终一致性实现的理解，希望对大家有帮助。

1 - 分布式事务
在单机应用上，我们使用事务是很方便的，因为所有的业务逻辑都在本地，数据库事务就能解决 ACID 问题，特别是使用一些J2EE的框架，每一层的业务逻辑都给我们安排得妥妥当当的。
...]]></description><category></category></item><item><title><![CDATA[LeetCode 911. 在线选举题目样例图解]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/89855093</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/89855093</guid><author>Xu_JL1997</author><pubDate>Sun, 05 May 2019 20:55:42 +0800</pubDate><description><![CDATA[在选举中，第 i 张票是在时间为 times[i] 时投给 persons[i] 的。现在，我们想要实现下面的查询函数： TopVotedCandidate.q(int t) 将返回在 t 时刻主导选举的候选人的编号。在 t 时刻投出的选票也将被计入我们的查询之中。在平局的情况下，最近获得投票的候选人将会获胜。
示例：

输入：[“TopVotedCandidate”,“q”,“q”,“q”,“q...]]></description><category></category></item><item><title><![CDATA[从源码理解 Spring 如何管理数据库连接]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/89742079</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/89742079</guid><author>Xu_JL1997</author><pubDate>Thu, 02 May 2019 13:35:25 +0800</pubDate><description><![CDATA[1 - 引言
在了解 Spring 中数据库连接池的实现机制时，看到一些新知识，但是单纯的文字或实验描述并不能让我深入了解这些知识。

Spring DAO 对所有支持的数据访问技术框架都使用模板化技术进行了薄层的封装。只要您的程序都使用 Spring DAO 模板（如 JdbcTemplate、HibernateTemplate 等）进行数据访问，一定不会存在数据连接泄漏的问题 ―― 这是 Sp...]]></description><category></category></item><item><title><![CDATA[Java 锁的使用与锁的类型]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/88784427</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/88784427</guid><author>Xu_JL1997</author><pubDate>Mon, 29 Apr 2019 09:43:11 +0800</pubDate><description><![CDATA[1 概念
1.1 线程安全
指在并发的情况之下，该代码经过多线程使用，线程的调度顺序不影响任何结果。这个时候使用多线程，我们只需要关注系统的内存、cpu是不是够用即可。反过来，线程不安全就意味着线程的调度顺序会影响最终结果，如不加事务的转账代码：
void transferMoney(User from, User to, float amount){
	to.setMoney(to.getBal...]]></description><category></category></item><item><title><![CDATA[JDK 1.8 下的 StringBuilder 和 StringBuffer 区别与源码分析]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/89506317</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/89506317</guid><author>Xu_JL1997</author><pubDate>Thu, 25 Apr 2019 17:09:03 +0800</pubDate><description><![CDATA[1 - 引言
在 Java 中，String 被设置为不可变类，JDK 开发人员很小心地保证 String 的底层存储结构 private final char[] value 不被修改。所有对字符串的直接赋值操作，实际上都将字符串变量指向了新的 String 对象。
对于需要对字符串进行大量修改的程序来说，例如对字符串进行拼接，会产生很多无用的 String 实例，所以我们常常会使用 Strin...]]></description><category></category></item><item><title><![CDATA[JDK 1.8 下的 java.lang.Class 对象和 static 成员变量在堆还是方法区？]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/89433916</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/89433916</guid><author>Xu_JL1997</author><pubDate>Sun, 21 Apr 2019 15:41:15 +0800</pubDate><description><![CDATA[背景
从 JDK 1.7 开始，Oracle 团队就开始对 HotSpot VM 的永久代（PermGen）大刀阔斧的修改、移除，导致 HotSpot 的内存区域发生了很多改变，最终在 JDK 1.8 元空间（Metaspace）取代了永久代成为 HotSpot VM 对方法区的实现。
我们入门虚拟机的学习大多是通过《Java 虚拟机规范》、《深入理解Java虚拟机》这两本经典。但是由于 Java...]]></description><category></category></item><item><title><![CDATA[Java 中容易混淆的概念：Java 8 中的常量池、字符串池、包装类对象池]]></title><link>https://blog.youkuaiyun.com/Xu_JL1997/article/details/89150026</link><guid>https://blog.youkuaiyun.com/Xu_JL1997/article/details/89150026</guid><author>Xu_JL1997</author><pubDate>Fri, 12 Apr 2019 14:26:12 +0800</pubDate><description><![CDATA[1 - 引言
摘录一些网上流传比较广泛的认识，但如果你认为只懂这些就够了，这篇文章就没有必要继续看下去了！！！

常量池分为静态常量池、运行时常量池。
静态常量池在 .class 中，运行时常量池在方法区中，JDK 1.8 中方法区(method area)已经被元空间(metaspace)代替。
字符串池在JDK 1.7 之后被分离到堆区。
String str = new String("He...]]></description><category></category></item></channel></rss>