<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Array_new的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Array_new</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Array_new]]></copyright><item><title><![CDATA[Java使用Time实现发送邮件提醒]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/132139242</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/132139242</guid><author>Array_new</author><pubDate>Mon, 07 Aug 2023 09:16:57 +0800</pubDate><description><![CDATA[由于时间可能不是确定的某一天，而是一段的时间内需要执行的业务，就像我们平时的闹钟一样提醒，所以时间节点使用Time存储，只含有时分秒的时间结构。在项目的开发中需要这样的一种业务，需要对客户设置到点提醒。我们可以使用定时任务的方式去实现。时间设置每隔一分钟查询一次。]]></description><category></category></item><item><title><![CDATA[WebSocket整合直播]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/132049525</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/132049525</guid><author>Array_new</author><pubDate>Tue, 01 Aug 2023 19:42:22 +0800</pubDate><description><![CDATA[由于浏览器不支持对于rtmp协议推拉流，所以需要后台对传输的数据进行处理，将数据转接，为了实现其实时性，使用websocket将数据传输。先使用obs和vlc测试正常的推拉流是否正常。设置1秒时长的延迟，防止服务器因为拉流崩溃。对音视频解析转为二进制流传递给前端。使用JavaCV技术传输音视频。然后在跑本地后台传输视频。]]></description><category></category></item><item><title><![CDATA[NIO基础]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/131779044</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/131779044</guid><author>Array_new</author><pubDate>Tue, 18 Jul 2023 09:17:14 +0800</pubDate><description><![CDATA[Java NIO（New IO）是从 Java 1.4 版本开始引入的一个新的 IO API，可以替代标准的 Java IO API。NIO 与原来的 IO 有同样的作用和目的，但是使用方式完全不同，NIO 支持面向缓冲区的、基于通道的 IO 操作。NIO 将以更加高效的方式进行文件的读写操作。若事件未就绪，调用 selector 的 select() 方法会阻塞线程，直到 channel 发生了就绪事件。若需要使用 NIO 系统，需要获取用于连接 IO 设备的通道以及用于容纳数据的缓冲区。]]></description><category></category></item><item><title><![CDATA[关于服务器被黑这件事儿]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/131150646</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/131150646</guid><author>Array_new</author><pubDate>Sun, 11 Jun 2023 10:25:58 +0800</pubDate><description><![CDATA[在我登入好久不用的服务器的时候登不进去，看后台cpu飙到200%，一下给我整蒙了，重启服务器，再次进入用top命令查看进程，发现kdevtmpfsi进程的事儿，我直接用kill -9 命令给它清理出去过了一分钟左右这个东西又重新的飙上去了还是200%，在网上搜索发现这是一个典型的挖矿病毒。查看kdevtmpfsi相关文件并删除find / -name "kdevtmpfsi"查看系统定时任务crontab -l 发现可疑任务。再用crontab -e把可疑定时任务删除。妈妈再也不用担心服务器cpu烧了。]]></description><category></category></item><item><title><![CDATA[布隆过滤器]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/130909508</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/130909508</guid><author>Array_new</author><pubDate>Sun, 28 May 2023 09:33:03 +0800</pubDate><description><![CDATA[当一个元素加入布隆过滤器中的时候，会进行如下操作：使用布隆过滤器中的哈希函数对元素值进行计算，得到哈希值（有几个哈希函数得到几个哈希值）。得到值之后判断位数组中的每个元素是否都为 1，如果值都为 1，那么说明这个值在布隆过滤器中，如果存在一个值不为 1，说明该元素不在布隆过滤器中。相比于我们平时常用的的 List、Map、Set 等数据结构，它占用空间更少并且效率更高，但是缺点是其返回的结果是概率性的，而不是非常准确的。理论情况下添加到集合中的元素越多，误报的可能性就越大。]]></description><category></category></item><item><title><![CDATA[Mysql日志]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/130782057</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/130782057</guid><author>Array_new</author><pubDate>Sat, 20 May 2023 15:28:47 +0800</pubDate><description><![CDATA[undo log和redo log记录物理日志不一样，它是逻辑日志，可以认为当delete一条记录时，undo log中会记录一条对应的insert日志，反之亦然，当update一条记录时，它记录一条对应相反的update日志。该日志文件由俩部分组成日志缓冲（redo log buffer）以及重做日志文件（redo log file），前者是在内存中，后者在磁盘中，当事务提交之后会把所有修改的信息都存到该日志文件中，用于刷新脏页到磁盘，发生错误时，进行数据恢复和使用。undo log日志。]]></description><category></category></item><item><title><![CDATA[Mysql存储过程]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/130528171</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/130528171</guid><author>Array_new</author><pubDate>Sat, 06 May 2023 15:20:48 +0800</pubDate><description><![CDATA[MDL锁主要作用是维护表元数据的数据一致性，在表上有活动事务的时候，不可以对元数据进行写入操作，避免DML与DDL冲突。系统变量是MySQL服务器提，不是用户定义的，属于服务器层面，分为全局变量（GLOBAL）、会话变量（SESSION）。对整个数据库实例加锁，加锁后整个实例就处于只读状态，后续的DML语句，DDL语句，已经更新操作的事务提交语句都将被阻塞。用户根据需要自己定义的变量，用户变量不用提前声明，在用的时候直接用“@变量名”使用就可以。锁粒度最小，发生锁冲突的概率最低，并发度最高。]]></description><category></category></item><item><title><![CDATA[RocketMq消息]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/130395062</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/130395062</guid><author>Array_new</author><pubDate>Wed, 26 Apr 2023 21:35:28 +0800</pubDate><description><![CDATA[/            System.out.println("消息ID"+sendResult.getMessageQueue().getQueueId());System.out.println("消息ID"+sendResult.getMessageQueue().getQueueId());System.out.println("发送异常："+throwable.getMessage());对没有Commit/Rollback的事务消息（pending状态的消息），从服务端发起一次回查。]]></description><category></category></item><item><title><![CDATA[RocketMq集群搭建]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/130171909</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/130171909</guid><author>Array_new</author><pubDate>Sat, 15 Apr 2023 16:48:17 +0800</pubDate><description><![CDATA[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9yhIWPJt-1681547798802)(D:\JavaWeb\Mybatis\MyBatis的笔记\MyBatis\img\image-20230411172320848.png)]]]></description><category></category></item><item><title><![CDATA[JUC多线程学习]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/130045128</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/130045128</guid><author>Array_new</author><pubDate>Sun, 09 Apr 2023 17:51:58 +0800</pubDate><description><![CDATA[【代码】JUC多线程学习。]]></description><category></category></item><item><title><![CDATA[Rabbitmq了解]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/129908533</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/129908533</guid><author>Array_new</author><pubDate>Sun, 02 Apr 2023 11:24:40 +0800</pubDate><description><![CDATA[轮询分发的特点是将消息轮流发送给每个消费者，在实际情况中，多个消费者，难免有的处理得快，有的处理得慢，如果都要等到一个消费者处理完，才把消息发送给下一个消费者，效率就大大降低了。通过消息队列来实现 RPC 功能，客户端发送消息到消费队列，消息内容其实就是服务端执行需要的参数，服务端消费消息内容，执行程序，然后将结果返回给客户端。而公平分发的特点是，只要有消费者处理完，就会把消息发送给目前空闲的消费者，这样就提高消费效率了。一对多模式，一个生产者，多个消费者，一个队列，每个消费者从队列中获取唯一的消息。]]></description><category></category></item><item><title><![CDATA[初尝MQ队列]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/129769987</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/129769987</guid><author>Array_new</author><pubDate>Sat, 25 Mar 2023 21:07:02 +0800</pubDate><description><![CDATA[AMQP：（advanced message queuing protocol） ，一个提供统一消息服务的应用层标准高级消息队列协议，是应用层协议的一个开放标准，为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息并不受客户端/中间件不同产品、不同开发语言等条件的限制。MQ全称：Message Queue（消息队列），是在消息的传输过程中保存消息的容器，多用于分布式系统之间进行通信。RabbitMQ简介。]]></description><category></category></item><item><title><![CDATA[Java内存模型]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/129641441</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/129641441</guid><author>Array_new</author><pubDate>Sat, 18 Mar 2023 19:29:17 +0800</pubDate><description><![CDATA[JMM通过控制主内存与每个线程的本地内存之间的交互，保证Java程序的可见性。同步是指程序中用于不同线程的操作发生相对顺序的机制。Java并发采用的是共享内存模型。final域的重排序规则。volatile特性。]]></description><category></category></item><item><title><![CDATA[synchronized理解]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/129477073</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/129477073</guid><author>Array_new</author><pubDate>Sun, 12 Mar 2023 16:10:33 +0800</pubDate><description><![CDATA[（1）FixedThreadPool和SingleThreadPool 这两个工厂方法所创建的线程池，工作队列（任务排队的队列） 的长度都为Integer.MAX_VALUE，可能会堆积大量的任务，从而导致 OOM（即耗尽内存资源）。固定数量的线程池的线程数量能比较稳定的保证一个数，避免频繁的回收线程和创建线程，固适用于处理CPU密集型任务，在CPU被工作线程长时间占用时，能确保尽可能少的分配线程。抛弃最老任务策略，也就是说如果队列满了，就会将最早进入队 列的任务抛弃，从队列中腾出空间，再尝试加入队列。]]></description><category></category></item><item><title><![CDATA[初尝并行编程]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/129326913</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/129326913</guid><author>Array_new</author><pubDate>Fri, 03 Mar 2023 20:38:27 +0800</pubDate><description><![CDATA[（1）FixedThreadPool和SingleThreadPool 这两个工厂方法所创建的线程池，工作队列（任务排队的队列） 的长度都为Integer.MAX_VALUE，可能会堆积大量的任务，从而导致 OOM（即耗尽内存资源）。固定数量的线程池的线程数量能比较稳定的保证一个数，避免频繁的回收线程和创建线程，固适用于处理CPU密集型任务，在CPU被工作线程长时间占用时，能确保尽可能少的分配线程。抛弃最老任务策略，也就是说如果队列满了，就会将最早进入队 列的任务抛弃，从队列中腾出空间，再尝试加入队列。]]></description><category></category></item><item><title><![CDATA[JVM面试总结]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/129174466</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/129174466</guid><author>Array_new</author><pubDate>Thu, 23 Feb 2023 09:07:58 +0800</pubDate><description><![CDATA[双亲委派模型的工作过程是：如果一个类加载器收到了类加载的请求，它首先不会 自己去尝试加载这个类，而是把这个请求委派给父类加载器去完成，每一个层次的类加 载器都是如此，因此所有的加载请求最终都应该传送到最顶层的启动类加载器中，只有 当父加载器反馈自己无法完成这个加载请求（它的搜索范围中没有找到所需的类）时， 子加载器才会尝试自己去完成加载。标记出所有需要回收的对象，在标记完成后，统一回收掉所有被标记的对 象，也可以反过来，标记存活的对象，统一回收所有未被标记的对象。]]></description><category></category></item><item><title><![CDATA[JVM内存布局]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/129111542</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/129111542</guid><author>Array_new</author><pubDate>Sun, 19 Feb 2023 16:37:22 +0800</pubDate><description><![CDATA[heap（堆）通过new关键字创建的对象都会使用堆内存特点：他是线程共享的，堆中的对象都需要考虑线程安全的问题由垃圾回收机制。]]></description><category></category></item><item><title><![CDATA[类加载子系统]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/128696451</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/128696451</guid><author>Array_new</author><pubDate>Sun, 15 Jan 2023 18:19:22 +0800</pubDate><description><![CDATA[解析动作主要针对类或接口、字段、类方法、接口方法、方法类型等。直接引用就是直接指向目标的指针、相对偏移量或一个间接定位到目标的句柄。使用 BinaryViewer软件查看字节码文件，其开头均为 CAFE BABE ，如果出现不合法的字节码文件，那么将会验证不通过。这里不包含用final修饰的static，因为final在编译的时候就会分配好了默认值，准备阶段会显式初始化。注意：这里不会为实例变量分配初始化，类变量会分配在方法区中，而实例变量是会随着对象一起分配到Java堆中。]]></description><category></category></item><item><title><![CDATA[JVM内存模型]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/128173133</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/128173133</guid><author>Array_new</author><pubDate>Sun, 04 Dec 2022 15:27:16 +0800</pubDate><description><![CDATA[JMM 即 Java Memory Model，它定义了**主存（共享内存）、工作内存（线程私有）**抽象概念，底层对应着 CPU 寄存器、缓存、硬件内存、 CPU 指令优化等。JMM体现在以下几个方面退出不出的循环
为什么无法退出该循环原子性可见性有序性多线程下的指令重排会影响安全性可以使用double-checked locking模型实现单例以上的实现优点是：但在多线程的情况下，上面的代码有问题JDK1.5以后的版本的voltile才会有效happens-before规则线程对volatile变量的写]]></description><category></category></item><item><title><![CDATA[JVM之方法的调用]]></title><link>https://blog.youkuaiyun.com/Array_new/article/details/128053764</link><guid>https://blog.youkuaiyun.com/Array_new/article/details/128053764</guid><author>Array_new</author><pubDate>Sat, 26 Nov 2022 16:40:39 +0800</pubDate><description><![CDATA[随着高级语言的横空出世，类似于Java一样的基于面向对象的编程语言如今越来越多，尽管这类编程语言在语法风格上存在一定的差别，但是它们彼此之间始终保持着一个共性，那就是都支持封装、继承和多态等面向对象特性，既然这一类的编程语言具备多态特性，那么自然也就具备早期绑定和晚期绑定两种绑定方式。早期绑定就是指被调用的目标方法如果在编译期可知，且运行期保持不变时，即可将这个方法与所属的类型进行绑定，这样一来，由于明确了被调用的目标方法究竟是哪一个，因此也就可以使用静态链接的方式将符号引用转换为直接引用。]]></description><category></category></item></channel></rss>