java基础知识点
什么是 JavaJava 是一门面向对象编程语言,不仅吸收了 C++ 语言的各种优点,还摒弃了 C++ 里难以理解的多继承、指针等概念,因此 Java 语言具有功能强大和简单易用两个特征。Java 语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
jdk1.5 之后的三大版本
Java SE(J2SE,Java 2 Platform Standard Edition,标准版)Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java EE 和 Java ME 提供基础。
Java EE(J2EE,Java 2 Platform Enterprise Edition,企业版)Java EE 以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来 ...
spring知识点
什么是 spring?Spring 是一个轻量级 Java 开发框架,最早有 Rod Johnson 创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的 JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发 Java 应用程序提供全面的基础架构支持。Spring 负责基础架构,因此 Java 开发者可以专注于应用程序的开发。
Spring 最根本的使命是解决企业级应用开发的复杂性,即简化 Java 开发。
Spring 可以做很多事情,它为企业级开发提供给了丰富的功能,但是这些功能的底层都依赖于它的两个核心特性,也就是依赖注入(dependency injection,DI)和面向切面编程(aspect-oriented programming,AOP)。
为了降低 Java 开发的复杂性,Spring 采取了以下 4 种关键策略
基于 POJO 的轻量级和最小侵入性编程;
通过依赖注入和面向接口实现松耦合;
基于切面和惯例进行声明式编程;
通过切面和模板减少样板式代码。
Spring 框架的设计目标,设计理念,和核心是什 ...
java-metaspace
介绍Java 类在 Java Hotspot VM 中有一个内部表示,称为类元数据,里面存放了class信息。在 Java Hotspot VM 之前的版本中,类元数据是在所谓的永久代生成中分配的。在 JDK 8中,永久代 被删除,元数据在本地内存(直接内存)中分配。默认情况下,可用于元数据的本机内存量是无限的(实际最大是本地最大可用内存)。使用 MaxMetaspaceSize 选项对用于类元数据的本机内存量设置上限。
为了避免为元数据空间太小导致的垃圾收集(FullGC),我们应该给 MetaspaceSize 选项设置一个比较高的值。为应用程序分配的类元数据量与应用程序相关,不存在用于选择 MetaspaceSize 的通用准则。MetaspaceSize 的默认大小依赖于平台,范围从12 MB 到大约20 MB。
当卸载相应的 Java 类时,类元数据被释放。由于垃圾收集,Java 类被卸载,为了卸载类和释放类元数据,就会进行FullGC。当为类元数据提交的空间达到某个级别(高水平标记)时,将导致垃圾收集。在垃圾收集之后,可以根据从类元数据中释放的空间量提高或降低高水平标记。将 ...
hexo 内容渲染为空问题
如果使用的node版本大于12,并且hexo版本是4.2.0及其以下,在使用 hexo g 生成静态页面的时候,会发现生成的内容全部为空,要想解决这个问题需要升级一下hexo版本到 4.2.1 及其以上,因为4.2.0不兼容node最新版本。
issue见渲染问题。
另一种解决方法是降低node版本,可以使用 12 这个版本同样可以解决(网友测试)。
Java内存模型
概述Java内存模型(Java Memory Model,简称 JMM)定义了线程如何通过内存进行交互,换句话说就是,Java内存模型规范了不同线程如何以及何时可以看到其他线程写入共享变量的值,以及在必要时如何同步对共享变量的访问。
注意跟Java内存管理的区别,这个后面会再单独开一篇去说。
JMM 要解决的问题有了多线程后,相比单核单线程的情况就发生了不小的变化。从逻辑上划分可分为线程工作内存和主内存,如图:
线程之间变量的可见性问题JVM 内有一个主内存,JMM规范规定了所有的的变量都分配在主内存中;每个线程都有自己的内存空间,线程自己用到的变量会拷贝一份副本到自身的工作内存中。
线程之间的变量相互之间不可见,如果想要通信(更新数据),必须要将更新的变量的新值写到主内存上。
那么问题来了,当线程1修改了变量V的时候,线程2如果没有感知到变化,那么看到的数据仍然是自己拷贝的那一份,这就导致了两个线程看到的数据不一致。
指令重排序问题Java 中重排序通常是编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序执行的一种手段。
重排序分为两类:编译期重排序和运行期重排序,分别对 ...
递归查找的问题
背景前几天在开发过程中遇到一个需求,前端需要动态渲染一个菜单,这个菜单是一个树状结构,就是每个菜单中可能有多个子菜单,子菜单中又有子菜单,同时呢,每个菜单都可以单独绑定一个页面。为了加速前端加载页面和渲染速度,后端一次性将整个菜单和页面信息用树形结构返回给前端,结构大概如下(主菜单不算在后端返回的数据中,只是前端的一个入口,黄色虚线框中的数据才是真正需要的):
转化为树结构:
后端将如上数据结构返回给了前端,前端需要将其加载为树型结构。
同时另一个需求是点击某个菜单,如果有页面那么就直接展示其对应的第一个也没,如果没有需要继续找子菜单的第一个页面,都没有那就不显示页面。
按照上图所展示的数据,那么,如果点击 主菜单,那么需要战士 页面1-1-1-P1,也就是红色展示的部分;如果点击 菜单2 那么需要展示 页面2-P1,也就是绿色展示的部分。
实现需求有了,数据也有了,那么我们考虑实现方式。
首先这个是树,如果加上主目录的话,算是1棵有多个节点的数;如果不算主目录那么算是多棵树。
不管是1棵树,还是多棵树的方式考虑,都是采用深度优先遍历的,这里呢我们按照多棵树遍历的方式使用js实现了 ...
docker镜像加速
在国内网络环境下使用docker,pull 镜像的时候基本就是很慢,甚至直接网络连接超时,如果有国内镜像加速,那么pull的速度会非常快。
现在docker镜像加速效果比较好的有阿里云和华为云。我个人现在主要使用华为云镜像加速,下面介绍华为云加速配置方式。
安装docker-ceCentOS 配置
若已经安装过docker,需要先删掉,之后再安装依赖
12sudo yum remove docker docker-common docker-selinux docker-enginesudo yum install -y yum-utils device-mapper-persistent-data lvm2
根据版本不同,下载repo文件。您使用的发行版
1wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo
替换软件仓库地址
1sudo sed -i 's+download.docker.com+ ...
使用 IoTOS 搭配 tio 接入存量物联网设备
概述目前包括 BAT、华为等主流物联网云服务都内置自己的标准数据格式,均面临存量物联网设备接入的难题。氦氪 IoTOS 作为一款对标各大品牌的物联网数据中台私有化产品,也面临同样的问题。
tio(点击访问) 国内著名的网络开发框架。
本文将基于氦氪长期的实践经验,来讲述 IoTOS 搭配 tio 解决存量设备接入的具体思路和方法。
注:通过边缘网关接入的情况不属于本次讨论范畴,若关注这方面的内容,可翻看之前的博客文章《网关采集 ModBus 温度传感器数据传输到 IoTOS 实例》。本次讨论的部分只限于如下图红框处:
为什么存量设备接入是难题?协议栈复杂首先,“协议”这个词个人认为现在已经被使用地过于泛滥,好像所有协议都处于同一个层面,而实际上并非如此。参考下图,大家能看出来物联网协议栈其实非常复杂。
从下到上依次为:
通信方式:Wi-Fi、GPRS、5G等
网络协议:IPV4、IPV6等
传输协议:TCP、UDP
应用协议:MQTT、CoAP、LwM2M、HTTP等
数据格式:ALink(阿里云)、HLink(华为)、KLink(氦氪)、私有 JSON、私有 HEX、私有 XM ...
网关采集 Modbus 温度传感器数据传输到 IoTOS 实例
概述氦氪 IoTOS 是一款物联网数据中台产品,可覆盖 BAT、华为物联网云服务的绝大部分功能,可接入市面上大多数硬件网关。而 Hekr Gateway204 作为一款搭载氦氪物联网边缘计算操作系统 EdgeOS 的工业网关,自然可以和 IoTOS 无缝对接。
本文对 Hekr Gateway204 采集 Modbus 温度传感器数据并上传到 IoTOS 这样一个最简单的对接实例进行介绍。
实现目标
采集温度数据上报到 IoTOS
IoTOS 展示实时温度曲线
IoTOS 发送超温报警到第三方应用
配置前准备
在 IoTOS 上注册账号
Hekr Gateway204 硬件网关一台(包括配套电源)
Modbus 温度采集控制器及传感器一套(包括配套电源)
网线一根、485双绞线一根
对接流程
平台配置:登陆 IoTOS 并创建网关和温度传感器的产品物模型,并创建设备信息(三元组,鉴权使用)
网关配置:登陆网关配置页面进行配置网关及协议参数
设备连接:将网关接入网络,并将网关与温度采集控制器及传感器的对应接口相连接
数据查看:在 IoTOS 上查看上下行数据、指标趋势和聚合趋势
报 ...
实用Chrome插件
uBlock Origin一款高效的网络请求过滤工具,占用极低的内存和 CPU。说白了就是一个功能强大的广告过滤插件。
KeePassHttp-Connectorkeepweb 的浏览器插件,可以自动加载keepweb的表单数据自动完成填写。
Proxy SwitchyOmega轻松快捷地管理和切换多个代理设置。对于实用代理的人来说非常实用。
备用下载地址
超级简单的自动刷新简单的自动刷新网页工具,解放您的F5按钮,只需单击一次就开始刷新,您也可以自定义刷新时间。
fehelperJSON自动格式化、手动格式化,支持排序、解码、下载等,更多功能可在配置页动态安装!
官网
steward-plus启动器/便捷管理扩展/应用/标签/历史记录等
官网
沙拉查词-聚合词典划词翻译Saladict 沙拉查词是一款专业划词翻译扩展,为交叉阅读而生。大量权威词典涵盖中英日韩法德西语,支持复杂的划词操作、网页翻译、生词本与 PDF 浏览。
官网
项目主页
简悦阅读模式独有功能,通过提取 标题 · 描述 ·正文 · 媒体 图片 / 视频 等资源生成符合中文阅读习惯的页面,具有零干扰 · 沉浸式特点,适合 ...