自定义博客皮肤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)
  • 收藏
  • 关注

原创 20210822自学(14中设计模式)

一、单例模式1、双层校验/** * 懒汉式,升级版,叫双层校验,单例模式, 不足“在第一次创建对象时候需要同步 * * */public class DclSingleton { private volatile static DclSingleton instance;​ private DclSingleton() { } private static DclSingleton getInstance(){ if (insta...

2021-09-05 16:07:30 149

原创 jdbc 连接

public class Test {public static void main(String[] args) {try { ​ //1.加载驱动类 ​ Class.forName("oracle.jdbc.driver.OracleDriver"); ​ //2.获取其数据库连接对象 ​ Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "jsd2107", "jsd2107"

2021-08-17 10:22:01 127

原创 触发器(what why how)

what:•触发器是当特定事件出现时自动执行的存储过程•特定事件可以是执行更新的DML语句和DDL语句why:触发器的功能:–自动生成数据–自定义复杂的安全权限–提供审计和日志记录–启用复杂的业务逻辑触发器由三个部分组成•触发器语句(事件)–定义激活触发器的 DML 事件和 DDL 事件•触发器限制–执行触发器的条件,该条件必须为真才能激活触发器•触发器操作(主体)–包含一些 SQL 语句和代码,它们在发出了触发器语句且触发限制的值为真时运行

2021-08-17 10:21:26 184

原创 数据库对象

一、Oracle同义词的使用定义:同义词是现有对象的一个别名作用:–简化SQL语句–隐藏对象的名称和所有者–提供对对象的公共访问同义词共有两种类型:•公有同义词可被所有的数据库用户访问。•私有同义词只能在其模式内访问,且不能与当前模式的对象同名。1)、公有同义词的创建: create public synonym table_name for user.table_name; 其中第一个user_table和第二个user_table可以不一样。2)、删除公有

2021-08-17 10:20:43 106

原创 子程序和程序包(what why how)

what:•命名的 PL/SQL 块,编译并存储在数据库中。•子程序的各个部分:–声明部分–可执行部分–异常处理部分(可选)•子程序的分类:–过程 - 执行某些操作–函数 - 执行操作并返回值why子程序的优点:•模块化–将程序分解为逻辑模块•可重用性–可以被任意数目的程序调用•可维护性–简化维护操作•安全性–通过设置权限,使数据更安全how创建过程--创建存储过程,根据员工编号输出员工信息 create or replac

2021-08-17 10:19:58 134

原创 20210812 oracle日常

--创建存储过程,根据员工编号输出员工信息create or replace procedure find_emp_no(emp_no in employees.employee_id%type)is emp_row employees%rowtype;begin select e.* into emp_row from employees e where e.employee_id=emp_no; dbms_output.put_line('编号:'||emp_row....

2021-08-17 10:18:02 276

原创 20210811 Oracle日常

---------------------------------------------declare--列类型name student.name%type;--行类型 student_row student%rowtype;begin--给变量复制给变量select s.name into name from student s where s.id = 1;--查询一行数据赋值给变量student_row ,不能查询到多行,否则会保存select s.*...

2021-08-17 10:17:11 119

原创 20210810 Oracle日常

--找出部门10中所有经理,--部门20中所有办事员以及既不是经理又不是办事员但其薪金大于或等2000的所有雇员的详细资料。select s.*from employees swhere (s.department_id = 80 and s.job_id like '%MAN') or (s.department_id = 50 and s.job_id like '%CLERK') or (s.salary>=6000 and s.job_id not like '%M...

2021-08-17 10:16:17 200

原创 20210809 Oracle 日常

select * from student;--学生平均年龄select avg(s.age) 平均年龄 from student s--学生最大年龄select max(s.age) 最大年龄 from student s--学生最小年龄select min(s.age) 最小年龄 from student s--学生年龄总和select sum(s.age) 年龄总和 from student s--学生总数select count(*) 学生总数 from student s-

2021-08-17 10:15:24 190

原创 20210806 Oracle 日常

select * from student;--插入数据/**/-- to_date函数,把字符串格式换成日期类型,第一个参数是字符串,第二个参数是格式类型--sysdate系统提供的函数,获取当前系统时间--对数据进行写操作,会涉及到事务操作,会涉及到事务操作,事务提交或者回滚,读取(查询数据)不会设计事务insert into student(id,name,username,password,sex,age,birthday,create_time) values(1,'张三','zhans

2021-08-17 10:13:30 67

原创 20210805 学习Oracle 的日常

-- Create tablecreate table student( id number not null, name varchar2(20) not null, username varchar2(20) not null, password number not null, sex number not null, age number not null, birthday date ...

2021-08-17 10:11:46 47

原创 观察者模式

观察者模式的主要角色如下。 抽象主题(Subject)角色:也叫抽象目标类,它提供了一个用于保存观察者对象的聚集类和增加、删除观察者对象的方法,以及通知所有观察者的抽象方法。 具体主题(Concrete Subject)角色:也叫具体目标类,它实现抽象目标中的通知方法,当具体主题的内部状态发生改变时,通知所有注册过的观察者对象。 抽象观察者(Observer)角色:它是一个抽象类或接口,它包含了一个更新自己的抽象方法,当接到具体主题的更改通知时被调用。 具体观察者(Con

2021-08-03 18:39:51 46

原创 代理模式(动态代理)

抽象主题:/*** 抽象主题,房东** 缺点:跟目标对象一样实现了抽象业务的接口,一旦抽象业务接口* 发生改变也必须跟着改变,可以使用动态代理(反射机制)解决* */public interface HouseOwner { /** * 出租房屋 * */ public void rent(); /** * 收租 * */ public void getMoney(); /** * 房子日常保...

2021-08-03 18:32:52 44

原创 代理模式(静态代理)

模式的结构代理模式的主要角色如下。 抽象主题(Subject)类:通过接口或抽象类声明真实主题和代理对象实现的业务方法。 真实主题(Real Subject)类:实现了抽象主题中的具体业务,是代理对象所代表的真实对象,是最终要引用的对象。 代理(Proxy)类:提供了与真实主题相同的接口,其内部含有对真实主题的引用,它可以访问、控制或扩展真实主题的功能。 静态代理:抽象主题:/*** 抽象主题,房东** 缺点:跟目标对象一样实现了抽象业务的接口,一旦...

2021-08-03 18:28:55 68

原创 抽象工厂模式

抽象工厂模式的主要角色如下。 抽象工厂(Abstract Factory):提供了创建产品的接口,它包含多个创建产品的方法 newProduct(),可以创建多个不同等级的产品。 具体工厂(Concrete Factory):主要是实现抽象工厂中的多个抽象方法,完成具体产品的创建。 抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能,抽象工厂模式有多个抽象产品。 具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来

2021-08-03 18:27:33 59

原创 工厂方法模式

工厂方法模式的主要角色如下。 抽象工厂(Abstract Factory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法 newProduct() 来创建产品。 具体工厂(ConcreteFactory):主要是实现抽象工厂中的抽象方法,完成具体产品的创建。 抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能。 具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间一一对应。

2021-08-03 18:25:19 500

原创 简单工厂设计模式

简单工厂模式的主要角色如下: 简单工厂(SimpleFactory):是简单工厂模式的核心,负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。 抽象产品(Product):是简单工厂创建的所有对象的父类,负责描述所有实例共有的公共接口。 具体产品(ConcreteProduct):是简单工厂模式的创建目标。 抽象产品:/*** 家用电器接口 抽象产品** */public interface Applian...

2021-08-03 18:23:30 77

原创 解决单例模式线程不安全问题

1、懒汉式 不足:在多线程环境中存在多个对象 ,线程不安全public class Singleton { private static Singleton singleton; private Singleton(){ } public static Singleton getInstance(){ if (singleton==null){ singleton = new Singleton(); } ...

2021-08-03 17:31:55 1247

原创 java操作excel文件(读取)

1、获取一个execl文件的路径(获取此对象需要抛出异常)Workbook workbook = Workbook.getWorkbook(new File("E:\\学生信息.xls"));2、获取第一个工资表,第一个工作表是0,第二个的工作表是1Sheet sheet = workbook.getSheet(0);3、根据单元格的行号和列好获取单元格对象Cell cell = sheet.getCell(0, 0);4、输出表格中的值System.out.println(ce

2021-08-03 17:29:35 204

原创 java操作excel文件(创建)

1、首先导入jrljjava包2、创建一个工作簿excel文件,指定文件路径和名称WritableWorkbook workbook = Workbook.createWorkbook(new File("E:\\学生信息.xls"));3、创建一个工作表sheet,指定表格名称和序号,第一个表格序号0WritableSheet sheet = workbook.createSheet("学生信息表", 0);4、创建一个单元个对象cell,该单元格与表格中的第一行第一列,内容是“学生编

2021-08-03 17:28:32 2616

原创 多线程生产者、消费者模式,设计四个线程对象对同一个数进行操作,两个线程进行加1操作,两个线程进行减1操作

第一个类:public class Num { private int num=0; public void add(){ num++; System.out.println(Thread.currentThread().getName()+"->"+num); } public void decrease(){ num--; System.out.println(Thread.currentThre

2021-07-31 10:39:05 271

原创 编写一个程序,采用文件字符流实现将两个原有文件的内容合并到一个新的文件中

public class Test03 { public static void main(String[] args) { try (FileReader fr1 = new FileReader("E:\\链接.txt"); FileReader fr2 = new FileReader("E:\\shabi.txt"); FileWriter fw = new FileWriter("E:\\666.txt"); .

2021-07-31 10:38:04 876

原创 从键盘中任意输入两个日期(格式是yyyy-MM-dd)计算两个日期段相距天数

public class Test02 { public static int chajv(Date date, Date date2){ int days = (int) ((date2.getTime() - date.getTime()) / (1000*3600*24)); return days; } public static void main(String[] args) { Scanner sc = new Sc.

2021-07-31 10:37:31 1883

原创 *1.设计一个异常类表示对负数求平方根的错误,在类Test的main方法中,* 从键盘中输入一个数字,若输入的数不小于0,则输出该数的平方根(用Math.sprt());* 若小于0,则抛出自定义

/**1.设计一个异常类表示对负数求平方根的错误,在类Test的main方法中,* 从键盘中输入一个数字,若输入的数不小于0,则输出该数的平方根(用Math.sprt());* 若小于0,则抛出自定义异常;在程序中处理异常并输出错误信息“输入错误,不能对负数求平方根”。(10分)* */public class Test01 { public static void main(String[] args) throws Exception { Scanner s = ne.

2021-07-31 10:37:03 181

原创 Datagram通讯

用到两个类:服务端类(Server)、客户端类(Client)服务端类(Server)::/** Datagram通讯* */public class Client { public static void main(String[] args) { //字符冲<->getBytes 构造方法 //字符串<->toCharArray 构造方法 //字符串<->数字 Xxx.parseXxx(...

2021-07-30 14:00:19 69

原创 通过Socket进行网络传输

要创建4个类:客户类(Client)、服务器类(Server)、接收类(Riceive)、发送类(Send)客户类:public class Client { public static void main(String[] args) { try { Socket s = new Socket("localhost",6666); new Thread(new Send(s)).start(); } ca...

2021-07-30 13:55:25 433

原创 java中数组应用,求数组元素的最大值,最小值

/** 数组应用,求数组元素的最大值,最小值* */public class Test11 { public static void main(String[] args) {// int[] a = {10,8,25,11};// int tep = ;//// for (int i=0;i<a.length;i++){// if (a[i]<a[i+1]){// tep=.

2021-07-29 18:46:49 110

原创 从键盘输入一个数,判断该数是否在此数组中,如果在则输出“包含”,如果不在则输出“不包含”

/* * 从键盘输入一个数,判断该数是否在此数组中,如果在则输出“包含”,如果不在则输出“不包含” * */public class Test10 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个数"); String line = scanner.nextLine(); .

2021-07-29 18:29:56 3246

原创 从键盘输入一个数,判断该数是否在此数组中,如果在则输出“包含”,如果不在则输出“不包含”

/* * 从键盘输入一个数,判断该数是否在此数组中,如果在则输出“包含”,如果不在则输出“不包含” * */public class Test10 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个数"); String line = scanner.nextLine(); .

2021-07-29 18:23:02 1874

原创 编写程序,从键盘中分别输入年、月、日,计算这天是年中的第多少天。

package com.yt.lx;import java.util.Scanner;/** 编写程序,从键盘中分别输入年、月、日,计算这天是年中的第多少天。* */public class Test07 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入年份"); int.

2021-07-29 17:43:00 903

原创 实现客户端与服务端信息的多发送(用到多线程)

接收信息的线程/** 接收信息的线程* */public class ReceiveMsgThread implements Runnable { private Socket s; private String name; public ReceiveMsgThread(){ } public ReceiveMsgThread(Socket socket,String name){ this.s=socket; thi...

2021-07-29 17:26:34 239

原创 创建一个客户端Client和创建一个服务端Server实现通信

/** 客服端Socket** */public class MyClient { public static void main(String[] args) { //创建一个Socket对象,用来跟服务器的Socket进行通信,传递数据 //指定要链接的Socket端的服务器ip地址和端口号,本机ip是127.0.0.1 //或者写本机的域名localhost try ( //如果链接成功,返回本机的一个Sock...

2021-07-29 17:25:26 644

原创 定时器的使用

public class Test01 {public static void main(String[] args) {//定义一个定时器 Timer timer = new Timer(); //3秒钟后运行 timer.schedule(new MyTask(), 3000);}}class MyTask extends TimerTask{@Overridepublic void run() {System...

2021-07-29 13:36:45 28

原创 采用线程的方式检验i++不是原子操作,在多线程环境中需要同步,类似的还有;ArrayList* HashMap等都不是线程安全的,vector,HashTable线程安全

public class Number { //volatile修饰词,变量值发生改变对其他线程可见,可以保证可见性, //有序性,不保证原子性 /* * 1、创建性 * 2、有序性 * 3、原子性 * synchronized关键性、保证原子性、保证有序性 * */// private volatile int i; private int i; public void incr(){ sync.

2021-07-28 19:28:29 37

原创 创建两个线程,交替输出0,1数字

/** 创建两个线程,交替输出0,1数字* */public class NumberChange { private int num; public synchronized void incr(){ //使用while不用if条件判断,主要是虚假唤醒 while (num>0){//当前num数大于0则线程等待,否则加1 try { wait();//线程等待,直到被唤醒,必须写在同步方法...

2021-07-28 18:29:43 283

原创 volatile关键字的使用,其他线程立马可见

/** volatile关键字的使用,其他线程立马可见* */public class Test21 { private static volatile boolean flag=true; public static void main(String[] args) { new Thread(()->{ while(flag){ System.out.println("阿良你好!"); ...

2021-07-28 18:28:40 85

原创 当线程在睡眠的时候中断练习

public class Test20 { public static void main(String[] args) { Thread ti = new Thread(()->{ for (int i = 1; i <=1000; i++) { try { Thread.sleep(100); } catch (InterruptedExce...

2021-07-28 18:27:36 77

原创 线程中断练习

/*创建一个线程代码执行1000次,在线程执行过程中,中断线程实验,睡眠是为了不让子线程执行完,主线程在中断,达不到中断的效果,所以让他睡眠0.1毫秒*/public class Test19 { public static void main(String[] args) { Thread thread=new Thread(()->{ for (int i=1;i<=1000;i++) { //判断当前线程...

2021-07-28 18:23:15 29

原创 为了解决线程不安全可以用同步锁

1、同步锁,保证线程同步,作用在方法上面,此方法同一时刻只允许一个线程执行同步方法这是锁方法:只能经一个线程,知道这条语句执行完public synchronized void sale(){ if (num>0){ System.out.println(Thread.currentThread().getName()+"卖出了第"+num+"张票"); num--; }2、锁方法,线程都能进去public void sale2(){ /*...

2021-07-28 18:17:42 82

原创 创建线程可以直接用匿名类,不用创建类

package com.yt.hzh;/** 售票* */public class Ticket { private int num = 100;// int a = 0; /* * 同步锁,保证线程同步,作用在方法上面,此方法同一时刻只允许一个线程执行 * 同步方法 * */ public synchronized void sale(){ if (num>0){ System.out.println(.

2021-07-28 17:57:00 71

空空如也

空空如也

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

TA关注的人

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