自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

濯君

if you don't give any,you get none.

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

原创 java stream 实现双重for循环

给定列表[1, 2, 3]和列表[3, 4],返回[(1, 3), (1, 4), (2, 3), (2, 4), (3, 3), (3, 4)]。import java.util.*;import java.util.stream.Collectors;public class Main { public static void main(String[] args) { List<Integer> numbers1 = Arrays.asList(1, 2

2021-08-15 10:45:20 5662 2

原创 Maven不能下载依赖库

一:检查maven设置是否正确,特别是settings.xml里面的配置,mirror,repository等。二:如果设置正确,就去该dependency对应的URL,通过浏览器进入查看,检查该URL对应的网页是否存在对应的jar包三:最后手段,手动下载jar包到local repository引入...

2021-06-09 09:19:14 307

原创 使用Scrapy爬取豆瓣图片

使用Scrapy爬取豆瓣某影星的所有个人图片以莫妮卡·贝鲁奇为例一:首先我们在命令行进入到我们要创建的目录,输入 scrapy startproject banciyuan 创建scrapy项目创建的项目结构如下二:为了方便使用pycharm执行scrapy项目,新建main.pyfrom scrapy import cmdlinecmdline.execute("scrapy crawl banciyuan".split())再edit configuration然后进行如下设

2021-05-31 19:21:27 707 3

原创 ValueError: check_hostname requires server_hostname

使用 pip install ,安装包的时候出现这个错误ValueError: check_hostname requires server_hostname出错原因是使用了VPN,把VPN关掉就好了reference

2021-05-29 11:25:41 620

原创 Consider defining a bean of type ‘*Mapper‘ in your configuration.

在使用最新的mybatis-3.5.6时,使用注解@Mapper修饰相应的mapper接口,但是在controller里不能使用@Autowired自动注入,报错Consider defining a bean of type '*Mapper' in your configuration.但是使用mybatis-2.0.0就不会出现这个错误。经过查找,分析,发现在启动类里添加注解@ComponentScan,可以解决这个问题,里面的路径是对应的mapper路径@SpringBootApplicat

2021-05-08 17:03:42 1997 1

原创 IDEA maven手动导入jar包

因为阿里云镜像里还没有最新版的mybatis所以需要先去下载相应的jar包,再手动导入。使用的是mybatis-3.5.6.jar一:先从官网下载相应的jar包,放在相应目录下二:开启命令行终端,输入以下命令在maven中安装jar包mvn install:install-file -DgroupId=org.mybatis.spring.boot -DartifactId=mybatis-spring-boot-starter -Dversion=3.5.6 -Dpackaging=jar -Df

2021-05-08 16:58:17 843

原创 IntellijIDEA设置实现spring boot 热重启

设置spring boot 热重启之后,idea会自动监听代码的改动,发现改动之后会自动编译,无需手动重启就能看到修改之后的运行效果。一:在maven里添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>run

2021-05-06 17:12:52 181

原创 Caused by: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean n

在学习spring 实战(第五版)2.3节验证form input时碰到这个问题。在校验Taco的name格式时,做了如下设置package com.example.tacocloud.bean;import lombok.Data;import javax.validation.constraints.NotNull;import javax.validation.constraints.Size;import java.util.List;@Datapublic class Tac

2021-05-06 17:00:04 573 1

原创 Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found

该问题的出现是因为没有给spring-boot-maven-plugin指定版本号,如下指定版本号与spring boot一样就可以解决了。<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${project.parent.version}</version> ...

2021-05-05 20:06:56 664

原创 Project ‘org.springframework.boot:spring-boot-starter-parent:2.4.5‘ not found

在使用IntelliJ IDEA 时出现这个问题,选择File—>Invalidate Caches / Restart…就可以解决这个问题,因为更新之后,缓存没有及时生效,重启之后就好了。参考

2021-05-05 20:00:54 6385 5

原创 java内存泄露的常见情景

一:对象的过期引用没有及时解除上面这段代码中pop方法存在内存泄露,从栈中的弹出的对象不会被回收,即使使用栈的程序不再引用这些对象。这是因为栈内部维护着这些对象的过期引用(永远也不会被解除的引用)。修复方法:一旦对象引用已经过期,就手动清空这些引用。pop方法修改为:清空过期引用的另一个好处是,如果它们以后又被错误的解除引用,就会抛出空指针异常,而不是悄悄的错误运行下去。二:缓存一旦把对象引用放到缓存中,就很容易被遗忘,从而导致内存泄露。(1)只要在缓存之外存在对某个项的键的引用,该项就有意

2021-05-03 08:49:18 252

原创 CTF网络攻防笔记

1, X-Forwarded-For: 用来表示 HTTP 请求端真实 IP,伪造本地访问。在HTTP请求头里设置:X-Forwarded-For: 127.0.0.1,修改请求IP为本地IP。2,在HTTP请求头里设置, referer: 告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。3, 常用编解码:md5, url编码(有很多%的),base64(结尾是=),HTML页面内容utf-8编解码4,PHP里比较值不相等,md5,sha1编码之后的值相等,要绕过,构造数

2021-04-18 23:11:31 1136 4

原创 2021.4.1 字节-飞书-测开一面

深挖java电商秒杀系统项目登录功能怎么实现的,用户,密码传输的时候有什么问题不应该将用户输入的用户名密码直接与数据库匹配,应该先去缓存进行匹配Redis做了哪些缓存优化Redis缓存秒杀列表页3S没有意义,不能起到有效减少用户对数据库的访问量Redis缓存与数据库数据实配问题怎么解决秒杀系统是怎么解决并发冲突的java,MySQL里的锁底层是怎么实现的乐观锁,悲观锁的区别HTTP,TCP keep-alive的区别HTTP请求包含哪些部分keep-alive在HTTP请求的哪个部分

2021-04-01 18:46:00 576

转载 有一种神奇的性格叫——INTJ

2.3.1 沙箱要了解 INTJ 的性格,首先要明确一个叫做沙箱的概念。INTJ,我们从这四个字母就能看出他的性格特点:内向的人本身就不喜欢与人交往,直觉让他们倾向于自己冥想,理性的思维使他们只关注事物的本身逻辑,判断的的特性让他们很少做出理解他人感受的举动。这四个功能都是那种较少和外界接触,相对独立的功能,合在一起自然使 INTJ成了十六种性格里最独立也最封闭的一种性格。大多数人的功能是为了适应和认识外在的世界,INTJ 就完全走向另一个极端,纯粹的构建一个心中的完美的世界,也就是他...

2021-03-23 10:44:10 26636 3

原创 Word如何让不同页显示不同的页码,页眉

一,让不同页显示不同的页码,页眉,关键是使用分节符对页面进行分节,这样不同的节,就可以设置不同的页码,页眉。(1)“下一页”、“连续”、“奇数页”和“偶数页”。(2)“下一页”:插入一个分节符,新节从下一页开始。 分节符中的下一页与分页符的区别在于,前者分页又分节,而后者仅仅起到分页的效果。(3)“连续”:插入一个分节符,新节从同一页开始。(4)“奇数页”/“偶数页”:插入一个分节符,新节从下一个奇数页或偶数页开始。比如要使以下文档里的第二页的页码,页眉与第一页不同,首先需要在第一页的最后位置

2021-02-24 19:11:04 5793

原创 bugku 安慰奖

打开网页,发现什么也没有,查看源码,发现YmFja3Vwcw==,base64解码,得到backups查看根目录下index.php.bak文件,得到代码<?phpheader("Content-Type: text/html;charset=utf-8");error_reporting(0);echo "<!-- YmFja3Vwcw== -->"; #base64解码,backupsclass ctf{ protected $username = 'hac.

2020-12-31 10:46:32 1928 3

原创 bugku web33

点击下载文件得到<?phpfunction encrypt($data,$key){ $key = md5('ISCC'); #729623334f0aa2784a1599fd374c120d $x = 0; $len = strlen($data); $klen = strlen($key); for ($i=0; $i < $len; $i++) { if ($x == $klen) { .

2020-12-31 09:38:00 743

原创 bugku web32 文件上传

打开实验,发现是文件上传只能上传图像,不能上传PHP文件,那应该是寻找漏洞上传PHP文件PHP文件里写入一句话木马<?php @eval($_POST[caidao]);?>使用burp抓包,不断尝试发现发现需要修改的地方有三个,一个是http head里的Content-Type: multipart/form-data;multipart中的部分字母改成大写的。第二个是文件的的Content-Type: application/octet-stream,改成image/j.

2020-12-30 22:38:54 1707 4

原创 bugku web34 hint:文件包含

首先打开实验场景,发现什么也没有查看源码,发现upload.php进入该上传页面<script language=php>system("find / -name flag*");</script>将上面的代码写入文本,文本名修改为2.jpg将2.jpg上传到服务器浏览器访问URLhttp://114.67.246.176:17269/index.php?file=upload/202012301028412794.jpg找到/flag,访问URLh.

2020-12-30 18:31:23 554

原创 网络攻防入门---SQL注入攻击

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。比如这里原本是通过输入用户id来查询用户的first name, surname<?php if(isset($_GET['Submit'])){ // Retrieve data $i.

2020-12-28 09:49:45 475 1

原创 网络攻防入门---文件包含漏洞

有些网页具有包含其他页面到当前页面的功能,是通过URL设置参数添加进来的,比如下面这个URLhttp://192.168.232.128/dvwa/vulnerabilities/fi/?page=include.php将include.php包含进来一:low级别 <?php $file = $_GET['page']; //The page we wish to display ?> 因为源码中没有对页面进行检查,直接包含,所以可以随意引入其他页面比如引入c.p

2020-12-27 21:34:12 280 1

原创 网络攻防入门---文件上传漏洞及防御

一:下载相应的工具VMwareKali linux2020.3下载与安装详细教程OWASP Broken Web Apps渗透测试环境搭建和安装教程中国菜刀下载二:主要是使用靶机OWASP Broken Web Apps中的Damn Vulnerable Web App作为攻击目标,其中的upload存在文件上传漏洞其中的DVWA Security可以设置安全等级,共有三个安全等级low,medium,high三:low安全等级此安全等级下的upload源码 <?php

2020-12-27 20:10:54 789

原创 网关与主机通信

假设H1与H2的默认网关和子网掩码均分别配置为192.168.3.1和255.255.255.128,H3和H4的默认网关和子网掩码均分别配置为192.168.3.254和255.255.255.128,则下列现象中可能发生的是 。若两个网络连接在同一台交换机(或集线器)上,两台主机的IP地址通过子网掩码处理得到的网络号相同,两台主机之间能正常通信,所以A,D错误。因为H1,H2 的网络地址192.168.3.0与E1的网络地址192.168.3.128不同,所以H1,H2不能访问Internet,.

2020-12-23 08:46:05 1653

原创 TensorFlow训练模型时,自定义数据处理函数,方便快速加载数据训练模型

一:自定义数据处理函数#txt:txt文件里面存放图像名称def read_images(txt, batch_size): imagepaths, labels = list(), list() #分别存放图像路径和label images_names = [] with open('/data/' + txt, 'r') as r: images_names.extend(r.readlines()) for name in images_names

2020-11-12 09:45:24 304 1

原创 tensorflow 设置输出log级别

如果不设置TensorFlow的输出log级别,默认情况下会输出所有信息,但是这种情况下往往有很多信息是我们不关注的,就会造成干扰。为了方便控制输出的信息,下面提供两种方法。一:默认是0输出所有信息,1输出info信息,2输出warning信息,3输出error信息import osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' # or any {'0', '1', '2'}import tensorflow as tf二:这个直接设置输出信息级别tf.l

2020-11-09 20:31:14 560

原创 连续使用多个tf ckpt模型时,清理中间过程使用的模型图

连续使用多个tf ckpt模型时,若不清理前一个使用的模型,会导致使用下一个模型时出现问题,使用下面这行代码能清理之前使用的模型,注意要在session关闭之后再使用。tf.reset_default_graph()reference...

2020-11-09 20:19:53 176

原创 获取TensorFlow ckpt模型里的变量名称以及对应的值

一:输出模型中所有变量及其对应的值from tensorflow.python.tools.inspect_checkpoint import print_tensors_in_checkpoint_fileprint_tensors_in_checkpoint_file(model_path='1dcnn.ckpt', tensor_name='', all_tensors=True)二:分别输出模型中的所有变量名称和值from tensorflow.python import pywrap_

2020-11-09 10:54:40 280

原创 指定使用哪个GPU运行程序

一:首先使用命令nvidia-smi查看有哪些可以使用的GPU二:指定GPU运行Python程序CUDA_VISIBLE_DEVICES=1 python main.py --cuda三:指定GPU运行c++程序CUDA_VISIBLE_DEVICES=1 ./de

2020-10-30 20:30:34 2525

原创 matplotlib 不均匀刻度绘图

# -*- coding: utf-8 -*-import matplotlib.pyplot as pltimport numpy as npdef auto_text(rects): for rect in rects: ax.text(rect.get_x()+rect.get_width()/2, rect.get_height(), rect.get_height(), ha='center', va='bottom')# plt.figure(figsize=

2020-09-19 22:36:32 6938

原创 剑指 Offer 28. 对称的二叉树

请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:示例 1:输入:root = [1,2,2,3,4,4,3]输出:true示例 2:输入:root = [1,2,2,null,3,null,3]输出:falseclass Solution { public boolean dfs(TreeNode a

2020-08-27 09:00:48 84 1

原创 JVM-对象的内存分配

大多数情况下,对象在新生代Eden区中分配,当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC。大对象直接进入老年代,大对象是指需要大量连续内存空间的java对象,典型的大对象是那种很长的字符串以及数组。虚拟机提供了一个-XX:PretenureSizeThreshold参数,存储空间大于这个设置值的对象直接在老年代分配,这么做是为了避免在Eden区及两个Survivor区之间发生大量的内存复制。长期存活的对象将进入老年代,虚拟机会给每个对象设置一个对象年龄(Age)计数器。如果对象

2020-08-24 14:14:10 127

原创 JVM-垃圾收集器详解

一:JDK1.7之后Hotspot虚拟机使用的垃圾收集器如下图所示,若两个收集器之间存在连线,说明它们可以搭配使用。二:Serial收集器Serial收集器是最基本的,发展历史最悠久的收集器,是一个单线程的收集器,只会使用一个CPU或一条收集线程去完成垃圾收集工作,而且在进行垃圾收集时,必须暂停其他所有的工作线程,知道它收集结束。暂停其他所有的工作线程,这个过程被称为“Stop The World”,由虚拟机在后头自动发起和自动完成,在用户不可见的情况下把用户正常工作的线程全部停止。Seria

2020-08-24 11:18:46 357

原创 JVM垃圾收集算法

标记-清除算法分为标记,清除两个阶段,首先标记所有需要回收的对象,标记完成后统一回收所有被标记的对象。主要有两个不足:一是标记和清除两个过程的效率都不高;二是标记,清除之后会产生大量不连续的内存碎片。空间碎片太多,可能会导致以后在冲程序运行过程中,需要给较大对象分配内存时,无法找到足够的连续内存而提前触发垃圾收集操作。复制算法复制算法将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块内存用完了,就将还存活的对象复制到另一块上面,然后再吧已使用过的那块内存空间一次清理掉。这样使得

2020-08-24 08:17:56 112

原创 java方法区的回收

方法区(Hotspot虚拟机中的永久代)的垃圾回收主要收集两部分的内容:废弃常量和无用的类。废弃常量的回收以常量池中字面量的回收为例,加入一个字符串“abc”已经进入常量池中,但是当前系统没有任何一个string对象叫作“abc”,即没有任何string对象引用常量池中的“abc”常量,也没有其他地方引用这个字面量。如果这时候发生内存回收,且有必要的话,这个“abc”常量就会被系统清理出常量池。常量池中的类(接口),方法,字段的符号引用也类似。类的回收当类满足以下三个条件,才能认为是无用的类。该

2020-08-23 19:17:51 429

原创 如何判断对象是否存活

判断对象是否存活的方法主要有两种:引用计数算法,可达性分析算法引用计数算法给对象添加一个引用计数器,当有一个地方引用它时,引用计数器+1,当有一个引用失效时,引用计数器-1,引用计数器为0时,表示对象不可能再被使用。这个方法实现简单,判断效率高,但是不能解决对象之间循环引用的问题。比如两个对象相互持有对方的引用,除此之外,再无其他引用,实际上这两个对象已经不能再被访问,但是因为它们互相引用对方,导致引用计数器不为0,导致垃圾收集器不能回收它们。可达性分析算法java,C#都是通过可达性分析算法来

2020-08-23 18:41:48 1061

原创 java中对象的访问定位

java程序通过栈上的reference数据来操作堆上的具体对象。目前主流的访问方式有两种使用句柄,直接指针。使用句柄java堆中会划分出一块内存作为句柄池,reference中存储的就是对象的句柄地址,而句柄中包含了对象的实例数据与类型数据各自的具体地址信息。直接指针java堆对象的布局中必须考虑如何放置访问类型数据的相关信息,reference中存放的是对象地址。使用句柄的访问方式,优势是,reference中存放的是稳定的句柄地址,在对象被移动时(垃圾收集时移动对象是很普遍的行为),只会

2020-08-22 20:41:57 165

原创 java对象的创建过程

以下为普通java对象的创建过程,不包括数组和Class对象等虚拟机遇到一条new指令时,首先去检查这个指令的参数是否能在常量池中定位到一个类的符合引用,并且检查这个符合引用代表的类是否已被加载,解析和初始化过。如果没有,再执行相应的类加载过程。在类加载检查通过后,虚拟机将为新生对象分配内存。对象所需的内存大小在类加载完成后就可以确定。为对象分配内存的任务即等同于。把一块确定大小的内存从java堆中划分出来。划分的方法有两种,取决于java堆中内存是否规整。而java堆中内存是否规整又由所采用的垃圾收

2020-08-22 20:17:10 144

原创 Java 运行时数据区

Java运行时数据区主要分为线程私有的程序计数器,虚拟机栈,本地方法栈,线程共享的堆,方法区,如下图一:程序计数器程序计数器是一块较小的内存空间,线程私有,可以看作是当前线程所执行的字节码的行号指示器,字节码解释器工作时,通过改变程序计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等功能都是依靠这个计算器来完成的。如果线程正在执行的是java方法,则计数器里存放的是正在执行的java字节码指令的地址;如果执行的是native方法,则计数器里的值为空。此内存区域是jav

2020-08-22 16:23:10 95

原创 2020-8 问题日志

2020-8-8makefile中的notdir,wildcard和patsubstLinux GCC常用命令C编译: makefile基础

2020-08-08 11:46:05 106

原创 Linux makefile 基础

一:宏XX = g++NVCC = nvccCFLAGS = -Wall -O -g后续的使用中XX表示g++二:target: prerequisite为依赖关系,即目标文件(target)依赖于前提文件(prerequisite)。可以有多个前提文件,用空格分开。依赖关系后面的缩进行是实现依赖关系进行的操作,即正常的UNIX命令。一个依赖关系可以附属有多个操作。%.o:%.cpp $(XX) \ -I $(COMMON_INC) \ //-I 引入头文件

2020-08-08 11:45:49 102

空空如也

空空如也

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

TA关注的人

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