java
我不会GC
这个作者很懒,什么都没留下…
展开
-
希尔排序
为什么工作之余还要学习算法?答:没办法,2020互联网卷王成为了年度热词,搞it的人越来越多,也算是为了面试时候的区分度,面试越来越看重算法了,就算是为了工作.....面试官心里想:面个算法,一个可以不用尬聊,节省时间(大约10分钟,大家都很忙,基本上都是在面试的时候才看面试者的简历,熟悉的流程:先简单自我介绍一下,先写个题吧)本人经历:第一次社招2020年,基本上面像样的公司,能在手机上经常看到名字的公司,基本都问了算法其他:当然,还可以在和朋友推杯换盏之际,把牛皮吹起来插入排序.原创 2020-12-13 20:48:52 · 301 阅读 · 0 评论 -
阿里跨境支付宝退款信息签名校验和对账文件注意点
退款api文档:https://global.alipay.com/docs/ac/global/forex_refund验证签名工具网站:https://isandbox.alipaydev.com/melitigo/Test_084.html这边要吐槽文档问题,看文档可以看到文档上响应的xml信息是相当简单,但是实际上并非如此,这边放上一个退款失败请求的例子:<?xml version="1.0" encoding="UTF-8"?><alipay> <is原创 2020-12-03 21:53:13 · 738 阅读 · 0 评论 -
spring boot 启动解析
run方法 public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start();//启动计时器 ConfigurableApplicationContext context = null; Collection<SpringBootExceptionReporter&g原创 2020-07-18 11:10:22 · 166 阅读 · 0 评论 -
浩鲸社招面试题
Arraylist的默认大小和扩容方式?答:arraylist的默认大小是10,如果的new ArrayList不带参数的话,会先返回一个为0的数组,类似有一个懒加载的过程,扩容方法是0.5,扩容的时候又一个需求值,如果扩容0.5后还小于需求值,那么就使用需求值的容量。使用过什么线程安全的容器?答:Collections.SynchronizedArrayList,CopyOnWriteArraylist,ConcurrentHashMap等说说Hashmap的实现?为什么长度是2的n方?原创 2020-06-27 10:55:43 · 954 阅读 · 0 评论 -
抢红包-二倍均值算法
package com.redpackage;import java.util.ArrayList;import java.util.List;import java.util.Random;import com.zuochengyun.book.chaptertwo.list.MyListUtils;/** * 抢红包的二倍均值法 当前钱数/当前人数*2 * @author caizongyu * */public class DoubleAvgMethod { /**.原创 2020-06-24 12:50:07 · 577 阅读 · 0 评论 -
jdk8新特性
接口可以定义默认方法和静态方法package com.jdk8.newpat;public interface InterfacePat{ void method1(String s); /* * 接口可以定义默认方法 */ default void defaultMethod() { System.out.println("i am interface's default method"); } /** * 接口可以定义静态方法 */ static void .原创 2020-06-21 15:55:32 · 129 阅读 · 0 评论 -
文件锁-进程级别锁
package com.learnFileLock;import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;import java.io.UnsupportedEncodingException;import java.nio.channels.FileChannel;import java.nio.channels.原创 2020-06-11 10:23:49 · 236 阅读 · 0 评论 -
tomcat源码阅读(二)-架构
tomcat主要组件Server服务器:可以理解成tomcat,一个Server可以包含多个Service服务Service服务:管理Connetor和Container,一个service有一个Container和多个ConnetorConnetor:连接器,负责接收请求Container:容器,主要负责处理请求Session管理器:负责管理session,例如:session的创建和删除等上一张架构图:架构重点是Connetor和ContainerConneto.原创 2020-06-07 21:17:31 · 216 阅读 · 0 评论 -
tomcat7源码阅读(一)tomcat启动
先从tomcat启动脚本开始,我们可以使用startup.sh启动tomcatstartup.sh脚本分析 先判断操作系统(os400是 IBM的AIX、darwin是MacOSX 操作环境的操作系统成份、Darwin是windows平台上运行的类UNIX模拟环境) 获取catalina.sh的真实路径,并判断是否有可执行权限。调用catalina.sh脚本 PRG="$0"while [ -h "$PRG" ] ; do ls=`ls -ld "$PRG"` l原创 2020-05-15 15:49:07 · 268 阅读 · 0 评论 -
linux 上打jar包
首先确保jdk环境安装正常进入/code 目录下把需要编译的java类到写到javaFiles.txt 项目导入了lib库下的包,.java文件编译后变成.calss文件,存放在/root/class 目录下javac -d /root/class -cp .:./lib/* @./javaFiles.txt切换目录cd /root/class编译jar包 并且指定ma...原创 2020-04-30 09:59:26 · 1942 阅读 · 0 评论 -
cpu占用高线上问题排查
在线上运行的服务器,被发现cpu占用率高的问题。第一步:top指令一般cpu占用率搞和内存占用高,都是先用top看一看详情,top后可以按p来按照cpu使用率排序进程。这边用的图不是发生问题机器,主要是记录一下思路和方法通过top我们可以发现cpu占用率高的pid,记录一下第二步:ps -ef |grep pid查看该进程运行的是什么项目第三步:top -H -...原创 2020-03-07 00:27:06 · 277 阅读 · 0 评论 -
jsp原理
首先先来理清下概念,jsp(java server page),jsp其实就是一个servlet,而servlet就是一个java类,而java类运行时会被编译成一个.class文件; 有点不同的是在jsp中有java代码,有h5的代码,那么我们开看看jsp的.lass文件,可以到tomcat\ 项目\Catalina\localhost\Jstlcaseone\org\apache\jsp...原创 2018-05-17 21:13:11 · 144 阅读 · 0 评论 -
使用LinkedHashMap实现LRU
使用LinkedHashMap是有序的,并且查找的效率可以达到O(1),所以使用LinkedHashMap()来实现lru,还是很方便的大致思路: 首先标记元素长度n,初始为0,如果要换入2,先map.get(2)不存在且map的元素个数小于 块数,则放入map中,n++如果map中有这个元素,那么则删除,在放入;import java.util.LinkedHashMap...原创 2018-09-30 10:03:24 · 718 阅读 · 0 评论 -
静态变量的安全问题
首先,先给出结论,静态变量在多线程的情况下是会出现安全的问题的,下面上代码验证:验证思路,通过两个线程去a++,最后结果应该是2000,否则就是线程不安全的;public class TestStatic { public static int a=0; public static void inc(){ a++; } public static void main...原创 2018-10-20 12:19:53 · 1197 阅读 · 1 评论 -
maven笔记
捋一捋maven-maven作用:可以看做是一个管理jar包的工具 在没有使用这类的工具的时候,我们导入jar包,要通过自己去对应的官网下载,然后复制,粘贴进入项目,比如使用hibernate,那么我们要导入相应的hibernate的jar包,而使用maven就可以省去这些步骤,使用坐标来导入-maven仓库:分为本地仓库和远程仓库-maven常用指令 mvn -...原创 2018-11-03 18:30:39 · 99 阅读 · 0 评论 -
Lambda表达式
在了解lambda表达式之前,需要先了解一下函数式接口 函数式接口:有且仅有一个抽象方法的接口;例子:Runnable接口,上源码可以看到注解FunctionalInterface用来检测函数式接口,如果不符合会报错,如下图: 接下来比较下使用lambda表达式新建线程与平时新建线程的区别 public class ForList { publ...原创 2018-11-20 22:06:31 · 141 阅读 · 0 评论 -
实习--编程规范
在实习之前也看过阿里的编程规范,但是说实话,并没有看的太仔细,因为都是自己写项目玩,所以还是有忽略掉了很多地方,有一句玩笑话:写一行,改三行!! 这里记录一下自己读编程规范和实习的一些收获;A) 系统需要分层明确:service层调用dao层,其他调用service层来处理逻辑,而不是dao层,这点在自己之前写过的项目里面也有,因为service层可能涉及到一些缓存之类的操作,而dao...原创 2018-12-20 16:26:44 · 134 阅读 · 0 评论 -
奇安信java面试
一面Time_wait状态?三次握手交换了什么? SYN,ACK,SEQ,窗口大小redis的5种基础数据类型? string,list,hash,set,sorted setredis hash 短字段???docker? hashmap 1.7和1.8? 红黑树,还有链表的倒插法concurrenthashmap 1.7和1.8? 分段锁, ...原创 2019-05-19 21:13:45 · 3590 阅读 · 13 评论 -
dubbo-admin监控zk建群配置
dubbo-admin的配置文件是application.properties 正常来说路径:dubbo-admin\src\main\resources想要监控zookeeper集群可以更改配置dubbo.registry.address=zookeeper://[ip]:2181?backup=[ip]:2181,[ip]:2181想要运行也很简单在dubbo-adm...原创 2019-06-05 11:54:25 · 1907 阅读 · 0 评论 -
IDEA安装
IntelliJ IDEA简介-copy百度IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。安装步骤下载地址:https://www...原创 2019-08-13 14:33:45 · 99 阅读 · 0 评论 -
虎牙笔试第一题填空题
题目大致意思是这样:两个线程 交替输出奇偶数 ,到99 例子:0 1 2 3 4 5....99 和输出abc类似:https://blog.csdn.net/qq_39512671/article/details/81163345考完回想一下写的和屎一样package com.czy.coweroffer;p...原创 2018-09-15 09:49:50 · 819 阅读 · 0 评论 -
虚拟机中对象的内存分配的两种方式
创建对象必然要在虚拟机中分配内存,虚拟机提供了两种策略:指正碰撞和空闲列表指针碰撞法很容易理解,在内存中,一遍是已经被分配的空间,一遍的未分配的空间,如果新建了8字节对象,那么指针就往未分配空间移动8字节,所以使用这种方式的关键是保证分配的对象地址连续,取决与垃圾清楚算法;空闲列表法既然上面的方法要地址连续,那么地址不连续怎么办呢?这种情况下使用空闲列表法,记录所有地址,新...原创 2018-09-24 11:24:03 · 1620 阅读 · 0 评论 -
spring的依赖循环问题
什么是循环依赖?循环依赖很好理解,就是说A中注入了B,B中又注入了A,你中有我,我中有你的感觉; 接下来我们先来看看spring中bean的生命周期简述:A)通过构造方法初始化对象 B)注入属性 (且把实现了aware一系列接口的过程也放在这个阶段,因为实现了接口也是注入属性--Name,beanFactory、Applicationcontext )C)后处理器D)...原创 2018-09-09 11:23:15 · 193 阅读 · 0 评论 -
扯皮String,StringBuilder、StringBuffer
String是我们在开发中使用频率极高的一种引用类型,大家都知道String是不可变的,看下列代码: public static void main(String[] args) { String s="hello"; System.out.println(s+"oo"); System.out.println(s); } 这个时候呢,就会产生临时变量来 存储hello000;...原创 2018-05-24 11:27:12 · 141 阅读 · 0 评论 -
初识jvm
之前零零散散的接触过jvm,今天在这里总结一下: 我们先来说说JDK和JRE: jdk的目录 jdk(Java Development Kit )是java语言软件开发包,面向程序开发人员,如果只要运行java文件那么有jre也足够而jre(Java Runtime Environment)是java运行时环境,jdk中包含jre,上图Src.zip为jav...原创 2018-05-23 21:22:37 · 268 阅读 · 0 评论 -
总结下java基本数据类型
java有8种数据类型,分为4类: 1.整型:byte(8位)、short(16位)、int(32位)、long(64位) 2.浮点型:float(32位)、double(64位) 3.字符型 :char(16位) 4、布尔型:booleanbyte的数据范围在(-128~+127);使用float赋值时要:float a=16f; ...原创 2018-05-22 16:34:30 · 174 阅读 · 0 评论 -
hibernate项目易错点总结
之前写了一个hibernate+struts2的小案例,来巩固学习,现在总结下项目中的易错点: 这里使用了oracle12,上一个表的代码:create table Msguser(id number primary key,name varchar2(64) not null,password varchar2(128) not null);因为之前手动配置过hibernate的配置...原创 2018-05-20 09:38:25 · 131 阅读 · 0 评论 -
Struts2--namespace设置后页面跳转问题
今天在使用struts2的时候,发现了一个问题,百度了以下发现许多地方说的不是一回事。 先上代码:上述代码先是设置了一个错误页面 ,当访问的资源不存在的时候,那么就跳转到error.jsp页面namespace设置为/user ,那么问题来了,许多人说当加了namespace后要访问的路径http://localhost:8088/Struct02/user/China.action ,...原创 2018-04-22 16:20:28 · 693 阅读 · 2 评论 -
框架前---理清概念
一晃眼就来到大三了,在大学的学习中写了一些代码,接触到了不少的概念,来此终结,希望自己能有更加清晰的认识。 写了java web程序,一定有听说过Apache和Tomcat,但之前并不太清楚二者有何异同。 Apache是一种开放源代码的web应用服务器,可以用来构建虚拟站点,编译处理静态页面,由于其多平台和安全性被广泛使用,是最流行的web服务器端软件之一。 Apache sof...原创 2018-04-17 11:15:21 · 162 阅读 · 0 评论 -
枚举
枚举有什么用呢?在我看来写程序就是为了解决问题,在我们写的项目中,我们常常需要处理一些非数值型数据,例如: 星期,日期,性别等。如果我们用一个数值在程序中代替他们,这中方法当然可行,但是非常不直观。如果要使用程序易读,就可以使用枚举。 枚举闪亮登场,在java中 ,使用enum关键字,使用格式如下: enum 枚举名{值};调用: 枚举类型的遍历方法: ...原创 2018-04-01 15:39:23 · 98 阅读 · 0 评论 -
Swich case
哈哈,做项目的时候手抖,发现了一个错误。 Swich case 大概刚刚开始学C语言的时候,就学过了,但是以前从来没有把后面跟着的break忽略,不知为何今日小手一抖,出了差错,因为项目代码比较多,不方便截取 ,所以新建了一个java项目: 当没有加break的时候,运行会把不符合值的语句都运行一遍。当然如果value=1,那么会从1开始运行到最后。所以啊,希望大家打好基础,不要出现这种剁手...原创 2018-03-22 11:11:31 · 707 阅读 · 0 评论 -
HashMap源码1.8实现思路
大家都知道,hashMap的结构是数组加上链表,但是在jdk1.8中,链表的结构是可以随着链表的长度增加而改变成树形结构(红黑树);先来看看源码中的一些常数:static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 默认的数组大小static final int MAXIMUM_CAPACITY = 1 &l...原创 2018-07-17 00:13:00 · 323 阅读 · 0 评论 -
java.lang.IllegalMonitorStateException报错
public void add() throws InterruptedException{ if(count>=10){ System.out.println(Thread.currentThread().getName()+":producter is enough"); this.wait();//满了wait }else{ System.out.pri...原创 2018-07-22 19:30:47 · 338 阅读 · 0 评论 -
redis---主从复制、哨兵模式
我们使用redis做缓存来提高系统性能,降低对数据库的访问,那么只使用一个是不够的,万一出现故障之后,所有的压力就会回到数据库,照成崩盘,因此我们可以使用多个redis来做缓存,并且读写分离来提高性能 配置其实十分简单,只要启动所有的redis,配置从机就好了,不用配置主机: 命令: slaveof 主库ip 主库端口注意:在我们设置好主从后,从机将不发进行写操作 ,会...原创 2018-08-13 16:59:10 · 222 阅读 · 0 评论 -
设计模式----单例模式
我想在使用hibernate或者mybatis时,大家都接触过单例模式单例模式分为两种: 懒汉和饿汉 懒汉:使用时才去创建--看着名字就能想到饿汉:一开始就去创建分别上代码:懒汉:public class Singlelazy { public static FactoryCopy copy; public static FactoryCopy getFc(){...原创 2018-07-30 14:11:45 · 104 阅读 · 0 评论 -
实现多线程的4种方式
在我们学习java基础的时候,我们会基础到线程这一章节,大多数刚刚接触的,都会被先了解到实现创建线程有2种方式,继承Thread类和实现Runnable接口; 但是经过后面我们会知道,实现多线程并非只有这两种方式,还有另外两种,那就是实现Callable接口和使用线程池; 那么这里实现多线程的方式就有4种了。A)继承Thread类package com.czy.four...原创 2018-07-21 10:03:58 · 339 阅读 · 0 评论 -
spring-boot 使用
spring-boot不愧是框架之王,我们在使用ssh或者ssm的时候,要配置一大堆的文件,但是使用spring-boot后简直就爽翻了!!! 看一下spring-boot下简短的配置文件:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0...原创 2018-07-29 12:28:52 · 133 阅读 · 0 评论 -
java源码常用关键字
native 我们先来看看native关键字jdk1.8 中的Class类中有这么一个方法: public native boolean isInstance(Object obj);我们不管这个方法是做什么的,但是一看这个方法我们会觉得很奇怪,因为Class是一个类,而不是一个接口,居然还存在没有方法体的方法,带着疑问继续了解;那么native这个单词有本地的意思,被...原创 2018-07-13 22:52:34 · 371 阅读 · 0 评论 -
jvm:对象内存布局
我们每天都在new对象,但是我们却对对象一无所知!在内存中对象的内容分为三块: 对象头:Mark word:hashCode、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间截等; 元数据指针:通过该指针来确定实例对象是属于哪一个类 如果对象是数组,那么还会有一个字段来记录数组的长度实例数据:就是我们新建类时写入的信息...原创 2018-07-12 21:36:38 · 201 阅读 · 0 评论 -
基础--java反射
学习框架的时候,会经常接触到java的反射机制,所以搞清楚反射是很有必要的,毕竟反射是框架设计的灵魂;反射是啥?来看看百度百科的定义:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。看不懂,没关系,接着往下看这里先介绍下Class...原创 2018-07-12 12:29:17 · 142 阅读 · 0 评论