导语

个人感悟,持续更新中。。。

正文

  1. 无论NIO还是AIO,都没有在数据传输过程(tcp/udp)作革命性的创新。他们在传输过程的效率和传统BIO是一样的,还是会产生阻塞(网络延迟,Socket缓冲区满了或空了),他们通过在OS层对Socket进行统一管理,进行事件管理。避免了进程级的线程开销和线程阻塞(线程是JVM资源,这些都会阻塞线程栈,产生内存消耗和CPU时间片和上下文切换时间),JVM进程只需要一个线程来进行事件处理(不会阻塞)。也就是说,BIO,NIO,AIO的本质(Socket)其实是一样的,只不过把矛盾转移到了OS层(select,poll,epoll)。
  2. 调用一个对象的方法可以理解为在给这个对象发送一个通知。
  3. HTTP是一种文本协议。所谓的文本协议是指,传输的数据可以通过文本表达出可读的内容。HTTP传输的数据可以用ASCII字符集解析成可读的文本,如请求行,请求头。文件上传时文件分隔符可以解析成文本,文件的的内容可能是二进制的,但是它不是协议的内容(协议不会定义数据具体内容,它只定义了一个容器,用来传递数据,无论是二进制数据还是文本数据)。与此相关的,Google ProtoBuf是一种二进制协议。
  4. 线程的阻塞状态和IO阻塞状态不是一回事。线程的阻塞是线程栈中的代码正在等待临获取临界区的锁。而IO的阻塞状态是包含在线程的Runnable状态的。详细
  5. CPU能认识的就仅仅是中断线和中断处理程序这些概念。所谓线程,进程,软中断等概念,是软件发明出来的,CPU是不认识的。所谓线程,本质上是保存CPU运行状态的一种形式,CPU的运行状态,就是CPU的所有寄存器的内容的集合(包括用来控制中断的寄存器),线程的作用就是可以把这些寄存器都保存下来(其实还有软件本身的堆栈等其他信息,但我们这里不关心软件,先忽略),然后用另一个保存的状态刷新CPU的状态,让CPU感觉自己在运行到另一个上下文上。OS对CPU不断进行状态的切换,保存上一个状态,加载下一个线程的状态,就实现线程切换了。至于进程,本质上可以认为是线程切换的同时也会切换地址空间。这里我们混用这两个概念。详细
  6. 中断和上下文切换: 通知操作系统发生了外部事件的机制是中断当前运行线程并将控制转移到中断处理程序。在中断处理程序可以运行之前,必须保存足够的硬件状态以保证在中断处理完成后系统能恢复线程的上下文。新调用的中断处理程序将经历在硬件层次结构中上移带来的所有延迟(除了页面故障)。如果该中断处理程序最近没有运行过(或者中间程序很节约时间),那么它的任何代码或数据不太可能保留在 TLB 或高速缓存中。当再次调度已中断的线程时,它的执行上下文(如寄存器内容)逻辑上将得到恢复,以便它可以正确运行。然而,TLB 和高速缓存的内容必须根据程序的后继请求重新构造。因此,作为中断的结果,中断处理程序和被中断的线程都可能遇到大量的高速缓存未命中和 TLB 未命中延迟。
  7. 系统调用,陷入内核。详细
  8. 比较int大小时,如果简单的使用 a - b > 0来判断会很不安全。因为如果差值可能是int范围的两倍。如最大正数减最小负数。差值会溢出,截取低位。从而产生难以预见的错误。
  9. 字节流和它的包装流,只能被读取一次。读完一次后在读会读不到数据。两种方式解决:重置流和将流读出来缓存后重复使用。
  10. java类中硬编码的字符串长度最大为2个字节表达的长度,即65536。因为类的常量池中字符串类型常量的长度标志位为两个字节。否则无法通过编译检查。但是在运行时在内存中动态生成的字符串不受此限制。

一些小Tip的更多相关文章

  1. 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果

    去年盛夏之时,曾写过“小tip: 使用CSS将图片转换成黑白”一文,本文的模式以及内容其实走得是类似路线.CSS3 → SVG → IE filter → canvas. 前段时间,iOS7不是瓜未熟 ...

  2. [转] 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果 ---张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=3804 去年盛夏之时, ...

  3. CSS小tip整理

    CSS小tip整理 1.利用css在列表靠头和末尾添加箭头: /* 左箭头*/ ol a[rel="prev"]:before { content: "\00AB&quo ...

  4. 小tip:CSS vw让overflow:auto页面滚动条出现时不跳动——张鑫旭

    小tip:CSS vw让overflow:auto页面滚动条出现时不跳动 这篇文章发布于 2015年01月25日,星期日,23:08,归类于 css相关. 阅读 46274 次, 今日 91 次 by ...

  5. 小tip: 某简单的字符重叠与图形生成----张鑫旭

    引言 字符重叠不是什么稀奇的东西. 如1像素错位模拟阴影效果: 或者powerFloat中展示的带边框三角: 以及其他很多. 但是技术这东西不是豆腐,老了可以吃,臭了也可以吃:那我这里还拿着个说事作甚 ...

  6. 小tip: 使用CSS将图片转换成黑白(灰色、置灰)[转]

        小tip: 使用CSS将图片转换成黑白(灰色.置灰) 这篇文章发布于 2012年08月19日,星期日,20:41,归类于 css相关, SVG相关. 阅读 159943 次, 今日 146 次 ...

  7. 【小TIP】记录各种错误【更新中】

    最好程序一遍通过,为了提高代码能力,这里将用TIP的形式记录来犯过的错误.不断更新中. *已经转移到闪存.. [150214]WA:检查是否数组开小了. [150212]WA:如果程序中有乘号,需要留 ...

  8. 几个加速Swift开发的小tip

    又是周五了,周末不要浪,一起学点Swift!本周再次为大家带来了一些Swift的小技巧,都是些奇淫巧计,不知道也无妨,但Swift最吸引我的一点就是它的简洁易用.主要内容有: private(set) ...

  9. 小tip:CSS vw让overflow:auto页面滚动条出现时不跳动

    原文地址:http://www.zhangxinxu.com/wordpress/?p=4552 一.水平居中布局与滚动条跳动的千年难题 当前web届,绝大多数的页面间布局都是水平居中布局,主体定个宽 ...

  10. 小tip:纯CSS让overflow:auto页面滚动条出现时不跳动

    本文转载于张鑫旭博客,原文地址:http://www.zhangxinxu.com/wordpress/?p=4552 一.水平居中布局与滚动条跳动的千年难题 当前web届,绝大多数的页面间布局都是水 ...

随机推荐

  1. juniper srx系列配置端口映射 转载

    http://www.cnblogs.com/pinpin/p/9895815.html

  2. spark SQL (二) 聚合

    聚合内置功能DataFrames提供共同聚合,例如count(),countDistinct(),avg(),max(),min(),等.虽然这些功能是专为DataFrames,spark SQL还拥 ...

  3. linux yum rpm 和 apt-get dpkg 安装、卸载软件

      一般来说著名的linux系统基本上分两大类:   1.RedHat系列:Redhat.Centos.Fedora等   2.Debian系列:Debian.Ubuntu等   RedHat 系列  ...

  4. OpenCV4.4.0 安装测试 Installation & Examination (Ubuntu18.04, Ubuntu 20.04)

    OpenCV4.4.0 安装测试 Installation & Examination (Ubuntu18.04, Ubuntu 20.04) 单纯简单的 OpenCV 安装配置方法,在这个地 ...

  5. Codeforces Round #657 (Div. 2) B. Dubious Cyrpto(数论)

    题目链接:https://codeforces.com/contest/1379/problem/B 题意 给出三个正整数 $l,r,m$,判断在区间 $[l,r]$ 内是否有 $a,b,c$ 满足存 ...

  6. Tomacat目录以及服务器配置文件信息

    一. 1.Tomacat的启动: 在我的windows10中我下载的是8.5版本的tomacat,我就是通过".sh"文件来打开和关闭tomacat 要打开.sh文件还需要 这个G ...

  7. aop详解与实战

    1. 什么是AOP aop:面向切面编程.采用横向机制. oop:面向对象编程.采用纵向机制. AOP,面向切面编程.就是通过某个切入点(比如方法开始.结束)向某个切面(被切的对象)切入环绕通知(需要 ...

  8. Markdown基本语法学习(使用Typora编辑器)

    Markdown基本语法学习(使用Typora编辑器) 一级标题:就用 #加标题名字 二级标题 二级标题:## + 标题名字 三级标题 三级标题:### + 标题名字 四级标题 四级标题:#### + ...

  9. 支撑性服务 & 自动化

    连载传送门: 什么是云原生? 云原生设计理念 .NET 微服务 谈到云原生,绕不开"容器化" Backing services 云原生系统依赖于许多不同的辅助资源,例如数据存储.消 ...

  10. 国产网络损伤仪 SandStorm -- 只需要拖拽就能删除链路规则

    国产网络损伤仪SandStorm可以模拟出带宽限制.时延.时延抖动.丢包.乱序.重复报文.误码.拥塞等网络状况,在实验室条件下准确可靠地测试出网络应用在真实网络环境中的性能,以帮助应用程序在上线部署前 ...