- 博客(32)
- 资源 (1)
- 收藏
- 关注
原创 作为打工人,普通人努力的意义何在?
2021年了,恍惚之间疫情发生都已经一年多了,我也又老了一些,工作越来越久,也越来越麻木,随着年纪的增长其实思考的问题越来越少,焦虑的问题越来越多。一个人看着代码,突然想到了家里,想到了以前发生的种种,开反思工作的意义,作为一个程序员在一线城市是为了什么?作为个人又得到了什么,金钱?成就?快乐?好像都没有,尽管学到了些许经验,但这亦只是时间带来的馈赠,于我好像不过徒增了岁月,心中的热情似也被这忙忙碌碌磨灭了悸动,再不复从前模
2021-02-28 02:35:18 4787 7
原创 5.3 JDBC类加载机制源码解析(破坏双亲委派机制)
5.3 Java类加载机制 Java的类加载机制称作双亲委派机制,要明白JDBC为什么破坏双亲委派机制就需要明白双亲委派机制是什么,其工作原理如下,启动类加载器BootStrap只加载rt.jar,也就是jdk提供的相关java部分,扩展类加载器只加载java lib/ext扩展目录下的jar包,而用户类加载器App加载用户编写的代码所在目录(classpath)。  
2021-02-27 15:19:16 2892 4
原创 5.2 原生JDBC增删改查
5.2.1 JDBC连接 只要用到数据库操作,首先要做的就是获取数据库连接,获取数据库连接三要素:连接串,用户和密码。public static Connection getConnection() throws SQLException { String url = "jdbc:mysql://localhost:3303/info_manage?serverTimezone=Asia/Shanghai&
2021-02-27 12:43:10 3876 2
原创 5.1 深入理解JDBC
5.1 JDBC JDBC是Java Database Connectivity的简称,是Java数据库连接的规范,关于JDBC的内容定义在java.sql包下。需要明确JDBC只是一种规则集,并不是实现,具体数据库的连接实现是由各个数据库厂商实现的,通过JDBC规范,保证了不同数据库之间可以通过一套规则来进行连接(关系型数据库)。5.1.1 JDBC的作用JDBC API 能够实现Java程序连接关系型数据库,如
2021-02-26 23:32:16 2692
原创 4.6 深入理解Java NIO
4.6 什么是NIO java中NIO 的含义就是指new IO,就是和传统IO方式相比另一种替代的方案。 java NIO中应是包含Non-Blocking IO的关系,所以网络上很多观点笔者是不认同的,java NIO包中也有阻塞IO的方法,但和传统IO(阻塞)相比只有New IO(阻塞,非阻塞)中支持了非阻塞的方式。### 4.6
2021-02-26 21:06:51 2522 2
原创 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 4873 9
原创 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 345 1
原创 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 3450 23
原创 4.2 文件IO (玩转Java File操作)
4.2 文件 首先明确什么是文件,先看看操作系统中文件的定义。什么是文件?记录在在存储介质上的程序和数据的集合。 Java中对于文件的操作是基于文件系统的,操作系统中的文件系统是一个非常深的点,笔者在此不敢造次,此处抄抄概念供诸君参考。 文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的
2021-02-19 22:57:12 300
原创 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 303 1
原创 公司要重构推荐系统?电商行业企业级推荐系统解决方案
摘要 推荐系统不是为了推荐而推荐,首先要聚焦解决什么问题,根据不同的业务场景来制定推荐业务,推荐系统并不是一个科技向善的系统。首先推荐系统是为了增加业务量而不是为了给用户实惠方便,是为了增加用户需求而不是仅仅为了满足用户需求(当然,这个也很重要),是为了增加信息壁垒而不是为了信息透明化,是为了给用户及时的心理暗示而不是为了百分百满足用户心理。  
2021-02-17 22:13:02 1413 3
原创 正经网站爬虫实战,如何快速使用Selenium爬取租房信息
摘要 爬虫有风险,谨慎防入狱。你我皆是遵纪守法的好公民,怎么会爬虫这种面向监狱编程的技巧呢?这次就发几个简单的请求抓两条数据吧。笔者以前曾经也专门做过爬虫的工作(人称爬哥),后来见各位同行入狱笔者见事不妙跑路了,首先爬虫只是一种工具,望诸君坚守本心,在允许的情况下抓抓数据还是莫得问题的,这次笔者将使用python大法,再配合自动化神器selenium来爬个正经网站。1.技术选型1.1 Selenium &n
2021-02-17 01:05:15 2685 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 3344 6
原创 3.12 ArrayBlockingQueue详解
3.12 ArrayBlockingQueue ArrayBlockingQueue是阻塞队列BolockingQueue接口基于数组的实现,该特点由名字也可看出。3.12.1 ArrayBlockingQueue继承关系 ArrayBlockingQueue继承了抽象类AbstractQueue并且实现了BlockingQueue接口。
2021-02-15 14:15:16 3407 2
原创 树之深度优先遍历算法详解(DFS实现) LeetCode94
本文以如下树结构为例深度优先(Deep First Search) 树的孩子称作子树,对于一个树进行深度优先遍历,即将其某一子树下所有节点遍历完再去遍历其他子树。遍历的顺序以根为参照可分为先序遍历,中序遍历,后序遍历。遍历方式描述先序遍历根左右中序遍历左根右后序遍历左右根遍历顺序详解&n
2021-02-13 12:56:24 1811 4
原创 3.11 BlockingQueue接口
3.11 BlockingQueue BlockingQueue接口表示阻塞队列,是Java并发包中阻塞队列的接口定义规范,阻塞队列意味着对于该队列的操作是线程安全的,当多个线程存放元素进入队列或者从队列中取出元素都是线程安全的。阻塞队列的操作和普通队列没有区别,主要是加了线程安全控制,其工作原理如下图。3.11.1 BlockingQueue接口继承关系 &
2021-02-12 00:26:00 4651 5
原创 3.10 ReentrantReadWriteLock使用
3.10 ReentrantReadWriteLock ReadWriteLock即读写锁,ReadWriteLock的规则如下。 a.当有线程获取了Write锁时,其他线程不能获取到任何锁(写锁和读锁都不能。 b.当没有线程获取Wrete锁时,所有线程都可以
2021-02-11 00:10:24 3212 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 4041 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 4617 14
原创 3.8 ReentrantLock使用即解析
3.8 ReentrandLock 故名思意,ReentrandLock即可重入锁。可重入锁解决的是重入锁定的问题,重入锁定(Reentrance Lockout)指的是当一个线程执行逻辑时,需要两次获取锁,而该锁不可重入就会导致内部嵌套无法获取锁导致Reentrance Lockout发生。Reentrance Lockout解决办法为一个线程两次获取锁的中间一定需要释放锁。3.8.1 ReentrandLock继承关
2021-02-10 15:13:11 3386 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">
2021-02-09 13:28:22 2118 4
原创 3.7 线程池使用
3.7 线程池 线程池指的是可重复利用的线程集合,线程池的作用即可以同时执行多个任务并且线程可以重复使用,增加多任务处理效率。3.7.1 ThreadPoolExecutor创建线程池 阿里开发规范不要显示创建线程池,也不要用excutors静态方法创建线程池,而是用ThreadPoolExecutor。 &nbs
2021-02-07 22:50:52 1263
原创 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 812
原创 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 708 1
原创 1.6 Java位运算符详解与(&)、或(|)、非(~)、异或(^)
1.6 位运算 位运算是指对二进制数的运算,位运算虽然在工作中很少用到,但是其作用很大,如果经常看源码的道友一定经常看到位运算,如果不懂二进制位运算也就云里雾里了,在此笔者总结了下四个基本位运算的使用。1.6.1 &运算 与运算是指两个二进制数相同位同时为1则结果为1。System.out.println(Integer.toBi
2021-02-06 00:28:07 1032 5
原创 3.6 线程通信
3.6 线程通信 线程通信是指不同线程之间相互传递信息。线程通信可以实现线程等待其他线程执行结果后再执行,这样来实现不同线程之间按照有序的方式进行工作。 那么问题来了,Java要如何实现线程间通信呢?3.6.1 实现通信–共享变量 可以通过共享变量来实现,
2021-02-04 00:59:16 3216 4
原创 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 1292 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 37919 4
原创 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 3008 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 3062
libfastcommon-1.0.40.tar.gz
2020-03-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人