
Java
进阶的球儿
这个作者很懒,什么都没留下…
展开
-
致敬
近期在忙各种事情,看源码,学习等等,暂停更新博客了。 忙完这段时间,就会把近期所有的学习源码的总结和笔记,分享出来,互相借鉴指点。 谢谢各位的赞和关注,希望在成长的道路上,彼此都是坚实的后盾力量,致敬!...原创 2021-04-26 11:46:14 · 226 阅读 · 1 评论 -
IDEA SpringBoot 源码环境搭建(Maven版本,建议用 Maven 版本的编译)
Hello,大家好,我是进阶的球儿,人称老马。本篇为大家讲解一下 SpringBoot (Maven版)源码环境搭建的步骤以及一点小心得。和Spring 源码环境搭建一样,肯定要先准备好开发环境的建设和 IDEA 的一些环境,下面就来详细的说道说道吧。。。第一步: 1、IDEA2020.1(2020版本的IDEA出来之后,尽量用2020版本的,有人会问为啥?因为。。。更香,哈哈哈) 2、java:1.8 3、gradle: gradle-6.6.1-al...原创 2021-01-12 17:30:18 · 3019 阅读 · 0 评论 -
Quartz 定时任务时间设置
每天凌晨2点 0 0 2 * * ?和每天隔一小时 0 * */1 * * ?例1:每隔5秒执行一次:*/5 * * * * ?例2:每隔5分执行一次:0 */5 * * * ?在26分、29分、33分执行一次:0 26,29,33 * * * ?例3:每天半夜12点30分执行一次:0 30 0 * * ? (注意日期域为0不是24)每天凌晨1点执行一次:0 0 1 * * ?每天上午10:15执行一次: 0 15 10 ? * * 或 0 15 10 * * ? 或 0 15 10.原创 2020-05-14 10:37:43 · 1389 阅读 · 0 评论 -
spring cloud gateway网关和负载均衡框架ribbon实战
通常我们如果有一个服务,会部署到多台服务器上,这些微服务如果都暴露给客户,是非常难以管理的,我们系统需要有一个唯一的出口,API网关是一个服务,是系统的唯一出口。API网关封装了系统内部的微服务,为客户端提供一个定制的API。客户端只需要调用网关接口,就可以调用到实际的微服务,实际的服务对客户不可见,并且容易扩展服务。 API网关可以结合ribbon完成负载均衡的功能,可以自动检查微服务的状况,及时剔除或者加入某个微服务到可用服务列表。此外网关可以完成权限检查、限流、统计等功能。下面我们将一一完成...原创 2020-05-13 14:30:16 · 6195 阅读 · 6 评论 -
SeaweedFS 分布式 上传、下载、删除附件公共接口
这里就直接贴代码吧。引用jar包:net.anumbrella.seaweedfs.core.FileTemplate;一、SeaweedFS 上传附件接口 @Autowired private FileTemplate template; /** * @Description: 上传附件接口 * @Date: 2019/12/19...原创 2019-12-31 10:50:53 · 4311 阅读 · 0 评论 -
Seaweed 上传附件报空指针的解决办法
今天遇到 Seaweed 的一个bug,调用 FileTemplate 的 getFileStatus(String fileId)方法报 NullPointer 。由于之前未使用过分布式的文件服务器,看了小半天的时间,尝试了一些办法,终于找到了根本原因去解决。假设推理果然是屡试不爽啊。那我先贴上报空指针的代码(相信大家都会直接这样用,可能也会遇到我这种问题):1、上传附件 代码...原创 2019-12-25 10:52:18 · 819 阅读 · 0 评论 -
SpringAOP 注解方式实现
Spring 里需要学习的东西有很多,所以需要在实际工作中,包括私下里多去研究、验证,才能理解其中的意思,要不然很难去理解真正的含义。比如 Spring Bean、IOC、DI、AOP、声明式事务等等,很多,首先要知道怎么去运用,然后才是去看源码,学习源码的思想和实现思路。今天就说下 Spring AOP 注解方式的实现,其实也很简单。就像造房子,我们要清楚造房子的步骤,从打地基,到砌墙...原创 2019-11-11 17:24:21 · 190 阅读 · 0 评论 -
Java 中多进程、多线程和并发简析
进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。进程是CPU资源分配的最小单位。即一个进程负责的是程序运行的资源管理及CPU的调度,是一个整...原创 2019-07-25 11:09:40 · 191 阅读 · 0 评论 -
sql 调优
sql调优方法今天来简单介绍一下自己平时在项目开发过程中常用到的sql调优方法,如果项目中用到高并发、多线程等就需要 sql 调优,避免数据库 CRUD 过慢,影响用户体验。1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2、应尽量避免在 whe...原创 2019-07-23 14:44:57 · 188 阅读 · 0 评论 -
Java String字符串转Json
这里使用的是阿里的 fastjson 包1、引入jar包<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.9</version></dependency&...原创 2019-08-28 13:46:04 · 99577 阅读 · 5 评论 -
Java 中 byte 数组 和 String(字符)之间的转换
1、字符 -- > byte数组String str = "进阶的球儿";byte[] sb = str.getBytes();2、byte 数组 --> 字符byte[] b={(byte)0xB8,(byte)0xDF,(byte)0xCB,(byte)0xD9}; String str= new String (b);...原创 2019-08-28 13:56:19 · 344 阅读 · 0 评论 -
自增主键 ID (int)和 UUID(varchar)的优缺点
自增ID(int):一般在单机项目,或者小型项目里,使用 自增 ID(int):优点:(1)数据库自动编号,速度快,而且是增量增长,按顺序存放,对于检索非常有利;(2)数字型,占用空间小,易排序,在程序中传递也方便;(3)如果通过非系统增加记录时,可以不用指定该字段,不用担心主键重复问题。其实它的缺点也就是来自其优点,缺点如下:(1)因为自动增长,在手动要插入指定ID的记录时...原创 2019-08-28 15:13:37 · 6908 阅读 · 0 评论 -
Spring Cloud gateway 跨域问题
1、在和axios联调鉴权的时候发现,在增加自定义header的时候会出现跨域问题2、因为是跨域请求,前端会首先发送一个options的嗅探请求,一次真正的请求所以会出现两个4033、网关之前设置的是全局filter刚开始看了package com.xxx.filter;import com.alibaba.fastjson.JSONObject;import com.x...原创 2019-09-06 09:48:18 · 2978 阅读 · 9 评论 -
js 校验字符串是否为数字和字母组合
checkS = function(str){ // 判断字符串是否为数字和字母组合 var zg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]*$/; if (!zg.test(str)) { return false; } else { return true; }}check...原创 2019-08-05 17:25:43 · 14923 阅读 · 3 评论 -
Tomcat 8 解决“At least one JAR was scanned for TLDs yet contained no TLDs”问题
遇到这种情况下,其实也挺简单的。是Tomcat8 下的 EL 表达式不兼容,但是不会影响系统的运行。编辑tomcat目录下的 conf 目录下的 logging.properties 文件。如果文件末尾没有这段话的话,可以加上,如果之前注释掉的,放开就可以了。org.apache.jasper.compiler.TldLocationsCache.level = FINE...原创 2019-08-07 12:37:09 · 601 阅读 · 0 评论 -
js 校验英文、字母、特殊字符组合且支持中文字符
function validateName(str) { var reg = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,.\/]).{8,32}$/; if (!reg.test(str)) { return false; } else { retu...原创 2019-08-16 10:12:11 · 3257 阅读 · 0 评论 -
退出登陆获取不到 Session
这里要说的是,如果在退出登陆时,在sendRedirect 之后使用 SecurityUtils.getSubject().logout(); 会导致 session 清空,所以在返回退出成功页面时,获取不到 session 里的任何信息。 @RequestMapping(value = "/logout", method = RequestMethod.GET) @...原创 2019-08-13 11:53:35 · 1161 阅读 · 0 评论 -
Shiro 中获取用户信息
先说下写本文的原因:现在有个bug:登陆时,Shiro 可以正常获取到用户信息,但是退出登陆时获取不到用户信息,从而无法实 现保存退出登陆的时间。很是头大,为什么获取不到,那我退出登陆时,要存相应的退出时间,要怎么办?肿么办?当时很急,又找不到可靠的解决方法。看博客看了一大堆,感觉对我来说,都没有任何的用处...原创 2019-08-13 11:26:13 · 2468 阅读 · 4 评论 -
动态代理机制
说到动态代理,有时候会在想,既然JDK里面有代理类,直接调用不就完事了吗?为什么还要学动态代理?但是项目中运行时环境是 JRE,那我们就需要自己去实现动态代理,那需要用什么实现动态代理呢?那就是InvocationHandler类。之前很苦恼,动态代理到底是个什么鬼玩意,但是了解之后理出来一点思路。请记住:动态代理只能代理接口!!!简单的说:如果你是马爸爸,需要找周杰伦做代言,但是...原创 2019-08-07 15:32:34 · 124 阅读 · 0 评论 -
git 命令详解
趁着今天没什么活,写一篇自己用Git的经历及常见的git命令。从最开始的做Java开始,就用Git版本控制工具,可能是习惯了用命令行,所以不太习惯用开发工具里的插件,还不如用命令行,简单易懂。同意的童鞋请举个手,哈哈。首先从下载Git说起吧,简单的下载,大家都懂的。1、下载链接:https://git-scm.com/downloads大家可以根据自己的配置进行下载Git版本。2...原创 2019-08-07 12:20:04 · 182 阅读 · 0 评论 -
Java 代码优化之 for 循环
常言道:细节决定成败。在开发过程中,很容易忽略一些细小的环节,导致系统运行效率的降低。看到下面的部分,很多人应该会很诧异A:what? 这都会影响运行效率?B:答案是:肯定的。从学Java开始,估计也有不少年了,简单的for循环肯定会写的。下面我们来看两段代码:int perSize = SnList.size() / threadNum;for (int i...原创 2019-08-06 14:05:43 · 478 阅读 · 1 评论 -
Java 中统计数据
作为Java开发,虽然不是很懂大数据,但是最起码的sql统计数量计算还是很常用的。下面来说下统计数据的一般sql写法,可以根据自己的情况去修改字段名称查询。举个例子:统计某个厂商的相对应的设备数量sql:a)无关联表:SELECT COUNT(1),a.厂商名字段 FROM 表名a GROUP BY a.厂商名字段b)有关联表SELECT COUNT(1),...原创 2019-07-29 11:36:59 · 4770 阅读 · 0 评论 -
SpringBoot 日志配置
Mybatis内置的日志工厂提供日志功能,具体的日志实现有以下几种工具:SLF4J Apache Commons Logging Log4j 2 Log4j JDK logging具体选择哪个日志实现工具由MyBatis的内置日志工厂确定。它会使用最先找到的(按上文列举的顺序查找)。 如果一个都未找到,日志功能就会被禁用。System_API项目的日志配置为例:整体架构...原创 2019-07-23 15:07:24 · 256 阅读 · 0 评论 -
MyBatis 打印 sql
SpringMvc 整合Mybatis打印sql语句:简单的来说,只需要在mybatis-config.xml 文件中 的 settings 里 配置下打印输出就可以了。代码如下:<setting name="logImpl" value="STDOUT_LOGGING" />SpringBoot整合Mybatis打印sql语句:如果使用的是app...原创 2019-07-23 15:00:58 · 2976 阅读 · 0 评论 -
Spring Boot 集成Redis实现缓存机制
实现步骤:1、新建maven项目2、在pom.xml 文件中添加响应的依赖包3、编写 Spring Boot 启动类4、配置 application.properties5、编写 RedisCacheConfig 配置类6、编写 DemoInfo 测试实体类7、编写DemoInfoRespository 持久化类8、编写DemoInfoService 类9、编写DemoInfo...原创 2019-07-17 15:16:15 · 241 阅读 · 0 评论 -
java 多线程提高大数据量的读写效率
对于多线程来说,刚开始是比较蒙的,不了解其中的运行机制。最近项目中需要用多线程解决一个加载缓慢的问题,特此写了一个例子,供大家参考,如有建议,请多指教,哈哈哈那么,话不多说。先说下需求:此接口供xxx公司调用,实现对数据库的读取和修改。而且是全量读取,不进行分页读取。(百万级别数据量)那就要考虑下,如果将数据分批进行处理,看下哪里运行时间相对较长,将哪部分代码进行多线程处理。注:程序员最...原创 2019-07-16 14:53:47 · 5521 阅读 · 0 评论 -
端口占用问题解决
本文以80端口号为例,如果想知道其他的端口号也可以使用此方法1、在windows下如何查看80端口占用情况?是被哪个进程占用?如何终止等.这里主要是用到windows下的DOS工具,点击"开始"–“运行”,输入"cmd"后点击确定按钮,进入DOS窗口,接下来分别运行以下命令:>netstat -aon | findstr “80”Proto Local Address ...原创 2019-07-05 14:55:09 · 246 阅读 · 0 评论 -
Java上传日志至sftp服务器
本文是本人做项目中遇到的问题,其中有一些坑。欢迎查看与转载:1、引入SFTP jar包 <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.53<...原创 2019-07-05 14:50:11 · 671 阅读 · 0 评论 -
Integer.getInteger() 和 Integer.valueOf ()的区别
刚才遇到一个很 NC 的bug,别人写的,哈哈。赶紧写了这篇博客,供大家参考,千万别犯这么低级的错误。Now,说下情况先之前代码的写法parentContrParam.setIsInternet(Integer.getInteger(groupListParam.getMacfilter()));一看也没什么问题啊,但是点进去看源码。public static Inte...原创 2019-08-15 17:20:55 · 1919 阅读 · 0 评论