基于Java通过文件头分析文件类型

文件如果没有后缀,可以通过此种方式识别图片的类型   import com.google.common.collect.Maps;import javax.imageio.ImageIO;import javax.imageio.ImageReader;import javax.imageio.stream.ImageInputStream;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;public class FileTypeTest { public final static Map FILE_TYPE_MAP = Maps.newHashMap(); static { FILE_TYPE_MAP.

JDK8源码解析-深入探索String内部变量(二)

       源码解析基于jdk1.8.0_261进行分析,如果各位读者的jdk是该版本之前或之后的,可能与本文有所出入,但终究是一脉相承,万世一系   前言           为了贯穿上下文,在阅读此篇文章之前,推荐各位看客优先看下 JDK8源码解析-String-修饰符及接口实现(一) 本次我们要讲的是String类的成员变量,因篇幅较广,构造函数我们放在下一期讲解,本期让大家知晓在java中如果new String() 或者定义一个String类型的常量,jvm在栈,堆及常量池中的使用     成员变量           在讲解之前,我们先粘个截图,让大家看下,jdk8 中String类的成员变量           从截图中我们可以看出,目前String类中共定义了5个成员变量,都是private修饰的,即每个成员变量,都不可以被外部所引用,其中有4个成员变量是final修饰的,上一篇文章我们已经介绍过,final修饰的变量是无法修改,那有些的同学就问题了,最后一个不是final修饰的变量是做什么用的,看上面截图,有个hash,这是干什么的呢?说到这个hash,通过代码上的

JDK8源码解析-String-修饰符及接口实现(一)

源码解析基于jdk1.8.0_261进行分析   前言   String类是java出山时,就带出来的兄弟,在1.0版本,就有String类的出现,但并没有现在的Api丰富,从jdk1.0(1996)到jdk1.8(2016)用了18年的时间,廉颇虽老尚能战也 String是Java语言的核心类,位于rt.jar下java.lang包中,它提供了字符串的比较、查找、截取、大小写转换等操作;Java语言为"+"连接符(字符串连接符)以及对象转换为字符串提供了特殊的支持,字符串对象可以使用”+"连接其他对象 如果饶有兴趣的读者,可以看下String类注释,讲述了String的使用方式及它的作用,这里我们只讲源码.下面我们对String类源码整篇解读一下     类修饰符及接口实现   首先介绍下标记中每个关键字或接口出现在此处的意义 public: Java语言中访问限制最宽的修饰符,一般称之为"公共的"被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问. final(final关键字可以用来修饰引用、方法和类) 修饰引用 如果引用为基本数据类型,则该引用为常量

Tomcat 配置 G1垃圾回收器

我是linux机器  去tomcat下找到catalina.sh  添加以下语句即可   JAVA_OPTS="-server -XX:+AggressiveOpts -XX:+UseG1GC -XX:ParallelGCThreads=8 -XX:MaxGCPauseMillis=200"

清空mac dock图标缓存(修改mac app 图标)

我这边安装了两个不同版本的idea,因为两个idea 开发的工程不同 一个是公司的,一个是个人开源项目的开发,平时点击老师点击错误,如图   我这边想要修改其中一个app的图标  这就需要修改下缓存文件,从图中看 在Applications中 我这边的图标已经更换为了github的logo ,打开查看包内容  (shhow package contents)     将Resources目录下的  icns文件  替换成你想要换成的图片,  icns图片网上可以自己找一下 或者自己转换一下都可以     更换完后重启电脑或者重启Finder 和Launchpad 都可以   killall Dock killall Finder   搞定上面的 我们要清楚先图片缓存,用root命令执行,进入缓存目录,并删除缓存文件,重启下dock或重启,即可 cd /Library/Caches/com.apple.iconservices.storerm -fr *.isdata   killall Dock killall Finder    

docker  centos:7 安装 ChatterBot 聊天机器人

docker  centos:7 安装 ChatterBot 聊天机器人参考资料:https://segmentfault.com/a/1190000015628625https://chatterbot.readthedocs.io/en/stable/setup.htmlhttps://github.com/gunthercox/ChatterBot.git  备份:https://github.com/cuiyongxu/ChatterBothttps://github.com/explosion/spacy-models/releases  备份:https://github.com/cuiyongxu/spacy-models/releaseshttps://www.zhihu.com/question/56095738/answer/283999308其他机器人:https://github.com/facebookresearch/ParlAI#  更新源yum update# 查看本地python 地址whereis python# 安装python3 依赖包 及部分辅

微信扫一扫问题总结

个人订阅号自定义菜单栏不能绑定第三方外链网站解决方案   1、订阅号通过appid绑定企业认证小程序 2、跳转到uniapp制作的默认页面,附带参数 pages/index/index?url=c1 3、uniapp页面跳转到第三方页面 index.vue   组件search-index 组件content-main {{list.description}}  

JDK1.8源码阅读(1):java.lang.Object

  一、hashcode() 1、hashCode方法返回值是int类型的散列码,对象的散列码是为了更好的支持基于哈希机制的java集合类,例如Hashtable,HashMap,HashSet。如果重写equals方法,也要重写hashCode方法。 2、hashCode方法的一致约定要求 (1)在java应用的一次执行过程中,对于同一个对象的hashCode方法的多次调用,他们应该返回同样的值(前提是该对象的信息没有发生变化); (2)对于两个对象来说,如果使用equals方法比较返回true,那么这两个对象的hashCode值一定是相同的; (3)对于两个对象来说,如果使用equals方法返回false,那么这两个对象的hashCode值不要求一定不同(可以相同,可以不同),但是如果不同则可以提高应用的性能。 (4)对于Object类来说,不同Object对象的hashCode值是不同的(Object类的hashcode值表示的是对象的地址)。 3、 hashCode方法应用举例:   当使用HashSet时,hashCode()方法就会得到调用,判断已经存储在集合对象中的has

CentOS下安装python-pip

安装python pip 的时候,提示: sh-4.2# yum -y install python-pipLoaded plugins: fastestmirror, ovlLoading mirror speeds from cached hostfile * base: mirrors.neusoft.edu.cn * extras: mirrors.neusoft.edu.cn * updates: mirrors.neusoft.edu.cnNo package python-pip available.Error: Nothing to do   出现以上提示,优先执行按照顺序执行以下语句即可 # 依次执行yum -y install epel-release# 上面执行成后 在执行下安装pipyum install python-pip# 可升级下pip 也可以选择不升级pip install --upgrade pip    

Ubuntu无法找到add-apt-repository问题的解决方法

在docker中使用16.04Ubuntu镜像 ,想要安装python3 ,添加add-apt-repository报错       这就需要安装   python-software-properties和software-properties-common   apt-get install python-software-propertiesapt-get install software-properties-common   安装完后 在执行  add-apt-repository ppa:jonathonf/python-3.6 即可

docker 安装postgres

docker的安装先忽略了,可以bd下,安装docker后,先下载镜像   下载镜像 docker pull postgres:12.1 下载后,基于此镜像启动一个容器 docker run --name postgres -e POSTGRES_PASSWORD=postgres -p5432:5432 -d postgres:12.1  

Mac OS psql: command not found 使用 psql 命令报错,psql命令不存在

打开一个命令窗口 输入一下命令,可以看到目录下对应版本的pg,我们进入这个目录下   ls /Library/PostgreSQL 查看目录下的文件,安装的每一项都是正确的,那我们在准备执行接下来的操作   执行pwd命令, 将路径复制一下,并保存到本地的环境变量中,即可   export PATH="/Library/PostgreSQL/11/bin:$PATH"        

教育学热点

复试期间,网上找的一些热点问题,有一些是学姐给的参考资料,也是未来教育技术的趋势和方向,以及人工智能在未来教育方向的应用; STEM 1.概念 STEM 是科学(Science)、技术(Technology)、工程(Engineering)和数学(Mathematics)四门学科的简称,强调多学科的交叉融合。STEM 教育并不是科学、技术、工程和数学教育的简单叠加,而是要将四门学科内容组合形成有机整体,以更好地培养学生的创新精神与实践能力。 2.特点 融合的 STEM 教育具备新的核心特征:跨学科、趣味性、体验性、情境性、协作、设计性、艺术性、实证性和技术增强性等。 (1)跨学科:跨学科意味着教育工作者在 STEM 教育中, 不再将重点放在某个特定学科或者 过于关注学科界限,而是将重心放在特定问题上,强调利用科学、技术、工程或数学等学科相互关联的知识解决问题,实现跨越学科界限、从多学科知识综合应用的角度提高学生解决实际问题的能力的教育目标。 (2)趣味性:STEM 教育强调分享、创造,强调让学生体验和获得 分享中的快乐感与创造中的成就感。有的项目还把 STEM 教育内容游戏化(将游戏的

idea 远程debug

一般情况下,我们的服务都是部署到公用服务器上面的,通常我们查问题  都是到服务器上看日志,步骤确实繁琐了点,但是也挺有效,不过,有事不想费那个劲,一点点看日志,没有debug来的快,这就需要我们远程debug,因为使用的ide是  IntelliJ IDEA 这里我只讲讲如何使用idea远程debug   1. 需要在你的远程服务器上添加一下jvm参数,并重启你的服务,其中address端口可以跟你自己的要求定义 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 2. 保证你本地的代码和服务上的代码是一致的 3. 点击Edit Configurations 4. 配置你的远程服务器   最后点击一下debug即可,然后请求你对应的地址,也就路由到你的本地了      

Mongo创建过期索引以及为何创建了过期索引不生效?

首先描述下业务场景      用户下单后,但是一直未支付,需要1天之后,自动删除该临时订单,这种功能有三种实现方式:        1) 是写个定时器,每分钟扫一下临时订单表,如果存在则根据创建时间计算下是否达到了24H        2)  每创建一个临时订单,则需要向另外一张表中写入一条数据,记录这比临时订单要删除的时间,还是定时器,扫这个时间,如果要删除的时间和当前时间大于这个时间,则删除掉临时订单        3) 利用数据库的过期索引,自动删除   当然对比三种方案,还是第三种比较适合且比较简洁,不需要自己开发大量代码去维护一堆要删除的数据 数据源是mongo就不用说了,我们先写个简单的例子,来讲解下   1. 首先创建collection db.createCollection("index4") 2. 在创建过期索引之前,需要拟定过期索引的key是什么,比如我这里起叫time,作为过期索引的key,那创建过期索引的语句为: db.index4.ensureIndex({"time": 1},{expireAfterSeconds: 30}) 以上索引的意思是,在coll

Nginx反向代理后获取的IP是127.0.0.1

我的服务是通过java写的,当然获取方式也是通过java来获取,当然其他服务获取的原理是一样的 都是从header头中获取这个ip 如果想看源代码的实际运用,可以移步到本博客的开源代码中去查看,在AccessStatisticInterceptor中会打印一下当前访问的远程ip是谁,最核心的原理,也就是从头信息中获取x-forwarded-for这个key   首先是nginx的配置 server { listen 80; server_name www.4klike.com; location / { proxy_pass http://4klike_01; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 404 =https://www.4klike.com/404; }

华为云Maven仓库、阿里云Maven仓库、腾讯云Maven仓库、网易云Maven仓库

最近整理了下最近经常使用的maven仓库镜像,目前找了3个国内对外开放的Maven仓库,分别是华为云,阿里云,网易云和腾讯云,先后顺序没啥意义哈   配置maven大家应该都知道如何配置吧,conf下的settings.xml 我一般都是复制好几个文件,用哪个,就删除原来的,用最新的顶替,如图,当然你可以将所有云的地址都写到mirrors中,这个也无所谓了   打开settings.xml,找到mirrors标签,在其中添加mirror,如图,当然可以添加多个 以下为所有云maven的地址   Maven 华为镜像仓库地址 仓库说明地址:https://mirrors.huaweicloud.com/   huaweicloud * https://mirrors.huaweicloud.com/repository/maven/   Maven 阿里云镜像仓库地址   仓库说明地址:https://maven.aliyun.com/mvn/guide alimaven central aliyun maven https://maven.aliyun.com/reposi

解决 413 Request Entity Too Large(请求实体太大)

上传文件时 老提示错误,后来看了下请求 提示413 原因是我上传的文件太大了,因为用了ng转了下,ng设置最大上限为10m,但是照片 已经大于10m了,所以提示这个,我们只需要将client_max_body_size设置的大一些就可以了,记得重启ng          

Mac 启动台(Launchpad)修改行数和列数

//killall Dock 可以执行完两条 defaults *** 后 在同一执行也可以// 设置一页显示多少行defaults write com.apple.dock springboard-rows -int 8//重启启动台生效killall Dock// 设置一页显示10列defaults write com.apple.dock springboard-columns -int 10//重启启动台生效killall Dock   设置一页显示10列 defaults write com.apple.dock springboard-columns -int 10 输入以上命令,执行后, 在执行    killall Dock 重启launchpad生效       设置一页显示多少行   defaults write com.apple.dock springboard-rows -int 8 输入以上命令,执行后, 在执行    killall Dock 重启launchpad生效  

RESTEASY003210 页面404,且IDEA 中类名前面有个黑色的叉

今天在开发中出现一个神奇的问题,  通过resteasy搭建的框架,同一个方法,同样的路径,在AController中可以正常访问(path=/A/retry),但是在BController中就无法访问(path=/B/retry),方法都一行,只是Controller的路径不一样而已,千调万调,就是一直404,后来发现了一个小问题,就是这个类下的所有接口我都无法访问,且都提示404,这就得说道说道了,然后各种找原因,最后,发现这个类上面有个叉     如图,就它自己有个X,其他的controller都能正常访问,就这一个不好用   解决方案:   打开属性,根据以下截图,将后面的类删除了就可以了