java
灯塔先生
这个作者很懒,什么都没留下…
展开
-
面经整理-多线程
https://blog.csdn.net/u012294820/article/details/78721543?locationNum=2&fps=1原创 2018-05-26 10:29:10 · 308 阅读 · 0 评论 -
并发编程的艺术--第三章:Java内存模型
Java内存模型的基础处理两个关键问题:线程之间如何通信及线程之间如何同步?这里的线程是指并发执行的活动实体,通信是指线程之间以何种机制来交换信息。同步是指程序中用于控制不同线程间操作发生相对顺序的机制。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信。在消息传递的并发模型里,线程之间没有公共状...原创 2018-05-25 21:56:49 · 166 阅读 · 0 评论 -
JS&JQ
文件对象模型DOM(document Object Model)原创 2018-05-14 09:07:37 · 260 阅读 · 0 评论 -
Java--反射、标注、类加载器
Class类:描述Java中的一切类事务。Class实例代表内存中的一份字节码,所谓字节码就是当Java虚拟机加载某个类的对象时,首先需要把硬盘上该类的二进制源码编译成class文件的二进制代码(字节码),然后把class文件的字节码加载到内存中,之后再创建该类的对象。如何获取Class类的对象,即相应类的字节码呢?1、调用相应类对象的getClass()方法Data data;Class dat...原创 2018-04-20 22:23:33 · 104 阅读 · 0 评论 -
算法--二叉查找树
二叉查找树将链表插入的灵活性和有序数组查找的高效性结合起来import edu.princeton.cs.algs4.Queue;/** * P252 算法3.3 基于二叉查找树的符号表(有序) * @author he */public class BST<Key extends Comparable<Key>, Value> { private Node root;//...原创 2018-04-19 17:24:01 · 139 阅读 · 0 评论 -
算法--查找
无序链表中的顺序查找import edu.princeton.cs.algs4.Stack;/** * 算法 3.1 顺序查找(基于无序链表) * @author he */public class SequentialSearchST<Key, Value> { private Node first;// 链表首结点 private int N; // 链表元素个数 private...原创 2018-04-17 21:18:41 · 175 阅读 · 0 评论 -
并发编程的艺术--第四章-java并发编程基础
线程简介启动一个Java程序,操作系统就会创建一个Java进程。现代操作系统调度的最小单元是线程,也叫轻量级进程(LightWeight Process),在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。处理器在这些线程上高速切换,让使用者感觉到这些线程在同时执行。使用多线程的原因主要有以下几点:(1)更多的处理器核心;(2)更快的响应时...原创 2018-05-27 16:49:55 · 256 阅读 · 0 评论 -
并发编程的艺术--第五章-Java中的锁
内容主要围绕两个方面:使用,通过示例演示这些组件的使用方法以及详细介绍与锁相关的API;实现,通过分析源码来剖析实现细节,因为理解实现的细节方能更加得心应手且正确地使用这些组件。Lock接口锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁)。它提供了与synchronized关键字类似的同步功能,只是...原创 2018-05-28 10:48:20 · 438 阅读 · 0 评论 -
TCP的多线程聊天室
在服务器端应该包含多条线程,每个Socket对应一条线程,该线程负责读取Socket对应的输入流的数据(从客户端发送过来的数据),并将读到的数据向每个Socket输出流发送一遍(将一个客户端发送的数据广播给其他客户端),因此需要在服务端使用List来保存所有的Socket。服务器端提供两个类:创建ServerSocket监听的主类;处理每个Socket通信的线程类;public ...原创 2018-08-04 16:57:24 · 339 阅读 · 0 评论 -
并发编程的艺术--第六章-Java并发容器和框架
ConcurrentHashMap的实现原理与使用在并发编程中使用HashMap可能导致程序死循环。而使用线程安全的HashTable效率又非常低下,基于以上两个原因,便有了ConcurrentHashMap的登场机会。(1)线程不安全的HashMapHashMap在并发执行put操作时会引起死循环,是因为多线程会导致HashMap的Entry链表形成环形数据结构,一旦形成环形数据结构,Entry...原创 2018-06-01 17:28:51 · 419 阅读 · 0 评论 -
并发编程的艺术--第九章-Java中的线程池
线程池的实现原理从图中可以看出,当提交一个新任务到线程池时,线程池的处理流程如下。1)线程池判断核心线程池里的线程是否都在执行任务。如果不是,则创建一个新的工作线程来执行任务。如果核心线程池里的线程都在执行任务,则进入下个流程。2)线程池判断工作队列是否已经满。如果工作队列没有满,则将新提交的任务存储在这个工作队列里。如果工作队列满了,则进入下个流程。3)线程池判断线程池的线程是否都处于工作状态。...原创 2018-06-05 22:28:09 · 104 阅读 · 0 评论 -
并发编程的艺术--第一章:挑战;第二章:并发机制底层原理
并发的目的:让程序执行更快。当并发执行累加操作不超过百万次时,速度会比串行执行累加操作要慢。那么,为什么并发执行的速度会比串行慢呢?这是因为线程有创建和上下文切换的开销。如何减少上下文切换减少上下文切换的方法有无锁并发编程、CAS算法、使用最少线程和使用协程。·无锁并发编程。多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一些办法来避免使用锁,如将数据的ID按照Hash算法取模分段,...原创 2018-05-24 19:51:49 · 190 阅读 · 0 评论 -
并发编程的艺术--第8章:Java中的并发工具类
等待多线程完成的CountDownLatchCountDownLatch允许一个或多个线程等待其他线程完成操作。假如有这样一个需求:我们需要解析一个Excel里多个sheet的数据,此时可以考虑使用多线程,每个线程解析一个sheet里的数据,等到所有的sheet都解析完之后,程序需要提示解析完成。在这个需求中,要实现主线程等待所有线程完成sheet的解析操作,最简单的做法是使用join()方法。j...原创 2018-06-05 15:53:01 · 115 阅读 · 0 评论 -
Java--Swing
1、JFrame容器,其实是一个窗口,可以当作组件的调色板。可修改的属性:get/setTitle()--获取/设置帧的标题; get/setState()--...最大化、最小化等状态; is/setVisible()--...帧的可视状态,是否在屏幕上显示; ge...原创 2018-04-16 22:38:39 · 131 阅读 · 0 评论 -
算法--基础算法--栈、队列、背包(链表实现)、动态数组
游离:保留一个不需要的对象的引用. foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。 语法格式: for(type x : conllection){ ...原创 2018-03-28 21:22:19 · 138 阅读 · 0 评论 -
Java--I/O与文件操作
Java中的操作类都存放在java.io包中,最重要的就是5个类和1个接口。5个类分别是File、OutputStream、InputStream、Writer、Reader,一个接口是Serializable。File类:1、创建文件使用File类中public boolean createNewFile() throws IOException{},使用了throws关键字,必须使用try.....原创 2018-03-17 17:12:47 · 479 阅读 · 0 评论 -
java-面向对象
* 1.面向对象的编程关注于类的设计* 2.设计类实际上就是设计类的成员* 3.类的常见成员:属性(成员变量或Field) & 方法(Method)& 构造器属性:定义该类或该类的实例所包含的数据。方法:定义该类或该类的实例的行为特征或功能实现。构造器:创建对象。系统为类提供了一个默认的构造器。 一旦程序员为一个类提供了构造器,系统将不再为该类提供构造器。 ...原创 2018-03-10 17:51:25 · 112 阅读 · 0 评论 -
javaSE--新的开始
今天开始,希望认真学习每一个知识点,踏踏实实,不要看数量,要看质量。你永远不知道自己可以做到什么地步!go go go原创 2018-03-09 20:32:16 · 73 阅读 · 0 评论 -
Java--网络与通信编程
TCP编程TCP/IP通信协议是一种可靠的网络协议,在两端各自建立一个Socket,通过Socket产生IO流进行网络通信。对象ServerSocket用于监听来自客户端的Socket连接请求。//创建一个ServerSocket,用于监听客户端Socket的连接请求ServerSocket ss=new ServerSocket(30000);//采用循环不断接受来自客户端的请求while(tr...原创 2018-03-23 22:47:14 · 168 阅读 · 0 评论 -
算法--排序(快速)
快速排序import edu.princeton.cs.algs4.StdRandom; //运行前先导入algs4包public class Quick { // 快速排序的切分 private static int partition(Comparable[] a, int lo, int hi) { int i = lo, j = hi + 1;// 左右扫描指针 Comparable...原创 2018-04-10 20:07:33 · 171 阅读 · 0 评论 -
Java--事件处理
事件处理过程涉及3类对象:Event Source(事件源):事件发生的场所,通常就是各个组件,例如按钮、窗口、菜单等。Event(事件):事件封装了GUI组件上发生的特定事情。Event Listener(事件监听器):负责监听事件源所发生的事件,并对各种事件做出响应处理。实现AWT事件处理机制的基本步骤:1、实现事件监听器类,该监听器类是一个特殊的Java类,必须实现一个XxxListener...原创 2018-04-14 21:24:54 · 2182 阅读 · 0 评论 -
Java--AWT
容器Java图形用户界面最基本组成部分是组件(Component),组件不能独立显示出来,必须将组件放在一定的容器才能显示出来。容器java.awt.Container是Component的子类,在一个容器中可以容纳多个组件。所有容器可以通过方法add()向容器中添加组件。类Component有四个常用方法设置组件的大小、位置和可见性:setLocation(int x,int y):设置组件位置...原创 2018-03-21 22:21:37 · 1484 阅读 · 0 评论 -
算法--排序(选择、插入、希尔、归并)
选择排序public class Selection { // 排序 public static void sort(Comparable[] a) { //将数组a按升序排 int N=a.length; for(int i=0;i<N;i++){ int min=i; for(int j=i+1;j<N;j++){ if (less(a[j], a[min]))...原创 2018-03-30 21:48:42 · 187 阅读 · 0 评论 -
Java--多线程
线程基础线程,程序运行的基本单元。操作系统中运行的任何程序都至少有一个主线程作为这个程序运行的入口点。进程与线程操作系统中可以有多个进程,包括系统进程和用户进程,一个进程可以有一个或多个线程。进程之间不共享内存,在各自独立的内存空间中运行。一个进程中的线程可以共享系统分派给这个进程的内存空间。线程不仅可以共享进程内存,还拥有一个属于自己的内存空间--线程栈,在建立线程时由系统分配,主要用来保存线程...原创 2018-03-24 21:48:11 · 621 阅读 · 0 评论 -
Java--编程练习
File类文件操作例1:现给定一个文件的路径,如果文件存在,则将其删除,如果不存在,则创建一个新的文件。import java.io.File;import java.io.IOException;public class testFile { public static void main(String[] args) { File f=new File("d:"+File.separato...原创 2018-03-24 11:11:18 · 188 阅读 · 0 评论 -
Java--泛型
Java集合的缺点:把对象“丢进”集合后,集合就会”忘记“这个对象的数据类型,取出时编译类型变成object类型,运行时类型没变。这样做的原因:设计它的程序员不知用他存放何种类型对象,就设计成object类型,具有通用性。这样带来了两个问题:1、集合对元素类型没有任何限制,如只想创建保存单一类型集合,但程序丢进其它类型,引发异常。2、取出元素时进行强制类型转换既增加编程复杂度,又可能引发Class...原创 2018-03-15 20:14:58 · 117 阅读 · 0 评论