自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

翻译 [疯狂Java]JDBC:JDBC/ODBC基本概念、MySQL基本命令、SQL语句基本概念

1. JDBC基本概念:    1) 即Java Database Connectivity的简称,即Java数据库连接;    2) 它是一组API,提供连接数据库、执行SQL查询并返回查询结果的功能;    3) JDBC夸平台、跨数据库:         i. JDBC本身就是基于JVM的,因此JDBC必然跨平台;         ii. 跨数据库是JDBC的一种典型的面

2016-03-31 14:10:05 1367

翻译 [疯狂Java]UDP:MulticastSocket实现组播

1. 组播——多点广播:    1) 可以看到如果使用DatagramSocket很那实现广播的功能,至少需要用一个Set集合来保存用户发来的数据报(或是取出其中的字段加以保存),但是有一个严重的问题是UDP并不记录客户端的状态,上一秒发送了数据报下一秒也许客户端就关闭socket了,这些事情服务器端无法知晓(因为UDP是无连接),如果是TCP一旦客户端断开了连接那么服务器端的socket就会

2016-03-29 12:36:49 8209 1

翻译 [疯狂Java]UDP:接收发送数据报、获取接收到的数据报的相关信息

1. Java的UDP模型:    1) DatagramSocket是UDP的socket,由于它只是个码头只能发货和收货,因此它就只有两个方法,一个是send用来发送数据报,一个即使receive用来接收数据报;    2) 由于DatagramSocket只是个码头,因此只能绑定自己的IP地址和端口(构造器),不能在构造器中指定目的地的IP地址和端口,码头怎么会自己移动呢?因此只能绑

2016-03-28 11:20:02 5703 1

翻译 [疯狂Java]UDP:UDP协议的概念

1. 面向无连接、不可靠的UDP协议:    1) UDP和TCP都位于OSI的传输层,但是和TCP相比有很大的不同;    2) UDP不可靠:         i. 是面向无连接的,而TCP是面向连接的(通信时建立虚拟连路,确认连接后才进行通信),而UDP直接发送和接受数据,不先建立连接;         ii. UDP只能保证两端的socket发送和接收数据,不管对方状态就直

2016-03-28 10:00:57 634

翻译 [疯狂Java]TCP:半关闭Socket

1. 怎样表示输入或输出的结束:    1) 都知道TCP通信其实就是用客户端(Socket对象)的socket传递数据的,传递数据都是通过Socket类获取InputStream和OutputStream的;    2) 一般最纠结的就是不知道对方的输出什么时候结束,前面给出的示例都没有处理输出结束(对方)的问题,除非你直接关闭程序否则输出永远都不会结束;    3) 都知道只要关闭

2016-03-24 22:12:21 3056

翻译 [疯狂Java]TCP:协议字符、记录客户端信息

1. 这里用一个示例介绍TCP通信常用的技术:    1) 一般需要自定义双方之间通信的规则,比如用某个标志来代表你是红钻、黄钻还是想私聊或者群聊之类的;    2) 这类规则就得在数据包中用协议字符来表示,协议字符是自定义的,是通信双方交流的约定;    3) 而通常服务器需要记录客户端的信息,比如登录信息之类的,这就需要在客户端发送请求的时候将这些信息都一并发送,服务器端可以抽取并

2016-03-24 16:48:12 653

翻译 [疯狂Java]TCP:TCP协议的概念、Socket通信、超时等待

1. TCP协议的概念:    1) 之前通过URLConnection建立连接、请求、响应所依赖的协议仅仅是IP协议,IP协议的终极目的是允许不同设备(不同OS)接入互联网;    2) IP协议的不可靠性:         i. IP协议仅仅负责数据的运输,可以说就是一个运输工;         ii. 它只负责无脑地将数据包从一端送到另一端;         iii. 非

2016-03-23 14:22:42 3122

翻译 [疯狂Java]网络:GET/POST请求、设置请求属性、获取响应属性

1. 利用URLConnection发送GET和POST请求:    1) 其实不管是发送GET还是POST请求都需要一些必不可少的步骤,这些步骤不外乎:         i. 构造URL对象;         ii. 用URL对象打开一个连接句柄conn;         iii. 在实际发送请求之前先对conn的请求属性进行设置(setProperty等);       

2016-03-22 21:45:22 6371

翻译 [疯狂Java]网络:URL、URLConnection

1. URL类:    1) 其对象用来表示一个URL地址;    2) URL格式:protocol://host_name:port/resource_path?arg1=val1&arg2=val2...    3) 构造器:URL(String spec); // spce就是一个URL地址(字符串)    4) 通过URL提供的对象方法获取关于URL的信息:

2016-03-21 21:18:05 918

翻译 [疯狂Java]网络:URL编解码(URLDecoder、URLEncoder)

1. URL地址中出现的乱码:    1) 当URL地址中使用中文等非西欧字符时会出现诸如%B7%C5...之类的乱码;    2) 其实这不是乱码,只是一种编码而已,国际规定URL地址中的字符统一使用一种MIME码,即“application/x-www-form-urlencoded”,该编码规定所有西欧字母(包括英文字母等)可以直接使用,但是中文等非西欧语言的字符需要进行编码; 

2016-03-21 14:56:48 1706

翻译 [疯狂Java]网络:IP地址和端口号

1. IP地址和端口号:    1) IP地址用于在网络中唯一标识一台机器(通信实体),是一个32位整数,通常用4个0-255的十进制数标识;    2) 端口号用于唯一标识通信实体上进行网络通讯的程序,同一台机器上不能用有两个程序占用同一个端口:         i. 端口号是一个16位整数,共有3类;         ii. 公认端口:0-1023,它们紧密绑定一些特定的服务(

2016-03-21 14:30:31 3244

翻译 [疯狂Java]多线程:线程组、线程/组内异常处理

1. 线程组:    1) ThreadGroup类,Java用来批量管理线程的集合单位;    2) 线程组的3大性质:         i. 每个线程必须要有一个所属的线程组,可以再创建线城时指定(重载版本的构造器),如果没有指定则分配到默认线程组(父线程所在的线程组);         ii. 线程所属的线程组一旦确定就不能再改变,Java并没有提供修改线程组的方法;

2016-03-18 22:09:00 712

翻译 [疯狂Java]多线程:线程通信(监控器信号、Condition信号、阻塞队列)

1. 线程通信的概念:    1) 即线程之间以信号的方式(发送/接收信号)相互协调,协调的内容是调度;!!通常调度都是有调度器完成的,程序员无法插手(完全是透明的),但不过在有些情况下还是有人为控制调度的需求;    2) 说一个典型的场合:多条线程协同完成一项任务,其中线程B依赖线程A的计算结果,如果A没有计算那么B就需要等待A的结果才能执行,这里可能会想到用join线程,但是jo

2016-03-18 16:08:01 1505

翻译 [疯狂Java]线程同步:同步监视器、同步方法、同步锁、死锁

1. 并发访问带来的线程安全问题:    1) 设想当多个线程刚好在同时时间访问一个公共资源时会怎么样?    2) 如果仅仅是读取那个资源那没什么问题,但如果要修改呢?同时修改必然会发生冲突导致数据不一致的错误(最典型的就是同时写一个文件);    3) 在实际问题中最典型的就是银行取钱问题,如果多人刚好同时用同一个账号取钱就会发生错误,而这种错误往往是非常严重的错误;    4

2016-03-17 14:43:19 5295 1

翻译 [疯狂Java]多线程:线程控制(join、daemon、sleep、yield、优先级)

1. join——插入等待:    1) 可以在线程1中调用线程2的join方法,将线程2插入在线程1中,线程1必须等待线程2执行完后才会继续执行;    2) 看上去很像直接调用一个普通方法(把代码贴到这个位置),但如果只join一个线程是如此,如果有多个线程各种组合join就会变得非常灵活了;    3) 原型:public final void join(); // 即主调线程会

2016-03-17 12:30:06 1026

翻译 [疯狂Java]多线程:线程的生命周期

1. 线程生命周期中的5大状态:    1) 线程并非一启动(start)就立即进入运行状态,即使运行了也不会一直占用CPU资源,而是个线程之间不停轮换执行;    2) 线程5大状态:新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)、死亡(Stop);    3) 其中可分为两类,一类是静态(新建、死亡),一类是动态(就绪、运行、阻塞);

2016-03-17 11:33:40 767

翻译 [疯狂Java]多线程:创建和启动线程

1. 创建和启动线程的三种方法:    1) 继承Thread类;    2) 实现Runnable接口;    3) 实现Callable和Future接口;2. 继承Thread类:    1) 步骤很简单:         i. 构造自定义的线程类继承Thread类;         ii. 实现其中的run方法,run方法就代表了该线程要完成的任务;

2016-03-16 16:00:26 885

翻译 [疯狂Java]多线程:进程和线程的概念

1. 进程:    1) 进程是指正在内存中执行的程序;    2) 注意进程和程序之间的区别:         i. 程序是保存在磁盘中静态的指令集;         ii. 进程是程序被加载入内存后正在动态执行的指令集合;         iii. 因此进程拥有自己的生命周期和不同的状态;     3) 进程的独立性:         i. 进程是系统进行资源分配和

2016-03-16 15:10:07 710

翻译 [疯狂Java]Swing

1. Swing概述:    1) Swing采用100%纯Java实现,因此彻底与平台无关,这种不依赖平台的GUI成为轻量级GUI,而和平台有关的AWT则是重量级GUI;    2) 由于不依赖平台,因此无需像AWT那样组件要取各平台的交集,Swing提供大量丰富、复杂的组件;    3) 同样由于不依赖平台,因此不会出现和平台相关的Bug,这是从AWT到Swing的一个重大的跨越;

2016-03-16 11:13:22 458

翻译 [疯狂Java]AWT拖放操作:拖放源

1. 拖放操作的介质:    1) 拖放操作的目的:就是为了程序之间的数据交流,更重要的是程序和操作系统之间的交流,因此如果拖放操作只在Java程序之间进行基本上是毫无意义的,拖放操作的初衷就是为了让操作系统上各程序之间可以进行交流,其中最最主要的形式就是程序和操作系统之间的数据交流;    2) 之前的示例就是拿操作系统的资源管理器作为拖放源,从那里拖动文件到Java程序中,很显然操作系

2016-03-15 22:30:00 1064

翻译 [疯狂Java]AWT:拖放功能、拖放目标

1. 拖放操作:    1) 是GUI界面提供的一种基本功能,即将一个GUI目标(一个图标、一段选中的文字等)通过鼠标拖动到另一个地方并释放来完成某种操作;    2) 最常见的就是利用拖放来完成复制、剪切的工作,而通过将一个文件的图标拖动到一个程序的图标来打开该文件也是一种常见的拖放操作;    3) 通过拖放操作实施的复制、剪切通常称为复制、移动(例如把一个文件拖到另一个文件夹中可

2016-03-15 16:17:25 1846

翻译 [疯狂Java]AWT剪切板:本地(系统)剪切板传递Java对象

1. 构造可以传递任意Java对象的Transferable类——DataFlavor的本质:    1) JDK同样没有提供这样的实现,只不过StringSelection使用的是stringFlavor格式标签,图像类实现Transferable使用的是imageFlavor,而任意Java对象的传递使用的DataFlavor稍有特殊,JDK并没有提供静态常量表示这一格式标签,最主要原因是

2016-03-14 22:22:54 1823 3

翻译 [疯狂Java]AWT剪切板:图像传递

1. 自己实现传递的图像的Transferable类:    1) JDK只给Transferable接口提供了StringSelection的实现类(即JDK只默认实现了文本传递),但没有提供图像传递类的实现,主要是因为图像格式千变万化,处理起来各不相同,因此JDK只是在DataFlavor中保留了一个标签imageFlavor用以让用户自己实现传递图像的Transferable类;

2016-03-14 14:30:08 1070

翻译 [疯狂Java]AWT剪切板:剪切板概念、文本传递

1. 剪切板的概念:    1) 剪切板用于程序之间或者程序中数据的复制粘贴,它其实是一个数据缓冲区,复制时将数据暂存在该缓冲区中,粘贴时从缓冲区取出数据写到目标程序中,该缓冲区就是剪切板;    2) 剪切板是依赖运行平台的(操作系统),剪切板一般是操作系统提供的一下非常基础的功能,剪切板中的临时数据放在内存中缓存,在Windows中可以用C:\windows\system32\目录下的

2016-03-10 12:17:25 1135

翻译 [疯狂Java]AWT:位图IO

1. 位图的磁盘读写:ImageIO    1) AWT允许从磁盘中读取位图并向磁盘中写入位图(必然是按照位图的格式读写了);    2) AWT为位图IO提供的工具就是ImageIO类,只不过IO时使用的都是ImageIO的静态方法,并不需要创建ImageIO的对象之类,就当C语言的函数用就行了,非常方便;2. ImageIO支持的位图格式:它有4个静态方法可以返回全部支持的

2016-03-09 14:59:39 756

翻译 [疯狂Java]AWT:位图传送(内存镜像/缓冲)

1. AWT位图处理机制:    1) 如果AWT只能绘制简单的几何图形那会显得过于单调,因此AWT允许绘制位图,可以将位图作为组件的外观;    2) AWT表现位图的机制:         i. 因为位图比较复杂,最好是一次性画到屏幕上,比如之前讲过的例子,如果位图里有两条线,那么你一次将两条线同时画到屏幕上一定要比分别画两条线到屏幕上要快很多;         ii. 因此位

2016-03-08 21:57:35 943

翻译 [疯狂Java]AWT:绘图、动画

1. 绘图三方法:    1) AWT绘图的核心就是三个方法:paint、update、repaint;    2) 三者的调用关系是repaint调用update,update调用paint;    3) 首先看paint,就是画出一个组件的外观,比如一个按钮,那就是按钮上的文字、边框、纹理、3D效果等,整个组件的外观都由paint来绘制;    4) 接下来是update,就是

2016-03-08 13:15:12 3741

翻译 [疯狂Java]AWT:右键菜单

1. 上下文菜单——右键菜单:    1) 顾名思义就是鼠标右键打开的菜单,它也叫上下文菜单;    2) 之所以叫上下文菜单是因为右击的位置不一样弹出的浮动菜单显示的内容可能不同;    3) 比如:在Word中在文本编辑区域右键弹出的菜单和左侧导航栏中右键菜单的内容是完全不同的,可以见右键菜单的具体内容是依赖所属的区域或者右击在哪个GUI组件中,右击区域不同显示内容就不同,因此它是

2016-03-07 21:38:33 1875

翻译 [疯狂Java]AWT:菜单栏、菜单、菜单项、菜单事件处理

1. 菜单栏、菜单、菜单项之间的关系:    1) 菜单栏(MenuBar)就是窗口中常见的顶层菜单栏,包含文件、编辑、格式等等子菜单的菜单条,即包含菜单的容器;    2) 菜单(Menu)是必定包含菜单项或者菜单(嵌套包含菜单,也叫子菜单)的容器;    3) 菜单项(MenuItem)即最小单位,即可以单击产生特效的菜单按钮,存在于菜单中的元素;!!注意:Menu是MenuI

2016-03-07 16:56:04 17127 1

翻译 [疯狂Java]监听器的实现:内部(闭包)、反射、外部

1. 用内部类和闭包实现监听器:    1) 之前讲的所有形式都是内部类实现监听器,即在类内部定义一个监听器;    2) 但最常用的还是闭包了,即匿名内部类和Lambda表达式:         i. 因为监听器通常都是临时使用的代码,往往不会在其它地方被复用;         ii. 即使要复用肯定会被抽象到业务逻辑层面单独编写;         iii. 因此通常为了方便

2016-03-07 11:04:29 1299

翻译 [疯狂Java笔记]事件处理:事件类型、监听器接口、事件适配器

1. 不同类型事件对应不同类型的监听器接口:    1) 总的来说就是实现了该种类型的接口,就能监听并处理该种类型的事件;    2) 常见的事件类型有ActionEvent、WindowEvent、TextEvent(文本框中产生的事件,比如正在输入文字等)、MouseEvent(鼠标事件)等;    3) AWT都分别为各种事件类型准备了监听器接口:ActionListener、W

2016-03-05 14:25:54 5484

翻译 [疯狂Java笔记]事件处理:Java事件处理模型

1. Java事件处理三要素:    1) 事件源(Event Source):即事件发生的场所,就是指各个组件,如按钮等,点击按钮其实就是组件上发生的一个事件;    2) 事件(Event):事件封装了组件上发生的事情,比如按钮单击、按钮松开等等;    3) 事件监听器(Event Listener):负责监听事件源上发生的特定类型的事件,当事件到来时还必须负责处理相应的事件;

2016-03-05 13:35:39 8533 6

翻译 [疯狂Java笔记]AWT:Dialog对话框类、FileDialog文件对话框

1. 创建对话框:   1) Dialog是Window的子类,属于特殊容器,用于和用户交互,必定要实现事件监听和处理的接口;   2) Dialog是一种可以独立存在的顶级窗口,当然通常都是具有父窗口的(即依赖于其他窗口产生),但Dialog的父窗口必须是Frame,这是规定好的;   3) 构造器:Dialog(Frame owner, String title, boolean

2016-03-03 14:20:40 8118 1

翻译 [疯狂Java笔记]AWT:常用组件

1. 常用组件:    1) 这里先不演示Canvas(画布,在后面绘图中会讲到)、Scrollbar(滚条)、ScrollPane|Panel|Frame(之前讲过了);    2) 按钮类:         i. Button:非常常见的单击按钮,Button(String Label); // 需要按钮上的文本标签         ii. Checkbox:复选框;

2016-03-03 13:36:30 900

翻译 [疯狂Java笔记]AWT:BoxLayout盒式布局、Box容器

1. BoxLayout——盒式布局:    1) 这是Swing中新引入的一种布局,为了弥补GridBagLayout过于复杂的缺点;    2) 但其并不是一种GridBagLayout的替代品,而是结合前面的流式、方位式等形成更丰富灵活的布局模式,目的是为了和之前的布局模式嵌套组合;    3) 这里的盒子是一种单向布局盒子,一个盒子同时只能具有一种方向的排列,要么纵向要么横向(

2016-03-02 16:00:44 8178

翻译 [疯狂Java笔记]AWT:CardLayout卡堆布局

1. CardLayout——卡堆布局:    1) 顾名思义就是一堆卡片,只有最上面的那张卡片可见,每张卡片存放一个组件,只有最上面的那个组件才是可见的,底下的都会被遮盖住;    2) 构造器:         i. 默认无参构造器:CardLayout();         ii. 指定和边界的间隔:CardLayout(int hgap, int vgap); // 指定了

2016-03-02 13:12:05 751

翻译 [疯狂Java笔记]AWT:GridLayout网格布局、GridBagLayout网格袋布局

1. GridLayout——网格布局:   1) 网格顾名思义就是纵横分割大小一样的格网,每个格子都是矩形的,且大小相等,每个格子只能存放一个组件;   2) 构造器:最大的特点就是必须指定格网是几行几列的        i. 指定行列:GridLayout(int rows, int cols);        ii. 同时指定格子之间的间距:GridLayout(int ro

2016-03-02 12:59:22 7478 1

翻译 [疯狂Java笔记]AWT:BorderLayout方位布局

1. BorderLayout——方位布局:    1) 布局分为东西南北中五个方位,每个方位中只能放一个组件,如果同时放了多个组件,那么后放入的就会覆盖之前放入的,这点非常值得注意!    2) 如果添加组件时没有指定放在哪个方位则默认放在中;    3) 当BorderLayout布局的容器改变大小(发生拉伸)时,南北位只会水平伸缩,东西位只会垂直伸缩,而中会同时在水平和垂直方向上

2016-03-02 12:56:05 4531

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除