自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(141)
  • 资源 (5)
  • 收藏
  • 关注

原创 今日头条后台开发岗(Java)实习面试

首先上来是自我介绍。第一题:算法题。给定一个数组和一个目标结果,返回数组中两个数的和等于目标结果的索引的数组,要考虑数组中的重复元素。比如,给一个数组{2,-1,0,2,18,30,20},target=20。那返回的结果集应该为[2,6],[0,4],[3,4]。这道题刷LeetCode的时候做过类似的,只不过那道题没有重复元素。回答:思路是建一个map,将数组的值存为key,索...

2020-07-15 10:36:45 427

原创 探究JS V8引擎下的“数组”底层实现

背景今天在学习JS的数组时,发现JS的数组可以存放不同类型的元素、并且数组长度是可变的。what??这跟我之前接触的数组不一样啊。数据结构中定义的数组都是定长的、数据类型一致的存储结构。JS中的数组竟然如此特殊,这也是为什么标题中数组二字加上了“”的原因。带着一脸的懵逼,打开搜索引擎,一探究竟。目录:什么是数组JavaScript中的数组总结什么是数组首先来看维基百科中对于数组...

2019-09-17 15:56:22 1615

原创 linux 文件IO系统学习

所有的IO操作打开的文件系统都会生成一个文件描述符fd来表示已经打开的文件。fd是一个整数。fd = open(pathname, flags, mode)函数打开pathname所标识的文件,并返冋文件描述符,用以在后续函数调用中指代打开的文件。如果文件不存在,open()函数可以创建,这取决于对位掩码参数flags的设置。如果打开的过程中出现错误,则返回-1。flags参数还可指定...

2019-06-29 16:32:08 351

原创 Kapacitor、Chronograf配置报警的TICKscript脚本语言使用

TICK :Telegraf +InfluxDB +Chronograf +KapacitorTelegraf:Telegraf是一个数据采集套件,对应用、容器等进行监控,监控采集的数据会发送给influxDB。InfluxDB:go语言开发的时序数据库,专门负责存储时序数据。Chronograf :可视化的监控展示服务。Kapacitor:Kapacitor是一款时序数据...

2019-04-20 10:45:30 3034

原创 RocketMQ消息消费方式 推拉模式

RocketMQ消息消费本质上是基于的拉(pull)模式,consumer主动向消息服务器broker拉取消息。consumer被分为2类:MQPullConsumer和MQPushConsumer,其实本质都是拉模式(pull),即consumer轮询从broker拉取消息。 区别:MQPushConsumer方式,consumer把轮询过程封装了,并注册MessageListener监...

2019-04-14 11:42:40 8423 2

原创 创建基于Feign的RPC服务

1.首先声明一个feign的接口@FeignClient(value = "test-api", configuration = QueryBySqlServiceConfiguration.class, fallback = QueryBySqlServiceFallBack.class)public interface QueryBySqlService { @PostMapp...

2019-04-02 11:09:26 1484 1

转载 top K问题

在大规模数据处理中,经常会遇到的一类问题:在海量数据中找出出现频率最好的前k个数,或者从海量数据中找出最大的前k个数,这类问题通常被称为top K问题。例如,在搜索引擎中,统计搜索最热门的10个查询词;在歌曲库中统计下载最高的前10首歌等。针对top K类问题,通常比较好的方案是分治+Trie树/hash+小顶堆(就是上面提到的最小堆),即先将数据集按照Hash方法分解成多个小数据集,然后使...

2019-03-28 12:02:21 183

原创 HashMap的死循环问题

HashMap在put操作时,如果达到了扩容条件,会触发resize操作,对map进行扩容。public V put(K key, V value) { if (key == null) return putForNullKey(value); int hash = hash(key); int i = indexFor(hash, table.len...

2019-03-20 18:34:25 574

转载 TCP的可靠传输 滑动窗口、确认应答与超时重传

TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。通过序列号与确认应答提高可靠性TCP通过肯定的确认应答(ACK)实现可靠的数据传输。当发送端将数据发出后会等待对端的确认应答。如果有确认应答,说明数据已经成功到达对端。反之,则数据丢失的可能性很大。没有收到确认应答并不意味着数据一定丢失。也又可能是对方已经收到了数据,只是返回的确认应答在途中丢失...

2019-03-14 15:14:06 1336

原创 如何开发RESTful API

RESTFul API有哪些特点:基于“资源”,数据也好、服务也好,在RESTFul设计里一切都是资源。 无状态。一次调用一般就会返回结果,不存在类似于“打开连接-访问数据-关闭连接”这种依赖于上一次调用的情况。 URL中通常不出现动词,只有名词 URL语义清晰、明确 使用HTTP的GET、POST、DELETE、PUT来表示对于资源的增删改查 使用JSON不使用XML 我举...

2019-03-14 10:18:56 443

原创 Java判断字符串是不是时间日期格式

引入jar包:import org.apache.commons.lang3.time.DateUtils; private static String[] parsePatterns = {"yyyy-MM-dd","yyyy年MM月dd日", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy/MM/dd"...

2019-03-06 10:31:39 17442 3

转载 进程和线程的区别

进程与线程的区别:通俗的解释一个系统运行着很多进程,可以比喻为一条马路上有很多马车不同的进程可以理解为不同的马车而同一辆马车可以有很多匹马来拉--这些马就是线程假设道路的宽度恰好可以通过一辆马车道路可以认为是临界资源那么马车成为分配资源的最小单位(进程)而同一个马车被很多匹马驱动(线程)--即最小的运行单位每辆马车马匹数=1所以马匹数=1的时候进程和线程没有...

2019-03-06 10:27:13 182

原创 Java中的ThreadLocal、ThreadLocalMap原理学习

public class ThreadLocalTest { public static void main(String[] args) { final ThreadLocal<Integer> local = new ThreadLocal<>(); local.set(10); Thread t = new T...

2019-03-06 10:26:47 1455

原创 Redis事务,watch命令学习

redis事务:redis的事务和mysql等关系型数据库的事务不太一样,redis中的事务不会回滚,只能手动收拾事务失败后的烂摊子。在命令行中,MULTI是事务的开始命令。EXEC是事务的执行命令。并且会按顺序执行事务中的命令,不会被其他事务的命令打扰。在java操作redis中,是通过.multi()和.exec()开始和执行事务。MULTI会将之后加入的所有命令按顺序的加入到命令...

2019-03-05 16:07:15 1689

原创 Mysql InnoDB事务隔离级别

隔离级别 脏读(Dirty Read) 不可重复读(NonRepeatable Read) 幻读(Phantom Read) 未提交读(Read uncommitted) 可能 可能 可能 已提交读(Read committed) 不可能 可能 可能 可重复读(Repeatable read) 不可能 不可能 可能...

2019-03-05 16:07:01 2078

转载 Java反射中Class.forName()和ClassLoader.loadClass()的区别

一、Java类装载过程装载:通过累的全限定名获取二进制字节流,将二进制字节流转换成方法区中的运行时数据结构,在内存中生成Java.lang.class对象; 链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;   校验:检查导入类或接口的二进制数据的正确性;(文件格式验证,元数据验证,字节码验证,符号引用验证)   准备:给类的静态变量分配并初始化存储空间...

2019-03-05 16:06:55 339

原创 new Hashmap时设置初始化容量多少合适

在阿里巴巴Java开发手册中,阿里工程师对于初始化hashmap的容量的建议是:刚看到这个建议,是非常懵的,为啥要这样设置?在jdk中,当我们new hashmap并且指定初始化容量capacity时,jdk会帮我们取第一个大于capacity的2次幂。具体的实现是:1.先把capacity - 12.进行多次无符号右移和或运算3.最后 + 1比如,我们...

2019-03-05 16:06:51 27695 2

原创 适配器模式在Java中的应用

Java中Array.asList()方法就是用的适配器模式,这个方法只是在原来的数组上包了一次list,实际上数据还是保存在数组中。如果对Array.asList()方法得到的list调用add,remove等操作,将抛出了UnsupportedOperationException。因为asList()方法返回的是Array的一个内部类,并不是正经的List类,它并没有实现List类的一...

2019-03-05 16:06:46 653 1

原创 mac批量修改文件名、后缀名

第一种方法:打开终端cd 到文件所在的目录执行for i in *.xxx;do mv “$i” “${i%.xxx}.yyy” ;done 命令。把xxx换成输入的后缀,yyy换成输出的后缀即可。第二种方法:下载NameChanger工具。add后选择中间的模式,rename即可。...

2019-03-05 16:06:42 11578

原创 局部变量、实例变量的线程安全性

局部变量是线程安全的。因为局部变量是声明在方法中的变量,方法是放在JVM内存中的方法区的,为方法分配内存的时候并不会为局部变量分配内存,只有在有线程在调用方法的时候才会为局部变量分配内存,并且局部变量是分配在栈上的,栈空间是线程私有的,所以,每当有线程执行方法,都会为其在栈上分配一个局部变量的空间。所以局部变量是属于线程的,是线程安全的。实例变量的线程安全要分两种情况来说。对于单例模式下对象的...

2019-03-05 16:06:37 809

原创 反向代理和CDN是什么,作用是什么

CDN是内容分发网络(Content Delivery Network)。是为了解决用户请求响应过慢的问题。比如用户在黑龙江,服务器在海南,用户请求的速度可能受距离、带宽的影响。CDN将几台机器分发在全国各地,用户发出的请求会选择就近的CDN服务器进行处理。CDN简单的来说就是存储一些静态文件的一台或多台服务器,通过复制,缓存主服务器等方式,将文件保存其中。反向代理一般就是指Nginx,是...

2019-03-05 16:06:33 6503

原创 Java循环中创建多个对象是几个引用?以及是否线程安全

在循环中,通过User user = new User();这种方式创建的对象。每次创建的对象是不同的,但是引用是同一个,引用的生命周期是单次循环,下次循环会覆盖调上次的引用。比如这段代码: int minId = 0; while (true){ List&lt;InvitationRel&gt; invitationRelList...

2019-03-05 16:06:29 2109

转载 Java代码判断字符串中是否含有表情

最近在发微信公众号模版消息时遇到一个问题,如果用户的nickname中有表情,那么消息的字体颜色就会发生变化,像这样:这个问题应该是微信的问题,所以我们不能解决掉这个bug,只能等腾讯爸爸来修复。唯一能做的就是去除掉字符串中的表情,下面是具体代码。/** * 判断字符串中是否含有表情 * @param source * @return */ ...

2019-03-05 16:06:24 8039

原创 Java和C C++ 在内存分配方式上的不同

Java中,基本类型是直接存储值的,放在内存的栈中存储。存储在栈中的数据,需要有固定的大小和生命周期。因为栈中的内存分配方式是向下增长的,栈顶指针向下移动,就会分配内存(压栈);向上移动,就会释放内存(弹栈)。如果一直压栈,当栈内存不足时,就会发生栈溢出。所以Java中基本数据类型和对象的引用是存放在栈中的。并且基本数据类型的大小不会根据机器硬件架构的变化而变化,保证了固定大小。基本类型变量或者引...

2019-03-05 16:06:19 1293

原创 java8 sublist不可序列化问题

Java8中的arraylist的sublist的方法,返回的是一个sublist类型的视图。这个sublist类型是arraylist的一个内部类,不支持序列化,所以在转成json的时候会报错。视图的含义就是它虽然里面的元素数量变了,但是操作其中的元素实际上操作的还是原来list,并不是一份新的list。如果改变原有的list,那么sublist会抛出ConcurrentModifica...

2019-03-05 16:06:15 2200

原创 解决Mybatis出现的各种Parameter ' ' not found. Available parameters are [ , ]

1.当Mapper给xml传入的是基础类型或者要用到的list时,出现问题的原因可能是因为Mapper的参数没有加@Param标注 List&lt;UserMissionRecord&gt; getMissionRecordByUserIds(@Param("userIdList") List&lt;Long&gt; userIdList); UserMissionRecor...

2019-03-05 16:06:10 29371

原创 Java8新特性lambda stream 函数接口学习

Lambda表达式:格式为:expression = (variable) -&gt; action含义就是将几个变量通过action代码中的逻辑,计算出结果返回给expression表达式。变量为一个时,可以不加括号。 List&lt;Integer&gt; list = Arrays.asList(1,2,5,8,7,4); Collection...

2019-03-05 16:06:05 332

原创 GC可达性分析回收算法 解决循环引用问题 强引用弱引用

JVM有一个回收算法是引用计数算法,每当对象被引用一次,就+1,释放一个引用就-1,当垃圾回收时,引用计数为0的对象就会被GC掉。但这个方法有个问题,就是无法解决循环引用的问题。循环引用就是对象A引用了对象B,对象B引用了对象A,构成了一个引用环。彼此都没发挥什么作用,但却不会被GC。为了解决这个问题,就有了可达性分析回收算法。可达性分析:算法中定义了几个GC Root对象,这几个ro...

2019-03-05 16:06:01 3912

原创 Java NIO学习

Java的普通IO是面向流的IO,从流中读取数据,将数据写入流中。是一个字节一个字节的读取和写入,而NIO是jdk1.4后推出的面向块的IO流,通过加入缓冲区和管道,以数据块为单位对数据进行IO。缓冲区Buffer:本质是一个由数组实现的容器,数据从文件或从其他地方读取首先需要装入到缓冲区中,写入也是先写入到缓冲区,而不是直接从Stream中读取或写入。管道Channel:数据传输...

2019-03-05 16:05:56 262

原创 JMeter压力测试工具使用

1.新建测试计划,选择添加,线程。2.点击http请求,配置协议、ip、端口、路径、请求方式、参数。get方式直接在parameters中配置即可,如果是post方式,要在bodydata中添加json形式的数据,并且右键线程组,add。添加一个HTTP Header Manager。点击add,添加发送数据的格式.3.如果已经有写好的测试数据文件,右键...

2019-03-05 16:03:56 216

原创 mysql创建触发器时出错You have an error in your SQL syntax; check the manual that corresponds to your MySQL

在执行创建触发器sql语句时出现了错误。错误找了好久,原因是我使用的mysql版本为5.6,没有begin和end关键字。删除掉begin和end,创建成功。

2019-03-05 16:03:48 13465

原创 Redis setNX锁实现

setNX设置锁时设置值和过期时间是个原子的操作。对于setNX的并发性问题在底层实现上有这些措施。1.对锁加一个过期时间,防止客户端A设置了锁,然后客户端挂了,锁一直得不到释放这种情况。2.释放锁的操作必须使用Lua脚本来实现。释放锁其实包含三步操作:'GET'、判断和'DEL',用Lua脚本来实现能保证这三步的原子性。否则,如果把这三步操作放到客户端逻辑中去执行的话,就有可能发生...

2019-03-05 15:53:53 2999

原创 redis为什么是单线程

原因一:redis本身就是基于内存操作的,所以每个操作执行速度都很快。如果使用多线程,就需要解决多线程同步的问题,就会涉及到线程的频繁切换而消耗CPU。单线程的使用避免了不必要的上下文切换和竞争条件,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗。原因二:redis中的数据结构比较简单,对数据的操作也就比较快。原因三:使用多路复用IO,即非阻塞IO。...

2019-02-26 17:23:47 2724 1

原创 spring5.0.2下的自定义属性编辑器

  新版本spring的CustomEditorConfigurer类进行了改变: 新模板为:&lt;bean class="org.springframework.beans.factory.config.CustomEditorConfigurer"&gt;          &lt;property name="customEditors"&gt;        ...

2019-02-26 17:23:27 268

原创 命令运行java程序的找不到主类 classpath问题解决

解决import问题,在类的上一级目录执行javac命令解决无法加载主类问题,在执行java命令之前 setclasspath=主类packetage的上一级目录 再执行java命令即可或者 java –classpath 主类的上一级目录(一般是src) 包名.文件名  解决编码的GBK问题: javac  -encoding utf-8 test.java  ...

2019-02-26 17:23:23 2035

原创 解决AWT Swing组件按钮等乱码问题

编码不对。你应该是是使用GBK不兼容的编码(如UTF-8)来编写GUI源代码。右击工程,在Resource中,Text fileencoding,改为GBK,如果没有就选择Other,自己输入GBK,OK。右击工程,点击“Run As” - “Run Configurations”的Encoding,选择GBK编码。如果默认不是GBK,请选择“Other”,选择GBK。若没有则自己输入,然后确...

2019-02-26 17:23:18 1486

原创 Web服务器,C/S B/S两种架构模式

Web服务器IIS:微软提供,支持ASP、PHPApache:Apache基金会提供,处理静态页面效率高Tomcat:Apache基金会提供,支持jsp、PHP,轻量级服务器,不能支持EJB服务Jboss:开源,重量级服务器,Sun公司认准的J2EE服务器 C/S   B/S两种架构模式 动态网页技术CGI:(共用网关接口)早期技术,编程复杂,维护困难ASP...

2019-02-26 17:23:14 8079

原创 Tomcat打开方法,碰到JRE_HOME 问题和修改默认端口

Tomcat打开:运行bin目录下的startup.bat,再运行tomcat8.exe碰到JRE_HOME 问题:编辑bin目录下的setclasspath.bat加上  修改conf目录下的server.xml可改localhost:8080的端口号...

2019-02-26 17:23:09 2596

原创 spring之IOC控制反转和DI依赖注入

Ioc—Inversion of Control,即“控制反转”,是一种设计思想。传统方式是需要什么对象就new什么对象,完全是由自己定义自己创建自己销毁的,控制权在自己手上。用了IOC之后,控制权发生了反转,由spring容器控制,自己写好的Javabean后,在applicationContext.xml中注册登记,然后由spring进行管理,需要用什么对象时,就调用spring的A...

2019-02-26 17:23:05 304

原创 java静态代理和动态代理理解

静态代理: 就是自己编写一个代理类来代理一个具体的类,使使用这个类的客户端不需要知道实现类是什么,怎么做的,而客户端只需知道和使用代理即可,也就是把客户端和具体类进行了解耦合。这个关系可以用明星和经纪人来类比。编写一个接口明星:package staticProxy;public interface Superstar { public void showUp(); publi...

2019-02-26 17:23:01 283

springsecurityJAR包

springsecurity中使用MD5编码所需要的JAR包,包括org.springframework.security.authentication.encoding.Md5PasswordEncoder

2018-06-13

解析json所需要的jar包

java解析json数据需要的jar包, 包括:commons-beanutils-1.7.0.jar commons-collections-3.1.jar commons-lang-2.4.jar commons-logging-1.1.1.jar ezmorph-1.0.6.jar json-lib-2.1.jar log4j.jar

2018-04-26

java网络编程 对战版俄罗斯方块

用java写的对战版的俄罗斯方块,用到了网络编程,多线程,数据库,文件操作。用swing写的页面。

2018-03-25

java用户管理系统

用户管理系统分为管理员模块和普通用户模块 管理员: 1.查找用户(1.全部显示2.根据ID查询3.根据用户名查询) 2.添加用户 3.修改用户 4.删除用户 用户: 1.查看自己的信息 2.修改自己的信息 游客: 1.登入 2.注册

2018-01-30

网络对战版俄罗斯方块

用java写的对战版的俄罗斯方块,用到了网络编程,多线程,数据库,文件操作。用swing写的页面。

2018-01-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除