自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

turbo小世界

个人博客:https://www.cnblogs.com/turbo30/

  • 博客(106)
  • 收藏
  • 关注

原创 批量导入大数据以及数据去重,CSV多线程导入100w数据到数据库 思想

mysql层面去重:https://www.cnblogs.com/duanxiaojun/p/6855680.html数据库层面具体使用哪个sql语句去重,根据业务情况来定。1.Excel批量导入10w数据量,多用户同时导入,2个字段相同去重(不包括主键)数据库连接池默认开启连接50,最大100由于mybatis有一次sql的大小限制或者数据库也有大小限制,因此可以将其分为多个list...

2021-04-28 14:51:00 103

原创 关于ffmpeg解决主流浏览器无法播放wmv、avi等格式视频问题(内附linux环境相关安装包nasm、yasm、x264等)

最近接到一个老项目,由于老项目之前适配的是ie浏览器。该老项目中有很多wmv和avi格式的视频。最近需要更换视频其他浏览器访问,需要对除ie浏览器的其他浏览器进行适配。ie浏览器播放视频没有任何问题,但是在主流浏览器中,无法识别<embed>标签,只支持<video>、<audio>标签,然而这些标签支持的视频格式为主流的mp4格式的视频。导致兼容性问题,无法播放,以及主流浏览器无法播放非mp4格式的视频。尝试了很多,查阅了很多资料,前端无法解决该问题,最后尝试使用后端来

2020-12-14 15:13:02 2131 2

原创 编码规范小感受

针对编码规范,我觉得我做的还是比较好的,从开始学习编程就有这个编码规范的意识。因为一段好的优美的代码,就能展现一个人的代码素养,同时也能看出这个人在编写代码的过程中是否是逻辑清楚的。码出来的代码,不仅是自己看得懂就可以了,更是为了别人也能看得懂,就像说话一样,别人要听得懂。这样在以后版本迭代时,别人就能一眼看懂写的是什么,则提高了自己也方便了别人。在实际开发过程中,我就深刻的感受到,编码的规范...

2020-11-28 19:11:00 82

原创 正确关闭流

/** * 关闭给定的io流 */public static void close(Closeable...closes){ for (Closeable closeable : closes) { try { if(closeable!=null){ closeable.close(); ...

2020-11-28 13:39:00 38

原创 背景图

2020-11-08 14:16:08 390

原创 剑指Offer 36.二叉搜索树与双向链表

剑指Offer 36.二叉搜索树与双向链表题目输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。下图...

2020-10-10 13:31:00 15

原创 关于强引用、软引用、弱引用、虚引用

强引用是指创建一个对象并把这个对象赋给一个引用变量。比如:Object object =new Object(); String str ="hello";强引用有引用变量指向时永远不会被垃圾回收,JVM宁愿抛出OutOfMemory错误也不会回收这种对象。如果想中断强引用和某个对象之间的关联,可以显示地将引用赋值为null,这样一来的话,JVM在合适的时间就会回收该对象。软引用如果...

2020-10-06 14:44:00 20

原创 关于Map集合的负载因子、初始大小、红黑树、尾插法的初步探究

负载因子,数组长度在2的次方,当链表长度>=8时扩容成红黑树?负载因子当我们将负载因子不定为0.75的时候(两种情况):1、 假如负载因子定为1(最大值),那么只有当元素填满组长度的时候才会选择去扩容,虽然负载因子定为1可以最大程度的提高空间的利用率,但是会增加hash碰撞,以此可能会增加链表长度,因此查询效率会变得低下(因为链表查询比较慢)。hash表默认数组长度为16,好的情...

2020-10-06 14:39:00 21

原创 LeetCode --- SQL篇

626.换座题目:小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。其中纵列的 id 是连续递增的小美想改变相邻俩学生的座位。你能不能帮她写一个 SQL query 来输出小美想要的结果呢?示例:+---------+---------+| id | student |+---------+---------...

2020-09-26 22:11:00 18

原创 关于String

String实质是字符数组两个特点:1、该类不可被继承;2、不可变性(immutable)例如 String s1 = new String("myString"); 和 String s1 = "myString";第一种方式通过关键字new定义过程:在程序编译期,编译程序先去字符串常量池检查,是否存在“myString”,如果不存在,则在常量池中开辟一个内存空间存放“myString...

2020-09-26 19:32:00 17

原创 MySQL中count(1)、count(*) 与 count(列名) 的执行区别?

count(1) and count(*)当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count()用时多了!从执行计划来看,count(1)和count()的效果是一样的。但是在表做过分析之后,count(1)会比count(*)的用时少些(1w以内数据量),不过差不了多少。如果count(1)是聚索引,id,那肯定是count(1)快,但是差的很小的。因为cou...

2020-09-23 18:08:00 21

原创 为什么阿里巴巴禁止使用BigDecimal的equals方法做等值比较?

BigDecimalBigDecimal,相信对于很多人来说都不陌生,很多人都知道他的用法,这是一种java.math包中提供的一种可以用来进行精确运算的类型。很多人都知道,在进行金额表示、金额计算等场景,不能使用double、float等类型,而是要使用对精度支持的更好的BigDecimal。所以,很多支付、电商、金融等业务中,BigDecimal的使用非常频繁。而且不得不说这是一个非...

2020-09-23 12:48:00 13

原创 当sex字段是int或者char类型,select * from user where sex=1这种会走索引吗?

常见type级别system > const > eq_ref > ref > range > index > ALL越往左边,性能越高,比如system就比ALL类型性能要高出许多,其中system、const只是理想类型,基本达不到;我们自己实际能优化到ref>range这两个类型,就是你自己写SQL,如果你没优化基本上就是ALL,如果你优化了,...

2020-09-19 16:08:00 34

原创 关于i=i++的问题

代码如下:public class Main { public static void main(String[] args) { int i = 1; i = i++; int j = i++; int k = i + ++i * i++; System.out.println(i); ...

2020-09-17 23:35:00 15

原创 JAVA8的ConcurrentHashMap为什么放弃了分段锁

为什么不用ReentrantLock而用synchronized ?减少内存开销:如果使用ReentrantLock则需要节点继承AQS来获得同步支持,增加内存开销,而1.8中只有头节点需要进行同步。内部优化:synchronized则是JVM直接支持的,JVM能够在运行时作出相应的优化措施:锁粗化、锁消除、锁自旋等等。...

2020-09-16 12:49:19 903

原创 什么样的对象能当根节点 GC roots?

Java通过可达性分析来判断对象是否存活。基本思想是通过一系列称为“GC roots”的对象作为起始点,可以作为根节点的是:1、虚拟机栈(栈帧中的本地变量表)中引用的对象2、本地方法栈中JNI(即一般说的Native方法)引用的对象3、方法区中类静态属性引用的对象4、方法区中常量引用的对象作为GC Roots的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如栈帧中的本地变量)中。虚拟机、本地方法栈这都是局部变量,某个方法执行完,某些局部使用的对象可以被回收。...

2020-09-16 12:21:42 992

原创 Java泛型:泛型擦除详细介绍、泛型擦除的体现

泛型擦除Java 泛型的参数只可以代表类,不能代表个别对象。由于 Java 泛型的类型参数之实际类型在编译时会被消除,所以无法在运行时得知其类型参数的类型。Java 编译器在编译泛型时会自动加入类型转换的编码,故运行速度不会因为使用泛型而加快。-----百度百科泛型擦除的体现通过以下代码来感受以下什么是泛型擦除:public class Erase { public static void main(String[] args) { // 创建两个不同泛型的list集合

2020-09-14 20:50:27 687

原创 IDEA新建一行:光标创建新行或者创建上行

光标移到新行:shift+enter光标创建上行:ctrl+alt+enter

2020-08-13 10:25:52 843

原创 80端口被NT kernel & System 占用pid 4的解决方法 80端口被占用

1.管理员权限打开cmd2.运行net stop http按y 确定3.Sc config http start= disabled此时80端口已被释放在查看一下netstat -ano | findstr "80"发现pid 4占用了445端口

2020-08-08 20:58:59 486

原创 Linux:linux输入输出重定向、管道命令grep/wc、linux进程管理ps、pstree、kill命令、linux防火墙命令firewall-cmd、防火墙开启关闭端口号

文章目录输入/输出重定向1、重定向符号2、重定向演示3、重定向作用管道补充:grep命令、wc命令grepwc (word count)管道示例进程管理1、ps 命令 查看进程2、pstree 命令 (进程显示更直接) 查看进程3、kill 命令 结束进程4、端口扫描防火墙输入/输出重定向Linux中的重定向有 标准输入重定向、标准输出重定向、标准错误输出重定向标准输入重定向:命令stdin(standard in)标准输出重定向:命令stdout(standard out)标准错误输出重定向:

2020-06-14 19:37:10 533

原创 Linux:Linu文件权限管理、文件权限修改chmod、修改属主属组chown、特殊权限SUID、SGID、Sticky、umask

文章目录文件权限1、权限修改 chmod2、修改属主属组 chown3、修改属组 chgrp4、特殊权限SUID、SGID、Sticky5、umask案例:用户创建 分组 设置权限文件权限1、权限修改 chmodchmod命令(change modify)使用该命令:所有用户者语法:chmod [ugoa...] [[+-=][rwx]...] [,...]u (user)表示该文件的拥有者,g (group)表示与该文件的拥有者属于同一个群体者,o (other)表示其他以外的人,a

2020-06-14 19:29:01 496

原创 Linux(Ubuntu):文件系统挂载mount与卸载umount、U盘挂载与卸载、镜像文件挂载与卸载、系统自动挂载

文章目录文件系统 挂载mount 与 卸载umount1、U盘 挂载与卸载2、镜像文件 挂载与卸载3、系统自动挂载/etc/fstab和/etc/mtab的区别文件系统 挂载mount 与 卸载umountLinux中的根目录以外的文件要想被访问,需要将其“关联”到根目录下的某个目录来实现,这种关联操作就是“挂载”,这个目录就是“挂载点”,解除次关联关系的过程称之为“卸载”。只有被挂载了之后,才可以访问里面的内容。注意 “挂载点”的目录需要以下几个要求:(1)目录事先存在,可以用mkdir命令新

2020-06-14 19:23:26 7418 1

原创 Linux:Vim编辑器、vim编辑器的基本使用、命令模式、输入模式、底线模式、Vim按键说明、vim相关命令表

文章目录Vim 编辑器1、Vim基本使用2、Vim 3个模式:命令模式、输入模式、底线命令模式3、Vim按键说明案例:使用vim编写c语言99乘法表程序,并编译Vim 编辑器Vim操作大全1、Vim基本使用命令 vim <可编辑的文件>执行该命令,则可以对该文件进行读写操作。进入后点击【i】键,就可进入insert状态,此时可以编辑文本;点击【esc】键,可停止编辑,进入可读状态;键入【esc】后,键入【:wq】保存并退出、【:x】保存并退出、【ZZ】保存并退出、【:w】

2020-06-14 19:08:12 956

原创 Linux:Linux文件操作命令、文件创建删除、文件夹创建删除、文件拷贝移动、查看文件内容more、less、cat、nl、tac、head、tail、linux关机重启命令

文章目录文件操作命令1、文件 创建touch / 删除rm2、文件夹 创建mkdir / 删除rmdir、rm3、文件[夹] 拷贝cp / 移动mv 重命名4、查看文件内容1)more命令2)less命令3)cat、nl、tac命令4)head、tail命令关机、重启文件操作命令1、文件 创建touch / 删除rm创建文件:touch <文件名.扩展名>删除文件:rm <文件名.扩展名> 直接删除,只能删除文件rm -r <文件名.扩展名/文件夹>

2020-06-14 19:03:48 305

原创 Linux:Linux用户管理、添加删除修改用户、修改密码、锁定冻结解冻账户、查看创建删除修改用户组

文章目录用户管理1、用户1)添加用户 useradd2)删除用户 userdel3)修改用户 usermod4)修改密码 passwd、查看用户cat /etc/passwd5)锁定账户 冻结账户 解冻账户6)查看主机名、修改主机名2、用户组1)查看用户组 cat /etc/group2)创建用户组 groupadd3)删除用户组 groupdel4)修改用户组 groupmod3、etc/passwd 文件内容解释4、etc/group 文件内容解释用户管理管理用户和用户组相关命令sudo use

2020-06-14 18:57:25 1675

原创 Linux:Linux文件目录介绍、Linux文件颜色的意思、Linux文件加权限介绍、Linux文件类型属性、Linux数字表示权限、

文章目录文件目录介绍1、文件颜色2、文件夹权限介绍1)文件类型2)文件权限属性3)数字权限解释3)目录/链接 数硬链接和软链接 touch、echo、ln4)所有者以及组6)文件大小、修改日期、文件名文件目录介绍以下是对这些目录的解释:/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。/boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。(不要动)/dev : dev是Device(设备)的缩写, 存放的是Linux的外部设备,在L

2020-06-14 18:50:44 280

原创 JavaWeb02:Servlet介绍、两个init方法、两个service方法、Mapping映射路径、ServletContext接口、Cookie、Session、MVC、文件传输、邮件发送...

文章目录 Java Web 02一、Servlet基本流程二、Servlet1、Servlet 接口1)Servlet简介2)Servlet原理抽象方法 2、GenericServlet 抽象类两个init(...

2020-06-14 18:08:00 25

原创 JavaWeb:Servlet介绍、两个init方法、两个service方法、Mapping映射路径、ServletContext接口、Cookie、Session、MVC、文件传输、邮件发送

文章目录Java Web 02一、Servlet基本流程二、Servlet1、Servlet 接口1)Servlet简介2)Servlet原理抽象方法2、GenericServlet 抽象类两个init()方法==重点==3、HttpServlet 抽象类重写方法,不能使用super两个service()方法==重点==4、Mapping 映射路径1)servlet与mapping映射路径的多个情况2)映射路径的优先级5、ServletContext 接口对象常用方法请求转发与重定向的区别 ==重点==6、

2020-06-14 18:07:31 384

原创 JavaWeb01:URI、URL、URN、Http/Https的区别、Web服务器、Tomcat的配置介绍、Http协议、Maven的配置介绍...

文章目录 Java Web 01一、Web概念URI、URL、URNWeb应用程序组成部分Http / Https 区别 二、Web服务器1、3个常见技术 ASP、PHP、JSP2、IIS、Tomcat ...

2020-06-14 17:55:00 33

原创 JavaWeb:URI、URL、URN、Http/Https的区别、Web服务器、Tomcat的配置介绍、Http协议、Maven的配置介绍

文章目录Java Web 01一、Web概念URI、URL、URNWeb应用程序组成部分Http / Https 区别二、Web服务器1、3个常见技术 ASP、PHP、JSP2、IIS、Tomcat三、Tomcat 详解 (重要)1、Tomcat目录介绍2、conf 配置目录1)server.xml 核心配置文件2)webapps 目录结构3、项目部署tomcat4、IDEA使用Tomcat部署web项目的过程关于服务器面试题四、Http协议1、Http1.0 、Http1.1主要区别1)长连接2)节约宽带

2020-06-14 17:54:51 316

原创 JUC:公平锁、非公平锁、共享锁、独占锁、可重入锁、自旋锁、死锁、死锁排查方法

文章目录各种锁的理解1、公平锁、非公平锁2、共享锁、独占锁3、可重入锁4、自旋锁自定义简单的锁5、死锁死锁排查 jps关于进程、线程、并发、并行的问题各种锁的理解1、公平锁、非公平锁公平锁:非常公平,任何线程获得公平锁,那么就会执行锁中业务直到结束,过程中任何进程都不得干预打扰。不能插队。非公平锁:在获得非公平锁之后,执行代码过程中,其他线程可以插入执行,该线程暂停执行,等待其他线程执行完毕,才可继续执行。可插队。(默认非公平锁)2、共享锁、独占锁共享锁:就是读取锁里的读锁,进行读操作,任

2020-06-14 17:40:13 318

原创 JUC:AQS介绍、AQS原理、AQS底层用模板方法模式、定义两种资源共享方式

AQSAQS介绍java.util.concurrent.locks 包中的 AbstractQueuedSynchronizer (抽象队列同步器)类该类是用于构建锁和同步器的框架。 使用该类可以简单且高效的构造出应用广泛的同步器,比如:ReentrantLock, Semaphore, ReentrantReadWriteLock, FutureTask等。同样我们也能继承该类,去实现自己需求的同步器。AQS原理AQS核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线程归为有效工.

2020-06-14 17:35:49 538

原创 JUC:理解CAS、CAS会出现的ABA问题、解决ABA原子引用、使用Synchronized会比CAS操作慢效率低

文章目录深入理解CAS JDK1.5CAS会出现ABA问题解决ABA 原子引用- AtomicStampedReference遇到的坑CAS实现原子操作3大问题使用synchronized会比CAS操作慢和效率低深入理解CAS JDK1.5在计算机科学中,比较和交换(Conmpare And Swap)是用于实现多线程同步的原子指令。 它将内存位置的内容与期望值进行比较,只有在相同的情况下,将该内存位置的内容修改为新的给定值。 这是作为单个原子操作完成的。 原子性保证新值基于最新信息计算; 如果该值在

2020-06-14 17:32:13 606

原创 JUC单例模式:饿汉式、懒汉式、DCL懒汉式、静态内部类、枚举

文章目录单例模式1、饿汉式2、懒汉式3、DCL懒汉式通过反射破坏单实例第1种第2种4、静态内部类5、枚举尝试反射获取枚举实例第一种尝试第二种尝试总结单例模式单例模式,即单个实例,只有一个实例1、饿汉式饿汉模式,可以想象一个很饿的人,需要立马吃东西,饿汉模式便是这样,在类加载时就创建对象,由于在类加载时就创建单例,因此不存在线程安全问题。反射可破坏。public class HungryDemon { private static final HungryDemon hungry = n

2020-06-14 17:16:32 258

原创 JUC:JMM内存模型理解、Volatile关键字的理解

文章目录JMM(java memory model)Volatile 关键字保证可见性volatile++复合操作不保证原子性单个volatile操作保证原子性禁止指令重排JMM(java memory model)什么是JMMJMM:java内存模型(java memory model)。可理解为一种概念、约定。因为在不同的硬件生产商和不同的操作系统下,内存的访问逻辑有一定的差异,结果就是当你的代码在某个系统环境下运行良好,并且线程安全,但是换了个系统就出现各种问题。Java内存模型,就是为了

2020-06-14 17:11:40 167

原创 JUC:ForkJoinPool类的理解与应用、CompletableFuture类的理解与应用

文章目录ForkJoinPool类 JDK 1.7常用方法ForkJoinTask\ 抽象类RecursiveAction 抽象类RecursiveTask\ 抽象类LongStream 接口案例 使用ForkJoin,并行Stream计算大数据的和CompletableFuture\类 异步回调 JDK1.8构造方法常用方法ForkJoinPool类 JDK 1.7ForkJoin 并发执行任务,提高效率,在大数据量表现显著。最适合的是计算密集型的任务。ForkJoin工作原理是将大量的数据分

2020-06-14 17:07:26 838

原创 JUC线程池:3大方、7大参数、4种拒绝策略、CPU密集型、IO密集型、混合型、线程池最大线程数确定

文章目录线程池1、3大方法2、7大参数ThreadPoolExecutor 类执行过程原理3、4种拒绝4、自定义线程池CPU密集型 IO密集性 混合型线程池最大线程数应该如何定义?线程池3大方法、7大参数、4种拒绝 自定义线程池1、3大方法不推荐使用该3大方法,请使用ThreadPoolExecutor创建线程池Executors.newSingleThreadExecutor() 单个线程Executors.newFixedThreadPool(int num) 固定数线程的线程池Ex

2020-06-14 17:03:14 626

原创 JUC常用工具、CountDownLatch、CyclicBarrier、Semaphore、Exchanger、常用方法

文章目录JUC常用工具(组件)类 JDK 1.51、CountDownLatch构造方法常用方法2、CyclicBarrier构造方法常用方法3、Semaphore构造方法常用方法4、Exchanger- CountDownLatch 与 CyclicBarrier 的区别JUC常用工具(组件)类 JDK 1.5都实现了AQS类1、CountDownLatchjava.util.concurrent.CountDownLatch 类,是一个减计数器构造方法public CountDownL

2020-06-14 16:53:23 137

原创 JUC常用的4种工具、CountDownLatch、CyclicBarrier、Semaphore、Exchanger、常用方法

文章目录JUC常用工具(组件)类 JDK 1.51、CountDownLatch构造方法常用方法2、CyclicBarrier构造方法常用方法3、Semaphore构造方法常用方法4、Exchanger- CountDownLatch 与 CyclicBarrier 的区别JUC常用工具(组件)类 JDK 1.5都实现了AQS类...

2020-06-14 16:53:00 13

原创 JUC:Lock接口、ReentrantLock类、Lock与Synchronized的区别、解决虚假唤醒、Condition接口、解决集合类线程不安全、Callable、FutrueTask

文章目录Lock 接口 (重点)1、ReentrantLock 类2、Lock与Synchronized的区别 面试3、防止线程虚假唤醒解决虚假唤醒分析 面试4、Condition 接口 JDK 1.55、Condition实现精准通知唤醒6、关于锁的问题 面试解决集合类线程不安全解决集合同步解决并发几个方法的区别Callable 进阶 FutureTaskLock 接口 (重点)常用传教Lock的方法:Lock lock = new ReentrantLock()1、ReentrantLock

2020-06-14 16:49:53 156

空空如也

空空如也

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

TA关注的人

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