自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

北岭山下的博客

要想获得以前没有的成功,必须付出以前没有的努力

  • 博客(51)
  • 收藏
  • 关注

原创 常用的字符串拼接方式性能分析以及源码分析

性能测试在日常开发中,常用的字符串拼接主要有String +、String.concat、StringBuffer.append以及StringBuilder.append等四种。接下来我们测试一下这四种方式的性能到底哪个强。背景:对字符串进行5000次的拼接操作。运行环境:CPU:2.4 GHz 四核Intel Core i5内存:16G系统:macOS 10.15.5jdk:1.8.0_211测试工具:junitPerf1.String + //String + @

2020-07-12 15:42:09 286

原创 反编译工具cfr关于StringBuilder反编译的相关问题

问题:想对String的“+”进行分析,但使用cfr反编译String的“+”操作反编译失败,废话不说,直接上代码。源码:public class Demo { public static void main(String[] args) { String a = "123"; String b = a + "456"; System.out.println("b:"+b); }}反编译后的代码:java -jar cfr-0.150.j

2020-07-11 17:01:03 454

原创 【AOP】利用aop,实现方法的环绕日志(包括注解日志)

背景在工作中,日志是查找BUG的重要手段之一,常规的方式就是代码中通过面向过程的方式,即在代码中将想要显示的变量输出。 logger.debug("id="+id);然而,在是调试当中,经常需要查看方法的传入参数,但是如果代码中没有log,那查日志就GG了;但是在每个方法都log一段代码,那就有点累赘了,所以接下来将用AOP(切面编程)的方式,实现方法环绕日志。需求用切面...

2019-10-12 22:31:08 1183

原创 关于Arrays.asList的注意事项以及源码解析

文章目录1.禁止使用Arrays.asList 返回的List进行add/remove/clear操作2.基本数据类型作为asList参数注意事项3.返回真正ArrayList的正确方式1.禁止使用Arrays.asList 返回的List进行add/remove/clear操作 /** * 1.remove/add/clear * Arrays的内部类并没有实现Li...

2019-07-06 00:38:23 178

原创 ssm+vue前后端分离框架整合(附源码)

前言本文针对Spring+SpringMVC+Mybatis后台开发框架(基于maven构建)与vue前端框架(基于webpack构建)的项目整合进行介绍,对于ssm和vue单独项目的搭建不作为本文的重点,而着重介绍两者之间交互的要点。SSM项目结构说明项目有service和web两个子项目组成,web依赖于service,其中web主要是control层内容,service则对...

2019-04-15 22:29:43 53579 24

原创 【Flick API】获取Flickr图片信息及实例说明--Java版

背景近期GF写论文需要爬取Flickr网站上的某个关键词的所有图片信息,并且生成excel用于数据分析。在找了许多资料之后,实现了该功能,其实难度并不大,在Flickr官方API文档中写的也挺详细的,而且还有官方Flickr4JavaDemo,只是过程中容易遇到了一些坑,特此记下,方便后人。实现功能搜索某关键字,获取到Flickr中匹配到该关键字的图片,并获取其中的包括图片ID,用户信息,图...

2019-01-24 12:19:44 2826 9

原创 【css】多种方式实现水平居中(持续更新)

水平居中水平居中在布局的时候经常用到,水平居中主要分两种情况,一种是已知宽度居中,未知宽度居中。已知宽度居中如果已知元素宽度,那水平居中会非常简单,使用margin:auto即可实现margin:autocss:.margin-middle{ margin:auto; width: 100px; height: 200px; back...

2019-01-08 15:37:08 430

原创 【vue】引用公共js

背景在.vue文件中,需要调用一些工具方法,所以需要将公共方法放在公共js中,供组件调用。步骤创建公共js创建utils.jssrc/common/utils.jsexport default { show:function () { console.log("公共方法"); }}在main.js引入公共js// 引用公共jsimpo...

2019-01-05 23:13:36 4147 2

原创 关于CSS居中(水平/垂直)问题总结

由于前端代码写的少,很多细节上的东西处理的不够熟练。最近关于CSS居中问题折腾了一下,特此总结。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>DIV内容居中</title><

2018-04-13 17:26:17 163

原创 浏览器调起qq聊天窗口

在工作过程中遇到了点击一个链接,调起指定qq对话的窗口的需求。一开始搜了一下,发现很多都是无法使用的。最后找到了成功调起的方式,故在此记录。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</

2018-04-13 16:52:55 545

原创 CSS开发积累

@keyframes键帧,定义控件的关键帧。 @keyframes moveAndExchangeColor { 0% { top: 0px; width: 100px; height: 100px; background: yellow; } 100% { top: 400px; hei...

2018-04-11 17:59:40 190

原创 HashMap的缺点

大家都知道,HashMap通过计算hash值实现快速查找的的功能,所以查找效率特别高。但是有又多少人知道HashMap的缺点呢? 说HashMap线程不安全的,多线程中使用HashMap会出现线程安全问题,这确实是缺点之一,但是这次讲的是另外两种极端,这也是我面试过程中面试官提到的问题,特此在这里记录。 1. 每次计算hash值都是同一个值 我们知道,HashMap底层是通过数组和链表的数据...

2018-03-19 16:13:52 5280 3

原创 equals与==的区别?

equals和==的区别在面试中经常遇到,在此做一个总结==:是比较引用地址值是否相同,如果相同返回true,不相同返回false。 equals:是Object中的方法,如果子类没有覆盖,则比较的仍是引用地址值。public boolean equals(Object obj) { return (this == obj); }通常境况下,我们编写的...

2018-03-19 15:34:41 208

原创 【MySQL】悲观锁和乐观锁

在MySQL中,提供了悲观锁和乐观锁处理并发问题。悲观锁所谓悲观锁,是指对数据被外界修改保持悲观态度,在整个操作过程当中,数据保持锁定状态。MySQL提供了悲观锁加锁机制。 - 使用步骤//使用悲观锁select *from student where id = 931 for UPDATE;犹豫对“select *from student where id = 931...

2018-03-07 16:13:38 209

原创 【MySQL】基本语句

MySql基础数据库基本操作创建数据库CREATE DATABASE mydata查看数据库信息SHOW CREATE DATABASE mydata;+------------+-------------------------------------------------------------------+| Database | Cr...

2018-03-07 12:09:01 180

原创 【MySQL】基础概念

事务管理 事务就是针对数据库中的一组操作,可以有一条或者多条SQL语句组成, 同一个事务具有同步的特点,也就是事务中的所有语句要么都执行,要么都不执行。存储引擎MyISAM 提供了高速存储和检索与全文搜索的功能,该存储引擎插入速度快,但是空间和内存使用率较低。MEMORY 提供了“内存中”的表,该存储引擎所有数据都存储在内存中,所以在数据处理速度很...

2018-03-07 12:00:15 187

原创 线程池的种类和例子

线程池线程池作用就是限制系统中执行线程的数量。 线程池的作用1.减少创建和销毁线程的次数,每个工作线程可以重复利用2.可以调整线程池中工作线程的数量,减少系统的资源消耗;四种创建线程池的方法newCachedThreadPool :创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。ExecutorService c...

2018-03-06 23:04:33 512

原创 Math类的常用方法

Math类为我们提供了常用的数学运算操作,如三角函数,开方平方,绝对值等等。@Test public void Test1() { //三角函数和角度问题 System.out.println("sin(π/2):"+Math.sin(Math.PI / 2)); System.out.println("sin(90°):"+Math.signum(90)); ...

2018-03-06 18:53:14 3159

原创 【源码分析】HashMap和HashTable的区别

HashMap和HashTable1.继承父类不同 Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口。public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, S...

2018-03-06 11:46:27 131

原创 [问题解决]关于Maven项目中无法加载MyBatis映射文件解决办法

通常在使用MyBatis时我们会吧映射文件如UserMapping.xml放在源码中,但是在Maven中编译后不会自动把xml文件复制到classes文件中,所以需要手动在pom.xml中设置<build> <resources> <resource> <directory>src/main/java</di...

2018-02-12 20:22:24 5234

原创 ajax异步请求

Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)XMLHttpRequest对象所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象。variable=new XMLHttpRequest();var xmlhttp;if (window.X...

2018-02-11 21:52:08 189

原创 正则表达式语法及应用

正则表达式概念 正则表达式(regular expression)常用于对文本数据进行检索,替换,提取和修改操作。 描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。语法语法规则要点 3个重要的正则式命令 括号,插入符号和美元符号括号在正则表达...

2018-02-10 21:54:21 262

原创 【vim】字符串替换

格式:[范围]s/[匹配]/[替换字符]/[c,e,g,i]说明 参数 说明 例子 范围 %代表当前文件;num1,num2吧表示从num1行到num2行 :1,3s/2/1/c(将1到3行中的2替换成1,并且手动确认) 匹配 可以是字符串,也可以是正则表达式 :%s/\d/a/c(将全文阿拉伯数字替换成字母a,并手动确认) 替...

2018-02-10 17:41:52 504

原创 Servlet线程不安全问题及解决办法

Servlet安全性问题当用户发送Http请求的时候,tomcat会读取web.xml中的内容,加载所定义的Servlet并实例化该Servlet.Servlet只实例化一次,tomcat中Servlet是单例的.同一个Servlet可以同时处理多个用户请求,比如同时有两个用户A和用户B登录时,会启动两个负责登录的Servlet线程,并且触发Service方法才处理请求.所以在Servlet处

2018-02-05 10:23:25 3737

原创 【Struts2】基础

MVC模型(Model)-视图(View)-控制器(Controller),通常简称MVC,是一种开发web应用程序的软件设计模式。模型——属于软件设计模式的底层基础,主要负责数据维护。  视图——这部分是负责向用户呈现全部或部分数据。 控制器——通过软件代码控制模型和视图之间的交互。在MVC模式下,控制器接收了所有来自应用程序的请求后,调用模型去准备视图所需要的数据,然后视图

2018-01-31 15:29:29 522

原创 【Linux】Ubuntu设置静态IP

Ubuntu局域网设置静态IP 通过修改NetManager中的连接信息实现静态IP的设置(也可以通过桌面设置)步骤打开NetManager中的system-connectionscd /etc/NetworkManager/system-connections修改连接信息sudo vim TP-LINK_2C40配置信息如下id=TP

2018-01-25 02:47:59 402

原创 【Java】中文乱码探究

首先要明确,中文出现乱码的原因是编码和解码不一致导致的。中文乱码出现的情景字节与字符I/OJavaWeb数据库字节与字符 /** * 编码方式和解码方式不一致导致乱码 * @throws UnsupportedEncodingException */ @Test public void stringCharSetTest() throws Un

2018-01-18 16:46:55 200

原创 【Java】关于文件路径问题总结

虽然文件路径在项目中不是经常的用到,用到的时候却不能灵活的使用,故在此总结。绝对路径和相对路径绝对路径:绝对路径是指文件在硬盘上真正存在的路径。 相对路径:相对于当前用户目录的相对路径获取当前路径的方法System.getProperty(“user.dir”)函数获取当前路径 //获取当前用户的路径 String path = System.g

2018-01-18 14:58:15 4633

原创 【Java学习笔记】Socket

Tomcat(1)概念Tomcat用于对外提供web服务的服务器;(2)目录结构结构及用途 文件夹 说明 bin 启动和关闭tomcat的批量配置文件 conf 存放tomcat的配置文件server.xml:用于配置server的相关信息,比如tomcat动端口,配置host,配置Context即Web应用。web.xml:用于

2018-01-16 21:32:21 167

原创 【Linux】常用命令积累

查看端口号netstat -anp|grep 80列出80端口的所有进程查看当前的进程ps -ef 显示所有进程并做一个完整的输出 grep全面搜索正则表达式并把行打印出来。-c :计算找到 '搜寻字符串' 的次数 -i :忽略大小写的不同,所以大小写视为相同 -n :顺便输出行号 -v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那

2018-01-16 16:29:51 386

原创 【Java学习笔记】JDBC

JDBC学习笔记重编(1)概念Java Database Connectivity(java 数据库连接)sun公司定义的一套访问数据库的规范(接口+类)。主要放在java.sql/javax.sql包中。(2)步骤加载JDBC驱动程序提供参数连接建立一个数据库的连接创建一个statement执行SQL语句处理结果关闭JDBC对象package na

2018-01-13 19:30:14 164

原创 【Java Web学习笔记】Servlet

Servlet(1)Servlet与Tomcat的关系图略(2)概念不能独立运行,要依赖于Web容器的一种Java服务器程序。(3)Servlet开发的三种方式需求: 1.进行Servlet开发,tomcat服务器向客户端发送信息。 步骤: 1.创建web应用。 2.将Servlet部署到web.xml1. 实现Servl...

2018-01-12 21:13:37 266

原创 【Java学习笔记】JVM内存模型

JVM内存模型++共享内存模型来实现多线程之间的信息交换和数据同步的。++方法区和堆属于线程共享内存区,虚拟机栈,本地方法栈和程序计数器数据线程私有内存区。程序计数器程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。为了线程切换后能恢复到正确的执行位置,每个线程都需要有一个独立的程序...

2018-01-12 21:10:30 164

原创 【Java学习笔记】GC

java垃圾回收机制在Java中,开发人员无法直接在程序代码中清理内存,而是由垃圾回收器自动寻找不必要的垃圾对象,并且清理掉他们 主要明白三件事 1. 那些内存需要回收? 2. 什么时候回收? 3. 如何回收?哪些内存需要回收? 不可能再被任何途径使用的对象判断依据? 1. 引用计数算法 给对象中添加一个引用计数器,每当有一个地方引用...

2018-01-12 21:08:12 201

原创 【Java学习笔记】集合

集合集合(Collection):一种能够存储多个对象且长度可变的容器数组与集合的区别:数组是固定长度的,集合的长度可变数组存储的基本数据类型,集合存储的是引用数据类型数组不存在“键值对”,Set集合有一一对应的关系集合框架 集合类型 集合子类 集合实现类 Collection(单列集合) List(唯一具有增删改查)(有序,可...

2018-01-12 21:03:33 229

原创 【Java学习笔记】异常

异常(1)定义运行时发生的不正常现象,其实异常就是java通过面对对象的思想将问题封装成对象,有异常类对其进行描述。不同的问题进行不同的描述。 Java异常处理机制:当程序出现异常时,一个异常对象就会产生,并将其交给运行时系统来找寻相应的代码处理异常,从而确保不会对系统造成伤害。 异常有两种: 一种是运行时系统自己产生的异常(系统自己已经定义的异常,如数组角标溢出); 另外一种

2018-01-12 21:01:59 164

原创 【Java学习笔记】多线程

多线程线程与进程概念进程(process):是正在计算机中执行的程序。 线程(thread): 是进程中的某个单一的顺序的控制流。 注: 进程是应用程序的运行实例,自己享用独立的地址空间。线程是进程的细化,他是进程的实体。 进程是系统进行资源分配和调度的最小单位。线程是CPU调度和分派的最小单位。区别 从一个进程转换到另一个进程 ...

2018-01-12 21:01:07 160

原创 【Linux】查看已经连接WiFi的密码

查看已经连接wifi的连接信息 在LInux中,已连接的WiFi信息存放在/etc/NetworkManager/system-connections 目录下。cd /etc/NetworkManager/system-connectionsliushiyao@liushiyao-desktop:/etc/NetworkManager/system-connection

2018-01-11 22:48:39 5575

原创 【Linux】font安装

Linux字体的安装 Linux 的字体文件是放在/usr/share/fonts目录下的,如果需要安装字体,可以将ttf文件复制到该目录下的一个新建的子目录中,在该子目录中执行sudo mkfontscalesudo mkfontdirfc-cache -fv即可完成字体的安装

2018-01-08 22:36:13 2272

转载 【转载】Tmux-一款优秀的终端复用软件

文章作者: pzxbc 原始链接: http://blog.pzxbc.com/2016/03/30/tmux-usage/tmux是一个终端复用软件,它设计的更为简单和现代,欲取代GNU的screen。tmux可以让你在一个终端里新开多个窗口(类似XShell中的多标签),并且每个窗口还可以继续切分为更小的pane。在远程登录中,tmux会保存你的工作环境,不会因为连接断开而命令停止执行,

2018-01-07 16:12:34 1321

空空如也

空空如也

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

TA关注的人

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