java
文章平均质量分 57
小姚同學
java码农一枚
展开
-
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 · 2132 阅读 · 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 · 9811 阅读 · 0 评论 -
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 · 2427 阅读 · 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 · 8365 阅读 · 0 评论 -
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 · 5782 阅读 · 0 评论 -
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 · 2639 阅读 · 0 评论 -
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 · 547 阅读 · 0 评论 -
一致性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 · 2388 阅读 · 0 评论 -
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 · 3574 阅读 · 0 评论 -
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 · 2229 阅读 · 0 评论 -
Elasticsearch 入门及使用
一、前言本文版本说明: ElasticSearch版本:7.7 (目前最新版) Kibana版本:7.7(目前最新版) ElasticSearch在实际生产里通常和LogStash,Kibana,FileBeat一起构成Elastic Stack来使用,它是这些组件里面最核心的一个。因此学好ElasticSearch的必要性不言而喻,但是由于ElasticSearch官方更新太过频繁且文档陈旧,同时在Linux下安装配置的过程较繁杂,不利于入门使用。为了帮助大家快速入门原创 2021-06-18 17:00:25 · 1619 阅读 · 0 评论 -
获取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 · 211 阅读 · 0 评论 -
项目数据字典设计
系统字典表,一半涉及两张表:字典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 · 1790 阅读 · 0 评论 -
java list对象属性去掉重复的数据
做数据同步任务遇到的数据重复问题,借此通过list方式去掉重复数据//获取数据 JSONObject dataJson = (JSONObject) jsonObject.get("data"); List<JsonMetaNode> jsonMetaNodeList = new ArrayList<>(); //将数据存入到jsonMetaNodeList中 jsonMetaNodeList = analysisJsonKey原创 2021-04-16 16:09:17 · 385 阅读 · 0 评论 -
开源项目推荐
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 · 170 阅读 · 0 评论 -
自动解析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 · 3504 阅读 · 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 · 1513 阅读 · 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 · 116 阅读 · 0 评论 -
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 · 152 阅读 · 0 评论 -
Spring Boot从入门到精通(三)常用注解含义及用法分析总结
Spring Boot是目前非常流行的框架,而注解是Spring Boot的核心功能,接下来主要说一说Spring Boot常用注解的含义以及部分注解在项目中的使用方法。一、@RestController和@RequestMapping@RestController被称为一个构造型(stereotype)注解。它为阅读代码的开发人员提供建议。对于Spring来说,该类扮演了一个特殊角色。它继承自@Controller注解。在Spring4.0之前的版本,Spring MVC的组件都使用.原创 2021-01-07 10:26:50 · 160 阅读 · 0 评论 -
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 · 205 阅读 · 0 评论 -
Spring Boot从入门到精通(一)搭建第一个Spring Boot程序
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。Spring Boot是基于Spring框架基础上推出的一个全新的框架, 旨在让开发者可以轻松地创建一个可独立运行的,生产级别的应用程序。基于Spring Boot内部的自.原创 2021-01-05 15:32:26 · 304 阅读 · 0 评论 -
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 · 804 阅读 · 0 评论 -
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 · 1100 阅读 · 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 · 1593 阅读 · 0 评论 -
常用的设计模式汇总,超详细!
单例模式简单点说,就是一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取它们的实例。getInstance()的返回值是一个对象的引用,并不是一个新的实例,所以不要错误的理解成多个对象。单例模式实现起来也很容易,直接看demo吧publicclassSingleton{privatestaticSingleton singleton;privateSingleto...原创 2020-12-04 09:46:20 · 136 阅读 · 0 评论 -
@Autowired详解
首先要知道另一个东西,default-autowire,它是在xml文件中进行配置的,可以设置为byName、byType、constructor和autodetect;比如byName,不用显式的在bean中写出依赖的对象,它会自动的匹配其它bean中id名与本bean的set**相同的,并自动装载。 @Autowired是用在JavaBean中的注解,通过byType形式,用来给指定的字段或方法注入所需的外部资源。 两者的功能是一样的,就是能减少或者消除属性或构造器参数的设置,只是配置地方不一样而已原创 2020-12-03 22:51:27 · 1292 阅读 · 0 评论 -
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 · 1478 阅读 · 0 评论 -
雪花算法(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 · 362 阅读 · 0 评论 -
采用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 · 1321 阅读 · 0 评论 -
Java线程池ThreadPoolExcutor
1.线程池的工作原理:1.1线程池刚创建时,里面没有一个线程。任务队列是作为参数传进来的。不过,就算队列里面有任务,线程池也不会马上执行它们。1.2.当调用execute()方法添加一个任务时,线程池会做如下判断:a.如果正在运行的线程数小于corePoolSize,那么马上创建线程运行这个任务。b.如果正在运行的线程数大于或者等于corePoolSize,那么将这个任务放入队列。c.如果这个时候队列满了,而且正在运行的线程数量小于maximumPoolSize,那么还是要创建线程运行这个原创 2020-11-02 10:49:30 · 269 阅读 · 0 评论 -
IntelliJ Idea 解决 Could not autowire. No beans of ‘xxxx‘ type found 的错误提示
IntelliJ Idea 解决 Could not autowire. No beans of ‘xxxx’ type found 的错误提示哈,在使用 @Autowired 时,今天又遇一坑,这俩波浪线是干啥子嘛:然鹅,试了一下,控制台也不报错,可以正常运行,数据也有:于是,又再百度上找答案。。问题分析在 Idea 的 spring 工程里,经常会遇到 Could not autowire. No beans of ‘xxxx’ type found 的错误提示。但程原创 2020-10-16 10:16:41 · 217 阅读 · 0 评论 -
Spring Boot上传文件工具类
一、前言以前的文件上传都是之前前辈写的,现在自己来写一个,大家可以看看,有什么问题可以在评论中提出来。写的这个文件上传是在springboot 2.0中测试的,测试了,可以正常上传,下面贴代码二、代码编写第一步:引入依赖这里我用的是maven构建项目,springboot的相关pom我就不贴了,我这里贴我额外引入的。<dependency> <groupId>org.projectlombok</groupId> <...原创 2020-09-21 16:53:41 · 859 阅读 · 0 评论 -
解决MyBatis Plus分页不起作用
一、问题描述使用的MyBatis Plus中的selectPage方法,无论怎么改都不起作用原代码(serviceimpl层代码):/** * 带条件的分页查询 * @param current * @param limit * @param teacherQuery * @return */@Overridepublic Page<EduTeacher> pageListTeacherCondition(long current, Long limit, Teac原创 2020-09-08 16:02:07 · 12102 阅读 · 6 评论 -
MyBatis Plus实现带条件分页查询
技术架构:Spring Cloud+MyBatis Plus+MysqlTeacherQuery条件字段封装/** * <p> * Description: * </p> * * @author songzixian * @version v1.0.0 * @create 2020-05-24 18:19 * @see com.greatdata.provider.domain */@ApiModel(value = "Teacher查询对象",desc原创 2020-09-07 15:36:13 · 5851 阅读 · 0 评论 -
使用mybatis-plus查出来的数据为空的问题
一、原因mybatis_plus 默认会使用 “id” 为主键字段,如果数据库的主键字段不是“id”的话,使用mybatis-plus中的selectById ,getById 方法查询数据是查询不出来的。二、解决在实体类的主键字段加上@TableId(value =“数据库你的主键字段”)注解即可例如我的是product_id为主键。...原创 2020-09-03 11:02:30 · 8522 阅读 · 1 评论 -
EasyPOI 使用教程
目录1. 前传1.1 前言1.2 Easypoi介绍1.3 使用1.4 测试项目1.5 可能存在的小坑2. Excel 注解版2.1 Excel导入导出2.2 注解2.3 注解导出,导入2.3.1 对象定义2.3.2 集合定义2.3.3 图片的导出2.3.4 Excel导入介绍2.3.5 Excel导入小功能2.3.6 图片的导入2.3.7 Excel多Sheet导出2.4 注解变种-更自由的导出2.5 Map导入,自由发挥2.原创 2020-08-28 15:43:11 · 8038 阅读 · 2 评论 -
maven 打包同时引入本地jar包
1.将需要手动引入的包放在项目目录下,如lib目录下;修改pom文件,引入依赖并且将scope设置为system2.同时配置maven打包插件在<configuration>里加入下面的代码:<!--将这个配置设置为 true,打包出来的 jar/war 就是可执行的了--><executable>true</executable&...原创 2020-04-28 16:20:00 · 363 阅读 · 0 评论 -
IDEA启动多个Spring Boot工程实例
step 1在IDEA上点击Application右边的下三角,弹出选项后,点击Edit Configurationstep 2打开配置后,将默认的Single instance only(单实例)的钩去掉。step 3通过修改application文件的server.port的端口,启动。多个实例,需要多个端口,分别启动。...原创 2020-04-26 17:30:01 · 197 阅读 · 0 评论 -
Java CRC16/Modbus计算校验方法
import java.math.BigInteger; /** * Created by Administrator on 2018/6/15. */public class ByteUtil { /** * 接收到的字节数组转换16进制字符串 */ public static String byteToStr(byte[] b, int si...转载 2020-04-22 17:20:13 · 634 阅读 · 0 评论