多线程面试题1
题目案例已知一个业务查询操作涉及 3 个 RPC 服务调用 : query1, query2, query3, 其中query1 耗时约 1 秒, query2 耗时约 0.5 秒,query3 耗时约 0.6 秒,且query3查询条件依赖 query2 的查询结果.请编写代码,使该业务查询总体耗时最小:
考察点 1:异步考察点 2:多线程并发控制
解题思路:主要考察知识点异步和多线程控制。
如果采用串行执行,query1+query2+query3 总耗时为 2.1 秒。
采用多线程异步并行执行,使用线程 A 请求 query1,同时使用线程 B 请求query2后再请求 query3(query3 依赖 query2 结果只能串行执行),这样总耗时是 min(1, 0.5+0.6) = 1.1 秒。
需要熟悉 join, CountDownLatch 等线程协调控制方法,如果考生使用线程池则更佳
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474 ...
java多线程笔记
1. 简述线程,程序、进程的基本概念。以及他们之间关系是什么?线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。
程序是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。
进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。简单来说,一个进程就是一个执行中的程序,它在计算机中一个指令接着一个指令地执行着,同时,每个进程还占有某些系统资源如CPU时间,内存空间,文件,文件,输入输出设备的使用权等等。换句话说,当程序在执行时,将会被操作系统载入内存中。
线程 是 进程 划分成的更小的运行单位。线程和进程最大的不同在于基本上各进程是独立的,而各线程则不一定,因为同一进程中的线程极有可能会相互影响。从另一角度来说,进程属于操作系统的范畴,主要是同一段时间内,可以同时执行 ...
centOS7 docker私有仓库及DockerMaven插件使用
私有仓库的搭建与配置
拉取私有仓库镜像
1docker pull registry
启动私有仓库
1docker run --name=registry -p 5000:5000 -v /home/docker/registry/:/var/lib/registry -d registry
参数说明
–name 容器名称-p 宿主机端口:容器端口-v 挂载文件目录-d 指定镜像
打开游览器输入地址http://你的服务器IP:5000/v2/_catalog看到{"repositories":[]}表示私有仓库搭建成功并且内容为空(需要开放服务器端口)
修改daemon.json,添加以下内容
{ “registry-mirrors”: [“https://3olr1zha.mirror.aliyuncs.com"], "insecure-registries": ["你的服务器IP:5000"]}
123vim /etc/docker/daemon.json#添加之后,保存退出,再重载配置systemctl daemo ...
Docker 修改镜像容器的时区
Docker 修改时区出现场景Mysql时间慢8小时 ,日志打印显示的时间慢8小时,数据库时间,nginx时间等等。。
出现原因在 Docker Hub 中的官方镜像中,时区是使用了世界标准时间(UTC)。因为在中国使用,所以需要把时区改成东八区的。
解决方法1. 修改运行容器时区(不能删除,不用dockerfile情况)
9a785c29ed24 为容器的CONTAINER ID
首先进入正在运行的容器
1docker exec -it 9a785c29ed24 /bin/bash
复制软连接文件
1cp /usr/share/zoneinfo/PRC /etc/localtime
查看时区是否已经更改
1date
时间与宿主机一样,就可以退出,并重启容器了
1docker restart 9a785c29ed24
若此方法不行,就先通过 tzselect 设置选定Hong Kong时区依次选 4) Asia > 13) Hong Kong > 1) Yes
2.随意操作情况dockerfile中设置时区Dockerfile中加入以下代码
12ENV TZ ...
VuePress搭建个人博客(用腻了hexo、jekyll)
介绍VuePress 由两部分组成:一个以 Vue 驱动的主题系统的简约静态网站生成工具,和一个为编写技术文档而优化的默认主题。它是为了支持 Vue 子项目的文档需求而创建的。
由 VuePress 生成的每个页面,都具有相应的预渲染静态 HTML,它们能提供出色的加载性能,并且对 SEO 友好。然而,页面加载之后,Vue 就会将这些静态内容,接管为完整的单页面应用程序(SPA)。当用户在浏览站点时,可以按需加载其他页面。
特性
内置 markdown 扩展,针对技术文档进行了优化
能够利用内嵌在 markdown 文件中的 Vue 代码
以 Vue 驱动的自定义主题系统
PWA 支持
Google Analytics 集成
一个默认主题:
响应式布局
可选的主页
简单、开箱即用、基于标题的搜索功能
可定制的导航栏和侧边栏
自动生成的 GitHub 链接和页面编辑链接
安装首先需要如下环境:
node.js
123检查安装版本$ node -vv8.10.0
全局安装VuePress
我这里使用的是淘宝的镜像,原npm是国外的,由于国内的不可抗拒力速度很慢。安装淘宝镜像 ...
nginx指定用户报错"nginx:[emerg] getpwnam"
创建nginx用户和nginx组在创建nginx用户的时候,出现错误:nginx: [emerg] getpwnam(“nginx”)failed in /usr/local/nginx/conf/nginx.conf:2
配置nginx 找到nginx安装目录下的 /conf目录下的nginx.conf1vim conf/nginx.conf
在配置第一行,设置用户这里我设置用户为“nginx”123456user nginx;worker_processes 1;error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;
:wq 保存退出。重载nginx配置文件1./sbin/nginx -s reload
信心满满,很简单嘛,一回车发现报错了1nginx: [emerg] getpwnam("nginx") failed in /usr/local/nginx/conf/ng ...
CentOS搭建ngrok服务器与客户端应用程序
安装go语言,安装git1yum -y install build-essential golang mercurial git
下载ngrok源码
代码目录结构如下:
生成证书 ,并编译一个携带该证书的ngrok客户端域名用自己的替换下面的wx.yzblog.xyz,同时在域名解析中增加A记录指向自己这台服务器IP
123456789101112NGROK_DOMAIN="wx.yzblog.xyz"openssl genrsa -out base.key 2048openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pemopenssl genrsa -out server.key 2048openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csropenssl x509 -req -in server. ...
SpringBoot中ApplicationListener使用方法及问题
编写初始化操作类实现接口ApplicationListener,并重写public void onApplicationEvent(ApplicationEvent event) {}可以在容器初始话的时候执行这个方法。
会存在一个问题,在web 项目中(spring mvc),系统会存在两个容器,一个是root application context ,另一个就是我们自己的 projectName-servlet context(作为root application context的子容器)。就会造成onApplicationEvent方法被执行两次。为了避免上面提到的问题,我们可以只在root application context初始化完成后调用逻辑代码,其他的容器的初始化完成,则不做任何处理,所以加入判断:if (event.getApplicationContext().getParent() == null){...}
1234567891011121314151617181920package com.yzeng.init;import o ...
看了不一定会,不看肯定不会系列
资源分享资源均来源于网络
Java基础
Java马士兵:链接:https://pan.baidu.com/s/1jJRvxGi密码:v3xb
Java毕向东:到往B站找,已上传到B站(Java3y)
Java刘意:链接:https://pan.baidu.com/s/1kVZQCqr密码:34lw
JavaSE基础:链接:https://pan.baidu.com/s/1FGUKwY30T_A3cmAikIzPQQ 密码:st7h
Java数据结构:链接:https://pan.baidu.com/s/1mjv3ovu密码:bx0s
java面试题链接:https://pan.baidu.com/s/11kMLiU8SN8jBjKlQ9rHDRA 密码:3ddq
BAT面试题链接:链接:https://pan.baidu.com/s/1tFUhZ3ucGF6ipUSSvMk0rg 密码:xy2a
更新
一、20天横扫Java基础(课堂实录) https://pan.baidu.com/s/1htTzZRQ
二、尚硅谷Java基础实战——Bank项目 http://pan.b ...
mysql字符集问题:Illegal mix of collations
数据库中查询报错:1Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=';
更改mysql的my.ini,把client和server的字符集改为utf8
更改表以及字段的的字符集为utf8
Illegal mix of collations 处理方法12ALTER TABLE so_publish_rule CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;ALTER TABLE so_video_file_deploy CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
查看Mysql当前使用的字符集:提供以下三种12345show variables like '%char%';show table status from datebase like ' ...