java
文章平均质量分 54
justsomebody126
这个作者很懒,什么都没留下…
展开
-
mybatis & ibatis
mybatis 是 ibatis 的进阶版https://www.jianshu.com/p/b8cbf023df0d打印 mybatis sql 日志打印 mybatis sql 日志到控制台/src/main/resources/mybatis-config.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//E原创 2022-03-02 12:02:45 · 146 阅读 · 0 评论 -
jvm 参数
内存相关参数-Xmx1024m:设置JVM最大可用内存为 1024M。-Xms1024m:设置JVM初始内存为 1024M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。-Xmn200m: 设置年轻代大小为200M-Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无原创 2021-10-21 17:21:24 · 1010 阅读 · 0 评论 -
gc log 分析
参考文档https://juejin.cn/post/6973919880235974693PSYoungGen2021-10-21T12:46:54.429+0800: 3735.842: [GC (Allocation Failure) [PSYoungGen: 192698K->61456K(196608K)] 442248K->315677K(458752K), 0.0189804 secs] [Times: user=0.10 sys=0.00, real=0.02 secs]原创 2021-10-21 16:02:26 · 709 阅读 · 0 评论 -
java 正则
正则语法match 是全匹配find 是部分匹配(pattern)是捕捉https://www.runoob.com/java/java-regular-expressions.html正则测试及 java 代码生成https://c.runoob.com/front-end/854捕捉例子tsoPattern = Pattern.compile("/\\*TSO=([\\W\\w]+)\\*/");Matcher matcher = tsoPattern.matcher(sql);原创 2021-04-11 23:56:45 · 82 阅读 · 0 评论 -
mysql 防止依赖注入
参数注入导致注入String name = request.getParameter("name");String query = String.format("SELECT account_balance FROM user_data WHERE user_name ='%s'", "table_a");PreparedStatement pstmt = connection.prepareStatement( query );pstmt.setString( 1, name);Resul原创 2021-03-22 13:43:39 · 301 阅读 · 0 评论 -
线程池以及 reject 策略
这篇文章讲得很好https://tech.meituan.com/2020/04/02/java-pooling-pratice-in-meituan.html这篇有拒绝策略的演示https://blog.csdn.net/w605283073/article/details/89930154任务调度首先,所有任务的调度都是由execute方法完成的,这部分完成的工作是:检查现在线程池的运行状态、运行线程数、运行策略,决定接下来执行的流程,是直接申请线程执行,或是缓冲到队列中执行,亦或是直接拒绝该转载 2021-03-11 10:47:11 · 491 阅读 · 0 评论 -
一个最简单的 HttpServer
@Slf4jpublic class SimpleHttpServer{private static CountDownLatch endSignal = new CountDownLatch(1);public static void main(String[] args) { try { new SimpleHttpServer().start(); endSignal.await(); } catch (Throwable e) {原创 2021-02-01 15:29:59 · 113 阅读 · 0 评论 -
Logback - SiftingAppender
https://www.jianshu.com/p/a33902d58530原创 2020-12-21 11:04:59 · 321 阅读 · 0 评论 -
HttpURLConnection keep-alive 问题
问题private static void download(String downloadURL) { File localReviseFile = new File("/home/admin/1.log"); HttpURLConnection connection = null; InputStream inputStream = null; try { URL url = new URL(downloadURL原创 2020-12-17 16:47:55 · 2561 阅读 · 3 评论 -
java mock 静态方法
https://blog.csdn.net/HPLJAVA/article/details/81940368@RunWith(PowerMockRunner.class)@PrepareForTest(RplTaskManager.class)public class RplTaskTest { @Test public void test() { mockTaskConfig(); RplTask task = new RplTask(1);原创 2020-12-08 18:23:00 · 803 阅读 · 0 评论 -
tomcat 启动报错 SocketException: Permission denied at sun.nio.ch.Net.bind0
Spring-Boot 工程,启动时报错:Caused by: org.apache.catalina.LifecycleException: Protocol handler start failed at org.apache.catalina.connector.Connector.startInternal(Connector.java:1038) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:原创 2020-06-28 14:09:08 · 968 阅读 · 1 评论 -
违反ClassLoader双亲委派机制三部曲第二部——Tomcat类加载机制
前言:本文是基于 ClassLoader双亲委派机制源码分析 了解过正统JDK类加载机制及其实现原理的基础上,进而分析这种思想如何应用到Tomcat这个web容器中,从源码的角度对 违反ClassLoader双亲委派机制三部曲之首部——JDBC驱动加载 中提出的Tomcat是如何完成多个web应用之间相互隔离,又如何保证多个web应用都能加载到基础类库的问题进行了解答,我们按如下的思路布局整篇文章:先给出Tomcat整体的类加载体系结构 通过查看源码验证该类加载体系的正确性 总结Tomcat如何.转载 2020-05-21 10:45:38 · 152 阅读 · 0 评论 -
java 并发工具类
在Java并发编程中我们往往需要一些工具类来实现我们的功能,JDK给我们提供了一些工具类,合理地使用它们能帮忙我们快速地完成功能。下面来学习一下这些工具类的使用吧!一.等待多线程完成的CountDownLatchCountDownLatch允许一个或多个线程等待其他线程完成操作。假设有这样一个需求,主线程需要等待其他几个线程完成后再继续执行。一种方案是使用join方法。在主线程中调用其它线程的join方法,每调用一个join,如果该线程没有结束主线程就会阻塞在这里。直到该线程结束主线程才变为转载 2020-05-11 00:52:14 · 109 阅读 · 0 评论 -
交叉打印 0-100
public class Solution { public static void main(String[] args) { Solution s = new Solution(); Runnable r = () -> s.jiaocha(); new Thread(r).start(); new Thread(r).start(); Thread.sleep(100000); } vola原创 2020-05-11 00:43:29 · 191 阅读 · 0 评论 -
关于Zookeeper框架Curator中的主从选举框架LeaderLatch的坑
根据网上给的LeaderLatch的示例代码写的业务代码,这里面用到的serverId是从配置中读取的(每个新部署的实例自动生成,之后一直不变)@PostConstructpublic void setUp() throws Exception { RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3); c...转载 2020-04-10 16:56:50 · 735 阅读 · 1 评论 -
Spring 原理相关文章
https://blog.csdn.net/a909301740/article/details/78985658?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158645248119724835848113%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D...原创 2020-04-10 01:32:23 · 64 阅读 · 0 评论 -
并发框架Disruptor译文
并发框架Disruptor译文Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易。这个系统是建立在JVM平台上,其核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单。业务逻辑处理器完全是运行在内存中,使用事件源驱动方式。业务逻辑处理器的核心是Disruptor。Disruptor它...转载 2020-04-07 13:42:48 · 76 阅读 · 0 评论 -
java 类加载,包冲突
JVM类生命周期编译器将 Robot.java 编译成字节码文件 Robot.classClassLoader 将 Robot.class 转换成 JVM 中的 Class 对象JVM 使用 Class 对象生成 Robot 实例类何时被加载类加载是一个按需的过程。遇到 new,getstatic,putstatic,invokestatic 这四个字节码指令时,若此时类还没有被初...原创 2020-04-05 01:54:57 · 1106 阅读 · 0 评论 -
Java 的 BIO 与 NIO
一、问题BIO 和 NIO 作为 Server 端,当建立了 10 个连接时,分别产生多少个线程?答案: 因为传统的 IO 也就是 BIO 是同步线程堵塞的,所以每个连接都要分配一个专用线程来处理请求,这样 10 个连接就会创建 10 个线程去处理。而 NIO 是一种同步非阻塞的 I/O 模型,它的核心技术是多路复用,可以使用一个链接上的不同通道来处理不同的请求,所以即使有 10 个连接,对于...转载 2020-02-27 21:22:30 · 81 阅读 · 0 评论 -
Java NIO 底层原理
10分钟看懂, Java NIO 底层原理 </h1> <div class="clear"></div> <div class="postBody"> 目录 ...转载 2020-02-27 21:12:25 · 187 阅读 · 0 评论 -
java 协程库 quasar demo
quasar 开源地址:https://github.com/puniverse/quasar协程本质:单线程实现并行。协程:适用于 IO 密集型。线程池:适用于计算密集型。Demo假设我们有 100 个任务,每个任务需要做大量 IO (用 sleep 10秒 模拟)。线程池实现public static void main(String[] args) throws...原创 2020-01-19 00:23:38 · 793 阅读 · 1 评论 -
并发之痛 Thread,Goroutine,Actor
协程的本质单线程实现并发。协程在配合异步非阻塞的设计时,面对io问题时能承受比较大的并发量。面对非io问题如计算问题,还是没有多线程优势,因为多线程能利用多核。并发与并行并发:concurrent并行:paralle并发:是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机(CPU)上运行,但任一个时刻点上只有一个程序在处理机上运行。...转载 2020-01-17 17:56:17 · 233 阅读 · 0 评论 -
IO中的同步、异步、阻塞、非阻塞、多路复用
以下转自:https://blog.csdn.net/evanxuhe/article/details/79629109同步异步 阻塞非阻塞:废话不说,老张爱喝茶,煮开水,有两个水壶,普通水壶,响水壶(水开会提示)同步就是普通水壶烧开水,要没事儿自己过来来看开没开;异步就是响水壶烧开水,水开了水壶响了通知你。阻塞是烧开水的过程中,你不能干其他事情(即你被阻塞住了);非阻塞是烧开...转载 2020-01-17 17:28:35 · 234 阅读 · 0 评论 -
一文让你明白CPU上下文切换
转载自:https://segmentfault.com/a/1190000017457234我们都知道,Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行。当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短的时间内,将 CPU 轮流分配给它们,造成多任务同时运行的错觉。而在每个任务运行前,CPU 都需要知道任务从哪里加载、又从哪里开始运行,也就是说...转载 2020-01-17 16:54:47 · 128 阅读 · 0 评论 -
用户态,内核态
1. 内核态与用户态(该图来自:https://www.jianshu.com/p/85e931636f27)分态原由操作系统资源固定:如 CPU,内存,磁盘,网路接口。 为保证系统资源有效利用,统一由内核进行分配,防止某些进程过分占用导致系统崩溃。 Linux 给不同的操作给与不同的“权限”。两种态Linux 有2 个权限等级:内核态,用户态。 内核态 可 访问系统资...原创 2020-01-17 16:28:06 · 133 阅读 · 0 评论 -
Disruptor RingBuffer 原理
Disruptor 源码https://github.com/LMAX-Exchange/disruptor/blob/master/README.mdhttps://github.com/LMAX-Exchange/disruptor/wiki/Introductionhttps://github.com/LMAX-Exchange/disruptor/wiki/Getting-Starte...原创 2020-01-10 16:53:46 · 2301 阅读 · 0 评论 -
fastjson toJSONString 出错 Positioned Update not supported
问题JSON.toJSONString(this) 出错:com.alibaba.fastjson.JSONException: write javaBean error, fastjson version 1.2.48, class com.biz.dao.FiniteStateMachineDAO, fieldName: finiteStateMachineDAO, write jav...原创 2019-12-31 17:50:05 · 1009 阅读 · 0 评论 -
rpc 与 http 的区别
其他阅读:https://blog.csdn.net/u010647035/article/details/86562872 这篇讲得更深入,更全面。作者:知乎用户链接:https://www.zhihu.com/question/41609070/answer/191965937来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。...转载 2019-12-23 20:16:58 · 111 阅读 · 0 评论 -
Retrofit 介绍
这两篇实例讲得不错:https://www.jianshu.com/p/2260d9626d95https://square.github.io/retrofit/#introduction转载 2019-10-11 16:02:31 · 97 阅读 · 0 评论 -
Spring Boot Demo
spring boot 入门: 参考文章:https://www.cnblogs.com/wmyskxz/p/9010832.html https://baijiahao.baidu.com/s?id=1623648034778672046&wfr=spider&for=pc 建工程勾上 web 模板代码结构添加 HelloControl...原创 2019-11-04 11:58:31 · 118 阅读 · 0 评论 -
RateLimiter
参考:https://www.jianshu.com/p/5d4fe4b2a726https://blog.csdn.net/charleslei/article/details/53152883Guava 的 RateLimiter 采用令牌桶算法令牌桶算法的原理是系统会以一个恒定的速度往桶里放入令牌,而如果请求需要被处理,则需要先从桶里获取一个令牌,当桶里没有令牌可取时,则拒...原创 2019-11-03 00:31:12 · 443 阅读 · 0 评论