自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 long转int类型转换问题

两者相减的数据大于了int最大值,导致本应该是正数的一个值,int转换后是一个负数,导致排序混乱。修改也简单,把根据时间戳排序改为根据date自带的compareTo排序即可。在业务代码中排序时需要根据日期排序,写了如下代码。

2023-12-05 17:46:29 92

原创 大数据相关知识

Hadoop 三大核心组件HDFS(分布式文件系统) -—— 实现将文件分布式存储在集群服务器上MAPREDUCE(分布式运算编程框架) —— 实现在集群服务器上分布式并行运算YARN(分布式资源调度系统) —— 帮用户调度大量的 MapReduce 程序,并合理分配运算资源(CPU和内存)

2023-04-13 17:46:59 1059

原创 fastjson的内存泄漏问题

内存泄漏 metaspace内存泄露

2023-01-30 20:07:19 3441

原创 Netty相关面试题

1.Netty 是什么?Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty是基于nio的,它封装了jdk的nio,让我们使用起来更加方法灵活。2.Netty 的特点是什么? 高并发:Netty 是一款基于 NIO(Nonblocking IO,非阻塞IO)开发的网络通信框架,对比于 BIO(Blocking I/O,阻塞IO),他的并发性能得到了很大提高。 传输快:Netty 的传输依赖于零拷贝特性,尽量减少不必要的内存拷贝,实

2022-02-11 11:53:06 296

原创 面试题总结(垃圾回收相关)

Java中的垃圾回收器几乎是面试中的必考点,无论是面试初级,中级还是高级,总免不了要问一问垃圾回收器的一些知识点。不管在实际开发中你使用程度怎么样,为了面试不被压价,还是非常有必要对它做一个较深入的理解。本篇对JVM中常用的几种垃圾回收器的主要特点,使用场景及优化建议做一个简单介绍,希望起到抛砖引玉的效果,对你入门有所帮助。新生代回收器 Serial ParNew parallel 老年代回收器 Serial Old CMS Parallel

2021-06-09 14:21:50 246 3

原创 微服务相关问题(限流,秒杀系统)

微服务为了保证高可用常用的几个手段:限流,降级,缓存和熔断等,这里讲一下几种限流方案。限流可以保证使用有限的资源提供最大化的服务能力,按照预期流量提供服务,超过的部分将会拒绝服务、排队或等待、降级等处理。限流的类库有很多,不同语言的有不同的类库,如大Java的有concurrency-limits、Sentinel、Guava 等1、计数器固定窗口计数器计数限流是最为简单的限流算法,日常开发中,我们说的限流很多都是说固定窗口计数限流算法,比如某一个接口或服务1s最多只能接收1000个请求,那么我

2021-05-28 15:33:00 211

原创 mysql的分库分表及主从同步

⾸先分库分表分为垂直和⽔平两个⽅式,⼀般来说我们拆分的顺序是先垂直后⽔平。垂直分库基于现在微服务拆分来说,都是已经做到了垂直分库了垂直分表如果表字段⽐较多,将不常⽤的、数据较⼤的等等做拆分⽔平分表⾸先根据业务场景来决定使⽤什么字段作为分表字段(sharding_key),⽐如我们现在⽇订单1000万,我们⼤部分的场景来源于C端,我们可以⽤user_id作为sharding_key,数据查询⽀持到最近3个⽉的订单,超过3个⽉的做归档处理,那么3个⽉的数据量就是9亿,可以

2021-05-20 13:27:57 708

原创 各种调优(tomcat,jvm,Kafka)

1、tomcat调优采用动静分离节约tomcat性能:nginx+tomcat实现动静分离,nginx实现静态资源的访问调整tomcat线程池:比如maxThreads线程池中最大的线程数量minSpareThreads线程池中允许空闲的线程数量maxIdLeTime一个线程空闲多久算是空闲线程调整tomcat连接器:enableLookups="false"关闭dns解析,减少性能损耗修改tomcat的运行模式:可以将protocol改为NIO模式禁用AJP连接器...

2021-05-13 16:46:41 381 1

原创 java常用监控命令

Java常用的监控命令比如top,jps,jmap等,下面具体讲解一下使用方式1、top使用top展示的信息如下所示其中第一行展示了机器的负载(load)信息:当前时间,机器运行了多长时间,有多少登录用户,系统在过去的1分钟,5分钟和15分钟内的平均负载第二行展示了进程调度情况第三,四,五行分别展示了CPU使用情况,内存占用状态,包括主存与交换分区后面展示了具体进程的使用情况2、jps展示了应用程序进程id及启动类名jsp -l 输出应用程序主类完整package

2021-05-11 14:35:01 711

原创 mybatis generator 使用方法

1、pom配置<!-- mybatis-generator-core 反向生成java代码--><dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version></dependency&g

2021-05-10 15:15:33 287

原创 sql语法理解(exist)

1、今天有个需求,就是要找到我们从原表A洗出来的映射表B中的数据是否全,就是A表中是否有没有在B表的,后来研究了一下,可以用not exist 实现,exist和in的区别就是in是in查询的条件只能返回一个字段,而exist可以用多个字段,因此在not exist 的结果集中匹配AB所有的列,那返回的就是所有不相等的,即B不在A中的数据相关博文:https://www.cnblogs.com/flzs/p/11542181.html...

2021-04-28 16:46:14 824

原创 解决idea粘贴空格时显示NBSP的问题

在网上看到的,空格会显示成特殊字符,可以在This behavior can be disabled at Help | Find Action | Registry | editor.show.special.chars 即可

2021-04-10 14:30:04 3576 3

原创 Java面试题总结(事物)

1、事物的四个隔离级别严格意义上的事务实现应该是具备原子性、一致性、隔离性和持久性,简称 ACID。原子性(Atomicity),可以理解为一个事务内的所有操作要么都执行,要么都不执行。 一致性(Consistency),可以理解为数据是满足完整性约束的,也就是不会存在中间状态的数据,比如你账上有400,我账上有100,你给我打200块,此时你账上的钱应该是200,我账上的钱应该是300,不会存在我账上钱加了,你账上钱没扣的中间状态。 隔离性(Isolation),指的是多个事务并发执行的时候不

2021-04-01 16:44:17 1228

原创 AQS理解

AQS全称是AbstractQueuedSynchronizer,即抽象的队列式的同步器,定义了一套多线程共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch.AQS的框架如下:fifo即first in first out,先进先出队列CLH锁其实就是一种是基于逻辑队列非线程饥饿的一种自旋公平锁CLH锁原理如下: 首先有一个尾节点指针,通过这个尾结点指针来构建等待线程的逻辑队列,因此能确保线程线程先到

2021-03-16 16:44:14 197

原创 Kafka与Rocketmq的区别

系统一直使用的Kafka用来消费业务流水,最近在群里听到反馈说希望转到Rocketmq,支持更多的业务功能,因此去了解了一下,发现相比之下Kafka确实应用场景太少了,基本就是消费日志,相比之下Rockmq有很多优秀的特性,下面具体介绍一下。Kafka首先介绍一下Kafka,Kafka是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统,比较常用于日志收集系统,和消息系统等1、可以以时间复杂度为O(1)的方式提供消息持久化能力,对TB以上的数据也能保持常数时间

2021-02-02 19:33:51 4671

原创 java基础 与& 或| 和左移<< 右移>>的使用

看到一个文章写的很清楚https://www.jianshu.com/p/eae8da7caac6&的意思就是只有两者都为1的时候,值才为1,和true,false的判断是一致的|的意思是只要有一个为1,那么就为1常用来取某些特定位数的值,可以和<< >> 搭配使用...

2021-01-19 11:52:52 84

原创 2020-12-14

better do it than to live with the fear of it

2020-12-14 15:11:00 67

原创 subList引起的java.util.ConcurrentModificationException原因解析

最近需要处理一份挺大的数据,因此想到用多线程,将文件数据读到list,然后切割成n份处理,结果报了ConcurrentModificationException,大概的代码如下: public void execute(ExecutorContext executorContext) { List<String> lists = Utils.readFile2List("list.txt"); lists = lists.stream().map(a -&

2020-10-16 11:21:13 1447

原创 Java面试题总结(Java基础知识,JVM)

1、基本数据类型int是几个字节,4个字节,一个字节是8位,byte是一个字节,取值范围是正 00000000 0 到01111111 127 负 10000000 -128 到11111111 -1,以下代码会返回-56,因为456的二进制表示是111001000,然后由于int是32位的二进制,高位补0,在计算机中,即为00000000000……111001000,int转成byte的时候,计算机只保留最后8位,即11001000,最高位是1,表示是一个负数,负数都是以补码保存,其反码为0011..

2020-08-27 19:58:56 141

原创 Java面试题总结(SpringMVC相关)

1、Spring的循环依赖及解决方式:循环依赖:就是循环引用,两个或者两个以上的bean互相持有对方,最终形成闭环。Spring中循环依赖的场景:1、构造器的循环依赖 2、field属性的循环依赖如何检测:bean在创建的时候会给bean打标,如果递归调用回来发现正在创建中,则说明循环依赖了具体:Spring容器会将所有正在创建的bean标识符放在一个“当前创建bean池”中,即singletonsCurrentlyInCreation。如果在创建bean过程中发现自己已经在“当前创建bea

2020-08-14 19:09:07 189

原创 网络相关问题(体系结构,tcp三次握手)

1、计算机网络体系结构:五层协议1、应用层:应用层协议主要有域名系统DNS,HTTP协议,支持电子邮件的SMTP协议等,应用层交互的数据单元称为报文2、运输层:运输层主要有两种协议 传输控制协议TCP 提供面向连接的,可靠的数据传输服务用户数据协议UDP 提供无连接的,尽最大努力的数据传输服务,不保证数据准确性3、网络层,又叫网际层或者IP层4、数据链路层5、物理层...

2020-07-30 10:50:11 155

原创 Java面试题总结(BIO,NIO,AIO )

BIO:blocking I/O 同步阻塞IO模式,数据的读取写入必须阻塞在一个线程内等待其完成问题:由于是同步阻塞的,因此新需求来时只能通过新建线程的方式来接受请求,导致线程堆栈溢出等问题伪异步IO:可以通过使用线程池来优化,不过在并发量增加时会导致线程量急剧膨胀,NIO: non-blocking IO 同步非阻塞IO,IO面向流,而NIO面向缓冲区,任何时候访问NIO的数据,都是面向缓冲区的,最常用的缓冲区是ByteBufferchannel(通道):NIO通过通道进行读写,通道是双向

2020-07-24 17:22:11 434 1

原创 mybatis相关问题整理

1、mybatis的实现原理:需要编写dao接口,接口的全名对应xml文件的namespace,方法名对应文件中的MappedStatement中的id值,工作原理是通过JDK动态代理,为dao接口生成代理proxy对象,代理对象proxy会拦截接口方法,转而执行MappedStatement所代表的sql,然后将sql执行结果返回2、分页插件的原理:针对ResultSet结果执行的内存分页,分页插件是使用mybatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql

2020-07-23 20:13:40 116

原创 redis的线程模型,过期策略,持久化,缓存穿透和缓存雪崩,分布式锁,redis优化

redis使用文件时间处理器,是单线程的,它采用IO多路复用机制同时监听多个socket,根据socket上的事件来选择对应的事件处理器进行处理命令到达服务端以后不会立即执行,而是进入一个队列中,然后I/O多路复用程序通过队列向文件事件分派器传送socketredis时间过期策略:定期删除+惰性删除定期删除:默认每隔100ms随机抽取过期的key进行删除,防止过期key太多占用内存惰性删除:在查询的时候会判断是否已经过期,如果已经过期则删除内存淘汰机制:当内存使用达到maxmem

2020-07-22 11:19:59 176

原创 java的内存区域管理

java的内存区域:1、程序计数器:可以认为是当前线程所执行的字节码的字号指示器,同时在多线程情况下,用来记录当前线程执行的位置,从而当线程切换的时候能找到线程之前执行的位置2、Java虚拟机栈:主要有局部变量表,存放了编译器可知的数据类型,对象引用,可能出现两种异常StackOverFlowError 如果虚拟机栈的大小不允许动态扩展,当线程请求栈的深度超过当前虚拟机栈的最大深度的时候OutOfMemoryError 如果允许动态扩展,并且当线程请求栈时内存用完了,抛出此异常3、本地方

2020-07-15 21:13:16 110

原创 多线程知识总结(synchronize,volatile,ThreadLocal,线程池,AQS)

1、线程和进程的区别进程是一个程序的执行过程,,系统运行一个程序既是一个进程从创建运行到消亡的过程线程与进程相似,但是是比进程更小的执行单位,多个线程共享进程的堆和方法区,但是每个线程有自己的程序计数器,虚拟机栈和本地方法栈java的内存区域:1、程序计数器:可以认为是当前线程所执行的字节码的字号指示器,同时在多线程情况下,用来记录当前线程执行的位置,从而当线程切换的时候能找到线程之前执行的位置2、Java虚拟机栈:主要有局部变量表,存放了编译器可知的数据类型,对象引用,可能出现两种异常

2020-07-10 21:02:08 495 1

原创 Java面试题总结(rpc,kafka)

看到一个rpc的图画的很好rpc进行网络通信一般用的netty

2020-06-30 10:31:50 680

原创 Java面试题总结(泛型的实现,hashmap的实现,List数据结构)

1、java泛型的内部实现:java的泛型是伪泛型,会在编译时做类型擦除(类型擦出(type erasure),变为原始变量,如果不指定泛型类型,则在jvm中默认是object,如果指定了则是指定的类型,比如publicclassPair<TextendsComparable&Serializable>{}这种缺陷:不能用instanceof来检测泛型,因为由于类型擦除的原因,任何泛型都会擦除成为他的原始类型static方法和static域不能引用泛型变量,...

2020-06-26 22:15:30 528

原创 学习算法:字典序的第k小数字

题目如下:给定整数n和k,找到1到n中字典序第k小的数字。注意:1 ≤ k ≤ n ≤ 109这道题的难点在于字典序,字典序是按照前缀大小来排序的,比如11和2,实际11排在2的前面,和正常数字排序很不一样,因此需要抽象出字典序模型,即实际上是一个十叉树,从网上找了个图如下因此只需要确定三件事就可以确定k的位置即:怎么确定一个前缀下所有子节点的个数?如果第 k 个数在当前的前缀下,怎么继续往下面的子节点找?如果第 k 个数不在当前的前缀,即当前的前缀比较小,如何...

2020-06-26 12:12:59 391

原创 java面试题总结(redis的数据结构和集群,mysql索引的数据结构,mysql锁机制)

对整理的面试题总结一些简略的回答,深入的分析还是需要自己去研究1 微服务的限流方案,和服务降级方案分布式微服务架构下,某一个节点出现故障,会导致雪崩效应。分布式总体限流方案:利用redis,记录调用量,服务降级,限流降级:把非重点的服务关闭。故障降级:设置默认值,采用兜底数据,开关预置、配置中心2 Synchronized原理:每个对象有一个监视器锁(monitor)。当monitor被占用时就会处于锁定状态,线程执行monitorenter指令时尝试获取monitor的所有权http:/

2020-06-22 23:23:16 439 2

原创 每天一道算法题-两个链表逆序相加

给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807来源:力扣(LeetCode)链接:https://lee...

2020-06-20 15:11:05 335

原创 每天一道算法题(1)

1、求一个字符串连续不重复子串的最长长度即比较经典的移动游窗,将字符放入队列中,当有重复字符时则移动左标,最后取左右标间隔最大的。有两种方式可以实现,第一种比较简单的list方式// list方式 public static int lengthOfLongestSubstring(String s) { if (s.length() == 0) { return 0; } String[] strArr = s.

2020-06-20 01:19:06 293

原创 记录最近线上的一些小bug

最近出了好几次线上问题,还是太不细心了,后端还是需要严格的测试和验证,否则稍有遗漏就可能出严重的线上问题,记录下最近出现的问题,也希望以后问题能越来越少。1、Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have anerrorin your SQL syntax; check the manual that corresponds to your MySQL server version for the ..

2020-06-05 10:59:44 231

原创 Android用CameraApi实现相机开发以及用opengl es实现相机实时滤镜

对相机开发一直很感兴趣,最近研究了一下自定义相机以及实时滤镜的实现,写了个简单的demo,项目地址,有些地方写的比较粗糙,但大体功能基本都实现了。大体分为三块。1 利用CameraApi实现自定义相机在camera包路径下,大体思路就是自定义一个surfaceview,实现surfaceholder的callback,在surfaceCreated回调方法中打开相机,关于这方面的开发还是挺多的,这里

2017-06-07 14:26:41 7380 2

原创 利用蓝牙来传送图片等文件

最近在研究蓝牙,蓝牙设备间传输消息可以通过BluetoothAdapter的startDiscovery方法来搜索设备,得到device的address,然后利用反射调用BluetoothDevice 的createBond方法来进行配对,然后就可以得到socket然后进行连接了,比较麻烦。 在网上找到一种通过调用系统api用蓝牙进行传输的方法,在这里分享一下。 /**

2017-05-25 16:26:13 2356 2

原创 AndFix的简单使用

最近在研究热修复和插件化,写了个应用Andfix的简单demo,感觉这个热修复框架还是挺实用的。补丁我直接放在sd卡目录下了,项目中可以改为从后台获取,不过还是要注意使用方式,记录好版本的迭代和补丁的使用,不然打错补丁的话会直接报错,项目地址https://github.com/aasoga/AndFixDemo

2017-04-27 17:22:35 329

原创 最近关于SDL的研究

最近打算用ffmpeg加SDL来实现视频播放,通过参考http://www.cnblogs.com/tanlon/p/3919404.html 这篇文章编译了sdl,然后用雷神的代码来实现视频播放,结果却报了一个错 Could not initialize SDL - Application didn't initialize properly, did you include SDL_main.

2017-03-15 19:48:03 690

原创 用ffmpeg做的视频播放demo

在网上看到一个视频图像播放写的很好的文章,附链接http://blog.csdn.net/glouds/article/details/50937266, 因此想到用cmake实现,做了一个播放本地视频的demo,已放到github https://github.com/aasoga/NdkDemo     由于本人不会c代码,所以c部分直接用的原代码,不过也碰到一些问题,第一个就是源代码的编

2017-02-27 16:43:04 1828

原创 软件安装失败的一个问题

昨天碰到一个问题,就是卸载软件以后再安装,会安装失败,studio提示INSTALL_FAILED_INTERNAL_ERROR。上网查了一下发现是没有卸载干净的问题,因此需要手动删除data/data下的软件目录包,首先手机需要root,然后用cmd进入adb shell,进入data/data目录下,删除相应的包 rm -rf packageName(com.xxx.xxx)。如果提示被拒

2017-02-23 11:19:03 2090

原创 关于studio下移植ffmpeg会报cannot locate symbol "atof" referenced by "libavformat-57.so"...的问题

用编译好的ffmpeg文件在studio中使用,结果报了一个如标题的错误,上网查了一下感觉http://blog.csdn.net/net_wolf_007/article/details/52421582 这个说的比较靠谱,就是说的不是很明白,研究了一下,其实就是D:\Android\android-sdk-studio\android-ndk-r13b\platforms\android-16

2017-02-21 19:53:52 1627

空空如也

空空如也

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

TA关注的人

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