<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[little_programmer_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/little_programmer_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; little_programmer_]]></copyright><item><title><![CDATA[一、Hello world]]></title><link>https://blog.youkuaiyun.com/little_programmer_/article/details/126258332</link><guid>https://blog.youkuaiyun.com/little_programmer_/article/details/126258332</guid><author>little_programmer_</author><pubDate>Wed, 10 Aug 2022 00:45:50 +0800</pubDate><description><![CDATA[读书笔记--程序员的自我修养]]></description><category></category></item><item><title><![CDATA[-bash: gcc: command not found]]></title><link>https://blog.youkuaiyun.com/little_programmer_/article/details/126258282</link><guid>https://blog.youkuaiyun.com/little_programmer_/article/details/126258282</guid><author>little_programmer_</author><pubDate>Wed, 10 Aug 2022 00:21:00 +0800</pubDate><description><![CDATA[gcc]]></description><category></category></item><item><title><![CDATA[ifconfig: command not found]]></title><link>https://blog.youkuaiyun.com/little_programmer_/article/details/126258046</link><guid>https://blog.youkuaiyun.com/little_programmer_/article/details/126258046</guid><author>little_programmer_</author><pubDate>Wed, 10 Aug 2022 00:00:52 +0800</pubDate><description><![CDATA[ifconfig]]></description><category></category></item><item><title><![CDATA[JavaScript 闭包]]></title><link>https://blog.youkuaiyun.com/little_programmer_/article/details/120013455</link><guid>https://blog.youkuaiyun.com/little_programmer_/article/details/120013455</guid><author>little_programmer_</author><pubDate>Tue, 31 Aug 2021 14:54:28 +0800</pubDate><description><![CDATA[要了解闭包，首先需要了解一下js中的变量作用域

1、变量作用域

js中全局变量拥有全局的作用域，在js中的任何地方都是有定义的。函数内声明的变量以及函数参数都是局部变量，只在函数体内有定义。

在函数体内，局部变量的优先级高于同名的全局变量，因此全局变量就被局部变量所遮盖。

例1：


var scope = 'global'    //声明一个全局变量
function checkscope(){
    var scope = 'local'    //声明一个同名的局部变量
    return]]></description><category></category></item><item><title><![CDATA[JVM(一) -- 类加载]]></title><link>https://blog.youkuaiyun.com/little_programmer_/article/details/106669594</link><guid>https://blog.youkuaiyun.com/little_programmer_/article/details/106669594</guid><author>little_programmer_</author><pubDate>Wed, 10 Jun 2020 18:15:09 +0800</pubDate><description><![CDATA[JVM（一）类加载机制生命周期类加载器双亲委派模型
类加载机制
生命周期
类的生命周期包括：
加载验证准备解析初始化使用卸载
其中验证、准备、解析3个部分被称为连接。

加载


获取指定类的二进制流。
将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。
生成一个Class对象，作为方法区这个类的数据的访问入口。


验证
确保Class文件的字节流中包含的信息符合当前虚拟机的要求，并不会危害虚拟机自身的安全。
准备
该阶段为类的static变量分配内存并设置相应数据类型的默认值，若该变量为fi]]></description><category></category></item><item><title><![CDATA[java高并发、多线程（九）-- CyclicBarrier]]></title><link>https://blog.youkuaiyun.com/little_programmer_/article/details/106660390</link><guid>https://blog.youkuaiyun.com/little_programmer_/article/details/106660390</guid><author>little_programmer_</author><pubDate>Wed, 10 Jun 2020 14:47:55 +0800</pubDate><description><![CDATA[java高并发、多线程（九）CyclicBarrier代码事例源码结构事例执行流程
CyclicBarrier
代码事例
先看一段代码：
public class CyclicBarrierTest {

  	public static void main(String[] args) {
        CyclicBarrier cb = new CyclicBarrier(2,() -&gt; System.out.println(Thread.currentThread().getName() +]]></description><category></category></item><item><title><![CDATA[java高并发、多线程（八）--LockSupport.park()会释放锁吗？]]></title><link>https://blog.youkuaiyun.com/little_programmer_/article/details/106650436</link><guid>https://blog.youkuaiyun.com/little_programmer_/article/details/106650436</guid><author>little_programmer_</author><pubDate>Tue, 09 Jun 2020 20:41:50 +0800</pubDate><description><![CDATA[java高并发、多线程（八）
public class LockSupportTest {
    
    public synchronized void m1(){
        System.out.println("m1 start");
        LockSupport.park();
        System.out.println("m1 end");
    }

    public synchronized void m2(){
        System.out.pri]]></description><category></category></item><item><title><![CDATA[java高并发、多线程（七）--CountDownLatch]]></title><link>https://blog.youkuaiyun.com/little_programmer_/article/details/106621113</link><guid>https://blog.youkuaiyun.com/little_programmer_/article/details/106621113</guid><author>little_programmer_</author><pubDate>Mon, 08 Jun 2020 18:11:00 +0800</pubDate><description><![CDATA[java高并发、多线程（七）CountDownLatch一个简单的例子源码Sync类
CountDownLatch
一个同步辅助类，在完成一组正在其他线程中执行的操作之前，它允许一个或多个线程一直等待。
一个简单的例子
public class CountDownLatchTest {
    public static void main(String[] args) {
        List&lt;Thread&gt; list = new ArrayList&lt;&gt;();
        ]]></description><category></category></item><item><title><![CDATA[java高并发、多线程（六）--ReentrantLock]]></title><link>https://blog.youkuaiyun.com/little_programmer_/article/details/106613524</link><guid>https://blog.youkuaiyun.com/little_programmer_/article/details/106613524</guid><author>little_programmer_</author><pubDate>Mon, 08 Jun 2020 15:20:40 +0800</pubDate><description><![CDATA[java高并发、多线程（六）ReentrantLockNonfairSync类tryAcquire(int)lock()FairSync 类Sync类
ReentrantLock
ReentrantLock源码结构：
public class ReentrantLock implements Lock, java.io.Serializable {
    private final Sync sync;
    //锁实现类
    abstract static class Sync extends A]]></description><category></category></item><item><title><![CDATA[java高并发、多线程（五）--AbstractQueuedSynchronizer]]></title><link>https://blog.youkuaiyun.com/little_programmer_/article/details/106574007</link><guid>https://blog.youkuaiyun.com/little_programmer_/article/details/106574007</guid><author>little_programmer_</author><pubDate>Fri, 05 Jun 2020 18:32:39 +0800</pubDate><description><![CDATA[java高并发、多线程（五）AbstractQueuedSynchronizer
AbstractQueuedSynchronizer
AbstractQueuedSynchronizer（AQS）提供一个框架，用于实现依赖先进先出（FIFO）等待队列的阻塞锁和相关同步器（信号量，事件等）。
首先我们来看看它的源码结构：
public abstract class AbstractQueuedSynchronizer
        extends AbstractOwnableSynchronizer
 ]]></description><category></category></item><item><title><![CDATA[算法与数据结构（二）--二分法]]></title><link>https://blog.youkuaiyun.com/little_programmer_/article/details/106564999</link><guid>https://blog.youkuaiyun.com/little_programmer_/article/details/106564999</guid><author>little_programmer_</author><pubDate>Fri, 05 Jun 2020 11:49:05 +0800</pubDate><description><![CDATA[算法与数据结构（二）--二分法二分法定义练习
二分法定义
二分法（Bisection method） 即一分为二的方法. 设[a，b]为R的闭区间. 逐次二分法就是造出如下的区间序列([an，bn])：a0=a，b0=b，且对任一自然数n，[an+1，bn+1]或者等于[an，cn]，或者等于[cn，bn]，其中cn表示[an，bn]的中点。（百度百科）
练习
1.找出有序数组里是否包含某个数字
	public static boolean NumIsExist(int[] sortedArr,int nu]]></description><category></category></item><item><title><![CDATA[算法与数据结构（一）--排序算法（一）]]></title><link>https://blog.youkuaiyun.com/little_programmer_/article/details/106555121</link><guid>https://blog.youkuaiyun.com/little_programmer_/article/details/106555121</guid><author>little_programmer_</author><pubDate>Thu, 04 Jun 2020 18:07:13 +0800</pubDate><description><![CDATA[排序算法

选择排序

/**
     * 选择排序 O(n^2)
     * @param arr
     */
    public static void selctionSort(int [] arr) {
        for (int i = 0;i &lt; arr.length - 1; i++) {
            int minIndex = i;
            for (int j = i + 1;j &lt; arr.length;j++) {
      ]]></description><category></category></item><item><title><![CDATA[java高并发、多线程（四）--AtomicInteger]]></title><link>https://blog.youkuaiyun.com/little_programmer_/article/details/106552012</link><guid>https://blog.youkuaiyun.com/little_programmer_/article/details/106552012</guid><author>little_programmer_</author><pubDate>Thu, 04 Jun 2020 17:14:17 +0800</pubDate><description><![CDATA[java高并发、多线程（四）AtomicInteger
AtomicInteger
在上一节中我们举了下面这样一个例子：
public class SynchronizedTest {

    static int count = 0;
    public synchronized static void add() {
        for (int i = 0; i &lt; 10000; i++) {
            count++;
        }
    }

    publi]]></description><category></category></item><item><title><![CDATA[java高并发、多线程（三）--synchronized]]></title><link>https://blog.youkuaiyun.com/little_programmer_/article/details/106540087</link><guid>https://blog.youkuaiyun.com/little_programmer_/article/details/106540087</guid><author>little_programmer_</author><pubDate>Thu, 04 Jun 2020 11:36:25 +0800</pubDate><description><![CDATA[java高并发、多线程（三）synchronized加锁的方式synchronized的性质synchronized锁升级优化注意事项
synchronized
先看下面例子：
public class SynchronizedTest {
    static int count = 0;
    public static void add() {
        for (int i = 0; i &lt; 10000; i++) {
            count++;
        }
  ]]></description><category></category></item><item><title><![CDATA[java高并发、多线程(二)--volatile]]></title><link>https://blog.youkuaiyun.com/little_programmer_/article/details/106526593</link><guid>https://blog.youkuaiyun.com/little_programmer_/article/details/106526593</guid><author>little_programmer_</author><pubDate>Wed, 03 Jun 2020 16:37:08 +0800</pubDate><description><![CDATA[java高并发、多线程（二）volatile
volatile
volatile的主要作用是保证线程间的可见性，被用于修饰共享变量。
先看一个例子：
public class VolatileTest extends Thread{

    private boolean running = true;

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + "]]></description><category></category></item><item><title><![CDATA[java高并发、多线程（一）--实现]]></title><link>https://blog.youkuaiyun.com/little_programmer_/article/details/106492519</link><guid>https://blog.youkuaiyun.com/little_programmer_/article/details/106492519</guid><author>little_programmer_</author><pubDate>Wed, 03 Jun 2020 15:09:29 +0800</pubDate><description><![CDATA[java高并发、多线程（一）实现多线程的方式两种实现方式的区别线程状态
实现多线程的方式
实现多线程一般由两种方式，一种是继承Thread类，另一种是继承Runnable接口。
public class CreateThread {

    /*方式一:继承Thread类,并重写run()*/
    static class MyThread extends Thread{
        @Override
        public void run() {
            System.]]></description><category></category></item></channel></rss>