学习笔记
文章平均质量分 78
程熙cjp
所有命运馈赠的礼物,都早已在暗中标好了价格。
展开
-
mysql比较行实现
mysql行比较,通过定义自定义变量@rownum来处理。原创 2023-02-22 11:38:28 · 914 阅读 · 0 评论 -
Jupyter介绍和安装使用
Jupyter Notebook是一款开源的web应用,支持markdown编辑,可以使用JupyterNotebook来创建一个技术分享的文档,也可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示的程序。原创 2022-11-22 01:47:20 · 2139 阅读 · 0 评论 -
Linux下部署worldPress
Linux下部署worldPress简易教程原创 2022-06-26 16:35:02 · 889 阅读 · 1 评论 -
HashMap原理机制详解,二十三问。
最近看到一篇对于hashmap描述不错的文章,特此记录分享下。HashMap作为我们熟悉的一种集合,可以说是面试必考题。简单的使用,再到原理、数据结构,还可以延伸到并发,可以说,就一个HashMap,能聊半个小时。1.能说一下HashMap的数据结构吗?JDK1.7的数据结构是数组+链表,JDK1.7还有人在用?不会吧……说一下JDK1.8的数据结构吧:JDK1.8的数据结构是数组+链表+红黑树。数据结构示意图如下:其中,桶数组是用来存储数据元素,链表是用来解决冲突,红黑树是为了转载 2022-03-05 21:12:16 · 678 阅读 · 0 评论 -
Linux上部署kubernetes
一. 前言:本次小熙分享下Linux上部署kubernetes。二. 准备环境:准备三台Linux服务器(这里小熙准备的是虚拟机):检查服务器的版本,本次配置要求在centos7.5版本或者以上版本[root@k8s-master etc]# cat /etc/redhat-releaseCentOS Linux release 7.6.1810 (Core) 为了以下流程理解方便,在每个节点的hosts文件上配置对应地址映射 :vi /etc/hosts192.168.18原创 2022-01-11 21:35:56 · 1376 阅读 · 0 评论 -
Linux下部署docker,并运行应用等
一. 前言:这次小熙分享下docker的部署,和对应用jar的镜像生成和访问。二. 环境和准备环境和项目:还是沿用之前apollo中的(java 8、centos7、user-service)准备:(1)Docker要求CentOS系统的内核版本高于 3.10 ,通过下面的命令查看你当前的内核版本是否支持docker uname -r小熙的版本如图所示:(2)更新yum包:sudo yum update成功如图所示:(3)安装需要的软件包,yum-util 提供yum原创 2021-12-15 19:21:31 · 2120 阅读 · 1 评论 -
Forest 使用简介
一. 背景:最近小熙在写对接,涉及到一些远程调用,用的是httpclient实现的,但是觉得有些麻烦。有没有封装过的框架,让操作更方便呢,有的比如:Forset。介绍:Forest 是一个开源的 Java HTTP 客户端框架,它能够将 HTTP 的所有请求信息(包括 URL、Header 以及 Body 等信息)绑定到您自定义的 Interface 方法上,能够通过调用本地接口方法的方式发送 HTTP 请求。好处:使用 Forest 就像使用类似 Dubbo 那样的 RPC 框架一样,只原创 2021-01-28 19:38:00 · 15309 阅读 · 8 评论 -
POI导入中的时间转换解决
一. 前言:刚才看到前段时间写的有关POI导入,时间转换问题。记录下。二. 问题:我们在使用POI导入的时候,时间往往是转换成了数值,而这个数值刚好是以一天24小时为单位计算的。如果导入的是包含年的,则是从1900年这个原点,开始计算的天数。如果是小时,则表达为这一天的百分比小数(根据小时)。三. 解决方法:// 将单元格的内容类型设置为字符串row.getCell(6).setCellType(Cell.CELL_TYPE_STRING);// 通过apache在HSSFDateUtil原创 2020-10-10 17:29:43 · 1264 阅读 · 0 评论 -
java中的print和printf的区别
一. 前言:小熙刚才输出打印快捷键的时候,看到有一个 printf 输出,好奇的试了下,发现和 print 输出结果一样不换行。但是小熙知道肯定不会有两个完全一样的输出打印,所以又查了下,记录下。二. printf介绍:printf() 原本是 C 语言标准库函数,用于将格式化后的字符串输出到标准输出。在java中 printf 还是打印, 但是继承了c语言的一些特性(格式化)printf("需要格式化的字符串", 输出表列):注意以下是对 printf 在 java 中使用的简化,如需查看原创 2020-10-10 14:27:22 · 6362 阅读 · 0 评论 -
Redsi通过geo计算距离
一. 前言前段时间,小熙赶项目比较忙。趁此机会记录下遇到的后端距离计算实现,app端会有实时的经纬度回传到Redis中,PC端和H5需要实时查看位置和距离,所以想下Redis是否支持此类计算。二. Redis的geo介绍版本支持: redis在3.2版本中开始支持geo功能命令介绍:(1) geoadd 添加地址 sms-center:5>geoadd cityLocationGeo 116.405285 39.904989 北京 1 sms-center:5&g原创 2020-09-20 15:11:51 · 678 阅读 · 0 评论 -
设计模式之观察者模式
一.前言:今天小熙有时间,写了下观察者模式,记录下。在23种设计模式中偏向于行为型模式。他主要指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,所以是对象行为型模式。二. 过程:图解:代码:import java.time.LocalDateTime;import java.util.ArrayList;import java.util.List;/** * 这里的观察者可原创 2020-09-03 18:19:57 · 129 阅读 · 0 评论 -
stream流根据对象指定字段去重或者获取重复数据
一. 前言:小熙最近看到以找的stream根据对象指定字段去重方法,想来分享下。试过其他的如转treeSet或map或分组,但是感觉都太麻烦了。二. 代码:封装类:import java.util.Map;import java.util.concurrent.ConcurrentHashMap;import java.util.function.Function;import java.util.function.Predicate;/** * 程熙cjp:https://blog原创 2020-09-02 15:51:34 · 23028 阅读 · 2 评论 -
幂等性注解,以及适配成启动类注解
一. 前言:在后端提供给前端接口之后,在某性场景下,如支付等。如果一个请求多次消费同一个接口,显然是错误的。这里显然就需要实现,多次消费和一次消费,是一样的结果了,这就和幂等性有关了。二. 前后端未分离编写:这由于架构的特殊性,小熙采用的是后端跳转页面并签发幂等性token,访问时再次校验。当然也有唯一索引、加锁、状态机等方法,看个人习惯吧。创建幂等性注解package com.chengxi.datalom.idempotent;import java.lang.annotation.E原创 2020-08-07 18:46:01 · 673 阅读 · 0 评论 -
Redis详解持久化机制
小熙前段时间时间写了Redis的存储机制,接着再说下持久化机制吧,参考了其他大佬的精华和自己的理解。一. 为什么要持久化redis是非关系型的内存数据库,数据将被存储在内存中,所以Redis服务器进程退出或者运行Redis服务器的计算机停机,Redis服务器中的数据就会丢失。为了避免造成数据丢失,所以数据将被持久化到磁盘上(持久化机制),从而避免了数据的丢失,并且能很快的恢复之前的数据。Redis提供了两种持久化机制: 1. AOF持久化 2. RDB持久化 二. AOF持久化机原创 2020-05-22 00:24:37 · 264 阅读 · 0 评论 -
Swagger2基本注解介绍
一. 前言小熙在使用Swagger2的时候,喜欢和 Validated 注解一起使用,当然 valid 也不错。以下 Api 开头的注解请注意,以及看清使用的位置。二. 代码演示controller中代码package com.uthink.member.controller.cy;import com.uthink.member.entity.common.ResponseEn...原创 2020-02-22 19:40:13 · 1224 阅读 · 0 评论 -
集成分页插件pagehelper
一. 前言小熙这个项目是ssm的,之前使用的分页插件对sql的集合查找不支持,并且没有分页信息返回,所以小熙找了一个功能强大的分页插件pagehelper,当然springboot项目使用mybatis plus更爽。二. 导入依赖 <!-- pagehelper 相关依赖 --> <dependency> <...原创 2020-02-22 14:26:05 · 829 阅读 · 0 评论 -
swagger2整合maven项目和springboot项目
一. 前言最近小熙忙着赶项目,趁着周末记录一波,swagger2从基础的maven项目到springboot的配置。二. 整合maven项目(小熙的是ssm)导入依赖 <!--核心依赖--> <dependency> <groupId>io.springfox</groupId> ...原创 2020-02-22 12:54:16 · 1875 阅读 · 0 评论 -
GC回收之引用(强引用、软引用、弱引用、虚引用)
(1) 强引用是我们最常见,也是最熟悉的普通对象引用,如创建一个对象引用他(new 对象)。只要处于此种引用,该对象就表示永远不会处于不可及状态,GC就不会回收他,即使JVM内存空间不足,JVM宁愿抛OutOfMemoryError运行时错误(OOM),让程序异常终止,也不会靠回收强引用对象来解决内存不足的问题。原创 2020-01-01 02:41:41 · 2777 阅读 · 1 评论 -
Linux(centOS7)常用命令集合
最近小熙想回顾下Linux常用的命令,发现一片文章写得特别优秀(原地址),特此记录分享下。文件与目录操作 命令 解析 cd /home 进入 ‘/home’ 目录 cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd - 返回上次所在目录 cp file1 file2 将file1复制为file2 ...转载 2019-12-22 02:51:08 · 155 阅读 · 0 评论 -
Java是动态语言还是静态语言,是强类型还是弱类型?
一. 前言今天小熙突然想到一个问题,那就是Java到底是动态语言还是静态语言,是强类型还是弱类型呢?虽然知道但是还是不够深入,接下来就一起探讨下吧。二. 图释小熙碰巧看到一张,完美的区分了以上的问题如图所示,Java是强类型语言,静态类型。下面解释下为什么。三. 解释静态类型语言:变量定义时有类型声明的语言。(1)变量的类型在编译的时候确定(2)变量的类型在运行时不能修改这...原创 2019-10-31 23:25:09 · 9456 阅读 · 7 评论 -
jvm系列(一):java类的加载机制
1、什么是类的加载类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。类加载器并不需要等到某个类被“首次主动使用”时...转载 2018-10-03 14:45:19 · 153 阅读 · 0 评论 -
Java8新特性之Streams练习抒写笔记
一. 介绍:Stream是什么: - Stream是一个来自数据源的元素队列并可以进行聚合操作。 - 数据源:流的来源。 可以是集合,数组,I/O channel, 产生器generator 等 - 聚合操作:类似SQL语句一样的操作, 比如filter, map, reduce, find, match, sorted等Stream的两种分类: - Strea...原创 2019-05-07 15:16:27 · 406 阅读 · 0 评论 -
Java8新特性之Reduce练习抒写笔记
一. 简介:reduce–归约操作,函数依次作用于上一次函数的结果(有初始值则第一次为初始值)和流中的下一个元素例如:二. 操作:代码: package com.chengxi.java_new_characteristics.stream; import java.util.Optional; import java.util.stream.Stream; /**...原创 2019-05-07 15:31:05 · 216 阅读 · 0 评论 -
@Valid使用详解
小熙最近看项目,遇到不少之前没有用过的注解,特此查找大佬们的心得记录下,并与大家共享。 @Valid @Valid注解用于校验,所属包为:javax.validation.Valid。 一. 例子: 例子一:用于验证注解是否符合要求,直接加在变量user之前,在变量中添加验证信息的要求,当不符合要求时就会在方法中返回message 的错误提示信息。@...转载 2019-05-22 17:29:55 · 13275 阅读 · 2 评论 -
mybatis的left join多条件操作
一. 背景小熙在修改一个bug的时候,想直接在左连接后面加上条件,但是深思后发现在不同情况下却有数据不一致的问题。二. 过程小熙随机创建了 两张表一张学生表和另一张班级表(1) SELECT * FROM student;(2)SELECT * FROM classes;以学生表为左表对班级表进行 left join:SELECT * FROM student s LEF...原创 2019-08-26 02:24:57 · 8638 阅读 · 0 评论 -
Redis详解存储机制
小熙最近看了些 Redis 文章,和诸多大佬学习了很多,整理分享下。一、简介Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。(1)Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时...原创 2019-10-02 15:33:11 · 580 阅读 · 0 评论 -
mybatis的XML使用记录
一. 前言小熙之前使用的是mybatis的注解开发,加上通用mapper开发效率简直不要太快。现在在职的这家公司因为业务复杂,功能需求大多相似和重复等,所以一直使用的是XML开发,使用了一段时间其动态的灵活性和一些特殊的玩法,让小熙大开眼界,其实每种方法都有其独特的优势,只是所需发挥的场景不尽相同而已,下面就来分享下吧。二. Mybatis 来源简介MyBatis 本是 Apache 的...原创 2019-10-02 23:16:15 · 160 阅读 · 0 评论 -
ORM的1+N查询问题及解决办法
今天小熙学习资料,看到了一个有意思的问题,数据库查询的1+N问题。查了下资料,汇总下前人的经验,分享下。一. 1+N问题场景:基本场景 : Article(文章)关联Category(分类) class Category(models.Model): name = models.CharField(max_length=30) class Article(...原创 2019-05-06 17:54:53 · 613 阅读 · 0 评论 -
Java日期、时间处理代码
小熙就直接贴上时间和日期的简单操作了,先记录下。package com.chengxi.java_new_characteristics.code;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.boot.test.context.SpringBootTest;import...原创 2019-05-08 16:09:38 · 310 阅读 · 3 评论 -
Git 的简介、原理、使用
小熙最近看了下Git命令的操作,找到一篇不错的,分享记录下。概念Git --- 版本控制工具(命令)。工具介绍官方网站:http://git-scm.com工具下载地址:http://git-scm.com/download/git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。git是个工具,在linux里面也就类似gcc这样的工具...转载 2019-05-08 13:39:26 · 231 阅读 · 1 评论 -
jvm系列(三):GC算法 垃圾收集器
这篇文件将给大家介绍GC都有哪几种算法,以及JVM都有那些垃圾回收器,它们的工作原理。概述垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因此,我们的内存垃...转载 2018-10-11 00:22:50 · 122 阅读 · 0 评论 -
深入浅出Spring task定时任务
深入浅出Spring task定时任务在工作中有用到spring task作为定时任务的处理,spring通过接口TaskExecutor和TaskScheduler这两个接口的方式为异步定时任务提供了一种抽象。这就意味着spring容许你使用其他的定时任务框架,当然spring自身也提供了一种定时任务的实现:spring task。spring task支持线程池,可以高效处理许多不同的定时任...转载 2018-10-15 11:59:19 · 324 阅读 · 0 评论 -
Lucene使用详情笔记
1. 文档储存基本流程创建物理存储空间创建文档对象 (参数是储存物理空间,也可以是多个文档的集合类,即为创建多个文档写入)向文档中添加字段创建索引写出器的配置对象 (分词器版本号,分词器)创建索引写出器(第一个参数是配置对象,第二个参数是分词器)索引写出器把文档写入物理空间内(多个文档时是:indexWriter.addDocuments(document);)提交关流...原创 2018-09-28 10:56:51 · 234 阅读 · 0 评论 -
jvm系列(二):JVM内存结构
所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问题就会变的非常常见,了解JVM内存也是为了服务器出现性能问题的时候可以快速的了解那块的内存区域出现问题,以便于快速的解决生产故障。先看一张图,这张图能很清晰的说明JVM内存结构布局。JVM内存结...转载 2018-10-06 14:33:21 · 122 阅读 · 0 评论 -
如何使用RedisTemplate访问Redis数据结构详解
Redis 数据结构简介Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串)、List(列表)、Set(集合)、Hash(散列)和 Zset(有序集合)。下面来对这5种数据结构类型作简单的介绍:结构类型结构存储的值结构的读写能力String可以是字符串、整数或者浮点数对整...转载 2018-10-12 17:00:28 · 178 阅读 · 0 评论 -
Elasticsearch使用笔记(整合SpringBoot)
继上一篇Lucene使用笔记后继续介绍后端java代码对于elasticsearch的常用方法,我的elasticsearch版本是6.4的1. 配置文档po类和@Document、@Field解释首先想要和elasticsearch本地库联系就要创建最基础的文档po(相当于mysql和基础po类的关系一样)这里以Item类举例:@Document源码解释@Field源码解释2....原创 2018-10-02 17:43:17 · 11962 阅读 · 13 评论 -
Docker(六):Docker三剑客之Docker Swarm
继上第五篇Docker(五):Docker三剑客之Docker Machine后继续介绍三剑客之Docker SwarmDocker Swarm介绍Swarm在Docker 1.12版本之前属于一个独立的项目,在Docker 1.12版本发布之后,该项目合并到了Docker中,成为Docker的一个子命令。目前,Swarm是Docker社区提供的唯一一个原生支持Docker集群管理的工具它可以...转载 2018-10-02 02:03:52 · 369 阅读 · 0 评论 -
Docker(五):Docker三剑客之Docker Machine
上篇文章Docker(四):Docker三剑客之Docker Compose介绍了Docker Compose,这篇文章我们来了解Docker Machine。Docker Machine介绍Docker Machine是Docker官方编排(Orchestration)项目之一,负责在多种平台上快速安装Docker环境。Docker Machine是一个工具,它允许你在虚拟宿主机上安装D...转载 2018-10-02 01:58:26 · 323 阅读 · 0 评论 -
Docker(四):Docker三剑客之Docker Compose
前两篇文章我们介绍了Dockerfile的使用Docker(二):Dockerfile使用介绍,我们知道使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。服务编排有很多种技术方案,今天给大家介绍Docker官方产品Docker Compose。Dockerfile可以让用户管理一个单独的应用容器;而Compose则允许用户在一个模板(YAML格式...转载 2018-10-02 01:56:00 · 233 阅读 · 0 评论 -
Docker(三):Dockerfile 命令详解
上一篇文章Docker(二):Dockerfile 使用介绍介绍了 Dockerfile 的使用,这篇文章我们来继续了解 Dockerfile ,学习 Dockerfile 各种命令的使用。Dockerfile 指令详解1 FROM 指定基础镜像FROM 指令用于指定其后构建新镜像所使用的基础镜像。FROM 指令必是 Dockerfile 文件中的首条命令,启动构建流程后,Docker 将...转载 2018-10-02 01:51:10 · 198 阅读 · 0 评论