java web 来源页_Java:Java Web--分页效果

先来看一看分页的实现原理

b3717ff907e2

万能公式.jpg

b3717ff907e2

项目目录.PNG

首先,新建Java Web项目

一. 梳理业务逻辑

重定向到URL(跳转到StudentViewAction页面)//index.jsp页面

1.从页面接收可变的值

2.接收值有问题时,初始化为1

3.如果没有问题,把String类型接收值强转成Integer

4.实例DAO方法,调用findStudentListByPageCount()方法(该方法得到总条数)

5.计算总页数:总页数 = 总条数 % 页容量

6.判断接收到页面传来的值是否小于1页

7.调用DAO中findStudentListByPageCount()(该方法获取数据集合)

8.封装打包页面

9.转发页面

request.getRequestDispatcher("list.jsp").forward(request, response);

//request.getRequestDispatcher("list.jsp") 找到要转发的页面

//forward(request, response); 实现转发

二. 实现界面展示

1.封装工具类JDBCUtil.java文件, 作用是连接数据库

package com.fyl.util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.Scanner;

/**

* 文档注释(Java连接数据库的工具类)

*

*/

public class JDBCUtil {

// 注意:四个属性:驱动, 地址(URL), 用户名, 密码

// 驱动类:通过一个类名告诉java我现在使用的是什么数据库

private static final String CONN_DRIVER = "com.mysql.jdbc.Driver";

// URL:告诉Java我的数据库的具体位置(网络标识:通过什么端口哪台电脑获取什么资源)

private static final String CONN_URL = "jdbc:mysql://127.0.0.1:3306/student_db?characterEncoding=UTF-8";

// 用户名

private static final String CONN_USER_NAME = "root";

// 密码

private static final String CONN_USER_PASS = "123456";

public static Connection getConn() {

// 创建方法的返回变量

Connection conn = null;

try {

// 1.加载驱动类 让Java知道我们创建什么数据库的实例

Class.forName(CONN_DRIVER);

// 通过已经加载好的驱动类给我们提供连接

conn = DriverManager.getConnection(CONN_URL, CONN_USER_NAME,

CONN_USER_PASS);

} catch (ClassNotFoundException e) {

System.out.println("add DriverManager error!");

e.printStackTrace();

} catch (SQLException e) {

System.out.println("SQL error!");

e.printStackTrace();

}

return conn;

}

public static void closeAll(ResultSet set, PreparedStatement ps,

Connection conn) {

try {

if (null != set) {

set.close();

}

if (null != ps) {

ps.close();

}

if (null != conn) {

conn.close();

}

} catch (SQLException e) {

System.out.println("closeAll ERROR!");

e.printStackTrace();

}

}

public static void main(String[] args) {

// 获取数据库连接

Connection conn = JDBCUtil.getConn();

Scanner scan = new Scanner(System.in);

while (true) {

System.out.println("请素输入要查看的数据:");

int i = scan.nextInt();

int start = (i - 1) * 10;

int size = 10;

// 2.编写SQL语句(查询id > 0的数据, 连续查询10条记录)

String sql = "SELECT * FROM student WHERE s_id LIMIT ?,?";

// SELECT * FROM student WHERE s_id > 10 AND s_id <= (10 + 10)

// 3.运行SQL语句

try {

PreparedStatement ps = conn.prepareStatement(sql);

ps.setInt(1, start);

ps.setInt(2, size);

// 4.执行后返回结果(execute执行Query结果)

ResultSet set = ps.executeQuery();

System.out.println("学生编号\t学生姓名\t学生年龄\t入学时间\t学费");

for (; set.next();) {

System.out.print(set.getInt("S_ID") + "\t");

System.out.print(set.getString("S_NAME") + "\t");

System.out.print(set.getInt("S_AGE") + "\t");

System.out.print(set.getDate("S_INTODATE") + "\t");

System.out.print(set.getDouble("S_MONEY") + "\t");

System.out.println();

}

} catch (SQLException e) {

System.out.println("select error");

e.printStackTrace();

}

}

}

}

2.创建数据库实体类Student.java文件(Model层)

package com.fyl.entity;

import java.io.Serializable;

import java.util.Date;

/**

* 实体类

* @author Administrator

*

*/

public class Student implements Serializable {

private static final long serialVersionUID = 1L;//添加唯一标识

private Integer id;

private String name;

private int age;

private Date date;

private Double money;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public Date getDate() {

return date;

}

public void setDate(Date date) {

this.date = date;

}

public Double getMoney() {

return money;

}

public void setMoney(Double money) {

this.money = money;

}

}

3.index.jsp界面(呈现给用户的第一个界面)

系统首页

// 重定向到URL

request.getRequestDispatcher("StudentViewAction").forward(request, response);

%>

4.新建servlet文件StudentViewAction.java(Controller层)

package com.fyl.web;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.fyl.dao.StudentDAO;

import com.fyl.dao.impl.StudentDAOImpl;

import com.fyl.entity.Student;

public class StudentViewAction extends HttpServlet {

private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//封装数据给页面

//整理页面需要的数据

int pageIndex = 0;//页面 //页面每次请求传过来的

int pageSize = 10;//

int totalCount = 0;

int totalPge = 0;

List list = null;

//从页面接收可变的值

String pi = request.getParameter("pageIndex");

//pi有问题的时候,初始化为1

if (null == pi || "".equals(pi)) {

pi = "1";

}

//如果pi没有问题的时候

pageIndex = Integer.parseInt(pi);

//从数据接收值

StudentDAO dao = new StudentDAOImpl();

//调用DAO方法

totalCount = dao.findStudentListByPageCount();

//计算总页数

totalPge = totalCount % pageSize == 0?totalCount/pageSize:totalCount/pageSize + 1;

//判断pageIndex的边界值

if (pageIndex < 1) {

pageIndex = 1;

}

if (pageIndex > totalPge) {

pageIndex = totalPge;

}

//获取数据集合

list = dao.findStudentListByPage(pageIndex, pageSize);

//封装打包页面

request.setAttribute("pageIndex", pageIndex);

request.setAttribute("pageSize", pageSize);

request.setAttribute("totalCount", totalCount);

request.setAttribute("totalPge", totalPge);

request.setAttribute("list", list);

//转发页面

request.getRequestDispatcher("list.jsp").forward(request, response);

}

}

新建list.jsp界面接收StudentViewAction传来的值

数据展示

function goUpdate(id){

window.location.href = "StudentFindByIDViewAction?id=" + id;

}

function goDelete(id){

var con = window.confirm("您确定删除ID为" + id + "这条数据吗?" );

if(con){

//删除

window.location.href = "StudentDeleteAction?id=" + id;

}

}

function goPage(pageIndex){

window.location.href = "StudentViewAction?pageIndex="+pageIndex;

}

function goPage(pageIndex){

window.location.href = "StudentViewAction?pageIndex="+pageIndex;

}

function goAdd(){

window.location.href = "add.jsp";

}

一共查询出${totalCount}条数据,每页展示${pageSize}条,一共有${totalPage}页,当前浏览的是第${pageIndex}页

学生ID学生姓名学生年龄入学时间学费操作
${s.id}${s.name}${s.age}

||

三. 实现增删查改

创建接口, 新建StudentDAO.java接口文件, 添加增删查改方法

package com.fyl.dao;

import java.util.List;

import com.fyl.entity.Student;

public interface StudentDAO {

/**

* 更据id删除

* @param id

* @return

* @throws RuntimeException

*/

public boolean deleteStudent(Integer id) throws RuntimeException;

/**

* 根据ID查询单个学生对象

* @param id

* @return

* @throws RuntimeException

*/

public Student findStudentByID(Integer id) throws RuntimeException;

/*

* 添加学生方法

* @param student 要添加的学生

* @return 添加成功返回true 添加失败返回false

* @throws RuntimeException

*/

public boolean insertStudent(Student student)throws RuntimeException;

/**

* 查询数据库的总条数

* @return 总条数

* @throws RuntimeException

*/

public int findStudentListByPageCount() throws RuntimeException;

/**

* 获取分页数集合

* @param pageIndex 页码

* @param pageSize 页容量

* @return 已经分页的list集合

* @throws RuntimeException

*/

public List findStudentListByPage(Integer pageIndex, Integer pageSize) throws RuntimeException;

/*

* 更新学生信息

* @param student

* @return

* @throws RuntimeException

*/

public boolean updateStudent(Student student) throws RuntimeException;

}

2.新建StudentDAOImpl.java文件,实现接口

package com.fyl.dao.impl;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

import com.fyl.dao.StudentDAO;

import com.fyl.entity.Student;

import com.fyl.util.JDBCUtil;

public class StudentDAOImpl implements StudentDAO {

// TODO

public int findStudentListByPageCount() throws RuntimeException {

// 1.创建方法的返回变量

int totalCount = 0;

// 3.获取数据库连接

Connection conn = JDBCUtil.getConn();

// 4.编写SQL语句

String sql = "SELECT COUNT(S_ID) FROM STUDENT";

// 执行SQL语句

PreparedStatement ps = null;

ResultSet set = null;

try {

ps = conn.prepareStatement(sql);

set = ps.executeQuery();

//处理

if (set.next()) {

totalCount = set.getInt(1);

}

} catch (SQLException e) {

// TODO

e.printStackTrace();

} finally {

JDBCUtil.closeAll(set, ps, conn);

}

return totalCount;

}

// TODO

public List findStudentListByPage(Integer pageIndex,

Integer pageSize) throws RuntimeException {

List list = new ArrayList();

//2.1获取数据库连接

Connection conn = JDBCUtil.getConn();

//3. 创建SQL语句

String sql = "SELECT * FROM STUDENT WHERE S_ID LIMIT ?,?";

//4.执行SQL语句

PreparedStatement ps = null;

ResultSet set = null;

try {

ps = conn.prepareStatement(sql);

ps.setInt(1, (pageIndex-1) * pageSize);

ps.setInt(2, pageSize);

set = ps.executeQuery();

Student s = null;

while (set.next()) {

s = new Student();

//封装数据

s.setId(set.getInt("S_ID"));

s.setName(set.getString("S_NAME"));

s.setAge(set.getInt("S_AGE"));

s.setMoney(set.getDouble("S_MONEY"));

s.setDate(set.getDate("S_INTODATE"));

// 将封装好的Student对像装入集合

list.add(s);

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

JDBCUtil.closeAll(set, ps, conn);

}

return list;

}

public boolean insertStudent(Student student) throws RuntimeException {

// TODO Auto-generated method stub

//1.定义方法返回变量

boolean con = false;

//3. 获取数据库连接

Connection conn = JDBCUtil.getConn();

//4. 编写SQL语句

String sql = "INSERT INTO STUDENT (S_NAME,S_AGE,S_INTODATE,S_MONEY) VALUES (?,?,?,?)";

// 5. 执行SQL语句

PreparedStatement ps = null;

try {

ps = conn.prepareStatement(sql);

// 6. 是否有占位符赋值?

ps.setString(1, student.getName());

ps.setInt(2, student.getAge());

ps.setDate(3, new java.sql.Date(student.getDate().getTime()));

ps.setDouble(4, student.getMoney());

int count = ps.executeUpdate(); // 执行增 删 改 SQL 返回int类型的受影响行数

// 7. 改变方法的返回值

con = count>0?true:false;

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 2. 返回con

return con;

}

// TODO 根据id查询

public Student findStudentByID(Integer id) throws RuntimeException {

//创建方法的返回值

Student student = null;

Connection conn = JDBCUtil.getConn();

//编写SQL语句

String sql = "SELECT * FROM STUDENT WHERE S_ID = ?";

//执行SQL语句

PreparedStatement ps = null;

ResultSet set = null;

try {

ps = conn.prepareStatement(sql);

//是否有占位符

ps.setInt(1, id);

set = ps.executeQuery();

if(set.next()){

//创建实例对象封装查询数据

student = new Student();

student.setId(set.getInt("S_ID"));

student.setAge(set.getInt("S_AGE"));

student.setDate(set.getDate("S_INTODATE"));

student.setMoney(set.getDouble("S_MONEY"));

student.setName(set.getString("S_NAME"));

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

JDBCUtil.closeAll(set, ps, conn);

}

return student;

}

// TODO 更新学生信息

public boolean updateStudent(Student student) throws RuntimeException {

//创建方法的返回值

boolean con = false;

//获取数据库连接

Connection conn = JDBCUtil.getConn();

//编写SQL语句

String sql = "UPDATE STUDENT SET S_NAME=?,S_AGE=?,S_INTODATE=?,S_MONEY=? WHERE S_ID=?";

//执行SQL语句

PreparedStatement ps = null;

try {

ps = conn.prepareStatement(sql);

//是否有占位符

ps.setString(1, student.getName());

ps.setInt(2, student.getAge());

ps.setDate(3, new java.sql.Date(student.getDate().getTime()));

ps.setDouble(4, student.getMoney());

ps.setInt(5, student.getId());

int count = ps.executeUpdate();

con = count>0?true:false;

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return con;

}

// TODO delete

public boolean deleteStudent(Integer id) throws RuntimeException {

//创建方法的返回变量

boolean con = false;

//获取数据库链接

Connection conn = JDBCUtil.getConn();

//编写SQL语句

String sql = "DELETE FROM STUDENT WHERE S_ID = ?";

//执行SQL语句

PreparedStatement ps = null;

try {

ps = conn.prepareStatement(sql);

ps.setInt(1, id);

int count = ps.executeUpdate();

con = count > 0?true:false;

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

JDBCUtil.closeAll(null, ps, conn);

}

return con;

}

// TODO main

public static void main(String[] args) {

StudentDAO dao = new StudentDAOImpl();

System.out.println(dao.findStudentListByPageCount());

}

}

3.创建servlet文件StudentAddAction.java接收用户传入的值,添加到数据库并展示到list.jsp(增)

package com.fyl.web;

import java.io.IOException;

import java.io.PrintWriter;

import java.text.DateFormat;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.fyl.dao.StudentDAO;

import com.fyl.dao.impl.StudentDAOImpl;

import com.fyl.entity.Student;

public class StudentAddAction extends HttpServlet {

private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//设置请求来源的编码

request.setCharacterEncoding("UTF-8");

//1. 接收页面数据

String studentName = request.getParameter("studentName");

String studentAge = request.getParameter("studentAge");

String intoDate = request.getParameter("intoDate");

String money = request.getParameter("money");

//2. 封装

Student student = new Student();

student.setName(studentName);

student.setAge(Integer.parseInt(studentAge));

student.setMoney(Double.parseDouble(money));

// String 转 时间

DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

try {

Date d = df.parse(intoDate);

student.setDate(d);

} catch (ParseException e) {

e.printStackTrace();

}

// 3. 创建DAO层对象添加到数据库

StudentDAO dao = new StudentDAOImpl();

boolean con = dao.insertStudent(student);

if(con){

// 添加成功

response.sendRedirect("StudentViewAction");

}else{

// 添加失败

// 通过服务器的响应流主动向客户端发送信息

response.setCharacterEncoding("UTF-8");

response.setContentType("text/html; charset=UTF-8");

String msg = "";

PrintWriter out = response.getWriter();

out.print(msg);

out.flush();

out.close();

}

}

}

4.创建servlet文件StudentDeleteAction.java接收用户传入的值,删除数据库中指定文件并展示到list.jsp(删)

package com.fyl.web;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.fyl.dao.StudentDAO;

import com.fyl.dao.impl.StudentDAOImpl;

public class StudentDeleteAction extends HttpServlet {

private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//1. 确定编码

request.setCharacterEncoding("UTF-8");

//2. 获取页面数据

String id = request.getParameter("id");

//3. 创建DAO方法执行删除

StudentDAO dao = new StudentDAOImpl();

boolean con = dao.deleteStudent(Integer.parseInt(id));

if(con){

//添加成功

response.sendRedirect("StudentViewAction");

}else{

//添加失败

response.setCharacterEncoding("UTF-8");

response.setContentType("text/html; charset=UTF-8");

String msg = "";

PrintWriter out = response.getWriter();

out.print(msg);

out.flush();

out.close();

}

}

}

创建servlet文件StudentFindByIDViewAction.java接收用户传入的值,查询数据库中指定文件并展示到list.jsp(查)

package com.fyl.web;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.fyl.dao.StudentDAO;

import com.fyl.dao.impl.StudentDAOImpl;

import com.fyl.entity.Student;

public class StudentFindByIDViewAction extends HttpServlet {

private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//设置编码

request.setCharacterEncoding("UTF-8");

//接收页面输入

String id = request.getParameter("id");

//创建DAO层对象

StudentDAO dao = new StudentDAOImpl();

Student student = dao.findStudentByID(new Integer(id));

request.setAttribute("stu", student);

request.getRequestDispatcher("update.jsp").forward(request, response);

}

}

6.创建servlet文件StudentUpdateAction.java接收用户传入的值,更新数据库中指定文件并展示到list.jsp(改)

package com.fyl.web;

import java.io.IOException;

import java.io.PrintWriter;

import java.text.DateFormat;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.fyl.dao.StudentDAO;

import com.fyl.dao.impl.StudentDAOImpl;

import com.fyl.entity.Student;

public class StudentUpdateAction extends HttpServlet {

private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//设置请求来源的编码格式

request.setCharacterEncoding("UTF-8");

//1. 设置接收页面数据

String studentId = request.getParameter("studentId");

String studentName = request.getParameter("studentName");

String studentAge = request.getParameter("studentAge");

String intoDate = request.getParameter("Date");

String money = request.getParameter("money");

//2. 封装

Student student = new Student();

String studentId1 = studentId.trim();

student.setId(Integer.parseInt(studentId1));

student.setName(studentName);

student.setAge(Integer.parseInt(studentAge));

student.setMoney(Double.parseDouble(money));

//String转时间

DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

try {

Date d = df.parse(intoDate);

student.setDate(d);

} catch (ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//3. 创建DAO层对象添加到数据库

StudentDAO dao = new StudentDAOImpl();

boolean con = dao.updateStudent(student);

if(con)0.{

//添加成功

response.sendRedirect("StudentViewAction");

}else{

//添加失败

//通过服务器的响应流主动向客户端发送信息

response.setCharacterEncoding("UTF-8");

response.setContentType("text/html; charset=UTF-8");

String msg = "";

PrintWriter out = response.getWriter();

out.print(msg);

out.flush();

out.close();

}

}

}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 浏览器 安全_安全策略-IE浏览器防黑十大秘籍

1.管理好Cookie在IE6.0中&#xff0c;打开“工具”→“Internet选项”→“隐私”对话框&#xff0c;这里设定了“阻止所有Cookie”、“高”、“中高”、“中”、“低”、“接受所有Cookie”六个级别&#xff0c;你只要拖动滑块就可以方便地进行设定&#xff0c;而点击下方的“编…

php截取指定字符串之后,php截取字符串(截取指定字符串之间的字符串)

一、PHP截取两个指定字符后边的字符$a "123abc#456";$b (strpos($a,""));$c (strpos($a,"#"));echo substr($a,$b1,$c-1);二、常用截取字符串技巧。//构造字符串$str "ABCDEFGHIJKLMNOPQRSTUVWXYZ";echo "原字符串&#xff1a;…

php 获取key的位置,PHP获取当前所在目录位置的方法

本文实例讲述了PHP获取当前所在目录位置的方法。分享给大家供大家参考。具体分析如下&#xff1a;如果要获取脚本文件的目录&#xff0c;要应用函数getcwd()来实现。函数声明如下&#xff1a;string getcwd ( void ) ;成功执行后返回当前目录字符串&#xff0c;失败返回FALSE。…

php连接数据库navicat,navicat数据库如何连接php

第一步&#xff0c;打开Navicat&#xff0c;新建数据库。第二步&#xff0c;在数据库中新建表。相关推荐&#xff1a;《Navicat for mysql使用图文教程》第三步&#xff0c;保存表。第四步&#xff0c;表中添加数据。第五步&#xff0c;打开ide&#xff0c;输入以下php代码&…

每日一题:LCR 095.最长公共子序列(DP)

题目描述&#xff1a; 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删除某些…

php自动合并,php实现合并数组并去除重复的方法

php实现合并数组并去除重复的方法发布时间&#xff1a;2020-08-12 10:35:05来源&#xff1a;亿速云阅读&#xff1a;99作者&#xff1a;小新这篇文章主要介绍了php实现合并数组并去除重复的方法&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这…

linux内核运行关系图,一张图看懂Linux内核运行交互关系

很多朋友如果接触过Linux的都知道Kernel的含义&#xff0c;kernel是操作系统的核心或者最重要的部分。众所周知的是&#xff0c;几乎整个互联网都运行在 Linux上&#xff0c;从网络协议&#xff0c;到服务器&#xff0c;到你平常访问的绝大多数网站&#xff0c;都能看到它的身…

linux内核bios,BIOS的启动原理——Linux内核设计学习笔记

RAM&#xff1a;随机存取存储器&#xff0c;常见的内存条就是一类RAM&#xff0c;其特点是加电状态下可任意读、写&#xff0c;断电后信息消失。在RAM中什么程序也没有的时候&#xff0c;谁来完成加载软盘中操作系统的任务呢&#xff1f;答案是&#xff1a;BIOS。BIOS的启动原理…

Linux下仿windows任务管理器,开源任务管理器 Process Hacker (Windows)

Windows表面上没有工作在进行中&#xff0c;但不知为何负荷很重&#xff0c;究竟有什么进程在执行&#xff1f;会不会是系统已经被入侵&#xff1f;这是很多人都想知道的问题。但Windows自带的任务管理员实在太过简陋&#xff0c;解决办法便是安装这次介绍的Process Hacker。熟…

嵌入式linux中的锁机制,跟涛哥一起学嵌入式第11集:一个实现锁机制非常有意思的宏...

QQ群(宅学部落)有位学员问了一个很奇怪的宏&#xff0c;觉得很有意思&#xff0c;特拿来分享&#xff0c;它的定义如下:我们知道&#xff0c;宏定义其实就是为了方便&#xff0c;给一串代码字符串定义一个别名。有时候字符串过于复杂&#xff0c;我们可以分多行书写&#xff0c…

linux core 永久生效,【调试】Core Dump是什么?Linux下如何正确永久开启?

内容简介【调试】Core Dump是什么&#xff1f;Linux下如何正确永久开启&#xff1f;Core Dump是什么&#xff1f;Linux下如何正确永久开启&#xff1f;Core Dump是什么&#xff1f;Core Dump乍听之下很抽象。当程序运行的过程中异常终止或崩溃&#xff0c;操作系统会将程序当时…

用于用户C语言标识符,下列可用于C语言用户标识符的一组是( )

摘要&#xff1a;下列不属于骨肉瘤患者常见护理问题()于C语言用户组Since people send nonverbal signals through multiple channels simultaneously, it is impossible to increase our nonverbal communication competence by becoming more aware of how it operates in sp…

c语言猜四位数游戏猜10次,C语言猜数字游戏--随机生成4个不相同的数字从小到大排序,用户开始游戏,如果用户猜对数字和数字对应的位置,界面回馈A,如果数字正确位置不正确,则回馈B...

1.看程序运行截图吧&#xff01;&#xff01;由于博主本人较笨&#xff0c;就不动画演示了&#xff0c;如果动画的话可能将是一个漫长的过程&#xff01;猜数字游戏.png2.游戏题目随机生成4个不相同的数字从小到大排序&#xff0c;用户开始游戏&#xff0c;如果用户猜对数字和数…

双端堆c语言,数据结构——双端堆(C语言)

定义双端堆&#xff1a;是一棵完全二叉树&#xff0c;该完全二叉树要么为空&#xff0c;要么同时满足下列性质&#xff1a;(1) 根节点不包含元素&#xff1b;(2) 左子树是一个最小堆&#xff1b;(3) 右子树是一个最大堆&#xff1b;(4) 如果右子树不空&#xff0c;令i是左子树中…

C语言和我的世界指令哪个难,我的世界难度有什么区别 难度选择指令介绍

我的世界中的难度(Difficulty)可以在Minecraft的选项菜单内切换。更改这个选项将直接影响到游戏本身。选项中并没有设定影响攻击性生物的可生成数量&#xff0c;包括和平模式。目前游戏共有和平、简单、普通和困难4种难度。我的世界难度区别和平&#xff1a;会生成攻击性生物&a…

w ndows10即将停止更新,微软开始警告Windows 10 v1909用户即将停止更新服务

如果您仍在运行Windows 10版本1909&#xff0c;版本1903或更早版本&#xff0c;则可能已经在系统任务栏中注意到一条新消息&#xff1a;Windows 10版本即将终止服务。根据Windows 10 May 2020 Update或2020年10月Update。为了将用户升级到最新版本的Windows 10&#xff0c;“您…

Android10不能用谷歌,谷歌真的很严格,一大波老APP将不能在安卓10.0运行

苹果iOS的一大优点就是软件生态&#xff0c;第三方APP都会主动适配新的iOS系统以及手机。虽然说Android的开放性是也是一大优点&#xff0c;但是第三方软件参差不齐的优化适配水平也让安卓的用户非常头疼。不过谷歌每年都在致力于让Android的软件生态更好。根据XDA的报道&#…

c语言编程季节输出春夏秋冬,c语言编程题: 用枚类型定义春、夏、秋、冬四个季节...

满意答案bcabcdefg2013.07.28采纳率&#xff1a;49% 等级&#xff1a;12已帮助&#xff1a;5373人#includeenum season{spring 1,summer,autumn,winter,};season GetSeasonByMonth(char month){if(month < 3 && month>1)return spring;else if(month < 6 …

华为升级harmonyos的机型名单,华为鸿蒙 OS 2.0 系统适配名单已出,四月推送,天玑机型暂时无缘...

原标题&#xff1a;华为鸿蒙 OS 2.0 系统适配名单已出&#xff0c;四月推送&#xff0c;天玑机型暂时无缘华为官方在 2020 年发布了旗下自研系统“HarmonyOS 2.0”版本&#xff0c;发布会现场展示了 HarmonyOS 2.0 开发者 Beta 版本&#xff0c;并开启开发者 Beta 的公测。此外…

android 混合开发 图片,混合开发的大趋势之一React Native之Image

文章是宝宝自己写的&#xff0c;你可以转走&#xff0c;标明哪来的就行王亟亟的大牛之路国庆这些天要么旅游要么WOW&#xff0c;感觉整个人都废了。。直接从黄种人晒成了非洲大酋长。。然而还是无橙&#xff0c;这礼拜要做7天&#xff0c;昨天把单元测试的东西整完后今天下午抽…