info

线程的生命周期/状态

亡梦爱人 提交于 2019-12-24 05:17:57
线程的生命周期或者说状态其实不复杂,但是很多人的理解可能有错误,一个典型的误区,线程运行时的状态是Runnable,而不是Running,因为线程没有Running状态。 线程的状态 1、New:已创建,没启动。还没有执行start() 2、Runnable:调用start()之后就处于Runnable,无论是否已经运行,都是Runnable状态,对应操作系统的Ready和Running状态。 3、Blocked:进入Synchronized修饰的方法或者代码块,但是无法获取锁,就处于Blocked。 4、Waiting:线程进入等待的阻塞状态,例如调用Object.wait()。 5、Timed-Waiting:线程进入计时等待的阻塞状态,例如调用Thread.sleep(time)。 6、Terminated:线程执行代码结束,或者出现未捕捉的异常。 PS:线程没有Running状态,请参考官方文档 :官方文档 线程的状态转换 从上图,可以明确看到状态如何进行转换,状态之间的变化是否可逆。。。 其实,从Waiting到Blocked状态可以可以的,当Waiting状态被唤醒之后,如果暂时没有获取到monitor锁,这时候就会进入Blocked状态,当获取锁之后,重新变成Runnable。Waiting和Timed-Waiting状态下在出现未捕获异常时

springboot 日志配置

久未见 提交于 2019-12-24 05:03:37
springboot 日志配置 ******************************* 日志配置文件说明 application.yml logging: config: #配置文件logback.xml位置 level: #形式为Map<String,String>,key为包或者类的全限定名,value为日志级别 file: name: #日志名称,默认为spring.log path: #日志路径,同时设置name、path,则path失效 max-size: #单个文件最大值,默认为10m max-history: #日志保存的最长时间,默认为7天 total-size-cap: #日志总大小,默认为0表示不设限 clean-history-on-start: false #启动时是否清除日志,默认不清除 pattern: console: #控制台日志输出格式,默认为"%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:

python零基础一

亡梦爱人 提交于 2019-12-24 04:37:51
“”" 1.安装软件 2.环境变量的配置 变量名 变量值 Path 应用程序所在的路径(可执行的应用程序 xxx.exe 所在的文件夹) 3.DOS常用命令的使用 3.1 盘符切换 盘符: 3.2 进入文件夹 cd 路径 3.3 展示文件夹 dir tree 3.4 清除屏幕 cls 3.5 自动补全名称 tab 4.变量 定义(在定义时,要给出初始值) 初始化 重新赋值 5.标识符(变量名) 要求: 可以有字母(包含中文),数字,下划线 数字不能开头,不能为系统的关键字,大小写敏感 关键字(保留字/敏感字) 35个 查看方式: import keyword print(keyword.kwlist) 如何更好的命名: 1.见名知意 2.驼峰命名法 大驼峰 MaxValue 小驼峰 maxValue 下划线连接 max_value python中的数据类型: 数值类型:bool,int,float,complex 字符串:str 复合类型:list,tuple,dict,set 运算符: 优先级以及结合性 数学运算符 + - * / // % ** 赋值运算符 简单的赋值 a = 1 复合的赋值 += -= *= /= %= **= //= a %= b ==>>> a = a % b 比较运算符 操作数(一般情况下,要求类型一致),比较结果(bool) > < >= <= ==

安装kenlm依赖时报Tomcat错误

自作多情 提交于 2019-12-23 21:55:21
报错信息如下: sudo apt-get install aptitude 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 将会同时安装下列软件: aptitude-common libcwidget3v5 建议安装: apt-xapian-index aptitude-doc-en | aptitude-doc debtags tasksel libcwidget-dev 下列【新】软件包将被安装: aptitude aptitude-common libcwidget3v5 升级了 0 个软件包,新安装了 3 个软件包,要卸载 0 个软件包,有 467 个软件包未被升级。 有 1 个软件包没有被完全安装或卸载。 需要下载 2,345 kB 的归档。 解压缩后会消耗 9,865 kB 的额外空间。 您希望继续执行吗? [Y/n] y 获取:1 http://mirrors.aliyun.com/ubuntu xenial/main amd64 aptitude-common all 0.7.4-2ubuntu2 [747 kB] 获取:2 http://mirrors.aliyun.com/ubuntu xenial/main amd64 libcwidget3v5 amd64 0.5.17-4ubuntu2 [292 kB] 获取:3

springboot学习(四) 日志管理

馋奶兔 提交于 2019-12-23 21:43:01
1、简介   Spring Boot内部日志系统使用的是Commons Logging,但开放底层的日志实现。默认为会Java Util Logging, Log4J, Log4J2和Logback提供配置。每种情况下都会预先配置使用控制台输出,也可以使用可选的文件输出。 2、日志格式   默认的日志输出格式为: 1 2018-01-20 19:31:23.317 INFO 93864 --- [ main] TestProperties : Starting TestProperties on ith PID 93864 (started by Administrator in 2 2018-01-20 19:31:23.318 INFO 93864 --- [ main] TestProperties : The following profiles are active: dev 3 2018-01-20 19:31:23.429 INFO 93864 --- [ main] o.s.w.c.s.GenericWebApplicationContext : Refreshing org.springframework.web.context.support.GenericWebApplicationContext@368f2016: startup date [Sat Jan

hadoop 常见错误汇总

杀马特。学长 韩版系。学妹 提交于 2019-12-23 15:58:29
对应Derby作为默认数据库的时候,多个shell 客户端就会挂掉,此时kill 掉hive 进程就可以, kill 命令: kill -9 `ps -ef |grep hive |awk '{print $2}' ` 1:Shuffle Error: Exceeded MAX_ FAILED_UNIQUE_FETCHES; bailing-out Answer: 程序里面需要打开多个文件,进行分析,系统一般默认数量是1024,(用ulimit -a可以看到)对于正常使用是够了,但是对于程序来讲,就太少了。 修改办法: 修改2个文件。 /etc/security/limits.conf vi /etc/security/limits.conf 加上: * soft nofile 102400 * hard nofile 409600 $cd /etc/pam.d/ $sudo vi login 添加 session required /lib/security/pam_limits.so 针对第一个问题我纠正下答案: 这是reduce预处理阶段shuffle时获取已完成的map的输出失败次数超过上限造成的,上限默认为5。引起此问题的方式可能会有很多种,比如网络连接不正常,连接超时,带宽较差以及端口阻塞等。。。通常框架内网络情况较好是不会出现此错误的。 2:Too many

Python基础学习——字符串、列表、元组、字典、集合

若如初见. 提交于 2019-12-23 12:39:41
  Python中文学习大本营: http://www.pythondoc.com/ 一、字符串操作 一、用途:名字,性格,地址 name = 'wzs' #name = str('wzs')print(id(name),type(name),name) 二、优先掌握的 1 # 优先掌握的 2 切片 顾头不顾尾 3 msg='hello world' 4 ##正向取值 5 print(msg[1:3]) 6 print(msg[1:10:2]) #哪 到哪 步长 7 print(msg[:]) 8 print(msg[::2]) 9 #反向取值 10 print(msg[::-1]) #步长可以为负值 11 print([]) 12 长度len 13 msg1 = 'qna ss' 14 print(len(msg1)) 15 16 成员运算 in和not in 17 msg = 'hello world' 18 print('he' in msg) 19 print('ho' not in msg) 20 21 移除空白(默认去掉字符串两端的空格)strip 22 password = 'alex3714 ' 23 ##可以不做赋值操作 24 print(password.strip()) 25 ##去掉指定的字符 26 msg2 = '*******eg**on*****'

面向对象之选课系统

烂漫一生 提交于 2019-12-23 11:13:46
import os import sys import pickle student_info = 'student_info' course_info = 'course_info' userinfo = 'userinfo' class Base: def __str__(self): return self.name class Course(Base): def __init__(self,name,price,period,teacher): self.name = name self.price = price self.period = period self.teacher = teacher def __repr__(self): return ' '.join([self.name, self.price, self.period, self.teacher]) class Person: @staticmethod def get_from_pickle(path): with open(path,'rb') as f: while True: try : stu_obj = pickle.load(f) yield stu_obj #防止全部读出、内存消耗过大 生成器 except EOFError: break def show_courses(self)

面向对象--选课系统作业

狂风中的少年 提交于 2019-12-23 11:13:16
1、readme 作业名称:选课系统 测试环境:win7系统,python3.7.0,工具:pycharm-community-2018.1.4 题目:选课系统开发,要求有四种角色:学校、学员、课程、讲师 详细要求: 1、创建北京、上海 2 所学校 2、创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开 #(管理员类创建课程、学校) 看大小什么属于什么 3、课程包含,周期,价格,通过学校创建课程 #(解读:管理员创建课程时通过学校类创建------继承方法) 4、通过学校创建班级, 班级关联课程、讲师 #(管理员创建班级时,继承学校类创建, 班级添加 课程、讲师属性) 5、创建学员时,选择学校,关联班级 # 创建学员,添加学校。为班级添加学员属性 6、创建讲师角色时要关联学校 # 创建讲师 ,为学校添加讲师属性 7、提供两个角色接口 8、为学员、讲师、管理员分别提供用户界面,并提供对应功能: (1) 学员视图, 可以注册, 交学费, 选择班级, (2) 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩 (3) 管理视图,创建讲师, 创建班级,创建课程 注1:上面的操作产生的数据都通过pickle序列化保存到文件里 注2:此作业必须画流程图,图中标注好不同类或对象之间的调用关系 说明

Linux DM9000网卡驱动程序完全分析

我是研究僧i 提交于 2019-12-23 09:27:15
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 说明1:本文分析基于内核源码版本为linux-2.6.31 说明2:本文在理解了linux中总线、设备和驱动模型的基础上加以分析代码 天猫爆款 联想 ibm ThinkPad E320 129862C 代替55C 笔记本 包邮 虽然Linux驱动程序应该是和具体的硬件平台分离的,但是为了更好的理解DM9000的驱动程序,这里还是结合一下Mini2440开发板,这样也可以更好的体会如何实现驱动和平台分离。 本文分成以下几个部分: 一、Mini2440开发板上DM9000的电气连接和Mach-mini2440.c文件的关系。 二、两个重要的结构体介绍:sk_buff和net_device 三、具体代码分析 一、Mini2440开发板上DM9000的电气连接和Mach-mini2440.c文件的关系 Mini2440开发板上DM9000与S3C2440的连接关系如下: 其中片选信号AEN使用了nGCS4,所以网卡的内存区域在BANK4,也就是从地址0x20000000开始。DM9000的TXD[2:0]作 为strap pin在电路图中是空接的,所以IO base是300H。中断使用了EINT7。这些内容在Mach文件中有如下体现: [c-sharp] view plain copy #define S3C2410