自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我的博客

。。。。。。。

  • 博客(74)
  • 收藏
  • 关注

原创 java线程间的通信(学习笔记)

简述合理使用java多线程可以更好地利用服务器资源。一般来讲,线程内部有自己私有的线程上下文,互不干扰。但是当我们需要多个线程之间相互协作的时候,就需要我们掌握java线程的通信方式。锁与同步在Java中,锁的概念都是基于对象的,所以我们又经常称它为对象锁,一个锁同一时间只能被一个线程持有。在线程之间,有一个同步的概念,可以解释为:线程同步是线程之间按照一定的顺序执行。public class Test { public static Object lock = new Object()

2021-08-30 09:57:05 262

原创 java多线程入门类和接口

进程和线程基本概念进程进程就是应用程序在内存中分配的空间,也就是正在运行的程序,各个进程之间互不干扰。同时进程保存着程序每一个时刻运行的状态。是操作系统分配资源的基本单位。线程一个进程至少包含一个线程,每个线程负责一个单独的子任务,是CPU分配时间片的基本单位。进程与线程的区别进程是一个独立的运行环境,而线程是在进程中执行的一个任务。他们两个本质的区别是是否单独占用内存空间及其它系统资源(比如I/O)。进程单独占有一定的内存地址空间,所以进程间存在内存隔离,数据是分开的,数据共享

2021-08-13 11:22:02 460

原创 Jwt加filter实现app认证

导入jwt依赖<dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.11.2</version></dependency>token实体类@Datapublic class TokenDto implements Serializable { /

2021-07-19 17:27:37 708

原创 docker增加目录映射

输入命令:cd /var/lib/docker/containers进入容器看到config.v2.json hostconfig.json两个文件,将这两个文件下载下来编辑需要映射的目录:/ql/scripts:/ql/scripts打开hostconfig.json,添加如图所示打开config.v2.json,找到MountPoints,并添加如图所示:...

2021-06-02 14:49:02 5379

原创 高德地图关键字提示搜索获取经纬度

效果图:具体代码:<!doctype html><html><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">

2021-05-27 11:53:12 820 1

原创 阿里音视频通话rtc服务端token创建

web端与app视频通话,由服务端创建token@Componentpublic class AliRtcUtil { // 监听端口 private int listen; // 应用ID @Value("${aliyun.rtc.appID}") private String appID; // 应用密钥 @Value("${aliyun.rtc.appKey}") private String appKey; // 服务地址

2021-05-18 18:16:19 589

原创 阿里云移动推送

引入依赖<!-- 阿里云推送 --> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-push</artifactId> <version>3.10.1</version> </dependency>

2021-05-18 18:05:19 1272 7

原创 阿里云OSS文件上传

引入依赖<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.6.0</version></dependency>封装获取OSSClient对象工具类@Componentpublic class OssClientUtil { p

2021-05-18 17:54:56 1101

原创 mybatis根据数据库身份证号分年龄段查询

sql<!-- 分年龄段查询 --> <select id="getAgeSection" parameterType="Integer" resultType="com.bh.emergency.system.bean.bigScreen.AgeSection"> select count(case when <![CDATA[ ((substring(now(),1,4)-substring(to_card_num,7,4))-(s

2021-03-26 09:51:31 768

原创 mysql分组查询计算百分比

sqlSELECT rpt.rpt_name ,COUNT(*) total,CONCAT(CAST(CONVERT(100 * CAST(count(*) AS DECIMAL) / CAST((SELECT COUNT(*) FROM risk_place where rpc_id=32) AS DECIMAL), DECIMAL) AS CHAR) ,'%') AS percentageFROM risk_place rp left join risk_place_type rpt on rp.

2021-03-26 09:47:14 1798

原创 mysql对同一字段不同的条件进行计数

sqlselect IFNULL(count(*),0) as eventSum,IFNULL(sum(case when oe_state=2 then 1 else 0 end),0) as processedNum,IFNULL(sum(case when oe_state=0 then 1 else 0 end),0) as untreatedNum from outburst_event where area_id=52

2021-03-05 16:31:50 963

原创 httpClient练习笔记

依赖<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version></dependency>代码public class HttpClientDemo { public static void ma

2021-02-09 23:20:39 113

原创 jsoup练习笔记

添加依赖<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.11.3</version></dependency><dependency> <groupId>junit</groupId> <artifactId

2021-02-09 22:37:40 106

原创 httpClient连接池练习笔记

public class HttpClientPoolTest { public static void main(String[] args) { //创建连接池管理器 PoolingHttpClientConnectionManager pcm = new PoolingHttpClientConnectionManager(); //设置最大连接数 pcm.setMaxTotal(100); //设置每个主机的最

2021-02-09 22:37:04 93

原创 python爬虫(二)

post请求,解析的数据格式如:{"code":0,"msg":"","count":20409,"data":[{"name":"张三"},{"SEX":"男"},{"age":"20"}]}具体代码# -*- coding = utf-8 -*-# @Time: 2021/1/30# @Author: 杨东# @File: spiderOwner.py# @Software: PyCharmimport requestsimport jsonimport xlwtdef m

2021-01-31 00:44:13 114

原创 python爬虫(解析网页)

最近在学习python爬虫,简单记录下写爬虫的笔记# -*- coding = utf-8 -*-# @Time: 2021/1/27# @File: spider.py# @Software: PyCharmimport urllib.request # 指定URL,获取网页数据from bs4 import BeautifulSoup # 正则表达式,进行文字匹配import xlwt # 进行excel操作import sqlite3 # 进行sqlite数据库操作impo

2021-01-31 00:43:23 145 1

原创 netty实现与智能手表通信对接

最近在做java服务端通过netty与手表通信,基于GPRS通信协议,可实现接收手表的信息,也可由服务端主动向手表发送信息。服务端@Componentpublic class NettyServer { /** * 日志 */ private Logger log = LoggerFactory.getLogger(getClass()); /** * IP地址 */ @Value("${netty.ip}") priv

2020-12-27 19:59:00 1782 7

原创 基于netty的简单聊天室

一、Netty 简介Netty 是基于 Java NIO 的异步事件驱动的网络应用框架,使用 Netty 可以快速开发网络应用,Netty 提供了高层次的抽象来简化 TCP 和 UDP 服务器的编程,但是你仍然可以使用底层的 API。Netty 的内部实现是很复杂的,但是 Netty 提供了简单易用的API从网络处理代码中解耦业务逻辑。Netty 是完全基于 NIO 实现的,所以整个 Netty 都是异步的。Netty 是最流行的 NIO 框架,它已经得到成百上千的商业、商用项目验证,许多框架和开源组

2020-12-20 18:55:47 190

原创 java生成二维码扫描跳转到指定的路径URL

java生成二维码扫描跳转到指定的路径URL导入依赖 <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.1.0</version> </dependency> <depen

2020-12-10 17:07:31 1177 1

原创 获取下一年的所有日期

业务需求:定时任务每年12月25日生成下一年的日期@Componentpublic class GenerateDateTask { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired TimeMapper timeMapper; /** * 每年的12月25日自动生成下一年的日期 */ @Async @Scheduled(cron = "

2020-12-10 17:06:02 562

原创 SpringCloud Config配置中心

SpringCloud Config配置中心配置中心Spring Cloud Config 是一个高可用的分布式配置中心,支持将配置文件信息存储在 Git 仓库进行统一管理,主要解决以下问题配置文件分散在各个项目里,不方便维护配置内容安全与权限,实际开发中开发人员并不知道线上环境的配置更新配置后,项目需要手动重启1)配置中心服务端导入依赖<dependency> <groupId>org.springframework.cloud</gro

2020-12-07 18:22:47 79

原创 SpringCloud Gateway网关基础使用

SpringCloud Gateway网关2.相关概念Route(路由):路由是构建网关的基本模块,它由ID,目标URI,一系列的断言和过滤器组成,如果断言为true则匹配该路由;Predicate(断言):指的是Java 8 的 Function Predicate。SpringCloud断言的输入类型是Spring框架中的ServerWebExchange(服务网络交换器,存放着重要的请求-响应属性、请求实例和响应实例等等)。 这使开发人员可以匹配HTTP请求中的所有内容,例如请求头或请求参数

2020-12-07 18:21:30 447

原创 SpringCloud分布式与微服务

SpringCloud微服务注册中心、网关开发1,微服务的概念微服务架构风格是一种使用系列微小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,成为独立的业务。每个服务基于业务能力构建,服务之间采用轻量级机制进行通信,通常是HTTP API,这些服务通过自动化部署机制进行独立部署。每个服务使用不同的编程语言实现,以及不同的数据存储技术,并保持分布式管理。2,SpringCloudSpring Cloud是一个开发工具集,包含多个子项目,极大的简化了微服务的开发基于Spring b

2020-12-07 18:21:01 173

原创 oracle数据库基础使用总结

一、oracle简介oracle创始人拉里·埃里森拉里·埃里森和三个朋友合伙于1977年成立了软件开发研究公司,其个人持股60%。之后软件开发研究公司为美国中央情报局开发了名为oracle的数据库,从此名声大噪。软件开发研究公司也因此改名为oracle。1989年oracle进入中国以甲骨文命名。oracle以数据存储量大,处理速度快,安全性高,容错性强等出色特征,长期以来占据着全球数据库市场的主导地位。ORACLE 数据库系统是美国 ORACLE 公司(甲骨文)提供的以分布式数据库

2020-12-07 18:17:40 336

原创 MyBatis-Plus(使用总结)

Mybatis-plusMyBatis-Plus简介Mybatis-Plus是一款MyBatis的增强工具包,简化 CRUD 操作。启动加载 XML 配置时注入单表 SQL 操作 ,为简化开发工作、提高生产率而生。Mybatis-Plus 启动注入非拦截实现、性能更优,让你专注业务快速敏捷开发。文档 http://mp.baomidou.comhttp://mybatis.plushttps://gitee.com/baomidou/mybatis-plushttps://gitee.com/

2020-12-07 18:14:44 381

原创 解决Redis序列化和反序列LocalDateTime的问题

使用redis在序列化和反序列时间格式LocalDateTime时报如下错:解决办法:在实体类对应的LocalDateTime类型属性上加上如下注解:@JsonDeserialize(using = LocalDateTimeDeserializer.class)@JsonSerialize(using = LocalDateTimeSerializer.class)lass)![image-20201007234740847](https://img-blog.csdnimg.cn/im

2020-11-13 23:58:09 600

原创 数据校验

04数据校验1.业务层校验首先我们来看一下最常见的做法,就是在业务层进行参数校验:public String addUser(User user) { if (user == null || user.getId() == null || user.getAccount() == null || user.getPassword() == null || user.getEmail() == null) { return "对象或者对象字段不能为空"; }}代码繁琐不够

2020-11-13 23:52:43 246

原创 SpringBoot整合Swagger

SpringBoot整合SwaggerSwagger-UISwagger-UI是HTML, Javascript, CSS的一个集合,可以动态地根据注解生成在线API文档。1、常用注解@Api:用于修饰Controller类,生成Controller相关文档信息@ApiModel()用于类 ;对类进行说明value–表示对象名description–描述@ApiModelProperty:用于修饰实体类的属性,当实体类是请求参数或返回结果时,直接生成相关文档信息@ApiOperatio

2020-11-13 23:51:35 124

原创 MinIO文件存储

文件存储对象存储特点1,简介对象存储是由AWS首先推出的一个存储产品形态,AWS的S3协议也成为对象存储事实标准,各个云存储厂商的云存储服务协议都兼容S3。从国内外这四个公有云厂商对象存储的描述,我们就能看出对象存储的几个特点:海量存储: 一般块存储来说(公有云形态为云盘)体量如果能达到PB级别;但是对象存储的体量,PB就不够看了,至少都是EB的支持。国内公有云的对象存储体量基本上EB级别体量。易扩展,低成本:对象存储产品还可以细分成标准存储,归档存储,低频存储等。不同的产品适用于不同的场景,

2020-11-13 23:50:17 7338 3

原创 JWT简介

JWT简介微服务常用的认证方案:HTTP 基本认证HTTP Basic Authentication(HTTP 基本认证)是 HTTP 1.0 提出的一种认证机制,这个想必大家都很熟悉了,我不再赘述。HTTP 基本认证的过程如下:客户端发送 HTTP Request 给服务器。因为 Request 中没有包含 Authorization header,服务器会返回一个 401 Unauthozied 给客户端,并且在 Response 的 Header “WWW-Authenticate” 中

2020-11-13 23:49:02 641 1

原创 oracle多表关联分页条件查询

oracle多表关联分页条件查询最近使用oracle数据库,在查询数据时,需要多表关联查询,而mybatis-plus的selectPage()方法只能实现单表的分页条件查询,而且发现时间模糊查询查不到数据,因此需要自己写SQL语句分页SQL方式一:SELECT * FROM ( SELECT t.*, rownum rn FROM ( SELECT * FROM 表名) t ) WHERE rn > (当前页-1)*每页的数据条数 AND rn <= 当前页*每页的数据条数;方式

2020-11-06 23:44:34 1443

原创 前后端分离跨域配置

import org.springframework.context.annotation.Bean;import org.springframework.web.cors.CorsConfiguration;import org.springframework.web.cors.UrlBasedCorsConfigurationSource;import org.springframework.web.filter.CorsFilter;/** * @Description 前后端分离允许跨域

2020-11-06 23:21:41 381

原创 SpringBoot整合 RabbitMQ

SpringBoot整合 RabbitMQ建springboot项目时导入springboot整合rabbitmq依赖包1,生产者application.yml配置文件spring: rabbitmq: port: 5672 password: root username: root virtual-host: /pms host: localhost template: mandatory: true #没有投递到队列,强

2020-09-08 18:57:58 950

原创 Spring整合RabbitMQ

Spring整合RabbitMQ1、生产者端1.导入依赖<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.9.0</version> </dependency> <dependency> <

2020-09-08 18:57:14 227

原创 CSS(学习笔记)

CSS只是使用HTML标签和其属性来展示数据存在什么问题?1、样式比较单一;2、不同的标签不同的属性控制不同的样式,难以记忆,没有提供统一的样式控制方式;3、样式不能与标签解耦,不能将样式进行重复使用;Cascading Style Sheets层叠样式表多重样式层叠为一提供多种样式控制方式,并且可以作用于同一个页面元素(标签)。CSS与HTML的结合方式外部样式将css样式编写在以.css结尾的文件中在<head></head&

2020-09-07 22:12:26 113

原创 HTML(学习笔记)

HTMLHyperText Markup Language超文本标记语言超文本(超级文本)超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。标记语言标签<标签名称 属性="属性值"></标签名称><a href="URL"></a>作用用HTML事先定义好的各种标签来告诉浏览器用什么方式来展示数据;标签分类闭合标签由开始标签和结束标签组成<a></a&g

2020-09-07 22:12:00 136

原创 RabbitMQ简介、概念、安装、启动、工作模式

RabbitMQ简介、概念、安装、启动、工作模式1、RabbitMQ简介RabbitMQ是支持多种消息协议,易于部署和使用的开源消息代理服务器,用于在分布式系统中存储转发消息由以高性能、健壮以及可伸缩性出名的Erlang语言编写;提供了成熟的高并发,高可用的解决方案可以根据实际业务情况动态地扩展集群节点在集群中的机器上设置镜像,使得在部分节点出现问题的情况下仍然可用支持多种客户端语言,如:Python、Ruby、.NET、Java等,支持AJAXRabbitMQ提供了一个易用的用户界面,使得

2020-09-07 21:57:40 586

原创 redis持久化、主从复制及哨兵机制

1,持久化Redis所有数据都保存在内存中,为防止数据丢失,会异步将数据保存在硬盘上。数据持久化方式快照:Redis RDBRDB方案的配置:save 60 1自动保存策略,60秒内有一个key发生变化就自动保存dbfilename **.rdb定义rdb文件名dir ./定义rdb文件保存的路径stop-writes-on-bgsave-error yes发生错误中断写入rdbcompression yes数据文件压缩rdbchecksum yes开启错误校验

2020-09-06 09:51:56 131

原创 Redis缓存注解

导入依赖<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.11.2</version> </dependency> <depend

2020-09-06 09:51:07 680

原创 Redis常用命令(使用总结)

一、常用管理命令1、启动Redis> redis-server [--port 6379]如果命令参数过多,建议通过配置文件来启动Redis。> redis-server [xx/xx/redis.conf]6379是Redis默认端口号。2、客户端连接Redis> ./redis-cli [-h 127.0.0.1 -p 6379 -a 密码]3、停止Redis> redis-cli shutdown> redis-cli -p 端口 -a 密码

2020-09-06 09:49:37 439

空空如也

空空如也

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

TA关注的人

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