0%

二分算法

二分算法基本框架

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public int searchInsert(int[] nums, int target) {
int left = 0,right=nums.length-1,ans=right+1;
while(left<=right){
int mid = (left + right)/2;
if(nums[mid]>=target){
ans=mid;
right=mid-1;}
else
left=mid+1;
}
return ans;
}

分析二分查找的一个技巧是:不要出现 else,而是把所有情况用 else if 写清楚,这样可以清楚地展现所有细节。本文都会使用 else if,旨在讲清楚,读者理解后可自行简化。

阅读全文 »

写这个已经过了很久的的时间了 当时写好没写博客是因为怕这个有额外的问题,现在经过实验 表现的都还没不错 在10min内成绩提醒就会发送到你自己指定的邮箱 我会把代码开源放入Github,当然我也会隐去我自己的信息。

这篇博客也会教大家怎么使用他

阅读全文 »

兑吧一面 9.22下午

不得不说流程是真的快 9.21 实习同事推简历过去 9.22早上约一面的电话 半小时不到约第二天早上二面 半小时不到约hr面 hr面不到一小时OC

阅读全文 »

记第一次在Github上pull request以及成为一个7.5k+项目的contributors

项目地址:https://github.com/wolverinn/Waking-Up 这个项目是同学推荐给我的 用来复习操作系统,计算机网络,以及数据库

在复习的过程中,发现了作者有些问题有笔误和有些问题闲置下来一直没有补充,所以就在当天提了几个Issue

阅读全文 »

Redis

1.NoSQL数据库(Not Only SQL)

概述:

是一种非关系型数据库

我们以前学的Mysql Oracle都属于关系式数据库

阅读全文 »

阅文笔试复习

1.详细描述ThreadPoolExecutor的各个参数的含义,介绍一个任务提交到线程池后的执行流程

  • corePoolSize : 线程池的核心大小,也可以理解为最小的线程池大小。

  • maximinPoolSize : 最大线程池大小

  • keepAliveTime:空余线程存活时间,指的是超过corePoolSize的空余线程达到多长时间才进行销毁。

  • util:销毁时间单位

  • WorkQueue:存储等待执行线程的工作队列。

  • threadFactory:创建线程的工厂,一般用默认即可。

  • handle:拒绝策略,当工厂队列,线程池全满时如何拒绝新任务,默认抛出异常

    阅读全文 »

数据库

事务的ACID特性

  • 原子性 逻辑上是不可分割的操作单元,事务的所有操作要么全部提交成功,要么全部失败回滚(用回滚日志实现,反向执行日志中的操作);

  • 一致性 事务的执行必须使数据库保持一致性状态,在一致性状态下,所有

  • 隔离性 一个事物所做的修改在最终提交以前,对其他事务是不可见的。

  • 持久性 一旦事物提交成功,对数据的修改是永久性的

    阅读全文 »

秋天面试的凄惨经历

双非本的秋招总结

学历 双非本软件工程专业

简历挂的 数不胜数

一面挂的 泛微 青颖飞帆 汇川技术 哈啰实习

意向的 比亚迪 兑吧实习 北京华宇

阅读全文 »

线程与进程的区别

  • 进程是系统进行资源分配和调度的基本单位

  • 线程是CPU调度和分派的基本单位

  • 线程依赖于进程而存在,一个进程至少有一个线程

    阅读全文 »

HTTP

HTTP请求方法

HTTP请求方法表明了要对给定资源执行的操作,每一个请求方法都实现了不同的语义,包括:GET,HEAD.POST,PUT,PATCH,DELECT,OPTIONS,以及不常用的CONNECT,TRACE.

GET

获取服务器的指定资源。

与 GET 方法一样,都是发出一个获取服务器指定资源的请求,但服务器只会返回 Header 而不会返回 Body。用于确认 URI 的有效性及资源更新的日期时间等。一个典型应用是下载文件时,先通过 HEAD 方法获取 Header,从中读取文件大小 Content-Length;然后再配合 Range 字段,分片下载服务器资源

阅读全文 »

操作系统

什么是操作系统?

  • 操作系统(Operating System)是管理计算机硬件和软件资源的程序 是计算机的基石

  • 操作系统本质上是一个运行在计算机上的软件程序 ,用于管理计算机硬件和软件资源。 举例:运行在你电脑上的所有应用程序都通过操作系统来调用系统内存以及磁盘等等硬件。

  • 操作系统存在屏蔽了硬件层的复杂性。 操作系统就像是硬件使用的负责人,统筹着各种相关事项。

  • 操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理。 内核是连接应用程序和硬件的桥梁,决定着系统的性能和稳定性。

    阅读全文 »

计算机网络

OSI/IP 七层结构

​ 从下到上

  • 物理层

  • 数据链路层

  • 网络层

  • 传输层

  • 会话层

  • 表示层

  • 应用层

    阅读全文 »

送走了迷茫的2021年 迎来了可能最为艰难的2022年 上学期突然下定决心决定工作,这学期开学到现在陆陆续续的刷了150道力扣 其实很多都是水题。不过像我这样努力了一个月也去拿了个程序设计二等奖。也明白了我现在一直坚持的一句话,

任何时候努力都不算晚

阅读全文 »

L. 恭喜edg夺得S11冠军

纯属签到题 细致一点就好了

阅读全文 »

数据输入
一般我常用的数据输入方法有两种,Scanner和BufferedReader。BufferedReader可以读一行,速度比Scanner快,所以数据较多的时候使用。注意BufferedReader用完记得关。

Scanner

1
2
3
4
5
6
7
8
9
10
11
12
import java.util.*;

public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt(); // String: next(), double: nextDouble()
int[] nums = new int[n];
for (int i = 0; i < n; i++)
nums[i] = scan.nextInt();
// ...
}
}

BufferedReader

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.*;
import java.io.*;

public class Main{
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(reader.readLine());
int[] nums = new int[n];
String[] strs = reader.readLine().split(" ");
for (int i = 0; i < n; i++)
nums[i] = Integer.parseInt(strs[i]);
// ...
reader.close(); // 记得关闭
}
}

快速排序quickSort
快速排序要注意x取值的边界情况。取x = nums[left], nums分为[left, j]和[j + 1, right],或x = nums[right], nums分为[left, i - 1]和[i, right],否则会StackOverflow。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public void quickSort(int[] nums, int left, int right) {
if (left >= right)
return;
int i = left - 1, j = right + 1, x = nums[left];
while (i < j) {
do i++; while (nums[i] < x);
do j--; while (nums[j] > x);
if (i < j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
quickSort(nums, left, j);
quickSort(nums, j + 1, right);
}

例题:AcWing 785, LeetCode 912

归并排序mergeSort
mergeSort时间复杂度是稳定O(nlogn),空间复杂度O(n),稳定的。quickSort时间复杂度平均O(nlogn),最坏O(n^2),最好O(nlogn),空间复杂度O(nlogn),不稳定的。

public void mergeSort(int[] nums, int left, int right) {
if (left >= right)
return;

阅读全文 »

新建一个maven工程 注意选择JDK的版本 如果版本过高可能会不支持 最好选择8 9 11

阅读全文 »

所需要的工具 一台服务器 一个可以编译jar的java环境 nginx用来正向代理

xshell连接服务器

安装java环境

1
yum install java-1.8.0-openjdk

查看java是否安装好

1
java -version

创建自己项目的路径并且cd到该路径

1
2
mkdir java
cd java

用命令让他跑起来

阅读全文 »

[toc]Java实现pdf转为图片

首先创建一个maven工程 在pom.xml文件导入包的依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<dependencies>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.develouz.view/pdfreader -->
<!-- pdf水印 -->
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
</dependency>
</dependencies>>

第二步 在Java路径下创建一个子类PDF2IMAGE

然后导入包

1
2
3
4
5
6
7
8
9
10
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;

import com.lowagie.text.pdf.PdfReader;

主体结构

1
2
3
4
public class PDF2IMAGE {
public static void main(String[] args) {
pdf2Image("C:/Users/peng/Downloads/1.pdf", "D:/pdf2", 300);
}

主要利用pdf2Image方法

代码见下

阅读全文 »

被拉去参加财务大学生竞赛 让我当大数据分析师

刷了几套题发现是考查找数据能力以及利用python tushare库做分析

阅读全文 »