<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[liuchaohs的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/liuchaohs</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; liuchaohs]]></copyright><item><title><![CDATA[JVM的内存结构]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/108137609</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/108137609</guid><author>liuchaohs</author><pubDate>Thu, 20 Aug 2020 23:23:20 +0800</pubDate><description><![CDATA[JVM的内存结构式是什么样的
%
多线程共享

Java堆
方法区：
- 存放已被虚拟机加载的类信息、常量、静态变量、及时编译器编译后的代码等数据。
- 同时包含运行时常量池，用于存放编译期生成的各种字面量和符号引用。

当前线程独享

Java栈：通常存放基本数据类型和对象的引用；
本地方法栈：与虚拟机栈（Java栈）作用很相似，区别是虚拟机栈为虚拟机执行java方法服务，而本地方法栈则是为虚拟机用到的Native方法服务；
程序计数器：当前线程所执行指令的行号指示器


内存溢出和内存泄露的区别
%

]]></description><category></category></item><item><title><![CDATA[wait和sleep]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/108137593</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/108137593</guid><author>liuchaohs</author><pubDate>Thu, 20 Aug 2020 23:22:21 +0800</pubDate><description><![CDATA[为什么wait方法在object类中，sleep方法在Thread类中
%


sleep()是让某个线程暂停运行一段时间,其控制范围是由当前线程决定,也就是说,在线程里面决定.好比如说,我要做的事情是 “点火-&gt;烧水-&gt;煮面”,而当我点完火之后我不立即烧水,我要休息一段时间再烧.对于运行的主动权是由我的流程来控制.


而wait(),首先,这是由某个确定的对象来调用的,将这个对象理解成一个传话的人,当这个人在某个线程里面说"暂停!",也是 thisOBJ.wait(),这里的暂停是阻塞,还是]]></description><category></category></item><item><title><![CDATA[volatile的理解]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/108137558</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/108137558</guid><author>liuchaohs</author><pubDate>Thu, 20 Aug 2020 23:20:21 +0800</pubDate><description><![CDATA[介绍一下和volatile相关的内存模型概念
%

内存的读写速度比CPU执行指令的速度慢很多
程序运行过程中，需要先从主存复制到CPU的高速缓存中，运算结束后，再刷新到主存中
单线程执行i=0, i=i+1不会出错，多线程，可能造成i最后还是1。
硬件上有2种解决方式:上锁和缓存一致性协议（volatile)
缓存一致性：其他CPU需要读取这个变量时，发现自己缓存中缓存该变量的缓存行是无效的，那么它就会从内存重新读取。


介绍一下并发编程常见的问题
%
要想并发程序正确地执行，必须要保证原子性、可见性以]]></description><category></category></item><item><title><![CDATA[python多线程]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/106283102</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/106283102</guid><author>liuchaohs</author><pubDate>Fri, 22 May 2020 16:30:15 +0800</pubDate><description><![CDATA[没有返回值子线程的多线程
%
from multiprocessing import Process

def fun(para1, para2, para3):
    pass

if __name__ == '__main__':
    num_thread = 16
    processes = []
    for i in range(num_thread):
        proc = Process(target=fun, args=(para1, para2, para3))
   ]]></description><category></category></item><item><title><![CDATA[异常]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/105971315</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/105971315</guid><author>liuchaohs</author><pubDate>Thu, 07 May 2020 13:56:24 +0800</pubDate><description><![CDATA[如何构建异常
%


直接用空构造


用String的构造


可以按照return 语句去理解，只是调用者是用try catch去获得返回值，所以catch要定义一个Exceptionq去接收throw的语句
throw new NullPointerException("t=null");

throw new NullPointerException();


如何自定义异常
%
继承Ex...]]></description><category></category></item><item><title><![CDATA[NDK入门]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/105971199</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/105971199</guid><author>liuchaohs</author><pubDate>Thu, 07 May 2020 13:51:00 +0800</pubDate><description><![CDATA[下载
%
link
下载r14版本

搭建工程
%


选择native C++工程后，一路默认，然后把NDK的路径加到工程中


选择Projects Structure，再选择sdk，界面第二行有ndk的路径，选择后等待编译完


在静态代码块中引人cpp的包


 static {
        System.loadLibrary("native-lib");
    }


nativ...]]></description><category></category></item><item><title><![CDATA[指令和运算]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/105950968</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/105950968</guid><author>liuchaohs</author><pubDate>Wed, 06 May 2020 15:01:12 +0800</pubDate><description><![CDATA[为什么不同的CPU厂不能理解一个语言
%
CPU支持的指令集不同

如何获得程序的机器码和汇编代码

gcc -g -c -o 三个参数的作用？

%
g为了调试；c只编译不连接；o输出文件
$ gcc -g -c test.c 
$ objdump -d -M intel -S test.o


指令的分类
%

第一类是算术类指令。我们的加减乘除，在 CPU 层面，都会变成一条条算术类指令。
...]]></description><category></category></item><item><title><![CDATA[snippet代替图床]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/105950812</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/105950812</guid><author>liuchaohs</author><pubDate>Wed, 06 May 2020 14:52:33 +0800</pubDate><description><![CDATA[通过设置snippet达到picgo的图床效果，且支持任何图片类型和命名
先把图片的相对路径赋值到剪切板中，在snippet中贴入以下代码即可。
"github image": {
		"prefix": "gimg",
		"body": [
			"![img](https://raw.githubusercontent.com/{UserName}/{Proje}/master/$CLIPB...]]></description><category></category></item><item><title><![CDATA[java内部类1]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/105941551</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/105941551</guid><author>liuchaohs</author><pubDate>Tue, 05 May 2020 23:38:21 +0800</pubDate><description><![CDATA[如何创建内部类

如何在外部类的非静态成员方法中创建？
如何在除 1 条件下中使用内部类，如 main 函数

%

外部类

//: innerclasses/Parcel1.java
package innerclasses; /* Added by Eclipse.py */
// Creating inner classes.

public class Parcel1 {
  class...]]></description><category></category></item><item><title><![CDATA[入门篇]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/105941510</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/105941510</guid><author>liuchaohs</author><pubDate>Tue, 05 May 2020 23:34:48 +0800</pubDate><description><![CDATA[什么是冯诺依曼结构
%
也叫存储程序计算机， 包含“可编程”和“可存储”两个概念
5大部分

输入
输出
存储
运算器
控制器


提升性能的方法有哪两类？
%

提升响应时间，也叫程序的执行时间
提升吞吐率，也叫带宽。多核CPU


CPU的时钟有哪些
%

real time: 客观运行的时间
user time: 用户态运行指令的时间
sys time: 内核态运行指令的时间

程序运行的实...]]></description><category></category></item><item><title><![CDATA[入门篇]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/105941486</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/105941486</guid><author>liuchaohs</author><pubDate>Tue, 05 May 2020 23:33:26 +0800</pubDate><description><![CDATA[## 什么是冯诺依曼结构



%



也叫存储程序计算机， 包含“可编程”和“可存储”两个概念



5大部分



1. 输入

2. 输出

3. 存储

4. 运算器

5. 控制器

---



## 提升性能的方法有哪两类？

%



1. 提升响应时间，也叫程序的执行时间

2. 提升吞吐率，也叫带宽。多核CPU

---




## CPU的时钟有哪些

%
...]]></description><category></category></item><item><title><![CDATA[lc1438-绝对差不超过限制的最长连续子数组]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/105941432</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/105941432</guid><author>liuchaohs</author><pubDate>Tue, 05 May 2020 23:31:26 +0800</pubDate><description><![CDATA[Question
%
link
给你一个整数数组 nums ，和一个表示限制的整数 limit，请你返回最长连续子数组的长度，该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。
如果不存在满足条件的子数组，则返回 0 。
输入：nums = [8,2,4,7], limit = 4
输出：2 
解释：所有子数组如下：
[8] 最大绝对差 |8-8| = 0 &lt;= 4.
[8...]]></description><category></category></item><item><title><![CDATA[VSCode snippets 进阶用法]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/105542113</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/105542113</guid><author>liuchaohs</author><pubDate>Wed, 15 Apr 2020 18:52:25 +0800</pubDate><description><![CDATA[解决什么问题

快捷输入代码
定位光标（鼠标在的位置）
固定变量（比如当前时间，剪切板的内容）

在哪里设置 snippet
文件-》首选项-》user snippets
选择对应语言的代码设置文件
如何控制光标位置（占位符）
只要掌握以下语句即可
$1 $2 //光标会定位到1，按Tab会到下一个
$0 //终止光标跳转的位置
${1|Boolean, Number, String|} //跳转...]]></description><category></category></item><item><title><![CDATA[873 Longest FIbonacci Subsequence]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/91993683</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/91993683</guid><author>liuchaohs</author><pubDate>Fri, 14 Jun 2019 18:11:31 +0800</pubDate><description><![CDATA[文章目录题目TLE LCS 思路codefibonacci 思路code2SUM 思路code
标签：dp，LCS
题目
A sequence X_1, X_2, ..., X_n is fibonacci-like if:

n &gt;= 3
X_i + X_{i+1} = X_{i+2} for all i + 2 &lt;= n

Given a strictly increasing a...]]></description><category></category></item><item><title><![CDATA[978 Longest turbulent subarray]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/91993587</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/91993587</guid><author>liuchaohs</author><pubDate>Fri, 14 Jun 2019 18:10:02 +0800</pubDate><description><![CDATA[文章目录题目滑动窗口思路dp思路滑动窗口高效
标签：sliding window， 滑动窗口
题目
A subarray A[i], A[i+1], ..., A[j] of A is said to be turbulentif and only if:

For i &lt;= k &lt; j, A[k] &gt; A[k+1] when k is odd, and A[k] &lt; A[...]]></description><category></category></item><item><title><![CDATA[1027 longest arithmetic sequence]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/91591513</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/91591513</guid><author>liuchaohs</author><pubDate>Wed, 12 Jun 2019 18:49:31 +0800</pubDate><description><![CDATA[文章目录题目自己错误的思路错误code最长上升子序列思路LCS 代码
标签：dp，最长上升子序列
题目
Given an array A of integers, return the length of the longest arithmetic subsequence in A.
Recall that a subsequence of A is a list A[i_1], A[i_2],...]]></description><category></category></item><item><title><![CDATA[650 2 Keys Keyboard]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/91591265</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/91591265</guid><author>liuchaohs</author><pubDate>Wed, 12 Jun 2019 18:48:27 +0800</pubDate><description><![CDATA[文章目录题目bfs思路 TLEbfs code TLE数论DP 思路数轮DP Code小结
标签：dp，数论
题目
Initially on a notepad only one character ‘A’ is present. You can perform two operations on this notepad for each step:

Copy All: You can cop...]]></description><category></category></item><item><title><![CDATA[leetcode1024 video stitching]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/91461798</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/91461798</guid><author>liuchaohs</author><pubDate>Tue, 11 Jun 2019 20:09:08 +0800</pubDate><description><![CDATA[文章目录题目bfs思路greedy思路dp思路bfscodegreedycodedp code
标签： dp， greedy， bfs， 铺砖
题目
You are given a series of video clips from a sporting event that lasted T seconds.  These video clips can be overlapping with...]]></description><category></category></item><item><title><![CDATA[leetcode1081. Smallest Subsequence of Distinct Characters]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/91461487</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/91461487</guid><author>liuchaohs</author><pubDate>Tue, 11 Jun 2019 20:06:03 +0800</pubDate><description><![CDATA[文章目录题目greedy wrong answerDP TLE思路单调栈思路DP TLE CODE单调栈
标签： 单调栈
题目
\1081. Smallest Subsequence of Distinct Characters
Medium
Return the lexicographically smallest subsequence of text that contains all th...]]></description><category></category></item><item><title><![CDATA[leetcode 5087 letter tile possibility]]></title><link>https://blog.youkuaiyun.com/liuchaohs/article/details/91377059</link><guid>https://blog.youkuaiyun.com/liuchaohs/article/details/91377059</guid><author>liuchaohs</author><pubDate>Mon, 10 Jun 2019 14:53:27 +0800</pubDate><description><![CDATA[文章目录题目思路code dfs+排列组合小结c++的char和stringC++的map和set判断是否存在某个值
标签：数论，dfs
题目
You have a set of tiles, where each tile has one letter tiles[i] printed on it.  Return the number of possible non-empty sequenc...]]></description><category></category></item></channel></rss>