5 安_shuai

尚未进行身份认证

每天进步一点点

等级
TA的排名 1w+

JAVA并发编程-线程的生命周期

每一个线程都有自己的局部变量表,程序计数器,以及生命周期等。本文主要从各种状态介绍线程的生命周期转换通过上图可知,线程的生命周期答题可以分为以下5个主要的阶段1、NEW当我们用关键字new一个Thread对象的时候,此时它并不处于执行状态,因为没有调用start方法启动该线程,那么线程的状态为NEW状态,准确的说,它只是Thread对象的状态,因为在没有start之前,该线程根本不存在,与用关键字new一个普通的java对象没有任何分别 NEW状态通过start方法进入RUNNAB..

2020-05-24 18:51:07

Java并发编程-创建线程

本文简单介绍下在Java中如何创建线程,创建线程的方式。目录一、尝试并发运行二、尝试运行交替输出三、创建线程的方式一、尝试并发运行package com.andy.concurrent.chapter01;import java.util.concurrent.TimeUnit;/** * 尝试并发测试类 * @author Andy * @date 2020/5/24 16:33 */public class TryConcurrency { ...

2020-05-24 17:03:31

Java并发编程-认识线程

在计算机的世界里,我们探讨并行的时候,实际上是指,一系列任务在计算机中同时运行,比如在浏览网页的时候还能打开音乐播放器,在撰写邮件的时候,收件箱还能收到新的邮件。在单CPU的计算机中,其实没有真正的并行,它不过是CPU时间钟快速轮转调度带给你的错觉,而这种错觉让你产生了它们真的是在同一时刻同时运行,简而言之就是:“宏观上同时运行,微观上走走停停”。当然如果是多核CPU,那么并行运行还是真实存在的。 一、操作系统中为什么会出现进程?说起进程的由来,我们需要从操作系统的发展历史谈起。...

2020-05-24 14:11:15

工程实践:如何规范地打印程序日志?

工程实践:如何规范地打印程序日志? 很久之前,有个朋友问我,如果一个老项目让你接手去进行后续维护,你会先从哪里入手、让自己更快地上手项目?当时我没有特别正面去回答这个朋友的问题,我说:一个老项目是否容易上手,一个非常关键的地方就是这个项目的日志是否打得足够好。因为通常来说,一个老项目相对比较稳定了,后续大概率不会有比较大的变更和改动,那么对于这样的项目,核心就是“维稳”。但是任何人都无法保证项目在线上运行时不会出线上故障,在出现线上问题或者故障时,如何快速止损就是第一要义,而日志在止损过程中就扮演..

2020-05-20 08:31:13

工程实践:给函数取一个好的名字

工程实践:给函数取一个"好"的名字  早在2013年,国外有个程序员做了一个有意思的投票统计(原始链接请见:《程序员:你认为最难做的事情是什么?》),该投票是让程序员从以下几个选项中选出平时在工作中自己认为最难做的事情:做项目方案设计 编写测试用例 撰写设计文档 向别人解释我们在做什么事情 实现你不认同的feature 在别人写的代码基础上做改造 与人沟通 给函数、变量命名 进行工作量估时  也许在大家的印象中,撰写设计文档和在别人写的代码基础上做改造应该是最难的事情。但是最终的投

2020-05-19 21:04:08

工程实践:如何给变量取一个好的名字

工程实践:如何给变量取一个好的名字  在上一篇文章中跟大家分享了关于函数命名的一些实践心得,今天我们继续命名这个话题,来讲一讲如何对变量命名。  以下是本文的目录大纲:  一. 变量命名风格  二. 变量命名最高境界  三. 变量命名最佳实践  若有不正之处请多多谅解,并欢迎批评指正。  请尊重作者劳动成果,转载请标明原文链接: https://www.cnblogs.com/dolphin0520/p/10639167.html一.变量命名风格  变量...

2020-05-19 21:00:45

Websocket实战-实时刷新待办列表

1、Gradle引入websocket依赖2、继承TextWebSocketHandlerpackage com.zajl.system.common.utils.websocket;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import org.springframework.util.CollectionUtils;import org.springframe

2020-05-09 14:42:38

WebSocket原理简介

1、前言最近有同学问我有没有做过在线咨询功能。同时,公司也刚好让我接手一个 IM 项目。所以今天抽时间记录一下最近学习的内容。本文主要剖析了 WebSocket 的原理,以及附上一个完整的聊天室实战 Demo (包含前端和后端,代码下载链接在文末)。2、WebSocket 与 HTTPWebSocket 协议在2008年诞生,2011年成为国际标准。现在所有浏览器都已经支持了。WebS...

2020-05-08 09:57:12

TCP中的SYN、ACK标识符的作用

TCP的三次握手是怎么进行的了:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手;接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让发送端发送一个确认数据包,这是第二次握手;最后,发送端发送一个SYN=0,ACK=1的数据包给接收端,告诉它连接已被确认,这就是第三次握手。之后,一个TCP连接建立,...

2020-05-07 16:53:55

linux不重启mysql修改group_concat最大值

问题描述:线上系统附件回显的时候通过group_concat获取某个字段的值,结果展示到一大半的时候显示的感觉数据直接被切割了,定位SQL发现通过group_concat后字符到一定值后会出现截断现象解决方法:(1)登陆mysql(2) 显示原变量值(3)设置新值(4)退出后重新登录配置即可生效...

2020-04-25 17:01:11

Address already in use: JVM_Bind解决方法

运行Tomcat时若出现Address already in use: JVM_Bind 端口被占用假设端口为53547启动cmd, 执行命令netstat -ano|findstr53547 ,会查询出占用端口号的进程号,这时候执行命令taskkill -f -pid 进程号杀死进程,然后重启Tomcat即可解决...

2020-04-14 10:43:50

Idea修改内存分配

增大idea内存分配,让项目启动更快!工作中,每次修改一点东西都需要等很久,因为项目启动需要很长时间无意间就降低了工作效率。有人说可以用插件,实现热部署。当然也可以用以下方式解决,那么就是增大idea的内存分配。接下来看一下步骤。1、打开idea的安装目录(可以右击桌面上的图标打开安装位置)找到bin文件 找到bin文件夹下的idea64.exe.vmoptions2、右击使用编辑器打...

2020-03-23 10:52:34

架构技术演进

某些app怎么扛住1分钟10亿请求架构的演进路线百万级并发:1秒100万次请求千万级并发:一分钟6亿次请求,差不多就是需求的极限架构的设计 和架构优化 要符合需求本身,不能无限制优化基本概念(1)分布式(系统中,多个模块在不同服务器上部署)(2)集群(一个软件部署在多台服务器,并作为一个整体,提供一类服务)(3)高可用(系统中部分节点失效,其他节点能够接替它继续工作或有相应的处...

2020-03-21 16:37:12

Linux输出内容到文件

linux中经常会用到将内容输出到某文件当中,只需要在执行命令后面加上>或者>>号即可进入操作。大于号:将一条命令执行结果(标准输出,或者错误输出,本来都要打印到屏幕上面的)重定向其它输出设备(文件,打开文件操作符,或打印机等等)小于号:命令默认从键盘获得的输入,改成从文件,或者其它打开文件以及设备输入>> 是追加内容> 是覆盖原有内容示例:...

2020-03-06 09:41:01

Python基础——数据类型和变量

计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在Python中,能够直接处理的数据类型有以下几种:一、整数Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1,1...

2020-02-27 20:49:45

Python简介

Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。现在,全世界差不多有600多种编程语言,但流行的编程语言也就那么20来种。如果你听说过TIOBE排行榜,你就能知道编程语言的大致流行程度。这是最近10年最常用的10种编程语言的变化图:总的来说,这几种编程语言各有千秋。C语言是可以用来编写操作系统的贴近硬件的语言...

2020-02-27 20:11:41

Mysql存储过程实践——用户常用模块表初始化数据

需求描述:为所有在职用户添加常用模块初始化数据需求分析:1、首先是主键ID可以直接用mysql自带的函数生成UUID,2、机构ID是固定的,是为某一个机构初始数据3、用户ID是查询用户表,筛选在职的用户4、模块指定"考勤","工作总结","工作计划","请假","日志"5个常用模块,赋值为这5个模块各自 的ID即可存储过程实现:CREATE DEFINER=`root...

2020-02-27 11:04:22

Mysql存储过程语法

MySQL 5.0 版本开始支持存储过程。存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。优点存储过程可封装,并隐藏...

2020-02-27 10:59:17

创新——一成不变意味着死亡

1、敢于打破旧有的秩序2、重视细节的力量3、通过不断实践,才能创新4、走不通时,不妨换个思路5、创新,让成功更持久

2020-01-05 14:48:58

思考——思考是行动的基石

1、善于思考,抓住本质2、独立思考,别让别人绑架你3、学会“曲线”思考问题4、逻辑思维,把一切纳入因果5、发现发散性思维的魅力6、敏锐的洞察力对你很重要7、与时俱进,不迷信经验8、勇于质疑,勤于思辨...

2020-01-05 14:47:13

查看更多

勋章 我的勋章
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。