自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java实现整数计算器

记牛客网一道基础算法题,栈+递归实现描述请写一个整数计算器,支持加减乘三种运算和括号。数据范围:0<= |s| <= 100,保证计算结果始终在整型范围内要求:空间复杂度: O(n),时间复杂度 O(n)public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 返回表达式的值 * @param s string字符串 待计算的表达式 * @return int

2022-04-02 22:25:45 1408

原创 关于Integer类型采用大于、小于号的验证

面试当中遇到过这么一个问题,Integer类型,能通过 > 、 < 号进行比较吗?我印象中是会进行拆箱,然后转换成int进行比较,结果面试官说包装类型没有 > 、 < 方法,是不能直接比较的,现实际验证一下。不考虑null的情况。代码很简单: public static void main(String[] args) { Integer i1 = new Integer(220); Integer i2 = new Integer(210);

2022-04-02 11:03:37 5432

原创 sharding-jdbc 配置文件

版本 <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>4.0.0-RC1</version> </dependency>

2022-03-26 23:50:07 1160

原创 spring cloud 配置文件加载顺序

springcloud 配置文件加载顺序

2022-03-22 15:32:05 3879 2

原创 线程池实践小记

一、ThreadPoolExecutorThreadPoolExecutor 是JDK自带的线程池。主要使用的构造方法: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,

2022-02-15 16:11:53 260

原创 Dubbo系列 之 浅谈RPC

一、什么是RPCRPC(Remote Procedure Call)远程过程调用。与之对应的是 LPC(Local Procedure Call)本地方法调用。举个例子:public class CommonService { public String sayHi(String name) { return "hi " + name + " !"; }}现在项目A有一个CommonServie类,包含一个sayHi方法,那么在项目A中,我们就能通过以下方式调用

2021-05-12 18:21:55 275 2

原创 Spring系列 之 带你走进源码

通过AnnotationConfigApplicationContext简单解读Spring源码public AnnotationConfigApplicationContext(Class<?>... componentClasses) { this(); register(componentClasses); refresh();}一. 创建BeanFactoryAnnotationConfigApplicationContext继承自父类GenericApplication

2021-04-20 18:03:21 613 4

原创 记一次sql报错:syntax error: syntax error, expect RPAREN, actual LITERAL_FLOAT t1

<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.29</version> </dependency> <dependency> <grou..

2021-03-19 15:52:50 6404

原创 java 树形结构转层级结构

直接上代码import com.alibaba.fastjson.JSONObject;import org.springframework.util.StringUtils;import java.util.ArrayList;import java.util.List;public class TreeTransferUtil { /** * 显示在一个层级的树形数据转成多层级的树形结构,子节点放在指定参数中 * @param originalList 数据集

2021-03-13 15:30:30 1015

原创 自定义表达式计算

直接上干货,前端、后台实现自定义表达式计算/** * 运算相关js *//**计算没有括号的表达式的值(操作符限定为'+'、'-'、'*'、'/') */function calcExpressionWithoutQuote(expression) { if ((expression.indexOf('(') > -1) || (expression.indexOf(')') > -1)) { return calcExpression(expression)

2021-03-13 15:24:26 478

原创 java实现十大经典排序(六)快速排序

快速排序一、什么是快速排序二、算法稳定性三、算法复杂度四、java实现快速排序一、什么是快速排序快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序算法通过多次比较和交换来实现排序,其排序流程如下:首先设定一个分界值,

2020-12-20 20:32:23 164 1

原创 java实现十大经典排序(五)归并排序

归并排序一、什么是归并排序二、算法稳定性三、算法复杂度3.1 时间复杂度3.2 空间复杂度四、java实现归并排序一、什么是归并排序归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并操作的工作原理如下:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合

2020-12-19 23:11:49 274 1

原创 java实现十大经典排序(四)希尔排序

希尔排序一、什么是希尔排序二、算法稳定性三、算法复杂度3.1 时间复杂度3.2 空间复杂度四、java实现希尔排序一、什么是希尔排序希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增

2020-12-18 16:18:59 168

原创 java实现十大经典排序(三)插入排序

插入排序一、什么是插入排序二、算法稳定性三、算法复杂度3.1 时间复杂度3.2 空间复杂度四、java实现插入排序一、什么是插入排序插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。二、算法稳定性关键词相同的数据元素将保持原有位置不

2020-12-16 23:01:29 311

原创 java实现十大经典排序(二)选择排序

选择排序一、什么是选择排序二、算法稳定性三、算法复杂度3.1 时间复杂度3.2 空间复杂度四、java实现选择排序一、什么是选择排序选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。二、算法稳定性选择排序是给每个位置选择当前元素最小的,比如给第

2020-12-16 17:49:26 1544

原创 java实现十大经典排序(一)冒泡排序

一、什么是冒泡排序冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。二、算法稳定性冒泡排序就是把小的元素往前调或者把大的元素

2020-12-16 10:49:41 605

原创 java实现Excel动态列导出的简单例子

可以通过该对象的set方法设置各个参数,headKey保存结果集中,数据对应的key值,ArrayList最佳,保证了导出列的顺序,同时限制了每个sheet页保存的最大数据行数为5W条,这些参数也可以放到属性中进行设置。@Datapublic class ExcelExportUtil { //表头 private String title; //各个列的表头 private List<String> headList; //各个列的元素key值

2020-05-16 16:39:48 7340 1

原创 获取当月月初、下个月月初、上个月月初、去年当月月初、去年下个月月初

public String getDayOfMonth(int year, int month, int type){ // type为1代表当月月初,2代表下个月月初,3代表上个月月初,4代表去年当月月初,5代表去年下个月月初 if (type == 2 || type == 5) month = month + 1; if (type == 3) month = month - 1; if .

2020-05-16 15:41:02 901

原创 根据月份获取当月日期集合

统计报表时,经常会有根据选择的年月,获取对应每一天的具体数据的需求,如果是当前年月,则统计到前一天。由于涉及行转列,以及一些其他需求,需要将日期以及当月第几天当成参数,所以提取成了以下的公共方法,希望有大神能提供更好的方法。 // month格式:yyyy-MM public List<HashMap> getMonthBetween(String month) throws ParseException { List<HashMap> result = new

2020-05-16 15:20:29 1525

原创 springboot 同一方法内,多数据源切换,包含事务

最近项目遇到了多数据源切换的情景,在此记录一下实现过程,也参照了下前辈的代码一、禁用数据库自动配置禁用数据库自动配置需在Application类上增加配置,可在@SpringBootApplication注解后,也可在@EnableAutoConfiguration注解后配置。@SpringBootApplication(exclude={DataSourceAutoConfiguratio...

2020-04-02 10:44:16 6325 3

原创 Spring中,@Transactional 注解的失效测试以及传播行为测试

分别测试四种情况:同一个service中,A方法调用B方法,B方法抛异常同一个service中,A方法调用B方法,A方法抛异常service1中A方法,调用service2中B方法,B方法抛异常service1中A方法,调用service2中B方法,A方法抛异常分别测试A、B方法加上@Transactional注解Controller层:@RestController@Requ...

2019-08-06 22:55:18 383

原创 maven(一)------ 认识maven

参考文章maven(一) maven到底是个啥玩意~1. maven是什么maven是基于项目对象模型(POM, project object model),可以通过一小点描述信息来管理项目的构建,报告和文档的软件项目管理工具。maven的核心功能是合理叙述项目间的依赖关系。通过groupId、artifactId、version三个属性就能定位一个jar包。groupId是一个唯一标...

2019-08-04 19:42:59 177

原创 springboot+netty+redis框架服务端的实现(二) ------ 业务处理类与心跳包超时处理、redis工具类、netty启动类及遗留问题

四、 业务处理类与心跳包超时处理业务处理类继承了ChannelInboundHandlerAdapter类通过重载userEventTriggered方法,可以实现心跳超时的设置代码如下:public class ServerHandler extends ChannelInboundHandlerAdapter { private static final Logger log...

2019-07-12 19:01:50 1895

原创 springboot+netty+redis框架服务端的实现(一) ------ pom依赖、netty配置类、自定义协议以及编解码器的实现

一、 pom.xml 所需依赖MessagePack是编解码工具,稍后介绍 <!-- https://mvnrepository.com/artifact/io.netty/netty-all --> <dependency> <groupId>io.netty</groupId> <a...

2019-07-12 12:04:06 6321 4

原创 类加载器加载顺序

先上代码:public class Parent { { System.out.println("Parent的普通代码块"); } static { System.out.println("Parent的静态代码块"); } public Parent() { System.out.println("...

2019-07-10 17:49:28 1046

原创 自定义ClassLoader测试

参考博客:深入分析ClassLoader在阅读文章后,对例子进行更详细的解析。Parend接口public interface Parent { public void say();}Man实现类public class Man implements Parent { @Override public void say() { Sys...

2019-07-10 12:03:03 502

原创 springboot+mina框架服务端的实现(三) ------ 关于用tomcat优雅关闭mina的简单研究

在之前的代码中,创建mina连接时,NioSocketAcceptor采用的注解@bean中,destroyMethod是destroy。在tomcat中执行shutdown.sh后,可能会出现内存泄漏的情况,例如: /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ _...

2019-07-08 16:22:12 2434

原创 springboot+mina框架服务端的实现(二) ------ 心跳包、自定义Session及其管理类、业务处理类、mina连接的创建

接上一节:springboot+mina框架服务端的实现(一) ------ pom依赖、mina配置类、自定义协议以及编解码器的实现参考博客:矢落叶の博客四、 心跳包的实现先简单介绍下keepAlive的机制:首先,需要搞清楚TCP keepalive是干什么用的。从名字理解就能够知道,keepalive就是用来检测一个tcp connection是否还连接正常。当一个tcpconnec...

2019-07-06 17:11:17 2498 2

原创 springboot+mina框架服务端的实现(一) ------ pom依赖、mina配置类、自定义协议以及编解码器的实现

来吧,一步一步搭建mina服务端,原理往后再说!首先利用springboot的插件新建一个maven项目一、 pom.xml 所需依赖首先加入mina核心依赖<!-- https://mvnrepository.com/artifact/org.apache.mina/mina-core --><dependency> <groupId>org.a...

2019-07-06 15:41:49 5756 2

原创 Spring Boot 2实战项目:信息管理系统(二)------ 持久层、分页、业务逻辑接口及其实现类、Web层

1. Repository持久层Spring Data 建议定义接口完成SQL语句的操作,该接口可以直接作为Repository组件使用。当使用repository模式时,既能体现业务逻辑组件封装repository组件的门面模式,也可以分离业务逻辑组件和repository组件的功能:业务逻辑组件负责业务逻辑的变化,而repository组件负责持久化的技术变化,这正是桥接模式的应用。引入r...

2019-07-02 09:43:50 554

原创 Spring Boot 2实战项目:信息管理系统(一)------ 系统简介、配置文件、持久化类

1. 项目简介及系统架构提供系统管理功能,包括用户管理、菜单管理、角色管理模块1.1 系统功能介绍用户管理:添加用户、查询用户、删除用户、修改用户、激活或冻结用户状态。菜单管理:添加菜单、删除菜单、修改菜单、查看下级菜单。角色管理:添加角色、删除角色、修改角色、绑定用户(赋予用户角色)、绑定用户操作(赋予用户可操作的功能模块)1.2 采用技术spring、spring MVC、JP...

2019-06-30 19:04:20 889

原创 git克隆报错

执行git clone https://github.com/gavinL93/oa时,出现错误:Cloning into 'oa'...fatal: unable to access 'https://github.com/gavinL93/oa/': SSL certificate problem: unable to get local issuer certificate开始以为是...

2019-06-29 21:12:27 2105

原创 springboot jpa 使用过程中的一些问题

1. hibernate在数据库生成hibernate_sequence表使用数据库:MySQL数据库方言:spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQL55Dialect使用注解:@GeneratedValue(strategy = GenerationType.AUTO)解决办法:方法一:将@...

2019-06-29 16:26:29 2199

原创 将一个List<HashMap>集合,根据HashMap中的key,拆分成不同集合的实现

目前的项目有这么一个需求,需要根据List中,HashMap的key进行重新分组(key是固定的几个),将key相同的HashMap放入同一个List中,并且可以对这个List的大小进行控制,将这个List继续拆分成若干个List的集合。看例子:希望能根据List中,HashMap的key进行分组,得到的结果是一个Map,分别以List中的Map的key为key,值是一个List集合,List中...

2019-06-28 14:21:07 2894

原创 INSERT INTO ... ON DUPLICATE KEY UPDATE ... 导致主键不连续

如果数据库主键设置了自增,那么在使用这个语法时,即时没有执行insert操作,AUTO_INCREMENT也会进行加1的操作。

2019-06-28 10:04:42 814

原创 mybatis 参数是HashMap,HashMap中包含集合List

直接看代码: @Test public void testInsertList() { HashMap<String, Object> param = new HashMap<>(); param.put("key1", "value1"); param.put("key2", "value2...

2019-06-25 15:09:58 1834

原创 一种Map转Json字符串,出现“\”转义字符的解决办法

项目中出现了这样一个问题,当一个Map被转成Json字符串后,由于业务需求,会将Map转为JsonObject,添加元素后,又转成Json字符串,最后再被包装到另一个Map里,被转成Json字符串发送给APP端,这个时候APP端反应结果中带有“\”转义字符,无法解析。简化一下问题:当一个Map被转成Json字符串后,被添加到另一个Map中,如果这个新的Map需要转成Json字符串格式,那么转化...

2019-06-25 09:14:31 20529 7

原创 多线程学习(八)---线程池

参考文章:线程池你真不来了解一下吗?一、 线程池简介线程池可以看做是线程的集合。在没有任务时线程处于空闲状态,当请求到来:线程池给这个请求分配一个空闲的线程,任务完成后回到线程池中等待下次任务(而不是销毁)。这样就实现了线程的重用。如果没有使用线程池,为每个请求都新开一个线程:public class Test { public static void main(Strin...

2019-06-24 11:36:24 368

转载 JVM初探

转载自文章:想要面试阿里Java研发岗?你必须得跨过 JVM 这道坎!作者: 程序员的前半生jvm的区域划分大致就是分为:程序计数器,虚拟机栈,堆,方法区,本地方法栈,这几个部分。接下来我们从自己写好的Java代码如何通过JVM来运行的角度,来分析一下JVM里这些区域是如何支撑我们的Java代码跑起来的。程序计数器假设我们有如下的一个类,就是最最基本的一个HelloWorld而...

2019-06-21 17:55:06 161

原创 List 接口中的 subList(int fromIndex, int toIndex) 方法

在项目中,遇到了这个方法,之前没有遇见过,现在记录一下。源码:/** * Returns a view of the portion of this list between the specified * <tt>fromIndex</tt>, inclusive, and <tt>toIndex</tt>, exclusi...

2019-06-20 18:48:28 2999

空空如也

空空如也

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

TA关注的人

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