![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
后端
文章平均质量分 71
卑微-程序员
这个作者很懒,什么都没留下…
展开
-
等待你补充的JavaSE集合以及MySQL学习经验
文章目录JavaSE① 基础② 数据类型③ 方法④ 数组⑤ 面向对象⑥ API⑦ 集合⑧ 流⑨ 网络编程JavaSE① 基础Java之父是詹姆斯·高斯林;四大特性:垃圾回收机制,面向对象,跨平台,多线程;Java是解释型语言;Java是准动态语言;Java是强类型语言;因为JVM跨平台,不同操作系统安装不同的JVM,但是它们都能够识别class文件;public表示资源是公共的;class是定义类的关键字,一个源文件中可以定义多个class文件,但是public class只能有一个;原创 2021-05-04 13:35:54 · 239 阅读 · 1 评论 -
数据库连接池代码介绍,从无到有,了解连接池背后的秘密
文章目录JDBC代码优化封装工具类DML(数据操纵语言)PreparedStatementBatch多语句操作事务管理机制;回滚数据库连接池JDBC代码优化在最初的JDBC中,我们为了防止异常的出现,重复使用大量的try…catch语句,为了优化代码,我们会采用一些办法,减少代码的重复,提高可用性; Connection conn = null; Statement stmt = null; ResultSet rs = null ; try { // 1 加载驱动 Clas原创 2021-04-28 22:01:30 · 389 阅读 · 3 评论 -
暴力理解JDBC,多敲多记
文章目录行转列DQL-连接查询:备份SQLJDBC-- 创建自定义方法create function getLength(str varchar(20)) returns int begin return length(str); end-- 选择方法select getLength('zzz');-- 删除方法drop function getLength;行转列多行转一行多列-- name分组select * from test_9 group by原创 2021-04-27 22:05:13 · 118 阅读 · 0 评论 -
京津冀地区某机构内参,四月不能错过的MySQL数据定义语言
文章目录简单DCL增强版DDL简单DCL-- 创建用户create user 'xx'@'%' identified by 'password';-- 赋权grant all privileges on 数据库.表名 to 'xx'@'%' identified by 'password';-- 刷新权限flush privileges;-- 创建数据库create database day_02;-- 使用day_02数据库use day_02;-- 创建t_user表creat原创 2021-04-26 21:27:09 · 105 阅读 · 0 评论 -
数百专家合力推荐,2021不能错过的MySQL入门基础
文章目录什么是数据库数据类型数值型时间类型字符串类型SQL分类什么是数据库在Java中,我们使用JVM来实现跨平台,那么计算机中存储的数据应该如何跨平台呢?数据库就是为了解决操作系统之间跨平台而诞生的,它是一定数据格式的数据集合,它解决了不同操作系统,数据格式间的兼容问题.目前数据库可以分为关系型数据库和非关系型数据库,关系型数据库查询数据得到对象,而非关系型数据库保存的是键值对,通过键值对来查询数据,得到数组.对于关系型数据库来说,数据和列是一一对应的,是存在映射的,是以表作为基本单位;而对于原创 2021-04-25 21:22:23 · 169 阅读 · 0 评论 -
Java四大函数接口
@FunctionalInterface注解可以判断编写的函数式接口是否正确;supplier提供者;consumer消费者;function函数;operation运算符;binary二元;这些单词是理解Java四大基础函数接口需要记住的单词;函数接口是一段行为的抽象,简单说是在方法中将一段行为作为参数进行传递,这个行为是一段代码,也可以是一个方法,函数接口就是对匿名内部类的优化;package day24_FunctionFour;import java.util.function.原创 2021-04-24 18:37:05 · 171 阅读 · 0 评论 -
day24-转换算子
// 把数组编程list;List<String> strings = Arrays.asList("a","b");Set<String> ss = new HashSet<>(strings);strings = new ArrayList<String>(ss);System.out.println(strings);// 把集合转换为流;Stream<String> stream = strings.stream();filt原创 2021-04-23 20:09:02 · 84 阅读 · 0 评论 -
day23TCP?UDP,正则表达式,函数式接口,lambda接口,StreamAPI
文章目录网络编程SocketUDP网络编程java是internet上的语言,它聪慧语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。java提供的网络类库,可以实现无痛的网络链接,联网的底层被隐藏在Java本地的安装系统中,由jvm进行控制,并且java实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境。网络编程中有两个主要的问题:如何准确的定位网络上的一台或多台主机,定位主机上的特定的应用;找到主机后如何可靠高效的进行数据传输。网络通信有一定的规则,有原创 2021-04-22 20:05:17 · 212 阅读 · 0 评论 -
day21-多线程下的单例模式;死锁;线程通信;线程池
文章目录单例模式死锁线程通信生产者和消费者线程池单例模式单例模式让某个对象只能实例化对象一次,保证只有一个对象,传统的单例模式写法在多线程中是不想的。if(s==null){ s = new SingLeton(); }可能会有多个线程进入判断,导致线程创建多个对象。如果直接在方法加锁可以避免这个效果,可是这样效率实在太低,为了解决这个问题,我们可以利用两次判断来实现只创建一个对象。if(s==null){ synchronized(SingLeton.class){ if(s==n原创 2021-04-19 22:13:23 · 220 阅读 · 0 评论 -
day20_多线程,锁,守护线程,定时器,IO流
转换流OutputStreamWriter 字节输出流变成字符输出流;InputStreamReader 字节输入流变成字符输入流; FileInputStream fis = new FileInputStream("");// 字节输入流 FileOutputStream fos = new FileOutputStream("");// 字节输出流 InputStreamReader isr = new InputStreamReader(fis);// 字节流变字符流 Outpu原创 2021-04-17 10:38:41 · 144 阅读 · 0 评论 -
day18-红黑树,IO流
文章目录集合-SetMap红黑树IO:BIO,NIO,AIOIO集合-SetSet的特点是无序不可重复;它下面有TreeSet和HashSet。在底层实现中,我们不难发现HashSet的底层歧视就是HashMap,只不过是把map的value部分屏蔽,对外只提供key。Hash算法是一种安全的加密算法,它把不定长的输入变成定长输出,不保证唯一性。同一个对象生成多次hash值,一定相同,但是不同的对象也可能生成相同的hash值。hash算法中常见的有:直接寻址法;数字分析法;除留取余法,平方取中法原创 2021-04-14 20:47:16 · 117 阅读 · 0 评论 -
java岗笔试题(一)
文章目录类和对象的关系extends是什么?目的是什么java面向对象的特征什么是Override,Override的条件是什么?应用场景是什么?什么是多态,多态的形式有哪些?abstract和interface的区别谈谈你对高内聚低耦合的理解类与类之间有哪些关系你如何理解异常机制你如何理解常用APIList Set Map的特征分别是什么常见的数据类型有哪些?并说出他们的特征(三个)让集合元素排序有几种方式,分别说明他们的应用场景什么时候用静态变量,什么时候用成员变量请说出final,fianlly,fi原创 2021-04-13 19:11:34 · 120 阅读 · 0 评论 -
day16-Java集合,迭代器
文章目录集合CollectionListSet迭代器Iterator集合在java中集合是存储和操纵元素不固定的一组数据,和数组对比,集合长度不固定,而且不能存放基本数据类型。如果想在集合中装基本数据类型,需要把基本类型变成对应的封装类。Java集合类主要有两个接口派生,Collection和Map。Collection和Map是Java结合框架的根接口,又包含了一些子接口和实现类。CollectionCollection是list接口和set接口的父接口,它里面的方法在list和set中都可原创 2021-04-12 20:27:32 · 124 阅读 · 0 评论 -
day14-常用API,异常
文章目录CalendarNumberBigInteger/BigDecimalRandomMath异常机制处理形式finally语句块继承体系try...catchThrowsfinally和return自定义异常Calendar Calendar cal = Calendar.getInstance();// 获取当前系统日历 cal.get(Calendar.DAY_OF_WEEK);// 今天是本周第几天 cal.get(Calendar.YEAR);// 获取年 Date date原创 2021-04-09 21:30:12 · 107 阅读 · 1 评论 -
day13-String,StringBuilder,StringBuffer;自动装箱和自动拆箱;API_Date
文章目录常用APIString常用API谁的方法,那个类的;什么方法;功能是什么;入参;出参。String原创 2021-04-08 20:46:22 · 147 阅读 · 2 评论 -
day12-接口;类关系;内部类;设计模式
文章目录接口Interface注意类关系继承实现依赖关联聚合组合内部类成员内部类静态内部类局部内部类匿名内部类设计模式概述单例模式概述实现步骤饿汉模式懒汉模式工厂模式接口Interface定义接口的关键字;语法:public interface 接口名{}接口中不能被实例化对象,接口中也没有构造方法;主要是解决Java中单继承功能变弱的问题;Java1.8之前,接口中只有抽象方法和常量,但是public,static,final,abstract等可以省略;1.8开始,可以有静态,也可以有d原创 2021-04-07 19:48:17 · 113 阅读 · 1 评论 -
JavaSE基础全整合
文章目录程序基础数据类型引用类型基础类型数值整数浮点字符布尔变量命名规则分类静态变量局部变量成员变量调用静态成员局部优先级运算符++ - -三目字符串连接符流程控制顺序结构分支结构if单分支双分支多分支switch循环结构三要素forwhiledo..while方法目的声明分类静态方法成员方法构造方法重载递归数组数据结构特性声明静态动态使用查询更改遍历二维数组声明静态动态使用遍历排序冒泡选择API二分法原理编码面向对象面向对象和面向过程类和对象的区别类对象对象的创建和使用静态和成员的应用场景软件包机制pac原创 2021-04-06 20:14:21 · 135 阅读 · 0 评论 -
Java喊3,通过两种不同的技巧实现
第一种是通过数组对应的值进行判断,也就是布尔类型的ture和false。package call_three;import java.util.Arrays;import java.util.Scanner;/** * @date 2021年4月3日 * @author SkyMei * 喊三游戏 */public class CallThree { public static void main(String[] args){ System.out.println("请输入本次原创 2021-04-03 19:05:34 · 165 阅读 · 0 评论 -
Java-day10-覆写,fina,多态,向下转型
文章目录覆写概念使用条件覆写条件覆写目的final概念易错点多态概念Java提供两种多态机制编译时多态运行时多态多态的形式覆写概念子类和父类有相同的成员方法(方法名,参数,返回值一样)。使用条件子类可以继承父类的方法,但想满足更多需求,不想用父类的方法。覆写条件覆写出现必须存在继承关系;方法名,参数列表,返回值必须相同;不能有更低的访问权限;不能有更宽泛的异常。继承最基本的作用:代码重用;继承最重要的功能:代码覆写;package day10_test;public class T原创 2021-04-02 16:54:02 · 161 阅读 · 0 评论 -
Java数据区盘点!!!
文章目录程序计数器本地方法堆类实例对象方法区类型信息域信息方法信息non-fianl的类变量常量池字节码文件中的常量池运行时常量池静态变量虚拟机栈栈帧本地方法栈程序计数器程序计数器可以说是Java数据区最容易被忽视的一块区域,很多人会简单理解它指向是代码运行的行数,这样理解问题确实不大。其实程序计数器是一块较小的内存空间,是当前线程正在执行的字节码的行号指示器,当前线程在执行本地方法的时候,程序计数器就是空的。本地方法Java中的方法可以简单分为java方法和本地方法,Java方法是用java语.原创 2021-04-01 16:31:27 · 102 阅读 · 0 评论 -
从吃麻辣烫的角度看权限修饰,看继承
Note 2021-03-31T08.48.43static定义的变量是共享的;static定义的变量就好像公筷,吃饭的时候(引用)谁都可以用如果有void,肯定不是构造方法;有void,麻辣烫就是放辣的,没有void就是不放辣的构造方法名字和类名要相同;你到麻辣烫店里面点汉堡就有点过分了当有了有参构造方法,没有定义无参构造函数的时候,不会自动生成无参构造;做麻辣烫的时候,厨师默认是清汤的,但你可以决定自己要放多少辣,每个麻辣烫放的盐辣可以不一样,这个分量就是构造函数的参数传值和传应用传原创 2021-03-31 20:39:31 · 197 阅读 · 0 评论 -
Java干货学习第七天-类与对象,内存划分,构造器
面向对象概述面向对象是把数据和方法组织为一个整体看待,从更高层次来进行系统建模,比起面向过程,它无疑更加贴近事物的自然运行。面向对象和面向过程面向过程:侧重步骤面向对象:侧重对象两者都是解决问题的思路,只是侧重点不同,面向对象的基础也是面向过程,只是面向对象把具体的细节给封装了,外界无法获取。比起面向过程,面向对象无疑更容易维护,扩展性更好,重用性更佳。构造器构造器:创建对象,初始化成员变量如果一个类中没有显示声明一个构造方法,则默认有一个公共的无参构造;如果我们定义了构造方法,不管定原创 2021-03-31 08:39:27 · 85 阅读 · 0 评论 -
回文数求法,整数反转求法,套用的数学公式
首先是整数反转的求法:给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。class Solution { public int reverse(int x) {// 123 long n = 0;// 先设置数字n为0 while(x!=0){// 123不等于0 12不等于0 n = n*10+x%10;// n原创 2021-03-27 15:57:11 · 1427 阅读 · 0 评论 -
Java干货学习第五天-数组遍历,排序,二分法
遍历for/each 强化for循环;int[] num = {1,23,3};for(int a : num){}就是把num数组中每一个量挨个传给a;int a[] = new int[]{1,2,3,3}使用场景:传递参数为字面量\;比较字符串使用squals方法,不能使用==;比较基本类型是比较值,而引用类型(类,数组,接口)是比较内存地址;传值和传应用传值指的是基本类型的传递;两个值互不相关;传引用指引用类型的传递;传递的是地址;public static void原创 2021-03-26 16:54:20 · 134 阅读 · 3 评论 -
Java干货学习第四天-内存划分,递归,初识数组
1内存划分1.1相关知识程序:可执行文件(指令集合),它是个静态概念,一般保存在硬盘中。进程:正在执行的文件,是一个动态的概念;程序运行起来,指的就是载入到内存中的可执行文件,操作系统会开启一个进程来运行内存中的这个对象,如果要关闭进程,可以直接杀死这个进程。1.2JVM内存划分class文件是个静态概念,保存在硬盘中,执行JVM命令的时候,会把class文件载入内存。Java Runtime Data Area:Java运行时的数据区域,我们一般叫JVM内存。1.21内存的五个区域内存分为原创 2021-03-25 16:49:36 · 92 阅读 · 1 评论 -
Java干货学习第三天-流程控制,循环,方法
Switch的语法结构:java1.7之前只能操作整型,1.7开始还可以操作字符串,不能使用范围。switch(整型/字符串){ case '值': 代码; break; case '值'; 代码; break; default: 代码;}// case合并,相当于或switch(整型/字符串){ case '值':case '值': 代码; break;}每个分支都需要以break结尾,用于结束循环(如果是嵌套循环,结束最近的),否则会出现case穿透的原创 2021-03-24 18:01:42 · 214 阅读 · 3 评论 -
Java干货学习第二天-数据类型,变量,操作符,流程控制
数据类型/** * */package dataType;/** * @author SkyMei * * @Date 2021年3月23日 上午10:00:40 * */public class DataTest { /** * @param args */ public static void main(String[] args) { /** * 八种基本类型 */ // byte的范围是-128-127 2^(8-1)-1 byte原创 2021-03-23 19:11:33 · 136 阅读 · 2 评论 -
Java干货学习第一天-数据类型
学习以jdk1.8为主。Java概述1991年SUN公司推出命名OAK,1995年以Java推出,Java之父是詹姆斯·高斯林。Java四大特性垃圾回收机制,面向对象,跨平台,多线程。编译型语言:一次编译,多次运行。跨平台性能差。解释型语言:运行前对源文件进行解释,解释为当前操作系统可以识别的语言,跨平台性能好,每次运行都需要解释,执行效率低。Java是解释型语言。动态语言:使用变量不需要指定类型,类型在赋值的时候确定。静态语言:使用变量的时候,必须先指定类型。Java是准动态语言,有静原创 2021-03-22 18:39:11 · 130 阅读 · 3 评论 -
Java多线程并发④:终止线程的四种方式
正常运行结束程序运行结束,线程自动结束。使用退出标志退出线程一般run方法执行完,线程就会自动结束,然后有些线程是伺服线程,他们需要长时间的运行,只有在外部某些条件满足的情况下,才能关闭这些线程。可以使用一个变量来控制循环,例如,最直接的方法就是设一个boolean类型的标志,并通过设置这个标志为true或者false来控制while循环是否退出。public class ThreadSafe extends Thread{ public volatile boolean exit = fals原创 2021-03-18 08:40:12 · 381 阅读 · 2 评论 -
Java多线程并发③:线程生命周期
当线程被创建并且启动之后,它不是一启动就进入执行状态,也不是一直处在执行状态,在线程的生命周期中,它经过新建New,就绪Runnable,运行Running,阻塞Blocked和死亡Dead五种状态。尤其是在线程启动后,它不可能一直在CPU运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次运行,阻塞之间切换。新建状态NEW当程序使用new关键字创建一个线程之后,该线程就在新建状态,此时仅有JVM为其分配内存,并初始化其成员变量的值。就绪状态RUNNABLE当线程对象调用了start方法后原创 2021-03-17 10:54:39 · 81 阅读 · 0 评论 -
Java多线程并发②:四个线程池
Java里面线程池的顶级接口是Executor,但严格意义上来说Executor并不是一个线程池,而只是一个执行线程的工具,真正的线程池接口是ExecutorService。newCachedThreadPool创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们,对于执行很多短期异步任务的程序而言,这些新线程池通常可提高程序性能。调用execute将重用以前构造的线程,如果现有线程没有可用的,则创建一个新线程并添加到池中,终止并从缓存中移除那些已有60s未被使用的线程,长时间保原创 2021-03-16 14:15:26 · 147 阅读 · 0 评论 -
Java多线程并发①:Java线程实现/创建方式
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。继承Thread类Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例,启动线程的唯一方法是通过Thread类的start实例方法,start方法是一个native方法,它将启动一个新的线程,并执行run方法。public class MyThread extends Th原创 2021-03-15 13:41:34 · 128 阅读 · 1 评论 -
Java映射详述-Map
Map接口定义的集合又称为查找表,用于存储所谓“key-value"映射对。Key可以看成是Value的索引,作为key的对象在集合中不可重复。HashMapHashMap根据键的hashCode存储数据,大部分情况下都可以直接定位它的值,因而有很快的访问速度,但是遍历顺序不确定。HashMap最多允许一条记录的键为null,允许多条记录的值为null,HashMap非线程安全,任意时刻可以有多个线程同时写HashMap,可能会导致数据不一致,如果需要满足线程安全,可以使用Collections的sy原创 2021-03-14 10:44:58 · 168 阅读 · 0 评论 -
Java集详述-Set
Set注重独一无二的性质,该体系集合用来存储无序(存入和取出顺序不一定相同)元素,值不能相同,对象的相等性本质是对象hashCode值(Java是依据对象的内存地址计算出此序号)判断的。如果想让两个不同对象视为相等,就必须覆盖Object的hashCode方法和equals方法。HashSet哈希表存放的是哈希值,HashSet存储元素的顺序并不是按照存入的顺序(和List显然不同),而是按照哈希值来存的,所以取数据也是按照哈希值取得,元素的哈希值是通过元素的hashCode方法来获取。HashSet原创 2021-03-13 17:05:56 · 114 阅读 · 0 评论 -
Java列表详述-List
Java的列表(List)是非常常用的数据类型,List是有序的Collection,Java List一共有三个实现类:分别是ArrayList,Vector和LinkedList。ArrayListArrayList是最常用的List实现类,内部是通过数组实现的,它允许元素进行随机访问,数组的缺点是每个元素间不能有间隙,当数组的大小不能满足需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中。当从ArrayList的中间位置插入和删除元素时,需要对数组进行复制,移动代价比较高,它适合随机查原创 2021-03-13 12:41:00 · 2650 阅读 · 0 评论 -
详述JVM(九),JVM类加载机制
JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化。加载:加载是类加载过程的一个阶段,这个阶段在内存中生成一个代表类的java.lang.Class对象,作为方法区这个类的各种数据的入口,注意这里不一定非得要从一个Class文件获取,这里既可以从zip包中读取,也可以在运行时计算生成,也可以由其他文件生成。验证:确保Class文件的字节流中包含的信息是否符合当前虚拟机的要求,并且不会损害虚拟机的安全。准备:正式为类变量分配内存,并设置类变量的初始值阶段,在方法区中分配这些变量使用的内存原创 2021-03-10 21:18:34 · 166 阅读 · 0 评论 -
JVM详述(七),GC垃圾收集器
Java堆内存分为新生代和老年代两部分,新生代主要使用复制和标记-清楚回收算法,老年代主要使用标记-整理垃圾回收算法,因此Java虚拟中针对新生代和老年代分别提供了多种不同的垃圾收集器。Serial垃圾收集器Serial是最基本的垃圾收集器,使用复制算法,曾经是JDK1.3之前新生代的唯一垃圾收集器,Serial是一个单线程的收集器,它不仅仅只会使用一个CPU或一条线程去完成垃圾收集工作,并且在进行垃圾收集的同时,必须暂停其他所有的工作线程,直到垃圾收集结束。Serial垃圾收集器虽然在收集垃圾过程中原创 2021-03-08 14:04:16 · 96 阅读 · 0 评论 -
详述JVM(六),分代收集算法VS分区收集算法
分代收集算法当前主流的VM垃圾收集都采用分代收集算法,这种算法会根据对象存货周期的不同将内存划分为几块,如JVM中的新生代,老年代和永久代,这样可以根据各年代特点采用最适合的GC算法。在新生代:每次垃圾收集都会有大量的对象死亡,只有少量存活,因此选用复制算法,只需要付出少量存活对象的复制成本就可以完成复制。在老年代:因为对象存活率高,没有额外空间进行分配担保,就必须采用“标记-清理”或“标记-整理”算法来进行回收,不必进行内存复制,且直接腾出内存空间。分区收集算法分区收集算法是将整个堆空间分为原创 2021-03-07 17:07:40 · 329 阅读 · 0 评论 -
详述JVM(五)Java四种引用类型
强引用在Java中最常见的就是强引用,把一个对象赋给另一个引用变量,这个引用变量就是一个强引用,当一个对象被强引用变量引用时,它处于可达状态,不可被垃圾回收机制回收,即使这个对象永远也不会被用到,因此强引用是导致Java内存泄漏的主要原因之一。软引用软引用需要SoftReference类来实现,对于只有软引用的对象来说,当系统内存足够它不会被回收,当系统内存不足,它会被回收,软引用通常在对内存敏感的程序中。弱引用弱引用需要WeakReference类来实现,它比较引用的生存期更短,对于只有弱引用的原创 2021-03-06 11:50:27 · 117 阅读 · 0 评论 -
详述JVM(三),垃圾回收与算法
如何确定垃圾引用计数法在Java中,引用和对象是有关联的,如果要操作对象则必须用引用进行。因此,很显然一个简单的办法是通过引用计数法判断一个对象是否可回收,简单说,一个对象如果没有任何与之关联的引用,他们的引用技术不都为0,说明对象不太可能被用到,这个对象就是可回收的对象。可达性分析为了解决引用计数法的循环引用问题,Java使用了可达性分析的方法,通过一系列“GC roots”对象作为起点搜索,如果在“GC roots”和一个对象之间没有任何可达路径,则称该对象是不可达的。不可达对象不等价于可回收原创 2021-03-05 15:42:51 · 113 阅读 · 2 评论