java
DQchat
java虽好,请不要贪杯
展开
-
Java经典算法题-冒泡排序
1. 冒泡排序 冒泡排序(Bubble Sort)算法:它的实现思路是通过相邻数据的交换达到排序的目的1. 对数组中相邻的数据,依次进行比较;2. 按升序,如果前面的数据大于后面的数据,则把前面的数据交换到后面。经过一轮比较之后,就能把数组中最大的数据排到数组的最后面了;3. 再用同样的方法,把剩下的数据逐个进行比较排序,最后得到就是从小到大排序好的数据。public class Test { public static void main(String[] args) {原创 2022-09-24 20:54:46 · 243 阅读 · 0 评论 -
session token jwt
关于Session token jwtHTTP协议本身是无状态协议,所以,无法识别用户的身份!为了解决此问题,经编程时,引入了Session机制,用于保存用户的某些信息,可识别用户的身份!原创 2022-08-08 14:49:48 · 174 阅读 · 0 评论 -
java NIO称为非阻塞IO。读写的过程中不会发生阻塞线程
** * JAVA NIO * NIO称为非阻塞IO。读写的过程中不会发生阻塞线程 * 我们之前所学习的流,称为BIO:阻塞是IO,就是在读写的过程中可能会发生阻塞现象。 */public class NIODemo1 { public static void main(String[] args) throws IOException { /* 非阻塞IO面向Channel("通道")的,不是面向Stream(流)的。 流原创 2022-04-18 11:37:37 · 476 阅读 · 0 评论 -
java反射机制
package reflect;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.Scanner;/** * java反射机制 * * 反射是java的动态机制,可以允许我们在程序[运行期间]再确定实例化,调用某个方法,操作某个属性。 * 反射机制大大的提高了代码的灵活度,但是会有更高的系统开销和较慢的运行效率。 * 因此反射机制不能被过度的使用 * * */public cl原创 2022-04-18 11:35:06 · 222 阅读 · 0 评论 -
分享10个接私活的网站
1. 程序员客栈:程序员的经纪人https://www.proginn.com/2. 开源中国众包平台 oschina 众包https://zb.oschina.net/3. 码市:来码市,找人才/任务快人一步https://codemart.com/4. 我爱方案网:电子方案开发,供应链平台http://www.52solution.com/kb5. 人人开发:让管理软件开发更容易http://www.rrkf.com/6.原创 2022-04-15 11:50:05 · 23620 阅读 · 32 评论 -
java基础一 :jdk介绍
java开发环境准备:下载和安装DK 8和IDEA社区版(免费的) JDK:一路下一步 IDEA:一路下一步,在create desktop shortcut处将64-bit launchar打 勾,以创建桌面快捷方式笔记:java开发环境:编译运行过程:编译期:.java源文件,经过编译,生成.class字节码文件运行期:JVM加载.class并运行.class(0和1)特点:跨平台、一次编程到处使用...原创 2022-04-09 17:00:22 · 193 阅读 · 0 评论 -
java 核心API day05 File类
块读写的文件复制操作int read(byte[] data) 一次性从文件中读取给定的字节数组总长度的字节量,并存入到该数组中。 返回值为实际读取到的字节量。若返回值为-1则表示读取到了文件末尾。原创 2022-03-27 13:20:10 · 113 阅读 · 0 评论 -
java 核心API day04 File类
java 核心API day04File类删除目录delete()方法可以删除一个目录,但是只能删除空目录。package file;import java.io.File;/** * 删除一个目录 */public class DeleteDirDemo { public static void main(String[] args) { //将当前目录下的demo目录删除 File dir = new File("demo");//原创 2022-03-27 13:03:52 · 108 阅读 · 0 评论 -
Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算。下面详细介绍每个位运算符。1.与运算符与运算符用符号“&”表示,其使用规律如下:两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段。public class data13{public static void main(String[] args){int a=129;in转载 2022-03-26 18:10:36 · 297 阅读 · 0 评论 -
java 使用File 创建文件和文件夹
概述:封装一个磁盘路径字符串,对这个路径可以执行一次操作可以封装文件路径、文件夹路径、不存在的路径创建对象File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建一个新的File实例new File(“d:/abc/a.txt”);new File(“d:/abc”,”a.txt”);常用方法创建:createNewFile()在指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回false。mkdir() 在指定位置创建一个单级文件夹原创 2022-03-25 14:50:51 · 16078 阅读 · 0 评论 -
二进制原码, 反码, 补码的念和计算
原码, 反码, 补码的基础概念和计算方法.对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式.1. 原码原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:[+1]原 = 0000 0001[-1]原 = 1000 0001第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:[1111 1111 , 0111 1111]==>[-127 , 127]2. 反...原创 2022-03-24 17:19:31 · 1274 阅读 · 0 评论 -
java String面试题: String s = new String(“hello“); 创建了几个对象?
/* String s = new String("hello");创建了几个对象? 答:2个 第一个:字面量"hello" ---java会创建一个String对象表示字面量"hello",并将其存入常量池 第二个:new String() ---new String()时会再创建一个字符串对象,并引用hello字符串的内容 */String s = new String("hello");String s1 = "hello";System.o原创 2022-03-24 14:24:01 · 2326 阅读 · 0 评论 -
java 常用正则表达式
java 常用正则表达式正则表达式是描述字符串内容格式,使用它来匹配一个字符串的内容是否符合要求1. []:表示一个字符,该字符可以是[]中指定的内容 例如: [abc]:这个字符可以是a或b或c [a-z]:表示任意一个小写字母 [a-zA-Z]:表示任意一个字母 [a-zA-Z0-9_]:表示任意一个数字字母下划线 [^abc]:该字符只要不是a或b或c 预定义字符: .:表示任意一个字符,没有范围限制 \d:表示任意一个数字,等同于[0-9] \w:表示任意一原创 2022-03-24 10:47:23 · 2489 阅读 · 0 评论 -
原型模式
定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法。在java虚拟机中,只有实现了这个接口...原创 2018-09-10 10:18:49 · 110 阅读 · 0 评论 -
模版方法模式
定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。事实上,模版方法是编程中一个经常用到的模式。先来看一个例子,某日,程序员A拿到一个任务:给定一个整数数组,把数组中的数由小到大排序,然后把排序之后的结果打印出来。经过分析之后,这个任务大体上可分为两部分,排序和打印,打印功能好实现,排序就有点麻烦了。但是A有办法,先把打...原创 2018-09-10 10:37:48 · 102 阅读 · 0 评论 -
springboot 实现ftp 文件上传、下载
1. 先添加pom文件使用gradle :compile group: 'commons-net', name: 'commons-net', version: "3.6"2. 在application.yml中配置参数:ftp.host: localhostftp.port: 210ftp.username: ftp01ftp.password: abcftp.file...原创 2018-09-18 15:02:54 · 17534 阅读 · 3 评论 -
建造者模式
代码如下 :class Product { private String name; private String type; public void showProduct(){ System.out.println("名称:"+name); System.out.println("型号:"+ty...原创 2018-09-10 10:07:36 · 111 阅读 · 0 评论 -
工厂方法模式
定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。场景是这样的:汽车由发动机、轮、底盘组成,现在需要组装一辆车交给调用者。假如不使用工厂模式,代码如下:class Engine { public void getStyle(){ System.out.println("这是汽车的发动机"); ...原创 2018-09-10 09:52:59 · 168 阅读 · 0 评论 -
java 单例模式
单例模式:定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。它有以下几个要素:私有的构造方法指向自己实例的私有静态引用以自己实例为返回值的静态的公有的方法单例模式根据实例化对象时机的不同分为两种:一种是饿汉式单例,一种是懒汉式单例。饿汉式单例在单例类被加载时候,就实例化一个对象交给自己的引用;而懒汉式在调用取得实例方法的时候才会实例化对象。饿汉式单...原创 2018-09-10 09:39:00 · 188 阅读 · 0 评论 -
Java日期时间的工具类
import java.sql.Timestamp;import java.text.ParseException;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.time.format.DateTimeFormatter;import java.util.Calendar;im...转载 2018-09-12 17:34:34 · 143 阅读 · 0 评论 -
java break 跳出多层for循环
public static void main(String[] args){ tag2: for(int i=0;i<5;i++){ tag1: for(int k=0;k<5;k++){ System.out.println(k); ...原创 2018-10-23 15:27:43 · 9074 阅读 · 0 评论 -
spring boot aop 配置 使用
1. 首先要把aop的依赖加进来 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>2....原创 2018-09-11 15:01:18 · 321 阅读 · 0 评论 -
ThreadLocal内存泄露
ThreadLocal从名字上来说就很好理解,就是用于线程(Thread)私有(Local)的存储结构,这种结构能够使得线程能够使用只有自己能够访问和修改的变量,从而实现多个线程之间的资源互相隔离,达到安全并发的目的。也因此,ThreadLocal作为线程并发中的一种资源使用方式,得到了很广泛的应用,比如Spring MVC、Hibernate等。不过值得一提的是,通常有人会讲Th...转载 2018-09-13 17:11:12 · 422 阅读 · 0 评论 -
java.nio.file.Files 一行一行读取文件
JDK1.7中引入了新的文件操作类java.nio.file这个包,其中有个Files类它包含了很多有用的方法来操作文件,比如检查文件是否为隐藏文件,或者是检查文件是否为只读文件。开发者还可以使用Files.readAllBytes(Path)方法把整个文件读入内存,此方法返回一个字节数组,还可以把结果传递给String的构造器,以便创建字符串输出。此方法确保了当读入文件的所有字节内容时...原创 2018-09-13 17:15:41 · 4510 阅读 · 2 评论 -
mybatis 中 insert 和insertSelective的区别
insertSelective--有选择性的保存数据比如User里面有三个字段:id name age passwordUser u=new user();u.setName("bill");mapper.insertSelective(u);insertSelective执行对应的sql语句的时候,只插入对应的name字段sql语句如下:insert into tb_us...原创 2018-09-11 09:59:41 · 4826 阅读 · 0 评论 -
java中用于数学相关的常用类:Math,BigDecimal,BigInteger
Math:包含用于基本的数学运算的方法:如指数,对数,平方根,三角函数等等public static void main(String[] args) { System.out.println(Math.max(99, 10)); System.out.println(Math.random());//返回带正号的double值,该值大于等于0.0 且小于1.0 doubl...原创 2018-03-18 15:32:34 · 466 阅读 · 0 评论 -
java 同时创建多个文件夹和文件
public void demo1() { try { File dir = new File("d:\\abc\\bcd"); if (!dir.exists()) { dir.mkdirs(); } File file = new File(dir, "demo.txt"); if (!file.exists()) { file.crea...原创 2018-10-23 17:07:06 · 8140 阅读 · 0 评论 -
linux java file.mkdirs() 创建目录失败解决
下面是创建文件夹的代码,可以说很简单的 File file = new File("/data0/logs");if (!file.exists()) { boolean mkdirs = file.mkdirs(); log.info("创建目录返回结果:"+mkdirs); }可是在linux下就是创建不了,从上班一直到下午,最后终于找到原因,...原创 2018-10-25 17:15:01 · 17084 阅读 · 2 评论 -
java 实现大文件分隔成多个小文件
public class FileTest { /** * 文件分隔器:给定文件的路径和每一块要拆分的大小,就可以按要求拆分文件 * 如果指定的块给原文件都还要大,为了不动原文件,就生成另一个文件,以.bak为后缀,这样可以保证原文件 * 如果是程序自动拆分为多个文件,那么后缀分别为".part序号",这样就可以方便文件的合并了 * 原理...转载 2018-10-25 17:02:16 · 4090 阅读 · 0 评论 -
hashCode的作用
hashCode方法是在Object中定义的Java中的集合(Collection)有两类,一类是List,再有一类是Set 前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。要想保证元素不重复,可两个元素是否重复应该依据什么来判断呢? 这就是Object.equals方法了但是,如果每增加一个元素就检查一次,那么当元素很多时,后添加到集合中的元素比较的次数就非...原创 2018-09-29 13:45:32 · 346 阅读 · 0 评论 -
Object 公用方法
1.clone方法实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。主要是JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递,我们有时候不希望在方法里将参数改变,这是就需要在类中复写clone方法。2.getClass方法final方法,获得运行时类型。3.toStrin...原创 2018-09-29 10:58:17 · 124 阅读 · 0 评论 -
jvm 运行时数据区、String 常量池
私有 - 程序计数器:记录当前线程所执行字节码的行号指示器 - 虚拟机栈:存放了当前线程调用方法的局部变量表、操作数栈、动态链接、方法返回值等信息(可以理解为线程的栈) - 本地方法栈:为虚拟机使用的Native方法提供服务共享 - Java堆:占据了虚拟机管理内存中最大的一块,唯一目的就是存放对象实例,也是垃圾回收器主要管理的地方,故又称GC堆- 方法区:存储加载的类信息...原创 2018-09-28 09:40:29 · 378 阅读 · 0 评论 -
java 基本数据类型和引用数据类型
基本数据类型:byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0short:短整型,在内存中占16位,即2个字节,取值范围-32768~32767,默认值0int:整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647,默认值0long:长整型,在内存中占64位,即8个字节-...原创 2018-09-27 16:51:17 · 141 阅读 · 0 评论 -
秒杀的案例优化
1.秒杀接口地址的隐藏 秒杀的地址不是写好的,是从服务端动态获取的,秒杀开始前不知道要访问的地址,这样就相对安全 2. 数据公式的验证码 可以防止机器人自动刷 可以削减并发量的访问3. 接口的限流防刷 比如限止某个用户一分钟内只能访问这个接口50次 ...原创 2018-08-24 11:11:25 · 309 阅读 · 0 评论 -
springboot 配置自动执行sql文件
在application.yml中配置数据库spring: datasource: platform: mysql schema: classpath:schema.sql data: classpath:data.sql原创 2018-08-21 10:49:51 · 6635 阅读 · 0 评论 -
链表数据结构
如何想保证添加和删除操作的性能,该怎么办?使用链表数据结构链表结构(火车和火车车箱)单向链表:从头遍历到尾或从尾遍历到头双向链表:可以从头遍历到尾,也可以从尾遍历到头单向链表双向链表...原创 2021-08-03 09:26:40 · 64 阅读 · 0 评论 -
java类加载器机制
1. 将class文件加载到虚拟机的内存,这个过程称为类加载,类加载的过程如下:这是类加载的5个过程,而类加载器是读取此类的二进制字节流到jvm中,虚拟机中有3种类加载器:引用类加载器,扩展类加载 器,系统类加载器启动类加载器(Bootstrap):主要加载jvm自身需要的类,它负责将JAVA_HOME\lib下的核心类库加载到内存中扩展类加载器(Extension): ...原创 2018-04-02 00:10:10 · 101 阅读 · 0 评论 -
jvm内存回收原理
1. 在堆中创建的对象分为: 年青代,年老代,方法区中的静态文件(类或方法)是持久代,它们使用的回收的算法也不相同。2. 年轻代又分Eden区,两个survivor区,大部分对象在Eden区中生成,当Eden区满时,还存活的对象将被复制到其中一个survivor区,当这个survivor区满时,此区的存活对象会被复制到另外一个survivor区;当这个区也满时,会把这个区的还存...原创 2018-04-01 23:32:59 · 223 阅读 · 0 评论 -
java线程的优先级
原创 2018-03-21 23:36:07 · 105 阅读 · 0 评论 -
java线程之后台线程
后台线程:在后台运行的线程,是为其他线程提供服务的线程,也称为“守护线程”,jvm垃圾回收器就是后台线程;若所有的前台线程都死亡,后台线程会自动结束,否则,后台线程不会结束;...原创 2018-03-21 23:26:31 · 496 阅读 · 0 评论