自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM入门这一篇就够了

1、JVM体系结构2、JVM存在的位置JVM 存在于操作系统上的 JRE 构建环境中3、类加载过程类加载器类加载器负责加载所有的类,其为所有被载入内存中的类生成一个java.lang.Class实例对象。一旦一个类被加载进JVM中,同一个类就不会被再次载入了,是唯一的标识。在Java中,一个类用其全限定类名(包括包名和类名)作为标识;但在JVM中,一个类用==其全限定类名和其类加载器==作为其唯一标识。JVM中有三种类加载器系统(应用)类加载器----->扩展类加载器----

2021-11-28 11:16:22 819

原创 MySQL狂神说笔记数据库笔记详解

1、初始MySQLjavaEE:企业级java开发 Web前端(页面:展示,数据!)后台(连接点:连接数据库JDBC,连接前端(控制,控制视图跳转,和给前端传递数据))数据库(存数据,Txt,Excel,word)1.1、为什么学习数据库岗位需求现在的世界,大数据时代 得数据者得天下被迫需求:存数据数据库是所有软件体系中最核心得存在 DBA1.2、什么是数据库数据库(DB,DataBase)概念:数据仓库,软件,安装在操作系统(window,linux,mac,…)之上!

2021-07-11 09:47:12 1459 1

原创 胎教级Maven安装、配置环境、创建项目,小白必看!

5、Maven为什么要学习这个技术在Javaweb开发中,需要使用大量的jar包,我们手动去导入如何能够让一个东西自动帮我们导入和配置这个jar包由此,Maven诞生了5.1Maven项目架构管理工具我们目前用来就是方便导入jar包Maven的核心思想**:约定大于配置**有约束,不要去违反Maven会规定好你该如何去编写我们的java代码,必须按照这个规范来5.2、下载安装Maven官网:https://maven.apache.org/下载完成后解压即可5.3、

2021-07-11 22:12:20 210

原创 MySQL函数(常用函数、聚合函数)和MD5加密问题

5、MySQL函数5.1、常用函数-- =============常用函数========-- 数学运算SELECT ABS(-8) -- 绝对值SELECT CEILING(6.6) -- 向上取整SELECT FLOOR(6.6) -- 向下取整SELECT RAND() -- 返回一个0~1的随机数SELECT SIGN(10) -- 判断一个数的符号 0-0 负数返回-1 正数返回1-- 字符串函数SELECT CHAR_LENGTH('自律使人优秀') -- 字符串

2021-07-09 10:57:50 179

原创 MySQL的DQL数据查询语言--联表查询、子查询、嵌套查询综合详解

where(这个值是计算出来的)子查询本质:在where语句中嵌套一个子查询语句-- ==========where========-- 查询科目为高等数学-2的分数不小于80分的学生的学号和姓名-- 方式一:使用联表查询 SELECT s.`studentno`,`studentname` FROM `student` s INNER JOIN `result` r ON s.`studentno`=r.`studentno` INNER JOIN `subject` sub ON r

2021-07-08 20:54:08 134

原创 MySQL的DQL数据查询语言--分页和排序

4.5、分页和排序排序 order by-- 排序:升序ASC ,降序DESC-- ORDER BY 通过哪个字段排序 升序或降序(DESC、ASC)-- 查询的结果根据成绩降序、升序排序SELECT s.`studentno`,`studentname`,`SubjectName`,`studentresult`FROM `student` sINNER JOIN `subject` subON s.`gradeid`=sub.`GradeID`INNER JOIN `result

2021-07-08 20:52:12 84

原创 MySQL的DQL数据查询语言--联表查询和自连接(超详细小白详解)

4.4、联表查询JOIN-- =======联表查询=========-- 查询参加了考试的同学(学号、姓名、科目编号、分数)SELECT * FROM studentSELECT * FROM result/*思路1. 分析需求,分析查询哪些字段,这些字段来自哪些表,(两张表以上,联表查询)2. 确定使用哪种联结查询?共有7种确定交叉点(这两张表种的哪个数据是相同的)判断的条件:学生表中的 studentno = 成绩表中的 studentno*/-- join

2021-07-08 16:59:59 263

原创 MySQL的DQL数据查询语言--where 条件子句

4.3、where 条件子句作用:检索数据中符合条件的值搜索的条件由一个或者多个表达式组成!结果为布尔值逻辑运算符运算符语法描述and &&a and b a&&b逻辑与,两个为真,则为真or ||逻辑或,一个为真,则为真Not !逻辑非,真为假,假为真-- -------where----- ---- 查询所有学员的成绩SELECT `studentno`,`studentresul

2021-07-08 16:57:58 166

原创 MySQL 的DQL查询数据语言--指定查询字段

4.2、指定查询字段-- 查询全部的学生 SELECT * FROM 表SELECT * FROM student-- 查询指定的字段 SELECT 字段,[字段2],[字段3] FROM 表SELECT `studentno`,`studentname` FROM student-- 给查询的字段结果起一个别名 AS 可以给字段起别名,也可以给表起别名SELECT `studentno` AS 学号,`studentname` AS 学生姓名 FROM student-- 函数

2021-07-08 16:56:43 136

原创 MySQL数据管理--外键详解、DML语言、添加修改删除

3、MySQL数据管理3.1、外键(了解即可)方式一、在创建表的时候,增加约束(麻烦复杂)CREATE TABLE IF NOT EXISTS `grade` (`gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级id',`gradename` VARCHAR(10) NOT NULL COMMENT '年级姓名',PRIMARY KEY(`gradeid`))ENGINE=INNODB DEFAULT CHARSET=utf8--

2021-07-08 11:58:36 115

原创 MySQL之操作数据库--数据库的列类型、字段属性、表类型,修改删除表

2、操作数据库操作数据库->操作数据库中的表->操作数据库中表的数据MySQL不区分大小写2.1、操作数据库(了解)1、创建数据库CREATE DATABASE [IF NOT EXISTS] li; --[]可选 {}必选2、删除数据库DROP DATABASE [IF EXISTS] LI;3、使用数据库USE school --如果表名或者字段名是一个特殊字符,就需要带``(tab键的上面)4、查找数据库SHOW DATABASES --查看所有数据库

2021-07-08 11:55:08 487

原创 小白第一次安装MySQL教程(全网最详细教程,解决所有遇到的问题,8.0以上版本必看!!)

安装MySQL安装建议:尽量不要使用exe尽可能使用压缩包安装安装操作步骤(MySQL官网下载)下载后得到zip压缩包解压到自己想解压得目录添加环境变量我的电脑->属性->高级->环境变量选择PATH,在其后面添加:你的mysql安装文件下的bin文件夹在解压后的文件夹下创建my.ini 配置文件编辑my.ini文件,注意替换路径位置 ``` [mysqld] # 目录要换成自己的 basedir=

2021-07-05 19:28:59 747 2

原创 Java零基础学java之注解和反射--07类加载器

类加载器package com.li.reflection_;public class Test03 { public static void main(String[] args) throws ClassNotFoundException { //获取系统类的加载器 ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader(); System.out.println(sy

2021-07-05 15:18:52 61

原创 Java零基础学java之注解和反射--06Java内存分析

Java内存分析类的加载过程当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过如下三个步骤来对该类进行初始化类的加载过程与ClassLoader的理解加载:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后生成一个代表这个类的java.lang.Class对象链接:将Java类的二进制代码合并到JVM的运行状态之中的过程验证:确保加载的类信息符合JVM的运行规范,没有安全方面的问题准备:正式为类变量(static)分配内存并设

2021-07-04 21:49:20 55

原创 Java零基础学java之注解和反射--05反射

Java ReflectionReflection(反射)是Java被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。Class c = Class.forName("java.lang.String")加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),在这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜

2021-07-04 19:24:13 78 2

原创 Java零基础学java之注解和反射--04自定义注解

自定义注解使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口分析:@interface用来声明一个注解,格式:public @interface 注解名{定义内容}其中的每一个方法实际上时声明了一个配置参数返回值类型就是参数的类型(返回值只能是基本了类型,Class、String、enum)可以通过default来声明参数的默认值如果只有一个参数成员,一般参数名为value注解元素必须要有值,我们定义注解元素时,经常使用空字

2021-07-04 16:53:45 103

原创 Java零基础学java之注解和反射--03元注解

元注解元注解的作用就是负责注解其他注解,Java定义了4个标准的meta-annotation类型。他们被用来提供对其他annotation类型作说明这些类型和他们所支持的类在java.lang.annotation包中可以找到(@Target,@Retention,@Documented,@Inherited)@Target:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)@Retention:表述需要在什么级别保存该注释信息,用于描述注解的生命周期(SOURCE&l

2021-07-04 16:27:33 78

原创 Java零基础学java之注解和反射--02内置注解

内置注解@Override:定义在java.lang.Override中,此注释只适用于修辞方法,表示一个方法声明打算重写超类中的另一个方法声明。@Deprecated:定义在java.lang.Deprecated中,此注释可以用于修辞方法,属性、类、表示不鼓励程序员使用这样的元素,通常是因为它很危险或者存在更好的选择@supperssWarnings:定义在java.lang.SupperssWarnings,用来抑制编译时的警告信息与前两个注释有所不同,你需要添加一个参数才能正确使用,这些

2021-07-04 15:45:50 86

原创 Java零基础学java之注解和反射--01什么是注解?

什么是注解Annotation是从JDK5.0开始引入的新技术。Annotation的作用:不是程序本身,可以对程序作出解释。(这一点和注释(comment)没什么区别)不可以被其他程序(比如:编译器等)读取。Annotation的格式:注解是以"@注释名"在代码中存在的,还可以添加一些参数值,例如:@SupperessWarnings(value=“unchecked”).Annotation在哪里使用?可以附加在package、class、method、fiel

2021-07-04 15:23:24 55

原创 多线程和UDP--在线咨询聊天

在线咨询:两个人都可以是发送方,也都可以是接收方一个线程发送,一个线程接收,同时开启两个线程 在线聊天发送信息客户端:package com.li.chat;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetSocketAddress;//一个线程发

2021-07-04 11:31:51 104

原创 Java零基础学java之多线程--23使用线程池

使用线程池背景:经常创建和销毁、使用量特别大的资源,比如并发情况下的线程,对性能影响很大。思路:提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。可以避免频繁创建销毁、实现重复利用。类似生活的公共交通工具。好处:提高响应速度(减少了创建新线程的时间)降低资源消耗(重复利用线程池,不需要每次都创建)便于线程管理(…)corePoolSize:核心池的大小maximumPoolSize:最大线程数keepAliveTime:线程没有任务时最多保持多长时间后会终止

2021-07-03 21:08:18 58

原创 Java零基础学java之多线程--22生产者消费者问题:信号灯法

package com.li;//测试:生产者消费者问题 --> 信号灯法//电视台(节目,广告)、观众、电视public class TestPC2 { public static void main(String[] args) { TV tv = new TV(); TVStation tvStation = new TVStation(tv); Audience audience = new Audience(tv);

2021-07-02 22:57:10 58

原创 Java零基础学java之多线程--21生产者消费者问题:管程法

package com.li;//测试:生产者消费者问题-->利用缓冲区解决:管程法//生产者、消费者、产品、缓冲区public class TestPC { public static void main(String[] args) { Buffer buffer = new Buffer(); Producers product = new Producers(buffer); Consumer consumer = new Con

2021-07-02 21:29:55 74

原创 Java零基础学java之多线程--20Lock锁

Lock(锁)从JDK5.0开始,Java提供了更强大的线程同步机制——通过显式的定义同步锁对象来实现同步。同步锁使用Lock对象充当java.util.concurrent.locks.Lock接口是控制多个线程共享资源进行访问的工具。锁提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程开始访问共享资源之前应先获得Lock对象ReentrantLock类实现了Lock,它拥有与synchronized相同的并发性和内存语义,在实现线程安全的控制中,比较常用的是Reentrant

2021-07-02 09:12:11 89

原创 Java零基础学java之多线程--19死锁剖析和案例

死锁多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能运行,二导致两个或者多个线程都在等待对方释放资源,都停止执行的情形。某一个同步块同时拥有“两个以上对象的锁”时,就可能会发生“死锁”的问题死锁比秒方法产生死锁的四个必要条件:互斥条件:一个资源每次只能被一个进程使用请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系

2021-07-01 21:29:31 59

原创 Java零基础学java之多线程--18JUC并发

package com.li.thread_synchronized;import java.util.concurrent.CopyOnWriteArrayList;public class TestJUC { public static void main(String[] args) throws InterruptedException { CopyOnWriteArrayList list = new CopyOnWriteArrayList();

2021-07-01 21:27:21 58

原创 Java零基础学java之多线程--18同步方法同步块

同步方法由于我们可以通过private关键字来保证数据对象只能被方法访问,所以我们只需要针对方法提供一套机制,这套机制,就是synchronized关键字,它包括两种用法:synchronized 方法 和synchronized块同步方法:public synchronized void method(int args){}synchronized方法控制对“对象”的访问,每一个对象对应一把锁,每个synchronized方法都必须获得调用该方法的对象的锁才能执行,否则线程会阻塞,方法一

2021-07-01 21:25:42 55

原创 Java零基础学java之多线程--17线程不安全案例03

package com.li.thread_synchronized;import java.util.ArrayList;import java.util.List;//线程不安全的集合public class UnsafeList { public static void main(String[] args) { List list = new ArrayList(); for (int i = 0; i < 100000; i++) {

2021-07-01 11:49:07 55

原创 Java零基础学java之多线程--16线程不安全案例02

package com.li.thread_synchronized;//不安全取钱public class UnsafeWithdrawMoney { public static void main(String[] args) { //账户 Account account = new Account("结婚基金",100); //取钱 WithdrawMoney me = new WithdrawMoney(account,5

2021-07-01 11:48:23 59

原创 Java零基础学java之多线程--15线程不安全案例01

package com.li.thread_synchronized;//不安全买票public class UnsafeBuyTicket { public static void main(String[] args) { BuyTicket buyTicket = new BuyTicket(); new Thread(buyTicket,"小军").start(); new Thread(buyTicket,"小华").start();

2021-07-01 11:47:36 46

原创 Java零基础学java之多线程--14线程同步

线程同步​ 多个线程操作同一个资源 形成条件:队列+锁 解决安全性并发并发:同一个对象被多个线程同时操作上万人同时抢火车票两个银行同时取钱处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象。这时我们就需要线程同步,线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个线程再使用由于同一个进程的多个线程共享同一块存储空间,在带来方便的同时,也带来来访问冲突问题,为了保证数据在方法中被访问时的正确性,在访问

2021-07-01 11:46:22 65

原创 Java零基础学java之多线程--13 守护(daemon)线程

守护(daemon)线程线程分为用户线程和守护线程虚拟机必须确保用户线程执行完毕虚拟机不用等待守护线程执行完毕如,后台记录操作日志,监控内存,垃圾回收等待…package com.li.thread_state;//测试守护线程//上帝守护你public class TestDaemonThread { public static void main(String[] args) { God god = new God(); You you =

2021-06-30 21:00:33 68

原创 Java零基础学java之多线程--12线程优先级

线程优先级Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级觉得应该调度哪个线程来执行线程的优先级用数字表示,范围从1~10Thread.MIN_PRIORITY = 1;Thread.MAX_PRIORITY = 10;Thread.NORM_PRIORITY = 5;使用以下方式改变或获取优先级getPriority().setPriority(int xxx)优先级的设定建议在start()调度前优先级低只是意味着获得调度的概率低

2021-06-30 20:12:36 84

原创 Java零基础学java之多线程--11线程状态观测

线程状态观测Thread.State线程状态。线程可以处于以下状态之一:New尚未启动的线程处于此状态Runnable在Java虚拟机中执行的线程处于此状态Blocked被阻塞等待监视器锁定的线程处于此状态Waiting正在等待另一个线程执行特定动作的线程处于此状态Timed_Waiting正在等待另一个线程执行动作达到指定等待时间的线程处于此状态Terminated已退出的线程处于此状态package com.li.thread_state;/

2021-06-30 19:24:10 79

原创 Java零基础学java之多线程--10线程礼让&Join

线程礼让礼让线程,让当前正在执行的线程暂停,但不阻塞将线程从运行状态转为就绪状态让cpu重新调度,礼让不一定成功!CPU心情package com.li.thread_state;//线程礼让,礼让不一定成功,看CPU心情public class TestThreadYield { public static void main(String[] args) throws InterruptedException { MyYield myYield = new My

2021-06-30 15:53:05 83

原创 Java零基础学java之多线程--09线程休眠

线程休眠sleep(时间) 指定当前线程阻塞的毫秒数;sleep存在异常InterruptedException;sleep时间达到后线程进入就绪状态;sleep可以模拟网络延时,倒计时等。每一个对象都有一个锁,sleep不会释放锁;package com.li.thread_state;import java.text.SimpleDateFormat;import java.util.Date;//模拟倒计时public class TestThreadSleep {

2021-06-30 10:10:27 67

原创 Java零基础学java之多线程--08线程停止

//测试stop/** 1. 建议线程正常停止--->利用次数,不建议死循环* 2. 建议使用flag标志位* 3. 不要使用stop和destroy等过时或者JDK不建议使用的方法*///用flag标志位停止线程public class TestThreadStop implements Runnable{ private boolean flag = true; @Override public void run() { int i = 0;.

2021-06-29 22:39:29 68

原创 Java零基础学java之多线程--07静态代理和Thread的静态代理

//静态代理模拟婚庆公司代理自己帮自己处理结婚的事情/** 1. 真实对象和代理对象都要实现同一个接口* 2. 代理对象要代理真实角色* 好处:* 1. 代理对象可以做很多真实对象做不了的事情* 2. 真实对象专注于做自己的事情*/public class StaticProxy { public static void main(String[] args) { //把结婚的目标对象传入婚庆公司 WeddingCompany weddingC.

2021-06-29 21:51:50 65

原创 Java零基础学java之多线程--06Lambda表达式

Lambda表达式λ 希腊字母表中排序第十一的字母,英语名称为Lambda避免匿名内部类定义过多其实质属于函数式编程概念(params) -> expression[表达式] (params) -> statement[语句] (params) -> {statements}a -> System.out.println(“i like lambda” + a);new Thread(()->System.out.println(“多线程学习。。

2021-06-29 20:04:17 69

原创 Java零基础学java之多线程--05模拟龟兔赛跑

//模拟龟兔赛跑/** 1. 模拟一个赛道,让乌龟兔子跑向终点* 2. 判断比赛是否结束* 3. 比赛结束打赢胜利者* */public class Race implements Runnable{ private String winner;//胜利者 @Override public void run() { //模拟兔子睡觉 if (Thread.currentThread().getName().equals("兔子")) .

2021-06-28 22:29:32 160

空空如也

空空如也

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

TA关注的人

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