主頁 > 後端開發 > 【SaaS - Export專案】12 - RBAC權限 - 單表角色Role的CRUD

【SaaS - Export專案】12 - RBAC權限 - 單表角色Role的CRUD

2020-11-06 07:50:55 後端開發

文章目錄

    • Role角色的CRUD
      • 1. export_domain子工程Role角色類
      • 2. export_system_service子工程撰寫測驗類測驗角色的CRUD
      • 3. export_system_service子工程的service介面和實作類
      • 4. export_dao子工程寫dao介面及其映射
      • 5. 測驗業務功能CRUD(沒問題就進行頁面開發)
      • 6. export_web_manager子工程撰寫controller
      • 7. export_web_manager子工程撰寫jsp頁面

Role角色的CRUD

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

1. export_domain子工程Role角色類

//角色類
public class Role {
    private String roleId;
    private String name;
    private String remark;
    private long orderNo;
    private String createBy;
    private String createDept;
    private Date createTime;
    private String updateBy;
    private Date updateTime;
    //不同的公司使用不同的角色,但都放在同一表里面,區分的方式
    private String companyId;
    //每條記錄 通過companyId,companyName指定所屬
    private String companyName;
}

2. export_system_service子工程撰寫測驗類測驗角色的CRUD

TestRoleService

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:spring/applicationContext-*.xml")
public class TestRoleService {
    private static final Logger l = LoggerFactory.getLogger(TestRoleService.class);

    @Autowired
    IRoleService iRoleService;

    //測驗角色分頁顯示
    @Test
    public void test01(){
        //分頁串列
        //頁面上顯示分頁串列,就要求業務方法中提供查詢PageInfo的方法
       PageInfo<Role>  pi= iRoleService.findByPage(1,3,"1");
       l.info("分頁角色 pi = "+pi);
    }

    //測驗添加角色
    @Test
    public void test02(){
        //將一個表單資料保存在javaBean中,再將javaBean存到資料庫
        Role role = new Role();
        role.setName("save添加角色");
        role.setRemark("save添加角色 - 備注");
        role.setCompanyId("1");
        role.setCompanyName("吉首大學");
        iRoleService.saveRole(role);
    }

    //測驗更新角色
    @Test
    public void test03(){
        //更新業務  先根據id查找出對應的一條記錄,編輯它的值,再將記錄保存到資料庫中
        String roleId="e7313d5b-993e-452a-a5ac-a2bdd935d0f0";
        //查找
        Role role =  iRoleService.findById(roleId);
        l.info("role="+role);
        //修改
        role.setName("更新角色name");
        role.setRemark("更新角色remark備注");
        //保存
       iRoleService.updateRole(role);
    }
    //測驗通過id洗掉角色
    @Test
    public void test04(){
        //洗掉業務,就是根據指定的id,洗掉資料庫中的記錄
        String roleId="e7313d5b-993e-452a-a5ac-a2bdd935d0f0";
        //洗掉
        iRoleService.deleteRole(roleId);

    }
}

3. export_system_service子工程的service介面和實作類

IRoleService


//角色業務類
public interface IRoleService {
    //查找素有角色,并分頁顯示  參1:當前頁  參2:每頁資料大小 參3:公司id
    PageInfo<Role> findByPage(int curr, int pageSize, String companyId);
    //通過id查找角色
    Role findById(String roleId);
    //保存角色
    void saveRole(Role role);
    //更新角色
    void updateRole(Role role);
    //洗掉角色
    void deleteRole(String roleId);
}

RoleServiceImpl

@Service
public class RoleServiceImpl implements IRoleService {

    @Autowired
    IRoleDao iRoleDao;
    @Override
    public PageInfo<Role> findByPage(int curr, int pageSize, String companyId) {
        //設定分頁引數
        PageHelper.startPage(curr,pageSize);
        //呼叫全查
        List<Role> list = iRoleDao.findAll(companyId);
        //包裝成PageInfo發送給前臺jsp
        PageInfo<Role> pi = new PageInfo<>(list);
        return pi;
    }

    @Override
    public void saveRole(Role role) {
        String uuid= UUID.randomUUID().toString();
        role.setRoleId(uuid);
        iRoleDao.save(role);
    }

    @Override
    public Role findById(String roleId) {
        return iRoleDao.findById(roleId);
    }

    @Override
    public void updateRole(Role role) {
        iRoleDao.update(role);
    }

    @Override
    public void deleteRole(String roleId) {
        iRoleDao.deleteById(roleId);
    }
}

4. export_dao子工程寫dao介面及其映射

IRoleDao

//角色dao
public interface IRoleDao {
    List<Role> findAll(String companyId);

    void save(Role role);

    Role findById(String roleId);
    void update(Role role);

    void deleteById(String roleId);
}

IRoleDao.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<mapper namespace="com.xgf.dao.system.role.IRoleDao">

   <!-- resultType 指定一個java型別,要求表的欄位與變數的名稱一致
    resultMap  適用表欄位和類屬性名不一致的情況(還有一對一、一對多)
    column是資料庫表欄位   property是類的屬性名稱
    -->
    <resultMap id="roleMap" type="role">
        <id column="role_id"          property="roleId"       />
        <result column="name"         property="name"         />
        <result column="remark"       property="remark"       />
        <result column="order_no"     property="orderNo"      />
        <result column="create_by"    property="createBy"     />
        <result column="create_dept"  property="createDept"   />
        <result column="create_time"  property="createTime"   />
        <result column="update_by"    property="updateBy"     />
        <result column="update_time"  property="updateTime"   />
        <result column="company_id"   property="companyId"    />
        <result column="company_name" property="companyName"  />
    </resultMap>

    <!-- 查詢所有角色,通過order_no(升序)排序 -->
    <select id="findAll" parameterType="string" resultMap="roleMap">
        select * from pe_role where company_id=#{companyId} order by order_no
    </select>

    <!-- 增加一個角色 -->
    <insert id="save" parameterType="role">
        insert into pe_role
        (
        role_id       ,
        name          ,
        remark        ,
        order_no      ,
        create_by     ,
        create_dept   ,
        create_time   ,
        update_by     ,
        update_time   ,
        company_id    ,
        company_name
        )
        values
        (
        #{roleId      },
        #{name        },
        #{remark      },
        #{orderNo     },
        #{createBy    },
        #{createDept  },
        #{createTime  },
        #{updateBy    },
        #{updateTime  },
        #{companyId   },
        #{companyName }

        )

    </insert>

    <!-- 通過id查找角色 -->
    <select id="findById" parameterType="string" resultMap="roleMap">
        select * from pe_role where role_id=#{roleId}
    </select>

    <!-- 更新角色資訊 -->
    <update id="update" parameterType="role">
            update pe_role set

            name         = #{name       },
            remark       = #{remark     },
            order_no     = #{orderNo    },
            create_by    = #{createBy   },
            create_dept  = #{createDept },
            create_time  = #{createTime },
            update_by    = #{updateBy   },
            update_time  = #{updateTime },
            company_id   = #{companyId  },
            company_name = #{companyName}

            where role_id = #{roleId}
    </update>

    <!-- 通過id洗掉角色 -->
    <delete id="deleteById" parameterType="string">
            delete from pe_role where role_id=#{roleId}
    </delete>
</mapper>

5. 測驗業務功能CRUD(沒問題就進行頁面開發)

5.1 測驗查詢角色分頁顯示功能的findByPage方法
在這里插入圖片描述

5.2 測驗增加角色的添加方法saveRole
在這里插入圖片描述
添加成功:
在這里插入圖片描述
5.3 測驗更新角色的更新方法updateRole(先查詢資料回顯后更新資料)
在這里插入圖片描述
更新成功
在這里插入圖片描述
5.4 測驗洗掉角色的洗掉方法deleteRole
在這里插入圖片描述

6. export_web_manager子工程撰寫controller

RoleController
繼承基類BaseController,因為每個公司的角色不同,顯示角色資料不同,BaseController就是登錄公司標識(當前默認id=1的公司)

@Controller
@RequestMapping("/system/role")
public class RoleController extends BaseController {
    //記錄日志
    private static  final Logger l = LoggerFactory.getLogger(RoleController.class);

    @Autowired
    IRoleService iRoleService;


    //角色分頁顯示
    @RequestMapping(path="/toList",method ={ RequestMethod.GET, RequestMethod.POST})
    public String toList(@RequestParam(defaultValue = "1") int curr, @RequestParam(defaultValue = "10")int pageSize){
        //調查詢分頁串列的方法,如果沒有傳遞分頁引數默認第一頁,每頁10條資料
        PageInfo<Role> pi = iRoleService.findByPage(curr, pageSize, getLoginCompanyId());
        //將pi傳給jsp頁面
        request.setAttribute("pi",pi);
        return "system/role/role-list";
    }

    //去角色增加頁面
    @RequestMapping(path="/toAdd",method ={ RequestMethod.GET, RequestMethod.POST})
    public String toAdd(){
        return "system/role/role-add";
    }

    //添加角色
    @RequestMapping(path="/add",method ={ RequestMethod.GET, RequestMethod.POST})
    public String add(Role role){//接收頁面提交過來的表單
        l.info("add role=" + role);
        role.setCompanyId(getLoginCompanyId());
        role.setCompanyName(getLoginCompanyName());
        iRoleService.saveRole(role);
        //添加成功
        return "redirect:/system/role/toList";
    }

    // 更新回顯頁面 ${path}/system/role/toUpdate?roleId=${o.roleId}
    @RequestMapping(path="/toUpdate",method ={ RequestMethod.GET, RequestMethod.POST})
    public String toUpdate(String roleId){//需要使用引數接收提交的 roleId
        Role role =  iRoleService.findById(roleId);
        l.info("toUpdate role="+role);

        //回顯到頁面
        request.setAttribute("role",role);
        return "system/role/role-update";
    }

    //更新角色  action="${path}/system/role/update"
    @RequestMapping(path="/update",method ={ RequestMethod.GET, RequestMethod.POST})
    public String update(Role role){//需要接收編輯頁面提交的表單資料
        l.info("update role="+role);
        //更新角色
        //重新設定companyId companyName(不能更改登錄的公司資訊 - 角色從屬與公司,不同公司不同角色,不能更改為其他公司的)
        role.setCompanyId(getLoginCompanyId());
        role.setCompanyName(getLoginCompanyName());

        iRoleService.updateRole(role);
        return "redirect:/system/role/toList";
    }

    // 洗掉角色ajax異步提示  ${path}/system/role/delete?roleId='+id;  {code:200,msg:'洗掉成功',data:null}
    @RequestMapping(path="/delete",method ={ RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public Object delete(String roleId){//引數接收頁面js提交過來的roleId
        try {
            iRoleService.deleteRole(roleId);
            //成功
            return Msg.init(200,"角色編號【roleId = " + roleId + "】的角色洗掉成功",null);
        } catch (Exception e) {
            e.printStackTrace();
            //失敗
            return Msg.init(-200,"角色編號【roleId = " + roleId + "】的角色洗掉失敗",null);
        }
    }

}

7. export_web_manager子工程撰寫jsp頁面

role-list.jsp

<!--工具列-->
                <div class="pull-left">
                    <div class="form-group form-inline">
                        <div class="btn-group">
                            <button type="button" class="btn btn-default" title="新建" onclick='location.href="${path}/system/role/toAdd"'><i class="fa fa-file-o"></i> 新建</button>
                            <button type="button" class="btn btn-default" title="洗掉" onclick='deleteById()'><i class="fa fa-trash-o"></i> 洗掉</button>
                            <button type="button" class="btn btn-default" title="重繪" onclick="window.location.reload();"><i class="fa fa-refresh"></i> 重繪</button>
                            <button type="button" class="btn btn-default" title="權限" onclick="findModuleByRoleId()"><i class="fa fa-users"></i> 權限</button>
                        </div>
                    </div>
                </div>


    <!--資料串列-->
    <table id="dataList" class="table table-bordered table-striped table-hover dataTable">
        <thead>
        <tr>
            <th class="" style="padding-right:0px;">
                <input type="checkbox" name="selid" onclick="checkAll('id',this)">
            </th>
            <th class="sorting">序號</th>
            <th class="sorting">編號</th>
            <th class="sorting">名稱</th>
            <th class="sorting">說明</th>
            <th class="text-center">操作</th>
        </tr>
        </thead>
        <tbody>
        <c:forEach items="${pi.list}" var="o" varStatus="status">
        <tr class="odd" onmouseover="this.className='highlight'" onmouseout="this.className='odd'" >
            <td><input type="checkbox" name="roleId" value="${o.roleId}"/></td>
            <td>${status.index+1}</td>
            <td>${o.roleId}</td>
            <td><a href="${path}/system/role/toUpdate?roleId=${o.roleId}">${o.name}</a></td>
            <td>${o.remark}</td>
            <th class="text-center"><button type="button" class="btn bg-olive btn-xs" onclick='location.href="${path}/system/role/toUpdate?roleId=${o.roleId}"'>編輯</button></th>
        </tr>
        </c:forEach>
        </tbody>
    </table>

        <%-- 分頁資訊 --%>
        <div class="box-footer">
            <jsp:include page="../../common/page.jsp">
                <jsp:param value="${path}/system/role/toList" name="pageUrl"/>
            </jsp:include>
        </div>

role-add.jsp

    <form id="editForm" action="${path}/system/role/add" method="post">
        <div class="tab-pane active" id="tab-form">
            <div class="row data-type">
                <div class="col-md-2 title">角色名</div>
                <div class="col-md-10 data">
                    <input type="text" class="form-control" placeholder="角色名" name="name" value="${role.name}">
                </div>
                <div class="col-md-2 title">備注</div>
                <div class="col-md-10 data line-height36">
                    <input type="text" class="form-control" placeholder="備注" name="remark" value="${role.remark}">
                </div>
                <div class="col-md-2 title"></div>
                <div class="col-md-10 data text-center">
                    <%-- 提交表單 --%>
                    <button type="button" onclick='document.getElementById("editForm").submit()'  class="btn bg-maroon">保存</button>
                    <button type="button" class="btn bg-default" onclick="history.back(-1);">回傳</button>
                </div>
            </div>
        </div>
    </form>

role-update.jsp

    <form id="editForm" action="${path}/system/role/update" method="post">
        <input type="hidden" name="roleId" value="${role.roleId}">
        <div class="tab-pane active" id="tab-form">
            <div class="row data-type">
                <div class="col-md-2 title">角色名</div>
                <div class="col-md-10 data">
                    <input type="text" class="form-control" placeholder="角色名" name="name" value="${role.name}">
                </div>
                <div class="col-md-2 title">備注</div>
                <div class="col-md-10 data line-height36">
                    <input type="text" class="form-control" placeholder="備注" name="remark" value="${role.remark}">
                </div>
                <div class="col-md-2 title"></div>
                <div class="col-md-10 data text-center">
                    <button type="button" onclick='document.getElementById("editForm").submit()'  class="btn bg-maroon">保存</button>
                    <button type="button" class="btn bg-default" onclick="history.back(-1);">回傳</button>
                </div>
            </div>
        </div>
    </form>

洗掉的ajax

<script>
    function deleteById() {
        var id = getCheckId()
        if(id) {
            if(confirm("你確認要洗掉此條記錄嗎?")) {
                // location.href="/system/role/delete?id="+id;      //非ajax請求
                //使用ajax請求
                var url= '${path}/system/role/delete?roleId='+id;
                var fn = function(result){ //{code:200,msg:'洗掉成功',data:null}
                    //彈出提示
                    alert(result.msg)
                    window.location.reload() //重新加載
                }
                $.get(url,fn,'json')
            }
        }else{
            alert("請勾選待處理的記錄,且每次只能勾選一個")
        }
    }

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/204134.html

標籤:python

上一篇:cgb2007-京淘day06

下一篇:JDK集合原始碼之HashMap決議(上)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more