<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[呦 ^v^-， 写Bug呢？]]></title><description><![CDATA[从入门到放弃？不存在的，赶紧找门先。]]></description><link>https://blog.youkuaiyun.com/a499477783</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; a499477783]]></copyright><item><title><![CDATA[top命令]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/103261104</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/103261104</guid><author>a499477783</author><pubDate>Tue, 26 Nov 2019 17:29:06 +0800</pubDate><description><![CDATA[top可以实时的查看系统中各个进程的资源占用情况，是linux中常用的性能分析工具
help
&gt; top --help
Usage:
  top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]

基础使用
可以直接使用top命令查看，如下：
&gt; top

top - 17:14:00 up 1 d...]]></description><category></category></item><item><title><![CDATA[java并发编程的艺术-第四章笔记]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/100604366</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/100604366</guid><author>a499477783</author><pubDate>Sat, 07 Sep 2019 18:54:12 +0800</pubDate><description><![CDATA[线程简介
什么是线程

现代操作系统调度的最小单元
轻量级进程

线程的状态

NEW: 初始状态，线程被构建，但是还没有调用start()方法
RUNNABLE: 运行状态，Java线程将操作系统的就绪和运行两种状态，笼统的称做“运行中“
BLOCKED: 阻塞状态，表示线程阻塞于锁
WAITING: 等待状态，表示线程进入等待状态，进入该状态表示当前线程需要等待其他线程做出一些特定动作（通知或...]]></description><category></category></item><item><title><![CDATA[java并发编程的艺术 - 第三章笔记]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/100175374</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/100175374</guid><author>a499477783</author><pubDate>Sat, 31 Aug 2019 17:47:00 +0800</pubDate><description><![CDATA[java内存模型
java内存模型的抽象结构
JMM定义了线程和主内存之间的抽象关系：线程之间的共享变量存储在主内存（Main Memory）中，每个线程都有一个私有的本地内存（Local Memory），本地内存中存储了该线程以读/写共享变量的副本。
ps：本地内存是JMM的一个抽象概念，并不真实存在。它涵盖了缓存、写缓冲区、寄存器以及其他的硬件和编译器优化。
[外链图片转存失败(img-J5w...]]></description><category></category></item><item><title><![CDATA[java并发编程的艺术 -（扩展：CPU缓存一致性）]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/98097480</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/98097480</guid><author>a499477783</author><pubDate>Thu, 01 Aug 2019 19:59:06 +0800</pubDate><description><![CDATA[cache的由来和带来的问题
cpu在摩尔定律的指导下，处理能力远远大于内存和硬盘的读写能力。就像用内存来解决硬盘的IO瓶颈一样，cache则是被用来处理cpu于内存之间的读写瓶颈。cache的工作原理基于局部性原理（解释如下）：

时间局部性：如果某个数据被访问，那么不久将来它很可能再次被访问。
空间局部性：如果某个数据被访问，那么与它相邻的数据也可能被访问。

三级缓存
由于CPU的运算速度超...]]></description><category></category></item><item><title><![CDATA[java并发编程的艺术 - 第二章笔记]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/98097227</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/98097227</guid><author>a499477783</author><pubDate>Thu, 01 Aug 2019 19:56:30 +0800</pubDate><description><![CDATA[术语
描述




memory barries（内存屏障）
处理器指定，实现对内存操作的顺序限定


cache line（缓冲行）
缓存中的最小存储单位，需要使用多个主内存周期（存储周期？）


atomic operations（原子操作）
不可中断的操作


cache line fill （缓存行填充）
处理器读取整个缓存行到适当的缓存


cache hit（缓存命中）
处理器...]]></description><category></category></item><item><title><![CDATA[java并发编程的艺术 - 第一章笔记]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/98096896</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/98096896</guid><author>a499477783</author><pubDate>Thu, 01 Aug 2019 19:54:09 +0800</pubDate><description><![CDATA[线程上下文
CPU通过调度算法（常用时间片轮转）来切换线程，线程上下文则是在切换过程中，用来保存线程的执行状态，可以理解为当前执行线程的快照。
线程和速度
为什么多线程会快

串行变为并发执行
cpu的运算速度远远大于io速度，可以将部分io阻塞的时间用于计算其他任务

什么时候多线程不会快

计算密集型任务，如果cpu一直保持高负荷，即使多线程也不会加快运算速度，而且会因为频繁切换上下文带来额外...]]></description><category></category></item><item><title><![CDATA[Golang里面的接口（二）]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/93593622</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/93593622</guid><author>a499477783</author><pubDate>Tue, 25 Jun 2019 09:46:27 +0800</pubDate><description><![CDATA[Interface In Go Part2
原文地址（https://medium.com/golangspec/interfaces-in-go-part-ii-d5057ffdb0a6）
有一些时候，一些值需要被转换为另一个不同的类型。转换操作是一个编译时受检的操作，并且整个机制在更早的另一篇文章里面有详细说明。简单来说，看起来就好像是这个样子的：
type T1 struct {
    n...]]></description><category></category></item><item><title><![CDATA[Golang里面的接口（一）]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/93593392</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/93593392</guid><author>a499477783</author><pubDate>Tue, 25 Jun 2019 09:44:31 +0800</pubDate><description><![CDATA[Interface In Go -Part1
原文地址（ https://medium.com/golangspec/interfaces-in-go-part-i-4ae53a97479c）
使用一些接口，会让你的编码具有更强的灵活性、可扩展性，并且interface是golang用于实现多态（polymorphism）的一种手段。interfaces允许在一些行为被需要的时候才去指定，而不需要...]]></description><category></category></item><item><title><![CDATA[一篇文章读懂java迭代器]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/89485289</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/89485289</guid><author>a499477783</author><pubDate>Wed, 24 Apr 2019 08:07:58 +0800</pubDate><description><![CDATA[概述
迭代器，提供了在不了解集合内部实现方法的时候遍历集合的能力。可以将容器内部实现与遍历操作隔离、解耦。
使用迭代器实现一个简单集合
通过自定义一个简单集合，并在对其使用迭代器进行遍历，达到掌握迭代器的目的。
集合描述
一个简单的集合，规则如下

1、只能存放三个字符串
2、若插入第四个数据，则覆盖第一个位置。

实现接口描述
Iterable接口描述

如果想用foreach对集合遍历，则必须...]]></description><category></category></item><item><title><![CDATA[Mysql的锁（Innodb）]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/87976563</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/87976563</guid><author>a499477783</author><pubDate>Wed, 27 Feb 2019 15:55:18 +0800</pubDate><description><![CDATA[锁的隔离级别




事务隔离级别
脏读
不可重复读
幻读




读未提交（read-uncommitted）
是
是
是


读已提交（read-committed）
否
是
是


可重复读（repeatable-read）
否
否
是


串行化（serializable））
否
否
否


锁的分类
粒度划分

行锁：Record Lock、Gap Lock、Next-Key Lock
...]]></description><category></category></item><item><title><![CDATA[使用Druid的sql parser做一个表数据血缘分析工具]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/85048055</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/85048055</guid><author>a499477783</author><pubDate>Mon, 17 Dec 2018 13:29:21 +0800</pubDate><description><![CDATA[前言
大数据场景下，每天可能都要在离线集群，运行大量的任务来支持业务、运营的分析查询。任务越来越多的时候，就会有越来越多的依赖关系，每一个任务都需要等需要的input表生产出来后，再去生产自己的output表。最开始的时候，依赖关系自然是可以通过管理员来管理，随着任务量的加大，就需要一个分析工具来解析任务的inputs、outs，并且自行依赖上生产inputs表的那些任务。本文就介绍一个使用dru...]]></description><category></category></item><item><title><![CDATA[JVM的内存和GC]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/83070266</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/83070266</guid><author>a499477783</author><pubDate>Tue, 16 Oct 2018 11:24:27 +0800</pubDate><description><![CDATA[内存
栈内存（虚拟机栈和本地方法栈）
每个线程存有一个虚拟机栈，方法调用会生成一个栈帧，压入虚拟机栈。
StackOverFlowError异常
若单个线程请求的栈深度大于虚拟机允许的深度，则会抛出StackOverflowError（栈溢出错误）。可以通过无限递归来模拟，优化方式可以增大栈内存大小，以此来增加每个栈可以容纳的栈帧数量。
栈区内存溢出
不同于StackOverflowError，O...]]></description><category></category></item><item><title><![CDATA[linux执行命令返回值问题]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/83014347</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/83014347</guid><author>a499477783</author><pubDate>Thu, 11 Oct 2018 16:21:53 +0800</pubDate><description><![CDATA[返回值引起的一次问题
问题起始于一次命令调用出错，获取返回值为零的情况。在此做个记录。一个严谨的程序最少应该有两个返回值，零和非零，分别用来表示正常和异常的执行。

问题背景：在linux中执行python脚本，脚本中使用cmd调用hive -e来执行hive sql，脚本使用命令的exit code退出。可是有几次异常退出后，python脚本执行的返回值为零，导致其他模块认为执行成功，不做处理。...]]></description><category></category></item><item><title><![CDATA[SpringBoot配置文件的替换]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/81460970</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/81460970</guid><author>a499477783</author><pubDate>Mon, 06 Aug 2018 20:43:26 +0800</pubDate><description><![CDATA[使用spring.profiles.active

在工作中，测试或上线的时候一定会遇到的问题就是修改配置。一般来说都有如下几种配置可用：dev（开发环境），test（测试环境），pro（生产|线上环境）。这时候，我们就需要去注释掉配置文件中的所有配置，再解开需要的配置。这时候，就可以通过spring.profiles.active的配置来解决这个问题。



application.proper...]]></description><category></category></item><item><title><![CDATA[redis和redis在java中的使用]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/80368501</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/80368501</guid><author>a499477783</author><pubDate>Fri, 18 May 2018 19:12:14 +0800</pubDate><description><![CDATA[

Redis 简介
Redis 优势
Redis与其他key-value存储有什么不同
Redis下载


Redis 安装（Linux）
下载编译
这里有的坑


启动会遇到的一些问题
1、第一个提示somaxconn这个值为128太小了,这个值是系统的网络连接队列大小,而redis的TCP backlog设置的值为511,因此受限,所以修改下系统的值
2、overcommit_memory设...]]></description><category></category></item><item><title><![CDATA[Mybatis大于小于符号的替换]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/80359190</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/80359190</guid><author>a499477783</author><pubDate>Fri, 18 May 2018 08:36:13 +0800</pubDate><description><![CDATA[在Mybatis中，把一部分查询的语句分离到了xml文件中，因此在使用的时候不可以使用影响xml格式的一些符号，比如&amp;gt;    &amp;lt;之类的符号，因此要使用这些符号的替换符号。

对照表如下：




  符号
  替换符号



  &amp;gt;
  &amp;amp;gt;


  &amp;gt;=
  &amp;amp;gt;=


  &amp;lt;
  &amp;amp;lt;


  &amp;lt;=
  &amp;amp;lt;=...]]></description><category></category></item><item><title><![CDATA[笔记：红黑树旋转和插入]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/80086888</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/80086888</guid><author>a499477783</author><pubDate>Wed, 25 Apr 2018 22:24:33 +0800</pubDate><description><![CDATA[红黑树

红黑树是每个节点都带有颜色属性的二叉查找树，颜色或红色或黑色。在二叉查找树强制一般要求以外，对于任何有效的红黑树我们增加了如下的额外要求: 
- 性质1. 节点是红色或黑色。 
- 性质2. 根节点是黑色。 
- 性质3. 每个叶节点（NIL节点，空节点）是黑色的。 
- 性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点) 
- 性质5. ...]]></description><category></category></item><item><title><![CDATA[关于计算机]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/79972227</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/79972227</guid><author>a499477783</author><pubDate>Tue, 17 Apr 2018 11:22:01 +0800</pubDate><description><![CDATA[错觉：计算机做了很复杂的工作每当我们看到什么人工智能、数据分析、操作系统等等，总是会觉得，wahhho，计算机居然可以这么神奇，居然可以完成这么多工作。当然，我曾经也这么以为，感觉很厉害，甚至可以自己学习。有时会很敬畏，甚至自己想想都会觉得可笑。事实：计算机只做了0和1的与或非运算，只是有点快可是如果仔细思考就会发现，计算机其实什么也不会，他只是会简单的0和1的与或非运算，只是稍微有点快而已（事实上]]></description><category></category></item><item><title><![CDATA[lombok和JPA的死递归]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/79969750</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/79969750</guid><author>a499477783</author><pubDate>Tue, 17 Apr 2018 09:18:00 +0800</pubDate><description><![CDATA[这是一个Bug

JPA我觉得是一个封装的很棒的框架，至于说很臃肿这个事，我觉得在需求需要很多复杂查询的时候，不适合用JPA。因为它的封装太棒了，以致于增强了表和实体类之间的耦合。不过在一些简单查询的部分，它真的太好用了。

而关于这个Bug，就不单单是JPA自身的问题了，究其原因是我在实体类中，使用了lombok框架的@Data，这是一个使用注解，在编译时修改语法树并且自动生成Getter、Se...]]></description><category></category></item><item><title><![CDATA[思考：为什么要用Spring]]></title><link>https://blog.youkuaiyun.com/a499477783/article/details/79893322</link><guid>https://blog.youkuaiyun.com/a499477783/article/details/79893322</guid><author>a499477783</author><pubDate>Wed, 11 Apr 2018 11:02:52 +0800</pubDate><description><![CDATA[spring带来了什么？
没有spring会怎么样？
为什么要用spring]]></description><category></category></item></channel></rss>