自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mysql查询列横向转换逗号拼接并加上双引号

在这个示例中,将 GROUP_CONCAT 函数的结果使用双引号括起来。使用 SEPARATOR 参数指定逗号和双引号之间的分隔符为双引号逗号双引号。CONCAT 函数将双引号添加到 GROUP_CONCAT 函数的结果的前面和后面,从而将整个结果用双引号括起来。这样,最终查询结果每一行对应一个 user_id 和一个用双引号括起来的 user_names 字段。其中,user_names 为由每个 user_name 值使用逗号分隔并用双引号括起来组成的字符串。

2023-03-31 17:51:14 1514

原创 java.net.URL超时时间默认无限制问题

可以通过URLConnection.setConnectTimeout()方法和URLConnection.setReadTimeout()方法来设置URLConnection连接和读取的超时时间。这两个方法都是可选的,如果不设置超时时间,就会使用系统默认的超时时间。Java默认的超时时间是无限大,也就是不限制超时时间。将连接超时和读取超时时间改成6秒,则可以收到"statusCode=200"的响应,表明请求成功。setReadTimeout()设置读取数据的超时时间,单位毫秒。例如,可以使用URL。

2023-03-31 17:48:22 6225

原创 服务端IOS订阅类型支付接入详细说明与注意事项

apple订阅支付接入,恢复订阅和通知问题疑难解读,接入流程说明

2023-02-24 12:26:40 5565 3

原创 关于mysql语句“!=“使用注意事项

当我们使用mysql的!=的时候,要注意一点的是!=只会筛选该字段非空的数据,如果查询的表中有字段为null,这些数据都不会被查询出来,即时他!=某个数据例如:select * from test where type != 2test表中 type 存在 1 ,2,null那么该查询语句只会筛选出type为1的数据,即使 null也不等于2建议使用:select * from test where (type != 2 or type is null)或者select * from test wher

2022-06-27 11:33:40 6525

原创 Mysql数据类型导致的索引失效

记录自己在工作中发现的索引失效比较隐蔽的情况。当我们设计表结构的使用,需要先预设后面需要频繁查询的数据的索引,其中还有一个重要的索引优化,表面看好像对索引没影响,就是设计表的字段的类型的时候,当查询的时候字段的类型不匹配的时候,索引是失效的。例子:1.联表索引失效如果连表的两张表的字段数据类型不一样,例如一个为int,一个为varchar,这个时候即时建立了索引也是失效的。如果两个都是varchar为什么还会失效呢,这个时候你一定要保证它们的字符是一样的类型,如图2.条件查询索引失.

2021-09-09 10:56:15 610

原创 如何在linux系统执行java项目+selenium

1.安装google-chrome浏览器linux版安装chrome用下面的命令安装Google Chromeyum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm也可以先下载至本地,然后安装wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpmyum insta

2021-01-30 18:23:07 2137

转载 Git 常用命令

取得Git仓库初始化一个版本仓库git init1Clone远程版本库git clone yourgitaddress(你的git地址)1添加远程版本库origingit remote add origin yourgitaddress(你的git地址)1查看远程仓库git remote -v 1提交你的修改添加当前修改的文件到暂存区git add .1如果你自动追踪文件,包括你已经手动删除的,状态为Deleted的文件git add

2020-11-16 10:00:23 113

原创 我们其实在用面向对象编程语言写着面向过程风格的代码

常见的编程范式或者说编程风格有三种,面向过程编程、面向对象编程、函数式编程,而面向对象编程又是这其中最主流的编程范式。现如今,大部分编程语言都是面向对象编程语言,例如我所学的Java,大部分软件都是基于面向对象编程这种编程范式来开发的。一、什么是面向对象?什么是面向过程?什么是面向对象?面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石 。面向对象编程语言是支持类或对象的语法机制,并有现成的语法机制,能方

2020-11-09 22:48:15 629

原创 Java中接口与抽象类的区别

一、java四大特性之一抽象java作为一门面向对象编程语言,抽象和接口是经常被用到的两个语法概念是面向对象四大特性,以及很多设计模式、设计思想、设计原则编程实现的基础。比如,我们可以使用接口来实现面向对象的抽象特性、多态特性和基于接口而非实现的设计原则,使用抽象类来实现面向对象的继承特性和模板设计模式等等。二、什么是抽象类?抽象类不允许被实例化,只能被继承。也就是说,你不能 new 一个抽象类的对象出来。抽象类可以包含属性和方法。方法既可以包含代码实现,也可以不包含代码实.

2020-11-06 16:40:51 105

原创 java面对对象四个特性:封装、继承、多态、抽象的理解

Java 不支持多重继承的原因多重继承有副作用:钻石问题(菱形继承)。假设类 B 和类 C 继承自类 A,且都重写了类 A 中的同一个方法,而类 D 同时继承了类 B 和类 C,那么此时类 D 会继承 B、C 的方法,那对于 B、C 重写的 A 中的方法,类 D 会继承哪一个呢?这里就会产生歧义。考虑到这种二义性问题,Java 不支持多重继承。但是 Java 支持多接口实现,因为接口中的方法,是抽象的(从JDK1.8之后,接口中允许给出一些默认方法的实现,这里不考虑这个),就算一个类实现了多个接口,且

2020-11-05 23:27:45 462 2

原创 Springboot的自动配置原理分析

一、springboot继承的父项目<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> //点击去追踪依赖 <version>2.2.6.RELEASE</version> <relativePath/> <

2020-09-30 11:43:01 107

原创 webmagic+selenium+mongodb+springboot抓取JD商品信息

最近刚学了webmagic这么一个爬虫框架(之前都是手调api)于是决定写个demo,我就拿京东的商品来练练手。一、采用的技术webmagic:一个优秀开源的java爬虫框架,听说是根据python的scarpy的设计思想来写的,具体的思想大概就是抓取你想要爬的url放在队列中,主要是根据判断条件该url为列表页还是详情页,如果是列表页就爬取url放在队列中,如果从列表中拿到的url是详情页就解析想要的数据存储起来,这种思想就很适合并发执行去消费队列的url。底层默认是采用httpclient去抓

2020-09-29 17:15:56 871 2

原创 继承Thread或者实现Runnable的类在多线程环境中其成员变量是否绝对线程安全(成员变量是否是共享变量)

需求:创建的线程类中需要传递变量或者需要有成员变量操作的情况下,如何保证线程安全,或者说如何保证成员变量不共享。关于线程中成员变量是不是线程安全的,一个取决于是否共享变量,需满足以下条件:1.非静态成员变量:因为静态成员变量是调用该run方法所有线程类共享的变量,是不线程安全的。2.多例模式:当你的类是单例的情况下,就代表你的成员变量是每个调用该线程方法共享变量,也是不线程安全的,多例对象可以保证每个对象都有自己独立的成员变量。demo代码:单例情况:只创建一个DemoThread对

2020-09-02 17:18:00 955 2

原创 selenium基于java的抓取数据以及selenium常用api总结

一、配置驱动与属性我主要是使用谷歌的驱动,来模仿谷歌浏览器点击。下载驱动地址:https://npm.taobao.org/mirrors/chromedriver/选择版本要根据自己电脑的谷歌浏览器版本来决定下载(在右上角帮助点击关于Google)//配置驱动路径System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");//配置驱动属性ChromeOptions chromeOptions =

2020-07-19 23:24:06 649

转载 mongodb配置文件mongodb.conf参数大全,好东西,转载了

https://www.cnblogs.com/seasonzone/p/9359425.html

2020-07-01 23:18:40 447

原创 启动mongodb时报错:libstdc++.so.6: cannot open shared object file: No such file or directory

当我在网上按照教程安装好mongodb后,想要启动的时候发现报错启动不来运行:/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork报错提示:缺少共享库!在网上找了好多办法,发现没用(其实是没说清楚),大多数都是千篇一律(复制粘贴一模一样)先执行命令yum whatprovid.

2020-06-29 23:44:09 1337

原创 java基于HttpClient和Jsoup的抓取京东商品信息解决未登录跳转问题:https://passport.jd.com/uc/login

空闲间写了个java的使用httpClient和Jsoup去获取京东商品信息的接口,然后存储到数据库中。中间发现一个问题,我们使用httpclient api通过京东url去获取信息://获取HttpClient对象CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).build();//声明httpGet请求对象HttpGet httpGet = new HttpGet(url);

2020-06-19 17:06:19 3301 3

转载 Linux安装Elasticsearch过程和常见异常解决

本人最近尝试在linux服务器上安装部署Elasticsearch,于是在网上找了几个比较好的教程和解决方法,现在总结起来第一步:创建用户Elasticsearch是不允许在root用户上启动的,如果使用root用户启动就会报错创建用户教程原文链接:https://blog.csdn.net/sunnyzyq/article/details/87619474第二步:下载Elasticsearch包一开始想在官网下载,太慢了,使用yum也太慢了,于是我找到有人分享的下载连接(百度网盘)

2020-06-17 11:55:36 237

原创 MySQL慢查询日志和explain分析SQL执行计划

一、慢查询日志1.作用慢查询日志是为了发现有问题的SQL,该日志会记录超过设置的运行时间的SQL语句。2.慢查询日志是否开启show variables like 'slow_query_log' //查看是否开启慢查询日志set global slow_query_log_file='/var/lib/mysql/mysql-slow.log';//慢查询日志的位置set global slow_query_log=ON//开启慢查询日志set global l.

2020-06-15 11:36:25 482

原创 设计模式之单例模式应用场景篇

应用场景我们为什么要使用单例模式呢?它有什么好处?(一)单例模式可以让我们只创建一个对象从而避免了频繁创建对象导致的内存消耗和垃圾回收。Servlet是单例模式,我们只需要创建一个Servlet,然后接收请求并处理。spring的bean默认也是单例模式,springMVC是单例模式,所以我们可以发现我们的service层,dao层,web层都是使用单例模式,单例无处不在。多线程的线程池的设计一般也是采用单例模式,这是由于线程池要方便对池中的线程进行控制。同时mysql,redis

2020-06-06 15:45:10 3337

原创 全文检索技术-Lucene笔记(概念篇)

一、什么是全文检索我们生活中的数据总体分为两种:结构化数据和非结构化数据。结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等磁盘上的文件。1.结构化数据搜索常见的结构化数据也就是数据库中的数据。在数据库中搜索很容易实现,通常都是使用sql语句进行查询,能很快的得到查询结果。2.非结构化数据搜索顺序扫描法:直接把文档从头遍历到尾找出要查找的信息全文检索:将非结构化数据中的一部分信息提取出来,重新组

2020-06-03 22:55:18 207

原创 Docker入门笔记(超详细,概念说明+实操演示)

一、概念Docker是一个开源的项目,是一种容器的技术,是基于Google公司推出的Go语言实现,它就像一个一个的集装箱,每个集装箱就是一个容器,容器就相当我们的一个环境,甚至你可以理解为一个操作系统,我们可以在容器里面放一个工具,每个容器相互独立共存。Docker是为了解决一些安装的环境的复杂问题,只需要安装一个有相关环境的容器,实现轻量级的操作系统虚拟化解决方案。Docker的基础是Linux容器等技术。(例如一个Mysql的容器直接使用,不需要配置mysql环境和安装)特点:二

2020-06-01 23:36:09 334

原创 RestTemple调用第三方API接口报错抛出异常无法返回API接口错误信息Message

最近遇到一个棘手的问题,有个需求需要写一些调用外部API接口的方法,因为没有SDK,所以我只能手动的去调用,框架采用的是springboot,Java语言编写,但是却出现了当调用异常,包括参数错误,token无效等直接抛出异常400,并没有获取到API接口的异常信息,只有我们自己抛出的异常信息。这样接口的调用方肯定不知道接口调用异常原因。一、RestTemple实现API调用我采用的使用springboot的restTemple来去调用接口,具体的实现是先定义一个controller接口,然后再在s

2020-05-29 17:06:52 6231

原创 SpringCloud笔记

一、概念springCloud是分布式系统,由多个微小的服务组成,它是集组件而成的一种架构风格。springCloud主要包含了netflix组件:netflix是一家播放视频的公司,其技术具有分布式抗压)springCloud需要springboot的支持:pom中需要使springboot和springCloud的版本相对应,可以从springcloud查看对应版本,springCloud的版本是按字母更新(伦敦地铁站名)springcloud主要包含的组件:注册中心Eureka,负

2020-05-26 23:15:06 254

原创 一个java开发初识vue.js的生命周期(二)

每个Vue在创建出来前,都进行了一系列的初始化过程,我也是通过查资料,并且总结与实践来了解Vue的生命周期。这是网上找的中文图(很多是英文图)具体:https://cn.vuejs.org/v2/guide/instance.htmlvue在生命周期中有这些状态, beforeCreate,created,beforeMount,mounted,beforeUpdate,updated,beforeDestroy,destroyed。Vue 在实例化的过程中,会调用这些生命周期的钩.

2020-05-18 21:16:45 125

原创 一个java开发初识vue.js(一)

对于一个java开发(后端开发)而言,虽然我们比较少的涉及到前端的知识,即使没让你写,你得会看,即使没让你看,你也得知道前端是怎么去对接你的接口的,在工作的时候我们也需要经常跟前端商讨接口参数与返回数据格式问题,我是按作为一个java开发,第一次接触学习vue.js来说明。我个人的学习习惯就是,先看一遍教程,再跟着做一遍demo,再去看看api,概念什么加深或者扩展。在学习vue.js前,我们必须对html,css,js有一定的使用经验,要不然就是文盲看文章,这不弄死你。一、搭建项目首...

2020-05-18 16:44:37 718

转载 网上找到的几种树形结构设计表的方法

左右编码可能只适应二叉树,其他方法更加通俗易懂,并且适应性强一点https://blog.csdn.net/qq_38011415/article/details/95462698https://blog.csdn.net/ghostrabbit/article/details/80050777

2020-05-13 19:05:42 210

原创 在LeetCode上写算法发现一个递归导致的栈溢出问题

今天在力扣上写一道算法题的时候发现一个关于栈溢出的问题(就是深度层次太多导致抛出了异常)给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。来源:力扣(Leet..

2020-05-13 01:31:32 1250

原创 为什么子类的构造器中要调用父类的无参构造方法,有什么意义?

当一个子类调用构造方法时,我们知道它都会调用父类隐性的构造方法,如图:但是,我发现一个问题,为什么要这样设计,为什么子类一定要调用到父类的无参构造方法,或者你可以选择调用其他有参的父类构造方法,这可能跟子类实例化的时候也要先加载父类的构造代码块,静态代码块一个缘由。于是我查了很多资料发现,大概都是同一个意思:因为子类继承父类之后,获取到了父类的内容(属性/字段),而这些内容在使用之前必须先初始化,所以必须先调用父类的构造函数进行内容的初始化.同时我看到论坛有一个回复:我得出的结论是:

2020-05-08 22:08:30 2950 6

原创 设计模式之单例模式概念篇

概念单例模式可以说是设计模式里面最好理解的一个模式了,它的意思就是一个类只创建一个对象,所有的引用都只向该对象去操作。单例模式满足的要求:1.构造函数私有化2.类的内部创建实例3.提供静态的唯一获取实例的方法单例模式之饿汉式@Datapublic class Singleton { private static Singleton singleton=n...

2020-05-05 15:19:44 173

原创 关于linux上常用的命令和使用场景,以及在服务器安全上遇到的坑

作为一个程序员,操作linux服务器肯定是必备的一个技能,工作的时候可能需要你去部署包到linux服务器上,或者说去服务器上看日志,调优,配置,看数据库等,下面是我笔记里面常用的一些linux的命令,并且有些结合使用场景来说,我的服务器是阿里云上的centos7系统,我一般用xshell去管理我的服务器,同时有个很好的xftp可以实现可视化,可上传下载,xshell可以用rz上传sz下载命令,但是...

2020-05-01 21:02:38 297

原创 关于springboot内置tomcat和外部独立部署tomcat差别

前两天,我去面了个试,面试官问了我个问题,独立部署的tomcat跟springboot内置的tomcat有什么区别,为什么存在要禁掉springboot的tomcat然后将项目部署到独立的tomcat当中?我就想,不都一个样?独立部署的tomcat可以配置优化?禁AJP,开多线程,开nio?而且springboot内置的tomcat多方便,部署上服务器写个java脚本运行即可。现在考虑下有什么条件...

2020-05-01 01:03:28 10509 5

原创 调整jvm参数优化tomcat

根据我上一篇文章,如何通过配置文件来优化tomcat服务器的性能外,下面我通过jvm的参数调优来优化tomcat的性能。首先我们先配置好tomcat的配置,开启线程池,使用nio2,禁用ajp通关用apache JMeter测试的结果(保持多次测试等量原则)现在我们在tomcat中的/bin目录下catalina.sh加上以下命令,重启tomcat设置使用g1收集器,最大...

2020-04-30 00:18:19 104

原创 关于Tomcat8配置优化的几个方法讲解

我们知道,一般我们部署项目使用tomcat服务器的频率是非常高的,所以说在生产环境上对tomcat的优化也是非常重要的。对于tomcat的优化,我们主要从两个方面入手,一是tomcat自身的配置,二是tomcat运行的jvm虚拟机的调试。我的这篇文章主要讲如果通过tomcat自身的配置调试优化,并且测试其优化的效果。一、配置tomcat8服务器我们可以去官网下载tomcat:http...

2020-04-27 18:17:05 614

原创 mysql基于innodb引擎的索引的见解

本篇文章主要是整合我对mysql数据库的索引的一些理解:在mysql数据库的优化中,索引肯定是第一个考虑的方法,因为我们要考虑如何使用索引去优化查询,往下推,虽然索引能够好的去优化查询的时间,但是索引不是越多越好,我们知道索引也是占用磁盘空间的,太多的索引插入更新数据会导致耗费大量的时间,如果你想很自如的使用索引进行优化,那肯定得好好了解索引的机制,原理,数据结构。一句话简单来说,索引的出...

2020-04-26 22:24:55 134

原创 mysql多表批量插入数据根据唯一索引选择插入还是更新ON DUPLICATE KEY UPDATE

在一次做项目后台统计的时候出现了一个问题:怎么从其他表(例如日志表)批量插入数据到统计表当中,我的数据库用的是mysql,而且这个时候还要考虑是是否存在该条记录选择插入还是更新,那个时候对我这个菜鸟还是有点难度的,后来查了一些资料,最好使用的是ON DUPLICATE KEY UPDATE,但是我查了半天没查到是将其他表批量插入的sql,倒是可以用mybatis通过<collection&g...

2019-08-09 11:17:44 738

原创 运行bat文件执行jar包出现得闪退问题相关细节点

自己在idea上install打包后,想通过.bat文件执行jar包,于是把jar包的绝对路径配置了一下,发现打开bat闪退问题。于是我采用了cmd直接java -jar ...(jar包真实路径)结果成功了,我就郁闷了,bat文件配置的路径怎么看都没错,于是百度查了,都说是路径问题,并且我cmd 运行bat也是失败提示找不到文件。于是我从路径寻找问题,在测试中我发现我的一个文件夹又空...

2019-03-16 01:24:11 6234

原创 关于No converter found for return value of type: class java.util.ArrayList出现的几个问题

当我使用spring,springmvc,mybatis整合开发项目的时候,在controller层的方法使用@responsebody想要返回一个list集合对象的转换为json格式在页面输出。出现了异常:No converter found for return value of type: class java.util.ArrayList,是说明没有可以转换对象成json的转换...

2019-02-28 01:06:25 6447 1

原创 mybatis mapper接口方法学习中发现不可以进行重载报错Class not found: org.jboss.vfs.VFS的一个问题

在学习mybatis的时候,关于mapper接口的使用时,当我们在xml文件中写了2个相同的mapper标签的id,在mapper相应的接口下重载方法如下图:因此,便发现一些问题,单元测试失败,开始以为是自己代码写错,最后才发现在mapper中id冲突,将id改为不同便可以运行,报错如下:发现除了此方法其他所有的也都运行不了,所有最好不用在mapper接口中用重载...

2019-02-02 18:35:14 10071

空空如也

空空如也

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

TA关注的人

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