自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

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

2019-09-17 15:56:22

阅读数 162

评论数 0

原创 linux 文件IO系统学习

所有的IO操作打开的文件系统都会生成一个文件描述符fd来表示已经打开的文件。fd是一个整数。 fd = open(pathname, flags, mode) 函数打开pathname所标识的文件,并返冋文件描述符,用以在后续函数调用中指代打开的文件。如果文件不存在,open()函数可以创建,...

2019-06-29 16:32:08

阅读数 55

评论数 0

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

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

2019-04-20 10:45:30

阅读数 1234

评论数 0

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

RocketMQ消息消费本质上是基于的拉(pull)模式,consumer主动向消息服务器broker拉取消息。 consumer被分为2类:MQPullConsumer和MQPushConsumer,其实本质都是拉模式(pull),即consumer轮询从broker拉取消息。 区别: MQ...

2019-04-14 11:42:40

阅读数 1858

评论数 2

原创 创建基于Feign的RPC服务

1.首先声明一个feign的接口 @FeignClient(value = "test-api", configuration = QueryBySqlServiceConfiguration.class, fallback = QueryBySqlServiceFallB...

2019-04-02 11:09:26

阅读数 520

评论数 1

转载 top K问题

在大规模数据处理中,经常会遇到的一类问题:在海量数据中找出出现频率最好的前k个数,或者从海量数据中找出最大的前k个数,这类问题通常被称为top K问题。例如,在搜索引擎中,统计搜索最热门的10个查询词;在歌曲库中统计下载最高的前10首歌等。 针对top K类问题,通常比较好的方案是分治+Trie...

2019-03-28 12:02:21

阅读数 44

评论数 0

原创 HashMap的死循环问题

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

2019-03-20 18:34:25

阅读数 108

评论数 0

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

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

2019-03-14 15:14:06

阅读数 253

评论数 0

原创 如何开发RESTful API

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

2019-03-14 10:18:56

阅读数 66

评论数 0

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

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

2019-03-06 10:31:39

阅读数 2607

评论数 0

转载 进程和线程的区别

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

2019-03-06 10:27:13

阅读数 44

评论数 0

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

public class ThreadLocalTest { public static void main(String[] args) { final ThreadLocal<Integer> local = new ThreadLocal<>(...

2019-03-06 10:26:47

阅读数 193

评论数 0

原创 Redis事务,watch命令学习

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

2019-03-05 16:07:15

阅读数 927

评论数 0

原创 Mysql InnoDB事务隔离级别

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

2019-03-05 16:07:01

阅读数 388

评论数 0

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

一、Java类装载过程 装载:通过累的全限定名获取二进制字节流,将二进制字节流转换成方法区中的运行时数据结构,在内存中生成Java.lang.class对象; 链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;   校验:检查导入类或接口的二进制数据的正确性;(文...

2019-03-05 16:06:55

阅读数 73

评论数 0

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

在阿里巴巴Java开发手册中,阿里工程师对于初始化hashmap的容量的建议是: 刚看到这个建议,是非常懵的,为啥要这样设置? 在jdk中,当我们new hashmap并且指定初始化容量capacity时,jdk会帮我们取第一个大于capacity的2次幂。 具体的实现是: 1.先...

2019-03-05 16:06:51

阅读数 7961

评论数 0

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

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

2019-03-05 16:06:46

阅读数 216

评论数 1

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

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

2019-03-05 16:06:42

阅读数 3385

评论数 0

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

局部变量是线程安全的。因为局部变量是声明在方法中的变量,方法是放在JVM内存中的方法区的,为方法分配内存的时候并不会为局部变量分配内存,只有在有线程在调用方法的时候才会为局部变量分配内存,并且局部变量是分配在栈上的,栈空间是线程私有的,所以,每当有线程执行方法,都会为其在栈上分配一个局部变量的空间...

2019-03-05 16:06:37

阅读数 136

评论数 0

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

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

2019-03-05 16:06:33

阅读数 2325

评论数 0

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

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

2019-03-05 16:06:29

阅读数 843

评论数 0

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

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

2019-03-05 16:06:24

阅读数 2115

评论数 0

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

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

2019-03-05 16:06:19

阅读数 318

评论数 0

原创 java8 sublist不可序列化问题

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

2019-03-05 16:06:15

阅读数 647

评论数 0

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

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

2019-03-05 16:06:10

阅读数 2911

评论数 0

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

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

2019-03-05 16:06:05

阅读数 159

评论数 0

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

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

2019-03-05 16:06:01

阅读数 1209

评论数 0

原创 Java NIO学习

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

2019-03-05 16:05:56

阅读数 100

评论数 0

原创 JMeter压力测试工具使用

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

2019-03-05 16:03:56

阅读数 88

评论数 0

原创 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

阅读数 11699

评论数 0

原创 Redis setNX锁实现

setNX设置锁时设置值和过期时间是个原子的操作。 对于setNX的并发性问题在底层实现上有这些措施。 1.对锁加一个过期时间,防止客户端A设置了锁,然后客户端挂了,锁一直得不到释放这种情况。 2.释放锁的操作必须使用Lua脚本来实现。释放锁其实包含三步操作:'GET'、...

2019-03-05 15:53:53

阅读数 813

评论数 0

原创 redis为什么是单线程

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

2019-02-26 17:23:47

阅读数 1609

评论数 1

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

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

2019-02-26 17:23:27

阅读数 132

评论数 0

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

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

2019-02-26 17:23:23

阅读数 786

评论数 0

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

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

2019-02-26 17:23:18

阅读数 654

评论数 0

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

Web服务器 IIS:微软提供,支持ASP、PHP Apache:Apache基金会提供,处理静态页面效率高 Tomcat:Apache基金会提供,支持jsp、PHP,轻量级服务器,不能支持EJB服务 Jboss:开源,重量级服务器,Sun公司认准的J2EE服务器   C/S   B/...

2019-02-26 17:23:14

阅读数 4095

评论数 0

原创 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

阅读数 1685

评论数 0

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

Ioc—Inversion of Control,即“控制反转”,是一种设计思想。 传统方式是需要什么对象就new什么对象,完全是由自己定义自己创建自己销毁的,控制权在自己手上。用了IOC之后,控制权发生了反转,由spring容器控制,自己写好的Javabean后,在applicationCon...

2019-02-26 17:23:05

阅读数 153

评论数 0

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

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

2019-02-26 17:23:01

阅读数 143

评论数 0

原创 修改SqlServer下的sa用户密码使SqlServermanagestudio可以用sa用户登录

首先打开SqlServermanagestudio,用原来的Windows身份认证登录进去 点击数据库服务器,右键选择属性 选择安全性,将服务器身份验证改为Windows和SqlServer验证。 然后点击 安全性 打开后点击 登录名 找到sa或者其他需要的用户。 双击或者鼠标...

2019-02-26 17:22:57

阅读数 2297

评论数 0

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