<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[u012556047的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u012556047</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u012556047]]></copyright><item><title><![CDATA[toString()、String.valueOf()、String类型强转的区别]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/123968099</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/123968099</guid><author>u012556047</author><pubDate>Wed, 11 May 2022 15:58:56 +0800</pubDate><description><![CDATA[这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题，有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能，丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
欢迎使用Markdown编辑器
你好！ 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar]]></description><category></category></item><item><title><![CDATA[阿里规约《线程资源必须通过线程池提供，不允许在应用中自行显式创建线程》]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/122730035</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/122730035</guid><author>u012556047</author><pubDate>Tue, 08 Feb 2022 17:15:02 +0800</pubDate><description><![CDATA[阿里规约中 并发处理 章节提到。

3. 【强制】线程资源必须通过线程池提供，不允许在应用中自行显式创建线程。 说明：线程池的好处是减少在创建和销毁线程上所消耗的时间以及系统资源的开销，解决资源不足的问题。如果不使用线程池，有可能造成系统创建大量同类线程而导致消耗完内存或者“过度切换”的问题。
4. 【强制】线程池不允许使用Executors去创建，而是通过ThreadPoolExecutor的方式，这样的处理方式让写的同学更加明确线程池的运行规则，规避资源耗尽的风险。
说明：Executors返回的线程池]]></description><category></category></item><item><title><![CDATA[关于返回报文中序列化问题]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/121860591</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/121860591</guid><author>u012556047</author><pubDate>Fri, 10 Dec 2021 17:31:39 +0800</pubDate><description><![CDATA[接口返回时，会使用Resp包装类，由框架带来的便利，框架会帮助我们序列化。
public class Response{

    private List&lt;CtrlHistory&gt; datas;

	private String datasStr;

    private Integer page;

    private Integer rows;

    private Integer total;
}

当返回对象如上时，会对当前对象做Json序列化，“private String]]></description><category></category></item><item><title><![CDATA[Vertx中访问Mysql]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/121850574</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/121850574</guid><author>u012556047</author><pubDate>Fri, 10 Dec 2021 16:51:13 +0800</pubDate><description><![CDATA[序：
在使用Vertx开发过程中，有数据库操作，发现原生自带mysql Client过于繁复，且代码可阅读性极差，在想使用ORM工具过程中，发现了对Vertx理解过于粗浅。

Vertx没有提供傻瓜化的框架：

rdbms: 关系数据库管理系统
为什么vert.x没有提供傻瓜化的框架呢？因为用vert.x的人，本身对于rdbms有些说白了，就是瞧不上，因为数据库会先于应用服务器触发吞吐瓶颈，一个传统系统，比如是tomcat和mysql的组合，当并发量上去之后，mysql会先于tomcat之前顶不住，所以第一]]></description><category></category></item><item><title><![CDATA[Java8 Optional包装类]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/119424134</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/119424134</guid><author>u012556047</author><pubDate>Thu, 05 Aug 2021 19:20:24 +0800</pubDate><description><![CDATA[基本理解
Java8新增了Optional包装类，旨在尽可能的避免NPE的问题。
首先，Optional是一个容器，用于放置可能为空的值，它可以合理而优雅的处理null。
Optional表示空的静态方法为Optional.empty()，其实是在null的外面做了一层包装，同时，包装类提供了很多方法。
基于Java8同时加入了函数式风格及lambda表达式，Optional类提供的方法也是基于此，Optional类希望对于可能为空的值，一直在Optional进行函数计算或提取。Optional类的方法，在]]></description><category></category></item><item><title><![CDATA[字节数组与16进制字符以及Base64]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/119134762</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/119134762</guid><author>u012556047</author><pubDate>Tue, 27 Jul 2021 10:26:39 +0800</pubDate><description><![CDATA[字节数组与16机制字符关系
JDK提供的算法，计算得到的结果一般是字节数组。
1字节=1Byte=8bit  字节数组经常需要 显式表达。
我们一般使用16进制（0-F）来表达，4bit可以表达16进制的值。
所以转化为16进制字符串的长度，是字节数组长度的2倍。
也就是2个16进制的字符，才能完整表达一个字节的值。
Base64
Base64 编码是基于64个字符 A-Z,a-z，0-9，+，/ 的编码方式，因为2的6次方正好为64，所以就用6bit就可以表示出64个字符。
字节数组转Base64时，就是]]></description><category></category></item><item><title><![CDATA[MessageDigest]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/119106428</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/119106428</guid><author>u012556047</author><pubDate>Mon, 26 Jul 2021 11:50:05 +0800</pubDate><description><![CDATA[使用MessageDigest做SHA256机密
	MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
    messageDigest.update(paramStr.getBytes(StandardCharsets.UTF_8));
    byte[] sha256Byte = messageDigest.digest();

此时sha256Byte的结果为SHA256加密结果。
重复调用messageDiges]]></description><category></category></item><item><title><![CDATA[getBytes]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/118967332</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/118967332</guid><author>u012556047</author><pubDate>Wed, 21 Jul 2021 15:19:44 +0800</pubDate><description><![CDATA[getBytes(String charsetName)
使用指定的字符集将字符串编码为 byte 序列，并将结果存储到一个新的 byte 数组中。
Byte ，字节（Byte）是计算机信息技术用于计量存储容量的一种计量单位，也表示一些计算机编程语言中的数据类型和语言字符。
一个Byte由8 bits 所组成。

...]]></description><category></category></item><item><title><![CDATA[@Primary和@Qualifier注解]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/118926236</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/118926236</guid><author>u012556047</author><pubDate>Tue, 20 Jul 2021 09:02:27 +0800</pubDate><description><![CDATA[@Primary注解
使用@Autowired注解执行注入时，默认是byType，当Spring容器中存在多个相同类型的Bean实例时，@Primary注解可以添加在类上，指定优先注入的Bean实例。
	@Bean
    @Primary
    public Employee johnEmployee() {
        return new Employee("john");
    }


...]]></description><category></category></item><item><title><![CDATA[Spring中的Aware接口]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/118889163</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/118889163</guid><author>u012556047</author><pubDate>Mon, 19 Jul 2021 11:42:24 +0800</pubDate><description><![CDATA[Aware接口，是Spring中的一个根接口。Aware的中文含义，是“意识到，察觉到，发觉，发现”，所以该接口的目的，通过实现Aware的子接口，让类添加发觉信息的能力。
常见的Aware直接实现类:
ApplicationContextAware
实现该接口，可以访问Spring容器中缓存的的其他Bean。
获取的ApplicationContext，ApplicationContext接口继承了MessageSource, ApplicationEventPublisher, ResourcePatt]]></description><category></category></item><item><title><![CDATA[HashMap初始化时，指定集合初始值大小]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/118691910</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/118691910</guid><author>u012556047</author><pubDate>Tue, 13 Jul 2021 09:04:52 +0800</pubDate><description><![CDATA[阿里编程规约中提到，HashMap初始化时，指定初始化大小。
初始化大小=（需要存储的元素个数）/（负载因子）+ 1
负载因子默认为0.75，这个值也是HashMap自动扩容时，使用的大小。
TODO  为什么负载因子是0.75？ 散列足够分布？同时节省空间？
如果无法确定初始值大小，请设置为16。（即默认值）

...]]></description><category></category></item><item><title><![CDATA[常见注解查询]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/118517231</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/118517231</guid><author>u012556047</author><pubDate>Tue, 06 Jul 2021 14:40:52 +0800</pubDate><description><![CDATA[@Documented
Documented 注解表明这个注解应该被 javadoc工具记录. 默认情况下,javadoc生成的类,文档中是不包括注解的. 但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理, 所以注解类型信息也会被包括在生成的文档中.
@Inherited
如果一个类用上了@Inherited修饰的注解，那么其子类也会继承这个注解.
@Retention
@Retention作用是定义被它所注解的注解保留多久，一共有三种策略，定义在RetentionP]]></description><category></category></item><item><title><![CDATA[linux常用命令]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/118292128</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/118292128</guid><author>u012556047</author><pubDate>Mon, 28 Jun 2021 10:37:56 +0800</pubDate><description><![CDATA[Netstat（network statistics）是在内核中访问网络连接状态及其相关信息的命令行程序，可以显示路由表、实际的网络连接和网络接口设备的状态信息，以及与 IP、TCP、UDP 和 ICMP 协议相关的统计数据，一般用于检验本机各端口的网络服务运行状况。
常见参数
-a (all)显示所有选项，默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名，能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務]]></description><category></category></item><item><title><![CDATA[Netty关于select/epoll]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/117811640</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/117811640</guid><author>u012556047</author><pubDate>Fri, 11 Jun 2021 11:52:58 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/lblblblblzdx/article/details/88795242

]]></description><category></category></item><item><title><![CDATA[MQTT 入门介绍]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/117808204</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/117808204</guid><author>u012556047</author><pubDate>Fri, 11 Jun 2021 10:33:04 +0800</pubDate><description><![CDATA[https://www.runoob.com/w3cnote/mqtt-intro.html

]]></description><category></category></item><item><title><![CDATA[IDEA中优先引用]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/117804684</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/117804684</guid><author>u012556047</author><pubDate>Fri, 11 Jun 2021 09:10:17 +0800</pubDate><description><![CDATA[IDEA中proejct-structure中的module,有每一个模块依赖列表,同时这个列表也是依赖的顺序,意味着当打好包的jar,和源码同时被依赖时,可以让module优先依赖源码,方便debug.
只需添加源码依赖,同时调整顺序为目录最上.

...]]></description><category></category></item><item><title><![CDATA[部分语言编译器下载]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/117535660</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/117535660</guid><author>u012556047</author><pubDate>Thu, 03 Jun 2021 22:06:17 +0800</pubDate><description><![CDATA[Java老版本下载
Java新版本入口很好找，但因为企业级收费影响，仍然需要找历史版本，Oracle还是提供了官方的入口。
1、oracle主页，找到Products下的Java


2、找到下载按钮

3、拖到页面底部，Oracle把老版本都归档在这个地方了。

接下来找到所需的版本即可。
Kotlin编译器
Kotlin因语言特性，一般都直接集成在IDE中直接下载，如果要单独下载其编译器，可以到Kotlin的github官方页。每个版本都附带一个独立版本的编译器。注意Kotlin对依赖JVM版本有要求，]]></description><category></category></item><item><title><![CDATA[maven工具的scope的分类]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/117512551</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/117512551</guid><author>u012556047</author><pubDate>Thu, 03 Jun 2021 10:24:17 +0800</pubDate><description><![CDATA[Maven的一个哲学是惯例优于配置(Convention Over Configuration), Maven默认的依赖配置项中，scope的默认值是compile，项目中经常傻傻的分不清，直接默认了。今天梳理一下maven的scope。
scope的分类
compile
默认就是compile，什么都不配置也就是意味着compile。compile表示被依赖项目需要参与当前项目的编译，当然后续的测试，运行周期也参与其中，是一个比较强的依赖。打包的时候通常需要包含进去。
test
scope为test表示依]]></description><category></category></item><item><title><![CDATA[Elasticsearch 尝试]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/117410348</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/117410348</guid><author>u012556047</author><pubDate>Mon, 31 May 2021 10:33:17 +0800</pubDate><description><![CDATA[一、Elasticsearch 简介
Elasticsearch 是一个实时分布式搜索和分析引擎，建立在一个全文搜索引擎库 Apache Lucene 基础之上，而 Lucene 是当下最先进、高性能、全功能的搜索引擎库。
但是 Lucene 仅仅只是一个库。为了充分发挥其功能，你需要使用 Java 并将 Lucene 直接集成到应用程序中。 更糟糕的是，您可能需要获得信息检索学位才能了解其工作原理。因为 Lucene 非常复杂。
Elasticsearch 也是使用 Java 编写的，它的内部使用 Luc]]></description><category></category></item><item><title><![CDATA[浅谈spring为什么推荐使用构造器注入]]></title><link>https://blog.youkuaiyun.com/u012556047/article/details/117227429</link><guid>https://blog.youkuaiyun.com/u012556047/article/details/117227429</guid><author>u012556047</author><pubDate>Mon, 24 May 2021 17:06:51 +0800</pubDate><description><![CDATA[目录
一、前言
二、常见的三种注入方式
2.1 field注入
2.2 构造器注入
2.3 setter注入
三、构造器注入的好处
四、答疑
五、总结
一、前言
​ Spring框架对Java开发的重要性不言而喻，其核心特性就是IOC（Inversion of Control， 控制反转）和AOP，平时使用最多的就是其中的IOC，我们通过将组件交由Spring的IOC容器管理，将对象的依赖关系由Spring控制，避免硬编码所造成的过度程序耦合。前几天的时候，笔者的同事问我为什么要使用构造器的注入方式，我回答]]></description><category></category></item></channel></rss>