自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 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 5 1

原创 Day47

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

2020-10-22 19:54:11 100 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 14

原创 Day45

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

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

原创 Day44

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

2020-10-03 15:33:42 8

原创 Day43

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

2020-10-02 14:09:39 13

原创 Day42

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

2020-10-01 14:17:00 23

原创 Day41

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

2020-09-30 14:12:10 21

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

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

原创 Day38

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

2020-09-27 16:00:55 39

原创 Day37

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

2020-09-26 21:08:54 11

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

原创 Day35

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

2020-09-24 21:39:39 14

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

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

原创 Day32

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

2020-09-20 21:48:54 67

原创 Day31

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

2020-09-19 20:42:55 16

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

原创 Day29

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

2020-09-18 11:41:43 7

原创 Day28

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

2020-09-17 21:40:32 10

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

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

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

原创 Day24

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

2020-09-11 14:59:40 11

原创 Day23

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

2020-09-10 21:11:10 32

原创 Day22

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

2020-09-09 11:50:04 19

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

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

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

原创 Day18

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

2020-09-01 20:48:03 37

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

原创 Day16

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

2020-08-28 13:20:44 29

原创 Day15

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

2020-08-27 12:37:57 19

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

原创 Day13

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

2020-08-22 11:41:17 17

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

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

原创 Day010

什么是面向对象面向对象编程:OOP面向对象编程的本质:以类的方式组织代码,以对象的组织(封装)数据抽象三大特性:封装继承多态从认识论角度考虑是先有对象后有类。对象是具体的事物,类是抽象的,是对对象的抽象从代码运行的角度考虑是先有类后有对象。类是对象的模板。回顾方法及加深方法的定义修饰符返回值类型break(跳出switch,结束循环)和return(结束一个方法,返回一个值可以为空)的区别方法名:注意规范就OK 见名知意参数列表:(参数类型,参数名)…异常抛出:疑问,后面

2020-08-19 13:34:51 38

原创 Day09

数组数组是相同类型数据的有序的集合数组描述的是相同类型的若干个数据,按照一定的先后顺序排列组合而成。其中,每个数据称作一个数组的元素,每个数组的元素可以通过一个下标来访问他们声明数组创建dataType[] arrayRefvar; //首选的方法dataType arrayRefvar[]; //效果相同,但不是首选方法java语言使用new操作符来创建数组dataType[] arrayRefvar = new dataType[arraySize];数组长度:

2020-08-18 15:56:32 23

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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