自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一个摩羯座的程序猿

分享Java项目问题解决、面试题、工具使用。

  • 博客(113)
  • 资源 (1)
  • 收藏
  • 关注

原创 java Socke服务端与客户端双向发消息

1.通信过程网络分为应用层,http、ssh、telnet就是属于这一类,建立在传输层的基础上、其实就是定义了各自的编码解码格式,分层如下:2.Socket连接上述通信都要先在传输层有建立连接的基础上才能完成,TCP通过三次握手建立连接: Socket与http的区别可以看下这个:https://www.cnblogs.com/meier1205/p/5971313.html还有搜索:http下午茶3.JAVA socket 客户端与服务端互发消息实现结构图: 客户端和服务端分别通过俩个线程来

2022-06-22 14:45:33 2014 1

原创 java实现Socket客户端向服务端发送信息

Socket什么是socket?socket字面意思其实就是一个插口或者套接字,包含了源ip地址、源端口、目的ip地址和源端口。但是socket在那个位置呢 ,在TCP/IP网络的四层体系和OSI七层好像都找不到他的影子,如下图所示, Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。一般由操作系统

2022-06-17 10:04:27 9502

原创 easypoi excel导入导出(多sheet)

一、导入jar包<!--EasyPoi导入导出--><dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>3.0.3</version> <exclusions> <exclusion>

2021-11-03 19:38:53 2302 3

原创 BigDecimal取整数

废话不多说直接上代码/*** * @Description: BigDecimal取整数 * @Param: [args] * @Author: yaohongan * @Date: 2021/10/18 13:47 */ public static void main(String[] args) { // ROUND_UP:非0时,舍弃小数后(整数部分)加1,比如12.49结果为13,-12.49结果为 -13

2021-10-18 13:52:43 8245

原创 IDEA2021.2 常用快捷键汇总

近期在使用IDEA2021版这个工具进行项目开发,之前在eclipse上能使用的快捷键方法放在IDEA上很多都不适用了,因此在此总结一下关于IDEA快捷键的使用方法:首先先说一下从IDEA上获取关于IDEA快捷键使用的方法步骤:点击进去可以查看到所有快捷键的使用方法:这上面给出可用的很全面的,但是都是英文,所以在此自己总结一下常用的快捷键使用方法以及注释(可查阅百度总结):Ctrl+Z:撤销Ctrl+Shift+Z:重做Ctrl+X:剪贴Ctrl..

2021-09-26 13:50:00 756

原创 java 操作ElasticSearch增删改查

目录一、需求二、前期准备1.导包2.初始化连接三、常用操作1. 多条件查询1.1. es的增删改查最核心的步骤3. 插入数据4. 批量插入数据5.查询多个id的数据6.根据id修改数据7.跟据id查询一条7.1根据es生成的id来查询一条数据(即es自带的 _id)7.2根据数据中的id来查找一条数据(这里是数据中的字段id)8. 根据id删除数据9. 聚合查询一、需求公司项目数据量很大,把数据放到了ElasticSear...

2021-09-09 15:42:48 5328

原创 List集合去重(常规遍历、Set去重、java8 stream去重、重写equals和hashCode方法)

1. 常规元素去重碰到List去重的问题,除了遍历去重,我们常常想到利用Set集合不允许重复元素的特点,通过List和Set互转,来去掉重复元素。// 遍历后判断赋给另一个List集合,保持原来顺序 public static void ridRepeat1(List<String> list) { System.out.println("list = [" + list + "]"); List<String> listNew =

2021-08-20 14:28:08 2069

原创 java list运算

一、调用函数list.stream().mapToDouble(User::getHeight).sum()//和list.stream().mapToDouble(User::getHeight).max()//最大list.stream().mapToDouble(User::getHeight).min()//最小list.stream().mapToDouble(User::getHeight).average()//平均值二、使用DEMO1.Double示例public

2021-07-30 10:32:40 513

原创 一致性Hash算法及Java实践

目录一、案例背景1.1 系统简介1.2 遇到问题1.3 初步优化1.4 继续优化二、使用一致性Hash解决问题三、一致性Hash介绍3.1 理论简介3.2 设计实现四、对一致性Hash的理解4.1 应用场景4.2 环的Hash数量的选择4.3 虚拟节点的作用4.4 Hash算法的选择4.5 一致性Hash的替代五、案例5.1 需求5.2 算法5.3 测试5.5 多次实验结果一、案例背景1.1 系统简介  首先看一..

2021-07-29 11:22:27 2349

原创 Java使用正则表达式验证手机号和电话号码

中国电信号段 133、149、153、173、177、180、181、189、199中国联通号段 130、131、132、145、155、156、166、175、176、185、186中国移动号段 134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、178、182、183、184、187、188、198其他号段14号段以前为上网卡专属号段,如中国联通的是145,中国移动的是147等等。虚拟运营商电信:1700、1701、1702移.

2021-07-08 15:06:06 3338

原创 java list分页

需求:根据条件查询数据,将返回数据结果放到list中,在对list进行去重生成新的list,最后对新的list进行分页查询。代码:/** * @Auther: yaohongan * @Description //对list分页 * @Date: 2021/7/7 17:02 */ @Override public List listPage(Long pageIndex, Long pageSize, List list) {

2021-07-07 17:03:30 2205

原创 程序员快速熟悉新项目和业务逻辑的技巧

很多新人进入一家新公司后或进入一个新的项目组,最头疼的就是如何快速了解公司的业务和项目架构,或者说不要求快速,即便有足够的时间,也很难在庞大的业务中整理出思绪。当然,如果你碰到一个特别热心的老员工,事无巨细地给你讲,随时在你身边答疑解惑,那可能还好。但很可惜,我没有碰到这样的人,在加入新公司后/加入新项目组,带我的人几乎没花时间给我讲项目,也没给我安排可以熟悉项目的任务。就这样的一个多月时间里,我慢慢靠自己的力量熟悉了很多项目,并在过程中总结了一些方法,借此机会记录一下,分享给大家。首先在这里强

2021-06-29 17:25:34 2703 2

原创 Elasticsearch 入门及使用

一、前言本文版本说明: ElasticSearch版本:7.7 (目前最新版) Kibana版本:7.7(目前最新版) ElasticSearch在实际生产里通常和LogStash,Kibana,FileBeat一起构成Elastic Stack来使用,它是这些组件里面最核心的一个。因此学好ElasticSearch的必要性不言而喻,但是由于ElasticSearch官方更新太过频繁且文档陈旧,同时在Linux下安装配置的过程较繁杂,不利于入门使用。为了帮助大家快速入门

2021-06-18 17:00:25 1121

原创 HTTP和HTTPS区别的

一、为何要用https?http协议的缺点通信使用明文,内容可能被窃听(重要密码泄露) 不验证通信方身份,有可能遭遇伪装(跨站点请求伪造) 无法证明报文的完整性,有可能已遭篡改(运营商劫持)用https能解决这些问题么?https是在http协议基础上加入加密处理和认证机制以及完整性保护,即http+加密+认证+完整性保护=httpshttps并非应用层的一种新协议,只是http通信接口部分用ssl/tls协议代替而已。通常http直接和tcp通信,当使用ssl时则演变成先和ssl通信,

2021-05-13 11:22:42 124

原创 解决Github访问速度慢

一、CDNContent Distribute Network,可以直译成内容分发网络,CDN解决的是如何将数据快速可靠从源站传递到用户的问题。用户获取数据时,不需要直接从源站获取,通过CDN对于数据的分发,用户可以从一个较优的服务器获取数据,从而达到快速访问,并减少源站负载压力的目的。二、访问/下载慢的原因github的CDN被某墙屏了,由于网络代理商的原因,所以访问下载很慢。ping github.com 时,速度只有300多ms。三、解决方法绕过dns解析,在本地直接绑定hos

2021-05-06 20:16:06 316

原创 获取ip地址工具类

废话不多说,直接上代码package com.juncdt.api.utils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.util.StringUtils;import javax.servlet.http.HttpServletRequest;import java.net.InetAddress;import java.net.UnknownHostExcepti

2021-04-29 17:28:27 195

原创 项目数据字典设计

系统字典表,一半涉及两张表:字典1:n字典项。是一对多的关系字典表:字典项表:如,消息类型,在字典表就是在字典项对应的多条:字典表sql:CREATE TABLE `sys_dict` ( `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `dict_name` varchar(100) CHARACTER SET utf8 COLLAT...

2021-04-29 09:17:24 1692

原创 接口神器:Apifox,究竟有多香!

一、介绍Apifox 是接口管理、开发、测试全流程集成工具,定位Postman + Swagger + Mock + JMeter。通过一套系统、一份数据,解决多个系统之间的数据同步问题。只要定义好接口文档,接口调试、数据 Mock、接口测试就可以直接使用,无需再次定义;接口文档和接口开发调试使用同一个工具,接口调试完成后即可保证和接口文档定义完全一致。高效、及时、准确!二、功能接口设计:Apifox 接口文档遵循OpenApi3.0 (原 Swagger)、JSON Schema规范的...

2021-04-26 10:25:35 4063 1

原创 intellij idea常用快捷键汇总

intellij idea常用快捷键汇总,如果你不知道IntelliJ IDEA有哪些快捷键的话可以来看一看,熟练运用快捷键能提高效率哦~ 1.Ctrl+E,可以显示最近编辑的文件列表  2.Shift+Click可以关闭文件  3.Ctrl+[或]可以跳到大括号的开头结尾  4.Ctrl+Shift+Backspace可以跳转到上次编辑的地方  5.Ctrl+F12,可以显示当前文件的结构  6.Ctrl+F7可以查询当前元素在当前文件中的引用,然后按F3可...

2021-04-25 09:07:13 171

原创 java list对象属性去掉重复的数据

做数据同步任务遇到的数据重复问题,借此通过list方式去掉重复数据//获取数据 JSONObject dataJson = (JSONObject) jsonObject.get("data"); List<JsonMetaNode> jsonMetaNodeList = new ArrayList<>(); //将数据存入到jsonMetaNodeList中 jsonMetaNodeList = analysisJsonKey

2021-04-16 16:09:17 317

原创 开源项目推荐

2021-04-13 更新一、sa-token轻量级Java权限认证框架1.在线资料 官网首页:http://sa-token.dev33.cn/ 在线文档:http://sa-token.dev33.cn/doc/index.html 需求提交:我们深知一个优秀的项目需要海纳百川,点我在线提交需求 开源不易,求鼓励,点个star吧 ! 2.Sa-Token是什么?sa-token是一个轻量级Java权限认证框架,主要解决:登录认证、权限认证、Sessio

2021-04-13 10:59:40 140

原创 自动解析api接口数据并生成数据库表和插入数据

一、业务需求根据api接口返回的数据进行自动解析,将解析的数据自动生成数据库的建表和插入数据的sql语句同时自动执行操作生成数据表和插入api接口的数据二、技术架构和实现1.技术架构spring cloud微服务框架、Mybatis、MySQL数据库2.实现思路1)调用HttpClientUtil访问第三方api接口并返回json数据2)将数据通过json解析工具进行解析,采用的是递归方式解数据结构3)将解析好的数据结构保存到实体类,主要有json的kev和value及val

2021-04-12 18:11:02 2995 5

原创 json转sql create table

解析json来创建数据库表sql语句entity层package org.example.module.jd.entity;import java.util.List;/** * @Auther: yaohongan * @Date: 2021/3/29 18:11 * @Description: */public class JsonMetaNode { private String key; private String valueType; //数

2021-03-29 18:34:50 1402 6

原创 宝藏文章汇总(持续更新)

Java篇Java知识体系最强总结(2020版)Spring Boot/spring cloud 学习笔记MySQL篇MYSQL数据库高级SQL语句MySQL常用SQL(含复杂SQL查询)面试 SQL整理 常见的SQL面试题:经典50题工具篇idea好玩插件推荐面试篇史上最全的中高级JAVA工程师-面试题汇总...

2021-03-26 13:58:06 101

原创 Java开发面试题(持续更新)

最近一直参加公司的面试,并把问到的一些问题整理出来3月8日1.jdk1.8新特性有哪些?Lambda表达式 函数式接口 *方法引用和构造器调用 Stream API 接口中的默认方法和静态方法 新时间日期API详细:JDK1.8 新特性(全)2.redis 和MySQL 的区别?(1)类型上从类型上来说,mysql是关系型数据库,redis是缓存数据库(2)作用上mysql用于持久化的存储数据到硬盘,功能强大,但是速度较慢redis用于存储使用较为频繁的数据到

2021-03-09 08:32:14 125

原创 Spring Boot从入门到精通(三)常用注解含义及用法分析总结

Spring Boot是目前非常流行的框架,而注解是Spring Boot的核心功能,接下来主要说一说Spring Boot常用注解的含义以及部分注解在项目中的使用方法。一、@RestController和@RequestMapping@RestController被称为一个构造型(stereotype)注解。它为阅读代码的开发人员提供建议。对于Spring来说,该类扮演了一个特殊角色。它继承自@Controller注解。在Spring4.0之前的版本,Spring MVC的组件都使用.

2021-01-07 10:26:50 143

原创 Spring Boot从入门到精通(二)配置GitHub并上传Maven项目

简单介绍一下GitHub,它是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名GitHub。GitHub于2008年4月10日正式上线,除了Git代码仓库托管及基本的Web管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。托管版本数量非常之多,其中不乏知名开源项目Ruby on Rails、jQuery、python等。在上一篇文章中讲述了使用Spring Boot框架搭建第一个Maven项目并

2021-01-07 09:50:49 185

原创 Spring Boot从入门到精通(一)搭建第一个Spring Boot程序

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。Spring Boot是基于Spring框架基础上推出的一个全新的框架, 旨在让开发者可以轻松地创建一个可独立运行的,生产级别的应用程序。基于Spring Boot内部的自.

2021-01-05 15:32:26 291

原创 Navicat导出MySQL数据表表结构

作为程序员呢,肯定避免不了写文档,今天分享的是提高写数据库表表结构的效率方法。1.打开Navicat,双击打开你要导出表结构的数据库(此时数据库名称变绿),点击“查询”——“新建查询”2.将以下SQL语句复制粘贴进查询编辑器,并修改数据库名称与表名称SELECT COLUMN_NAME 列名, COLUMN_TYPE 数据类型, DATA_TYPE 字段类型, CHARACTER_MAXIMUM_LENGTH 长度, IS_NULLABLE 是否为空, COLUMN_DEFAU

2020-12-29 17:32:59 4620

原创 spring Cloud 定时任务

本文主要记录:如何使用spring的@Scheduled注解实现定时作业,基于spring cloud1.定时任务类@Component:类注册成bean@Scheduled:定时任务,可选固定时间、cron表达式等类型cron表达式 每位的意义:Seconds Minutes Hours DayofMonth Month DayofWeekimport org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.sprin

2020-12-17 15:23:47 779

原创 人事HR相关面试题

一、企业面试必读1、BAT大厂面试通常会4~5轮,时间会在2~3周 技术面试(技术交流) 笔试(写程序) 小领导面试 大领导面试 HR面试 2、中小企业的面试大多2~3轮,时间在1-2周左右 HR面试 技术面试(笔试) 领导面试(项目+能力) 二、如何通过自我介绍推销自己?2-1 如何做自我介绍一、自我介绍的注意事项1、自我介绍的时间控制在3分钟以内2、只谈跟工作相关的内容,其他不要过多涉及3、注视面..

2020-12-16 16:16:20 619

原创 Nacos注册配置中心介绍

一、什么是Nacos英文全称Dynamic Naming and Configuration Service,Na为naming/nameServer即注册中心,co为configuration即注册中心,service是指该注册/配置中心都是以服务为核心。服务在nacos是一等公民二、Nacos原理nacos简单介绍Nacos注册中心分为server与client,server采用Java编写,为client提供注册发现服务与配置服务。而client可以用多语言实现,client.

2020-12-08 14:52:45 931 1

原创 Hibernate在控制台打印sql语句以及参数

一、环境说明:IntelliJ IDEA 2017.3.4 版本;SpringBoot 2.0.0.RELEASE;hibernate用的是JPA自带。二、打印sql语句到控制台首先,我使用的是application.properties配置文件,使用yml也可以达到同样的效果。在网上查这个问题查了好久,基本上都是xml配置,在此不多说;正确的properties配置项应该如下图所示:在jpa下一级不直接是hibernate,而是properties。spring.jpa.pr

2020-12-07 15:52:32 1361

原创 常用的设计模式汇总,超详细!

单例模式简单点说,就是一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取它们的实例。getInstance()的返回值是一个对象的引用,并不是一个新的实例,所以不要错误的理解成多个对象。单例模式实现起来也很容易,直接看demo吧publicclassSingleton{privatestaticSingleton singleton;privateSingleto...

2020-12-04 09:46:20 120

原创 @Autowired详解

首先要知道另一个东西,default-autowire,它是在xml文件中进行配置的,可以设置为byName、byType、constructor和autodetect;比如byName,不用显式的在bean中写出依赖的对象,它会自动的匹配其它bean中id名与本bean的set**相同的,并自动装载。 @Autowired是用在JavaBean中的注解,通过byType形式,用来给指定的字段或方法注入所需的外部资源。 两者的功能是一样的,就是能减少或者消除属性或构造器参数的设置,只是配置地方不一样而已

2020-12-03 22:51:27 1214

原创 Java常见面试题 + 答案汇总

面试题模块介绍面试题包括以下十九个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM。如下图所示:适宜阅读人群需要面试的初/中/高级 java 程序员 想要查漏补缺的人 想要不断完善和扩充自己 java 技术栈的人 java 面试官具..

2020-12-03 18:38:11 1411

原创 idea一个窗口打开多个项目

今天,我遇到了一个问题,就是同事给了我一些项目,我下载了之后,项目有点多,然后想把这些项目都放到一个里面,所以我就采取了添加module的方式进行添加,首先先看一下我们的四个项目,我们就想实现在一个idea里面进行添加这四个module1.首先我们要新建一个项目,手动的在那个项目中新建一个文件夹然后我们可以把要导入的module,可以手动的粘贴到这个myFirstTest的下面,因为我们如果要import module的话,这个import的这个引用的导入,而不是物理空间的导入,所以

2020-12-01 10:19:13 274

原创 雪花算法(snowflake) :分布式环境,生成全局唯一的订单号

snowflake方案snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。这种方案大致来说是一种以划分命名空间(UUID也算,由于比较常见,所以单独分析)来生成ID的一种算法,这种方案把64-bit分别划分成多段,分开来标示机器、时间等。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号,最后还有一个符号位,永远是0。比如在snowflake中的64-bit分别表示如

2020-11-02 13:01:19 342

原创 采用redis生成唯一且随机的订单号

项目描述最近做的一个项目有这么一个需求:需要生成一个唯一的11位的就餐码(类似于订单号的概念),就餐码的规则是:一共是11位的数字,前面6位是日期比如2019年07月20就是190720,后面五位是随机数且不能是自增的,不然容易让人看出一天的单量。解决方案五位随机数不能用随机生成的,不然可能不唯一,所以想到了预生成的方案:采用redis随机数生成先生成10000~99999共9万个数(从1万开始是懒得再前面补0了),然后打乱分别 存入redis的list数据结构 90个key每个key存

2020-11-02 10:51:14 1257

原创 Java线程池ThreadPoolExcutor

1.线程池的工作原理:1.1线程池刚创建时,里面没有一个线程。任务队列是作为参数传进来的。不过,就算队列里面有任务,线程池也不会马上执行它们。1.2.当调用execute()方法添加一个任务时,线程池会做如下判断:a.如果正在运行的线程数小于corePoolSize,那么马上创建线程运行这个任务。b.如果正在运行的线程数大于或者等于corePoolSize,那么将这个任务放入队列。c.如果这个时候队列满了,而且正在运行的线程数量小于maximumPoolSize,那么还是要创建线程运行这个

2020-11-02 10:49:30 247

swagger2demo.zip

spring boot集成swagger2(接口注释说明文档),swagger2是一个能用过注解的形式帮助我们生产api开发文档的工具包,同时也能够方便我们对api的一个实时管理和方便对api接口的调试,对于调用者也能更加直观发现问题,在api对接的过程中能提高我们对接时的效率。

2019-10-04

空空如也

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

TA关注的人

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