自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

刘滨浩的博客

互联网从业人员。来自民风淳朴的云南,曾就读于云南大学,勤劳朴质,坚持学习,相信技术改变世界,努力提高自己,在csdn记录成长中的点点滴滴,也愿意将所学所用分享出来,欢迎来访。 可加微信 behico,看简历发邮箱lbhbinhao@163.com

  • 博客(126)
  • 资源 (1)
  • 收藏
  • 关注

原创 再也不担心问到Java集合了,一文讲透Java中的数据结构

数据结构作为每一个IT人不可回避的问题,而Java对于不同的数据结构提供了非常成熟的实现,这一个又一个实现既是面试中的难点,也是工作中必不可少的工具,在此,笔者经历漫长的剖析,将其抽丝剥茧的呈现出来,在此仅作抛砖引玉,望得诸君高见,若君能有所获在下甚是不亦乐乎,若有迷惑亦与诸君共求之!

2021-01-28 13:20:18 5146 65

原创 十块钱帮我做个视频网站吧,就带弹幕那种?基于websocket协议与netty实时视频弹幕交互实现

实时视频弹幕基于websocket协议与netty实时视频弹幕摘要1 技术选型1.1 netty1.2 WebSocket1.3 为什么做这样的技术选型。2 实现思路2.1 服务架构2.2 传输流程3 实现效果3.1 视频展示4 代码实现4.1 项目结构4.2 Java服务端4.2.1 先做一个netty nio的服务端:4.2.2 服务端的具体处理逻辑4.3 网页客户端实现5 小结基于websocket协议与netty实时视频弹幕摘要2021年了,还有不支持弹幕的视频网站吗,现在各种弹幕玩法层出不穷

2021-01-14 21:28:16 2011 30

原创 2021年了还有做某某管理系统的?springboot整合mysql快速搭建XX管理系统

XX管理系统摘要1 技术选型1.1 Mysql81.2 springboot21.3 模板引擎thymeleaf2 项目构建2.1 创建项目2.2 建表3 项目实现3.1 项目效果3.2 项目结构4 代码实现4.1 前台页面4.2 后台业务实现4.2.1 实体类Employee4.2.2 数据库操作层repo摘要对企业来说,人、物资、能源、资金、信息是5大重要资源。人、物资、能源、资金这些都是可见的有形资源,而信息是一种无形的资源。以前人们比较看重有形的资源,进入信息社会和知识经济时代以后,信息资源就显

2021-01-08 00:25:51 3304 43

原创 图片资源服务器?一小时手写http服务器提供资源服务

http服务器摘要一、什么是http服务器二、如何自己简单实现一个http服务器三、自己实现的http服务器四、Http服务器实现(Java)摘要web开发一直是行业热门技术,而要做web程序就离不开http服务器,现在主流的http服务器用的最广的如tomcat,apache。还有商用版本的各式各样的http服务器,而再行业类各种微服务,各种web开发技术层出不穷,都是基于这些服务器上的架构上的使用,并没有从本质上提高服务器运行的效率,笔者在研究http服务的过程中,就花了一早上来写了这样一个http

2021-01-01 13:19:24 3265 32

原创 翻译app上的图片文字信息提取好神奇?如何实现一个文字图片识别程序

近日浏览网上一些图片提取文字的网站,觉得甚是有趣,花费半日也做了个在线图片试别程序,完成了两个技术方案的选择,一是tesseract+python flask的方案实现,二是tesseract+spring web的技术解决方案,并简作论述,与君共勉。

2020-11-24 01:15:50 1290 38

原创 基于贝叶斯定理的单词提示器实现

贝叶斯单词提示器摘要1. 贝叶斯定理:2. 贝叶斯公式的实际意义3. 原理4. 程序设计思路5. 实验效果6. 验证结果:7. 总结摘要贝叶斯这个简单的公式可以解决我们现实生活中很多的问题,个人闲暇之余写了一个单词提示器来体现贝叶斯的巨大魔力。1. 贝叶斯定理:或者  P(A∣B)=P(B∣A)∗P(A)/P(B)\ P(A|B) = P(B|A)*P(A)/P(B) P(A∣B)=P(B∣A)∗P(A)/P(B)关于贝叶斯的通俗解释,贝叶斯个人的理解,举个例子说明下:

2020-11-11 20:41:46 2310 26

原创 3.14 Java AQS原理解析

3.14 AQS       AQS是Java中AbstractQueuedSynchronizer的简称,AQS实在是太有名了,以至于它的全称经常被遗忘,先看看AQS是什么。       Provides a framework for implementing blocking locks and related synchronizers (semaphor

2021-02-25 00:20:42 6

原创 4.5 Serializable

4.5 Serializable       Java中Serializable是标识类可序列化和反序列化的接口。如果不继承Serializable接口,直接使用序列化方法就会抛出如下异常,解决办法继承Serializable接口。com.lbh.xxmanager.basic.io.SerializableDemoException in thread "main" java.io.NotSerializableException

2021-02-22 19:49:08 125

原创 4.3 Java Pipe管道详解

4.3 Pipe       Java 管道Pipe是用于线程间通信的,但是需要注意的是,Java中的Pipe是用于一个虚拟机中的线程之间通信的,不能用于进程之间通信。 Java管道和Unix/Linux中的管道Pipe的作用是不同的,Unix/Linux中的管道是用于进程之间通讯,是不同Process之间。而Java是同一个虚拟机里的线程之间通讯,属于同一个Program。     

2021-02-21 00:09:45 1277 21

原创 4.2 文件IO (玩转Java File操作)

4.2 文件       首先明确什么是文件,先看看操作系统中文件的定义。什么是文件?记录在在存储介质上的程序和数据的集合。 Java中对于文件的操作是基于文件系统的,操作系统中的文件系统是一个非常深的点,笔者在此不敢造次,此处抄抄概念供诸君参考。       文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的

2021-02-19 22:57:12 44

原创 4.1 Java IO概述

4 IO开篇       IO的含义事Input和Output,不过关于IO是很难定义的,从硬件操作系统层面,IO可以是系统管理的输入输出设备,可以是数据的传入和输出,这是一个比较难定义的点,而此章节只聚焦于java IO,这儿指的IO是相对于java程序而言的。4.1 什么是Java IO       IO即Input和Output的缩写,通俗的解释,对于当前

2021-02-18 23:48:21 71 1

原创 公司要重构推荐系统?电商行业企业级推荐系统解决方案

摘要       推荐系统不是为了推荐而推荐,首先要聚焦解决什么问题,根据不同的业务场景来制定推荐业务,推荐系统并不是一个科技向善的系统。首先推荐系统是为了增加业务量而不是为了给用户实惠方便,是为了增加用户需求而不是仅仅为了满足用户需求(当然,这个也很重要),是为了增加信息壁垒而不是为了信息透明化,是为了给用户及时的心理暗示而不是为了百分百满足用户心理。      &nbsp

2021-02-17 22:13:02 1001 3

原创 正经网站爬虫实战,如何快速使用Selenium爬取租房信息

摘要       爬虫有风险,谨慎防入狱。你我皆是遵纪守法的好公民,怎么会爬虫这种面向监狱编程的技巧呢?这次就发几个简单的请求抓两条数据吧。笔者以前曾经也专门做过爬虫的工作(人称爬哥),后来见各位同行入狱笔者见事不妙跑路了,首先爬虫只是一种工具,望诸君坚守本心,在允许的情况下抓抓数据还是莫得问题的,这次笔者将使用python大法,再配合自动化神器selenium来爬个正经网站。1.技术选型1.1 Selenium &n

2021-02-17 01:05:15 1274 1

原创 3.13 CountDownLatch使用及原理

3.13 CountDownLatch * <p>A {@code CountDownLatch} is initialized with a given <em>count</em>. * The {@link #await await} methods block until the current count reaches * zero due to invocations of the {@link #countDown} method, after wh

2021-02-17 00:13:57 788 6

原创 3.12 ArrayBlockingQueue详解

3.12 ArrayBlockingQueue       ArrayBlockingQueue是阻塞队列BolockingQueue接口基于数组的实现,该特点由名字也可看出。3.12.1 ArrayBlockingQueue继承关系       ArrayBlockingQueue继承了抽象类AbstractQueue并且实现了BlockingQueue接口。

2021-02-15 14:15:16 303 2

原创 树之深度优先遍历算法详解(DFS实现) (demo:94. 二叉树的中序遍历,给定一个二叉树的根节点 root ,返回它的中序遍历)

       本文以如下树结构为例深度优先(Deep First Search)       树的孩子称作子树,对于一个树进行深度优先遍历,即将其某一子树下所有节点遍历完再去遍历其他子树。遍历的顺序以根为参照可分为先序遍历,中序遍历,后序遍历。遍历方式描述先序遍历根左右中序遍历左根右后序遍历左右根遍历顺序详解&n

2021-02-13 12:56:24 184 4

原创 3.11 BlockingQueue接口

3.11 BlockingQueue       BlockingQueue接口表示阻塞队列,是Java并发包中阻塞队列的接口定义规范,阻塞队列意味着对于该队列的操作是线程安全的,当多个线程存放元素进入队列或者从队列中取出元素都是线程安全的。阻塞队列的操作和普通队列没有区别,主要是加了线程安全控制,其工作原理如下图。3.11.1 BlockingQueue接口继承关系     &

2021-02-12 00:26:00 2149 4

原创 3.10 ReentrantReadWriteLock使用

3.10 ReentrantReadWriteLock       ReadWriteLock即读写锁,ReadWriteLock的规则如下。       a.当有线程获取了Write锁时,其他线程不能获取到任何锁(写锁和读锁都不能。       b.当没有线程获取Wrete锁时,所有线程都可以

2021-02-11 00:10:24 705 9

原创 3.9 Atomic原子操作(CAS操作,以AtomicInteger为例,硬刚Jvm源码)

3.9 Atomic       Atomic即原子操作,java中所有原子性操作在java.util.concurrent.atomic包下,原子性操作是线程安全的,其内部实现是有JVM提供,并非Java自身的实现,而Java并发包中的实现也是基于CAS(Compare And Swap)。下边以AtomicInteger为例,说明原子性操作的实现原理。3.9.1 AtomicInteger   

2021-02-10 23:19:57 1400 2

原创 java.lang.ExceptionInInitializerError Caused by: java.lang.SecurityException: Unsafe

问题描述:突然奇想想试下unsafe类的方法,发现会报错。该行代码报错private static final Unsafe unsafe = Unsafe.getUnsafe();java.lang.ExceptionInInitializerErrorCaused by: java.lang.SecurityException: Unsafe at sun.misc.Unsafe.getUnsafe(Unsafe.java:90) at com.lbh.xxmanager.basic.

2021-02-10 22:43:14 437 1

原创 3.8 ReentrantLock使用即解析

3.8 ReentrandLock       故名思意,ReentrandLock即可重入锁。可重入锁解决的是重入锁定的问题,重入锁定(Reentrance Lockout)指的是当一个线程执行逻辑时,需要两次获取锁,而该锁不可重入就会导致内部嵌套无法获取锁导致Reentrance Lockout发生。Reentrance Lockout解决办法为一个线程两次获取锁的中间一定需要释放锁。3.8.1 ReentrandLock继承关

2021-02-10 15:13:11 800 8

原创 java.lang.CloneNotSupportedException: com.lbh.xxmanager.basic.alg.Node at java.lang.Object.clone

问题描述:使用Object的clone方法报错该行代码报错node = (Node) curr.clone(); java.lang.CloneNotSupportedException: com.lbh.xxmanager.basic.alg.Node at java.lang.Object.clone(Native Method) <hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1"&gt

2021-02-09 13:28:22 1843 4

原创 3.7 线程池使用

3.7 线程池       线程池指的是可重复利用的线程集合,线程池的作用即可以同时执行多个任务并且线程可以重复使用,增加多任务处理效率。3.7.1 ThreadPoolExecutor创建线程池       阿里开发规范不要显示创建线程池,也不要用excutors静态方法创建线程池,而是用ThreadPoolExecutor。  &nbs

2021-02-07 22:50:52 482

原创 3 Java操作Kafka,生产消费消息

3.1 生产者       创建生产者步骤a.进行生产者配置Properties kafkaConfig = new Properties();b.创建生产者KafkaProducer<String, String> producer = new KafkaProducer<>(kafkaConfig);c.创建消息ProducerRecord<String, String> msg

2021-02-07 00:29:25 415

原创 2 Kafka常用指令总结

2 Kafka常用指令       笔者是进入kafka安装目录下进行操作,使用Kafka前需要安装并启动zookeeker,关于zookeeper和Kafka的安装在笔者前一篇中。zookeeper安装和启动.首先进入Kafka安装目录。2.1 Topic操作       进入Kafka安装目录:cd /video/bd/kafka_2.12-1.0.0&n

2021-02-06 13:13:15 494

原创 1.6 Java位运算符详解与(&)、或(|)、非(~)、异或(^)

1.6 位运算       位运算是指对二进制数的运算,位运算虽然在工作中很少用到,但是其作用很大,如果经常看源码的道友一定经常看到位运算,如果不懂二进制位运算也就云里雾里了,在此笔者总结了下四个基本位运算的使用。1.6.1 &运算       与运算是指两个二进制数相同位同时为1则结果为1。System.out.println(Integer.toBi

2021-02-06 00:28:07 524 5

原创 3.6 线程通信

3.6 线程通信       线程通信是指不同线程之间相互传递信息。线程通信可以实现线程等待其他线程执行结果后再执行,这样来实现不同线程之间按照有序的方式进行工作。       那么问题来了,Java要如何实现线程间通信呢?3.6.1 实现通信–共享变量       可以通过共享变量来实现,

2021-02-04 00:59:16 787 4

原创 越努力越幸运

近日看到这样一句话,在此记录下以自勉。

2021-02-03 23:05:30 534 1

原创 1 Centos下Kafka安装

1 环境准备       笔者环境 :       CentOs7云服务机       Java8       安装包:       apache-zo

2021-02-03 20:44:03 657

原创 3.5 ThreadLocal使用和源码解析

3.5 ThreadLocal       相比做java的就算没用过ThreadLocal也一定听过ThreadLocal,因为它太有名了,它能够实现线程间隔离,资源只被创建该资源的线程获取,是不是很神奇,接下来就将探讨ThreadLocal的神秘所在。3.5.1 ThreadLocal的用法package thrd;public class ThreadLocalDemo { private ThreadLocal&

2021-02-02 22:16:30 546 2

原创 ValueError: all the input array dimensions for the concatenation axis must match exactly, but along

问题描述:错误使用numpy的concatenate方法该行代码报错r_b = np.concatenate([x1, x2], axis=2)ValueError: all the input array dimensions for the concatenation axis must match exactly, but along dimension 1, the array at index 0 has size 2 and the array at index 1 has size

2021-02-02 11:01:09 624 1

原创 2.15 HashTable使用和源码解析

2.15 HashTable       和HashMap不同,HashTable的实现方式完全不同,这点从二者的类继承关系就可以看出端倪来,HashTable和HashMap虽然都实现了Map接口,但是HashTable继承了DIctionary抽象类,而HashMap继承了AbstractMap抽象类。2.15.1 HashTable的类继承关系图2.15.2 Dictionary接口public abstractclass

2021-02-02 00:11:51 2763 8

原创 3.4 ThreadGroup使用与源码解析

3.4 ThreadGroup       正如ThreadGroup名字,表示一个线程组,可以将其理解成放一堆线程的容器。当然,ThreadGroup也可以存放其他的线程组。看下官方注释是怎么解释的吧! * A thread group represents a set of threads. In addition, a thread * group can also include other thread groups. T

2021-02-01 00:58:33 572

原创 3.3 线程安全分析

3.3 线程安全       线程安全是指当我们多个线程去同时去执行我们写的同一段代码不会发生安全问题,这就是线程安全。线程安全意味着代码有效的处理了资源竞争的问题(Race condition),在并发的情况下对与资源的处理不会发生错误或者得到非预期结果。3.3.1 线程不安全       什么情况下会发生线程安全问题呢?请看下例。/** * Copyrig

2021-01-31 01:17:44 2793 6

原创 2.14 LinkedHashSet解析

2.14 LinkedHashSet       LinkedHashSet用的也比较少,其也是基于Set的实现。2.14.1 LinkedHashSet继承关系       和HashSet一样,其也是Set接口的实现类,并且是HashSet的子类。2.14.2 LinkedHashSet源码package java.util;public class

2021-01-27 22:17:45 766 1

原创 2.13 ArrayDeque源码解析

2.13 ArrayDeque       ArrayDeque是Java中基于数组实现的双端队列,在Java中Deque的实现有LinkedList和ArrayDeque,正如它两的名字就标志了它们的不同,LinkedList是基于双向链表实现的,而ArrayDeque是基于数组实现的。2.13.1 ArrayDeque的继承关系       可见ArrayD

2021-01-27 22:04:04 781 3

原创 2.12 Stack

2.12 Stack       Stack也是List接口的实现类之一,和Vector一样,因为性能原因,更主要在开发过程中很少用到栈这种数据结构,不过栈在计算机底层是一种非常重要的数据结构,下边将探讨下Java中Stack。2.12.1 Stack的继承关系       Stack继承于Vector,其也是List接口的实现类。之前提到过Vector是线程安

2021-01-27 21:10:47 730 1

原创 2.11 PriorityQueue使用与源码解析

2.11 PriorityQueue       先看下PriorityQueue的继承实现关系,可知其是Queue的实现类,主要使用方式是队列的基本操作,而之前讲到过Queue的基本原理,其核心是FIFO(First In First Out)原理。       Java中的PriorityQueue的实现也是符合队列的方式,不过又略有不同,却别就在于Prior

2021-01-26 00:35:29 933 2

原创 cannot be cast to java.lang.Comparable at java.util.PriorityQueue.siftUpComparable

异常:Exception in thread “main” java.lang.ClassCastException: com.lbh.xxmanager.basic.java.ArrayD$Test cannot be cast to java.lang.Comparableat java.util.PriorityQueue.siftUpComparable(PriorityQueue.java:653)at java.util.PriorityQueue.siftUp(PriorityQueue

2021-01-25 23:06:16 738

原创 1.5 面向对象之封装

1.5 封装的定义       封装是对对象内部部分信息的隐藏,不允许直接对这些信息进行访问,要操作这些信息必须通过预留的接口。       为什么需要对对象信息进行封装(1)严格控制访问权限,保护属性不被污染,减少了模块间的相互干扰;(2)更精准的操作属性,能够让使用者清晰的知道实在进行都还是写操作;(3)方便维护和实现。  &nbsp

2021-01-24 23:42:57 796 3

libfastcommon-1.0.40.tar.gz

linux组件,用于一些基础服务搭建。 如:fastDFS图片服务器,分布式部署全部工具。 linux系统下解压,完成配置即可使用,可以完成分布式文件存储,适合搭建图片服务器或者一些小文件存储服务。

2020-03-25

空空如也

空空如也

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

TA关注的人 TA的粉丝

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