JAVA
文章平均质量分 60
狄龙疤
人生苦短,及时行乐
展开
-
大白话讲解4次挥手过程,3次挥手可以吗?
如果第3步服务器正好没有业务数据要发送,也就是正好服务端的数据传完了,客户端说我要关闭了,这时候其实服务端可以一次说:"好的,我知道了。我也要关闭了",此时就是三次挥手。3. 此时服务器还有未发送完毕的正常业务数据,于是等发送完毕后说:"我也要关闭了"( 此时3次挥手 )。2. 服务器说:"好的,我知道了"( 此时2次挥手 )。4. 客户端说:"好的,我知道了"( 此时4次挥手 )。1. 客户端说:"我要关闭了"( 此时1次挥手 )。其实某些情况下是可以三次挥手的。原创 2023-06-21 10:49:58 · 334 阅读 · 0 评论 -
动手实践感受下企业微信的网页授权登录、扫码授权登录
一、网页授权登录:1.使用内网穿透工具为“本地ip+端口”映射一个公网域名,比如:xxx.xxx.xxx.com 表示我本地的 127.0.0.1:8080。2.申请一个测试用的企业微信,新建一个应用,比如叫:test_app_0001.3.新建一个springboot工程:企业微信的几个工具类:QyOauthApi.java:package com.test.qywechat.api;import com.test.qywechat.httpclient.LocalHttpC原创 2022-04-02 14:02:59 · 3701 阅读 · 0 评论 -
Netty 高效环形延时队列 HashedWheelTimer 线程安全吗?可否做成单例使用?
Netty 高效环形延时队列 HashedWheelTimer 线程安全吗?可否做成单例使用?原创 2022-01-07 14:36:24 · 556 阅读 · 0 评论 -
JAVA 模拟逻辑门实现加法运算( 半加法器 + 全加法器 )
硬件懒得花钱买板子,《我的世界》又不会玩,于是用 java 模拟了一下,算是加深理解和记忆吧!参考资料:java代码:import lombok.Getter;import lombok.Setter;public class Test { public static void main(String[] args)throws Except...原创 2020-03-29 19:02:34 · 1732 阅读 · 0 评论 -
Mybatis 源码编译 实现自定义 <if> 标签 test 判断逻辑
使用 Mybatis框架时,我们经常使用<if test="email != null and email != ''"> 来进行非空判断,但是感觉这样很不优雅,比如需要代码层面进行 trim操作,如果把逻辑加在 test中只会使得更加冗长,那能不能test内部调用java代码呢?可以的,可以使用 @符号实现,比如这样:<if test="@org.apache.common...原创 2020-02-28 19:17:06 · 3284 阅读 · 0 评论 -
java递归求解带方法调用的表达式
网上容易找到的都是求解 加减乘除和括号 的表达式,比如: ( 1 + 2 ) * 3 + 4,不能求解 :sum( 3, 4, 5 ) / 2 - 4 -sum( 5, 3, 1 ) 这样的,于是自己在此基础上写了一个可以求解带方法调用表达式的工具类,组要是通过递归将方法调用,比如 sum( ... )替换成 计算出的结果,这样表达式中就不存在 方法调用了,就成了普通的 加减乘除和括号的 四...原创 2020-02-18 18:34:53 · 263 阅读 · 0 评论 -
追 JS 文件时如何快速知道调用的某函数定义在哪个文件中?
1. idea 中选定最顶层文件夹,按住 ctrl + h 全局搜索该函数名?( 缺点: 属于盲搜,特别在 js 文件压缩的环境下 前缀匹配导致搜索很慢,比如搜索 "function add",由于 add 没什么区分度,所以会搜索匹配一堆的 "function addA...","function addB..."等)2. 由于上面的直接搜索没有区分度的函数名时,会匹配很多,所以可以将 ...原创 2019-11-13 13:39:19 · 1765 阅读 · 1 评论 -
JAVA 两个线程,一个线程打印1-10,另一个线程打印1-20,线程互不抢占,轮流打印20遍 用信号量如何实现?
import java.util.Random;import java.util.concurrent.Semaphore;public class Test { public static void main(String[] args){ Semaphore semaphore = new Semaphore(1); final boolean...原创 2019-09-16 17:44:24 · 520 阅读 · 0 评论 -
java 使用 sleep + interrupt 实现互斥锁效果
import java.util.*;import java.util.concurrent.CountDownLatch; public class Test { private static int threadCount = 300; private static int eachLoopTime = 100; private static int test...原创 2019-09-13 15:47:30 · 170 阅读 · 0 评论 -
hibernate config.buildSessionFactory() 初始化 c3p0 连接池时新建 mysql 物理连接轨迹追踪
new Configuration().configure( "hibernate.cfg.c3p0-pool.xml" ).buildSessionFactory()Settings settings = this.buildSettings(copy) [ org.hibernate.cfg.Configuration ]Settings settings = this.sett...原创 2019-08-29 15:58:38 · 182 阅读 · 0 评论 -
git 命令总结
8. git push remoteRepositoryUrl localBranchName:如果远程不存在 localBranchName 分支,则远程仓库会生成分支 localBranchName,并且代码是本地分支 localBranchName 推进去的。1. git fetch origin( 更新远程跟踪分支( 该方法不合并,git pull 会合并 ) ( ps:git fetch 是将远程代码拉取到本地仓库,而不是拉取到本地工作空间,git pull 是拉取到本地工作空间 )原创 2019-08-24 10:58:40 · 524 阅读 · 1 评论 -
docker命令总结
2.1. 复制 docker 容器中的文件 /root/xxx.txt 至宿主机 /usr/local下 :> docker cp ${containerId}:/root/xxx.txt /usr/local2.2. 复制宿主机中的文件/usr/local/xxx.txt 至容器中的文件夹 /root下 :> docker cp /usr/local...原创 2019-08-24 11:38:17 · 209 阅读 · 0 评论 -
jdk源码阅读总结:
1. Set "投机取巧" 内部依赖 Map 实现 ( 如下所示为 HashSet 的实现) :public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable{ ... private transien...原创 2019-08-24 18:12:55 · 177 阅读 · 0 评论 -
jdk 源码阅读之 ArrayList 的扩容机制
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{ ... /** * Appends the specified element to the end ...原创 2019-08-25 20:38:00 · 99 阅读 · 0 评论 -
mysql 命令积累
1. ${ MYSQL_HOME}/bin/mysqlbinlogmysql-bin.000001 --- 将 mysql bin log 输出层人眼可看的友好格式,方便理解 msyql bin log机制2. explain select * from student where id =1000 --- 诊断sql3. hexdump -Cmysql-bi...原创 2019-08-23 13:08:24 · 142 阅读 · 1 评论 -
JDK 自带定时器 Timer 核心原理代码
主要逻辑: new 一个 Timer 后, timer 内部维护一个队列 queue,并开启一个死循环线程 从queue 中取任务执行( 触发时间到了就执行,未到就 wait ),timer.schedule( TimerTask ) 其实就是 将 任务体放入队列中 ( ps:timer 运行多个 TimerTask 时只要一个没有捕获抛出的异常异常,则此 timer 便停止了,所以建...原创 2019-08-26 20:11:34 · 351 阅读 · 0 评论 -
java quartz 定时器核心源代码阅读
this.schedThread 的类型是 org.quartz.core.QuartzSchedulerThread extends java.lang.Thread,下面是截取的类QuartzSchedulerThread 的 run 方法的一部分:可见一直死循环,锁等待在 this.sigLock 处,直到 this.togglePause( false ) ( 将 th...原创 2019-08-27 16:14:24 · 582 阅读 · 0 评论 -
java中try catch放循环体内外对程序性能的区别
当我们写程序时遇到可能出现异常的地方我们习惯用try catch增加程序的健壮性,但是try catch的位置呢,有时候我们也是随便放一个地方,只要程序不报错就行,可是如果碰到循环的情况呢?比如这个:public class Demo { public static void func0(){ for(int i=0;i<1000;i++){ try {原创 2018-01-06 18:52:22 · 5771 阅读 · 0 评论