自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java设计模式学习

一.概述熟练掌握各种设计模式,并能在实际编程开发中灵活运用它们,不仅能使代码更规范,重用性更高,同时也能保证代码的可靠性,提高开发效率。这段时间又系统看了设计模式的相关内容,整理学习总结如下:七个设计原则 创建型模式(5种) 结构型模式(7种) 行为型模式(11种)总体来说设计模式分为三大类:(本文着重讲解标红)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、...

2021-01-08 10:27:10 339

转载 面试官:为什么选择B+树作为数据库索引结构?谈谈你的理解

来自:cnblogs.com/kkbill/p/11381783.html背景首先,来谈谈B树。为什么要使用B树?我们需要明白以下两个事实:【事实1】不同容量的存储器,访问速度差异悬殊。以磁盘和内存为例,访问磁盘的时间大概是ms级的,访问内存的时间大概是ns级的。有个形象的比喻,若一次内存访问需要1秒,则一次外存访问需要1天。所以,现在的存储系统,都是分级组织的。最常用的数据尽可能放在更高层、更小的存储器中,只有在当前层找不到,才向更低层、更大的存储器中寻找。这也就解释了,当处理大规模数

2021-01-06 13:25:33 215 1

原创 Json转化

1.com.alibaba.fastjson实体类转化为jsonPersonBean bean = new PersonBean();bean.setId(1L);bean.setName("张三");bean.setPassword("123456");//String为json格式String aa = JSON.toJSONString(bean);

2021-01-05 15:14:42 234

转载 面试官:你真的知道 Java 类是如何被加载的吗?

来自:https://yq.aliyun.com/articles/710407一:前言最近给一个非Java方向的朋友讲了下双亲委派模型,朋友让我写篇文章深度研究下JVM的ClassLoader,我确实也好久没写JVM相关的文章了,有点手痒痒,涂了皮炎平也抑制不住。我在向朋友解释的时候是这么说的:双亲委派模型中,ClassLoader在加载类的时候,会先交由它的父ClassLoader加载,只有当父ClassLoader加载失败的情况下,才会尝试自己去加载。这样可以实现部分类的复用,又可以实现部

2021-01-05 09:07:58 207

转载 面试官:Redis分布式锁如何解决锁超时问题

一、前言关于redis分布式锁, 查了很多资料, 发现很多只是实现了最基础的功能, 但是, 并没有解决当锁已超时而业务逻辑还未执行完的问题, 这样会导致: A线程超时时间设为10s(为了解决死锁问题), 但代码执行时间可能需要30s, 然后redis服务端10s后将锁删除, 此时, B线程恰好申请锁, redis服务端不存在该锁, 可以申请, 也执行了代码, 那么问题来了, A、B线程都同时获取到锁并执行业务逻辑, 这与分布式锁最基本的性质相违背: 在任意一个时刻, 只有一个客户端持有锁, 即独享。

2021-01-05 08:57:17 1562

转载 史上最全的数据库面试题,面试前刷一刷!

一、基本概念1.主键、外键、超键、候选键超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。候选键:是最小超键,即没有冗余元素的超键。主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。外键:在一个表中存在的另一个表的主键称此表的外键。2.为什么用自增列作为主键如果我们定义了主键(PRIMARY K

2021-01-05 08:52:00 1259

转载 面试官:Java中的finally一定会被执行吗?

一、前言因为这次面试有问到一些同学finally的问题,发现自己这块好像有点记不太清楚了,有的点可能还给人家说错了,一度弄得场面有些尴尬。所以说这篇文章深入研究一下finally的执行情况和返回值的情况。二、finally一定会执行吗?先给答案:肯定不是。我们可以看两种情况:1.在执行try块之前直接return,我们发现finally块是不会执行的publicclassTryCatchTest{privatestaticinttotal(){...

2021-01-05 08:50:50 179

原创 我们说StringBuilder是线程不安全的,是什么原因呢?

引言面试官:StringBuilder和StringBuffer的区别在哪?我:StringBuilder不是线程安全的,StringBuffer是线程安全的面试官:那StringBuilder不安全的点在哪儿?我:。。。(哑巴了)在这之前我只记住了StringBuilder不是线程安全的,StringBuffer是线程安全的这个结论,至于StringBuilder为什么不安全从来没有去想过。分析在分析这个问题之前我们要知道StringBuilder和StringBuffer的内

2021-01-05 08:48:57 222

原创 给你清清楚楚讲明白HTTPS原理

大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL 、非对称加密、 CA 证书等。但对于以下灵魂三拷问可能就答不上了: 为什么用了 HTTPS 就是安全的? HTTPS 的底层原理如何实现? 用了 HTTPS 就一定安全吗? 本文将层层深入,从原理上把 HTTPS 的安全性讲透。HTTPS 的实现原理大家可能都听说过 HTTPS 协议之所以是安全的是因为 HTTPS 协议会对传输的数据进行加密,而加密...

2021-01-05 08:42:56 840

原创 Spring Boot源码分析

1.通过源码分析SpringBoot的启动流程.首先找到启动程序的入口,从run方法点进去.@SpringBootApplicationpublic class OrderApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(OrderApplication.class); } /**

2020-12-31 10:01:33 222

原创 Java面试-Redis

Redis篇1.什么是Redis?Redis本质是一直Key-Value类型的内存数据库。因为是纯内存操作所以性能非常好,而且还支持多种数据结构。另外Redis可以对存入的Key-Value设置expire时间。缺点是数据库容量受到物理内存的限制,不能做海量数据的高性能读写。2.Redis支持哪几种数据类型?数据类型 使用场景 String 缓存,计数器,session Hash 存储用户信息,【key,field,value】语法:Hset key field v

2020-09-14 09:25:26 192

原创 为什么需要消息队列?使用消息队列有什么好处?

目录一、消息队列的特性二、为什么需要消息队列?三、使用消息队列有什么好处?四、为什么需要分布式?五、分布式环境下需要解决哪些问题?六、如何实现?七、常见消息队列对比和选型一、消息队列的特性业务无关,一个具有普适性质的消息队列组件不需要考虑上层的业务模型,只做好消息的分发就可以了,上层业务的不同模块反而需要依赖消息队列所定义的规范进行通信。FIFO,先投递先到达的保证是一个消息队列和一个buffer的本质区别。容灾,对于普适的消息队列组件来说,节点的动态增删和消息的持久化,

2020-09-14 09:22:58 3967

原创 Java集合框架 10 连问

首先要说一下,本文对这些Java集合框架的面试题只做了一个总结式的回答,对每一道题目,都值得深入去了解一下(什么是扎实基本功,这些就是基本功~~),后续可能对每一道题目拆开独立篇章来深入讲解一下。大家看到这些总结,有疑惑的,就赶紧去查一查深入了解一下,当然也欢迎指出文中错误之处。以下是大纲: HashMap和HashTable的区别? 说一下 HashMap 的底层结构? 为什么HashMap是线程不安全的 ArrayList 和 LinkedList 的区别是

2020-09-14 09:21:10 188

原创 谈谈为什么要拆分数据库?有哪些方法?

1. 为什么要拆分数据库?单体项目在构建之初,数据库的负载和数据量都不大,所以不需要对数据库做拆分,小型财务系统、文书系统、ERP系统、OA系统,用一个MySQL数据库实例基本就够用了。就像《淘宝技术这十年》里面说到的,电商业务的数据量增长飞快,所以最开始的PHP+MySQL的架构已经不能满足实际要求了,于是淘宝想到的第一个办法就是把MySQL替换成Oracle。但是没过了多久,在08年前后,单节点的Oracle数据库也不好用了,于是淘宝终于告别了单节点数据库,开始拆分数据库。从一个节点,变成多个节

2020-09-14 09:19:06 525

原创 java线程通信方式的理解

多线程和并发,在平时开发中有些小伙伴用的不多,但是有些工作经验的面试中还是容易被问到的,故在之后几期先整理一些常见的多线程面试题供参考。通信方式 ①同步 ②while轮询的方式 ③wait/notify机制 ④管道通信 一,介绍本文总结我对于JAVA多线程中线程之间的通信方式的理解,主要以代码结合文字的方式来讨论线程间的通信,故摘抄了书中的一些示例代码。二,线程间的通信方式①同步这里讲的同步是指多个线程通过synchronized关键字这种方式来实

2020-09-14 09:12:52 246

原创 GraphQL 教程

https://haofly.net/graphql-tutorial-5/

2020-08-25 17:20:20 146

原创 图解MySQL的各种 JOIN

前言在各种问答社区里谈及 SQL 里的各种 JOIN 之间的区别时,最被广为引用的是 CodeProject 上 C.L. Moffatt 的文章 Visual Representation of SQL Joins,他确实讲得简单明了,使用文氏图来帮助理解,效果明显。本文将沿用他的讲解方式,稍有演绎,可以视为该文较为粗糙的中译版。约定下文将使用两个数据库表 Table_A 和 Table_B 来进行示例讲解,其结构与数据分别如下:mysql>SELECT*FROMTable_...

2020-07-17 16:18:39 231

原创 工具类注入需要的service或配置类--亲测可行

代码如下(注解的方式,推荐使用这种):@Component //关键一:添加此注解才能被spring扫描到public class TokenUtils { private static final Integer REDIS_TIME = 60 * 60 * 24 * 365; private static final Integer CODE_TIME = 60 * 60; private static final ObjectMapper MAPPER = new Ob...

2020-07-13 09:58:38 491

原创 hashMap按照键排序转化成String

/** * 给参数排序,根据参数的名称而不是根据参数值,以便生成一致的加密源字符串 * * @param params 参数 * @return String */ private static String sort(Map<String, String[]> params) { if (params == null || params.size() < 1) { return ""; } List<Strin.

2020-07-08 13:24:16 737

原创 下载头像

package cn.com.kgc.api;import cn.com.kgc.common.encrypt.AESEncrypt;import cn.com.kgc.common.util.AddressUtil;import cn.com.kgc.common.util.OkHttpUtil;import com.alibaba.fastjson.JSONObject;import sun.misc.BASE64Encoder;import java.io.*;import jav.

2020-07-07 16:49:05 910

转载 Java面试--堆和栈的概念和区别

堆和栈的概念和区别【转载自博客】在说堆和栈之前,我们先说一下JVM(虚拟机)内存的划分: Java程序在运行时都要开辟空间,任何软件在运行时都要在内存中开辟空间,Java虚拟机运行时也是要开辟空间的。JVM运行时在内存中开辟一片内存区域,启动时在自己的内存区域中进行更细致的划分,因为虚拟机中每一片内存处理的方式都不同,所以要单独进行管理。 JVM内存的划分有五片: 1.寄存器; 2.本地方法区; 3.方法区;...

2020-06-03 09:27:25 218

原创 Java虚拟机(二):JVM内存模型和OOM

JVM内存模型相信有做过简单jvm调优的同学肯定知道几个参数:-Xms -Xmx -Xmn -Xss -XX:MaxPermSize-XX:MaxMetaspaceSize ,那么,作者就以一张图再配上这几个参数来向大家描述下分别在JDK7与JDK8之间JVM内存模型本身以及区别-Xmn EdenSpace,Survivor1,Survivor2三区总和(Young区)的大小-Xms 最小heap大小-Xmx 最大heap大小-Xss 线程私有栈大小-XX:MaxPermS...

2020-06-03 09:01:34 176

原创 Java虚拟机(一):Java编译器和类加载机制

什么是Java虚拟机从Java虚拟机所做的事情上去理解,可以分为两个阶段,编译时和运行时。编译时主要是一个由编译器将源码译为虚拟机指令集的一个过程;而运行时Java虚拟机主要涉及到类加载过程以及指令集的执行。编译时编译时,Java虚拟机的编译器会去将.java的源文件代码转换为Java虚拟机指令集。这里的Java虚拟机指令集可以从广意上理解为“Java虚拟机的汇编”,因此,本身也遵循汇编语言的语法格式:<index> <opcode> [<operand1&gt

2020-06-03 08:58:42 403

原创 springboot拦截器注入对象问题

问题因为拦截器是在上下文容器 Spring Context 初始化之前执行,所以没有办法直接在拦截器中注入Service对象,解决办法如下:通过构造器注入在拦截器中定义一个构造方法。将要用的的对象传进来:在配置类中将对象注入,然后传入到拦截器中即可:...

2019-12-04 15:06:50 314

原创 Tomcat配置系统参数

配置catalina.batlinux系统是catalina.shset JAVA_OPTS= -Dscheduler.start=true1上面的代码可以随意放置,设置完成后,启动Tomcat可以看到下面输出。设置完环境变量之后,可以通过线面代码在系统中获取到。System.getProperty("scheduler.start")1在这里需要注意的是,eclipse中...

2019-12-04 09:12:22 281

转载 springMVC上传文件,使用MultipartHttpServletRequest、MultipartFile进行文件上传

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/qq_35525955/article/details/80904844这里使用apache的开源jar包完成上传功能,使用jar包分别是:common-fileupload.jar和common-io.jar先编写上传文件帮助类,如...

2019-10-25 17:26:52 959

原创 Java 生成供ios和安卓使用的db文件

为了优化客户端的性能,将mysql的部分数据表生成db文件,供客户端使用<dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <version>3.23.1</version></de...

2019-08-20 13:35:50 657

原创 java读取域名下的xml文件内容

public String getXmlContent(String url,Long courseId) throws Exception { Map<String,Object> contentMap = new HashMap<String,Object>(); contentMap.put("id", courseId); ...

2019-08-12 20:17:12 287

转载 线程池ThreadPoolExecutor实现原理

1. 为什么要使用线程池在实际使用中,线程是很占用系统资源的,如果对线程管理不善很容易导致系统问题。因此,在大多数并发框架中都会使用线程池来管理线程,使用线程池管理线程主要有如下好处:降低资源消耗。通过复用已存在的线程和降低线程关闭的次数来尽可能降低系统性能损耗; 提升系统响应速度。通过复用线程,省去创建线程的过程,因此整体上提升了系统的响应速度; 提高线程的可管理性。线程是稀缺资源,...

2019-07-11 11:03:59 150

原创 Java json格式转成实体bean对象

1、JSON字符串转化成JSON对象 JSONObject jsonobject = JSON.parseObject(str); 或者 JSONObject jsonobject = JSONObject.parseObject(str);2、json="{\"userInfo\":{\"productId\":111,\"childId\":1,\"fro...

2019-05-21 10:35:48 4324

转载 数据库分区、分表、分库、分片

一、分区的概念数据分区是一种物理数据库的设计技术,它的目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。分区并不是生成新的数据表,而是将表的数据均衡分摊到不同的硬盘,系统或是不同服务器存储介子中,实际上还是一张表。另外,分区可以做到将表的数据均衡到不同的地方,提高数据检索的效率,降低数据库的频繁IO压力值,分区的优点如下:1、相对于单个文件...

2019-05-10 17:44:58 435

转载 HttpURLConnection 直接发送soap消息调用webservice

import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.InetSocketAddress;import java.net.Proxy;import java.n...

2018-10-11 11:22:40 463

原创 spring基础

1、spring事物特性原子性、事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。一致性、一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被破坏。隔离性、可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。持久性、一旦事务完成,无论发...

2018-09-28 17:29:03 150

原创 java文件下载

import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.OutputStream;import ...

2018-08-17 17:33:24 323

原创 java文件压缩类

import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.apache.tools.ant.Projec...

2018-08-17 17:29:59 176

原创 $.each 学习使用

1、 /**获取当前列表数据***/    function getListData(){        var trs = $('.dataTableCol tbody tr');        //得到的是整个table中的 tr        var profitPlanArrs = [];        $.each(trs,function(i,o){            ...

2018-08-17 17:09:30 314

原创 oracle 创建同义词赋权创建dblink

oracle 的两个用户 yinzc0509 和yinzc0202需求:我要在yinzc0202用户下访问yinzc0909的视图:VJK_NC_ACCOUNT_BANKINFO1、首先创建yinzc0202的用户。2、在yinzc0909用户下执行,赋权操作 grant select on VJK_NC_ACCOUNT_BANKINFO to YINZC0202;...

2018-08-15 16:22:12 792

原创 html页面布局

1:主页面 &lt;!DOCTYPE html&gt;&lt;html lang="en"&gt;&lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;html框架&lt;/title&gt;&lt;/head&gt;&lt;frameset rows=&quo

2018-07-18 11:37:47 207

转载 Oracle高级篇之start with关键字的用法

Oracle高级篇之start with关键字的用法一,基本语法SELECT ... FROM    + 表名 START WITH         + 条件1CONNECT BY PRIOR   + 条件2WHERE              + 条件3条件1:是根节点的限定语句,当然可以放宽限定条件,以取得多个根节点,也就是多棵树;在连接关系中,除了可以使用列明外,还允许使用列表达式。STAR...

2018-03-28 18:18:56 1330

原创 Java代理模式详解及案例分析:静态代理/动态代理

标题:Java代理模式详解及案例分析:静态代理/动态代理我们以几个问题,来开始我们今天的学习,如果下面几个问题,你都能说出个一二,那么恭喜你,你已经掌握了这方面的知识。1,什么是代理模式?2,Java中,静态代理与动态代理的区别?3,Spring使用的是JDK的动态代理,还是CGLIB的动态代理?4,JDK的动态代理的实现原理?5,JDK的动态代理与CGLIB的动态代理的实现上,有何不同?6,你知...

2018-03-28 18:17:30 277

StarUML Setup 3.2.1.exe

StarUML Setup 3.2.1.exe

2021-08-17

空空如也

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

TA关注的人

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