<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Roger_1900的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Roger_1900</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Roger_1900]]></copyright><item><title><![CDATA[CSS常见选择器]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/139899202</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/139899202</guid><author>Roger_1900</author><pubDate>Sun, 23 Jun 2024 14:38:29 +0800</pubDate><description><![CDATA[注意：id选择器和类选择器的优先级高于通配符选择器。所以在样式修改中可以用通配符选择器进行大的框架设定，使用id选择器或者类选择器进行微调。]]></description><category></category></item><item><title><![CDATA[HTML常用标签简明汇总]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/139887569</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/139887569</guid><author>Roger_1900</author><pubDate>Sat, 22 Jun 2024 20:40:12 +0800</pubDate><description><![CDATA[HTML中，引号大小与(" ’ > < &)需要转义之后才能使用。]]></description><category></category></item><item><title><![CDATA[JAVA进阶 THREAD学习12 多线程小结]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/138862588</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/138862588</guid><author>Roger_1900</author><pubDate>Tue, 14 May 2024 20:44:42 +0800</pubDate><description><![CDATA[首先有前面的分析得出多线程的安全问题是由的混乱导致的。]]></description><category></category></item><item><title><![CDATA[JAVA进阶 THREAD学习11 多线程案例04 线程池]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/138812661</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/138812661</guid><author>Roger_1900</author><pubDate>Mon, 13 May 2024 22:45:21 +0800</pubDate><description><![CDATA[线程池可以看成是一个公司的额定员工。当有任务时，如果当前员工数量没有达到额定员工数，公司就会另外雇一个实习生去完成任务；如果当前员工数达到额定员工数，公司就会在接下来的计划里面安排上这个任务，等公司里的员工空闲了再让他们做。]]></description><category></category></item><item><title><![CDATA[JAVA进阶 THREAD学习10 多线程案例--计时器]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/138770754</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/138770754</guid><author>Roger_1900</author><pubDate>Sun, 12 May 2024 23:45:28 +0800</pubDate><description><![CDATA[两量两类MyTimeTaskWorker两方法MyTimer()schedule()]]></description><category></category></item><item><title><![CDATA[JAVA进阶 THREAD学习09 多线程案例--阻塞队列]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/138725327</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/138725327</guid><author>Roger_1900</author><pubDate>Sat, 11 May 2024 21:42:31 +0800</pubDate><description><![CDATA[阻塞队列会让需要操作的数据处在一个较为稳定的范围内（队列的长度范围内），控制数据的操作速率，解决了问题1和2.而且阻塞队列会将所需要操作的数据进行排序，保证了访问次序，解决了问题3.包饺子的人不需要知道是谁擀的皮，也不需要知道擀皮的人是用擀面杖擀、用罐头擀或者是直接去超市买的，他只需要把盘子里的皮过来包就行了。擀皮的人不需要知道下一个是谁用他擀的皮去包饺子，也不需要知道包的饺子是什么样子的，他只需要擀好了就往盘子上放就好了。就好比大家一起包饺子，一拨人擀皮，一拨人包。4个基本内容：存、移、变、释。]]></description><category></category></item><item><title><![CDATA[JAVA进阶 THREAD学习09 多线程案例--单例模式]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/138706521</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/138706521</guid><author>Roger_1900</author><pubDate>Sat, 11 May 2024 12:21:38 +0800</pubDate><description><![CDATA[私有的声明实现了类的单一声明，只能在类的内部声明这个类，在类的外部不能声明。私有构造实现了类的单一实例化(new)，只能在本类里面实例化，避免外部的实例化。这是单例类的唯一外部访问方法，只有这个方法才能获取该类的信息。]]></description><category></category></item><item><title><![CDATA[JAVA进阶 THREAD学习08 wait()和notify()方法]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/138685075</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/138685075</guid><author>Roger_1900</author><pubDate>Sat, 11 May 2024 01:06:54 +0800</pubDate><description><![CDATA[个人感觉wait()和notify()方法的关系可以用“解铃还须系铃人”这句话来概括。当一个线程对一个对象使用方法，即这个线程在等待这个对象，可以看成；当这个对象使用了方法后，可以看成，被这个对象“系铃”的线程就被唤醒了。当然线程的，notify不能确定唤醒的线程，可以看成“系的铃”太多了，盲解一个应付。那么如果需要这个对象“系铃”的所有线程就可以使用notifyAll()，后，线程的运行不是按照顺序，而是需要的。]]></description><category></category></item><item><title><![CDATA[JAVA进阶 THREAD学习07 volatile关键字]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/138680065</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/138680065</guid><author>Roger_1900</author><pubDate>Fri, 10 May 2024 21:47:05 +0800</pubDate><description><![CDATA[在输入的数值不是0时也不会结束循环，我们来解析一下这个过程。这里存在两个线程，但由于线程t1和线程t2不在同步状态，所以当t2还没获取输入的数时，t1就已经判断结束了。接下来我们验证一下这个猜想。将线程开始和结束进行打印来监视线程的运行顺序，将counter.flag进行打印监视它的值。这里主线程就直接运行，将counter.flag的值给打印出来了，然后两个线程才会运行。]]></description><category></category></item><item><title><![CDATA[JAVA进阶 Thread学习06 synchronized关键字]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/138548034</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/138548034</guid><author>Roger_1900</author><pubDate>Wed, 08 May 2024 00:26:30 +0800</pubDate><description><![CDATA[在前面的文章中被称为,其实它的名称还不只这个,它也叫.但是这里为了方便理解就把它。]]></description><category></category></item><item><title><![CDATA[JAVA进阶 Thread学习05 线程风险]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/138491187</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/138491187</guid><author>Roger_1900</author><pubDate>Mon, 06 May 2024 17:03:56 +0800</pubDate><description><![CDATA[这里是我们正常情况下对线程使用的理想结果，即两个线程都把count计算满。那么如果不让t1使用join()去等待，结果会怎么样呢？可以看到每次得出的结果都是不一样的。而只让其中一个等待join()结果也是一样不固定的。更有意思的是当两个线程都不等待join()的时候其结果是固定的0这里不符合预期的结果都表明这个线程是不安全的。也就是说，的情况下，通常在单线程情况下，我们称这个线程是的。这里多一嘴，讲讲。]]></description><category></category></item><item><title><![CDATA[JAVA进阶 Thread学习04 线程的状态]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/138464185</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/138464185</guid><author>Roger_1900</author><pubDate>Sun, 05 May 2024 16:11:34 +0800</pubDate><description><![CDATA[可以看到当线程刚刚被实例化的时候(也就是被new出来的时候)，这个时候的状态就是NEW了。使用yield之前kunkun和tiantianquan是一半一半的执行运行，在使用yield之后kunkun的运行明显比tiantianquan少了很多。这里的synchronized关键字是作为同步锁使用的，作用是将线程按顺序同步起来，使之处于同一个时间排序的运行状态(个人是这样理解的)。当一个线程使用yield()方法的时候，如果出现和其他线程冲突的情况会放弃自身的cpu使用，到后面去排队。]]></description><category></category></item><item><title><![CDATA[JAVA进阶 Thread学习03 线程的属性以及常见方法]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/138439614</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/138439614</guid><author>Roger_1900</author><pubDate>Sat, 04 May 2024 23:28:00 +0800</pubDate><description><![CDATA[volatile关键字修饰的Boolean可以在Runnable和main沟通Thread类内部自带返回类型是boolean的变量作为是否被interrupt的标记方法名方法介绍中断的执行方法，用来中断对象相关联的线程，线程如果堵塞则通过异常通知，否则设定标记位判断是否设置中断标记位，调用销毁标记位判断是否设置中断标记位，调用不销毁标记位while(!System.out.println(Thread.currentThread().getName() + "正在转钱");try{]]></description><category></category></item><item><title><![CDATA[JAVA进阶 Thread学习02 创建线程]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/138400125</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/138400125</guid><author>Roger_1900</author><pubDate>Thu, 02 May 2024 22:08:35 +0800</pubDate><description><![CDATA[细心的小伙伴会发现为什么第一个方法是在Thread()后直接接上花括号创建内部类,而第二个方法是在Thread后的()内new了一个Runnable()之后再接上花括号.这是为什么呢?获取当前线程对象的时候,方法一可以直接使用this来获取也可以使用Thread.currentThread来获取,方法二只能用Thread.currentThread来获取.因为内部类创建对象是直接new一个类后直接接{}然后再花括号{}内写需要的方法.就像第一个方法一样,这个是常规的内部类构造.(参数) -> {方法体}]]></description><category></category></item><item><title><![CDATA[JAVA进阶 Thread学习01]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/138398995</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/138398995</guid><author>Roger_1900</author><pubDate>Thu, 02 May 2024 20:46:48 +0800</pubDate><description><![CDATA[怎么来理解呢？可以把一个个进程看成一个一个小房间，而线程就是房间里面划分出来的座位，每一个进程都最少有一个线程。进程就把总的内存空间分配成房间一样的小块的内存空间，而线程就可以在这样的空间里面运行。]]></description><category></category></item><item><title><![CDATA[API简易理解]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/136758543</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/136758543</guid><author>Roger_1900</author><pubDate>Sat, 16 Mar 2024 10:56:26 +0800</pubDate><description><![CDATA[假如你有一个可以存钱的仓库，每个人都可以在里面存钱取钱。如果让你自己对每一个人的钱都进行管理就很麻烦，而最省力的管理办法就是每个人自己存钱，自己记录。这里涉及到的步骤有：存钱的人拿着钱到仓库把钱放进仓库拿小本本记录所存的钱离开仓库可是这些都是建立在每个人都是诚实守信的情况下，如果小明存了100￥但是记录了10000￥，你就有麻烦了。因此你需要一个仓库管理员小娜来帮助你管理这些钱并执行这些操作。外边的客户将钱交给小娜小娜将钱存入仓库小娜记录存入的金额小娜反馈给客户客户离开仓库。]]></description><category></category></item><item><title><![CDATA[android碎片fragment的使用]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/136634802</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/136634802</guid><author>Roger_1900</author><pubDate>Mon, 11 Mar 2024 20:59:50 +0800</pubDate><description><![CDATA[fragment依赖activity生存，activity与fragment的关系是一对多的关系。]]></description><category></category></item><item><title><![CDATA[Java学习第十天]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/135012785</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/135012785</guid><author>Roger_1900</author><pubDate>Fri, 15 Dec 2023 11:18:57 +0800</pubDate><description><![CDATA[Java中的String是由char[]作为底层，且无set之类的方法修改内部字符数组。]]></description><category></category></item><item><title><![CDATA[计算整型数在二进制编码中1的个数]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/131936425</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/131936425</guid><author>Roger_1900</author><pubDate>Wed, 26 Jul 2023 12:32:45 +0800</pubDate><description><![CDATA[1.​​我们都知道二进制计数中从左到右第一位是2的0次方，第二位是2的1次方，以此类推。2.当n位次上存放1时，该位数表示的是2^n（二的n次方）3.且下一位的数会比前面所有位的数加起来都要大。]]></description><category></category></item><item><title><![CDATA[switch语句]]></title><link>https://blog.youkuaiyun.com/Roger_1900/article/details/131893768</link><guid>https://blog.youkuaiyun.com/Roger_1900/article/details/131893768</guid><author>Roger_1900</author><pubDate>Mon, 24 Jul 2023 13:41:27 +0800</pubDate><description><![CDATA[switch是切换的意思，case是情况的意思顾名思义switch case就是根据判断的值切换到某种情况的意思。]]></description><category></category></item></channel></rss>