自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(436)
  • 资源 (2)
  • 收藏
  • 关注

原创 BigDecimal工具类编写

1.在创建BigDecimal对象时,需要注意构造函数的使用。如果使用字符串或者字符数组、或者int整型等参数来创建BigDecimal对象,可以保证精度不会丢失;而如果使用浮点数或双精度数等参数创建BigDecimal对象,则可能会出现精度丢失的问题。因为部分浮点数计算本身就无法表示,所以在传入bigdecimal对象里的时候就已经丢失精度了。所以,在涉及到精度计算的过程中,我们尽量使用 String 类型来进行转换。

2024-03-05 20:01:53 346

原创 在Mac电脑的终端程序中打开进入指定的系统/文件目录

例如:想直接在终端中打开repository目录,可以使用open。

2023-09-05 17:10:36 1603

原创 Java stream求和以及mapToDouble sum精度丢失解决办法

在 Java 8 中,合并流的元素并产生单个值。其中double求和会丢失精度,可以使用。

2023-09-05 16:00:45 1947

原创 Mac下IntelliJ IDEA快捷键

⌘ Command⇧ Shift⌥ Option⌃ Control⌫ Delete⌦ 向前删除键(Fn+Delete)↑ 上箭头↓ 下箭头← 左箭头→ 右箭头End Fn + →⇥ 右制表符(Tab键)⇤ 左制表符(Shift+Tab)快捷键。

2023-06-20 16:01:43 763

原创 MySQL update set 语句中,与 and的区别

这是因为MySQL 在语法上,并不认为 and 这个用法是错误的,那么说明 MySQL 用另外的方式“解读”了这个语句。最容易想到的,就是 MySQL 是不是在 set 的时候,把 and 解释成了逻辑运算符,而不是英文意义上的“和”?(70 and non_standard_duration = 5)中的70不为0所以为true,non_standard_duration=5和表中的值是相等的,所以也为true,所以整个表达式的值为true,因此最终standard_duration的值为1(true)

2023-05-05 11:18:05 371 1

原创 java8 List根据元素对象属性去重

使用Collectors.collectingAndThen链式对List根据元素对象属性去重。

2022-12-02 11:16:57 6726

原创 在Mac上查看文件在终端中的绝对完整路径

我们在mac访达里面看到的文件,想知道在终端里面的绝对路径。我想知道上图中的文件在终端中的绝对路径。

2022-10-13 10:34:36 4863

原创 GitLab revert 导致新提交 merge 代码丢失(diff丢失)

你将本地的原分支feature_xxx代码修改后提交到远程分支,发起Merge到Master的申请会发现,feature_xxx分支和master分支的差异commit只有feature_xxx分支revert后的提交记录(之前的代码变动都没有了)是因为对于master而言,已经合并过feature_xxx,master包含feature_xxx的commitid,这些提交不会参与diff,所以不会显示出两个分支的不同。然后将代码提交到你原分支的远程分支feature_xxx。...

2022-07-18 14:37:45 2919

转载 Go select死锁分析

首先进入要上传代码的目录,例如,我要将test文件夹下的代码上传到gitlab,则,cd test1通常需要创建README.md文件,echo "# test" >> README.md1执行git命令,此命令会在当前目录下创建一个.git文件夹,git init将项目的所有文件添加到仓库中,git add .这个命令会把当前路径下的所有文件,添加到待上传......

2022-07-15 16:56:35 186

原创 Go struct和map转化为JSON串

struct和map转化为json串主要就是由于map无序,转化后的json串key是无序的如果参数是接收一个参数,那么通过结构体和map转化都是可以的代码示例:package mainimport ( "encoding/json" "fmt")type Person struct { Name string `json:"name"` Age int `json:"age"` Like []string `json:"like"` //不加`json:"like"

2022-05-17 16:54:43 858

原创 Go 常见使用问题记录

1.字符串分割,如果对""空字符串分割会怎么样func main() { str := "" sList := strings.Split(str, ",") fmt.Println(sList) if sList == nil { fmt.Println("分割空字符串后列表为空") } else { fmt.Println(fmt.Sprintf("分割空字符串后列表不为空,列表长度为:%d", len(sList))) for index, value := range s

2022-04-19 15:07:53 1097

原创 Go 字符串时间等相互转化以及时间加减等操作

1.获取当前时间的第二天零点时间,以及获取当前的23:59:59 的时间戳和date类型:package mainimport ( "fmt" "time")func main(){ timeStr := time.Now().Format("2006-01-02") fmt.Println(timeStr) //使用Parse 默认获取为UTC时区 需要获取本地时区 所以使用ParseInLocation t2, _ := time.ParseInLocation("2006-

2022-04-19 10:33:44 2847

原创 Go版本升级

需求:将Go版本升级到1.15版本中的最新版,例如我升级的时候1.15中最新的是版本是1.15.15升级步骤:先执行Go卸载brew uninstall go执行升级命令brew install [email protected]配置环境变量:# 编辑 ~/.zshrc文件,加入下面两行export GOPATH=$HOME/goexport PATH=$GOPATH/bin:$PATH# 保存后执行使配置立刻生效source ~/.zshrc然后执行:brew li.

2022-04-02 11:40:49 1322

原创 Mac使用brew安装Python3.*并设为默认版本

mac系统虽然默认打开的是python2,但是也默认自带了python3,只要在终端用命令python3就会打开python3下面讲的是用brew安装最新的python3brew install python3可以看到python3的实际安装目录是/usr/local/Cellar/[email protected]/3.9.12打开配置文件并写入python的外部环境变量open ~/.bash_profile然后写入:export PATH=${PATH}:/usr

2022-03-29 22:12:59 10699

原创 redis 为什么对数字/字符串append操作后,编码格式object encoding从int/embstr变成raw了

不单单int编码类型(type是string),进行字符串操作后,会自动转码为raw;对普通的短字符串(长度小于等于44个字节)进行append操作后,编码格式也会发生改变(即使操作后长度还是小于等于44个字节也会由原来的embstr变成raw)!embstr存储形式将 RedisObject 对象头和 SDS 对象连续存在一起,使用 malloc 方法一次分配。redis 3.2之后empstr只能容纳44字节:​​​​embstr的最小占用空间为19(16+3),而64-19-1(结尾的..

2022-02-14 14:55:32 973

原创 Mac环境下使用CLion调试redis 6.X源码

1.下载并安装CLion下载地址:Download CLion: A Smart Cross-Platform IDE for C and C++2.打开CLion并导入redis源码源码地址:https://github.com/redis/redis选择自己要下载的版本,我这里下载的6.2.1导入CLion步骤:将上图中复制的地址导入CLion,或者下载ZIP包然后解压后导入,这步骤很简单2.进行编译构建这一过程有可能出现下面的错误:...

2022-02-11 11:33:02 1584 1

原创 MySql 连接查询中 on 和 where 的区别

大家可以先看MySQL:left join 避坑指南看过之后再接着看下面在多表查询时,ON和where都表示筛选条件,on先执行,where后执行。 on 后跟连接条件,然后再加的筛选条件只针对关联表(从表) 执行顺序:从表按照条件筛选,然后再进行连接;即先筛选再连接 where 则针对连接后产生的临时表进行筛选 执行顺序:先连接再筛选 区别:外连接时,on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。而where条件是在临时表生.

2022-01-21 16:52:44 4173 1

转载 go 格式化输出

官方英文:https://golang.org/pkg/fmt/【简介】  fmt 包实现了格式化 I/O 函数,类似于 C 的 printf 和 scanf。格式“占位符”衍生自 C,但比 C 更简单。【打印】占位符:[一般]  %v 相应值的默认格式。在打印结构体时,“加号”标记(%+v)会添加字段名  %#v 相应值的 Go 语法表示  %T 相应值的类型的 Go 语法表示  %% 字面上的百分号,并非值的占位符[布尔]  %t 单词 true 或 fal.

2022-01-05 21:07:42 476

原创 MySQL redo和binlog

redo log用来保证事务的持久性redo概念可以参考:MySQL · 引擎特性 · InnoDB redo log漫游mysql是如何保证一致性的呢?最简单的做法是在每次事务提交的时候,将该事务涉及修改的数据页全部刷新到磁盘中。但是这么做会有严重的性能问题,主要体现在两个方面:因为Innodb是以页为单位进行磁盘交互的,而一个事务很可能只修改一个数据页里面的几个字节,这个时候将完整的数据页刷到磁盘的话,太浪费资源了! 一个事务可能涉及修改多个数据页,并且这些数据页在物理上并不...

2021-12-31 11:09:11 1145 1

转载 Mac下安装Redis

使用Homebrew安装Redis(1)安装命令:brew install redis(2)查看软件安装及配置文件位置Homebrew安装的软件会默认在/usr/local/Cellar/路径下;redis的配置文件redis.conf存放在/usr/local/etc路径下(3) 启动redis服务方法一:brew除了可以帮助我们安装软件以外,还可以帮助我们启动软件brew services start redis方法二:redis-server /usr

2021-09-01 20:49:32 213

原创 Go 排序

示例代码:import ( "fmt" "sort")type Person struct{ name string age int8}type PersonSortList []Personfunc (p PersonSortList) Len() int { return len(p)}func (p PersonSortList) Swap(i, j int) { p[i],p[j] = p[j],p[i]}func (p PersonSortList

2021-08-30 21:04:05 132

原创 go 打印 %v %+v %#v 的区别

v 值的默认格式%+v添加字段名(如结构体就先输出结构体的字段类型,再输出该字段的值)%#v 相应值的Go语法表示代码示例:package mainimport ( "fmt")type EqStruct struct{ Name string Age int32}func main(){ e1 := EqStruct{} e1.Name = "2" fmt.Printf("e1=%v \n", e1) //如果值是一个结构体,%+v...

2021-07-23 16:44:42 927

原创 Intellij idea中修改git账号名

Intellij idea中修改git账号显示名(也即git提交代码的作者名字)可以通过git config user.name查看当前的用户名。修改git代码提交人显示的信息,可以使用如下命令在idea的Terminal中执行:git config --global user.name "xxx"...

2021-06-28 20:24:18 1119

原创 从数据库中分批取数据进行处理

思路1:用分页查询的方式取先查询出要处理的总数据量 count,然后假设每批要处理100条,代码 //获取可push的记录进行发送消息 private void getData(){ //查出总数据量 long count = xxxMapper.countByExample(example); int pageSize = 100; long pageNum = count / pageSize; l

2021-05-20 20:15:23 1719

原创 git将本地分支与远程分支建立联系

关联命令:git branch --set-upstream-to=origin/<branch> <localbranch>

2021-04-14 15:26:19 794

原创 Go time.Time比较时间大小

可以将待比较的时间格式化成相同格式的字符串,然后使用time的Before, After, Equal 方法即可.例子:func main(){ time1 := "2021-03-19 09:23:29" time2 := "2021-03-20 08:50:29" //先把时间字符串格式化成相同的时间类型 t1, err1 := time.Parse("2006-01-02 15:04:05", time1) t2, err2 := time.Parse("2006-01-02 1

2021-03-19 14:20:25 25756

原创 python将列表转化为字典结构,相同Key的放入value列表中

将列表按照其中元素对象的某一属性为key转化为字典结构,相同Key的对象放入value列表中代码示例:# coding=utf-8import jsonclass Person: def __init__(self, name, age, id): self.name = name self.age = age self.id = id def __str__(self): return '姓名:%s 年龄.

2021-02-07 10:48:50 2035 1

原创 Go time获取本周一\下周一\下周日

主要用到了AddDate对时间进行加减天数,time.Weekday()得到今天是周几,周日对应的是0,周一到周六对应1,2,3,4,5,6我们接下来的计算代码是一周从周一开始周日结束,既周一到周日为同一周。package mainimport ( "fmt" "time")func main(){ now := time.Now() lastMonday ,err:= GetLastWeekMonday(now,"20060102") lastSunday ,err:=

2021-01-10 20:21:20 4487

原创 有想加入字节跳动的吗

北京 上海 杭州 南京 深圳 成都都有岗位 ,开发 测试 算法 大数据 产品 运营 销售 等岗位都有,要求本科及以上学历,想来试试的把简历发我邮箱[email protected]

2020-12-02 11:10:30 311

原创 在Debian 8上使用Apt-Get安装Java

安装Java的最简单方法是使用Debian打包的版本。具体来说,这将安装OpenJDK 8先更新包索引命令:sudo apt-get update搜索jdk8安装包命令:apt-cache search java8结果:default-jdk - Standard Java or Java compatible Development Kitdefault-jdk-headless - Standard Java or Java compatible Development Kit

2020-11-16 17:39:22 1056

原创 给定一个正整数,找到由相同数字组成的下一个更大的数字

比如63543,这个数包含6,3,5,4,3,将这些数字重新组合以后,产生下一个较大的数字,那么就是64335。思路与代码:import java.util.ArrayList;import java.util.Comparator;import java.util.List;public class NextBigger { public static int getNextBigger(int num) { //将数字的每个位数转化为数组 i

2020-11-01 17:20:07 1293 1

原创 Dubbo invoke命令使用

首先使用telnet命令进入控制台命令:telnet ip 端口例如你的如果dubbo.protocol.port=29952那么就是 telnet localhost 2995然后使用invoke命令注入: 如果注入的是json 那就直接传入json串就ok了,如果是基础数据类型,也可以分别对应参数直接传 invoke XxxService.xxxMethod({“prop”: “value”}, 1, “1”) 如果注入的参数是对象(com.yunji.bigdata.po...

2020-10-15 11:50:53 8715

原创 Java 单例模式破坏与修复

破坏单例实现单例后,按照预期结果应该所有对象都是同一个对象。但是以下有几种情况可以破坏单例的性质。首先让单例类实现Serializable, Cloneable接口。通过序列化 、反射、克隆这三种方式破坏单例模式import java.io.*;import java.lang.reflect.Constructor;public class WreckSingleton implements Serializable, Cloneable{ private static

2020-10-12 11:39:40 500

原创 centos安装nodejs

1.从官网下载https://nodejs.org/en/download/2 将包上传到linux的/usr/local路径,解压安装包xz -dnode-v12.18.3-linux-x64.tartar -xvf node-v12.18.3-linux-x64.tar3 重命名mvnode-v12.18.3-linux-x64/ nodejs4.让npm和node命令全局生效vim /etc/profileexport PATH=$PATH:/usr/loca...

2020-09-14 15:33:54 449

原创 redis缓存穿透、击穿、雪崩解决方案

缓存穿透缓存穿透,是指查询一个数据库一定不存在的数据。正常的使用缓存流程大致是,数据查询先进行缓存查询,如果key不存在或者key已经过期,再对数据库进行查询,并把查询到的对象,放进缓存。如果数据库查询对象为空,则不放进缓存。例如:从缓存redis没有命中,需要从mysql数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。解决思路:如果查询数据库也为空,直接设置一个默认值存放到缓存,这样第二次到缓冲中获取就有值了,而不会继续访问数据库。设置

2020-09-03 14:45:09 366

原创 Dubbo服务引用(消费端)启动netty源码分析

本文主要讲启动netty源码分析,前面会讲一下服务引用到netty启动部分的源码流程。服务引用的入口方法为 ReferenceBean 的 getObject 方法public Object getObject() throws Exception { return get(); }然后到com.alibaba.dubbo.config.ReferenceConfig#get方法public synchronized T get() { if (destr

2020-08-17 17:22:27 711

原创 JAVA树形目录结构表并将其拼接成树形JSON

表结构:CREATE TABLE `t_node` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键id', `org_id` int(11) NOT NULL COMMENT 'id', `org_name` varchar(50) NOT NULL COMMENT '名称', `parent_id` int(11) NOT NULL COMMENT '父id', `type_level` int(11) NOT NULL

2020-08-05 17:55:09 2881

原创 bash: ./a.sh: /bin/bash^M: bad interpreter: No such file or directory的解决方法

直接执行下面命令来转化, 然后就可以执行./a.sh运行脚本了。sed -i "s/\r//" start.sh或者1先用vim 查看文件2然后在底部模式:set ff 查看文件格式3设置文件格式为unix:set fileformat=unix最后:wq! 强制保存或者可以使用dos2unix命令,dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的,对应的将UNIX格式文本文件转成成DOS格式的是unix2dos命令。最简单的用法就是dos..

2020-08-03 17:00:46 2152

原创 springboot-MyBatis集成源码

1、springboot注解@SpringBootApplication中的@EnableAutoConfiguration @EnableAutoConfiguration主要是通过AutoConfigurationImportSelector类来加载  分析mybatis也就首先从MybatisAutoConfiguration类分析(该类有Configuration注解,属于配置类)首先进入MybatisAutoConfiguration类:@org.springframewo..

2020-07-29 16:48:42 2300

原创 SpringBoot利用@Validated和@Valid进行校验参数

什么是ValidatorSpring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR-303规范),配合BindingResult可以直接提供参数验证结果。@Validated是@Valid的一次封装,不是规范。在检验Controller的入参是否符合规范时,使用@Validated或者@Valid在基本验证功能上没有太多区别。但是在分组、注解地方、嵌套验证等

2020-07-06 16:31:31 10220 1

图解HTTP(彩色高清带目录).zip

本书作者的写作手法平实易懂,内容讲解透彻到位。前半部分由 HTTP 的成长发展史娓娓道来,基于 HTTP 1.1 标准讲解通信过程,包括 HTTP 方法、协议格式、报文结构、首部字段、状态码等的具体含义,还分别讲解 HTTP 通信过程中代理、网关、隧道等的作用。接着介绍 SPDY、WebSocket、WebDAV 等 HTTP 的扩展功能。作者还从细节方面举例,让读者更好地理解何为无状态(stateless)、301 和 302重定向的区别在哪、缓存机制,等等。本书后半部分的重心放在 Web安全上,涵盖 HTTPS、SSL、证书认证、加密机制、Web 攻击手段等内容。旨在让读者对 HTTP 协议形成一个整体概念,明确设计 HTTP的目的及意义所在,了解 HTTP 的工作机制,掌握报文中常用的首部字段,返回结果状态码的作用,对各种客户端与服务器的通信交互场景的细节等都做到了然于心,从而在平时的开发工作中独立思考,迅速准确地定位分析由 HTTP 引发的问题,并辅以适当的方法加以解。

2019-06-24

elasticsearch权威指南高清中文pdf

Elasticsearch权威指南中文(最新版)pdf,高清,1. Introduction 2. 入门 i. 是什么 ii. 安装 iii. API iv. 文档 v. 索引 vi. 搜索 vii. 聚合 viii. 小结 ix. 分布式 x. 结语 3. 分布式集群 i. 空集群 ii. 集群健康 iii. 添加索引 iv. 故障转移 v. 横向扩展 vi. 更多扩展 vii. 应对故障 4. 数据 i. 文档 ii. 索引 iii. 获取 iv. 存在 v. 更新 vi. 创建 vii. 删除 viii. 版本控制 ix. 局部更新 x. Mget xi. 批量 xii. 等等

2019-01-15

空空如也

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

TA关注的人

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