0%

通常我们需要编写好的错误处理方式,在了避免某些程序员滥用异常,于是Go这里直接把异常这一块给砍掉了,最终还是通过返回值来判断程序的异常情况,毕竟Go可是支持多返回值的语言,比如atoi、itoa等函数,就不能忽略它的第二个返回值,因为第二个返回值代表了转换是否成功!不过Golang还是提供了一些错误处理机制的

mark

Go是一种面向对象的语言吗?

关于Go是一种面向对象的语言吗这种问题,官方的解释是难说,说不准,这回答就有意思了!在我看来尽管Go具有类型和方法,并允许使用面向对象的编程风格,但没有类型层次结构。 Go的接口完全提供了一种不同的方法,可以将类型嵌入其他类型,达到继承的效果,其实又完全不同于继承,因为Go其中一个特点是可以为任何类型的数据定义方法,所以再讨论Go是不是面向对象的语言的时候还是可以先体验体验Go的Functional Programming

mark

记录了一下最近学习golang语言遗忘的和模糊的知识点,主要涵盖主函数退出返回值、如何编写测试程序、如何定义常量、golang的类型转换、golang中的预定义值、指针与其他语言的差异(主要是C语言),以及运算符等等!

mark

本篇主要是讲述了数组和切片、Map的初始化方式与基本使用、重点阐述了如何使用Map实现Set、用Map实现工厂模式,以及字符串的使用,字符串常用API、Unicode与UTF8的关系!

mark

mark

Alibaba Java Coding Guidelines

写代码怎么能没有规范呢?这款插件是伴随阿里巴巴编码约规出现的,自我感觉是必须要安装的插件

Lombok

以前的Java项目中,充斥着太多不友好的代码:各种getter/setter/toString;异常处理;I/O流的关闭操作等等,这些样板代码既没有技术含量,又影响着代码的美观,Lombok必备!不要忘记引入Lombok依赖

阻塞式IO与非阻塞式IO

传统的IO流都是阻塞式的。也就是说,当一个线程调用read() 或write()时,该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务。因此,在完成网络通信进行IO操作时,由于线程会阻塞,所以服务器端必须为每个客户端都提供一个独立的线程进行处理,当服务器端需要处理大量客户端时,性能急剧下降。

Java NIO是非阻塞模式的。当线程从某通道进行读写数据时,若没有数据可用时,该线程可以进行其他任务。线程通常将非阻塞IO的空闲时间用于在其他通道上执行I0操作,所以单独的线程可以管理多个输入和输出通道。因此,NIO可以让服务器端使用一个或有限几个线程来同时处理连接到服务器端的所有客户端。

NIO的通道

通道( Channel) :由java.nio.channels包定义的。Channel 表示IO源与目标打开的连接。Channel类似于传统的“流”, 只不过Channel本身不能直接访问数据,Channel只能与Buffer进行交互。

应用程序与磁盘之间的数据写入或者读出,都需要由用户地址空间和内存地址空间之间来回复制数据,内存地址空间中的数据通过操作系统层面的IO接口,完成与磁盘的数据存取。在应用程序调用这些系统IO接口时,由CPU完成一系列调度、任务分配,在早期这些IO接口都是由CPU独立负责。所以当发生大规模读写请求时,CPU的占用率很高。

mark

mark

Java NIO简介

Java NIO (New IO/Non Blocking IO),官方给的定义是New IO,但是我们也可以当作是Non Blocking IO,即非阻塞式IO,是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支 持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。