java
行者man
学无止境
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Authas排查记录
22222原创 2021-06-24 15:43:01 · 365 阅读 · 0 评论 -
bean 默认的name
spring.main.allow-bean-definition-overriding=true就是解决bean重复定义的。设置为true时,后定义的bean会覆盖之前定义的相同名称的bean。但是肯定是不能覆盖的原创 2020-09-10 18:45:10 · 857 阅读 · 0 评论 -
MySQL中大数据表增加字段的实现思路
前言增加字段相信大家应该都不陌生,随手就可以写出来,给 MySQL 一张表加字段执行如下 sql 就可以了: 1 ALTER TABLE tbl_tpl ADD title(255) DEFAULT '' COMMENT '标题' AFTER id; 但是线上的一张表如果数据量很大呢,执行加字段操作就会锁表,这个过程可能需要很长时间甚至导致服务崩溃,那么这样操作就很有风险了。那么,给 MySQL 大表加字段的思路如下:① 创建一个临时的新表,首先复制旧原创 2020-06-03 11:35:08 · 2495 阅读 · 0 评论 -
记一次线上OOM错误
刚来某公司,负责开发对接企业微信,搞了两个星期差不多搞定,了然后上线部署。眼看差不多稳定,结果pb环境出现了一个oom具体报错如下,java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Arrays.java:3864) at com.hikvision.building.cloud.qywe...原创 2020-04-15 15:14:44 · 418 阅读 · 0 评论 -
史上最全的java线程池解析
在《阿里巴巴java开发手册》中指出了线程资源必须通过线程池提供,不允许在应用中自行显示的创建线程,这样一方面是线程的创建更加规范,可以合理控制开辟线程的数量;另一方面线程的细节管理交给线程池处理,优化了资源的开销。而线程池不允许使用Executors去创建,而要通过ThreadPoolExecutor方式,这一方面是由于jdk中Executor框架虽然提供了如newFixedThreadPool...原创 2019-12-19 14:04:30 · 633 阅读 · 0 评论 -
Callable接口和Runnable接口
Callable接口和Runnable接口相似,区别就是Callable需要实现call方法,而Runnable需要实现run方法;并且,call方法还可以返回任何对象,无论是什么对象,JVM都会当作Object来处理。但是如果使用了泛型,我们就不用每次都对Object进行转换了。 Runnable和Callable都是接口不同之处:1.Callable可以返回一个类型V,而Runnable不可以...转载 2018-05-31 10:00:02 · 701 阅读 · 0 评论 -
国内有哪些质量高的JAVA社区?
并发编程网 - ifeve.com 强烈推荐ImportNew - 专注Java & Android 技术分享 内容也挺不错InfoQ - 促进软件开发领域知识与创新的传播开源中国 - 找到您想要的开源项目,分享和交流IBM developerWorks 中国 : IBM's resource for developers and IT professionalsSegmentFaul...转载 2018-07-24 21:29:29 · 776 阅读 · 0 评论 -
Gradle打jar包如何上传到maven本地库
前言 本篇教程偏向实战,程序猿直接copy代码加入到自己的项目中做简单的修修改改便可使用,而对于Gradle以及Maven不在此进行展开介绍,如有读者希望了解可以给我留言,并持续关注,我后续会慢慢更新。(黑色区域代码部分,安卓手机可手动向左滑动,来查看全部代码) 定义Maven是一个项目管理和自动构建工具。Gradle是一个基于Apache Ant和Apache Mave...转载 2018-08-09 21:44:20 · 5242 阅读 · 1 评论 -
Spring的生命周期
原创 2018-08-07 17:15:32 · 910 阅读 · 0 评论 -
封装异常
一、分析 Java语言的异常处理机制可以确保程序的健壮性,提高系统的开发效率,但是Java API提供的异常都是比较低级(这里的低级指的是“低级别的异常”),只有开发人员才能看的懂,才明白发生了什么问题。对于终端用户来说,这些异常基本上是天书,与业务无关,是纯计算机语言的描述。 这就需要我们对异常进行封装了。 二、场景 异常封装有三方面的优点: 1.提高系统的友好性 例如,打开一个文件,如果文...转载 2018-08-13 11:52:49 · 473 阅读 · 0 评论 -
Java并发之AQS详解
一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch...。 以下是本文的目录大纲:概述框架...转载 2018-06-11 15:56:58 · 191 阅读 · 0 评论 -
清明三天心情整理
清明还是要回家的,在家难免有些松懈,作为一名要通向技术大拿的人来说这段时间也是不能耽误的。 自己就带了一台笔记本回家,本来准备把spring cloud 自己搭建一遍,后来还是坐不住。 还是看看书来的有意思多了,对我这种水平还不够的人,书比代码舒服。 在家见了一些朋友,做技术那么努力辛苦,跟那种还不知道干嘛做什么都不知道的朋友是没有共同语言的。 希望他们能够早日...原创 2018-04-07 14:05:39 · 207 阅读 · 0 评论 -
区块链移动端开发
WebApi程序可在方法参数前加[FromBody]标识,表示该参数值应该从请求的Body中获取,而不是从URL中获取。从URL获取参数值的方式的弊端是URL有长度限制,当超过浏览器的最大URL长度时请求将被浏览器拒绝,根本不会发出去。因此,当参数值过大时需要用[FromBody]参数进行传输。同时可以发现这边 首先参数进行md5加密, md5加密我猜测可能这一段通过md5加密原来的长度变成加...原创 2018-03-29 16:33:47 · 1794 阅读 · 0 评论 -
关于前端ajax提交和表单提交的一些问题
现在做的一个项目是通过jsp提交表单的统一的写法是request ,而不是通过@requestBody@RequestMapping(value = "show.htm") public String show(HttpServletRequest request){ String startTimeStr = StringUtil.stringNullHandle(re...原创 2018-03-28 22:16:48 · 473 阅读 · 0 评论 -
Mac 下启动mysql(以及多项配置)
mysql 启动: mysql.server startredis :redis-serverzookeeper : zkServer.sh start原创 2017-12-05 22:36:11 · 314 阅读 · 0 评论 -
JavaWeb之Session的序列化和反序列化 && Session的活化和钝化
应用场景:1.一般来说,服务器启动后,就不会再关闭了,但是如果逼不得已需要重启,而用户会话还在进行相应的操作,这时就需要使用序列化将session信息保存起来放在硬盘,服务器重启后,又重新加载。这样就保证了用户信息不会丢失,实现永久化保存2.淘宝每年都会有定时抢购的活动,很多用户会提前登录等待,长时间不进行操作,一致保存在内存中,而到达指定时刻,几十万用户并发访问,就可能会有几十万个session...转载 2018-04-03 16:28:53 · 347 阅读 · 0 评论 -
IntelliJ IDEA 的Project structure说明
IntelliJ IDEA 的Project structure可以在File->Project structure中打开,同时,在新建项目是IDE一般用向导的方式让你填写Project structure相关内容。在说明如何填写之前,先说说这些项都代表什么,包含Project、module、library、artficat和facet。project就是这个工程,下面有很多module。这...转载 2018-03-28 14:20:41 · 18921 阅读 · 3 评论 -
Java同步机制之Monitor监视器与syncrhoized实现原理
一:Monitor Monitor是一个同步工具,相当于操作系统中的互斥量(mutex),即值为1的信号量。 它内置与每一个Object对象中,相当于一个许可证。拿到许可证即可以进行操作,没有拿到则需要阻塞等待。 二:syncrhoized实现原理 syncrhoized又叫做内置锁,为什么呢?因为使用syncrhoized加锁的同步代...转载 2018-08-13 16:26:07 · 846 阅读 · 0 评论 -
idea 创建多模块依赖Maven项目
本来网上的教程还算多,但是本着自己有的才是自己的原则,还是自己写一份的好,虽然可能自己也不会真的用得着。 1. 创建一个新maven项目2.3. 输入groupid和artifactid,后面步骤直接next,最后finish4.创建好后5. 在主项目名称上点右键,创建第一个子模块678 同理,在创建一个模块,创建好后 9 打...原创 2018-08-17 14:24:10 · 722 阅读 · 0 评论 -
ArrayList源码学习
1、ArrayList 优点 1)支持自动改变大小的功能 2)可以灵活的插入元素 3)可以灵活的删除元素二、局限性跟一般的数组比起来,速度上差些。 因为它是动态数组,初始化大小容量4,当数据存满时扩容是以当前数组容量大小的2倍扩容,之后再把数组元素一个一个的存入,数组在扩容时浪费一定的内存空间,和存储时间,而且,元素添加是一个装箱的过程,所以说,跟一般的数组比起来,速度上差些...原创 2018-09-07 16:26:02 · 187 阅读 · 0 评论 -
spring @Transactional 坑爹的事情
context.getBean通过上下文去拿bean。丫的加了一个@Transactional 就注入不了了真的是老项目, 写的心累啊原创 2019-09-29 21:12:34 · 219 阅读 · 0 评论 -
Mac上zookeeper的安装与启动
下载文件下载zktar -zxvf zookeeper-3.4.10.tar.gz //解压cd zookeeper-3.4.10/conf //切换到配置目录下mv zoo_sample.cfg zoo.cfg //更改默认配置文件名称vi zoo.cfg //编辑配置文件,自定义dataDir启动cd zookeeper-3.4.10/bin //切换到 bin目录./z...原创 2019-09-09 15:32:38 · 1162 阅读 · 0 评论 -
常用的Linux操作命令
作为一名java程序员,尤其是线上维护,查看日志这里列出我常用的一些命令1、jps -l常看可以输出主函数的完整路径(类的全路径)。 基本上你就能找到你需要的进程 然后kill他jps 原理java程序在启动以后,会在java.io.tmpdir指定的目录下,就是临时文件夹里,生成一个类似于hsperfdata_User的文件夹,这个文件夹里(在Linux中为/tmp/hsperfda...原创 2019-08-23 15:12:20 · 228 阅读 · 0 评论 -
浅谈库存扣减和锁
先说场景:物品W现在库存剩余1个, 用户P1,P2同时购买.则只有1人能购买成功.(前提是不允许超卖)秒杀也是类似的情况, 只有1件商品,N个用户同时抢购,只有1人能抢到..这里不谈秒杀设计,不谈使用队列等使请求串行化,就谈下怎么用锁来保证数据正确.常见的实现方案有以下几种:1.代码同步, 例如使用 synchronized ,lock 等同步方法2.不查询,直接更新 u...转载 2019-04-24 11:28:14 · 1333 阅读 · 2 评论 -
Mybatis处理列名—字段名映射(一) — 驼峰式命名映射
1.驼峰式命名开关,或者不开,数据库列和字段名全一致。<settings> <!-- 开启驼峰,开启后,只要数据库字段和对象属性名字母相同,无论中间加多少下划线都可以识别 --> <setting name="mapUnderscoreToCamelCase" value="true" /></settings>阅读源码发现直...原创 2019-02-20 18:58:24 · 2167 阅读 · 0 评论 -
Maven下载特别卡的问题
大概率知道是自己Maven配置镜像的问题 网上找了好多 但都是不行可能是时间的原因 或者其他的原因,总之就是不行提供一种绝对可行的<mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <u原创 2019-01-21 21:49:39 · 671 阅读 · 0 评论 -
高级java必须要掌握的
spring多线程数据库算法项目java基础jvm原创 2019-01-09 11:40:51 · 319 阅读 · 0 评论 -
for循环list remove元素
for(int i=0;i<list.size();i++){ if(list.get(i).equals("del")) list.remove(i);}这种方式的问题在于,删除某个元素后,list的大小发生了变化,而你的索引也在变化,所以会导致你在遍历的时候漏掉某些元素。比如当你删除第1个元素后,继续根据索引访问第2个元素时,因为删除的关系后面的元素都往前移...原创 2019-01-01 17:55:42 · 10395 阅读 · 1 评论 -
最近的一点感悟
不管怎么样,作为一名程序员,身体总是要照顾好的,尤其这几天,熬夜打游戏,眼镜竟然有些吃不消了。还是要保护好眼镜原创 2019-01-04 09:19:40 · 389 阅读 · 0 评论 -
docker入门 springboot+redis(宿主机)+mysql(宿主机)
先把项目打成jar包移动到文件夹touch dockerfile编写dockerfilevim dockerfileFROM docker.io/centos:latestLABEL app="springboot2" version="0.0.1" by="youjia" #安装应用执行的环境javaRUN yum -y install java #将指定的jar文件复制...原创 2018-12-18 10:47:00 · 1621 阅读 · 0 评论 -
sharding-jdbc分库实战
参考文档http://shardingsphere.io/配置Java配置 较为繁琐,但是至少是java语言比较清晰,而且复杂的分片逻辑可以用java语言来实现更为方便(强烈推荐) 我上一些网站和论坛,大部分都会采用这种,因为逻辑可能较为复杂。Yaml配置 比较简单清晰,很难处理复杂的分片逻辑(推荐)springboot配置 low版yaml配置 (不推荐)spring命名空间配置 繁琐...原创 2018-12-13 16:15:44 · 777 阅读 · 0 评论 -
resultMap之collection聚集两种实现方式
最近做得项目用到了MyBatis处理一对多的映射关系,下面的两个方法中用到了集合的嵌套查询方法,下面仔细学习一下这两种方式聚集元素用来处理“一对多”的关系。需要指定映射的Java实体类的属性,属性的javaType(一般为ArrayList);列表中对象的类型ofType(Java实体类);对应的数据库表的列名称;不同情况需要告诉MyBatis 如何加载一个聚集。MyBatis 可以用两种方式...转载 2018-10-12 13:52:26 · 3257 阅读 · 0 评论 -
Web基础之Class与ClassLoader的getResource区别
前言在Web开发中经常要加载项目下的各种资源,有一种方法是用ClassLoader或者Class类提供的getResource来加载。本文将从代码上来分析两者的区别正文经常看到下面类似的代码,往往很容易搞混public static void loadSourceWithClassLoader() { SysFilePath.class.getResource("/org/easy...转载 2018-04-02 17:30:50 · 275 阅读 · 0 评论 -
JAVA CAS原理深度分析
看了一堆文章,终于把JAVA CAS的原理深入分析清楚了。感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档:http://www.blogjava.net/xylz/archive/2010/07/04/325206.htmlhttp://blog.hesey.net/2011/09/resolve-aba-by-atomicstampedreference.html...转载 2018-04-09 22:10:37 · 170 阅读 · 0 评论 -
mac open too much files
mac下的 其实和linux下的都是差不多的,都是基于unix。一切的操作都是文件。出现的问题可能是设备连接过多或则socket连接过多ulimit -a修改ulimit -n (num) 可以改变最大的打开文件数的大小...原创 2018-04-01 21:21:05 · 742 阅读 · 0 评论 -
sql优化的一些小策略
以下是我进行整合的一些策略,不管是面试还是实战中常常会遇到这个问题1、首先索引是大家都知道的一个问题(1)负向条件查询不能使用索引select * from order where status!=0 and stauts!=1not in/not exists都不是好习惯可以优化为in查询:select * from order where status in(2,3)(2)前导模糊查询不能使用...原创 2018-03-11 19:24:56 · 305 阅读 · 0 评论 -
ConcurrentHashMap实现原理
ConcurrentHashMap是Java并发包中提供的一个线程安全且高效的HashMap实现(若对HashMap的实现原理还不甚了解,可参考我的另一篇文章HashMap实现原理及源码分析),ConcurrentHashMap在并发编程的场景中使用频率非常之高,本文就来分析下ConcurrentHashMap的实现原理,并对其实现原理进行分析(JDK1.7).ConcurrentHashMap实...转载 2018-03-04 12:27:38 · 170 阅读 · 0 评论 -
dubbo框架学习
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容,详见后面描述。总...转载 2018-03-03 22:46:14 · 228 阅读 · 0 评论 -
轻松学习java可重入锁(ReentrantLock)的实现原理
前言相信学过java的人都知道 synchronized 这个关键词,也知道它用于控制多线程对并发资源的安全访问,兴许,你还用过Lock相关的功能,但你可能从来没有想过java中的锁底层的机制是怎么实现的。如果真是这样,而且你有兴趣了解,今天我将带领你轻松的学习下java中非常重要,也非常基础的可重入锁-ReentrantLock的实现机制。听故事把知识掌握了在一个村子里面,有一口井水,水质非常的...转载 2018-03-11 10:53:48 · 225 阅读 · 0 评论 -
详解synchronized与Lock的区别与使用
引言:昨天在学习别人分享的面试经验时,看到Lock的使用。想起自己在上次面试也遇到了synchronized与Lock的区别与使用。于是,我整理了两者的区别和使用情况,同时,对synchronized的使用过程一些常见问题的总结,最后是参照源码和说明文档,对Lock的使用写了几个简单的Demo。请大家批评指正。12技术点:1、线程与进程:在开始之前先把进程与线程进行区分一下,一个程序最少需要一个...转载 2018-03-10 22:54:38 · 184 阅读 · 0 评论
分享