自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如何证明CPU使用了缓存行?

package com.example.demo;/** * description * * @author xichengxml * @date 2021-03-12 13:43:04 */public class CacheLineDemo { static int rowCnt = 1024 * 1024; static int colCnt = 16; // 单个缓存行64byte, int占4byte,每行16个int,占一个缓存行 // 结构

2021-03-12 14:10:31 316

原创 为什么重写 equals 时必须重写 hashCode 方法

hashCode介绍hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个 int 整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。 hashCode() 定义在 JDK 的 Object.java 中,这就意味着 Java 中的任何类都包含有 hashCode() 函数。散列表存储的是键值对(key-value),它的特点是:能根据“键”快速的检索出对应的“值”。这其中就利用到了散列码!(可以快速找到所需要的对象)为什么要有 hashCode我们以“HashS.

2021-01-30 15:11:55 426

原创 String StringBuffer 和 StringBuilder 的区别

可变性简单的来说: String 类中使用 final 关键字字符数组保存字符串, privatefinal char value[],所以 String 对象是不可变的。而 StringBuilder 与StringBuffer 都继承自 AbstractStringBuilder 类,在 AbstractStringBuilder 中也是使用字符数组保存字符串 char[]value 但是没有用 final 关键字修饰,所以这两种对象都是可变的。StringBuilder 与 Strin.

2021-01-30 15:10:22 310

原创 java容器学习(二)-- CopyOnWriteArrayList

继承结构特性简介在同一时间段内的更新操作会自动同步,通过JVM机制来实现,每次更新都会创建一个新的ArrayList副本。不影响读操作因为每次更新都会创建副本,写操作比较耗资源。因此该容器主要用于读操作频繁的场景底层数据结构是可变数组ArrayList的线程安全版本允许保存重复、空、不同的Object元素该容器的Iterator不支持remove()操作,否则会抛出UnsupportedOperationException。该容器的Iterator不会抛出ConcurrentModifi

2020-11-28 09:16:40 186 1

原创 java容器学习(一)

整体了解java容器及其分类分类对比Collection与Map:Collection只有值,Map是key-value形式List与Set:List允许元素重复,Set不允许Queue主要用于高并发场景CopyOnwrite主要用于读多写少的场景其他为什么没有ConcurrentTreeMap答:因为树状结构上锁比较麻烦跳跃表结构参考简书:https://www.jianshu.com/p/60d2561b821c...

2020-11-28 08:25:09 103

原创 并发编程之信号量--Semaphore

package com.example.demo;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;import java.util.concurrent.TimeUnit;/** * description * * @author

2020-10-28 15:20:21 123

原创 sentinel教程2

上一篇手动加载规则需要耗时90ms,考虑性能问题,提前初始化规则package com.example.demo;import com.alibaba.csp.sentinel.slots.block.RuleConstant;import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;import java.

2020-10-28 15:18:53 113

原创 sentinel使用教程1

package com.example.demo;import com.alibaba.csp.sentinel.Entry;import com.alibaba.csp.sentinel.SphU;import com.alibaba.csp.sentinel.slots.block.BlockException;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.TimeUnit;/** * description

2020-10-28 15:16:30 1022

原创 Linux vim常用指令

n :向后找;N:向前找

2020-09-20 07:48:08 106

原创 如何快速检出多个git项目并删除无用的本地分支

import osdef delete_not_master_branch(): result = os.popen("git branch") git_branches = result.read() for git_branch in git_branches.splitlines(): if git_branch != '* master': print(git_branch) os.system('git

2020-05-29 11:40:33 243

原创 git控制台避免每次输入密码

执行一次git config --global credential.helper store,然后git pull,输入密码,下次再pull就不需要输入密码了清密码 git config --global credential.helper wincred

2020-05-29 11:09:18 280

原创 常用工具jar包

lombok dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <scope>provided</scope> </d.

2020-05-16 22:29:52 209

原创 linux centos 清理磁盘

首先使用 df -h 命令查看磁盘剩余空间接下来我们可以进入空间占用最大的目录,使用du -h --max-depth=1查看当前目录占用,然后一级一级进行确认,删除可以确定的大文件即可很多人遇到一种情况,du的时候看不到任何大文件了,但是磁盘空间仍然被占用了很多,这个时候,你要看看哪些文件被哪些进程打开了lsof |grep delete如出现这个情况,把对应的pid给kill,或者...

2020-04-21 16:25:17 700

原创 StringUtils工具类的bug

问题代码如下:String[] arr = StringUtils.split("C3uECspP2J2d12345", "(&nbsp)");System.out.println(Arrays.toString(arr));打印结果为: [C3uEC, P2J2d12345]线上问题,过程不多描述;建议慎用工具类可以直接采用:“C3uECspP2J2d12345”.split...

2020-04-16 09:36:01 313

原创 使用git管理本地分支

项目开发久了,ide中会有很多本地分支,手动一个个去删除有点费力气,可以通过git命令快速删除本地分支切换目录cd your-project-name查看所有本地分支git branch删除本地分支git branch -d your-branch-name...

2020-03-24 09:51:03 303

原创 Notepad++添加读取十六进制插件HexEditor

下载地址:https://github.com/chcg/NPP_HexEdit/releases安装方式:下载压缩包,例如:HexEditor_0.9.5.19_x64.zip解压到本地目录,将文件夹更名为HexEditor打开Notepad++,选中插件,打开插件文件夹,把整个目录复制过去,一定要带目录重新打开软件,选中插件选项,可以看到view in hex选项...

2019-12-19 23:37:18 1040

原创 字节顺序的大端和小端

例如变量x类型为int,位于地址0x100处,它的值为0x01234567,地址范围为0x100~0x103字节,其内部排列顺序依赖于机器的类型。大端法从首位开始将是:0x100: 01, 0x101: 23,…。而小端法将是:0x100: 67, 0x101: 45,…。...

2019-12-19 23:34:13 162

原创 在springboot中去除get请求和post请求中的空格

controllerpackage com.example.demo.web;import lombok.Getter;import lombok.Setter;import org.springframework.web.bind.annotation.*;/** * description * @author xichengxml * @date 2019-12-03 ...

2019-12-03 21:44:47 2275 1

原创 使用idea替代navicat做客户端管理mysql数据库

我们通常都是使用navicat等客户端管理数据库,但是这样的话在测试程序时需要不断的在idea和navicat之间切换,好在idea给我们提供了一种查询数据的快捷方式,可以直接连接和管理数据库连接方式如下:1.2. 注意:这一步需要手动安装driver,从driver处点进去点下载即可3. 连接完成后,配置一下显示的库4. 配置完成后,打开控制台,选择要查询的数据库,5. ...

2019-11-10 09:54:12 2984

原创 jvm dump日志设置

阿里java手册华山版第39页:【推荐】 给 JVM 环境参数设置-XX:+HeapDumpOnOutOfMemoryError 参数,让 JVM 碰到OOM 场景时输出 dump 信息-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOGS_DIR/jvm_dump.log...

2019-11-09 16:28:37 1651

原创 一张图说明白消息队列

Producer:消息生产者,负责产生和发送消息到 Broker;Broker:消息处理中心。负责消息存储、确认、重试等,一般其中会包含多个 queue;Consumer:消息消费者,负责从 Broker 中获取消息,并进行相应处理;...

2019-11-09 16:14:38 392

原创 win10点击超链接无法跳转到浏览器

折腾了两天,各种百度google没找到解决方案,后来通过自己灵光一现解决了,解决方式:重新设置一下默认浏览器:打开windows设置功能,选择应用将默认浏览器设置为其它浏览器,然后再切换回来,设置完成后重启即可...

2019-11-09 16:11:07 23980 33

原创 如何在对外接口中合理地使用枚举

首先贴出阿里java开发手册华山版第39页的一句话【强制】 二方库里可以定义枚举类型,参数可以使用枚举类型,但是接口返回值不允许使用枚举类型或者包含枚举类型的 POJO 对象关于这句话,讲一个业务场景:近期因业务发展,我们的一个系统需要增加一个枚举值,而某个接口的返回值直接使用了这个枚举。于是需要通知上游接口同步升级jar包,联调,上线。试想,如果这个枚举被10个接口使用,每个接口有10个上...

2019-10-30 20:35:04 2905

原创 使用idea创建一个可执行jar包

创建项目编写代码,本地调试代码结构代码package com.xicheng.swing;/** * description * * @author xichengxml * @date 2019-10-25 23:15 */import javax.swing.*;import java.awt.*;import java.awt.event.MouseAd...

2019-10-26 10:47:49 717

原创 如何查看自己的web项目中有多少Controller方法

示例代码如下:package com.example.demo;import org.apache.commons.lang3.ArrayUtils;import org.apache.commons.lang3.StringUtils;import org.junit.Test;import org.springframework.stereotype.Controller;imp...

2019-10-23 09:26:14 744

原创 git查看、修改本地账号和邮箱

打开git bash控制台,查看所有信息$ git config --list单独查看用户或邮箱信息$ git config user.name$ git config user.email修改用户信息或邮箱信息$ git config --global --unset user.name "yourName"$ git config --global --unset...

2019-10-15 23:40:35 5406

原创 记一次线上int溢出问题

今天吃完饭会办公室,突然接到群里的bug,线上预算数据出现了负值,如图于是一路奔回办公室,各种分析日志逻辑,分析了5个小时无果,因为印象中int的范围是21亿,而负值末尾是非零,因此一开始就否定了是int溢出的问题后来还是其他小伙伴看到了代码问题,原代码如下(左边是修改前的,右边是修改后的)我的入参是75100000.00元,乘以100转为分,70亿,所以产生了溢出于是仔细分析int...

2019-10-12 00:34:13 183

原创 在pycharm中安装使用numpy

由于安装时花了较长时间,在此记录一下,避免下次踩坑环境:windows 10 64位python 3.6pip3以下命令在windows控制台下执行,不建议采用pycharm的terminal有可能安装时提示需要升级pip,You are using pip version 10.0.1, however version 19.1 is available.使用系统提...

2019-10-06 16:18:20 6106 1

原创 happens-before的官方解释

直接先把官方的内容粘贴过来,后续有时间翻译整理,参考链接https://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.4.5Two actions can be ordered by a happens-before relationship. If one action happens-before another,...

2019-10-03 15:39:26 638

原创 springboot+vue+element实现前后不分离的应用开发

springboot和vue是当前比较流行的前后端技术,也是部分大厂的主流架构。二者实现结合有三种方式:前后不分离,通过引入的方式使用vue,也就是本文实现的方式前后半分离,前后端项目写在一个项目里,分别搭建工程,可以参考:https://github.com/xichengxml/springboot-vue-template,前端项目也通过tomcat部署管理,后端工程师使用起来比较得心...

2019-09-22 11:55:04 26292 8

原创 svn项目迁移git,以及git库迁移

svn迁移git:将svn代码克隆到本地: git svn clone http://fakesvn.com/fakerepo/fakebranch --no-metadata进入到项目文件夹,关联到git:git remote add origin http://fakegit.com/git/fakerepo.git提交:git push -f origin master:fakebr...

2019-07-31 17:18:01 221

原创 Idea运行项目时JVM调整

idea有时候运行项目过多,会报perGen out的错误,调整参数如下:-Xms1024M -Xmx2048M -XX:PermSize=128M -XX:MaxPermSize=256M参数解释:

2019-07-31 17:05:13 1393

原创 后端工程师的vue课(二)----如何理解插槽slot

slot的意思是插槽,想想你的电脑主板上的各种插槽,有插CPU的,有插显卡的,有插内存的,有插硬盘的,所以假设有个组件是computer,其模板是<template><div> <slot name="CPU">这儿插你的CPU</slot> <slot name="GPU">这儿插你的显卡</slot> &l...

2019-06-26 23:42:36 487

原创 win10环境变量path变为旧版

在环境变量最前面加%SystemRoot%\system32即可

2019-06-26 15:58:35 936

原创 win10 64位多个JDK版本之间切换

以下方法操作一步试一下切换环境变量找到目录C:\Windows\System32,将java.exe,javaw.exe,javaws.exe删除即可。如果是64位系统,在C:\Windows\SysWOW64下去删。找到 HKEY_LOCAL_MACHINE–SOFTWARE–JavaSoft,点击Java Development Kit 更改右边 CurrentVersion的值设置为...

2019-06-26 15:56:35 265

原创 后端工程师的vue课(一)----封装一个组件

引入vue.js编写一个div标签,并用new Vue进行初始化在这个标签内写一个input框,并绑定info属性写一个button按钮,绑定一个点击事件基于li封装一个todo-item组件,里边写一个属性value,绑定一个叫item-class的class属性在ul中使用todo-item组件,将list中的值遍历出来赋给todo-item设定全局class属性的color为r...

2019-06-24 22:38:47 325

原创 idea热部署插件-JRebel安装使用

首先去插件商店下载JRebel for IntelliJ,下载完成后重启Idea破解:破解步骤暂不展示,后续补充配置工程更新策略(在tomcat或其他):配置编译策略配置,选择help→find action输入registry,跳到配置页面设置下面的选项修改项目代码,测试热更新效果...

2019-06-24 16:21:08 529

原创 elasticsearch入门系列7----补全功能(completion suggester)

建索引PUT business_line{ "mappings": { "business" : { "properties" : { "name" : { "type" : "completion", "analyzer": "i...

2019-06-22 21:36:41 1916 1

原创 elasticsearch入门系列6----analyzer分词器功能

内容暂缺,记录一下ik分词器的安装安装(记得把v后面和ik后面的版本号换成与自己es兼容的版本即可)[root@localhost elasticsearch-5.5.2]# ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.5...

2019-06-22 17:15:59 246

原创 elasticsearch入门系列5----java api操作es

遇到的问题:java.lang.nosuchfielderror shared解决:添加了包依赖 <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> ...

2019-06-21 09:44:59 191

空空如也

空空如也

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

TA关注的人

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