java
文章平均质量分 50
java知路
这个作者很懒,什么都没留下…
展开
-
java 跨站攻击脚本过滤工具类
java 跨站攻击脚本过滤工具类原创 2022-11-23 16:02:35 · 463 阅读 · 0 评论 -
MyBatis SqlSessionFactory及其常见创建方式
MyBatis SqlSessionFactory及其常见创建方式原创 2022-07-14 21:46:54 · 589 阅读 · 0 评论 -
netty实现tomcat(简易版)
netty实现tomcat(简易版)java知路 2022-07-06 08:00 发表于湖北本篇主要是介绍如何用Netty来实现Tomcat简易功能(一、Netty是什么?Netty 是由 JBOSS 提供的一个 Java 开源框架。Netty 提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络 IO 程序,是目前最流行的 NIO 框架,Netty 在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,知名的 Elasticsearch 、D原创 2022-07-05 22:08:03 · 464 阅读 · 0 评论 -
solon spring hello world 性能测试
solon spring hello world 性能测试原创 2022-07-03 21:23:19 · 216 阅读 · 0 评论 -
一文学会Spring Event 事件监听解耦业务
一文学会Spring Event 事件监听解耦业务转载 2022-06-30 14:59:07 · 159 阅读 · 0 评论 -
手写简单版SpringMVC
手写简单版SpringMVC原创 2022-06-22 22:28:44 · 226 阅读 · 0 评论 -
使用java手写一个简单的web服务器(一)
手写javaweb服务器转载 2022-06-21 12:40:07 · 762 阅读 · 0 评论 -
gradle dependencyManagement 使用,导入父级工程依赖
gradle dependencyManagement 使用,导入父级工程依赖原创 2022-06-21 12:33:42 · 1563 阅读 · 0 评论 -
spring native 通过dockerfile 构建镜像
spring native 通过dockerfile 构建镜像原创 2022-06-18 16:01:00 · 703 阅读 · 0 评论 -
mybatis like 模糊查询的三种方式
mybatis like 模糊查询的三种方式原创 2022-06-15 16:54:49 · 116 阅读 · 0 评论 -
gradle jfrog私服配置
buildscript { repositories { maven { url 'https://af-biz.qianxin-inc.cn:443/artifactory/sncbackground' credentials { username = "${artifactory_user}" password = "${artifactory_password}".原创 2021-10-25 15:52:34 · 800 阅读 · 1 评论 -
springboot 2.5.6gradle父子项目
为什么用gradle1.配置更简洁2.更快的编译速度3.更灵活的配置父build.gradle配置plugins { id 'org.springframework.boot' version '2.5.6' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java'}group = 'com.example'version = '0.0.1-SNAPSHOT'source原创 2021-10-24 12:53:53 · 1295 阅读 · 0 评论 -
java gradle 私服配置
buildscript { repositories { maven { url 'https://af-biz.qianxin-inc.cn:443/artifactory/sncbackground' credentials { username = "${artifactory_user}" password = "${artifactory_password}"...原创 2021-10-20 15:28:27 · 1324 阅读 · 0 评论 -
dataway 语法使用,查询,模糊查询,防注入
查询var dataSet = @@sql(item_code) <% select * from category where co_code = #{item_code}%> // ${itemCode} 是参数return dataSet(${itemCode}) => [ { "id","name","code","body" }]原创 2021-10-18 21:26:57 · 603 阅读 · 0 评论 -
spring boot 2.5 mongo多数据库
依赖compile "org.springframework.boot:spring-boot-starter-data-mongodb"maven<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>m原创 2021-08-19 20:35:28 · 601 阅读 · 1 评论 -
java spring data mongo 批量修改
一千条数据修改一千次很慢一千条数据只修改一次很快 @Test public void test() { List<Tasks> taskList = mongoTemplate.findAll(Tasks.class, ArtCommonConstant.CollectionConfig.TASK_COLLECTION); List<Template> templateList = mongoTemplate.findAll原创 2021-08-14 09:59:43 · 406 阅读 · 0 评论 -
Java Guava Cache 使用2021-07-12
maven 依赖<dependency> <groupId>#com.google.guava</groupId> <artifactId>guava</artifactId> <version>30.1-jre</version></dependency>初始化LoadingCache<String, Employee> cache = CacheBuild原创 2021-07-12 15:55:20 · 237 阅读 · 0 评论 -
elasticsearch入门实战
1.介绍Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎。它使您可以近乎实时地快速存储、搜索和分析大量数据。它通常用作支持具有复杂搜索功能和要求的应用程序的底层引擎/技术。Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时原创 2021-05-31 22:06:19 · 151 阅读 · 2 评论 -
springboot 集成redis redission分布式锁
引入依赖maven<!-- https://mvnrepository.com/artifact/org.redisson/redisson-spring-boot-starter --><dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <versi...原创 2021-05-24 20:59:24 · 190 阅读 · 0 评论 -
springboot2.4.5 springcloud alibaba dubbo nacos集成
遇到的坑不支持jdk11,仅jdk8注册中心配置项目结构如下api代码package com.example.demo.api;public interface HelloService { String sayHello(String name);}plugins { id 'java'}repositories { //1.优先查找本地maven库,性能最好 mavenLocal() //2.其次查找...原创 2021-05-21 10:06:21 · 856 阅读 · 0 评论 -
JDK version = 11.0.10, arms agent is not supported.阿里云arms不支持jdk11
阿里云,只有部分区域支持jdk11的arms可以参考以下地址,下载对应地域支持jdk11的Agent 进行配置使用看看。Agent(支持JDK-11)下载地址:杭州:http://arms-apm-hangzhou.oss-cn-hangzhou.aliyuncs.com/2.7.1.1-jdk11/ArmsAgent.zip北京:https://arms-apm-beijing.oss-cn-beijing.aliyuncs.com/2.7.2/ArmsAgent.tar.g.原创 2021-05-06 14:33:53 · 357 阅读 · 0 评论 -
AQS原理,一篇就懂
AQS(队列同步器),是用来构建锁或者其他同步组件的基础框架,它实现了同步状态的管理,线程的排队,等待与唤醒等底层操作。AQS定义两种资源访问方式:Exclusive(独占,只有一个线程能执行,如ReentrantLock)和Share(共享,多个线程可同时执行,如Semaphore/CountDownLatch)。本篇将讲解AQS对独占锁的实现!一:AQS设计思想1.操作与规则分离原则AQS的设计是基于模板方法模式的(ps:定义一个操作中算法的骨架,而将一些步骤延迟到子类中,...转载 2021-04-24 14:10:53 · 4405 阅读 · 0 评论 -
深入理解Java枚举类型(enum)
文章目录# 类加载的机制的层次结构每个编写的".java"拓展名类文件都存储着需要执行的程序逻辑,这些".java"文件经过Java编译器编译成拓展名为".class"的文件,".class"文件中保存着Java代码经转换后的虚拟机指令,当需要使用某个类时,虚拟机将会加载它的".class"文件,并创建对应的class对象,将class文件加载到虚拟机的内存,这个过程称为类加载,这里我们需要了解一下类加载的过程,如下:加载:类加载过程的一个阶段:通过一个类的完全限定查找此类字节码文件,并利用字.转载 2021-04-22 17:43:54 · 629 阅读 · 0 评论 -
Netty实现高性能的五个重要因素
Netty实现高性能的五个重要因素一、异步非阻塞通信1.1 传统BIO1.2 非阻塞NIO1.3 拓展:AIO1.4 I/O多路复用机制1.4.1 select运行机制1.4.2 Poll运行机制1.4.3 Epoll运行机制1.4.4 select、poll、epoll 区别总结:[^1]二、零拷贝2.1 传统数据读写2.2 mmap优化2.3 sendfile方式2.4 Netty的零拷贝三、内存池四、高效的Reactor多线程模型4.1 事件驱动模型4.2 Reac转载 2021-04-17 10:25:05 · 374 阅读 · 0 评论 -
大厂架构演进实战之手写 CAS 单点登录
什么是单点登录单点登录在大型网站里使用得非常频繁,那么什么是单点登录?一句话解释:一处登录,处处登录。比如,淘宝和天猫都属于阿里旗下,账号也是通用的,一个账号即可以登录淘宝,又可以登录天猫,这样也是为了方便用户,如果每个子系统都需要单独注册账号的话就太麻烦了,所以是统一账户可以登录同属于一家公司的所有子系统。那么这些子系统每次都需要登录吗?肯定不是的,比如淘宝登录之后,你在访问天猫就不需要登录,系统会自动识别完成登录的,这就是单点登录。所以单点登录要解决的就是,用户只需要登录一次就可以访问所有相转载 2021-04-09 15:32:36 · 422 阅读 · 0 评论 -
spring中这些能升华代码的技巧,可能会让你爱不释手
前言最近越来越多的读者认可我的文章,还是件挺让人高兴的事情。有些读者私信我说希望后面多分享spring方面的文章,这样能够在实际工作中派上用场。正好我对spring源码有过一定的研究,并结合我这几年实际的工作经验,把spring中我认为不错的知识点总结一下,希望对您有所帮助。一 如何获取spring容器对象1.实现BeanFactoryAware接口@Servicepublic class PersonService implements BeanFactoryAware {转载 2021-03-30 14:06:58 · 105 阅读 · 0 评论 -
Java中for(;;)和while(true)有啥区别?
群里面有小伙伴提了个问题,说在看并发源码的时候,很多时候源码中都使用for(;;)而不是使用while(true),这两个有什么区别吗?这种问题,在java里面,最简单有效的办法就是打印字节码看一下,javap再次华丽丽的登场:实践1. 首先编写一个java文件,内容如下: public class Demo { public void demo1() { for (;;) {} } public ...原创 2021-02-09 17:37:57 · 417 阅读 · 0 评论 -
JVM 性能分析速记(jdk自带)
java 自带的性能分析工具主要在bin目录下,包括jps、jstat、jmap、jhat等另外包括JConsole、Visual VM GUI工具。此处不记录GUI ,且仅记录个人觉得常用有效的命令。一、Jps:jps当前运行的java程序的pid、启动Mainjps -v启动的pid 、 Main 与启动VM参数,不包含默认启动参数,如要查看默认启动参数使用 jinfo -flags ${pid}二、jstat 查看java 运...原创 2021-02-02 17:21:39 · 184 阅读 · 0 评论 -
值得推荐的Idea十几大优秀插件
最近,闲来无事,为了改变一下枯燥的编程环境,特地搜寻了下有助提升代码功力的插件,够装逼,够狂,拽,屌~ 绚丽的画面,多彩的跳动,让你区别其他程序猿。产品,测试,开发看到你的界面,眼睛都会发光~ 算了,我实在是编不下去,自己去体验吧~PS:☆ 半星★ 一星 主要是以狂拽屌指数来排名12、Stackoverflow这个插件其实是最实用的插件,程序猿遇到的问题,基本都能找到回答,但是它使用的是google搜索引擎,对于,不购买vpn的同学来说,感觉好鸡肋呀~选中需要搜索的问题...转载 2021-01-16 15:35:11 · 220 阅读 · 0 评论 -
静态代理,jdk动态代理以及Cglib区别
众所周知,Spring AOP中涉及到了动态代理模式,那么有动态代理相应的就会有静态代理。那么动态代理分为哪几种,相对应的区别又是什么呢? 首先什么是代理? 找一个东西或者一个人去帮你做事,比如常说的中介就是一个代理,各大经销商的代理商等等。JAVA中的代理即是指将自己的事情委派给别人帮忙去完成。 静态代理:代理的是程序员已经创建好的类,也就是说当前仅有一个对象能被成功代理。上代码看下 首先是一个需要代理的接口类 该类描述了两个方法,一个是eat...转载 2021-01-11 13:44:48 · 138 阅读 · 0 评论 -
线程的本质(操作系统与CPU是如何执行线程的)
目录线程撕裂者线程可见性线程:有序性指令重排DCL写法如何修正这个问题?volatileJvm中不可重排的8种指令HappensBefore线程数应该设置多少?多核CPU线程撕裂者寄存器:用来保存计算所需要的数据ALU:计算单元:维护一组寄存器多线程:一个CPU维护多组寄存器,需要完成线程切换从CPU到内存之间:工业上最多有三层缓存一颗CPU里包含多个CPU核线程可见性 public static void m...转载 2020-12-02 10:36:05 · 461 阅读 · 0 评论 -
快速用ELK搭建日志收集平台
elasitc.coELK是elastic.co发布的三个产品,分别是elasticsearch, logstash, kibana,分别用来做搜索引擎、日志收集和报表展现。这三个东西经常被用到的业务场景就是日志收集展现。本文将从实用角度出发,教你如何用ELK快速搭建一个日志收集平台。elasticsearch运行elasticsearch ./bin/elasticsearch -d 测试运行状态 curl localhost:9200 创建索引 e...转载 2020-11-07 15:15:14 · 372 阅读 · 0 评论 -
一篇文章让您了解HTTPS
前段时间在做HTTPS相关的需求碰到了一些问题,今天有空整理一下HTTPS的相关知识,希望对您能有所帮助。HTTPS什么是HTTPSHTTPS,即HTTP Security,是建立在SSL / TSL协议之上,其中,TSL是SSL协议的升级版,TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3,可以理解为同一套协议。他的作用主要以下三点: 防止窃听。 所有信息都是加密传播,第三方无法窃听。 防止篡改。具有校验机制,一.转载 2020-11-04 17:39:53 · 1848 阅读 · 1 评论 -
springboot 提高启动速度
@SpringBootApplication 替换为@Configuration@EnableAutoConfiguration//@SpringBootApplication@Configuration@EnableAutoConfigurationpublic abstract class AppRunner {// ......}在我的项目中,是这样的//@SpringBootApplication(exclude = {// DataSourceAutoCo原创 2020-11-03 17:38:05 · 2063 阅读 · 0 评论 -
Netty入门教程——认识Netty
Netty什么是Netty?Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。Netty 是一个广泛使用的 Java 网络编程框架(Netty 在 2011 年获得了Duke's Choice Award,见https://www.java.net/dukeschoice/2011)。它活跃和成长于用户社区,像大型公司 Facebook 和 Instagram 以及流行 开源项目如 Infinispan, HornetQ..转载 2020-10-30 10:01:07 · 199 阅读 · 0 评论 -
手写一个Tomcat
作为一个java学习的起步者,对tomcat的认识还是有很多的欠缺,在无意中发现了这篇文章,便在自己的环境下尝试搭建,收获良多:分以下几个步骤:(1)提供Socket服务(2)进行请求的转发(3)把请求和响应封装成request/response代码实现如下:1、工程截图:2、封装请求对象:通过输入流,对HTTP协议进行解析,拿到了HTTP请求头的方法和URL:/** * @author wangjie * @version 2018/11/9 * 封装请求对象 * 通过输入流,转载 2020-09-07 17:57:01 · 107 阅读 · 0 评论 -
JAVA 线上故障排查完整套路,从 CPU、磁盘、内存、网络、GC 一条龙!
JAVA线上故障排查全套路发表于2019-11-03 | 0条评论 | 热度5106°C线上故障主要会包括cpu、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的,基本上出问题就是df、free、top 三连,然后依次jstack、jmap伺候,具体问题具体分析即可。CPU一般来讲我们首先会排查cpu方面的问题。cpu异常往往还是比较好定位的。原因包...转载 2020-09-05 17:33:24 · 172 阅读 · 0 评论 -
压缩20M文件从30秒到1秒的优化过程
正文 有一个需求需要将前端传过来的10张照片,然后后端进行处理以后压缩成一个压缩包通过网络流传输出去。之前没有接触过用 Java 压缩文件的,所以就直接上网找了一个例子改了一下用了,改完以后也能使用,但是随着前端所传图片的大小越来越大的时候,耗费的时间也在急剧增加,最后测了一下压缩20M的文件竟然需要30秒的时间。压缩文件的代码如下。 public...转载 2020-09-05 17:30:37 · 144 阅读 · 0 评论 -
spring boot2 修改默认json解析器Jackson为fastjson
为什么要修改,转化出错,某些情况下转为后的json为空引入依赖maven<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <g.原创 2020-08-28 18:17:59 · 350 阅读 · 0 评论 -
jackson 封装JsonUtil 工具类
package com.futve.example.common.tool;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;import java.io.IOException;/** * @author chenye * 操作json的封装方法 * https://mvnrepository.com/artifac.原创 2020-08-28 10:56:43 · 1226 阅读 · 0 评论