自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【第七届】蓝桥杯省赛javaB组试题 压缩变换 全部通过代码

蓝桥杯第七届省赛javaB组试题 压缩变换 全部通过

2022-04-03 13:59:00 612

原创 蓝桥杯:2018年第九届蓝桥杯省赛B组第七题—螺旋折线(Java实现)

蓝桥杯javaB组螺旋折线找规律取巧计算,最快算法

2022-03-27 20:44:59 837

原创 Day48

PHP简介 PHP定义:一种服务端的HTML 脚本/编程语言,是一种简洁的 面向对象的,解释型,健壮的,安全的,性能非常之高的,独立于建构的,可移植的,动态的脚本语言。 该语言可以让web开发人员快速的书写动态生成的网页 PHP前身:Personal HomePage,个人主页,使用perl语言开发的一种写个人主页的语言 PHP:PHP Hypertext Preprosessor,php超文本预处理器,底层使用c语言 动态网站于静态网站的区别 静态网站:web1.0时代 动态网站:web2.0时代 静态网

2020-10-26 00:22:45 291 2

原创 Day47

HTTP 协议缓存控制 我们观察图片的下载,往往 第1次请求时200OK 第2次请求时304Not Modified未修改状态 解释:在网络上有一些缓存服务器,浏览器自身也有缓存功能 当我们第一次某图片时,正常下载图片.返回值200 基于一个前提–图片不会经常改动,服务器在返回200的同时,返回该图片的“签名”–Etag,(签名可以理解图片的“指纹”) 当浏览再次访问该图片时,去服务器校验“指纹” 如果图片没有发变化,直接使用缓存里的图片,这样减轻了服务器的负担 抓包观察: 第一次请求头: 没有太大变化 就

2020-10-22 19:54:11 187 1

原创 Day46

PHP+socket发送请求文件 xx.php通过代理、路由器打开一条通道访问客户端 连接某URL的80端口(打开) 发送头信息(写) 读取网页内容(读) GET发送 <?php /* PHP+socket编程 发送请求 要求能 模拟下载、注册、登陆、批量发帖 */ //http请求类的接口 interface proto{ //连接url function conn($url); //发送get查询 function get(); //发送po

2020-10-22 19:53:39 101

原创 Day45

HTTP协议 重要性:无论是以后用的webserverice,还是用rest做大型架构,都离不开对Http协议的认识 甚至可以简化的说webserverice=http协议+XML Rest+HTTP协议+json 各种APL也一般是用http+XML/json来实现的 往小说像采集,小偷站,也需要对HTTP协议有所了解 以及Ajax对HTTP协议有了解之后,学习Ajax是非常容易的 原理: 形象理解http协议 动手试试http协议 http协议3部分介绍 实战: PHP+socket编程发送htt

2020-10-22 19:53:06 96 1

原创 Day44

HappenBefore 指令重排:执行代码的顺序可能与编写的代码不一致,即虚拟机优化代码顺序 happen-before即:编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序执行的一种手段 你写的代码很可能根本没按你期望的顺序执行,因为编译器和CPU会尝试重排指令使得代码更快的运行 一般是各自运行互不影响,不影响最后的运行结果,系统CPU会自动尝试重排使代码运行的更快 对于多线程肯定是有影响的 这时候就需要指令重排就行调整 (1) 从内存器里获取指令(2)解码指令 从寄存器里拿值(3)操作 进

2020-10-03 15:33:42 79

原创 Day43

线程协作 生产者消费模式 cooperation 线程通信: 生产者---->仓库---->消费者 假设仓库里只能存放一件产品,生产者将生产出来的产品放入仓库,消费者将仓库中的产品取走消费 如果仓库中没有产品,则生产者将产品放入仓库,否则停止生产并等待,直到仓库里中的产品被消费者取走为止 如果仓库中方有产品,则消费者可以将产品取走消费,否则停止消费并等待,直到仓库里再次放入商品为止。 分析:这就是一个线程同步的问题,生产者和消费者共享一个资源 ,并且生产者和消费者之间相互依赖,互为条件 但在生产

2020-10-02 14:09:39 90

原创 Day42

并发 同步 性能分析 显然同步方法,直接锁住方法的对象 ,很精准,但会造成线程安全 范围太大---->效率低下的问题 换用同步块锁定 可以锁定特定的对象 但可能会出现线程不安全 ticketNums对象在变 锁不住的问题 锁定this即方法的对象 如果缩小锁定范围,可能会出现线程不安全 范围太小 锁不住的问题 因此我们应该尽可能的锁定合理的范围(不是指代码,指数据的完整性) 很多时候我们需要用到双重检查的问题 一般用来解决临界值的问题 虽然代码有所增多,但性能却有了很大的提升 if (ticke

2020-10-01 14:17:00 1964

原创 Day41

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

2020-09-30 14:12:10 99

原创 Day40

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

2020-09-29 15:49:38 149

原创 Day39

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

2020-09-28 15:37:27 95

原创 Day38

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

2020-09-27 16:00:55 130

原创 Day37

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

2020-09-26 21:08:54 104

原创 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 98

原创 Day35

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

2020-09-24 21:39:39 111

原创 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 269

原创 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 78

原创 Day32

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

2020-09-20 21:48:54 157

原创 Day31

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

2020-09-19 20:42:55 83

原创 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 65

原创 Day29

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

2020-09-18 11:41:43 81

原创 Day28

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

2020-09-17 21:40:32 64

原创 Day27

文件字符输入流 字符串数组————>字符 无需解码,调用Reader方法完成,FileReader package 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 80

原创 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 119

原创 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 79

原创 Day24

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

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

原创 Day23

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

2020-09-10 21:11:10 86

原创 Day22

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

2020-09-09 11:50:04 130 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 122

原创 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 149

原创 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 62

原创 Day18

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

2020-09-01 20:48:03 79

原创 Day17

增加remove方法 增加size方法 增加isEmpty方法 package cn.sxt.mycollection; /** * 增加remove方法 * 增加size方法 * 增加isEmpty方法 * @param <E> */ public class SexArrayList05<E> { private Object[] elementData; private int size; private static final int

2020-08-30 17:37:54 87

原创 Day16

ArrayList 底层是用数组实现存储、 **特点:**查询效率高,增删效率低,线程不安全,一般使用它,一般有是查询,很少存在删减。 数组长度有限。而ArrayList是可以存放任意数量的对象,长度不受限制,他是通过数组扩容的方式实现的 package cn.sxt.mycollection; /** * 自定义实现一个ArrayList,体会底层原理 */ public class SexArrayList01 { private Object[] elementData; p

2020-08-28 13:20:44 81

原创 Day15

数组 数组也是一个容器 优势:简单的线性序列,可以快速访问数组元素,效率高 劣势:不灵活,容量要事先定义好,后面不能再改变 泛型 JDK1.5以后新增 类型安全 本质:数据类型的参数化,可以把“泛型”理解为数据类型的一个占位符(形式参数),即调用泛型时必须传入实际类型 package cn.sxt.collection; /** * 测试泛型 * @author Administrator */ public class TestGeneric { public static void m

2020-08-27 12:37:57 84

原创 Day14

做一个可以进行简单加减乘除并可以循环使用的小型计算器 package com.method; import java.util.Scanner; public class JiSuanQi4 { public static void main(String[] args) { while (true) { calcute(); } } private static void calcute(){ Doub

2020-08-26 12:10:34 56

原创 Day13

异常 软件在运行过程中,可能会遇到一些例外,异常问题,我们叫它异常 英文名:Exception 异常指程序运行中出现的不期而至的各钟状况。如:文件找不到,网络连接失败,非法参数等。 异常发生在程序运行期间,它影响了正常程序的执行流程。 异常体系结构 java将异常当作对象来处理,并定义 一个基类java.lang.Throwable作为所有异常的超类。 在java API 中已经定义了许多异常类,这些异常分为两大类,错误Error和异常Exception Error Error类对象由java虚拟机生成并

2020-08-22 11:41:17 65

原创 Day12

多态 即同意方法可以根据发送对象的不同采取多种不同的行为方式。 一个对象的实际类型是确定的,但可以指向的对象的引用的类型有很多。 package oop.demo06; public class Person { public void run(){ System.out.println("run"); } } package oop.demo06; public class Student extends Person{ @Override pub

2020-08-21 14:02:04 84

原创 Day11

类与对象的关系 类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一具体事物。 对象是抽象的概念的具体实例 package oop.demo02; //学生类 public class Student { //属性:字段 String name;//null int age;//0 //方法 public void study(){ System.out.println(this.name+"在学习"); } }

2020-08-20 14:37:42 120

空空如也

空空如也

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

TA关注的人

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