自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 word转pdf小工具

前提:安装pywin32包。

2024-06-15 14:32:39 87

原创 多线程处理同一任务

在工作中,我们可能会面临一个比较费时的任务处理。比如给10万个手机号码发送短信,如果使用单线程的话是很费时的,如果一个手机号码短信的发送操作需要1s,那么大概需要1天。如果使用10个线程一起发送,那么只需要0.1天左右。那么怎么判断这10个线程都将短信发送完成了呢?一下分享目前所了解到的几个方法。 1)通过数组处理public class ThreadHandleDemo { //假设有五个线程 private static volatile boo...

2021-07-13 09:20:56 1761

原创 单例模式常见的实现方式

单例模式是一种比较常用的设计模式,我们经常使用的Spring框架就有单例模式的体现.所谓单例模式,就是一个类只有一个实例.以下是单例模式比较常见的实现方式:1.饿汉式 优点: 立即加载,因为没有锁,效率比较高 缺点: 一开始就加载初始化,占用内存/** * 饿汉式 * 特点: 立即加载 无锁,效率比较高 * 缺点: 可能暂时没有使用,从而形成垃圾对象 */class Singleton1 { //因为是静态的只有一份 ...

2021-07-12 18:24:08 365 3

原创 装饰者模式

在日常开发过程中,往往会碰到需要对已有类或者方法附加额外的功能但不破坏原有逻辑.(因为有可能这个类或者方法被多处调用,而其中一处需要额外的功能).此时,我们就可以用到装饰着模式.public class DecoratorPatternDemo { public static void main(String[] args) { System.out.println("包装前......"); IProgrammer juniorProg...

2021-07-12 09:15:10 144

原创 Spring中解决循环引用

目录一、前言 二、源码分析1.getBean(String name)方法2.getSingleton(beanName)方法3.getSingleton(String beanName, ObjectFactory singletonFactory)方法4.createBean(beanName, mbd, args)方法5.addSingletonFactory(beanName, singletonFactory)方法6.addSingleton(be...

2021-04-11 15:39:22 2543 1

原创 AOP注解版功能源码解析

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、项目介绍1.项目主要类的代码2.介绍@EnableAspectJAutoProxy注解的作用二、AOP使用流程介绍1.AspectJAutoProxyRegistrar被调用的时机2.AnnotationAwareAspectJAutoProxyCreator 实例化3.创建代理对象4.调用代理对象方法,触发通知总结前言本文主要是@EnableAspectJAutoProxy注解开启AOP功能,以及通知简单使用的流程介

2021-03-31 17:56:29 150 2

原创 Spring注解

1.@Configuration作用在类上,表名被@Configuration修饰的类是一个配置类。主要与@Bean联合使用将第三方jar类注入到容器中@Configuration public class MyConfig {2.@Bean主要与@Configuration注解联合使用,作用在方法上,将方法返回的类注入到容器中。注入容器中的Bean Id 默认为方法名.主要属性:name 同 value: 用于自定义注入容器中Bean的Id;是一个数组,可以为这个bean.

2021-03-18 21:41:47 194

原创 oracle笔记二(入门)

98. with as可以把使用频繁的sql查询 抽取出来, 将查询结果作为一个临时的表相当于虚拟视图用法:with tempName as (select .....)针对多个别名:witht1 as (select ...),t2 as (select ...),....99. lag, lead函数lag 用法: 查询这个字段前面offset条记录对应的值,默认为1,如果查不到记录结果为空,则用默认值defaultVl,defaultVal缺省记为nu.

2021-03-09 22:45:10 153 4

原创 MySql日常开发涉及知识

1.oracle 与 mysql区别(待完善)1)mysql识别单引号和双引号,oracle只识别单引号2).mysql有 ifnull , oracle 有nvl [如果为空,设置默认值]3).mysql有与or,and,not 等价的|| && !, oracle只有 or,and,not4).mysql默认转义字符\,也可以使用escape 'character' 来定义, oracle只能使用escape方式select * from where name ...

2021-02-25 10:11:46 211

原创 oracle详细笔记

<<oracle从入门到精通>>笔记:0. varchar VS varchar2varchar 存放可变长度的字符数据,最长2000个字符。varchar2 存放可变长字符数据,最大长度为4000字符。,最大長度為4000字符。varchar 是标准sql提供的数据类型。varchar2 是oracle提供的独特的数据类型。oracle保证在任何版本中该数据类型向上和向下兼容,但不保证varchar。总之,如果想新版本的数据库...

2021-02-04 17:56:20 1646 3

原创 Linux 命令介绍

最近阅读《Linux命令与Shell脚本编程大全》,重新学习了一下Linux基础,对一些常用的命令进行了笔记。有幸刚毕业的时候就接触到了Linux,对一些常用的命令相对比较熟悉。如今工作中用到Linux的机会不是很多,重新学习一下,加深理解,以便对后边Linux相关的学习有所帮助。1.常用命令 ln sourceFile destinationFile 创建硬链接文件 ln -s sourceFile destinationFile 创建软连接文件,源文件删除 软...

2021-02-01 21:42:58 324 1

原创 springboot banner设置及源码分析

最近在查询一个问题时,不经意看到了一个springboot banner的东西,只需在类路径下创建一个banner.txt文件,文件中的东西就能打印在控制台,一.默认情况下,如图:在resource目录下新建一个banner.txt文件,输入一些内容(banner内容制作):启动项目,控制台输出:二.代码追踪:运行主启动类,启动项目debug大概路径SpringApplication.run(Springboot04DatasourceApplication.class, args);

2021-01-06 15:05:51 216

原创 SpringBoot 中Servlet,Filter,Listener的代码配置

SpringBoot创建web项目中,有可能是以jar的方式创建的.创建之后没有对应的webapp目录,也没有对应的web.xml文件.而web.xml文件通常会配置Servlet,Filter,Listener等信息.SpringBoot为我们提供了ServletRegistrationBean,FilterRegistrationBean,ServletListenerRegistrationBean等类配置相关信息.1.Servlet配置1)新建servlet类public class MySe

2020-12-31 11:09:46 157

原创 java实体类代码自动生成demo

最近学习了有关java代码自动生成的知识,现在做一个小总结,只能算是一个小demo吧,不能用于正式开发1.目录结构如图:2.bean包下的类源码1)字段类 ColumnInfo:package main.com.oxx.sorm.bean;/** * 表中字段的信息 */public class ColumnInfo { /** * 字段名称 */ private String name; /** * 字段类型 */

2020-12-15 23:24:15 1042

原创 javaassist简单运用以及动态操作字节码

本小节主要介绍字节码库javaassist的简单运用.javaassist类似于cglib,都能动态的操作字节码,动态的生成字节码文件(class文件).一.创建maven工程,导入依赖 <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.23

2020-07-09 18:09:52 413

原创 java中通过反射操作泛型

反射在许多框架中都很常见。反射虽然降低了运行速度,但是提高了开发速度;本小节主要展示通过反射操作泛型。一.案例涉及的类和接口1.父类package reflect.parameter;public class Car <T> {}2.接口package reflect.parameter;public interface CarInterface<T> {}3.泛型类public class Configure {}4.实现类package

2020-07-06 23:07:02 436

原创 手写httpServer Demo案例

相信每一个java程序猿在学习javaWeb的时候,或多或少接触了Servlet,或者说通过Servlet来完成页面发送的请求。今天,模仿Servlet接受和处理请求实现一个简单的httpServer。该Server能处理简单的表单提交请求。一、首先建立一个maven工程,目录如图:二、核心组件类1.启动类Server.javapackage com.httpServer.server;import java.io.IOException;import java.net.ServerS

2020-07-05 00:38:45 490

原创 java中继承和组合的运用以及初始化顺序

通过demo展现java中 包含继承和组合时,程序的初始化顺序.1.初始化顺序public class App2 { public static void main(String[] args){ new Child1(); }}class Parent { public Parent(){ System.out.println("-----parent constructor method"); } static{

2020-06-24 10:04:53 155

原创 Java中多态的运用及注意

首先了解下java中的绑定.java中有静态绑定和动态绑定,也叫前期绑定和后期绑定.除了final(private 也算final),static,构造函数才是静态绑定. 1.java多态demo: 只有运行时才知道该调用哪个方法.package javaBase1;public class App { public static void main(String[] args){ Parent p1 = new Child1(); p1.showNa.

2020-06-24 09:23:12 190

原创 FreeMarker从零到入门

最近解除了静态模板FreeMarker技术,简单的介绍下从加入依赖到使用1.新建maven项目,加入依赖 <dependency> <groupId>freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.9</version> </depen

2020-06-22 16:56:13 111

原创 SpringDataSolr运用

电商网站中查询商品通常会用到搜索引擎,solr就是其中一种.今天讲一下solr的安装和SpringDataSolr运用,solr是建立在Lucene上的,可以说是它的应用,而SpringDataSolr对Solr进行了封装.1.下载solr压缩文件,将solr的war(版本4.10.3)放置tomcat的webapp目录下,启动tomcat,会解压solr的jar包.solr目录如图:2....

2020-01-15 17:41:51 179

原创 java多线程之 Fork/Join框架

如果我们需要处理一大批数据,但是没有处理这批数据的能力,就可以使用分而治之的方式.fork/join框架就是对这种方式的体现.ForkJoinTask 接口的实现类: RecursiveTask 有返回值 RecursiveAction 无返回值demo:import java.util.ArrayList;import java.util.List;import...

2020-01-10 14:18:14 173

原创 ThreadPoolExecutor 堆栈信息打印

在多线程中,一个线程抛出异常有时不是自己想要的,或者得不到想要的信息.比如想知道线程在什么时候提交的;此时可以自定义线程池,加入自定义的堆栈信息demo:import java.util.concurrent.*;/** * 加入自定义的堆栈信息 */public class TestThreadPoolExecutor01 extends ThreadPoolExecu...

2020-01-09 10:31:52 693

原创 springDataRedis的运用

springDataRedis对redis的java客户端jedis进行了封装.使用windows系统reids服务端进行测试.1.工程目录:2.pom.xml文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="htt...

2020-01-09 10:22:47 152

原创 线程池内部实现

之前已经介绍过newFixedThreadPool,newCachedThreadPool,newSingleThreadScheduledExecutor等线程池;这些线程池底层都是用了ThreadPoolExecutor实现.比如public static ExecutorService newFixedThreadPool(int nThreads){ return new ...

2020-01-08 11:14:44 217

原创 java底层线程池介绍和使用

Executor:顶层接口Executors: 线程池工厂类主要的线程池介绍: newFixedThreadPool:存在固定的线程个数,任务提交后,如果线程池有空闲的线程,那么空闲线程会处理任务; 如果线程池中没有空闲的线程,那任务会存放在任务队列中;一旦有空闲线程,就会处理任务队列中的任务 newCachedThreadPool:线程没有固定,...

2020-01-07 13:42:25 108

原创 阻塞工具类LockSupport的运用

LockSupport:阻塞工具类,有park(),unpark(线程)等方法和wait(),notify()方法相比,LockSupport不需要获取对象的锁和suspend(),resume()方法相比,LockSupport的unpark()可以在park()方法之前执行, 避免了resume()先于suspend()方法执行造成无限挂起的问题,并且使用suspend()线...

2020-01-07 11:30:02 125

原创 信号量Semaphore,读写锁ReadWriteLock,计数器CountDownLatch,循环栅栏CyclicBarrier运用

1.信号量Semaphore: 像synchronized, ReentrantLock等这些对临界区资源进行同步后,所有对临界区资源进行访问的线程都得串行排队,而信号量允许指定的线程数同时进行访问demo:import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import ...

2020-01-06 15:24:00 481

原创 重入锁之公平锁

像synchronized关键字控制这样的锁是非公平的,因为系统只会从这个锁的等待队列中随机选择一个。而公平锁的特点就是按照时间先后顺序或许锁执行。Demo如下:import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;/** * 公平锁: 对同一个临界...

2020-01-04 23:39:36 126

原创 Condition实现生产者消费者小demo

如果说重入锁ReentrantLock的lock()与unlock()方法的作用和synchronized的作用类似,那么Condition的await(),signal(),signalAll()作用就是和Object.await(),Object.notify(),Object.notifyAll()类似:import java.util.concurrent.locks.Conditi...

2020-01-04 23:27:11 504

原创 重入锁预防死锁的两种方式

重入锁ReentrantLock类似于synchronized,都可以让多个线程对临界区资源的访问进行控制,但重入锁需要手动释放锁,正是这样,重入锁更加的灵活;介绍重入锁防死锁的两种方式:1.中断响应 lockInterruptibly():import java.util.concurrent.locks.ReentrantLock;/** * lockInterruptibl...

2020-01-04 17:50:17 508 2

原创 spring + springSecurity + springMvc 小demo

今天接触了springSecurity,想自己做个小Demo;加上从前端到后端的demo的想法由来已久;又不用加班,着手实现下.过程中也碰到的一些问题.一.建立maven工程1.File -> New -> NewProject 如图:2.点击maven,创建maven的web工程,主要是自带webapp等目录,如图3.填写组织名和工程名,如图:4.点击Next,如图:...

2019-12-20 18:09:46 122

原创 spring中使用prototype所遇到的坑

众所周知,在spring中scope作用域prototype代表的是多例,意味着容器每次获取作用域为prototype的bean时,都会生成一个新的实例对象。但是,有一种情况,当多例作用域的bean被单例作用域的bean依赖注入时。实现对象:public class GirlFactory { private Girl girl; public void print()...

2019-09-02 23:17:44 1334

原创 数据结构之快速排序的java实现

快速排序就是通过一次排序,将数据集合分成独立的两部分,使得一部分的记录小于另一部分的记录1.具体实现和测试public class QuickSort { public static void main(String[] args){ int[] a = {3,4,6,1,2,9,8,0,5,7}; quickSort(a, 0, a.lengt...

2019-06-14 14:05:21 116

原创 数据结构之归并排序的java实现

归并排序的思想,就是将整段分成两个或多个子部分,然后对子部分继续划分直到不能在划分为止,最后进行合并。每次将一段分成两部分,也成为二路归并排序1.具体实现和测试public class MergeSort { public static void main(String[] args){ int[] a = {4,3,2,1,6,9,8,0,5,7}; ...

2019-06-14 13:21:24 133

原创 数据结构之堆排序的java实现

堆是具有以下性质的完全二叉树:每个结点大于等于它的左右孩子结点的值称为最大堆或大顶堆;每个结点小于等于它的左右孩子结点的值称为最小堆或小顶堆;1.具体实现public class HeapSort { public static void main(String[] args){ int[] a = {3,4,6,1,2,9,8,0,5,7}; ...

2019-06-13 16:57:43 96

原创 数据结构之希尔排序的java实现

希尔排序运用了直接插入排序的思想,但不是一步步的移动,而是跳跃式的移动。直接插入排序链接:https://mp.csdn.net/postedit/91808490注意:增量序列的最后一个增量值必须为11.实现和测试public class ShellSort { public static void main(String[] args){ int[]...

2019-06-13 14:48:37 81

原创 数据结构之直接插入排序的java实现

插入排序:每个元素插入到已经有序的集合中的过程1.实现与测试public class InsertSort { public static void main(String[] args){ int[] a = {3,4,6,1,2,9,8,0,5,7}; System.out.println(Arrays.toString(insertSort...

2019-06-13 10:41:00 98

原创 数据结构之选择排序的java实现

选择排序:每次循环都比较元素内容,记录较小元素的下标,但是不进行交换 ;循环之后再判断是否需要进行交换与冒泡排序不同,冒泡排序每次比较,一旦满足条件就进行元素内容交换冒泡排序链接:https://blog.csdn.net/xindanding/article/details/917979451.实现与测试public class SelectSort { public...

2019-06-13 10:12:52 102

原创 数据结构之冒泡排序的java实现

冒泡排序:通过多次比较元素内容进行排序实现与测试:public class BubbleSort { public static void main(String[] args){ int[] a = {3,4,6,1,2,9,8,0,5,7}; int[] result = bubbleSortOld(a); System.o...

2019-06-13 10:00:44 97

空空如也

空空如也

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

TA关注的人

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