java后端
0x2015
不会修手机电脑的码农不是好程序员
展开
-
Java-Thread-Affinity框架使用及原理分析
文章目录前言简介实操实现原理windows下分析Linux下分析进程/线程亲和的思想很常见1、nginx上可以使用进程亲和2、Netty的eventLoop也可以使用线程亲和前言前一段时间在实现生产消费队列模型,参考了disruptor的等待策略,对比各种策略的区别,然后发现了BusySpinWaitStrategy忙等策略中注释写的一段话,It is best used when threads can be bound to specific CPU cores.当线程可以被绑定到特定的CPU核心时原创 2020-12-18 00:29:00 · 3717 阅读 · 2 评论 -
spring boot内嵌tomcat优雅的开启apr模式
文章目录简介Win下开启APRLinux下开启APR把lib打进jar包简介环境: jdk8、spring boot 2.3.4.RELEASE、centOS7.3、win7在spring boot启动的时候常常会看到这样的ERROR日志,说是本地的Tomcat Native library版本太低,这里就来解决这个问题2020-10-29 14:22:54.229 ERROR 11152 --- [ main] o.a.catalina.core.AprLifecycleLis原创 2020-10-29 18:07:41 · 5033 阅读 · 0 评论 -
使用国密(SM3WithSM2)对jwt进行签名
文章目录环境背景介绍国密系列简要介绍实操1、首先去git上把开源项目拉下来2、关于曲线参数修改3、生成证书4、引入pom5、签名验签思路6、编码7、单元测试环境jdk8、spring boot 2.3.4、java-jwt 3.11.0、bouncycastle 1.65背景介绍在多个系统之间,由于调用链长,使用了jwt token的方式鉴权,然后获取相应的资源,这里用到核心的一点就是jwt的防篡改特性。以往使用的签名算法大都是HS256(HMAC with SHA-256)、RS256(RSAS原创 2020-10-15 21:12:03 · 29153 阅读 · 4 评论 -
java中png转索引图压缩图片
文章目录背景png格式简介图片压缩实操使用OpenViewerFX使用pngquant(JNI调用)在linux下构建在win下构建JNI调用关于pngquant的jni动态链接库文件下载背景需求是大大的减小彩信图片的体积,可以发送更多数量的彩信图片,图片的内容是报表,颜色单一。最开始把透明色去掉了,位深从32->24,但是最近测试发现彩信图片体积还是太大了,这就需要去学习图片压缩的知识了png格式简介PNG格式有8位、24位、32位三种形式,其中8位PNG支持两种不同的透明形式(索引透明和a原创 2020-08-12 18:14:51 · 2229 阅读 · 0 评论 -
使用dynamic-datasource-spring-boot-starter做多数据源及源码分析
多数据源系列1、spring boot2.0 +Mybatis + druid搭建一个最简单的多数据源2、利用Spring的AbstractRoutingDataSource做多数据源动态切换3、使用dynamic-datasource-spring-boot-starter做多数据源及源码分析文章目录多数据源系列简介实操基本使用集成druid连接池源码分析整体结构总结简介前两篇博客介绍了用基本的方式做多数据源,可以应对一般的情况,但是遇到一些复杂的情况,比如:动态增减数据源、数据源分组,纯粹多原创 2020-06-29 20:39:11 · 82426 阅读 · 27 评论 -
利用Spring的AbstractRoutingDataSource做多数据源动态切换
多数据源系列1、spring boot2.0 +Mybatis + druid搭建一个最简单的多数据源2、利用Spring的AbstractRoutingDataSource做多数据源动态切换3、使用dynamic-datasource-spring-boot-starter做多数据源及源码分析简介搭建多数据源有多种方式,上一篇博客介绍了一种最基本的方式搭建多数据源,就是把每个数据源配置了一个DataSource的Bean,这种方式显得比较繁琐,mapper也要放在不同的地方,这里介绍一种动态切换原创 2020-06-17 18:08:44 · 3778 阅读 · 1 评论 -
spring boot中使用Bean Validation做优雅的参数校验
文章目录Bean Validation简介Bean Validation作用基本使用常用注解作用于成员变量(Field-level constraints)嵌套对象校验继承对象校验作用于类上,自定义校验(Class-level constraints)使用全局异常处理实战自定义参数校验Bean Validation简介Bean Validation是Java定义的一套基于注解的数据校验规范,目前已经从JSR 303的1.0版本升级到JSR 349的1.1版本,再到JSR 380的2.0版本(2.0完成于原创 2020-06-16 21:12:28 · 8219 阅读 · 3 评论 -
Ubuntu下编译JDK源码并使用clion断点debug
本地环境准备Ubuntu20.04、jdk8u262-b02、make4.2.1 、gcc 7.5.0、Clion2019.2开始之前试过在centOS7.3、win7下build,可能是环境的问题,在win7下无法debug进源码,想着也不是经常debug这玩意,就学习的时候用,那么就用Ubuntu虚拟机搞一个环境供学习用就可以了下载源码这次下载一个标准版,进入jdk8u仓库,下载版本jdk8u262-b02可以使用hg下载,当然我这里为了方便直接点击zip下载,网速慢的使用科学上网官方仓库原创 2020-05-25 11:20:46 · 1180 阅读 · 2 评论 -
使用javacv给报表图片去白边并打包上线
环境java1.8.0_191、javacv1.5.2、opencv4.1.2、spring boot 1.5.10、centOS7.2 x64问题描述注意:前面是解决问题的一个过程描述,如果想看javacv、linux上线打包的重点部分就直接跳到最后的问题解决中第二种思路业务场景是将一些报表图片通过彩信发送到手机,因为是发送彩信,所以对每张图片的大小有很大的限制。这里是保存文本表格,它们...原创 2020-03-12 16:11:53 · 1580 阅读 · 1 评论 -
HTTP缓存介绍及在spring boot中设置HTTP缓存
介绍在工作之余阅读缓存相关的书籍时,看到了http缓存相关的知识,HTTP 缓存机制是一个 web 性能优化的重要手段,无论是做前端还是做web后台,都可能会用得到它,应该是知识体系库中的一个基础环节,以前这一块学的不是很扎实,现在巩固巩固。HTTP缓存可以说是浏览器缓存的其中一种,浏览器缓存也包含很多内容: HTTP 缓存、indexDB、cookie、localstorage 等等。这里我...原创 2019-06-20 20:02:10 · 11062 阅读 · 0 评论 -
使用protostuff + redis做mybatis二级缓存
实操 <dependency> <groupId>redis.clients</groupId> <artifactId>原创 2019-03-14 18:06:47 · 705 阅读 · 0 评论 -
git rebase -i合并多次提交
简介在日常开发中,代码变更比较频繁,有时候想让前几次提交的合并为一次提交,这里可以使用git rebase -i 命令来完成,当然,git rebase命令不仅仅用于合并提交,它还有许多用处,比如可以使用git rebase onto将某一段commit粘贴到另一个分支上等等,这里主要介绍合并提交。命令介绍rebase为变基git rebase -i 命令可以压缩合并多次提交格式:git...原创 2019-01-22 17:05:51 · 56218 阅读 · 5 评论 -
spring boot2.0 +Mybatis + druid搭建一个最简单的多数据源
在大部分情况下,搭建单数据源就能够满足需求了,但是特殊情况下也需要使用多数据源,这里就写了一个demo搭建多数据源,注意这里没有使用AbstractRoutingDataSource 来实现动态切换实操文件结构先上pom,这里只截取了关键的依赖 <parent> <groupId>org.springframework.boot</groupId>..原创 2018-11-16 17:50:47 · 3728 阅读 · 1 评论 -
从零开始通过idea插件将一个spring boot项目部署到docker容器里运行
实操:将一个spring boot项目部署到docker容器里运行实验需要的环境:腾讯云+Ubuntu 16.04 x64+idea+插件docker integration+daocloud第一步,安装操作系统首先在腾讯云上安装一个干净的Ubuntu系统 系统使用Ubuntu 16.04 64位 这里服务市场虽然有docker,但是版本都太低(1.8.2左右),现在的...原创 2018-02-20 14:28:38 · 14091 阅读 · 1 评论 -
nohup和&的区别
转自:nohup和&的区别 https://blog.csdn.net/zhang_red/article/details/52789691nohup是永久执行&是指在后台运行运行 nohup –help Run COMMAND, ignoring hangup signals. 可以看到是“运行命令,忽略挂起信号”就是指,用nohup运行命令可以使命令永久的执行...转载 2018-03-27 21:44:03 · 549 阅读 · 0 评论 -
在eureka中使用ip注册服务
在将微服务放入docker部署在多个云服务器上的时候,发现eureka里显示的是机器名,然后弄了个spring boot admin监控平台,发现它就找不到各个微服务对应的主机了。 在网上查得eureka.instance.prefer-ip-address=true,使用这条配置eureka里显示的就是ip地址了,但是依然不够的,在监控平台里面还是连接不上。还需要配置instance-和h...原创 2018-03-27 22:29:15 · 22784 阅读 · 1 评论 -
使用JWT做微服务的登录方案
由于微服务大都是分布式的,需要几台服务器部署,当一个用户在其中一台服务器登录后,传统的方式是session保存其登录信息,然后可以使用共享存储共享,比如redis共享,这种方案的缺点在于共享存储需要一定保护机制,因此需要通过安全链接来访问,这时解决方案的实现就通常具有相当高的复杂性了,所以这里使用基于令牌的方式做登录。JWT简介简介网上都有,下面是摘抄的一部分,做做笔记。。。JWT(J...原创 2018-03-06 21:08:37 · 32014 阅读 · 20 评论 -
2018年最全Java面试通关秘籍汇总集
此套面试题适用于Java开发的各个阶段面试,不过更偏向初级和中级开发人员!由于每一个问题的答案不唯一且都可以在网上搜索到答案,这里只给出问题,不列出参考答案。一、基础篇1.1、Java基础 面向对象的特征:继承、封装和多态final, finally, finalize 的区别Exception、Error、运行时异常与一般异常有何异同请写出5种常见到的runtime ex...转载 2018-05-30 17:13:51 · 322 阅读 · 0 评论 -
idea中配置JNDI数据源
前言在公司接触一个报表项目时,发现里面使用的JNDI配置的数据源,在web.xml中有resource-ref这个标签,这种方式跟传统的JDBC连接还是有些区别JNDI简介JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服...原创 2018-09-20 14:54:16 · 10964 阅读 · 0 评论 -
spring hateoas初体验
前一段时间学习工作流偶然接触到了hateoas,感觉比较有意思,虽然用的不是那么多,但是加强了自己对restful的理解。hateoas简介HATEOAS是Hypertext As The Engine Of Application State的缩写。在Richardson Maturity Model中, 它是REST的最高级形态。在介绍 HATEOAS 之前,先介绍一下 Richards...原创 2018-09-29 11:13:02 · 21689 阅读 · 4 评论 -
Java中的强引用、软引用、弱引用、虚引用
在读ThreadLocal源码的时候遇到了WeakReference,然后就仔细学习引用方面的知识,现在转载一篇博客。。一.了解 强引用、软引用、弱引用、虚引用的概念在Java中,虽然不需要程序员手动去管理对象的生命周期,但是如果希望某些对象具备一定的生命周期的话(比如内存不足时JVM就会自动回收某些对象从而避免OutOfMemory的错误)就需要用到软引用和弱引用了。从Java SE2开始...转载 2018-09-29 17:15:37 · 391 阅读 · 0 评论 -
使用jmeter向db2数据库批量插入测试数据
JMeter是Apache组织开发的基于Java的压力测试工具,现在来模拟线上环境,插入千万条数据来测试性能实操首先下载jmeterhttp://jmeter.apache.org/download_jmeter.cgi下载完成解压然后配置jmeter的环境变量最后在bin目录下的jmeter.bat打开jmeter添加一个线程组添加jar包到构建路径,jmeter由于使用...原创 2018-10-17 10:03:07 · 2298 阅读 · 1 评论 -
Java 诊断利器-Arthas的基本使用
简介Arthas 是阿里巴巴最近才开源出来的一款 Java 诊断利器,它主要是针对线上环境,能够帮助我们更好的定位问题。Case:https://github.com/alibaba/arthas/issues?q=label%3Auser-case官方文档: https://alibaba.github.io/arthas官方文档还是比较详细的,这里就挑几个觉得好用的来实操一下实操...原创 2018-11-20 18:16:13 · 5101 阅读 · 0 评论 -
分布式架构的演进
这是前几天在知乎上看到的,感觉受益匪浅,转载转载。。。系统架构演化历程-初始阶段架构 初始阶段 的小型系统 应用程序、数据库、文件等所有的资源都在一台服务器上通俗称为LAMP特征:应用程序、数据库、文件等所有的资源都在一台服务器上。 描述:通常服务器操作系统使用linux,应用程序使用PHP开发,然后部署在Apache上,数据库使用Mysql,汇集各种免费开源软件以及一台廉价服务器就可以开始系统转载 2017-12-07 22:03:28 · 797 阅读 · 0 评论