当前位置: 首页 > news >正文

JavaSE_Day07_Java多线程

Java多线程

  • 一、进程
    • 1.1 概念
    • 1.2 特点
      • 1.2.1 独立性
      • 1.2.2 动态性
      • 1.2.3 并发性
  • 二、线程
    • 2.1 概念
    • 2.2 进程与线程的关系
  • 三、多线程的特性
    • 3.1 随机性
    • 3.2 线程状态
  • 四、多线程创建
    • 4.1 方式一:继承Thread
      • 4.1.1 概述
    • 4.1.2 常用方法
    • 4.1.3 测试
    • 4.2 方式二:实现Runnable接口
    • 4.2.1 概述
      • 4.2.2 常用方法
      • 4.2.3 测试
    • 4.3 比较
  • 五、售票案例
    • 5.1 方案1:继承Thread
    • 5.2 方案2:实现Runnable
    • 5.3 问题
  • 六、 同步锁
    • 6.1 同步锁
      • 6.1.1 synchronized
      • 6.1.2 特点
      • 6.1.3 售票代码改造

一、进程

1.1 概念

就是正在运行的程序。也就是代表了程序锁占用的内存区域。

1.2 特点

1.2.1 独立性

进程是系统中独立存在的实体,它可以拥有自己的独立的资源,每一个进程都拥有自己私有的地址空间。在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其他进程的地址空间。

1.2.2 动态性

进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合。在进程中加入了时间的概念,进程具有自己的生命周期和各种不同的状态,这些概念在程序中都是不具备的。

1.2.3 并发性

多个进程可以在单个处理器上并发执行,多个进程之间不会互相影响。

二、线程

2.1 概念

线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个进程可以开启多个线程。

多线程扩展了多进程的概念,使得同一个进程可以同时并发处理多个任务。

简而言之,一个程序运行后至少一个进程,一个进程里包含多个线程。

如果一个进程只有一个线程,这种程序被称为单线程。

如果一个进程中有多条执行路径被称为多线程程序。
在这里插入图片描述

2.2 进程与线程的关系

在这里插入图片描述
从上图中可以看出一个操作系统中可以有多个进程,一个进程中可以有多个线程,每个进程有自己独立的内存,每个线程共享一个进程中的内存,每个线程又有自己独立的内存。(记清这个关系,非常重要!)
所以想使用线程技术,得先有进程,进程的创建是OS创建的,你能实现吗?不能,一般都是c或者c++语言完成的。

三、多线程的特性

3.1 随机性

在这里插入图片描述

3.2 线程状态

在这里插入图片描述
线程生命周期,总共有五种状态

  1. 新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread();

  2. 就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()此线程立即就会执行;

  3. 运行状态(Running):当CPU开始调度处于就绪状态的线程时,此时线程才得以真正执行,即进入到运行状态。注:就绪状态是进入到运行状态的唯一入口,也就是说,线程要想进入运行状态执行,首先必须处于就绪状态中;

  4. 阻塞状态(Blocked):处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态,直到其进入到就绪状态,才有机会再次被CPU调用以进入到运行状态;

  5. 根据阻塞产生的原因不同,阻塞状态又可以分为三种:

  • 等待阻塞:运行状态中的线程执行wait()方法,使本线程进入到等待阻塞状态;
  • 同步阻塞:线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态;
  • 其他阻塞:通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。
  1. 死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。

四、多线程创建

4.1 方式一:继承Thread

4.1.1 概述

Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法Start()方法是一个native方法,它将通知底层操作系统,最终由操作系统启动一个新线程,操作系统将执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。

模拟开启多个线程,每个线程调用run()方法

4.1.2 常用方法

方法解释
String getName()返回该线程的名称。
static Thread currentThread()返回对当前正在执行的线程对象的引用。
void setName(String name)改变线程名称,使之与参数 name 相同。
static void sleep(long millis)在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。
void start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
Thread(String name)分配新的 Thread 对象。

4.1.3 测试

public class Test1  {public static void main(String[] args) {//3、创建线程对象ThreadDemo t1 = new ThreadDemo("钢铁侠");ThreadDemo t2 = new ThreadDemo("美队");//4、开启线程:谁抢到资源谁就先执行t1.start();t2.start();//t1.run();//当做常规方法调用,且 不会发生多线程现象}
}
//1、作为Thread的子类,并重写run方法。把多线程的业务写在run方法中class ThreadDemo extends Thread{
public ThreadDemo() {}public ThreadDemo(String name) {super(name);}@Overridepublic void run() {//2、默认实现是super.run();for (int i = 0; i < 10; i++) {System.out.println(getName()+i);}}
}

执行结果:
hello0
hello1
hello2
hello3
hello4
hello5
hello6
hello7
hello8
hello1
hello2
hello3
hello9
hello4
hello5
hello6
hello7
hello8
hello9

注意:
从上面结果可以确认,start()方法只是通知操作系统线程就绪,具体什么时间执行,操作系统来决定,我们JVM已经控制不了了。

4.2 方式二:实现Runnable接口

4.2.1 概述

如果自己的类已经extends另一个类,就无法多继承,此时,可以实现一个Runnable接口。

4.2.2 常用方法

void run()
使用实现接口 Runnable 的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的 run 方法。

4.2.3 测试

public class Test2 {public static void main(String[] args) {MyThread t = new MyThread ();//2,构造创建对象,传入Runnable子类Thread target = new Thread(t);
Thread target2 = new Thread(t);//开启线程target.start();target2.start();}
}
//1,实现Runnable接口,重写run()
class MyThread implements Runnable{@Overridepublic void run() {for (int i = 0; i < 10; i++) {System.out.println(Thread.currentThread().getName()+" "+i);}}
}

执行结果:

Thread-0
Thread-2
Thread-1
Thread-5
Thread-8
Thread-6
Thread-7
Thread-4
Thread-3
Thread-9

注意:
可以看到执行顺序是乱的,我们已经知道start()方法只是通知操作系统线程就绪,具体什么时间执行,操作系统来决定,我们JVM已经控制不了了。这就是乱序的原因,也是正常的。

4.3 比较

在这里插入图片描述

五、售票案例

设计4个售票窗口,总计售票100张。

用多线程的程序设计并写出代码。

5.1 方案1:继承Thread

public class Test3 {public static void main(String[] args) {Ticket t = new Ticket();Ticket t2 = new Ticket();Ticket t3 = new Ticket();Ticket t4 = new Ticket();//问题:票好像卖重复了,同一张票卖了好多次...t.start();t2.start();t3.start();t4.start();}
}
class Ticket extends Thread {
//卖了200张票,变成static的static private int tic = 100;@Overridepublic void run() {while (true) {//tic=1时,谁都可以进来,t t2 t3 t4if (tic > 0) {try {//t t2 t3 t4都睡了Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}//t醒了,tic--=1,tic=0;//t2醒了,tic--=0,tic=-1;//t3醒了,tic--=-1,tic=-2;//t4醒了,tic--=-2,tic=-3;System.out.println(tic--);}}}
}

5.2 方案2:实现Runnable

public class Test4 {public static void main(String[] args) {//只创建一次,就100张票Ticket2 t  = new Ticket2();Thread target = new Thread(t,"窗口1");Thread target2 = new Thread(t,"窗口2");Thread target3 = new Thread(t,"窗口3");Thread target4 = new Thread(t,"窗口4");target.start();target2.start();target3.start();target4.start();}
}
class Ticket2 implements Runnable{private int tickets=100;@Overridepublic void run() {while(true) {if(tickets >0) {try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()+tic--);}}}
}

5.3 问题

序号内容
1每次创建线程对象,都会生成一个tickets变量值是100,创建4次对象就生成了400张票了。不符合需求,怎么解决呢?能不能把tickets变量在每个对象间共享,就保证多少个对象都是卖这100张票。-- 用静态修饰
2产生超卖,-1张、-2张。
3产生重卖,同一张票卖给多人。
4多线程安全问题是如何出现的?常见情况是由于线程的随机性+访问延迟。
5以后如何判断程序有没有线程安全问题?在多线程程序中+有共享数据+多条语句操作共享数据。

六、 同步锁

6.1 同步锁

把有可能出现问题的代码包起来,一次只让一个线程执行。通过sychronized关键字实现同步。
当多个对象操作共享数据时,可以使用同步锁解决线程安全问题。

6.1.1 synchronized

synchronized(对象){//需要同步的代码;
}

6.1.2 特点

1、 前提1,同步需要两个或者两个以上的线程。

2、 前提2,多个线程间必须使用同一个锁。

3、 同步的缺点是会降低程序的执行效率, 为了保证线程安全,必须牺牲性能。

4、 可以修饰方法称为同步方法,使用的锁对象是this。

5、 可以修饰代码块称为同步代码块,锁对象可以任意。

6.1.3 售票代码改造

public class Test4 {public static void main(String[] args) {Ticket2 t = new Ticket2();Thread target = new Thread(t, "窗口1");Thread target2 = new Thread(t, "窗口2");Thread target3 = new Thread(t, "窗口3");Thread target4 = new Thread(t, "窗口4");target.start();target2.start();target3.start();target4.start();}
}
class Ticket2 implements Runnable {
private int tic = 100;Object obj = new Object();@Overridepublic void run() {while (true) {// 把有线程安全问题的代码,用同步关键字包起来// 原理:用一个对象作为一把锁,给代码上锁,一个线程访问锁代码时,其他线程只能等待锁释放才能进来。// 多线程间要使用同一把锁才可以真的把代码锁住实现线程安全。  // synchronized (new Object()) {//锁了不同对象// synchronized (obj) {//锁了同一个对象//synchronized (Ticket2.class) {//锁了本类,针对于静态synchronized (this) {if (tic > 0) {try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(tic--);}}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-35377.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

2021年A特种设备相关管理(锅炉压力容器压力管道)免费试题及A特种设备相关管理(锅炉压力容器压力管道)考试技巧

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通&#xff1a;A特种设备相关管理&#xff08;锅炉压力容器压力管道&#xff09;免费试题是安全生产模拟考试一点通生成的&#xff0c;A特种设备相关管理&#xff08;锅炉压力容器压力管道&#…...

前端类库开发最佳实践

Yarn Lerna Rollup 示例项目 Yarn 通过使用 Yarn 的工作区功能&#xff0c;让 Yarn 根据就依赖关系帮助你分析所有子项目的公共依赖&#xff0c;让所有的子项目的公共依赖只会被下载和安装一次。 Lerna 通过 Lerna 可以将一系列相互耦合比较大、又相互独立的库进行管理&…...

shell 的关联数组

shell 的关联数组 引言 shell也有Map的数据结构&#xff0c;哈哈哈&#xff0c;是挺高大上的。万能的shell。。。。 万恶的mac&#xff0c;sed和linux不一样&#xff0c;关联数组和linux也不要一样。要你干啥&#xff01;&#xff01;&#xff01; 一个需求的处理 感谢这个…...

信息安全工程师笔记-网络攻击常见技术

前言 前面说了端口扫描技术&#xff0c;这次笔记再来补充下其他技术。 口令破解 1.建立与目标网络服务的网络连接&#xff1b; 2.选取用户列表文件及字典文件&#xff1b; 3.在用户列表文件及字典文件中&#xff0c;选取组用户和口令&#xff0c;按网络服务协议规定&#x…...

Cookie对象的使用

Cookie对象是做什么的&#xff1f; 在我的理解里&#xff0c;Cookie是客户端用来和客户端保持通讯信息的一个对象。 怎样使用Cookie 使用一个对象&#xff0c;很显然我们要先创建他 Cookie cookie new Cookie(name, value); 然后用res对象将Cookie发送给客户端 res.addCookie…...

jspdf本地运行环境正常,打包后下载的pdf不全

最近开发过程中遇到个问题&#xff0c;用jspdf配合html2canvas把页面元素下载为pdf文件&#xff0c;在本地运行环境好好的&#xff0c;但是打包之后下载的pdf就是不全的&#xff0c;搜了好久也没找出什么对症的解决方案。 现象就是这样&#xff1a; 正常的文件&#xff1a; 有…...

12013.ADC779x采集芯片

文章目录1 AD7997 特征2 管脚描述3 I2C地址确定3 内部寄存器结构3.1 内部结存器结构3.2 配置寄存器3.3 转换结果寄存器3.4 数据寄存器3.5 Hysteresis Register (CH1/CH2/CH3/CH4) 迟滞寄存器3.6 CYCLE TIMER REGISTER 循环计时寄存器3.7 SAMPLE DELAY AND BIT TRIAL DELAY 样本…...

实训项目-白金手册(个人信息管理系统)

实训项目-个人信息管理系统 文章目录实训项目-个人信息管理系统前言一、前期相关准备1、 编译软件安装2、 基本技术掌握2.1、 信息存储2.1.1、 临时存储2.1.2、 长期存储2.2、 查找排序2.3、 线性表操作2.4、 文件操作2.5、 代码书写规范二、需求分析三、难点疑点分析1、实现读…...

C++ ---仅仅翻转字符

仅仅翻转字符 题目描述&#xff1a; 给定一个字符串 S&#xff0c;返回 “反转后的” 字符串&#xff0c;其中不是字母的字符都保留在原地&#xff0c;而所有字母的位置发生反转。 题目来源&#xff1a;力扣 class Solution { public:bool IsLetter(char ch){if((ch >a&a…...

mybatis-generator自定义TypeHandler进行加密解密

背景&#xff1a;公司需要将部分验证码进行加密入库&#xff0c;查询的时候解密。 初始时&#xff1a;在每次的逻辑代码中&#xff0c;涉及到该字段的新增&#xff0c;修改&#xff0c;都需要对指定字段进行加密。查询的时候对字段进行解密(缺点&#xff1a;可维护性太差) 改…...

线性封闭区域2D刀路讲解

在学习UG教程的过程中往往要学习UG编程&#xff0c;想尽快速成&#xff0c;可以按照下面UG编程学习步骤&#xff1a; 步骤1、装上编程软件-UG&#xff0c;我们尽量装NX10.0版本&#xff0c;因为它是一个很稳定的一个版本&#xff0c; 步骤2、装上UG的最佳伙伴-优品外挂&#…...

慢慢学习,然后惊呆所有人(八,异常)

目录 ​ 什么是异常&#xff1f; 错误和异常的区别 异常的处理 try语法块&#xff1a; 抓捕异常&#xff1a; 多行异常的处理&#xff1a; 查看出现的异常情况 ​ 自定义异常和抛出异常 Java中异常继承关系 异常抛出&#xff1a; 自定义异常&#xff1a; finall…...

并查集(Union Find)

算法背景 Union Find算法&#xff0c;中文并查集。主要用来解决图论中的连通判断问题&#xff0c;简单抽象问题为&#xff1a; 平面上有n个点给定他们之间两两连接关系 要求输入任意两个点&#xff0c;判断他们是否能够有一条路径联通 算法步骤 一旦有连接&#xff0c;就把…...

TCP/IP网络协议以及Android网络优化方案

引用文章地址&#xff1a;TCP/IP网络协议 文章目录TCP/IPTCP/IP 模型TCP 和 UDPTCP怎么保证传输过程的可靠性&#xff1f;TCP 为什么要三次握手/四次挥手网页请求一个 URL 的流程DNS 工作原理HTTPS 加密原理移动端如何优化一个网络请求呢&#xff1f;DNS 优化CacheControlQ&…...

单季度开出162家新店,被疫情拖累的名创优品继续破局?

名创优品还没有完全脱离疫情的困扰。 北京时间8月19日美股盘前&#xff0c;名创优品发布了截至2021年6月30日的2021财年第四季度财报和全年财报&#xff0c;第四季度全球店铺数量虽然继续逆势增长&#xff0c;但具体的财务指标走向各异&#xff0c;与疫情前的水平差距不一。 …...

webSocket服务端与客户端消息通讯

一、WebSocket是HTML5出的东西&#xff08;协议&#xff09;&#xff0c;也就是说HTTP协议没有变化&#xff0c;或者说没关系&#xff0c;但HTTP是不支持持久连接的&#xff08;长连接&#xff0c;循环连接的不算&#xff09; 首先HTTP有1.1和1.0之说&#xff0c;也就是所谓的k…...

Vue 虚拟列表,纵享丝滑

转载文章&#xff1a;https://juejin.cn/post/6937939870018961439...

文华财经指标软件指标博易大师软件指标公式

CDJZ:ABS(MA(C,N3)-MA(C,120))/MA(C,120) < 0.5; 阶段卖出: 3.2,COLORLICYAN; 清仓卖出: 3.5,COLOR0088FF,DOTLINE; STICKLINE(动力线 > REF(动力线,1) ,动力线 ,REF(动力线,1),3 ,1),COLORRED; STICKLINE(动力线 <REF(动力线,1) ,动力线 ,REF(动力线,1),3 ,1),CO…...

元力参堂:《披荆斩棘的哥哥》一经上线,能否带动芒果TV会员数增长

随着芒果TV《披荆斩棘的哥哥》大热&#xff0c;播放量就占据了综艺热度榜榜首。芒果超媒发布了2021年半年报&#xff0c;公司2021年1-6月实现营业收入78.53亿元&#xff0c;同比增长36.02%。从财报来看&#xff0c;芒果超媒营收的增长&#xff0c;主要还是来源于其主要业务芒果…...

关于环境变量定义prompt实现$替换成用户+当前路径提示

set prompt "// ${HOST}:$cwd % " alias cd cd \!* ;set prompt "// ${HOST}:$cwd % "...

半个小时搞懂GDB调试

GNU调试器常常以它的命令gbd称呼它&#xff0c;它是一个交互的控制台&#xff0c;可以帮助你浏览源代码、分析执行的内容&#xff0c;其本质上是对错误的应用程序中出现的问题inx逆向工程。 一、启动调试 对于C/C程序来说&#xff0c;需要编译时加上-g参数&#xff0c;保留调…...

Xshell中鼠标选中内容自动换行ctrl+c解决办法

之前一直使用xshell来调试嵌入式终端&#xff0c;觉得蛮好用的&#xff0c;在昨天&#xff0c;突然发现&#xff0c;莫名的就出现ctrlc的命令&#xff0c;经分析&#xff0c;当使用鼠标选中内容后就自动出现&#xff0c;仔细思考这一两天的过程&#xff0c;并没有得到好的信息&…...

Coin Change(C++零钱兑换)

&#xff08;1&#xff09;dp&#xff0c;完全平方数类似 class Solution { public:int coinChange(vector<int>& coins, int amount) {int maxsamount1;int ncoins.size();vector<int> v(amount1,maxs);v[0]0;for(int i1;i<amount1;i) {for(int j0;j<n…...

Nocas单机启动命令

之前在Linux中单机启动Nocas使用命令&#xff1a;sh startup.sh -m standalone 但是在cmd窗口使用该命令不行&#xff0c;因为sh命令是在Linux系统中的文件&#xff1b; 而在本机cmd窗口运行Nocas&#xff0c;输入命令startup.cmd -m standalone...

错题小笔记13——序列化、serialVisionUID的作用

序列化&#xff1a;将数据结构转换称为二进制数据流或者文本流的过程。序列化后的数据方便在网络上传输和在硬盘上存储。 反序列化&#xff1a;是将二进制数据流或者文本流转换称为易于处理和阅读的数据结构的过程。本质其实还是一种协议&#xff0c;一种数据格式&#xff0c;…...

2021-08-24 docker

提示&#xff1a; 文章目录前言一、docker installps&#xff1a;出现 yum-config-manager: command not found二. 启动前言 提示&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、docker install 示例&#xff1a;yum install docker…...

信息安全工程师笔记-网络攻击常见技术

前言 前面说了端口扫描技术&#xff0c;这次笔记再来补充下其他技术。 口令破解 1.建立与目标网络服务的网络连接&#xff1b; 2.选取用户列表文件及字典文件&#xff1b; 3.在用户列表文件及字典文件中&#xff0c;选取组用户和口令&#xff0c;按网络服务协议规定&#x…...

Java笔记-解决WebServiceTemplate中No subject alternative names matching IP address xxx

主要的原因是证书有问题&#xff0c;就是程序的IP地址和证书的IP地址不匹配。 这里是客户端报错&#xff0c;使用的是spring-ws 对应的Maven如下&#xff1b; <dependency><groupId>org.springframework.ws</groupId><artifactId>spring-ws-security&…...

787. K 站中转内最便宜的航班

787. K 站中转内最便宜的航班...

关于我在 SSL 做纪中题目这档事(2021.8.23)

成绩 ranknamescoreT1T2T3T4666TJHTJHTJH175175175505050404040505050353535 做题 看 T1 发现又是方差&#xff0c;然后看了一下觉得一定是长度为 lll&#xff1f;没证&#xff0c;先去看下一题。 看 T2 发现很数学题&#xff0c;想到了质因数分解却感觉会质因数个数太多。 T…...

SSM甜品店系统计算机毕业论文java毕业设计选题源代码

&#x1f496;&#x1f496;更多项目资源&#xff0c;最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 计算机毕业设计java毕设之SSM甜品店系统-IT实战营_哔哩哔哩_bilibili项目资料网址: http://itzygogogo.com软件下载地址:http://itzygogogo.com/i…...

如何设计一个高性能网关?

点击上方 "编程技术圈"关注, 星标或置顶一起成长后台回复“大礼包”有惊喜礼包&#xff01;每日英文Close your eyes. Clear your heart. Let it go. 闭上眼睛&#xff0c;清理你的心&#xff0c;过去的就让它过去吧。每日掏心话清淡的人生&#xff0c;步履更轻松。一…...

uboot——启动第一阶段分析

一、程序的开始   在C语言中&#xff0c;main函数是整个程序的入口&#xff0c;这是规定。在uboot中因为有汇编参与&#xff0c;因此不能直接找main.c&#xff0c;整个程序的入口取决于中ENTRY声明的地方 ENTRY(_start)&#xff0c;因此_start所在的文件就是整个程序的起始文…...

CGB2105第二阶段-9前端Maven跨平台管理工具

一、三大框架总瞰 1、企业级架构图 之前我们关注的是前端的解决方案&#xff08;涉及到的技术有H5、CSS3、JavaScript&#xff0c;CSS升级为Bootstrap再升级到ElementUI&#xff0c;JavaScript升级到jQuery再升级到VueNodeJS&#xff09;现在开始我们开始关注后端的解决方案&a…...

【狂神说Java】阶段五笔记1. MyBatis

文章目录Mybatis-9.281 简介1.1 什么是MyBatis1.2 持久化1.3 持久层1.4 为什么需要Mybatis2 第一个Mybatis程序2.1 搭建环境2.2 创建模块2.3 编写代码2.4 测试3 CRUD4 配置解析4.1 核心配置文件4.2 环境变量4.3 属性&#xff08;properties&#xff09;4.4 typeAliases&#xf…...

Linux内核创建文件的函数,《Linux内核设计与实现》笔记

《Linux内核设计与实现》笔记第一章 Linux内核简介1. 单内核和微内核原理优势劣势单内核整体上作为一个单独的大过程来实现&#xff0c;整个内核都在一个大内核地址空间上运行。1. 简单。 2. 高效&#xff1a;所有内核都在一个大的地址空间上&#xff0c;所以内核各个功能之间的…...

uboot1.3.4启动第一阶段汇编代码详细分析

之前看了容易忘记&#xff0c;用了整整一天时间整理了&#xff0c;应该十分详细了&#xff0c;方便以后查看。 2020-6-6日&#xff0c;外面比较热&#xff0c;还是龟缩在屋里静静的分析代码爽&#xff01; ----------------------------------------------------------------…...

Java阶段复习

Java基础 数组 一组连续空间&#xff0c;存储多个相同类型的值 特点 数据类型相同长度固定 数组的扩容 创建一个新数组&#xff0c;使用For循环将元素逐一赋值System.arraycopy&#xff08;原数组名&#xff0c;原数组起始下标&#xff0c;新数组名&#xff0c;新数组起始下…...

Linux阶段性测试题

文章目录选择题简答题材料分析思维拓展选择题 1、数据库事务的特性&#xff08;ABCD&#xff09; A、原子性 B、一致性 C、隔离性 D、持久性 A&#xff1a;原子性是指事务包含的所有操作要么全部成功&#xff0c;要么全部失败回滚&#xff0c;这和前面两篇博客介绍事务的功能是…...

python的数据可视化

python画图1.使用pyecharts画图1.1 画地图1.1.1 画2D中国地图1.1.2 画2D世界地图1.1.3 画3D世界地图1.2 pyecharts的三种图片渲染工具1.2.1 snapshot_selenium1.2.2 snapshot_phantomjs1.2.3 snapshot_pyppeteer1.3 词云图1.3.1依据图片渲染出指定形状的词云图1.3.2渲染出指定大…...

uboot移植——启动第一阶段

文章目录1.start.S的引入2.start.S解析2.1不简单的头文件包含2.2启动代码的16字节头部2.3异常向量表的构建2.4有点意思的deadbeef2.5TEXT_BASE2.6设置CPU为SVC模式2.7设置L2\L1cache和MMU2.8识别并暂存启动介质选择2.9设置栈&#xff08;SRAM中的栈&#xff09;并调用lowlevel_…...

扬起“数字中台”风帆 云徙科技争做新数字商业时代的领航者

最近&#xff0c;网上掀起了一个关于“连衣裙客单价低于128”的讨论&#xff0c;搜索连衣裙&#xff0c;单价在128元以下的姑娘&#xff0c;说明你已经被归于“低消费人群”行列&#xff0c;算法将用户挑选并分类出来&#xff0c;最后打上标签&#xff0c;好让商家可以对用户进…...

云徙数字中台3.0,可升级的数字化转型底座

中台战略是阿里等互联网公司在自身的数字化转型过程中提炼出来的方法论&#xff0c;所谓“中台”即把企业可复用的共享IT模块和共享业务模块等集成到一个平台上&#xff0c;一方面拉通和强化共享模块之间的协同&#xff0c;另一方面为前端APP开发提供最大化可复用的共享企业资源…...

企业数字化创新服务黑马,云徙科技完成1.5亿元A+轮战略融资

云徙科技有限公司(简称“云徙科技”)是国内新一代企业数字化服务商&#xff0c;致力以云计算、大数据、物联网、区块链及人工智能等技术赋能企业数字化创新。 2018年9月19日&#xff0c;阿里云云栖大会在杭州云栖小镇召开&#xff0c;大会以“驱动数字中国”为主题&#xff0c…...

云徙打造新一代数字中台:数字化增长终局是全链路营销一体化?

作者 | 曾响铃 ​文 | 响铃说 数字化谈了很多年&#xff0c;成效颇丰&#xff0c;一些陈旧的组织、业务思维方式在动摇&#xff0c;但是&#xff0c;在能否带来名副其实、与投入对等的价值这件事上&#xff0c;质疑声也从未停止过。 一方面&#xff0c;这个领域迫切需要一些…...

云徙科技CEO包志刚:数字化锻造企业韧性

7月15日&#xff0c;由广州市黄埔区工业和信息化局作为指导单位、云徙科技主办的“2022年第四届数字化创新大会”在广州盛大召开。此次大会以“数字增长”为主题&#xff0c;设置了1个主论坛6个主题论坛。大会汇聚了行业领袖、投资机构、专家学者、权威媒体现场参会。来自广州市…...

电子商务过时?一体化商务来了!云徙数舰X重塑品牌竞争力

对于新消费来说&#xff0c;电子商务正在过时。早在2016年阿里提出新消费的时候&#xff0c;那时候人们还无法理解电子商务即将过时这一概念。但随着线上消费与线下消费的融合&#xff0c;面向纯线上的电子商务&#xff0c;正从时髦的概念退化到商务本质。2022年3月&#xff0c…...

中台渐入佳境,云徙科技的有所为与有所不为

过去几年&#xff0c;中台的“待遇”用过山车来形容再贴切不过&#xff1a;从互联网巨头振臂一呼&#xff0c;瞬间成为业界备受关注的宠儿&#xff1b;到落地之路遇到各种挫折、质疑声四起&#xff0c;中台饱尝“人间冷暖”。 然而&#xff0c;不要高估中台的短期效应&#xf…...

【深度报道】云徙科技的双中台模式,助力企业成为时代弄潮儿

情从爱情中来。 —— 拉布吕耶尔中国软件网每日精选集随着云计算、大数据、人工智能等新一代技术的爆发式发展&#xff0c;数字化商业的浪潮悄然来临&#xff0c;商业运行的方式和场景出现了巨大的变化。要么驾驭潮头&#xff0c;要么被潮水冲走&#xff0c;没有第三条路可走。…...

云场景实践研究第77期:云徙科技

更多云场景实践研究案例&#xff0c;点击这里&#xff1a;【云场景实践研究合集】联合不是简单的加法&#xff0c;而是无限的生态&#xff0c;谁会是下一个独角兽 作为阿里生态战略合作伙伴&#xff0c;云徙科技在阿里云的大数据和新技术的帮助下&#xff0c;使企业成功实现数字…...