随笔分类 - Java基础
摘要:Servelet是一个接口,有两个抽象实现类:GenericServlet ,HttpServlet而HttpServlet是继承自GenericServlet,关系图如下: HttpServelet是对HTTP协议的封装,当我们通过<form></form>表单提交时,Servelet的实现类对象
阅读全文
摘要:问题描述: Servelet的创建只能在有用户访问的时候才创建吗? 其实我们可以在启动服务器的时候就创建Servelet的实例。 问题解决: Servelet接口中有3个比较重要的方法: init service destory init方法只在创建对象的时候执行一次(所以可以知道Servelet的
阅读全文
摘要:问题描述: servelet接口的实现类在在部署在Tomcat项目中,但是我们并没有创建实现类的相关具体事例为什么,实现类里面的方法会执行呢? 解决办法: 当我们实现了Servelet接口,并且把类部署到web容器(Tomcat服务器)中的时候,我们还需要在web.xml的配置文件中配置Servel
阅读全文
摘要:编译是把我们的写的类的****.java文件编译成****.class文件,如果一个类的类变量在编译是其就可以确定这个类变量的值,那么这个类变量就变成了宏变量 也就是相当于一个常量。 所以在程序的其他地方用到宏变量就不会再去访问其所在的类,因为宏变量就相当于一个已经固定的常量
阅读全文
摘要:一个编写好的java程序的执行必然要经过编译和解释执行的过程,其中编译时编译器在工作,它把*.java源文件编译成为*.class的不可执行的与平台无关的字节码文件,然后字节码文件再经过虚拟机解释执行。 因此,可以认为java语言既是编译性语言,又是解释型语言,或者说java语言既不是纯粹的编译性语
阅读全文
摘要:在树形结构的集合TreeMap和TreeSet中,数据的存储的顺序和用put方法放进去的顺序是不一定相同的,因为树形结构的数据存储是根据红黑树的计算结果进行存储的,所以在我们用树形结构集合存储一个指定类型时:那么就需要给这个类型(也就是这个类)指定相应的排序规则(这个排序规则就是红黑树的计算排序法则
阅读全文
摘要:掌握一个知识点:怎么使用被注解修饰的类或者方法的对象工具(对象工具是个人理解,具体介绍在反射博文)获得注解对象,一节获得注解的value值 案例:获得被指定注解修饰的类并创建其对象封装进一个Map集合中: 未被修饰的Person类: 1 package com.neima; 2 3 import j
阅读全文
摘要:在多线程中,如果需要一个线程,在其他的线程执行完之后再执行,则需要我们本篇将的并发工具类:CountDownLatch类: CountDownLatch类的执行原理是: 我们设定的被等待的线程的个数会被记录在底层,当我们的一个线程执行完毕之后调用CountDownLatch类的countDown()
阅读全文
摘要:在说线程池之前先提一下线程的一种创建方式: MyRuunable run=new MyRuunable();//继承了Ruunable接口的实现类的对象,其实我们可以把run看成是线程需要跑的任务 Thread th=new Thread(run);//Thread就是线程,th就是线程对象,我们把
阅读全文
摘要:当我们把一个对象的信息存储到我们的硬盘的软件当中的时候,我们肯定不想让别人直接就可以打开文件看懂我们存储的 对象的信息,所以这时候我们就用到了输入输出流之中的对象操作流: ObjectOutputStream对象输出流 ObjectInputStream对象输入流 顾名思义Object就是代表对象,
阅读全文
摘要:在IO流中说了一个区别字节流和字符流的方法:字节流人类看不懂所以都是inputstream或者outputstream 字符流人们都能看得懂,所以在起名字的时候果断而自信的加上了reader和writer,但是那只是为了区分字节流和字符流。 接下来的转换流就流批了,名字里既有inputstream或
阅读全文
摘要:在多线程中如果需要用到集合则不能使用HashMap,Arrlist等集合,在多线程的操作中容易出现错误。 因此java为我们提供了几个并发工具类包括Hashtable,concurrentHashMap,CountDownLatch和Semaphore 首先是HashTable Hashtable采
阅读全文
摘要:TCP客服端的接收中: 1 public static void main(String[] args) throws IOException { 2 ServerSocket ss = new ServerSocket(10000); 3 Socket accept = ss.accept();
阅读全文
摘要:UDP广播发送端: 1 public static void main(String[] args) throws IOException { 2 DatagramSocket socket = new DatagramSocket(); 3 String s = "Hello 广播"; 4 byt
阅读全文
摘要:UDP组播发送端: 1 public static void main(String[] args) throws IOException { 2 DatagramSocket socket = new DatagramSocket(); 3 //组播地址224.0.0.0——239.255.255
阅读全文
摘要:UDP的发送:(单播) 1 public static void main(String[] args) throws IOException { 2 DatagramSocket socket=new DatagramSocket();//到邮局(邮局开门) 3 String s="这是码头上的货
阅读全文
摘要:网络编程概述: 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来, 在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算 机系统 网络编程 在网络通信协议下,不同计算机上运行的程序,可以进行数据传输 网络编程三要素: - I
阅读全文
摘要:synchronized和CAS的区别: 相同点:在多线程的情况下,都可以保证共享数据的安全性。 不同点: synchronized总是从最坏的角度出发,认为每次获取数据的时候,别人都有可能修改。 所以在每次操作共享数据之前,都会上锁。(悲观锁) cas是从乐观的角度出发,假设每次获取数据别人都
阅读全文
摘要:原子性的定义: 所谓的原子性是指在一次操作或者多次操作中,要么所有的操作全部都得到了执行并且不会受到任何因素的干扰而中断,要么所有的操作都不执行,多个操作是一个不可以分割的整体。简单点就是:要么这个操作不进行,要么就进行到底,就不用担心线程切换问题 count++不是一个原子性操作,他在执行的过程当
阅读全文
摘要:多线程中如果两个线程同时使用第三方的共享数据,并且进行修改的话,那么就有可能出现数据更新不及时的问题原因是: 假设线程A和线程B共享第三方数据count: 线程A和线程B中都会开辟一段用来保存count值得变量副本,因为这样执行更快: 线程每次修改值都会: 先将副本中的值修改 然后赋值给副本 最后更
阅读全文