
Java基础
AnalogElectronic
这个作者很懒,什么都没留下…
展开
-
问题记录,服务工厂模式的必要性
综上所述,虽然直接在 getAward 上增加 serviceType 参数看起来更简单,但采用工厂模式在长远来看能够带来更多的好处,包括提高系统的灵活性、可维护性、扩展性和代码质量。如果直接在 getAward 上增加 serviceType 参数,虽然解决了服务选择的问题,但如果未来有更多的服务类型需要支持,接口参数会越来越多,变得复杂。未来如果服务调用的逻辑需要更加复杂,比如动态加载服务或根据条件动态选择服务,工厂模式可以更轻松地应对这些变化,而直接在接口上增加参数可能难以适应。原创 2025-02-24 15:35:20 · 564 阅读 · 0 评论 -
thinking in java summary
本书在设计时认真考虑了人们学习 Java 语言的方式。在我授课时,学生们的反映有效地帮助了我认识哪些部分是比较困难的,需特别加以留意。我也曾经一次讲述了太多的问题,但得到的教训是:假如包括了大量新特性,就需要对它们全部作出解释,而这特别容易加深学生们的混淆。因此,我进行了大量努力,使这本书一次尽可能地少涉及一些问题。所以,我在书中的目标是让每一章都讲述一种语言特性,或者只讲述少数几个相互关联的特性。这样一来,读者在转向下一主题时,就能更容易地消化前面学到的知识。下面列出对本书各章的一个简要说明,它们与我实际原创 2023-08-17 10:30:57 · 139 阅读 · 0 评论 -
JAVA程序,MYSQL日志表按月分区
java程序, AOP(Aspect Oriented Programming)环绕通知,记录接口调用日志。mysql 建立分区表。原创 2023-05-12 11:05:04 · 423 阅读 · 0 评论 -
JAVA 生成8位随机密码
【代码】JAVA 生成8位随机密码。原创 2022-12-01 10:45:43 · 599 阅读 · 0 评论 -
JAVA 命令参数
参考https://developer.aliyun.com/article/914014C:\Users\DTW>java -X -Xmixed 混合模式执行 (默认) -Xint 仅解释模式执行 -Xbootclasspath:<用 ; 分隔的目录和 zip/jar 文件> 设置搜索路径以引导类和资源 -Xbootclasspath/a:<用 ; 分隔的目录和原创 2022-05-11 15:47:32 · 307 阅读 · 0 评论 -
JAVA service层参数校验
package springboot.domain;import cn.afterturn.easypoi.excel.annotation.Excel;import com.alibaba.excel.annotation.ExcelIgnore;import com.alibaba.excel.annotation.ExcelProperty;import com.baomidou.mybatisplus.annotation.TableField;import com.baomidou.m原创 2022-04-16 11:14:31 · 1977 阅读 · 0 评论 -
mysql索引对查询效率的影响
文章目录数据准备创建一张表创建随机生成姓名的函数创建新增n条数据的存储过程表里插入两千万条数据没索引有索引数据准备创建一张表create table student( s_id varchar(64) not null primary key, s_name varchar(20) default '' not null, s_birth varchar(20) default '' not null, s_sex varchar(10) d原创 2021-12-16 15:30:20 · 1012 阅读 · 0 评论 -
oracle学习笔记01
02.oracle体系结构1、数据库oracle数据库是数据的物理存储,包括数据文件ORA或DBF、控制文件、联机文件、参数文件。oracle数据库概念和其他数据库不一样,这里的数据库是一个操作系统只有一个库。2、实例一个oracle实例(oracle instance)有一系列的后台进程(background process)和内存结构(memory structure)组成,一个数据库可以有n个实例。3、数据文件(dbf)数据文件是数据库物理存储单位,数据库的数据是存在表空间中的,真正是在某原创 2021-11-14 15:06:49 · 1006 阅读 · 0 评论 -
mysql配置文件 my.ini
mysql配置文件 my.ini[mysql] # 设置mysql客户端默认字符集default-character-set=utf8 [mysqld]#设置3306端口port = 3306 # 设置mysql的安装目录basedir=C:\Program Files (x86)\MySQL\MySQL Server 5.7# 允许最大连接数max_connections=200# 服务端使用的字符集默认为8比特编码的latin1字符集character-set-server=u原创 2021-11-09 16:08:52 · 207 阅读 · 0 评论 -
kettle教程
kettle/spoon教程donwload webkettle7.0 download urlreference原创 2021-09-29 16:15:06 · 168 阅读 · 0 评论 -
springboot整合mybatis-plus多数据源分别连接mysql和oracle
一、引入依赖 <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.3</version> </dependency><!-- MYBATIS PLUS -->原创 2021-09-07 17:13:20 · 2869 阅读 · 1 评论 -
JAVA发送邮件案例
申请一个免费邮箱并且进入设置 开启服务 IMAP/SMTP服务器,设置开启后会获得一个授权码。package test.testEmail;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import java.util.Date;import java.util.Pr原创 2021-08-27 11:10:04 · 348 阅读 · 0 评论 -
MySQL数据库深度讲解
文章目录mySQL深度讲解Oracle 和 MySQL 比较第一章 数据库设计彻底搞定MySQL乱码问题常见的字符集数据库存储引擎mySQL命令帮助第三章 mySQL 语言结构SQL语言分类SQL语句中的常量和变量mysql系统变量运算符和表达式系统内置函数数据库高级开发课程介绍第二章 创建存储函数在存储函数中使用变量和判断语句第三章 视图第四章 存储过程第五章 触发器第6章 索引索引的分类创建索引第七章 事务和锁mySQL深度讲解1.数据库设计 和 SQL语句2.数据库高级开发 视图 函数 存储过程原创 2021-08-05 15:16:16 · 630 阅读 · 0 评论 -
用oracle的sqlload导入文件到数据库
一、将csv文件和input.ctl文件放到一个文件夹下1)数据源文件input.csv (utf-8编码)17,后天去哪里呀,本来这件事情就让京东快递快,2021-04-01 17:37:25,user1212)执行控制文件input.cltload datainfile 'input.csv'insert into table NOTEtruncatefields terminated by ","(note_id,content,note_time DATE 'YYYY-MM-原创 2021-04-02 11:53:28 · 575 阅读 · 0 评论 -
JAVA多线程下载,断点下载
package com;/** * @author *cruder * @version 1.0 * @since 2021/3/23 20:16 */import java.io.*;import java.net.HttpURLConnection;import java.net.URL;public class Test{ public static void main(String[] args){ downlaod4(); } pub原创 2021-03-23 21:04:25 · 221 阅读 · 0 评论 -
MySql存储引擎的比较及选择
文章目录一、比较1、MyISAM2、InnoDB1)自动增长列2)外键约束3)存储方式3、MEMORY4、 MERGE二、如何选择合适的存储引擎一、比较1、MyISAMMyISAM 是 MySQL 的默认存储引擎。MyISAM 不支持事务、也不支持外键,其优势是访问的速度快,对事务完整性没有要求或者以 SELECT、INSERT 为主的应用基本上都可以使用这个引擎来创建表。每个 MyISAM 在磁盘上存储成 3 个文件,其文件名都和表名相同,但扩展名分别是: .frm(存储表定义); .原创 2021-03-09 11:22:57 · 185 阅读 · 0 评论 -
一个简单的前后端分离案例
一、IDEA 建一个spring boot 工程,只要spring web依赖即可二、写一个测试接口package com.example.demo;import org.springframework.web.bind.annotation.CrossOrigin;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestContr原创 2021-03-06 21:40:22 · 891 阅读 · 0 评论 -
设计模式之享元模式
package designPatterns.structuralPatterns.flyweight;import java.awt.*;public class Tree { private int x; private int y; private TreeType type; public Tree(int x, int y, TreeType type) { this.x = x; this.y = y; t原创 2021-01-29 13:55:21 · 155 阅读 · 0 评论 -
设计模式之代理模式
package designPatterns.structuralPatterns.proxy;import java.util.HashMap;public interface ThirdPartyYouTubeLib { HashMap<String, Video> popularVideos(); Video getVideo(String videoId);}package designPatterns.structuralPatterns.proxy;原创 2021-01-29 13:52:40 · 159 阅读 · 0 评论 -
设计模式之原型模式
package designPatterns.builder.prototype;import java.util.Objects;/** * @since 2020-08-23 19:03:27 * @author TEENWAY * 原型是一种创建型设计模式, 使你能够复制对象, 甚至是复杂对象, 而又无需使代码依赖它们所属的类。 * * 所有的原型类都必须有一个通用的接口, 使得即使在对象所属的具体类未知的情况下也能复制对象。 * 原型对象可以生成自身的完整副本, 因为相同类的对象原创 2021-01-29 13:47:19 · 171 阅读 · 0 评论 -
设计模式之生成器模式
package designPatterns.builder.builder;/** * @deprecated 生成器是一种创建型设计模式, 使你能够分步骤创建复杂对象。 * * 与其他创建型模式不同, 生成器不要求产品拥有通用接口。 这使得用相同的创建过程生成不同的产品成为可能。 * Builder interface defines all possible ways to configure a product. */public interface Builder { v原创 2021-01-29 13:42:30 · 175 阅读 · 0 评论 -
设计模式之工厂模式
一、简单工厂模式简单工厂模式是由一个工厂对象决定创建哪一种产品类的实例。在软件开发中,当我们会用到大量的创建某种、某类或某批对象时,就会使用到工厂模式。//简单工厂类public class SimpleFactory { //根据orderType 返回对应的Pizza 对象 public Pizza createPizza(String orderType) { Pizza pizza = null; System.out.println("使用简单工厂模式"); if (o原创 2021-01-29 13:37:47 · 155 阅读 · 0 评论 -
设计模式之单例模式
一、静态常量饿汉式这种写法比较简单,就是在类装在的时候就完成了实例化。避免了线程同步的问题。缺点是,不能到达Lazy Lodaing的效果,如果从始至终都没使用过这个实例,就会造成内存的浪费。//饿汉式(静态变量)class Singleton { //1. 构造器私有化, 外部能new private Singleton() { } //2.本类内部创建对象实例 private final static Singleton instance = new Singleton();原创 2021-01-29 11:31:16 · 134 阅读 · 0 评论 -
JUC与JVM并发编程学习笔记04
JUC与JVM并发编程学习笔记04JUC强大的辅助类CountDownLatchpackage test.testThread.juc;import java.util.concurrent.CountDownLatch;/** * 多线程模拟七个人上晚自习,班长最后一个走负责锁上门 */public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedExcepti原创 2021-01-19 11:07:41 · 219 阅读 · 1 评论 -
四大函数式接口、链式编程、流式计算
package test.testThread.jvm;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import lombok.experimental.Accessors;import java.util.Arrays;import java.util.List;import java.util.function.Consumer;import java.util原创 2021-01-18 18:09:54 · 233 阅读 · 2 评论 -
mysql几种连接的比较
-- In MySQL, JOIN, CROSS JOIN, and INNER JOIN are syntactic equivalents (they can replace each other).-- In standard SQL, they are not equivalent.-- INNER JOIN is used with an ON clause, CROSS JOIN is used otherwise.select t1.*,t2.* from student t1,sc..原创 2021-01-18 11:46:10 · 206 阅读 · 0 评论 -
JUC与JVM并发编程学习笔记03
7、CallableDemo 有返回值的线程调用package test.testThread.juc;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;/** * @author *cruder * @version 1.0 * @since 2021/1/17 13:19 */publ原创 2021-01-17 14:25:58 · 202 阅读 · 0 评论 -
JUC与JVM并发编程学习笔记02
5、生产者消费者问题1.一个生产者,一个消费者package test.testThread.juc;/** * 生产者消费者问题: * 现有两个线程可以操作一个初始值为0的变量,一个线程对该变量加1 * 一个线程对该变量减1,交替操作10轮,要求变量初始值为0 * @author *cruder * @version 1.0 * @since 2021/1/17 12:00 * * 高内聚低耦合条件下,线程操作资源类,判断/干活/通知 */public class ProdCo原创 2021-01-17 13:19:07 · 134 阅读 · 0 评论 -
JUC与JVM并发编程学习笔记01
JUC(java.util.concurrent)1.可重入锁多线程售票案例package com.test.concurrent;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 可重入锁多线程售票案例 */public class SaleTicketDemo01 { public static void main(String[] args原创 2021-01-16 15:48:05 · 295 阅读 · 0 评论 -
Java网络编程学习笔记
InetAddress知道有这么一个类InetAddress此类表示Internet协议(IP)地址。IP地址是由IP使用的32位或128位无符号数字,构建UDP和TCP协议的低级协议UDP 发送UDP 发送package blog.fundmental.javaNet.demo;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;/** * @autho原创 2020-12-01 22:21:52 · 258 阅读 · 0 评论 -
十五章 网络编程
但是,连网本身的概念并不是很难。我们想获得位于其他地方某台机器上的信息,并把它们移到这儿;或者相反。这与读写文件非常相似,只是文件存在于远程机器上,而且远程机器有权决定如何处理我们请求或者发送的数据。机器的标识当然,为了分辨来自别处的一台机器,以及为了保证自己连接的是希望的那台机器,必须有一种机制能独一无二地标识出网络内的每台机器。早期网络只解决了如何在本地网络环境中为机器提供唯一的名字。但 Java、面向的是整个因特网,这要求用一种机制对来自世界各地的机器进行标识。为达到这个目的,我们采用了IP(互联原创 2020-12-01 10:30:11 · 206 阅读 · 0 评论 -
MYSQL 基础语句
查看数据库SHOW DATABASES;SHOW DATABASES LIKE ‘%edu%’;创建数据库CREATE DATABASES test_db1;CREATE DATABASES IF NOT EXISTS test_db2;CREATE DATABASES test_db3;CREATE DATABASES IF NOT EXISTS test_db4 DEFAULT CHARACTER SET uft8 DEFAULT COLLATE utf8_chinese_ci;...原创 2020-11-23 09:24:49 · 317 阅读 · 0 评论 -
apache poi处理表格示例
package springboot.controller;import cn.afterturn.easypoi.excel.ExcelExportUtil;import cn.afterturn.easypoi.excel.entity.ExportParams;import org.apache.poi.ss.usermodel.*;import org.apache.poi.ss.util.CellRangeAddress;import org.springframework.bean原创 2020-11-18 17:20:28 · 223 阅读 · 0 评论 -
easypoi的学习笔记
http://poi.apache.org/Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。eaypoi 是什么?,Easypoi的目标不是替代poi,而是让一个不懂导入导出的快速使用poi完成Excel和word的各种操作,而不是看很多api才可以完成这样工作需要导入的依赖 <!--poi表格处理依赖--> <dependency>原创 2020-11-15 18:11:59 · 487 阅读 · 0 评论 -
Java线程池的学习记录
CAS( compare and swap)多个线程修改一个数据时,要比较修改前的值是否变化,如果变化了则不能修改compare and exchangeABA数据已经被其他线程修改过,只不过又变回原先的值。导致线程不知道数据的变化。线程是调度CPU的最小单元,也叫轻量级进程LWP(Light Weight Process)两种线程模型用户级线程内核级线程ULT:用户程序实现,不依赖操作系统核心,应用提供创建、同步、调度和管理线程的函数来控制用户线程。不需要用户态\内核态切换,原创 2020-11-04 15:27:19 · 254 阅读 · 0 评论 -
SpringBoot @Async注解的学习
异步方法调用是希望快速相应前台界面,而不至于应为后台操作太慢了卡死在哪里。例如:package springboot.service;import org.springframework.stereotype.Service;@Servicepublic class ServiceImpl implements IService{ @Override public void testAsync() { new Thread(()->{原创 2020-10-22 16:48:51 · 288 阅读 · 0 评论 -
SpringBoot中JSONObject 和 JSONArray的请求解析
package springboot.controller;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframew原创 2020-10-22 16:05:23 · 3307 阅读 · 0 评论 -
自定义数据库连接池和Druid介绍
常见的数据库连接池有c3p0、dbcp、druid(阿里巴巴开源,结合前面两者有点,加入日志监控,目前最好用的数据库连接池)自定义数据库连接池ConnectionPool.javapackage test.testCoonPool;import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.L原创 2020-10-18 20:20:11 · 336 阅读 · 0 评论 -
多线程(三)
线程的状态一个线程可以有四种状态:(1) 新(New):线程对象已经创建,但尚未启动,所以不可运行。(2) 可运行(Runnable):意味着一旦时间分片机制有空闲的CPU 周期提供给个线程,那个线程便可立即开始运行。因此,线程可能在、也可能不在运行当中,但一旦条件许可,没有什么能阻止它的运行——它既没有“死”掉,也未被“堵塞”。(3) 死(Dead):从自己的 run()方法中返回后,一个线程便已“死”掉。亦可调用 stop()令其死掉,但会产生一个违例——属于Error 的一个子类(也就是说,我原创 2020-09-30 16:26:57 · 118 阅读 · 0 评论 -
多线程(二)
可将单线程程序想象成一种孤立的实体,它能遍历我们的问题空间,而且一次只能做一件事情。由于只有一个实体,所以永远不必担心会有两个实体同时试图使用相同的资源,就象两个人时都想停到一个车位,同时都想通过一扇门,甚至同时发话。进入多线程环境后,它们则再也不是孤立的。可能会有两个甚至更多的线程试图同时同一个有限的资源。必须对这种潜在资源冲突进行预防,否则就可能发生两个线程同时访问一个银行帐号,打印到同一台计算机,以及对同一个值进行调整等等。package thinking.in.java.chapter14.s原创 2020-09-29 17:26:51 · 189 阅读 · 0 评论