自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 用工具类or采用spring bean的接口注入方式

和领导的一次对话,记录一下背景:项目中引入configuration自己封装的框架,很多静态方法需要改成非静态方法,或者通过增加很多参数来实现,感觉很鸡肋,这些数据通过spring注入,越写越不灵活。领导:为啥那些逻辑要用静态调用?啥场景下的逻辑适合用静态调用?为啥逻辑不用接口或者spring bean?我换一个问题,你觉得啥样的类,适合用静态类和静态方法?小白:修饰成员变量(静态变量)静态成员属于类。被这个类的所有实例所共享在内存中只有一个拷贝,节省内存,通过类名直接访问,十分方便。修

2020-11-25 12:05:43 448

原创 阿里三面面经

大概为期一个月的阿里面试,最后说是大政策变了,而无缘阿里。在这里重新记录一下面试的问题,希望给大家一些帮助吧。**阿里一面**(持续一小时二十分钟):阿里的面试主要是看你的基础是否扎实:在问基础的时候也会问你是如何应用的,总之问题不会很刁钻,给人也很舒服。阿里面试官最后会问一道开放性的题目,不过很难,没有标准答案。首先从项目入手,项目里面是如何解决高并发的问题,主要问了一下解决的细节,其实把细节说清楚也不简单,阿里的面试官不像别的面试官好糊弄问了线程池的核心参数有哪些?工作线程数如何计算?以

2020-08-03 21:00:51 641

原创 java为什么要使用单例设计模式

1.数据校验1.1跨信任边界传递的不可信数据使用前必须进行校验在任何时候,尽可能使用接受已知合法数据的白名单策略。接受已知好的数据if(!Pattern. matches("^【0-9A-Z a-z】",name){ throw new illegalArgumentException("Invalide name")}拒绝已知坏的数据这种策略被称为黑名单或者负相矫正,是一种弱的检测方式,由于潜在的不合法数据可能是一个不受约束的无线集合,校验很快就会过时。1.1白名单净化方式对任何不属

2020-07-24 15:46:34 382

原创 java女程序猿的四个星期的卑微求职之路

先介绍一下我自己吧,我是一名做java开发的女程序猿,我不知道正在阅读这篇博文的你,对于女java程序猿是一种什么看法。我来说说我听到过的对我最常见的评价吧。女程序真是稀有,女的很少有搞技术的,你真的好厉害哦(然而的的内心的声音:厉害个毛线,在面试官眼里的女程序猿,是不是和大马路上面的女司机一样,不讨喜)女程序猿还要敲多久代码,到时候有家庭,你的精力必定优先,还是抓紧转行吧。面试官n连问:你觉得你身为女程序猿,你的优点在哪里?你结婚了吗?你生孩子了吗?考虑二胎吗?孩子给谁带呀?我们这个岗位是要经常

2020-07-09 22:15:45 491

原创 Integer的缓存数组

package com.company;/** * Integer的缓存数组 */public class CacheArr { public static void main(String[] args) { Integer a = 100; Integer b = 100; Integer c = 200; Integer d =200; System.out.println(a==b);//true

2020-06-29 17:33:03 464

原创 单例模式的四种创建方式

这是我近期面试的一道题面试官问题创建单例的方式有几种,我答了懒汉和饿汉两种,他告诉我说还有两种,其实我隐约还记得有两种,就是想不起来,心里默默流泪。。。。。记录一下,也算是学习了,这里主要摘录与博客:java单例模式的四种创建方式这篇文章写的浅显易懂,我在这里记录下:饿汉式实现单例模式package com.company.singleton;/** * 单例模式 * 恶汉式 */public class Singleton_hungry { private static Si

2020-06-29 13:39:15 370

原创 并发下获取当前时间类优化

高并发场景下System.currentTimeMillis()的性能问题的优化System.currentTImeMillis()的调用比new一个普通对象要耗时的多(具体耗时高出多少我还没有测试过,有人说是100倍左右)System,currentTimeMillis()之所以慢是因为去跟系统打了一次交道后台定时更新时钟,JVM退出,线程自动回收package com.company;import java.sql.Timestamp;import java.util.concurrent

2020-06-24 16:23:21 277

原创 idea配置maven和pom文件下载不下来的坑

这个idea每回装的时候,首次配置maven总是搞很久,于是我终于受不了了,一定花个几分钟记录下1.在maven官网上下载maven的最新安装包maven下载地址2.解压并配置环境变量3.验证maven是否配置成功这样就安装成功了,然后就是该maven一些配置了4.给maven的配置文件settings.xml注意要改的地方 <!-- 阿里云镜像 --> <mirror> <id>alimaven</id

2020-06-17 11:49:09 1625

原创 kafka阶段学习小结(面试)

kafka阶段学习小结(面试)https://blog.csdn.net/qq_28900249/article/details/90346599主要是借鉴这篇文章的一些问题,做一个小总结,每回看到这些题都要好好思考一下。1.请说明什么是Apache Kafka?2.为什么要使用kafka,为什么要使用消息队列3.kafka中的ISR,AR又代表什么?ISR的伸缩又指什么?4.kafka中的broker是干什么的?5.kafka中的zookeeper起到什么作用,可以不用zookeeper吗?

2020-06-16 18:01:01 292

原创 RocketMQ学习总结

在网上看了一下关于rocketmq的面试题,在总结一下,算是一个阶段性学习吧什么是解耦? 什么是异步? 什么是削峰填谷? RocketMQ 执行流程 怎么理解 Producer 的? 怎么理解 Consumer 的?消费者消费模式有哪几种?? RocketMQ 如何保证高可用的? 如何保证消息不被重复消费?或者说如何保证消息消费时的幂等性? 如何保证消息的可靠性传输?要是消息丢失了怎么办? 如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,

2020-06-15 22:19:11 573

原创 使用restTemplate在系统间传递(文件)字节数组乱码问题

base64问题引入在此之前,问一个问题,什么是BASE64加解密呢??计算机中的任何数据都是按照ascii码存储的,但是ascii码的128~255之间的值是不可见字符。而在网络上交换数据的时候,比如从A地传到B地,往往要经过多个路由设备。由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这样就不利于传输。所以就先把数据先做一个Base64编码,统统变成可见字符,这样出错的可能性就大降低了。对于证书来说,特别是根证书,一般都是做Base64编码的,因为它要在网上被许多人

2020-05-13 13:52:11 1198

原创 java8新特性总结

java8的新特性主要体现在一下几个方面:java8主要做了如下优化:hashmap数据结构的优化。concurrentHashMap->CAS算法,取消了分段锁的概念,比锁 的效率高。jvm的内存空间做了优化。将永久区放入到元空间中,元空间,加载一些类,存在物理内存中,物理内存很大,减少了垃圾回收的几率。代码更少,增加了新的语法Lambda表达式强大的StreamAPI便于...

2020-04-27 19:14:46 1149

原创 springaop注解方式源码解析

这几天在看雷老师讲的spring注解开发,做了个笔记,在这里记录一下sping注解开发@configuration@conditional@bean@Import一:给容器中注册组件1)包扫描+组件标注注解(@Controller/@Service/@Repository/@Component)2)@Bean[导入的第三方包里面的组件]3)@Import[快速给容器中导入一个组件...

2020-03-31 20:41:54 285

原创 tcp的三次握手和四次挥手

java面试题经常会问到tcp的三次握手和四次挥手,看了几篇博文之后,总结一下:可以参考:1.https://blog.csdn.net/Ningdaxing1994/article/details/73076795?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant...

2020-03-06 17:20:11 130

原创 java实现快速排序

在简书上看到一篇博文介绍快速排序,于是在这里介绍一下维基百科:快速排序,又称划分交换排序,简称快排,最早由东尼.霍尔提出。在平均状况下,排序n个项目需要O(nlogn)次比较。在最坏的情况下,需要O(n^2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他算法更快,因为它的内部循环可以在大部分架构上很有效率的达成快速排序思想1.先从数列中取出一个数作为基准数2.分区过程,将比这个...

2020-03-03 13:06:43 321

原创 mysql中的MVCC,幻读与间隙锁

一直搞不明白为什么间隙锁为什么能过解决幻读的问题,现在大致总结一下吧。事务的隔离级别1.Read Uncommitted(未提交读)2.Read Commited(提交读)3.Repeatable Read(可重复读)4.serializable(可串行化)MVCC,mysql怎么实现的可重复读mvcc对版本并发控制(Multi-Version Conncurrency Cont...

2020-03-02 20:35:31 2268 1

原创 redis中的Sentinel详解

以后还是要好好写博客,把好东西或者是在工作中遇到的问题记录下来菜鸡的提升之路最近在看《redis的设计与实现》,这本书比较底层,应用说的很好,主要还是对redis底层的详解吧,个人觉得很不错,还是很好看的一本书,特别是刚开始对redis底层的各种数据结构的介绍,步步升入。。闲话少说,不如正题sentinelsentinel(哨兵)是redis高可用的解决方案。它的本质是一个运行在特殊模式...

2020-02-28 15:34:26 1091

原创 通过案例讲述重构小技巧

什么是重构呢?重构:对软件内部结构的一种调整,目的是在不改变【软件之可察行为】的前提下,提高其可理解性,降低其修改的成本。在这里圈重点:代码是给人看的,一目了然的代码才是体现一个程序员的功底的变现。什么样的代码需要重构1.重复的代码此时我们需要提取方法2.过长的函数方法中,用的短的函数更好,它会有好的解释能力,共享能力,选择能力。(程序中的委托机制(delegation))3.过大...

2019-07-31 13:58:31 233

原创 文件上传编码问题

文件上传编码问题1.编码问题的演示我采用的是weblogic服务器,使用springmvc接收带文件的表单,content-type 为mutipart-formdata,页面采用的编码为UTF-8,但是项目采用的是GBK的编码。从前端请求到服务器,也就是utf-8别编码成GBK,其实在这个过程中,就以及存在上传参数失真的情况。下面我用一个小demo显示出现问题的原因。package co...

2019-07-18 21:44:55 3903

原创 利用freemarker+SAX解析xml的方式对excel文件字段校验

利用freemarker对参数进行校验这篇文章主要用到的技术点:自定义注解的使用反射机制SAX解析xmlFreemarker的运用我们在工作中经常需要上传excel文件,然后在对文件中的字段进行校验。如果文件里的字段是反复出现,或者文件的字段比较多的话,这是就会使代码变得繁琐,而且也不容易维护。比如说像下面那张学生的表格我们需要对上面表中的每个字段做校验1.userName...

2019-06-18 16:36:55 2153

原创 mybatis+oracle 完成插入数据库,并将主键返回的注意事项

mybatis+oracle 完成插入数据库,并将主键返回的注意事项一条插入语句就踩了不少的坑,首先我的建表语句是:create table t_openapi_batch_info( BATCH_NO VARCHAR2(200), UM_CODE VARCHAR2(50), BATCH_STATUS...

2019-06-10 20:22:02 6689 3

原创 使用idea搭建Spring boot+jsp的简单web项目

创建spring boot项目,使用idea自带的spring initializr创建Spring boot的maven项目(我是先创建了一个空的项目)。开始创建Spring boot项目,点击file>New>Module,可以选择一下自己使用的jdk,剩下的默认就可以了,然后点击下一步点击下一步就可以,如果有需要的话可以自己修改。这一步是选择自己想要加载的...

2019-06-04 21:49:22 493

原创 基于纯注解的spring开发的介绍

几个核心注解的介绍1.@Configuration它的作用是:将一个java类修饰为==配置文件==,在这个java类进行组件注册package com.kkb.config;import org.springframework.context.annotation.Configuration;@Configuration//相当于配置文件public class Applica...

2018-12-05 15:55:45 224

原创 ClassLoader类加载机制

ClassLoader类加载机制在java中类加载是遵循双亲委派来加载的:通过调用loadClass方法逐级向上传递委派加载请求,classloader动态加载class文件到内存中,父类能够加载不让子类加载的一种安全机制。当ClassLoader加载一个class文件到JVM时需要的步骤如图所示第一步:找到 .class文件并把这个文件包含的字节码加载到内存中。第二步:字节码的验证,c...

2018-11-26 17:07:40 327

原创 优雅的代码之选择不同支付方式

如何写出优雅的代码我在这里举一个例子,当你选择一个商品时,对应的不同的支付方式,可以选择不同的支付方式,比如你可以选择农业银行支付可以享受打8折的优惠,选择建设银行支付可以享受打9折的优惠。又比如同样一份文件,客户可以选择以word文件的形式下载,或者以pdf文件的格式下载,或者以Excel的文件格式下载。。。其实有很对业务场景是这样的,我就不一一举例了,就拿第一个例子来说:不同的银行都需...

2018-11-22 19:55:44 1272

原创 传统jdbc开发

传统jdbc开发创建一个java工程,导入java包,需要mysql的数据库驱动。jdbc编程的步骤1、 加载数据库驱动2、 创建并获取数据库链接3、 创建jdbc statement对象4、 设置sql语句5、 设置sql语句中的参数(使用preparedStatement)6、 通过statement执行sql并获取结果7、 对sql执行结果进行解析处理8、 释放资源(r...

2018-11-12 16:19:08 148

原创 redis的安装及与spring整合

redis单机版安装redis的安装Redis是c语言开发的。安装redis需要c语言的编译环境。如果没有gcc需要在线安装。Yum install gcc-c++安装步骤:第一步:redis的源码包上传到linux系统。第二步:解压缩redis。第三步:编译。make第四步:安装。make install PREFIX=/usr/local/redis连接redis前端启动...

2018-11-07 15:21:07 122

原创 redis的基础总结以及高级应用

redis总结Redis是一个key-value存储系统。它支持存储value类型很多,包括String(字符串)、list(链表)、set(集合)、zset(有序集合)。这些数据类型都支持push/pop、add/remove以及取交集和并集及更丰富的操作,redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中,它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件...

2018-11-06 19:56:48 151

原创 关于并发中多线程的问题

为了提高cpu的利用率,我们采用多线程来提高效率。1.什么是进程?什么是线程?进程简单的来说就是一个程序的执行,而线程可以理解为在进程中独立运行的多个子任务。2.创建线程的方式创建线程的方式有多种,可以继承thread类,实现runnable接口,实现里面的run方法。当然有时为了避免直接创建Thread对象,我们也可以使用executor类来管理thread对象,从而简化并发编程...

2018-11-02 09:56:15 157

原创 html2canvas.js+itext+pdf.js将网页转化成图片,利用itext将图片转化成pdf保存

直接上代码了前端代码: Titletype="button" value="截图" onclick="takeScreenshot()">id="view"> id="mycanvas"> 引用得jstype="text/javascript" src="application/career/explore/js/html2can

2018-01-02 09:45:15 1463

原创 使用XWFDocument生成word并导出

感觉自己写的东西都比较简单,就当是一个不断积累的过程把所需要的jar包有:dom4j-1.6.1.jar   poi-ooxml.jar    poi-ooxml-schemas.jar      poi-scratchpad-3.8.jar    xmlbeans-2.5.0.jar    poi-3.8.jar在这里,我贴出wordutils工具类import org.apac

2017-11-27 16:56:05 3757

原创 使用JSONObject将json文件转化成对象

使用JSONObject将json文件转化为对象,最主要的步骤就是:    1.将json文件转化为字符串,这里用到了文件流的读取    2.引入json-lib包,调用里面的方法。比较简单,只当做一个记录1.贴出test1.js文件{ "province":[{"cityId":18,"cityName":"西安"},{"cityId":53,"cityNam

2017-11-27 09:44:48 10305

原创 使用excelutils导出excel

使用excelutils导出excel非常简单,这里不做很多的介绍,直接贴出代码:所需要的包有commons-beanutils-1.8.0.jar,commons-digester-1.8.jar,commons-logging-1.1.1.jar,excelutils.jar,poi-3.8-20120326.jar,主要有这五个jar包。@Controller publi

2017-11-21 19:16:20 3286

原创 AjaxUpload实现文件上传+LibreOffice文件转码+flexPaper文件在线预览

AjaxUpload实现无刷新效果的文件上传。src="${request.getContextPath()}/application/js/jquery.fileupload.js">首先引入js文件upload: function () { var button = document.getElementById("xgk_uploadButton");

2017-11-17 16:57:09 580

原创 htmlunit爬取数据

HtmlUnit是一个“java程序的浏览器”。它为html文档建模,提供了一个API,允许您调用页面、填写表单、点击链接等,就像你在“正常”浏览器里做的一样。他有相当好的JavaScirpt支持(不断改进),甚至可以使用相当复杂的AJAX库,模拟Chrome、Firefox或Internet Explorer,这取决于所使用的配置。他通常用于测试的目的或从web站点检索信息。      下面

2017-11-17 09:05:16 1074

空空如也

空空如也

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

TA关注的人

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