- 博客(47)
- 收藏
- 关注
原创 全面理解jvm
解决性能调优,优化内存空间,防止服务崩掉的问题。同时是java的工作环境, 一些基于java开发的语言Scale , Jpython都可以运行在java虚拟机上。了解下计算器底层01和易经的关系。
2024-02-03 00:05:05 248 1
原创 字节流的转换和应用
如果是pdf下载的字节保存文件,这种情况需要做文件的传输和流的转换://更新pdf文件File file = new File("test.pdf");FileOutputStream fileOutputStream = new FileOutputStream(file);fileOutputStream.write(bytes);fileOutputStream.close();//绝对路径为./test.pdffile.delete();......
2022-04-13 10:22:38 298
原创 排查linux上服务停的原因
思路?linux服务器上java进程突然消失的原因但是进程还在1.看下home下会不会有内存溢出什么的文件导致的服务假停现象,2.查看进程是否监听,linux如何查询端口是否使用各种思路。。接口访问不了,但是呢jar包的进程还是存在的ps -ef|grep XX.jar是有的啊?http://xx.xx.xx/api/接口名称 报404服务假停,可能是内存过大,日志超出限制,有个home的目录,我们看下这个目录下有啥内存溢出或者相关的文件可以跟踪,继续排查中。。难定位但是有挑
2022-02-24 17:48:14 2627
原创 redis缓存清理
Redis缓存清理1.访问redis根目录 cd /usr/local/redis-2.8.192.登录redis:redis-cli -h 127.0.0.1 -p 63793.查看所有key值:keys *4.删除指定索引的值:del key5.清空整个 Redis 服务器的数据:flushall6.清空当前库中的所有 key:flushdb应用场景比如一些系统登录权限配置的,每次都要查询数据库。可以配置在redis先查询redis,如果没有则新建一个redis
2022-02-21 11:50:07 1840
原创 Spring源码之IOC加载流程
根据源码步骤整理出来的Spring加载流程,从AnnotationConfigApplicationContext开始public AnnotationConfigApplicationContext(Class<?>... componentClasses) { //加载初始化文件 this(); //注册配置类 register(componentClasses); //IOC容器刷新接口 refresh();}具体的步骤见流程图:创..
2022-02-16 23:37:56 293
原创 程序员的修炼之路(突破)
讲个笑话简单,真的换行,还是挺困难的。我大学毕业开始做程序员,之后做项目经理,再是项目总监,现在是咨询顾问,在IT行业摸爬滚打十几年,也是个IT老兵了。基于我的经历和体会,讲一下程序员如何转行,以及相关的利弊。IT程序员这个工作,对于刚大学毕业的同学,还是很具吸引力的,起步薪资相对较高,后续薪资提升也快,所以很受欢迎。但是,程序员工作太累,不断地加班,再加班,996......如果以为程序员仅仅是加班太累,那就大错特错了!加班不是程序员的全部。不断加班的同时,还要不断的学习,这比加班还要难!
2022-01-27 15:16:10 577
原创 http和https连接下载
给一个可以下载的http地址和https地址,分别用不同的方式来下载,https需要SSL证书,另外呢,http和https如何转换? 不要用https来访问http 解决了蛮久的,最后发现是网络原因,外网连接不上,所以联调的时候,用内网和外网分别请求,先排除网络原因.(为啥没想到断开网络用外网连接请求呢?感觉思路啊,还是得多训练这种思维和处理问题的方式)/** * 获取网络图片流 * * @param url * @return */public static byte[] get.
2022-01-24 16:22:17 18654 1
原创 自定义校验工具类的开发
我发现了个问题,在前后端联调的时候,定义的参数不规范,没有进行校验。导致两方沟通,哪些字段必传,另外会写很多 if(fieldA = null) { 提示} if(fieldB= null) { 提示} 这样的方法下面我写一个工具类解决这个问题 1.在校验的方法上写上注解import javax.validation.constraints.NotBlank;import java.util.List;@Data@ApiModel(value = "SysPriceDTO对象", ...
2021-10-27 10:20:09 190
原创 jdk1.8新特性
一、引言 jdk1.8出来已经一段时间了,现在1.9也已经出来了,但是很多公司(我们公司也一样)不太愿意升级到高版本的jdk,主要是有老的项目要维护,还有升级的话配套的框架也要升级,要考虑的细节事情太多。 前段时间去面试,问到了jdk1.8的新特性,博主答得不是很好,今天抽了一段时间把这些都总结一下。二、新特性 1、default关键字 在java里面,我们通常都是认为接口里面是只能有抽象方法,不能有任何方法的实现的,那么在jdk1.8里面打破了这个规定,引入了新的关键字defa
2021-01-05 20:13:59 164
原创 jdk1.8之Stream
在Java1.8之前还没有stream流式算法的时候,我们要是在一个放有多个User对象的list集合中,将每个User对象的主键ID取出,组合成一个新的集合,首先想到的肯定是遍历,如下: List<Long> userIdList = new ArrayList<>(); for (User user: list) { userIdList.add(user.id); } 或者在1.8有了lambda表达式以后,我们会这样写:.
2021-01-03 00:40:13 572
原创 2020年高级程序员必备面试题
JDKjdk1.8版本后的新特性有哪些?如何避免空指针异常?DubboDubbo是什么?Dubbo 和 Spring Cloud 有什么区别?dubbo都支持什么协议,推荐用哪种?Dubbo需要 Web 容器吗?Dubbo内置了哪几种服务容器?Dubbo里面有哪几种节点角色?Dubbo的服务注册与发现的流程图是怎样的?Dubbo默认使用什么注册中心,还有别的选择吗?Dubbo有哪几种配置方式?Dubbo 核心的配置有哪些?Dubbo启动时如果依赖的服务不可用会怎样?Dub
2020-12-24 20:13:25 620 1
原创 volatile,synchronized,lock的区别
1、概述在研究并发程序时,我们需要了解java中关键字volatile和synchronized关键字的使用以及lock类的用法。首先,了解下java的内存模型:(1)每个线程都有自己的本地内存空间(java栈中的帧)。线程执行时,先把变量从内存读到线程自己的本地内存空间,然后对变量进行操作。(2)对该变量操作完成后,在某个时间再把变量刷新回主内存。那么我们再了解下锁提供的...
2019-10-17 13:26:19 291
原创 数据库分库分表
垂直拆分垂直分表也就是“大表拆小表”,基于列字段进行的。一般是表中的字段较多,将不常用的, 数据较大,长度较长(比如text类型字段)的拆分到“扩展表“。 一般是针对那种几百列的大表,也避免查询时,数据量太大造成的“跨页”问题。垂直分库垂直分库针对的是一个系统中的不同业务进行拆分,比如用户User一个库,商品Producet一个库,订单Order一个库。 切分后,要放在多个服务器上...
2019-08-26 16:25:55 131
原创 Excutors框架运用
Executors是一个工厂类,可以方便的创建各种类型Executor或线程池:newSingleThreadExecutor():创建一个Executor,顺序执行一个任务队列,每次只能执行一个任务。newFixedThreadPool(nThreads):创建一个有固定数目线程的线程池,每次最多执行nThreads个任务,如果任务多于nThreads,多于的线程置于等待队列中...
2019-08-22 07:50:46 280
原创 创建启动线程的两种方法
方式一:继承Thread类;步骤:1)定义一个类 A继承于java.lang.Thread类;2)在A类中覆盖Thread类中的run方法;3)在run方法中编写需要执行的操作------run方法里的线程执行体;4)在main方法(线程)中,创建线程对象,并启动线程。创建线程类对象:A类 a = new A类( );...
2019-08-22 00:11:44 614
转载 SpringBoot之集成Redis NoSql数据库
本篇文章只是简单的介绍一下SpringBoot集成Redis的使用(不包括Redis集群的使用),算是一篇入门文章吧。下面我们进入正题。前期准备我们现在pom.xml中引入redis的配置:[html] view plain copy<dependency> <groupId>org.springframework.data</groupId> ...
2018-05-23 14:01:00 169
原创 java8新特性
使用Stream基本步骤1. 创建Stream;2. 转换Stream,每次转换原有Stream对象不改变,返回一个新的Stream对象(**可以有多次转换**);3. 对Stream进行聚合(Reduce)操作,获取想要的结果;List<String> list = Arrays.asList("aa", "bb", "cc", "a", "b", "c",&
2018-05-18 15:46:19 138
转载 触发器创建和使用
1.触发器的定义触发器的定义如下图。它与存储过程的区别在于触发器是被动调用的 ,即在满足特定事件的情况下被执行,而存储过程是在使用操作语句时主动进行调用。触发器大致分为两种:DDL触发器和DML触发器,相对应的具体定义如下。2.创建触发器2.1创建INSERT触发器INSERT触发器是DML触发器的一种,其语法格式如下。以AdventureWorks2012中的Sales.Currency表为例,...
2018-05-14 13:43:12 18132
转载 探析Spring AOP(一):Spring AOP的概念和使用
一、AOP的核心概念AOP(Aspect Oriented Programming),是面向切面编程的技术。AOP基于IoC基础,是对OOP的有益补充,流行的AOP框架有Sping AOP、AspectJAOP技术它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为”Aspect”,即切面。所谓”切面”,简单说就是那些与业务无关,却为...
2018-05-13 15:53:09 281
原创 数据库设计和优化
函数应用:select * from employee order by deptid desc,salary asc 【排序】select a.ename,a.salary,a.deptid from emp a, (select deptd,avg(salary) avgsal from emp group by deptid ) b where a.deptid=b.deptid...
2018-05-06 21:08:40 280
原创 java线程通讯
正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了。本文涉及到的知识点:thread.join(), object.wait(), object.notify(), CountdownLatch, CyclicBarrier, FutureTask, Callable 等。下面我从几个例子作为切入点来讲解下 Java ...
2018-05-05 17:35:05 149
转载 classLoader类加载器如何加载class
ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框架开发者来说却非常常见。理解ClassLoader的加载机制,也有利于我们编写出更高效的代码。ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确运行了。但是,jvm启动的时候,并不会一次性加载所有的class文件,而是根据需要去动态加载。想想也是的,一次性加载那么多j...
2018-05-05 11:54:35 4453 3
转载 线程同步和通讯
线程同步什么是线程同步?当使用多个线程来访问同一个数据时,非常容易出现线程安全问题(比如多个线程都在操作同一数据导致数据不一致),所以我们用同步机制来解决这些问题。实现同步机制有两个方法:1。同步代码块:synchronized(同一个数据){} 同一个数据:就是N条线程同时访问一个数据。2。同步方法:public synchronized 数据返回类型 方法名(){}就是使用 synchroni...
2018-05-03 20:45:24 348 2
原创 JAVA细节
1.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,j...
2018-05-03 17:02:26 212
原创 scala模式匹配,隐式转换
模式匹配: 一个模式匹配包含了一系列备选项,每个都开始于关键字 case def main(args: Array[String]) { print(1); } //模式匹配 def fun(x:Int):String = x match{ case 1 => "one" case 2 => "two" case _ => "m...
2018-05-03 15:39:13 207
原创 Scala基础
Scala基础 Scala 定义 :val msg:String = "hello" 条件判断: val m = if(i>200) 100 else 0 定义数组:Val arr = Array(1,2,3);object while1 { def main(arrgs:Array[String]){ //循环 val str = Array("hoodoop"...
2018-05-03 10:08:56 175
原创 Scala函数式编程(笔记)
http://www.runoob.com/scala/scala-closures.html 教程 函数是一个对象可以赋值给一个变量。换句话来说在类中定义的函数即是方法方法的定义:def add(x:Int,y:Int) = {x+y}方法名add 参数列表 返回Int类型add: (x: Int, y: Int)IntUnit代表没有返回值类型 def SayHi():Unit = { ...
2018-05-02 12:47:49 193
原创 Netty应用
Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。 Maven方便版本管理,引入netty依赖就可以把 netty jar包下载 io 目录下了不用每次导入jar包 先写服务端:class NettyServer { def bind(host:String,port:Int)...
2018-05-02 12:46:59 144
转载 Spring Cloud
Spring Cloud是什么?Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元,springcloud就是这些微服务的大管家,采用了微服...
2018-05-02 12:45:55 165
转载 spring redis
http://www.ityouknow.com/spring-bootredis介绍Redis是目前业界使用最广泛的内存数据存储。相比memcached,Redis支持更丰富的数据结构,例如hashes, lists, sets等,同时支持数据持久化。除此之外,Redis还提供一些类数据库的特性,比如事务,HA,主从库。可以说Redis兼具了缓存系统和数据库的一些特性,因此有着丰富的应用场景。本...
2018-05-02 12:45:24 148
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人