
java基础
路边捡了片面包
这个作者很懒,什么都没留下…
展开
-
java序列化与反序列化
把Student类的对象序列化到文件O:\\Java\\com\\jieke\\io\\student.txt,并从该文件中反序列化,向console显示结果。代码如下:import java.io.*;/** *Title:应用学生类 *Description:实现学生类实例的序列化与反序列化 *Copyright: copyright(c) 2012 *Filename: Us原创 2017-02-17 13:32:48 · 342 阅读 · 0 评论 -
Java利用socket连接到一台主机并向主机发送文件
分为服务器端和客户端。这里服务器端是等待连接并接受文件的机器,客户端是连接服务器端并且发送文件的机器。1.服务器端/** * server接受连接,接收文件 * */public class ServerTest { private int port = 8821; // 启动服务 private void start() { Socket s = null; try {转载 2017-04-05 17:19:04 · 1192 阅读 · 0 评论 -
java中的值传递和引用传递
Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的。 参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。如果在函数中改变了副本的 值不会改变原始的值.原创 2017-04-15 10:45:48 · 330 阅读 · 0 评论 -
java中sleep()和wait()的区别
1.sleep是Thread方法,wait是Object方法。2.sleep()方法是线程类Thread的静态方法,调用此方法会让当前线程暂停执行指定的时间,将机会(cpu)让给其他的线程,但是对象的锁依然保持,因此休眠时间结束后会自动恢复到就绪状态。wait()方法是Object类的方法,调用对象的wait方法导致当前的线程放弃对象的锁(线程暂停执行),进入对象的等待池(wait poo原创 2017-04-19 15:13:43 · 348 阅读 · 0 评论 -
static和final的区别
static:修饰变量:静态变量随着类加载时被完成初始化,内存只有一个,且jvm也只会为他分配一次内存,所有类共享静态变量。修饰方法:在类加载的时候就存在,不依赖任何实例。static方法必须实现,不能用abstract修饰。即abstract修饰的方法不可谓static。修饰代码块:在类加载完成之后就会执行静态代码块中的内容。类初始化顺序:父类静态代码块-->子类静态代码块-->原创 2017-04-19 15:39:44 · 344 阅读 · 0 评论 -
HashMap和HashTable的区别
1.HashMap不同步,HashTable同步。2.HashTabel不允许有null值(key和value)都不允许。HashMap允许null值(key和value都可以)。3.两者的遍历方式大同小异,HashTable积极比HashMap多一个elements方法。4.HashTable使用Enumeration,hashmap使用Iterator。5.哈希值不同,Hash原创 2017-04-19 15:54:14 · 259 阅读 · 0 评论 -
ConcurrentHashMap解析
分段锁技术:例如HashTable中相当于酒店只有一楼一个客服去结账,而ConcurrentHashMap相当于酒店的每层都有一个可以结账的地方。这样多个并发的问题发生时速度就会加快。1.ConcurrentHashMap将整个hash桶进行分段segment,也就是将这个大的数组分成了几个小的片段segment,而且小的片段segment上面都加锁,那么咋icharu元素的时候先找到应该插入原创 2017-04-19 16:11:44 · 345 阅读 · 0 评论 -
冒泡排序法
冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。基本步骤:1 比较相邻的元素。如果第一个比第二个大,就交换他们两个。2 对每一对相邻元素作同样的原创 2017-05-02 15:46:36 · 234 阅读 · 0 评论 -
选择排序法
基本思想:每一趟排序从序列中未排好序的那些元素中选择一个值最小(大)的元素,然后将其与这些未排好序的元素的第一个元素交换位置。特点:1. 算法完成需要 n - 1 趟排序,按照算法的描述,n - 1 趟排序之后数组中的前 n - 1 个元素已经处于相应的位置,第 n 个元素也处于相应的位置上。2. 第 i 趟排序,实际上就是需要将数组中第 i 个元素放置到数组的合适原创 2017-05-02 15:50:06 · 304 阅读 · 0 评论 -
基数排序法
实现思路:基数排序已经不再是一种常规的排序方式,它更多地像一种排序方法的应用,基数排序必须依赖于另外的排序方法。基数排序的总体思路就是将待排序数据拆分成多个关键字进行排序,也就是说,基数排序的实质是多关键字排序。多关键字排序的思路是将待排数据里德排序关键字拆分成多个排序关键字;第1个排序关键字,第2个排序关键字,第3个排序关键字......然后,根据子关键字对待排序数据进行排序。原创 2017-05-02 15:57:07 · 491 阅读 · 0 评论 -
Java中Synchronized和Lock的使用
Lock的锁定是通过代码实现的,而 synchronized 是在 JVM 层面上实现的synchronized在锁定时如果方法块抛出异常,JVM 会自动将锁释放掉,不会因为出了异常没有释放锁造成线程死锁。但是 Lock 的话就享受不到 JVM 带来自动的功能,出现异常时必须在 finally 将锁释放掉,否则将会引起死锁。在资源竞争不是很激烈的情况下,偶尔会有同步的情形下,syn原创 2017-04-01 14:03:25 · 427 阅读 · 0 评论 -
插入排序法
1.基本思想:插入排序法的排序思想就是从数组的第二个元素开始,将数组中的每一个元素按照规则插入到已排好序的数组中以达到排序的目的.一般情况下将数组的第一个元素作为启始元素,从第二个元素开始依次插入.由于要插入到的数组是已经排好序的,所以只是要从右向左找到比插入点(下面程序中的insertNote)小(对升序而言)的第一个数组元素就插入到其后面.直到将最后一个数组元素插入到数组中,整个排序过程就算完原创 2017-04-27 13:36:26 · 343 阅读 · 0 评论 -
希尔排序算法
1.基本思想:希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好原创 2017-04-27 14:58:40 · 285 阅读 · 0 评论 -
判断字符串中是否包含指定字符或特殊字符
Pattern p = Pattern.compile("[@#$%^&*]"); Matcher m = p.matcher(s); boolean match = m.find();如果有特殊字符(指定字符),返回true;如果没有 ,返回false; 判断字符串是否由0或1组成String a = "11111000";Boolean b = a..matches原创 2017-04-10 17:48:40 · 18109 阅读 · 0 评论 -
HTTP中GET和POST请求的区别
一、原理区别一般我们在浏览器输入一个网址访问网站都是GET请求;再FORM表单中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式。HTTP定义了与服务器交互的不同方法,其中最基本的四种:GET,POST,PUT,DELETE,HEAD,其中GET和HEAD被称为安全方法,因为使用GET和HEAD的HTTP请求不会产生什么动作。不会产生动作意味着GET原创 2017-06-24 13:05:19 · 1176 阅读 · 0 评论 -
代码性能优化
代码优化细节1、尽量指定类、方法的final修饰符带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该类所有的方法都是final的原创 2017-09-06 09:32:11 · 335 阅读 · 0 评论 -
java中定时器Timer类的用法
import java.util.Timer;import java.util.TimerTask;public class M { public static void main(String[] args) { // TODO todo.generated by zoer Timer timer = new Timer(); timer.schedule(new MyTas原创 2017-04-05 16:54:52 · 479 阅读 · 0 评论 -
ConcurrentHashMap解析
ConcurrentHashMap融合了hashtable和hashmap二者的优势。hashtable是做了同步的,hashmap未考虑同步。所以hashmap在单线程情况下效率较高。hashtable在的多线程情况下,同步操作能保证程序执行的正确性。但是hashtable每次同步执行的时候都要锁住整个结构。看下图:图左侧清晰的标注出来,lock每次都原创 2017-04-05 16:40:18 · 265 阅读 · 0 评论 -
Java中创建对象的5种方式
java创建对象的五种方式:1.使用new关键字这是最常见也是最简单的创建对象的方式了。通过这种方式,我们可以调用任意的构造函数(无参的和带参数的)。Employee emp1 = new Employee();2.使用Class类的newInstance方法我们也可以使用Class类的newInstance方法创建对象。这个newInstance方法调用无参的原创 2017-04-05 16:18:59 · 639 阅读 · 0 评论 -
HashMap原理/HashMap内部代码---HashMap说明书
HashMap的内部说明以及解释package com.sun.HashMap;/** * 注意几点: * 1.每次扩容为原来的二倍 * 2.扩容的时候需要重新hash,因为元素在数组中的位置为hash*(table.length()-1) * 3.最大容量为2^30 * 4.容量必须是2的次幂 * 5.阈值threshold为LoadFactory*Capacity 即原创 2017-02-17 16:26:29 · 312 阅读 · 0 评论 -
用java实现快速排序算法
快速排序算法 java实现 首先说下思路:设置两个指针:head和tail,分别指向第一个和最后一个元素,head像后移动,tail向前移动,选第一个数为标准key。先从后面开始,找到第一个比标准小的数,互换位置,然后再从前面,找到第一个比标准大的数,互换位置,第一趟的结果就是标准左边的都小于标准,右边的都大于标准(但不一定有序),分成左右两拨后,继续递归的使用上述方法,最终有序!原创 2017-02-23 14:20:56 · 537 阅读 · 0 评论 -
java集合之ArrayList和LinkList
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2017-02-17 11:49:49 · 528 阅读 · 0 评论 -
java经典编程题 爬楼梯问题的解答
题目://假设你现在正在爬楼梯,楼梯有 n级。每次你只能爬 1 级或者 2 级,那么你有多少种方法爬到楼梯的顶部?//第一行输入一个整数 n(1≤n≤50),代表楼梯的级数。//输出爬到楼梯顶部的方法总数。5-->8 3-->3 1-->1 2 -->2package com.sun.DoSubject;import java.util.Scanner;//假设你现在正在原创 2017-03-07 16:49:07 · 5463 阅读 · 0 评论 -
用链表或者数组实现一个栈
1.用链表实现一个栈package com.sun;import java.util.EmptyStackException;public class DLinkedStackEx { private Node head; private Node tail; // 表示栈的大小 private int count; public Object push(String el原创 2017-03-07 16:45:06 · 489 阅读 · 0 评论 -
cookie和session的相关概念
1、概念2、区别3运行机制3.1、Cookie机制3.2 Session机制原创 2017-03-07 17:00:26 · 330 阅读 · 0 评论 -
TCP原理与应用详解
TCP原理与应用详解1. TCP首部介绍首先介绍首部字段:源端口和目的端口: 提供复用和分用,应用层的进程都可以通过传输层再传输到IP层,这就是复用,分用就是传输层从IP层收到数据后必须交付给指明的应用层应用进程。序号: TCP为传送的字节流每一个字节进行按照顺序编号,序号是本报文段的第一个字节编号,序号和确认号主要是为了数据的可靠性进行的多原创 2017-03-28 18:43:51 · 5985 阅读 · 0 评论 -
java将文件中的内容读取到HashSet中/内存中
java将文件读到hashSet/内存中private Set readWordFile() {Set wordSet = null;// 要读取的文件路径,这里自行更改File file = new File("D:/workspace/SensitiveWordDeal/resources/censorwords.txt");try {// 读取文件输入原创 2017-02-16 11:24:16 · 3825 阅读 · 1 评论 -
Session的实现例子
用Session实现一个购物车1.首先搭建web项目框架 目录为:2.再来看看web.xml的配置<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java原创 2017-03-07 17:15:09 · 819 阅读 · 0 评论 -
一个密码中包含数字,大写字母,小写字母,特殊符号@#$%^&*中的三种,长度在6-12 之间,并且不能出现连续相同的字符串;正确返回1,不正确返回0.
package com.sun.DoSubject;import java.util.LinkedList;import java.util.Queue;import java.util.regex.Matcher;import java.util.regex.Pattern;//设定一个密码,密码中包含数字,大写字母,小写字母,特殊符号@#$%^&*中的三种,//长度在6-12 之间,并且不能出原创 2017-03-02 15:40:53 · 13321 阅读 · 0 评论 -
求最大公约数和最小公倍数(java语言)
package com.sun.maxCommonDivisorAndminCommonMultiple;/** * * @author:孙创 * @date:2017年4月10日 * @Discription://求最大公约数和最小公倍数 */public class MaxCommonDivisorAndMinCommonMultiple2 { public static原创 2017-04-10 15:44:55 · 2889 阅读 · 1 评论 -
BigDecimal.setScale 处理java小数点
BigDecimal处理小数点问题BigDecimal.setScale()方法用于格式化小数点setScale(1)表示保留一位小数,默认用四舍五入方式 setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3 setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4 setScale原创 2017-04-10 16:53:42 · 402 阅读 · 0 评论 -
详解Pattern类和Matcher类
详解Pattern类和Matcher类java正则表达式通过java.util.regex包下的Pattern类与Matcher类实现(建议在阅读本文时,打开java API文档,当介绍到哪个方法时,查看java API中的方法说明,效果会更佳). Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建,但可以通过Pattern.comp转载 2017-04-10 18:01:36 · 589 阅读 · 0 评论 -
synchronized关键字
主要阐述以下几个问题:1.非static方法前加synchronized1 class Demo{ 2 synchronized public void doXXX{ 3 //code… 4 } 5 }对于这段代码,我们要考虑这几个问题:1.理解synchronized锁的是什么?2.如果三个线程里分别new了三个Demo对象,各自的run方法里分别执行各自Demo对象的doX原创 2017-04-01 13:38:49 · 322 阅读 · 0 评论 -
快速找出数组中元素数目超出一半的元素
思路:在遍历数组的过程中,保存两个值,一个是数组中数字,一个是出现次数。当遍历到下一个数字时,如果这个数字跟之前保存的数字相同,则次数加1,如果不同,则次数减1。如果次数为0,则保存下一个数字并把次数设置为1,由于我们要找的数字出现的次数比其他所有数字出现的次数之和还要多,那么要找的数字肯定是最后一次把次数设为1时对应的数字。 public int MoreHalf(int[] nums)原创 2017-09-14 09:44:33 · 1693 阅读 · 0 评论