Other

JS

Java 部分需要掌握的知识点: 1. typeof 变量的数据类型可以使用 typeof 操作符来查看: typeof John // 返回 stringtypeof 3.14 // 返回 numbertypeof false // 返回 booleantypeof [1,2,3,4] // 返回 objecttypeof {name:'John', age:34} // 返回 object typeof 一个没有值的变量会返回 undefined   任何变量都可以通过设置值为 undefined 来清空。 类型为 undefined. 在 JavaScript 中 null 表示 什么都没有。 null是一个只有一个值的特殊类型。表示一个空对象引用。 null 和 undefined 的值相等,但类型不等: typeof undefined // undefinedtypeof null // objectnull === undefined // falsenull == undefined // true 2.

处理机管理——预防死锁

破坏互斥条件: 将临界资源改造为可共享使用的资(如SPOOLing技术) 缺点:可行性不高,很多时候无法破坏互斥条件 破坏不剥夺条件: 方案一,申请的资得不到满足时立即释放拥有的所有资源 方案二,申请的资被其他进程占用时,由操作系协助剥夺(考虑优先级) 缺点:实现复杂;剥夺资可能导致部分工作失效; 反复申请和释放导致系统开销大;可能导致饥饿 破坏请求和保持条件: 运行前分配好所有需要的资源,之后一直保持 缺点:资源利用率低;可能致饥饿 破坏循环等待条件: 给资源编号,必须按编号从小到大的顺序申请资源 缺点:不方便增加新设备;会导致资浪费;用户编程麻烦

浅析Java中的国际化

Internationalization 软件国际化,通俗的讲就是企业开发的软件可以在多个不同的语言环境下方便使用,通常也被简称为i18n,因为Internationalization 中间有18个单词,通理的还有K8S之类的简称。 Java中对于软件国际化的支持主要是通过Locale类来实现的。Locale类有一个很重要的构造器: Locale(String language, String country) 从参数可以看出,构造一个代表特定语言环境的Locale需要传入语言和国家编码,前者的定义来自于IANA的定义,具体查找某个国家的语言可以在 IANA SUBTAG LANGUAGE 中查找,Type: language 是语言编码,Type: region 是国家编码。Java中默认给我们提供了很多示例: 如: TAIWAN 中国台湾地区 CHINA 中国大陆地区 US 美国地区 如何为应用设置默认使用的语言环境呢?Java给我们提供了一个API,即 Locale.setDefault(Locale newLoce) 有了代表某个地区的Locale类,那么它如何和我们日常开发的软件结合起来使用呢?这里就引申出了另外一个类 ResourceBundle,ResourceBundle可以和一个Locale相关联,用来表示特定地区的资源。 使用方式如下:baseName代表的是Resource Bundle的基础名称,如图中的 exception。 ResourceBundle bundle = ResourceBundle.getBundle(exception); 在项目开发中通常会将这种信息资源定义为一个properties文件,实际上就是通过简单的key=value对实现键值对映射。 除了上面的两个类之外,通常还一起搭配使用的还有MessageFormat类,它是用来做信息格式化的。它也会关联一个Locale对象,通过在待格式化的字符串中留下{0}、{1}等占位符,然后通过 format(String value, Object...arguments) 进行格式化即可。

读别人的故事 写自己的人生 凡尘俗事 且行且珍惜

不知道你有没有发现,其实我们也是活在故事里。而且我们只是不起眼的配角,这世界上可以当我们没有来过。 从小学开始,我们都在读别人的故事。还记得小时候读的第一首诗,《咏鹅》鹅鹅鹅,曲项向天波,白毛浮绿水,红掌拨清波。那时老师告诉我们,这首诗是一个和我们一样大的孩子写的,可是当时的我根本不相信,人啊!有时候很天真。也很自傲,总以为自己才是世界的中心。认为自己做不到的事情,别人也无法做到。 现在想想真是傻的可以。 直到后来才知道,老师并没有欺骗我们。这时候的我又想,人家七八岁就能作诗,我已经十几岁了。也可以能写出诗篇。我是一个言出必行的人,说干就干。直到现在我还记得我写的第一首打油诗,那应该是五年级的时候。 同学 风吹树叶落,一班好同学。 七月分别后,八月来会合。 现在想想,那真是一段不悔的少年时光。读着骆冰王的诗词,学着他的样子写诗。虽然那个时候根本就不知道诗是什么东西,只要念着顺口就行。 现在,勉强懂了一些诗词韵律,拙作一首,献丑勿笑。 江柳 柔嫩枝条两岸新,东君尤爱细腰身。 含烟摇绿长堤水,带露催生南浦春。 雨送別舟伤路远,花飞满地叹离频。 此情自古寻常道,折尽相思好诣人。 后来大了一点,经常听长辈们讲很多英雄故事,以前特别喜欢听外公给我讲隋唐演义的故事,讲杨坚登上皇位,讲杨广杀兄父,轻薄母妃。但是最喜欢听说秦琼救李世民的那一段,话说玄武门之变,秦王李世民的哥哥和弟弟想要杀他,准备将它引入玄武门,痛下杀手。然后逼迫父皇退位,这样他们就可以掌控江山。李世民带着仅有的几位亲信,进入玄武门。早有准备的太子和齐王,双面合兵,将秦王李世民等人团团围住,一声令下,数千兵勇用向他们涌过来,秦王及几位亲信,虽有武功。奈何双拳难敌四手。眼看他就要死在乱剑之下,在这千钧一发之际,秦琼如同神兵天降,手持双剑,带领救兵冲入敌阵,终救得秦王李世民。功高莫过于救主。而且秦琼救了李氏两位皇帝。更是功大于天。秦王李世民也没有亏待过他,赐给他高官厚禄,永享富贵。还把女儿嫁给他的儿子,和他结为儿女亲家。正是如此,君臣不相负,方有大唐之贞观之治。 那时的年少轻狂,我想自己也能做像秦琼那样的英雄。拯救明主,封得高官厚禄,为此,遇事总喜欢出头,小时候都不知道打了好多少架。因为胆子大,敢出头。所以在众人眼中,严然一副孩子王的派头。还口出狂言,告诉和自己玩得好的人,被别人欺负了,就报自己的名字。保管你没事。 常在河边走,哪有不湿鞋。山外青山楼外楼,强中自有强中手。这时候的我才明白,原来英雄也不是那么好当的。 懵懂烂漫的少年岁月,不悔的人生体验。 在情窦初开的年龄,总会去追寻一些情感书籍,我记得我看的第一本关于情感的书籍应该是《红楼梦》,其实开始的时候不知道他是写什么的,只是老师说考试要考四大名著,所以才去读。一读就深陷其中,对故事中的人物更是痴迷,特别羡慕贾宝玉,身边有那么多美女陪伴,那个时候特别欣赏林黛玉,欣赏它的不拘一格,欣赏她的敢爱敢恨。非常希望他能和贾宝玉在一起。而对薛宝钗这个名门闺秀,一点都不感兴趣。结局看到贾宝玉和薛宝钗成亲,黛玉也因此死去。特别为林黛玉的死鸣不平,总是认为只有林黛玉才配得上贾宝玉,只有他们才是同路人。 现在才明白,原来薛宝钗才是贾宝玉的最佳良配没有薛宝钗的勤俭持家,贾家倒台以后,贾宝玉可能也会不知所踪。 其实我们都有同一样的想法,恋爱的时候想找一个林黛玉一样的女孩子。结婚的时候想找一个像宝钗一样的闺秀。 所以我经常说,在谈恋爱的年龄,要尽量的多谈几次。因为结婚之后,你要照顾属于你自己的爱情和家庭。没有时间去疯狂,没有精力去玩耍。结婚之后,就不能再去想再去做那些曾经谈恋爱的时候才能去想才能去做的事情。 跨越记忆的时空,读着那些别人的故事,回忆自己的人生经历。写着属于自己的独特故事。 合上笔盖,嘴角微微上扬。今天又是美妙的一天。

设计模式之建造者模式

背景: 当一个类的构造函数参数个数超过4个,而且这些参数有些是可选的参数,考虑使用构造者模式。  当一个类的构造函数参数超过4个,而且这些参数有些是可选的时,我们通常有两种办法来构建它的对象。 例如我们现在有如下一个类计算机类Computer,其中cpu与ram是必填参数,而其他3个是可选参数,那么我们如何构造这个类的实例呢,通常有两种常用的方式: public class Computer { private String cpu;//必须 private String ram;//必须 private int usbCount;//可选 private String keyboard;//可选 private String display;//可选 } 第一:折叠构造函数模式(telescoping constructor pattern ),这个我们经常用,如下代码所示 public class Computer { ... public Computer(String cpu, String ram) { this(cpu, ram, 0); } public Computer(String cpu, String ram, int usbCount) { this(cpu, ram, usbCount, 罗技键盘); } public Computer(String cpu, String ram, int usbCount, String keyboard) { this(cpu, ram, usbCount, keyboard, 三星显示器); } public Computer(String cpu, String ram, int usbCount, String keyboard, String display) { this.

shell脚本三剑客:grep、sed、awk

shell脚本三剑客:grep sed awk grep语法: grep [OPTIONS] PATTERN [FILE] 常用选项 -c 统计匹配到的行数 -i 匹配时不区分大小写-n 显示匹配行所在行号-o 只显示匹配到的字符串-v 取反,反方向匹配,不匹配关键字的行-E 开启扩展的正则表达式-A n 显示匹配的所在的行及其后n行-B n 显示匹配的所在的行及其前n行-C n 显示匹配的所在的行及其前后各n行  例:查看ifconfig ens33,并选择关键字进行匹配,然后显示匹配到多少行,如果显示2行,说明有2行的内容包括这个关键字。   显示关键字所在的行号:-n  取反,反方向匹配,不匹配关键字的行:-v      显示匹配的所在的行及其后n行:-An 显示ifconfig ens33的结果并以192.168.100.30作为检索关键字提取所在行及后5行,后6行。  显示匹配的所在的行及其前n行:-Bn 显示ifconfig ens33的结果并以TX errors作为检索关键字提取所在行及前5行,以RX errors作为检索关键字提取所在行及前5行,若匹配行数多于实际行数则显示匹配行及前面所有行。    显示匹配的所在的行及其前后n行:-Cn 以RX packets为关键字,匹配关键字所在行及上下三行。    过滤空行:grep -v '^$'    字符出现次数: * 前面的字符出现任意次,包括0次 \? 前面的字符出现0次或1次,\为转义符 \+ 前面的字符至少出现一次 \{m\} 前面的字符出现m次,\为转义符 \{m,\} 前面的字符至少出现m次,\为转义符

Kafka 生产者源码

2.1 初始化 2.1.1 程序入口 从用户自己编写的 main 方法开始阅读 package com.atguigu.kafka.producer; import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerConfig; import org.apache.kafka.clients.producer.ProducerRecord; import org.apache.kafka.common.serialization.StringSerializer; import java.util.Properties; import java.util.stream.IntStream; public class CustomProducer { public static void main(String[] args) { // 1. 创建 kafka 生产者的配置对象 Properties properties = new Properties(); // 2. 给 kafka 配置对象添加配置信息:bootstrap.servers properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, hadoop102:9092); // key,value 序列化(必须):key.serializer,value.serializer properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); // 3. 创建 kafka 生产者对象 try (KafkaProducer<String, String> kafkaProducer = new KafkaProducer<>(properties)) { // 4. 调用 send 方法,发送消息 IntStream.

Helm 应用管理部署

Kubernetes 包管理器 简介: 官网 https://helm.sh/zh/docs https://www.qikqiak.com/k8strain2/helm https://github.com/helm/helm/releases 应用中心 https://artifacthub.io helm ui管理 https://kubeapps.com 二进制部署 https://helm.sh/zh/docs/intro/quickstart https://github.com/helm/helm/releases wget https://get.helm.sh/helm-v3.6.0-linux-amd64.tar.gz tar xf helm-v3.6.0-linux-amd64.tar.gz mv linux-amd64/helm /usr/local/bin/ 本地脚本直接部署 curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh 直接运行安装 curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash 命令行自动补全 1、临时生效 source <(helm completion bash) 2、写配置文件 echo source <(helm completion bash) >> ~/.bash_profile 3、bash-completion添加配置 helm completion bash > /usr/share/bash-completion/completions/helm 4、添加helm仓库 helm repo add bitnami https://charts.bitnami.com/bitnami 5、查看所有仓库

695. 岛屿的最大面积(BFS)

695. 岛屿的最大面积 给你一个大小为 m x n 的二进制矩阵 grid 。 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。 岛屿的面积是岛上值为 1 的单元格的数目。 计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0 。  示例 1:  输入:grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0], [0,1,1,0,1,0,0,0,0,0,0,0,0], [0,1,0,0,1,1,0,0,1,0,1,0,0], [0,1,0,0,1,1,0,0,1,1,1,0,0], [0,0,0,0,0,0,0,0,0,0,1,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0], [0,0,0,0,0,0,0,1,1,0,0,0,0]] 输出:6解释:答案不应该是 11 ,因为岛屿只能包含水平或垂直这四个方向上的 1 。 示例 2: 输入:grid = [[0,0,0,0,0,0,0,0]] 输出:0  提示: m == grid.length n == grid[i].length 1 <= m, n <= 50 grid[i][j] 为 0 或 1 1 class Solution { 2 public: 3 static constexpr int g_direciton[4][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}}; // 上、左、下、右四个方向 4 void bfs(vector<vector<int>> &graph, int x, int y, vector<vector<bool>> &visited, int &cnt) { 5 int row = graph.

halcon-实例:根据颜色提取想要的对象

实例目的:提取最上面黄色的线 在HDevelop中 dev_close_window () read_image (Image, 'D:/bb/tu/8.png') get_image_size (Image, Width, Height) decompose3 (Image, Red, Green, Blue) *将RGB三通道数据转化为HSV色彩空间的三通道图像数据 *HSV:看https://blog.csdn.net/xiaoyafang123/article/details/113029596 trans_from_rgb (Red, Green, Blue, Hue, Saturation, Intensity, 'hsv') 对HSV图像中的饱和度通道进行阈值操作 threshold (Saturation, HighSaturation, 200, 255) *获取上述阈值操作后区域中的色调通道图像数据 reduce_domain (Hue, HighSaturation, HueHighSaturation) *对上述色调通道图像数据进行阈值处理 threshold (HueHighSaturation, Yellow, 20, 30) *寻找连通域 connection (Yellow, ConnectedRegions) *保留ConnectedRegions里的最大的区域 select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 0) *对SelectedRegions进行闭运算操作 closing_circle (SelectedRegions, Yellow, 3.5) *将Yellow区域里的图像剪切出来 reduce_domain (Image, Yellow, ImageReduced) dev_open_window(10,10,Width, Height,'black',WindowHandle) dev_display(ImageReduced)   在Qt Creator中 HObject ho_Image, ho_Red, ho_Green, ho_Blue; HObject ho_Hue, ho_Saturation, ho_Intensity, ho_HighSaturation; HObject ho_HueHighSaturation, ho_Yellow, ho_ConnectedRegions; HObject ho_SelectedRegions, ho_ImageReduced; HTuple hv_Width, hv_Height, hv_WindowHandle;   ReadImage(&ho_Image, D:/bb/tu/8.