杂谈

作者: 不存在的里皮 | 来源:发表于2019-04-27 07:56 被阅读0次

一点随笔,胡扯,有很多自己还没学习验证的地方。

IEEE conference模板使用中文

原文使用IEEE Conferences Latex 模板撰写中文学报 还提到了导入图片

\documentclass[conference]{IEEEtran}
\usepackage{CJKutf8}

\begin{document}
\begin{CJK}{UTF8}{gbsn}

\section{第一部分}
这里是第一部分

\end{CJK}
\end{document}

装饰者模式和代理模式的区别

代理模式中,中介类与委托类的关系在编写中介类时就确定了,而装饰者模式的装饰关系是在运行时才知道。
意思就是,在代理模式中,中介类知道被代理的对象是谁,而在装饰者模式中,中介类的代理对象是由构造函数赋予的。

//装饰器模式
public class Decorator implements Component{
        private Component component;
        // 无法确定装饰的对象是哪个具体类
        public Decorator(Component component){
            this.component = component
        }
       public void operation(){
            ….
            component.operation();
            ….
       }
}

//装饰器的客户
public class Client{
        public static void main(String[] args){
            // 编程者指定了装饰者需要装饰的是哪一个类
            Component component = new Decorator(new ConcreteComponent());
           ...
        }
        ...

redis与netty的reactor模式的体现?


  • netty工作机制如下:netty工作模型
    netty中,有bossGroup和workerGroup。

    1. bossGroup中,每个线程维护一个包装的ServerSocket,监听一个端口。ServerSocket监听到新连接后,得到Socket并包装,并注册到workerGroup其中一个EventLoop所维护的selector上。每个workerGroup有多个EventLoop,每个EventLoop维护着一个Selector实例,类似单线程Reactor模式地工作着(参考)
    2. workerGroup有多个线程通过多路复用监听读写事件。每个EventLoop都是一个单线程Reactor模型,不断循环 监听事件的发生->取出激活的socket->依次处理事件->监听事件的发生。
  • redis中,由多路复用监听连接、读写事件,触发事件的socket被放置到队列中。文件事件分派器从队列中一个一个取出触发了事件的socket。再转交给对应的事件处理器处理事件。因为由单线程一个一个处理事件,所以redis是单线程的。

epoll实现、事件处理、编程方式、LT ET

LT/ET
Level Triggered (LT) 水平触发

  • socket接收缓冲区不为空 有数据可读 读事件一直触发
  • socket发送缓冲区不满 可以继续写入数据 写事件一直触发

事件的触发是以缓冲区的空/满状态决定的,只要状态满足,就会触发。

java nio

既然如此,java的nio是水平触发吗?
我写了此文进行探究,结论是java nio是水平触发。

另外如果读过博客,我们知道,Linux epoll的水平触发是以"缓冲区空满状态"来判断的。这里"缓冲区空满"是如何判断的?如果读过《unix网络编程》可知道,在linux
内核,每一个socket会对应一个输入缓冲区和输出缓冲区
,这里的"缓冲区空满"应当就是指那两个缓冲区了。

redis源码查看

ae.c/aeProcessEvents(其中包含文件事件分派器)为主的源码让我受益匪浅。该函数作用是完成事件处理的一次循环
ae_epoll.c/aeApiPoll函数讲述了redis如何用epoll实现事件监听

内存一致性

如何保证线程在切换到另一个CPU上运行之前,cache里的变量已经被写回内存?因为如果没写回内存,其它CPU的cache就会读到错误的数据。
答:内存一致性协议

如何为ppt引入透明背景矢量图

当想做校徽时,网上下载的jpg, png校徽图片,往往底色是白色,而如果放在别的颜色背景上,会显得突兀。如何解决呢?你需要引入矢量图。

  1. 首先在网上搜索出矢量图片格式的校徽, 比如.cdr, .ai文件.
  2. 下载打开adobe illustrator cs6, 打开矢量图片
  3. 将图片存储为.svg格式
  4. 将svg图片导入ppt
    这样导入的图片, 底色就是透明的了

参考:

  1. ppt导入透明背景矢量图
  2. 图片去底色
  3. 中山大学ppt模板 下载付费, 看着模板自己能做个一样的

相关文章

网友评论

      本文标题:杂谈

      本文链接:https://www.haomeiwen.com/subject/qphfnqtx.html