学而不思则罔
第二颗大白菜
每天写点什么,不是为了得到一些什么,也不是向谁证明一些什么,更不是为了存在感,而是让自己知道每天都做了些什么。
展开
-
什么是ElasticSearch?
啥是ElasticSearch?问这个问题前,我们可以问一些别的问题:说一首提到月亮的古诗词。额,这个时候,确实哈,这样突然一问,脑瓜子嗡嗡的,离离原上草,一睡一枯荣?不不不,这不是挨个背吗?谁背课文的时候会记住这首古诗和月亮有关系?这不都是老师经常这样问吗:来,王同学,你给背一下李白的《草》。这个时候,头脑风暴,算法启动:李白的《草》,脱口而出:离离原上草,一...原创 2019-10-25 16:39:25 · 2365 阅读 · 0 评论 -
redis持久化(万一redis突然宕机了咋办?数据会丢失吗?)
回答标题问题:不会丢失。先来说说什么是数据持久化,为啥要进行数据持久化。第一点:什么是数据持久化。 在缓存服务中,我们都了解,他说一种高速缓冲,存放于内存的一种服务。那么内存中的东西生命周期是什么呢?通常来说,当机器关闭的时候,内存中的数据都会清空,都不会存储,那么下次开机的时候,不会出现之前的数据。那么为了防止这种情况突然发生,,我们通常都会对缓存做持久化操作。这里...原创 2019-10-21 16:23:07 · 10612 阅读 · 0 评论 -
什么叫事务隔离级别呢?
那么到底什么是事务隔离级别呢?这其实也是事务的一大特性有关系,事务的隔离性。隔离性,就是在多个事务间会出现一个异常情况,那么针对这些异常情况,我们需要有不同的处理结论,但是不同的处理结论肯定导致的性能方面会有不一样的结果。那么有因必有果,我们先说说,为啥会出现事务隔离级别这个机制。在业务高并发的情况下,我们系统中业务逻辑使用到了事务处理,那么肯定在短时间内会产生多个事务情况。...原创 2019-10-19 14:52:14 · 3694 阅读 · 3 评论 -
关于gitlab分布式开发相关命令
对于分布式开发,前后端分离的项目组来说,gitlab的使用率大家肯定是挺高的。那么接下来我们来讲解一下一些使用方法,使用场景。。场景一:当管理员远端仓库创建新分支的时候,个人分支不存在该branch,那么将从本地上传到个人分支中,然后进行与管理员仓库交互1.先在本地创建新branch名称,并且切换到该分支(具体操作自行百度)2.与上游分支建立连接(也就是个人...原创 2019-04-17 18:51:06 · 3192 阅读 · 0 评论 -
在sql层面实现数据拆分,进行二次操作(实战解决)
今天涉及到一个需求,在一张表中,需要找到该公司下所有的员工信息(员工ID,员工姓名),以及该员工所属的公司、部门的信息(公司ID,部门ID,公司名称,部门名称):然后在一张员工表中,只有一个字段(将公司ID和部门ID拼接成了一个新字段),那么我要找到该公司下所有员工,只有先模糊查询user_source表,获取该公司下所有的员工ID、员工姓名、员工Source。那么数据量有上百条,如...原创 2019-03-27 13:49:00 · 5610 阅读 · 0 评论 -
SQL中的触发器是什么?
可以简单的理解:相当于是一个时间的触发装置,当满足了触发事件的条件后进行相应的处理操作,例如在数据库表中增加或者删除、修改了某条记录后,输出消息来告知该操作。这样就可以在这个表上设置一个触发器,触发条件为增加,删除或者修改了记录,触发的时间就是进行消息通知的输出。那么我们接下来用一种专业的描述来讲解:1.触发器的作用:触发器是一种程序模块,是数据库的一种自动处理机制。触发器主要作用是...转载 2019-03-22 17:49:22 · 6524 阅读 · 0 评论 -
在对对象判断为空:Object != null 和 null != Object的区别?
Java中对null进行判断放在前后没有什么区别,只是为了代码规范,为了避免写代码时书写错误。下面面两个测试Demo都没有报错。null放在前面是为了避免少写一个"=","null="书写会报错,防止笔误写成"=null"时检查不出来。@Test public void testDemo1(){ String str = null; if...原创 2019-03-22 17:07:23 · 8043 阅读 · 0 评论 -
$!{var} 和${var} 的区别
后台输送给页面的变量必须加 $!{var} ——中间的感叹号。说明:如果 var = null 或者不存在,那么 ${var} 会直接显示在页面上。所以:不管任何时候都要使用$!{var}...原创 2019-03-21 19:44:46 · 9760 阅读 · 2 评论 -
开发中的特殊标记注释解释
特殊注释标记,请注明标记人与标记时间。注意及时处理这些标记,通过标记扫描,经常清理此类标记。线上故障有时候就是来源于这些标记处的代码。1 ) 待办事宜 (TODO) : ( 标记人,标记时间, [ 预计处理时间 ])表示需要实现,但目前还未实现的功能。这实际上是一个 Javadoc 的标签,目前的 Javadoc还没有实现,但已经被广泛使用。只能应用于类,接口和方法 ( 因为它是一个 J...转载 2019-03-21 19:41:22 · 4016 阅读 · 0 评论 -
关于Concurrent Modification Exception的产生原因以及解决办法
最近在新公司写需求,然后产生了一个bug,显示查询权限没有,我很纳闷,开始以为确实是这个用户没有权限,一直在业务层面上纠结问题产生的原因。后来一步步debug,才发现,在前人的基础上写代码,很难受。发现了这个问题(特想把之前的程序员抓过来,然后打一顿!)大家先看看我标注的方框,思考一下,这样写真的好吗?我相信资深的程序员是不习...原创 2019-04-19 15:18:04 · 4648 阅读 · 0 评论 -
replace与replaceAll的区别
这两者有些人很容易搞混,因此我在这里详细讲述下。replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);replaceAll的参数是regex,即基于规则表达式的替换,比如:可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号;相同点:都是全...原创 2019-06-12 16:03:04 · 7068 阅读 · 0 评论 -
关于前端给后端传参的一个注意事项
在个别的场景下,后端需要生成一个excel模板,而这个模板是供用户导入数据到数据库的。但是切记。excel中数据千万不能一味由前端传来的参数来生成。有些数据会导致模板生成错误。且前端的参数可能会被修改,table中的缓存会影响数据的准确性。...原创 2019-06-17 08:31:55 · 5559 阅读 · 0 评论 -
Apache common 包 StringUtils 关于isEmpty与isBlank的使用区别
一、关于isEmpty与isBlank的使用区别1. public static boolean isEmpty(String str)判断某字符串是否为空,为空的标准是str==null或str.length()==0下面是StringUtils判断是否为空的示例:StringUtils.isEmpty(null) = trueStringUtils.isEmpty("") = tru...原创 2019-07-29 10:10:05 · 3066 阅读 · 0 评论 -
记一次前后端交互,传递时间参数的异常--java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.
错误日志:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:### Error querying database. Cause: java.lang.IllegalArgumentException: inval...原创 2019-07-25 15:05:08 · 2592 阅读 · 0 评论 -
spring-boot-starter-log4j2和spring-boot-starter-logging同时存在会产生冲突
错误日志:SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]Exception in thread "main" java....原创 2019-08-06 11:59:12 · 8664 阅读 · 0 评论 -
什么是时间复杂度和空间复杂度,原来我一直没搞懂。
之前在面试的时候,面试官问了我一句,你知道什么是时间复杂度和空间复杂度吗?这直接给我问懵了,虽然这东西天天在嘴巴上跑,但是要我用一个很通俗易懂的语言来讲讲,我真的不知道。那么我们就来说说吧:时间复杂度和空间复杂度一般都是在算法上出现的一个衡量值,是对一个算法是否高效的一个标准。其实之前一直有个误解,就是时间复杂度就是算法的运行周期的时间。其实这是错误的。并且对于算法来说,一个fo...原创 2019-10-11 16:36:20 · 2839 阅读 · 0 评论 -
单点故障(用通俗易懂的语言告诉你)
什么是单点故障?假想,如果一颗大树,树根让人给刨了,设想,它的树叶还有活路,它的枝干还有意义么。那么用稍微专业一点的说法:在分布式架构中通常会采用一种模式:主从模式;(一个主服务配合多个子服务完成业务处理工作,主服务的作用,主要通过接受用户请求,进行任务分发工作,然后子服务负责接收到任务,然后处理自己专职内的业务)如果主服务挂了,出现故障了,那么他将引发的是整个系统的瘫痪,所以我们称此现象...原创 2019-10-11 17:20:01 · 4619 阅读 · 0 评论 -
线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式
线程池不允许使用Excutors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让程序员更加明确线程池的运行规则,避免资源耗尽的风险。说明:Executors返回的线程池对象的弊端如下:1.FixedThreadPool和SingleThreadPool: 允许的请求队列长度为Integer.MAX_VALUE,可能会堆积大量的请求,从而发生内存溢出现象...转载 2019-03-21 19:23:12 · 5129 阅读 · 0 评论 -
十大排序算法-------【基数排序】详解(Java源码)
基数排序是按照低位先排序,然后收集;再按照高位排序,然后再次收集;依次类推,直到最高位。有时候有些属性是有优先级顺序,先按照低优先级排序,再按照高优先级排序。最后的次序就是高优先级的在前,高优先级相同的低优先级高的在前。算法描述: 取得数组中的最大数,并取得位数; Arrays为原始数组,从低位开始取到每个位组成radix数组; 对redix进行计数排序(利用计数排序适用于小范围数的...原创 2019-03-17 14:36:30 · 3320 阅读 · 0 评论 -
十大排序算法-------【归并排序】详解(Java源码)
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用。将已经有序的子序列合并,得到完全有序的序列;即先使得每个子序列有序,再使得子序列之间有序。若将两个有序表合并成一个有序表,称为2-路归并。算法描述: 把长度为n的输入序列分成两个长度为n/2的子序列 对这两个子序列分别采用归并排序 将两个排序好的子序列合并成一个最终的排序序列。 代码...原创 2019-03-17 14:20:27 · 3217 阅读 · 0 评论 -
GBK-----UTF-8编码格式问题浅析
首先,想必大家在不同环境下切换写代码的时候,都会遇见乱码的时候(读取二进制的时候采用的编码和最初将字符转换成二进制时的编码不一致。),大多数人都知道,只需要把项目工程的编码格式调整一下为最初的编码就可以解决乱码了,但是这只是被动的解决方式,但是不是根本。想想了解根本,那就得首先知道编码. 编码:计算机识别的语言是二进制格式,也就00001111,那么在信息的执行,传递过程中,需要对信息的格式...原创 2018-03-25 18:25:12 · 2854 阅读 · 0 评论 -
Javaweb中提到的反射浅析(附源码)
反射:一个jdk5.0的新特性,高级运用。在后期的框架中,这个是一大重点,现在估计我们都不会太多的接触他的。但是为了后面的铺垫,我想还是先了解一下: 先构造一个类,然后我们用反射来获取,调用里面的方法,属性 package com.changeyd.test09;public class Person { // 属性 private String name; priva...原创 2018-04-02 13:33:22 · 3209 阅读 · 0 评论 -
关于使用 JSON.parse()报 VM141:1 Uncaught SyntaxError 的解决方案
今天在使用ajax的后期,老师问我们怎么json解析对象,然后上百度搜了一下:大概有三个方式 var str = '{"name":"小明","age":18}';将字符串转化json对象:1. var json = JSON.parse(str);2. var json = eval("(" + str + ")");3. var json = (new Function...原创 2018-09-27 17:49:51 · 6918 阅读 · 0 评论 -
Maven------管理项目的构建,报告和文档的项目管理工具软件(一)
Maven基础 Maven的Apache公司开源项目,是项目构建工具,用来依赖依赖管理1.Maven的好处 使用传统项目开发crm项目,项目大小:一般超过40MB 同样项目,使用maven开发。500KB以内 同样的代码,实现的功能都一样,maven项目如何做到的?可以初步判断maven项目中一定没有jar包,没有jar包的项目如何运行? ...原创 2019-01-14 18:03:21 · 3183 阅读 · 0 评论 -
Maven------管理项目的构建,报告和文档的项目管理工具软件(二)
3.maven安装、配置本地仓库 maven程序安装前提:maven程序java开发,它的运行以来jdk 3.1maven的下载安装 1.找到资料 2.解压到本地磁盘(解压目录不要有中文,空格) · 3.配置环境变量 jdk环境变量:JAVA_HOME 将MAV...原创 2019-01-14 18:03:48 · 2680 阅读 · 0 评论 -
MySql之多种存储引擎分析和理解
昨个和一家面试官进行面试工作,面试官样子应该是项目经理级别,问到我一个问题:谈下MySql存储引擎的理解,例如:InnoDB?说实话,我蒙了,一直都是问Java相关的底层数据结构什么的,突然来个这个,学识浅薄。结束后赶紧补课: 首先就先说下什么是存储引擎:存储引擎就是存储数据,建立索引,更新查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的。所以存储引擎也可以被称作为“表...原创 2019-02-21 22:45:28 · 3188 阅读 · 0 评论 -
论【杭州站】首次面试过程及心得————Java开发栈
嗯,今天是2019年2月18号,来到杭州已经两天了。来之前,杭州这边的hr已经电话联系了本博主了,预约了今天面试。开始打电话是一个小姐姐,结果我兴高采烈的来到公司。到前台和前台的小姐姐说了一句:你好,我预约了今天下午4点钟的面试。然后这个小姐姐就给我了一张面试的表,我简单的填了一下自己的简介信息。 本来按道理是去面试的时候,我们是需要带好纸质简历和自己的笔记本电脑的。但是本博主这次什么都没...原创 2019-02-18 21:56:40 · 4478 阅读 · 0 评论 -
String字符串如何分割????【基础面试题】
今天一个很宅的一个面试官面试我技术相关问题,一进来就直接看我简历,看完简历,然后一句话没说,直接问我问题。哦买嘎,连让我自我介绍都省掉了,直接上来就问我一些String的方法问题,,我的天,我很无奈,我面试的是Java实习岗位吗?但是今天有一个问题让我惊呆了,问:如何分割字符串?我说通常采用下标来分割,采用那个su什么的方法:他说不是,我是指返回一个数组的,我转念一想:t...原创 2019-02-28 22:10:06 · 8270 阅读 · 0 评论 -
SQL语句去重关键词------- distinct
在sql表中,可能会出现重复数据。有些时候我们希望仅仅列出不同(distinct)的值。关键词 distinct用于返回唯一不同的值1.作用于单列select distinct name from A2.作用于多列select distinct name, id from A3.COUNT统计select count(distinct name) f...原创 2019-02-28 22:13:07 · 7897 阅读 · 0 评论 -
JavaSE经典面试题--------------------------自增、自减
话不多说,我这里直接上面试题int i = 1;i = i++;System.out.println(i);请问输出多少?说实话,博主第一直接回答了一个2,真的太天真了。先不说答案,我们先简单分析一下:第一,这里涉及到一个运算符优先级的问题,那么++的优先级肯定是高于=赋值运算的,第二,这里又是先运算后赋值,因为++在变量后面。 所以本人脱口而出2,其实错...原创 2019-02-25 16:59:33 · 4041 阅读 · 0 评论 -
JavaSE经典面试题--------------------------写一个单例(Singleton)的示例
Singleton:单例设计模式,那么什么是单例设计模式呢?单例模式,是一种常用的软件设计模式。在他的核心结构中只包含一个称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类只有一个实例。一句话概括:就是一个类只能有一个对象实例。 那么理解了概念,那么我们就好编程了,首先我们就先考虑如何保证怎么编码让该对象只能有一个实例了? 怎么创造实例?通过构造方法来创建实例,那...原创 2019-02-25 17:31:36 · 3240 阅读 · 0 评论 -
论sql优化
相信有过和数据库进行对接,交互的工作经历的朋友都知道,sql的执行效率直接决定整体系统的运行效率。性能不够理想的系统中处理一部分是由于应用的访问量,高并发产生导致服务器负载过高原因,其还有一个原因就是Sql语句不够规范,不够专业,存在可优化空间。那么如何判断sql语句是否需要优化呢?使用SET STATISTICS IO命令就可以得到SQL语句的logical reads 信息如...原创 2019-02-20 16:16:35 · 2523 阅读 · 0 评论 -
数据库优化技术内幕篇
处理百万级别以上的数据提高查询速度的方法:1.应该尽量避免在WHERE子句中使用!=或者<>操作符号,否则将引擎放弃索引从而进行全表扫描。 2.对查询进行优化,应当避免全表扫描,首先应当考虑在where已经order by 所涉及的列上建立索引。 3.应当尽量避免在WHERE子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:SELEC...原创 2019-02-20 19:13:29 · 3300 阅读 · 7 评论 -
面试必问问题【一】~~~~~~~~~~~~你有什么想要了解的?你有什么想问的?
“你有什么想要了解的?”和“你有什么想要问的吗?” 博主在之前面试的经历中,可以这么说,不管面试什么岗位,几乎没有不问这个问题的,动不动就是一句你有什么想要了解的,还记得本人第一次去面试的时候,幸好之前看到一些面试教程帖子说过,说要面试相关研发部门的岗位的时候,一定要问一问对方公司项目所使用的框架有哪些?有没有公司独有的框架,或者说自创的框架,如果有幸入职贵公司,我也好提前学习。之前认为说...原创 2019-02-26 18:46:26 · 12693 阅读 · 0 评论 -
深入理解JVM,及GC工作机制
话不多说,先上两张图,一张为中文版jvm内存结构图,一张为英文版的流程图一、JVM内存分区从JVM内存图中可以将其JVM大致分为四个区域:1.类加载器、2.内存区、3.执行引擎、4.本地库接口那么我们分别根据图示来讲讲其完成了哪些功能:1.类加载器(ClassLoader):在JVM启动时或者在类运行时将需要的class加载到JVM中,那么从英文版的内存流程图...转载 2019-02-26 22:36:18 · 3127 阅读 · 0 评论 -
对话式交互人工智能---changeMax医疗健康助手(Android端应用)
changeMax医疗健康助手(以下简称为:医疗助手)是一个在android平台上开发的一款应用,主要通过对话式人工智能和文字式两种交互方式共同配合实现低门槛性人机交互。在医疗助手后台数据库中,存在2000条疾病和2000条症状信息,在每一条数据信息中都包含了疾病简介,疾病发病部位,传染性,易发人群,早期症状,晚期症状,发病症状,发病症状介绍,并发症介绍等等信息,足以满足前期医疗助手对患者的诊疗。...原创 2019-03-20 19:42:44 · 4282 阅读 · 0 评论 -
十大排序算法-------【冒泡排序】详解(Java源码)
冒泡排序:冒泡排序是一种简单的排序算法。它重复的比较两个元素的大小。如果他们的顺序不符规定,那么将交换。遍历的工作是重复的进行,直到没有需要交换的,那么这数列已经排序完成。这个算法可以引申为水中气泡大小,上浮到顶端的顺序。算法描述: 比较相邻的元素,例如第一个比较第二个,那么将交换他们两位置; 对每一对相邻元素作相同的工作,从开始第一个对到最后结尾的最后一对,这样在最后的元素应该会是最...原创 2019-03-17 14:03:53 · 3331 阅读 · 0 评论