
java
文章平均质量分 60
大树168
现在才明白,要赚到足够令自己安心的钱,才能过上简单、安逸、自由的生活,才能让自己活得更有底气。所以,多花时间努力,少点功夫矫情
github地址
https://github.com/lmchuyang/huyang
展开
-
信创-东方通和达梦适配
信创项目,国产化改造原创 2023-03-02 18:34:37 · 3744 阅读 · 2 评论 -
格尔接口签名和验签
格尔接口签名,接口验签,https请求接口,SSL证书忽略,原创 2023-02-11 18:40:40 · 1035 阅读 · 6 评论 -
redis 两种秒杀实现 lua脚本redis事务实现商品秒杀
redis 利用单线程 IO多路复用 实现了 单命令操作的原子性,但是多个命令的操作就不具备原子性。不过可以利用redis 事务 或者 lua脚本 来实现 多命令操作的原子性。本文试图通过模拟商品秒杀活动,演示怎么实现redis多命令操作具有原子性。用到的工具: spring boot ,redis template,lua脚本。watch 事务实现方式redisTemplate...原创 2022-11-22 17:06:42 · 425 阅读 · 1 评论 -
每分钟一个时间点
每分钟格式化一个时间点原创 2022-06-27 18:52:35 · 749 阅读 · 0 评论 -
JAVA生成图片或照片draw方式
第一步,生成本地图片再进行操作,经常用于图片验证码,或者加水印,加盖章之类 public void drawImage() throws FileNotFoundException, IOException { int width = 350; int height = 450; int fontSize = 20; Prescription prescriptionResult = prescriptionRepository.g..原创 2020-08-26 11:14:14 · 1457 阅读 · 0 评论 -
docker下读取txt文件找不到路径,必须copy到容器或者映射文件
今天遇到问题, 项目上传了一个GEO文件,但是在容器里运行的时候,找不到路径,因为容器里没有项目文件路径,只有一个JAR包, 这样的话,就要在容器里创建一个工作目录,然后打包容器的时候,把文件copy或者 add进容器里,代码如下1 第一步,docker 文件createDockerFile.sh 在服务端直接用命令 。 shcreateDockerFile.sh ,拉代码和打...原创 2019-11-28 13:13:31 · 7410 阅读 · 0 评论 -
kafka-stream流式处理示例
一 首生是kafka -stream 版本号问题,然后是springboot1.5.6兼容问题,发现springboot2.0不支持kafka -stream1.0.2包第一个是窗口聚合的初始值,第二个是进行聚合的聚合器,第三个就是窗口时间,第四个是类似于序列化的东西KTable aggregate = groupedStream.aggregate(initializer, ag...原创 2019-11-15 15:32:59 · 1190 阅读 · 0 评论 -
Logback异步日志输出的使用
<?xml version="1.0" encoding="UTF-8"?><configuration scan="true" scanPeriod="60 seconds" debug="false"> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 --> <property name="LOG_HOME" ...原创 2019-11-11 14:06:47 · 418 阅读 · 0 评论 -
JAVA + GeoLite2+ip定位,查询国家地理位置信息
最新要用到地理位置做区域划分,需要知道哪个ip属于哪个区,五大洲的区域划分,有两千个IP需要知道,并且查询频率比较高,每十分钟去查询一次, 最开始是用的第三方API去调用,比如淘宝,百度等,但是就怕请求太频繁了,哪天给我黑名单了, 那我线上程序就挂了,还有一个,在国内用的话,是比较方便的,IP纯真数据库,但是我的IP大部分都是国外,定位在国内是没有什么问题,国外就...原创 2019-10-31 13:40:00 · 2352 阅读 · 0 评论 -
软著源代码快速提取java代码读写-mac
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.Writer;//软著源代码快速提取——java代码读写public class Re...原创 2019-10-22 18:51:43 · 1035 阅读 · 1 评论 -
基于Redis+LUA脚本的令牌桶算法限流策略实现
话不多说了,接口限流算法有很多种基于redis实现的例子,/** * */package com.matrix.cloud.service.redis.ratelimit;import java.util.Collections;import javax.annotation.Resource;import org.springframework.beans.f...原创 2018-12-21 18:42:40 · 2336 阅读 · 4 评论 -
Rabbitmq延迟消息队列和定时执行任务等
有时候我们希望需要隔多长时间执行一次,或者消费消息,并不是立刻通知他人,比如30分钟后订单失效,1小时后提醒通知等这个时候就需要延迟的执行时间,Rabbitmq可以设置队列和消费的过期时间, 我们需要利用两个队列来转发实现这样的延迟消费, queue1队列设置的过期时间,queue2死信队列从queue1队列过期后转发而来,然后消费队列。 话不多说,贴一些重要代码1 核心 配...原创 2018-12-20 15:59:16 · 6332 阅读 · 1 评论 -
SpringBoot2.0集成Quartz实现动态定时任务
多任务情况下,quartz更容易管理,可以实现动态配置 执行时间表达式: 表达式示例: 微服务启动时 必须加上@EnableScheduling下面是单纯schedule 用法,简单@Scheduled(cron="0/5 * * * * ?") public void job(){ System.out.println("每五秒执行一次");...原创 2018-12-14 19:46:54 · 4416 阅读 · 1 评论 -
CentOS 7下安装配置RabbitMQ详细教程 虚拟机安装
yum install net-toolsyum install yumyum install gcc glibc-devel make ncurses-devel openssl-devel xmlto前面三步是安装必做的, 还有些坑是版本号没对应上,erlang版本和rabbitMQ的版本必须一致,这个MQ官网有介绍,就是这个坑 查找了一天时间。差点放弃...原创 2018-06-23 14:23:31 · 390 阅读 · 0 评论 -
MAC安装MYSQL
安装 Homebrew安装工具官网https://brew.sh/index_zh-cn输入下面命令去终端,然后按任意键继续/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"开始用命令安装MYSQL 示例如下安装mysql...原创 2019-06-19 18:23:38 · 826 阅读 · 0 评论 -
Spring Boot 配置多个RabbitMQ,多个消息源发送不同服务器IP
项目代码构造这里写图片描述关注点在红框的代码。。。代码下面就把项目的代码展示下来application.properties配置文件spring.application.name=rabbitmq-hello# RabbitMQspring.rabbitmq.first.host=node9spring.rabbitmq.first.po...原创 2018-06-19 18:19:46 · 1261 阅读 · 4 评论 -
JVM内存调优
JVM 几个重要的参数Linux下修改JVM内存大小: linux下tomcat的参数JAVA_OPTS必须设在catalina.sh中cygwin=false前 要添加在tomcat 的bin 下catalina.sh 里,位置cygwin=false前 。注意linux下设置JAVA_OPTS需要把引号带上,红色的为新添加的.# OS specific support. $v...原创 2018-12-24 18:24:26 · 1053 阅读 · 0 评论 -
Java String.intern的深入研究分析
String.intern方法在jdk1.7之前和之后的区别:简单的说其实就一个:在jdk1.7之前,字符串常量存储在方法区的PermGen Space。在jdk1.7之后,字符串常量重新被移到了堆中。 Back---重回String设计的初衷:Java中的String被设计成不可变的,出于以下几点考虑:1. 字符串常量池的需要。字符串常量池的诞生是为了提升效率和减少内存...原创 2019-02-15 18:12:10 · 292 阅读 · 1 评论 -
Spring Boot + Sharding-JDBC快速简单实现数据库读写分离
官网说明① Sharding-JDBC是一个开源的分布式数据库中间件解决方案。它在Java的JDBC层以对业务应用零侵入的方式额外提供数据分片,读写分离,柔性事务和分布式治理能力。并在其基础上提供封装了MySQL协议的服务端版本,用于完成对异构语言的支持。 ② Sharding-JDBC是基于JDBC的客户端版本定位为轻量级Java框架,使用客户端直连数据库,以jar包形式提供服务,无需...原创 2019-03-01 19:11:02 · 315 阅读 · 0 评论 -
docker容器通过ping直接运行获取公网IP
通过容器获取本机的公网ip 可以用本地IP 多服务注册中心把命令改居ping 执行可以拿到不同的服务器信息 public static String getIfconfigIP() { BufferedReader in = null; String outline = ""; // timeOut window为ms lin...原创 2019-04-24 15:16:40 · 2182 阅读 · 0 评论 -
springboot启动后执行某个方法的三种实现方式,且不影响提供服务
第一种方式,应该也是最简单的方式直接在方式上面注入,但是会影响服务提供,比如这个方法要执行五分钟 这五分钟之内是无法提供服务的,这个方法是在服务初始化后之前运行, 所以 此方法运行不结束,服务就无法初始化, 在这过程路也无法提供服务 @PostConstruct public void pingStart(){ System.out.println(" ...原创 2019-06-18 17:57:04 · 33554 阅读 · 1 评论 -
springboot+异步线程池使用
今天在调试流量采集信息的时候, 发现异步线程池不管用,无论怎么修改都无法启自定义的线程池,后来发现,springboot注解的方法,必须还是需要注入对象的方式调用,标准方式如下* 一、异步方法使用static修饰* 二、异步类没有使用@Component注解(或其他注解)导致spring无法扫描到异步类* 三、异步方法不能与被调用的异步方法在同一个类中* 四、类中需要使...原创 2019-06-26 22:16:41 · 3931 阅读 · 0 评论 -
类设计技巧
[size=medium](1)一定要将数据设计为私有,绝对不能破坏封装性(2)一定要对数据初始化(3)不要在类上使用过多的基本数据类型,就是用户信息与地址信息实例域分开(4)不是所有的域都需要独立的域访问器和域更改器(5)使用标准格式进行类的定义 一定采用下面的顺序书写类的内容1公有访问特性部分2包作用域访问特性部分3私有访问特性部分在第一部分中应该按照下...原创 2011-12-23 14:13:08 · 96 阅读 · 0 评论 -
SpringBoot注入多实例,多线程处理方式
https://www.cnblogs.com/qindongliang/p/5808145.html 转载出处Spring-Boot中如何使用多线程处理任务看到这个标题,相信不少人会感到疑惑,回忆你们自己的场景会发现,在Spring的项目中很少有使用多线程处理任务的,没错,大多数时候我们都是使用Spring MVC开发的web项目,默认的Controller,Service,Dao组件...原创 2018-06-19 14:21:00 · 897 阅读 · 0 评论 -
原 局域网笔记本ping不通台式机,MYSQL错误 NO.1130 ERROR
同一局域网 笔记本ping不同台式机,mysq客户端连接数据库服务,报错的问题公司笔记本拿出来,在台式机电脑安装了mysql服务器, 只有台式机能ping通笔记本,笔记本是ping不通台式机的,原因是win10系统默认有防火墙,全部都是启用状态, 这样局域网都ping不通,解决办法,把台式机的两个防火墙都 关掉,1 域网络 防火墙已关闭2 专用网络 防火墙已关闭这两个都 要...原创 2018-06-14 15:16:00 · 193 阅读 · 0 评论 -
redis脚本lua实现分布式锁,分布式锁
项目是基于springboot开发,前提要把redis环境配置好使用一个中心化的锁服务首先,我们需要一个所有线程都可以访问到的地方来存储锁。这个锁只能存在于一个地方,从而保证只有一个权威的地方可以定义锁的建立和释放。Redis是实现锁的一个理想的候选方案。作为一个轻量级的内存数据库,快速,事务性和一致性是选择redis所为锁服务的主要原因。设计锁锁本身是很简单的,......原创 2018-12-12 20:45:44 · 3913 阅读 · 0 评论 -
Grails1.3.7 初学者注意的问题
开发环境:IntelliJ IDEA 11.0.1, Grails1.3.7 刚刚接触这个工具和框架,什么都不清楚,最近遇到些小问题,但都让自己搞得头痛比如数据的配置, 1。 生成和修改数据库的时候,都要 dbCreate = "" update or create-drop' 这是要写的两个参加,意义各不相同,刚开始改实体类的时候,不知道修改,2 自动生成的四个页面,改...原创 2012-02-03 17:02:32 · 155 阅读 · 0 评论 -
struts1.2 和spring ,hibernate整合
项目结构图:jsp部分为:index.jsp;success.jsp;fail.jspUserDAO.java,User.hbm.xml自动生成,HibernateSessionFactory是多余的。 1. 首先开始搭建项目环境,步骤如下:使用平台:MyEclipse 6..8框架版本:Struts 1.2 Hibernate 3.0 Spring 2.01> ...原创 2012-05-25 10:24:00 · 133 阅读 · 0 评论 -
Random随机生成ID
[size=medium]常用UUID public static String RandomStringId(){ // UUID uuid = UUID.randomUUID(); String s = UUID.randomUUID().toString(); //去掉“-”符号 ret...原创 2011-12-30 14:12:55 · 1106 阅读 · 0 评论 -
JAVA简单抽象实现方法
public abstract class Person { private String name; public Person(String name) { this.name=name; } public abstract String desption(); public String getName() { return name; } ...原创 2011-12-26 11:30:21 · 214 阅读 · 0 评论 -
java实现导出excel表
package com.experot;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.text.ParseException;import java.text.SimpleDateFormat;impo...原创 2011-12-22 19:58:27 · 95 阅读 · 0 评论 -
使用Nginx实现灰度发布的理解和Cookie创建
灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test ,ABTestingGateway就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。灰度发布常见一般有三种方式: Nginx+LUA方式 ...原创 2018-11-07 11:06:46 · 3149 阅读 · 0 评论 -
Spring缓存注解@Cacheable,@CachePut , @CacheEvict使用
设置过期时间没有效果,需要重新测试一遍,测试过的数据都 写在注释里了, // sync 异步执行必须是只有一个缓存标记 不能这样value={"VersionModel","versiontest"}一起使用 @Override //@Cacheable(value={"VersionModel","versiontest"},key="\"applicationLis...原创 2018-11-09 19:54:00 · 637 阅读 · 0 评论 -
百度地图经纬度获取详细地址以及经纬度计算距离
就是一个HTTP请求,返回给定的经纬度地址,什么包都没有导入private String getMapaddress(String lats,String lngs){ try{ String lat = "39.983424"; // 纬度 String lng = "116.322987"; // 经度 // AK ...原创 2018-10-16 16:58:19 · 7929 阅读 · 2 评论 -
接口调用频繁限制,接口限制流量
这是第一种接口的方式,可能对性能有些影响,但是同一数据只能保存一次,感觉有点麻烦,过期数据无法清理,缓存会越变越大,要考虑数据如何重复和数据清除问题,没有redis方便并发安全的KEYstatic ConcurrentHashMap<String, Long> overdues = new ConcurrentHashMap<String, Long>();...原创 2018-09-27 22:04:30 · 7437 阅读 · 0 评论 -
时间字符串转换
字符串转换成时间DateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置格式Date d = f.parse("2007-09-11 12:15:47"); 时间转换成字符串SimpleDateFormat tempDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"...原创 2012-06-13 15:23:22 · 86 阅读 · 0 评论 -
从Word读出写入txt文本
package com.purang.pdf;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import org.textmining.text.extraction.WordExtractor;public cla...原创 2012-02-16 17:13:05 · 154 阅读 · 0 评论 -
从PDF读写到TXT文本
package com.purang.pdf;import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.net.MalformedURLException; ...原创 2012-02-16 17:13:11 · 135 阅读 · 0 评论 -
redis 两种秒杀实现 lua脚本redis事务实现商品秒杀
redis 利用单线程 IO多路复用 实现了 单命令操作的原子性,但是多个命令的操作就不具备原子性。不过可以利用redis 事务 或者 lua脚本 来实现 多命令操作的原子性。本文试图通过模拟商品秒杀活动,演示怎么实现redis多命令操作具有原子性。用到的工具: spring boot ,redis template,lua脚本。redisTemplate.excute(Sess...原创 2018-12-12 18:26:50 · 2653 阅读 · 1 评论 -
单例模式的几种常用方式
1.Singleton最多只有一个实例,在不考虑反射强行突破访问限制的情况下。 2.保证了并发访问的情况下,不会发生由于并发而产生多个实例。 3.保证了并发访问的情况下,不会由于初始化动作未完全完成而造成使用了尚未正确初始化的实例。1 双重加锁。/** * @author lmc * @Email huyang@126.com * @date 2018年11月28日...原创 2018-11-28 17:38:59 · 458 阅读 · 0 评论