自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MongoDB中的批量插入的使用方法及与逐条插入的性能比较

在MongoDB中,如果有数据需要进行插入操作,一种简单的方法是将每条数据逐条插入,在python的pymongo中便是遍历我们的数据,然后,对每一条数据insert_one(doc),这种方法比较简单,同时也非常地灵活,但是,对于大批量的数据而言,效率较低。而另一种方法是,将需要插入的数据整合到一个列表中,然后将这个列表整体地批量插入到数据中,这样对于大批量的数据而言,效率要高很多。下面是对...

2020-01-14 16:40:36 3280 1

原创 pymongo中的MongoClient opened before fork警告原因及解决方法

今天在python中遇到了一个警告,如下:UserWarning: MongoClient opened before fork. Create MongoClient only after forking. See PyMongo's documentation for details: http://api.mongodb.org/python/current/faq.html#is-pym...

2020-01-14 16:32:26 2146 1

原创 python中迭代器的原理与使用

python中,一个类只要实现了__iter__()方法,则称其为可迭代的,如果其又实现了next()方法,则可称其为迭代器。__iter()__方法的用途是返回一个迭代器,并通过返回的迭代器的next()来迭代所需的容器。class MyArray(object): def __init__(self): self.elements = ["e1", "e2", "e...

2020-01-06 21:43:19 549

原创 python中如何通过相对路径得到绝对路径

从相对路径到绝对路径在python中,因为一个项目通常会被布置在多台机器上,因此在项目中读取项目内的文件时,使用绝对路径是不合适的,因为在不同的机器上,项目的路径往往是不同的。在一般情况下,直接使用相对路径就可以满足要求,但是,如果我们对于一个通过相对路径读取到的文件,需要得到其绝对路径的话,应该怎么办呢?这时,可以通过os包中的os.path.abspath(path)来实现这个功能。下面给...

2019-11-29 10:01:09 4128

原创 从源码分析:Go中的环ring

引言在之前的文章Go中的双向链表list的使用与从源码分析:Go中的双线链表list,我们一起看了Go中的容器list的使用与其源码的实现原理,这一次,我们来看一下另一个容器,也就是标题中所述的ring,Go中的环形链表,与container/list一样,ring同样位于包conatainer中。数据结构还是老规矩,一开始先看一下ring中所使用的数据结构。其实ring中使用的结构比较少,...

2019-11-20 11:29:27 327

原创 win10中,多python环境下,切换pip的默认环境

现在使用的机器中存在着多个python的环境,前面几个环境都是通过anaconda来管理环境,既有2也有3,现在需要安装一个纯净版本的python2,但是由于之前已经存在着多个python环境,pip时不会将需要安装的包装在新的纯净python环境中,因此这是我们需要通过修改环境变量来实现pip的默认环境的切换。首先我们将python的安装的目录添加进环境变量中,之后我们将这个路径下的\Scri...

2019-11-16 09:59:47 2505

原创 从源码分析:Go中的双线链表list

引言在上一篇文章Go中的双向链表list的使用中,我们已经看过Go的标准库中所提供的双向链表container/list的使用方法了,在这篇文章中,我们来一起看一看这些方法分别是怎样被实现的。list中的节点Element之前有对Java了解的同学应该知道,Java中的双向链表LinkedList中是使用了Node来作为链表中的节点的,而在Go中,同样需要一个类型来保存元素中的数据,这个类型...

2019-11-11 10:42:02 155

原创 Go中的双向链表list的使用

引言在对于Go的基础知识看了一段时间之后,对于语言本身已经有了一定的了解。当我们在实际的编程中,必然会有很多场景需要荣国数据结构来帮助实现一些特定的功能,对于一些常见的数据结构,首先还是会想到使用编程语言自带的库。这一次,便准备来看一下Go中的链表(双向)——list——的使用。链表的使用list位于container包中,其实现了基本的双向链表功能,包括元素的插入、删除与移动等功能。为方...

2019-11-06 20:22:19 276

原创 Golang中的println与fmt.Prinltn的区别与输出顺序问题

引言在Go的学习过程中,发现多数文章中的代码中输出都是使用fmt.println(),而自己在IDE中测试时,发现可以像一些语言中一样直接使用print或者println来输出内容,于是好奇既然有更加方便的输出方式,那么为何大家仍然使用需要有依赖的fmt包中的输出呢?于是在网上查了一下相关的资料。print(ln)与fmt.print(ln)在[http://golang.org/ref/s...

2019-11-04 16:01:27 3176 2

原创 win10下Go环境的安装

环境安装首先我们需要在这里下载所需的安装包,在下载页面提供了比较全面的版本可供下载,目前所用的机器为Win10的机器,所以选择的是go1.13.3.windows-amd64.msi,如下图。下载完成之后,直接安装即可。安装完成,输入:go version,如果能够正常输出,说明已经安装成功。运行第一个Demo在环境安装完成之后,我们就可以运行第一个Demo了。首先,我们先创建一个项...

2019-10-26 10:57:33 269

原创 java中创建文件并写入的方法

import java.io.*;public class CreateFile { public static void main(String[] args) { String path = "E:\\a\\s"; File file = new File(path); if (!file.exists()) { ...

2019-09-18 21:34:38 233

原创 从源码分析:Java中的AQS

获取锁public final void acquire(int arg) { // 首先通过tryAcquire尝试获得锁 // 如果未能成功获得锁,则进入acquireQueued if (!tryAcquire(arg) && // 以独占模式生成节点并添加到队列的尾部 acquireQueued(addWaiter(Node...

2019-09-07 16:12:00 71

原创 java 归并排序与快速排序

归并排序private static void merge(int[] nums, int[] tempArray, int leftPos, int rightPos, int rightEnd) { int leftEnd = rightPos - 1; int currPos = leftPos; int allNum = rightEnd - leftPos + ...

2019-09-02 14:46:13 135

原创 生产者消费者模型

import java.util.*;import java.util.concurrent.*;import java.util.concurrent.locks.*;public class ConsumerProducer { private static Buffer buffer = new Buffer(); public static void main(S...

2019-09-02 11:05:51 102

原创 多线程打印数字

package learning_java.Exercise;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock...

2019-09-02 11:05:05 154

原创 python中的is与==

>>> a = [1, 2, 3]>>> b = a[:]>>> b[1, 2, 3]>>> id(a)140278317281792>>> id(b)140278317209936>>> a is bFalse>>> a == bTrue解释:...

2019-08-29 16:56:59 101

原创 java中关于BigDecimal用法的思考

public class DoubleEqualTest { public static void main(String[] args) { double num1 = 30.0000000000000003; System.out.println(num1 == 30); BigDecimal bigNum1 = new BigDeci...

2019-08-28 17:10:54 104

原创 非递归方法遍历树(前序遍历、中序遍历及后续遍历)

public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<>(); if (root == null) return res; LinkedList<TreeNode> stack = new Lin...

2019-08-28 16:34:26 108

原创 java中Boolean的比较

Boolean boolean1 = new Boolean(true);Boolean boolean2 = new Boolean(true);System.out.println(boolean1 == boolean2);System.out.println(boolean1.equals(boolean2));输出:falsetrue即,boolean1与boolean...

2019-08-28 13:45:18 8730

原创 从源码分析:java中的线程池ThreadPoolExecutor

属性// pool control stateprivate final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));private static final int COUNT_BITS = Integer.SIZE - 3;private static final int CAPACITY = (1 <&l...

2019-08-27 16:26:38 82

原创 从源码分析:LinkedHashMap的get方法

LinkedHashMap中重写了HashMap的get方法,不止会取出所索要的节点的值,而且会调整LinkedHashMap中内置的链表中该键所对应的节点的位置,将该节点置为链表的尾部。public V get(Object key) { Node<K,V> e; if ((e = getNode(hash(key), key)) == null) ...

2019-08-19 16:01:18 882

原创 从源码分析:Java中的Map(三)详解Java中HashMap的常用方法(构造方法、get、put等)

在上一章中,我们看过了HashMap的结构,并了解了其用于储存数据的两个基本的数据结构,那么这一篇文章中就可以来具体地看一看一些具体的方法了。HashMap的构造方法首先,我们来看一看HashMap的成员变量:public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>...

2019-07-18 15:24:18 327

原创 从源码分析:Java中的Map(二)Java中HashMap的内部类

HashMap介绍在一起看HashMap的源码之前,在这里想要先简要介绍Java8中的HashMap的大体的结构。在前面一章中,我们看到了抽象类AbstractMap中的许多操作都是基于遍历的方式来进行的,比如查找,这样的操作的效率是很低的。HashMap中采用了哈希表的方式来提高效率,并用数组来表示这个哈希表,而初始化时为了节约内存,一般不会设置很长的数组,因此不可避免地会出现哈希冲突,即多...

2019-07-17 19:31:02 903

原创 从源码分析:Java中的Map(一)Map接口与AbstractMap抽象类

HashMap的继承结构Java中,我们最常用的map类型可能就是HashMap了,这一次介绍的重点也在HashMap上面。但是,在我们详细分析HashMap之前,我们先来看一下HashMap的继承结构:Java中的Map接口从上面的继承结构中,可以看出,Java中的HashMap是接口Map的一个实现类,因此,在我们分析HashMap之前,不妨先来看看Map接口。首先,我们来看一下Ma...

2019-07-17 16:38:25 459

原创 从源码分析:Java中的SPI是怎样工作的

spi介绍提到api,大家或多或少地都接触或者使用过,但是如果说到spi呢,可能了解的人就要少一些。Java SPI的全称为Service Provider Interface,相对于api来讲的话,简单来说,api是提供给用户来进行使用的,而spi是提供给开发者来进行扩展的。也就是说,当我们使用spi的时候,从最基本来说,是基于接口的编程的方式,通过配置文件来实现动态加载,而在编写客户端程序...

2019-07-15 09:07:10 76

原创 Java中的SPI的使用例子

首先,看一下总体的结构图:在src的main中,我们定义了com.lf这样一个路径,下面有两个包,首先我们看一下API包中,我们定义了一个接口MyPrinterAPI:package com.lf;import com.lf.API.MyPrinterAPI;import java.util.ServiceLoader;public class testClient { ...

2019-07-14 14:07:41 468

原创 IDEA中实现接口时注解@Override报错的解决方法

今天在写代码时,准备实现一个自己写的接口的时候,发现如果在需要实现的方法前面加上@Override注解,这个注解是标红的,即被IDE认为是错误的。上网查阅资料后发现,原来在JDK5时,当时的设计者认为,对于接口的实现时各个方法是不算做Override的,因此@Override注解是不应该用在这种情况的,而在JDK6之后,规则修改为允许在实现接口方法时使用。因此,如果我们需要使用这个注解,必须保...

2019-07-14 13:30:47 4173

原创 从源码分析:分析Java中的StringBuilder

我们知道,在java中,如果要对于一个字符串进行操作,比如增删操作,如果直接用+来进行的话,效率是比较低的。作为替代,我们一般使用StringBuilder来进行这样的操作。所以,这一次,我们就来研究一下StringBuilder的源码构造函数public final class StringBuilder extends AbstractStringBuilder impl...

2019-07-12 17:10:15 171

原创 Dubbo中消费端报错Caused by: java.lang.IllegalStateException: Failed to check the status of th

消费端代码:@EnableAutoConfigurationpublic class DubboConsumerBootstrap { private final Logger logger = LoggerFactory.getLogger(getClass()); @Reference() private DemoService demoService; ...

2019-07-11 22:08:20 7398

原创 从源码分析:Java中的split()方法

从字符串中出现多次空格时使用’split()'说起我们一般在使用java中的字符串类String中的split()时,比如希望用空格将其隔开时,往往会默认每次只有一个空格出现,那么若出现多个空格,会发生什么呢?这里,我们可以做一个简单的测试:public class JavaSplitTest { public static void main(String[] args) { ...

2019-07-11 16:55:47 357

原创 Linux(Ubuntu18)中启动ssh时的报错

今天配置了一台新的Ubuntu的机器,在修改完ssh的配置文件并准备开启ssh的时候,无论是启动ssh:/etc/init/d/ssh start还是重启ssh服务:/etc/init/d/ssh restart都显示错误:Starting ssh (via systemctl): ssh.serviceJob for ssh.service failed because the c...

2019-07-03 19:21:06 9626 1

原创 Linux中的SWAP机制

SWAP的作用在Windows中,我们知道可以用虚拟内存来部分解决内存不足的问题,而在Linux下,SWAP就是起到类似作用的一个机制。当物理内存不足时,会将一部分磁盘内的储存空间当作SWAP分区使用,以环节内存容量不足的问题。其基本操作有两个,分别为SWAP OUT与SWAP IN,前者时在系统发现内存不足时,将内存中暂时不用的数据交换出去放在SWAP分区的过程,而后者为当某进程又需要这些数...

2019-06-24 10:46:51 744

原创 Python中可变对象作为形参的问题

python中的可变对象和不可变对象可变对象,是指该对象所指向的内存中的值可以被改变。变量改变后,实际上是其所指向的对象的值发生了变化,也就是说在原地址发生了变化。不可变对象,是指该变量所指的内存中的对象的值不能被改变。Python中,字符串、数值类型(int和float)与元组是典型的不可变对象,而列表list、字典dict、集合set是典型的可变对象类型。如何判断对象是否改变?在Py...

2019-06-22 16:33:37 782

原创 Ping的原理(PING.EXE的位置)

PING.EXE当我们在cmd中输入ping命令的时候,实际是调用了路径C:\Users\LenFranky\OneDrive\文档\blog\pic\ping下的PING.EXE程序,来实现发送包与接收包的功能,也就是我们看到的输入与输出。ping的原理ping的格式为 ping IP,其中的IP为我们想要测试连接的目标主机的IP,当我们执行这条指令的时候,若指定IP地址存在的话,会返回...

2019-06-19 10:34:16 1912

原创 Java中负数的右移

我们知道,在Java中常用的位移运算有三种,分别是:<<(左移)、>>(带符号右移)和>>>(无符号右移)。这一次,我们来看一下其中的带符号右移运算符>>在负数计算时的效果。首先,是一段测试代码:public static void main(String[] args) { int num = -10; System...

2019-06-11 17:03:53 3168 2

原创 平衡二叉树中点的数量

平衡二叉树,又叫平衡二叉搜索树(Self-balancing binary search tree),其定义为:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。由定义可知,对于一棵高度为n的树,其点最少的情况为:左子树与右子树中,一者为高为n的最小平衡二叉树,另一者为高为n - 1的最小平衡二叉树,因此,对于高度为n的平衡二叉树,其最少点的数量为:F...

2019-06-04 15:57:14 795

原创 OJ平台(牛客等)中Java的输入方法

之前做题主要是在leetcode里做的,在leetcode平台,做题的时候只需要完成所给的函数,使用时,输入为函数输入的形参,输出为程序的返回值。而在牛客网上的题目,包括一些竞赛时的题目,型式为输入的是从控制台键入的几行数据,而输出是直接将结果打印到控制台,因此,这里将所遇到的输入的格式即对应的代码放在这里。基本格式及所需的库在Java5中引入了Scanner库,这个库在日常使用中是非常方便的...

2019-06-03 19:08:07 5821 8

原创 Java中的左移时的负数问题

java 中的左移的运算符为<<,其作用是返回把左侧的数字左移右侧数字的位数的结果,其规则为:丢弃最高为,0补最低位。因此,左移可以用作乘2操作的一个高效的实现。但是使用的时候要注意符号位的问题,如下:public void shiftTest() { int n = 1; while (n != 0) { n = n << 1; ...

2019-06-03 11:12:05 3224

原创 Linux中关闭一个端口对应的所有程序

有时,我们在服务器上开启了一个Django或其它任务,占用了服务器的一个端口,而当我们想将其关闭的时候,发现其对应着许多进程,这时,要将其一个一个地找出来并且kill掉还是比较麻烦的,所以写了下面这个脚本来处理这样的任务。import commandsimport osdef kill_all_django_processes(port = 90): result = os.po...

2019-05-22 16:08:23 874

原创 Java中的lastIndexOf函数的fromIndex参数

首先是一段测试代码,在后面有详细的解释public class LastIndexOfTest { public static void main(String[] args) { String s = "a ab abc abcd"; System.out.println(s.lastIndexOf("a")); System.out.p...

2019-05-20 10:33:22 1948

空空如也

空空如也

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

TA关注的人

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