java堆与栈的区别


    1.Java的堆是一个运行时数据区,类的对象从堆中分配空间。这些对象通过new等指令建立,通过垃圾回收器来销毁。
    2.堆的优势是可以动态地分配内存空间,需要多少内存空间不必事先告诉编译器,因为它是在运行时动态分配的。但缺点是:由于需要在运行时动态分配内存,所以存取速度较慢。

    1.栈中主要存放一些基本数据类型的变量(byte/short/int/long/float/double/boolean/char)和对象的引用。
    2.栈的优势是,存取速度比堆快,栈数据可以共享。缺点是:存放在栈中的数据占用多少内存空间需要在编译时确定下来,缺乏灵活性。

more >>

firewall限制或开放IP及端口

一.查看防火墙状态
    首先查看防火墙是否开启,如未开启,需要先开启防火墙并作开机自启。

1
systemctl status firewalld

    开启防火墙并设置开机自启

1
2
systemctl start firewalld
systemctl enable firewalld

    一般需要重启一下机器,不然后面做得设置可能不会生效

more >>

优秀的代码都是如何分层的?

1.背景
    说起应用分层,大部分人都会认为这个不是很简单嘛,就controller、service、mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做得逻辑比service还多,service往往当做透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦。

more >>

Spring Cloud微服务架构

服务架构
    为了方便理解,我先讲一个小故事:(改编自一知乎答主)
    Martin(微服务提出者也叫Martin)刚来到公司时是一个基层员工,它上面有经理、老板,那个时候所有人都听老板的指挥。但是过了两年,公司的人越来越多,原来的模式下整个公司的运作效率太低,管理也很混乱。于是已经踏上中层岗位的Martin建议老板进行部门划分(服务化),专门的部门只做专门的事情(单一职责)。例如:研发部门只做研发,人事部门只做招聘。老板听取了Martin的意见,对公司的组织架构进行了调整。
    有一天,Martin发现公司的部门越来越多,各个部门并不能完全知道对方所做的事情,这对跨部门协作(服务调用)带来了困难。行政部门会(服务注册)来记录所有的部门,每当有新的部门行政都会记录下来(服务注册),然后公布出来让所有部门知道(服务发现)。在新的组织架构下,公司的效率逐步提高。老板也给Martin发了大量奖金作为奖励,Martin从此走上了人生巅峰。

more >>

Redis 6.0新特性

1.Redis6.0之前的版本真是单线程吗?
    Redis处理客户端的请求时,包括获取(socket 读)、解析、执行、内容返回(socket 写)等都由一个顺序串行的主线程处理,这就是所谓的“单线程”。但如果严格来讲从Redis4.0之后并不是单线程,除了主线程外,他也有后台线程在处理一些较为缓慢的操作,例如清理脏数据、无用连接的释放、大key的删除等等。

more >>

一个TCP连接可以发多少个HTTP请求

    从URL在浏览器被输入到页面展现的过程中发生了什么?相信大多数准备过的同学都能回答出来,但是如果继续问:收到的HTML如果包含几十个图片标签,这些图片是以什么方式、什么顺序、建立了多少连接、使用什么协议被下载下来的呢?
    要搞懂这个问题,我们需要先解决下面五个问题:
        1.现代浏览器在于服务器建立一个TCP连接后是否会在一个HTTP请求完成后断开?什么情况下会断开?
        2.一个TCP连接可以对应几个HTTP请求?
        3.一个TCP连接中HTTP请求发送可以一起发送吗(比如一起发三个请求,再三个响应一起接收)?
        4.为什么有的时候刷新页面不需要重新建立SSL连接?
        5.浏览器对同一HOST建立TCP连接到数量有没有限制?

more >>

Redis使用规范

一.键值设计
    1.key名设计
        可读性和可管理性
            以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务表:表名:id

1
ugc:video:1

        简洁性
            保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如:

1
2
3
user:{uid}:friends:messages:{mid}
简化为:
u:{uid}:fr:m:{mid}

        不要包含特殊字符
            反例:包含空格、换行、单双引号以及其他转义字符。

more >>