自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Day41

线程同步synchronized并发控制在一个多线程的环境下,保证线程的安全性和准确性,同时还要提高它的性能。并发:同个对象多个线程同时操作线程不安全1、12306取票会有不同的人抢到相同或者负数package com.sxt.syn;/** * 线程不安全 有相同和负数的情况 */public class UnsafeTest01 { public static void main(String[] args) { //一份资源

2020-09-30 14:12:10 78

原创 Day40

线程优先级(priority)在多个线程同时运行时,调度器会根据线程的优先级优先调用(不代表绝对的顺序)优先级高的线程设置优先级一定要在启动前NORM_PRIORITY 5 默认 自己写的类默认也是5MIN_PRIORITY 1MAX_PRIORITY 10优先级自己设置数字也可以:t3.setPriority(8);package com.sxt.state;/** * 线程的优先级 1-10 * 1、NORM_PRIORITY 5 默认 * 2、MIN_PRIORITY

2020-09-29 15:49:38 127

原创 Day39

yieldyield也是暂停线程礼让线程,让当前正在执行的线程暂停不是阻塞线程,而是将线程从运行状态转入就绪状态让出cpu的调度,避免占用过久yield和sleep方法一样也是静态方法,直接写在线程体中package com.sxt.state;/** * yield 礼让线程 暂停线程 直接进入就绪状态不是堵塞状态 */public class YieldDemo01 { public static void main(String[] args) { My

2020-09-28 15:37:27 75

原创 Day38

线程状态新生状态----->就绪状态------>运行状态------>(1)死亡状态,不能重新开启(2)堵塞状态----->返回就绪状态new Thread;线程对象就进入到了新生状态,每个线程有自己的内存空间(工作空间),工作空间与主内存交互,一旦调用了start()方法就进入了就绪状态具备了运行的能力和条件,进入就绪状态不代表立马被调度,要等待cpu的调度进入就绪状态的四种原因:(1)start()方法被调用(2)进入堵塞状态,堵塞解除(3)yield方法,避免线程占用过

2020-09-27 16:00:55 111

原创 Day37

静态代理Runnable接口实现多线程时,需要调用Tread类下的start方法命令cpu调用,这里Thread是代理接口,代理分为静态代理和动态道理静态代理和动态代理的区别:静态代理的类是别人写好的拿来就可以用,动态代理是在运行过程中这个类是动态构建出来的有记录日志,监控等等作用真实对象和代理对象都要重写接口下的方法代理对象里也要扔进真实对象在构造器里实现package com.sxt.thread;/** * 静态代理 * 公共接口: * 1、真实对象 * 2、代理对象 */

2020-09-26 21:08:54 76

原创 Day36

实现Runnsble需要调用start方法,所以需要创建一个代理类对象package com.sxt.thread;/** * 创建线程方式er: * 1、创建:继承Runnable+重写run * 2、启动:创建实现类对象+Thread对象+start */public class StartRun implements Runnable{ /** * 线程的入口点 */ @Override public void run() {

2020-09-25 13:37:14 71

原创 Day35

多线程用户线程 守护线程多任务就需要多线程并行的多条路径线程就是独立的执行路径;在程序运行时,即使没有自己创建线程,后台也会存在多个线程,如gc线程、主线程;main()方法称之为主线程,为系统的入口点,用于执行整个程序;对同一份资源操作时,会存在资源抢夺问题,需要加入并发控制线程创建Thread class 继承hThread类(存在单继承的问题)Runnable接口 实现Runnable接口(用的比较多)Callable接口 实现Callable接口(juc并发包下的,用

2020-09-24 21:39:39 88

原创 Day34

Commons IO环境的搭建到apache(阿帕奇)下载Commos IO的学习文档,学习jar和source源码主要学习FileUtils调用FileUtils更加简单利用FileUtils统计文件、目录的大小package com.sxt.commons;import org.apache.commons.io.FileUtils;import java.io.File;/** * 大小 */public class CIOTest01 { public static

2020-09-23 14:21:55 247

原创 Day33

用随机流分割 进行封装理解封装的思想增加一些属性构造器初始化分割思想不变最后调用package com.sxt.io;import java.io.File;import java.io.IOException;import java.io.RandomAccessFile;import java.util.ArrayList;import java.util.List;/** * 面向对象思想封装 分割 */public class SplitFile { //

2020-09-22 16:13:29 57

原创 Day32

对象流ObjectInputStream&&ObjectOutputStream还有个叫法:序列化和反序列化数据流是处理基本数据类型,字符串对象流除了处理基本数据类型,字符串,还包括其他的各种对象,包括自定义对象Object(对象)------->Serialization(字节流)(序列化(对象输出流))------->文件/数据库/内存(字节数组)------>Deserialization(反序列化()------->Object对象流写入字节数组中

2020-09-20 21:48:54 134

原创 Day31

转换流InputStreamReader&&OutputStreamWriter作用:将字节流转换为字符流也是处理流的一种很多系统或者框架底层返回给我们的大多都是字节流,如果返回的是纯文本字符的话,用字节流处理起来并不方便,没有字符流处理的快,这时候就需要将字节流转换为字符流处理。底层是纯文本,字节到字符的过程叫解码,就会涉及到字符集工程的字符集(系统的字符集)与源头的字符集不统一就会出现乱码的情况转换流就给我们提供了可以指定字符集转换流操作字节输入输出流循环获取键盘内容,

2020-09-19 20:42:55 58

原创 Day30

整理回顾通过for循环打印九九乘法表package com.sxt.io;public class Test01 { public static void main(String[] args) { //1.我们先打印第一列 //2.我们把固定的1再用一个循环包起来 //3.去掉多余项,利用添加条件 i <= j //4.调整样式 for (int j =

2020-09-18 23:28:25 53

原创 Day29

字节缓冲流BufferedInputStream&BufferedOutputStream装饰流也就是处理流的一种最底层还是节点流作用:提高了我们操作的性能。IO的操作是我们影响程序性能的一个瓶颈,所以内部维护了一个缓冲区,提高我们读写的操作,减少了读写的次数释放时只需要释放最外层的处理流,内部会自动找到节点流释放套在外面就可以了: is =new BufferedInputStream( new FileInputStream(src));文件字节输入流外套一个处理缓冲流pac

2020-09-18 11:41:43 67

原创 Day28

图片拷到字节数组中图片(文件)不能直接转到字节数组中,需要一个程序做个中转。图片(文件)----文件字节输入流---->程序----字节数组输出流---->字节数组反过来就是:字节数组----字节数组输入流---->程序----文件字节输出流----图片(文件)都是以程序为中心图片读取到字节数组、字节数组写出到文件package com.sxt.io;import java.io.*;/** * 1、图片读取到字节数组 * 2、字节数组写出到文件 */publ

2020-09-17 21:40:32 46

原创 Day27

文件字符输入流字符串数组————>字符无需解码,调用Reader方法完成,FileReaderpackage com.sxt.io;import java.io.*;/** * 文件字符输入流 * 四个步骤:分段读取 * 1.创建源 * 2.选择流 * 3.操作 * 4.释放资源 */public class IOTest05 { public static void main(String[] args) { //创建源 Fi

2020-09-16 11:50:07 64

原创 Day26

文件编码字节(电脑)----编码(encode)---->字符(人),反过来就是解码(decode)**字符集:**相当于一本大字典,查找的过程在字符集里我们叫码表常见的字符集:外国常用US-ASCII,中国常用ISO-8859-1也就是我们常说的JBK,UTF-8,计算机内部用的是UTF-16的unicode(大端unicode(FE FF)、小端unicode(FF FE))uncode:变长(1-3个字节)省空间,需要计算,计算难些,定长(固定2个字节)浪费空间,计算简单编码pack

2020-09-13 21:38:04 104

原创 Day25

创建目录、文件夹使用mkdir()、 mkdirs()mkdir必须保证上一级目录存在mkdirs上级目录不存在,会自动创建package co.sex.io;import java.io.File;/** * 创建目录,文件夹 * 1.mkdir():确保上一级目录存在,不存在创建失败 * 2.mkdirs():上级目录可以不存在,不存在就一同创建 */public class DirDemo01 { public static void main(String[] ar

2020-09-12 20:22:26 63

原创 Day24

FilegetName() 获取File的名称getPath() 获取路径(构建的时候是相对路径/绝对路径 返回的就是相对路径/绝对路径)getAbsolutePath() 返回的始终是绝对路径getParent 返回父路径,构建的时候有父路径就返回父路径,没有就返回空package co.sex.io;import java.io.File;/** * 名称或路径 * getName() * getPath() * getAbsoluteP

2020-09-11 14:59:40 132 1

原创 Day23

IO流数据源文件-------------------->程序内存<--------------------程序网络连接-------------->程序数据库----------------->程序设备-------------------->程序date,source提供原始数据的原始媒介。中心:程序 (数据源) 输入流 ------------>程序-------------->输出流(目的地)Java中数据的输入/输出操

2020-09-10 21:11:10 73

原创 Day22

Iterator迭代器迭代器为我们提供了统一的遍历容器的方式,List,Set,Map都可以List,Set较为简单,方法完全相同,通过for循环,利用对象调用一个迭代器给一个新的对象,通过新的对象调用hasNext看查看是否还有下一个,然后在通过对象调用next(),next可以查看当前内容,并指向下一个,将获取的内容给一个新对象,返回新对象的内容。Map则有些不同,一种方法是利用HashMap定义的新对象调用entrySet键值组给新的对象,通过新的对象调用迭代器,最后返回通过返回的当前值内容的对象

2020-09-09 11:50:04 97 1

原创 Day21

增加泛型输入的值类型就固定了,比较规范正规一些,这里定义的泛型put方法key只能存int类型的数据,value只能是String类型的数据,get方法是获取的键,所以get方法只能输入int类型的键,找到String类型的存储值。package cn.sxt.mycollection;/** * 自定义一个HashMap * 实现了put方法增加键值对,并解决了键重复的时候覆盖相应节点的问题 * 实现toString方法,方便查看Map中的键值对信息 * 增加get方法 * 增加扩容 *

2020-09-06 13:34:09 109

原创 Day20

自定义一个HashMap自定义一个位桶数组table,重写类方法,给数组容量,再定义一个新节点,做一个myhash类,通过key调用hashcode方法,与table数组的长度的过直接位运算,或者取模运算求出hash值,新节点由hash值,key,value,next四部分组成,把对应的值赋值给对应的节点部分,再定义一个temp对象(hash值对应数组的位置),通过if语句,如果hash值对应数组的位置为空,就把前面定义的新节点放在这个新数组里。package cn.sxt.mycollection;

2020-09-05 14:14:53 137

原创 Day19

Map的常用方法新建一个雇员类,分配一些属性:id。name,salary等属性。构造Employee方法,get,set方法在main方法定义Employee类,给定雇员信息,通过Map方法通过键值对存储,输出此时输出的雇员信息仍是信息的地址,需要重写toString方法,return信息。package cn.sxt.collection;import java.util.HashMap;import java.util.Map;/** *测试Map常用方法 */public

2020-09-02 11:43:00 48

原创 Day18

增加小的封装增加泛型因为异常手动抛出,对索引的检查经常要使用到,所以我们把异常抛出单独的拿出来,做了分装,在要用的地方直接调用checkRange方法检查索引就好了。增加泛型,只能输入特定的类型,获取起来也更加方便了package cn.sxt.mycollection;import static java.lang.System.*;/** * 自定义一个链表 * 增加get方法 * 增加remove方法 * 增加插入节点 * 增加小的封装,泛型 * @param <E&

2020-09-01 20:48:03 69

空空如也

空空如也

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

TA关注的人

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