Hibernate进阶学习3

测试hibernate的多表关联操作(一对多,多对一,多对多)

表之间的关系主要在类与元数据配置文件中体现

  1. package com.hibernate.domain;
  2.  
  3. import java.util.HashSet;
  4. import java.util.Set;
  5.  
  6. public class Customer {
  7. private Long cust_id;
  8. private String cust_name;
  9. private String cust_source;
  10. private String cust_industry;
  11. private String cust_level;
  12. private String cust_linkman;
  13. private String cust_phone;
  14. private String cust_mobile;
  15.  
  16. /**
  17. * 使用set集合,表达一对多关系
  18. */
  19. private Set<LinkMan> linkMens = new HashSet<LinkMan>();
  20.  
  21. public Set<LinkMan> getLinkMens() {
  22. return linkMens;
  23. }
  24.  
  25. public void setLinkMens(Set<LinkMan> linkMens) {
  26. this.linkMens = linkMens;
  27. }
  28.  
  29. public Long getCust_id() {
  30. return cust_id;
  31. }
  32.  
  33. public void setCust_id(Long cust_id) {
  34. this.cust_id = cust_id;
  35. }
  36.  
  37. public String getCust_name() {
  38. return cust_name;
  39. }
  40.  
  41. public void setCust_name(String cust_name) {
  42. this.cust_name = cust_name;
  43. }
  44.  
  45. public String getCust_source() {
  46. return cust_source;
  47. }
  48.  
  49. public void setCust_source(String cust_source) {
  50. this.cust_source = cust_source;
  51. }
  52.  
  53. public String getCust_industry() {
  54. return cust_industry;
  55. }
  56.  
  57. public void setCust_industry(String cust_industry) {
  58. this.cust_industry = cust_industry;
  59. }
  60.  
  61. public String getCust_level() {
  62. return cust_level;
  63. }
  64.  
  65. public void setCust_level(String cust_level) {
  66. this.cust_level = cust_level;
  67. }
  68.  
  69. public String getCust_linkman() {
  70. return cust_linkman;
  71. }
  72.  
  73. public void setCust_linkman(String cust_linkman) {
  74. this.cust_linkman = cust_linkman;
  75. }
  76.  
  77. public String getCust_phone() {
  78. return cust_phone;
  79. }
  80.  
  81. public void setCust_phone(String cust_phone) {
  82. this.cust_phone = cust_phone;
  83. }
  84.  
  85. public String getCust_mobile() {
  86. return cust_mobile;
  87. }
  88.  
  89. public void setCust_mobile(String cust_mobile) {
  90. this.cust_mobile = cust_mobile;
  91. }
  92.  
  93. @Override
  94. public String toString() {
  95. return "Customer [cust_id=" + cust_id + ", " +
  96. "cust_name=" + cust_name + "]";
  97. }
  98.  
  99. }
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  3. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  4. <!-- 配置表与实体对象的关系 -->
  5. <hibernate-mapping package="com.hibernate.domain">
  6. <!-- class元素: 配置实体与表的对应关系的 -->
  7. <class name="Customer" table="cst_customer">
  8. <!-- id元素:配置主键映射的属性 -->
  9. <id name="cust_id">
  10. <!-- generator:主键生成策略,每条数据录入时,主键的生成规则 -->
  11. <generator class="native"></generator>
  12. </id>
  13. <!-- property元素:除id之外的普通属性映射 -->
  14. <property name="cust_name" column="cust_name"></property>
  15. <property name="cust_source" column="cust_source"></property>
  16. <property name="cust_industry" column="cust_industry"></property>
  17. <property name="cust_level" column="cust_level"></property>
  18. <property name="cust_linkman" column="cust_linkman"></property>
  19. <property name="cust_phone" column="cust_phone"></property>
  20. <property name="cust_mobile" column="cust_mobile"></property>
  21.  
  22. <!-- 集合,一对多关系,在配置文件中配置 -->
  23. <!-- name属性:集合属性名
  24. column属性:外键列名
  25. class属性:与我关联的对象完整类名 -->
  26. <!-- 级联操作:cascade
  27. save-update:级联保存更新
  28. delete:级联删除
  29. all:save-update+delete
  30. 级联操作:简化操作,目的就是为了少写两行代码 -->
  31. <!-- inverse属性:配置关系是否维护
  32. true:customer不维护关系
  33. false(默认值):customer维护关系
  34.  
  35. inverse属性:性能优化,提高关系维护的性能
  36. 原则:无论怎么放弃,总有一方必须要维护关系
  37. 一对多关系中:一的一方放弃,也只能一的一方放弃,多的一方不能放弃 -->
  38. <set name="linkMens" inverse="true" cascade="delete">
  39. <key column="lkm_cust_id"></key>
  40. <one-to-many class="LinkMan"/>
  41. </set>
  42. </class>
  43. </hibernate-mapping>
  1. package com.hibernate.domain;
  2.  
  3. public class LinkMan {
  4. private Long lkm_id;
  5. private Character lkm_gender;
  6. private String lkm_name;
  7. private String lkm_phone;
  8. private String lkm_email;
  9. private String lkm_qq;
  10. private String lkm_mobile;
  11. private String lkm_memo;
  12. private String lkm_position;
  13.  
  14. /**
  15. * 表达多对一关系
  16. */
  17. private Customer customer;
  18.  
  19. public Customer getCustomer() {
  20. return customer;
  21. }
  22.  
  23. public void setCustomer(Customer customer) {
  24. this.customer = customer;
  25. }
  26.  
  27. public Long getLkm_id() {
  28. return lkm_id;
  29. }
  30.  
  31. public void setLkm_id(Long lkm_id) {
  32. this.lkm_id = lkm_id;
  33. }
  34.  
  35. public Character getLkm_gender() {
  36. return lkm_gender;
  37. }
  38.  
  39. public void setLkm_gender(Character lkm_gender) {
  40. this.lkm_gender = lkm_gender;
  41. }
  42.  
  43. public String getLkm_name() {
  44. return lkm_name;
  45. }
  46.  
  47. public void setLkm_name(String lkm_name) {
  48. this.lkm_name = lkm_name;
  49. }
  50.  
  51. public String getLkm_phone() {
  52. return lkm_phone;
  53. }
  54.  
  55. public void setLkm_phone(String lkm_phone) {
  56. this.lkm_phone = lkm_phone;
  57. }
  58.  
  59. public String getLkm_email() {
  60. return lkm_email;
  61. }
  62.  
  63. public void setLkm_email(String lkm_email) {
  64. this.lkm_email = lkm_email;
  65. }
  66.  
  67. public String getLkm_qq() {
  68. return lkm_qq;
  69. }
  70.  
  71. public void setLkm_qq(String lkm_qq) {
  72. this.lkm_qq = lkm_qq;
  73. }
  74.  
  75. public String getLkm_mobile() {
  76. return lkm_mobile;
  77. }
  78.  
  79. public void setLkm_mobile(String lkm_mobile) {
  80. this.lkm_mobile = lkm_mobile;
  81. }
  82.  
  83. public String getLkm_memo() {
  84. return lkm_memo;
  85. }
  86.  
  87. public void setLkm_memo(String lkm_memo) {
  88. this.lkm_memo = lkm_memo;
  89. }
  90.  
  91. public String getLkm_position() {
  92. return lkm_position;
  93. }
  94.  
  95. public void setLkm_position(String lkm_position) {
  96. this.lkm_position = lkm_position;
  97. }
  98.  
  99. }
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  3. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  4. <hibernate-mapping package="com.hibernate.domain">
  5. <class name="LinkMan" table="cst_linkman">
  6. <id name="lkm_id">
  7. <generator class="native"></generator>
  8. </id>
  9. <property name="lkm_gender"></property>
  10. <property name="lkm_name"></property>
  11. <property name="lkm_phone"></property>
  12. <property name="lkm_email"></property>
  13. <property name="lkm_qq"></property>
  14. <property name="lkm_mobile"></property>
  15. <property name="lkm_memo"></property>
  16. <property name="lkm_position"></property>
  17.  
  18. <!-- 多对一 -->
  19. <!-- name属性:引用属性名
  20. column属性:外键列名
  21. class属性:与我关联的对象完整类名 -->
  22. <!-- 级联操作:cascade
  23. save-update:级联保存更新
  24. delete:级联删除
  25. all:save-update+delete
  26. 级联操作:简化操作,目的就是为了少写两行代码 -->
  27. <!-- 多的一方:不能放弃维护关系的,外键字段就在多的一方 -->
  28. <many-to-one name="customer" column="lkm_cust_id" class="Customer">
  29. </many-to-one>
  30. </class>
  31. </hibernate-mapping>
  1. package com.hibernate.domain;
  2.  
  3. import java.util.HashSet;
  4. import java.util.Set;
  5.  
  6. public class Role {
  7. private Long role_id;
  8. private String role_name;
  9. private String role_memo;
  10.  
  11. /**
  12. * 表达多对多
  13. */
  14. private Set<User> users = new HashSet<User>();
  15.  
  16. public Long getRole_id() {
  17. return role_id;
  18. }
  19.  
  20. public void setRole_id(Long role_id) {
  21. this.role_id = role_id;
  22. }
  23.  
  24. public String getRole_name() {
  25. return role_name;
  26. }
  27.  
  28. public void setRole_name(String role_name) {
  29. this.role_name = role_name;
  30. }
  31.  
  32. public String getRole_memo() {
  33. return role_memo;
  34. }
  35.  
  36. public void setRole_memo(String role_memo) {
  37. this.role_memo = role_memo;
  38. }
  39.  
  40. public Set<User> getUsers() {
  41. return users;
  42. }
  43.  
  44. public void setUsers(Set<User> users) {
  45. this.users = users;
  46. }
  47.  
  48. }
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  3. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  4. <hibernate-mapping package="com.hibernate.domain">
  5. <class name="Role" table="sys_role">
  6. <id name="role_id">
  7. <generator class="native"></generator>
  8. </id>
  9. <property name="role_name"></property>
  10. <property name="role_memo"></property>
  11.  
  12. <!-- 使用inverse属性
  13. true:放弃维护外键关系
  14. false(默认值):维护关系
  15.  
  16. 结论:将来在开发中,如果遇到多对多关系,一定要选择一方放弃维护关系;
  17. 一般谁来放弃要看业务方向,例如录入员工时,需要为员工指定所属角色,
  18. 那么业务方向就是由员工维护角色,角色不需要维护与员工关系,角色放弃维护 -->
  19. <set name="users" table="sys_user_role" inverse="true">
  20. <key column="role_id"></key>
  21. <many-to-many class="User" column="user_id"></many-to-many>
  22. </set>
  23. </class>
  24. </hibernate-mapping>
  1. package com.hibernate.domain;
  2.  
  3. import java.util.HashSet;
  4. import java.util.Set;
  5.  
  6. public class User {
  7. private Long user_id;
  8. private String user_code;
  9. private String user_name;
  10. private String user_password;
  11. private Character user_state;
  12.  
  13. /**
  14. * 表达多对多
  15. */
  16. private Set<Role> roles = new HashSet<Role>();
  17.  
  18. public Long getUser_id() {
  19. return user_id;
  20. }
  21.  
  22. public void setUser_id(Long user_id) {
  23. this.user_id = user_id;
  24. }
  25.  
  26. public String getUser_code() {
  27. return user_code;
  28. }
  29.  
  30. public void setUser_code(String user_code) {
  31. this.user_code = user_code;
  32. }
  33.  
  34. public String getUser_name() {
  35. return user_name;
  36. }
  37.  
  38. public void setUser_name(String user_name) {
  39. this.user_name = user_name;
  40. }
  41.  
  42. public String getUser_password() {
  43. return user_password;
  44. }
  45.  
  46. public void setUser_password(String user_password) {
  47. this.user_password = user_password;
  48. }
  49.  
  50. public Character getUser_state() {
  51. return user_state;
  52. }
  53.  
  54. public void setUser_state(Character user_state) {
  55. this.user_state = user_state;
  56. }
  57.  
  58. public Set<Role> getRoles() {
  59. return roles;
  60. }
  61.  
  62. public void setRoles(Set<Role> roles) {
  63. this.roles = roles;
  64. }
  65. }
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  3. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  4. <hibernate-mapping package="com.hibernate.domain">
  5. <class name="User" table="sys_user">
  6. <id name="user_id">
  7. <generator class="native"></generator>
  8. </id>
  9. <property name="user_code"></property>
  10. <property name="user_name"></property>
  11. <property name="user_password"></property>
  12. <property name="user_state"></property>
  13.  
  14. <!-- 多对多关系表达 -->
  15. <!-- name:集合属性名
  16. table:配置中间表名
  17. key
  18. |-column:外键,别人引用"我"的外键列名
  19. class:我与哪个类是多对多关系
  20. column:外键,我引用比人的外键列名 -->
  21. <!-- cascade级联操作:
  22. save-update:级联保存更新
  23. delete:级联删除
  24. all:级联保存更新+级联删除
  25. 结论:cascade简化代码书写,该属性使不使用无所谓,建议要用只用save-update
  26. 如果使用delete操作太过危险,尤其在多对多中,不建议使用 -->
  27. <set name="roles" table="sys_user_role" cascade="save-update">
  28. <key column="user_id"></key>
  29. <many-to-many class="Role" column="role_id"></many-to-many>
  30. </set>
  31. </class>
  32. </hibernate-mapping>

测试一对多,多对一

  1. package com.hibernate.onetomany;
  2.  
  3. import com.hibernate.domain.Customer;
  4. import com.hibernate.domain.LinkMan;
  5. import com.hibernate.utils.HibernateUtils;
  6. import org.hibernate.Session;
  7. import org.hibernate.Transaction;
  8. import org.junit.Test;
  9.  
  10. /**
  11. * @author: XDZY
  12. * @date: 2018/11/18 19:38
  13. * @description: 测试一对多操作
  14. */
  15. public class Demo01 {
  16. /**
  17. * 添加客户和联系人信息
  18. */
  19. @Test
  20. public void test1() {
  21. //获取session
  22. Session session = HibernateUtils.openSession();
  23. //开启事务
  24. Transaction transaction = session.beginTransaction();
  25.  
  26. /********************* 数据库操作 **********************/
  27.  
  28. Customer customer = new Customer();
  29. customer.setCust_name("xdzy");
  30.  
  31. LinkMan linkMan = new LinkMan();
  32. linkMan.setLkm_name("张三");
  33. LinkMan linkMan2 = new LinkMan();
  34. linkMan2.setLkm_name("李四");
  35.  
  36. customer.getLinkMens().add(linkMan);
  37. customer.getLinkMens().add(linkMan2);
  38.  
  39. linkMan.setCustomer(customer);
  40. linkMan2.setCustomer(customer);
  41.  
  42. session.save(customer);
  43. session.save(linkMan);
  44. session.save(linkMan2);
  45.  
  46. /*******************************************************/
  47.  
  48. //提交事务
  49. transaction.commit();
  50. //关闭资源
  51. session.close();
  52. }
  53.  
  54. /**
  55. * 为客户添加联系人
  56. */
  57. @Test
  58. public void test2() {
  59. //获取session
  60. Session session = HibernateUtils.openSession();
  61. //开启事务
  62. Transaction transaction = session.beginTransaction();
  63.  
  64. /********************* 数据库操作 **********************/
  65.  
  66. Customer customer = session.get(Customer.class, 1L);
  67.  
  68. LinkMan linkMan = new LinkMan();
  69. linkMan.setLkm_name("王五");
  70.  
  71. customer.getLinkMens().add(linkMan);
  72. linkMan.setCustomer(customer);
  73.  
  74. session.save(linkMan);
  75.  
  76. /*******************************************************/
  77.  
  78. //提交事务
  79. transaction.commit();
  80. //关闭资源
  81. session.close();
  82. }
  83.  
  84. /**
  85. * 为客户移除联系人
  86. */
  87. @Test
  88. public void test3() {
  89. //获取session
  90. Session session = HibernateUtils.openSession();
  91. //开启事务
  92. Transaction transaction = session.beginTransaction();
  93.  
  94. /********************* 数据库操作 **********************/
  95.  
  96. Customer customer = session.get(Customer.class, 1L);
  97. LinkMan linkMan = session.get(LinkMan.class, 3L);
  98.  
  99. customer.getLinkMens().remove(linkMan);
  100. linkMan.setCustomer(null);
  101.  
  102. /*******************************************************/
  103.  
  104. //提交事务
  105. transaction.commit();
  106. //关闭资源
  107. session.close();
  108. }
  109. }
  1. package com.hibernate.onetomany;
  2.  
  3. import com.hibernate.domain.Customer;
  4. import com.hibernate.utils.HibernateUtils;
  5. import org.hibernate.Session;
  6. import org.hibernate.Transaction;
  7. import org.junit.Test;
  8.  
  9. /**
  10. * @author: XDZY
  11. * @date: 2018/11/19 8:05
  12. * @description: 测试级联操作
  13. */
  14. public class Demo02 {
  15. /**
  16. * 删除用户时级联删除联系人;cascade:delete
  17. */
  18. @Test
  19. public void test1() {
  20. //获取session
  21. Session session = HibernateUtils.openSession();
  22. //开启事务
  23. Transaction transaction = session.beginTransaction();
  24.  
  25. /********************* 数据库操作 **********************/
  26.  
  27. Customer customer = session.get(Customer.class, 1L);
  28. session.delete(customer);
  29.  
  30. /*******************************************************/
  31.  
  32. //提交事务
  33. transaction.commit();
  34. //关闭资源
  35. session.close();
  36. }
  37. }

测试多得多

  1. package com.hibernate.manytomany;
  2.  
  3. import com.hibernate.domain.Role;
  4. import com.hibernate.domain.User;
  5. import com.hibernate.utils.HibernateUtils;
  6. import org.hibernate.Session;
  7. import org.hibernate.Transaction;
  8. import org.junit.Test;
  9.  
  10. /**
  11. * @author: XDZY
  12. * @date: 2018/11/19 10:15
  13. * @description: 测试多得多操作
  14. */
  15. public class Demo01 {
  16. /**
  17. * 添加员工以及员工的职位
  18. */
  19. @Test
  20. public void test1() {
  21. //获取session
  22. Session session = HibernateUtils.openSession();
  23. //开启事务
  24. Transaction transaction = session.beginTransaction();
  25.  
  26. /********************* 数据库操作 **********************/
  27.  
  28. User user = new User();
  29. user.setUser_name("xdzy");
  30. User user1 = new User();
  31. user1.setUser_name("张三");
  32.  
  33. Role role = new Role();
  34. role.setRole_name("学生");
  35. Role role1 = new Role();
  36. role1.setRole_name("老师");
  37.  
  38. user.getRoles().add(role);
  39. user.getRoles().add(role1);
  40. user1.getRoles().add(role);
  41. user1.getRoles().add(role1);
  42.  
  43. role.getUsers().add(user);
  44. role.getUsers().add(user1);
  45. role1.getUsers().add(user);
  46. role1.getUsers().add(user1);
  47.  
  48. session.save(user);
  49. session.save(user1);
  50. session.save(role);
  51. session.save(role1);
  52.  
  53. /*******************************************************/
  54.  
  55. //提交事务
  56. transaction.commit();
  57. //关闭资源
  58. session.close();
  59. }
  60.  
  61. /**
  62. * 为员工添加一个职位
  63. */
  64. @Test
  65. public void test2() {
  66. //获取session
  67. Session session = HibernateUtils.openSession();
  68. //开启事务
  69. Transaction transaction = session.beginTransaction();
  70.  
  71. /********************* 数据库操作 **********************/
  72.  
  73. User user = session.get(User.class, 1L);
  74. Role role = new Role();
  75. role.setRole_name("班主任");
  76. user.getRoles().add(role);
  77. session.save(user);
  78.  
  79. /*******************************************************/
  80.  
  81. //提交事务
  82. transaction.commit();
  83. //关闭资源
  84. session.close();
  85. }
  86. }

Hibernate进阶学习3的更多相关文章

  1. Hibernate进阶学习4

    Hibernate进阶学习4 深入学习hibernate的查询语句 测试HQL查询 package com.hibernate.test; import com.hibernate.domain.Cu ...

  2. 【SSH进阶之路】Struts + Spring + Hibernate 进阶开端(一)

    [SSH进阶之路]Struts + Spring + Hibernate 进阶开端(一) 标签: hibernatespringstrutsssh开源框架 2014-08-29 07:56 9229人 ...

  3. Hibernate基础学习2

    Hibernate基础学习2 测试hibernate的一级缓存,事务以及查询语句 1)Hibernate的一些相关概念 hibernate的一级缓存 1)缓存是为了提高该框架对数据库的查询速度 2)一 ...

  4. PHP程序员进阶学习书籍参考指南

    PHP程序员进阶学习书籍参考指南 @heiyeluren lastmodify: 2016/2/18     [初阶](基础知识及入门)   01. <PHP与MySQL程序设计(第4版)> ...

  5. Matlab 进阶学习记录

    最近在看 Faster RCNN的Matlab code,发现很多matlab技巧,在此记录: 1. conf_proposal  =  proposal_config('image_means', ...

  6. (Hibernate进阶)Hibernate系列——总结篇(九)

    这篇博文是hibernate系列的最后一篇,既然是最后一篇,我们就应该进行一下从头到尾,整体上的总结,将这个系列的内容融会贯通. 概念 Hibernate是一个对象关系映射框架,当然从分层的角度看,我 ...

  7. zuul进阶学习(二)

    1. zuul进阶学习(二) 1.1. zuul对接apollo 1.1.1. Netflix Archaius 1.1.2. 定期拉 1.2. zuul生产管理实践 1.2.1. zuul网关参考部 ...

  8. ROS进阶学习笔记(11)- Turtlebot Navigation and SLAM - ROSMapModify - ROS地图修改

    ROS进阶学习笔记(11)- Turtlebot Navigation and SLAM - 2 - MapModify地图修改 We can use gmapping model to genera ...

  9. Struts2进阶学习4

    Struts2进阶学习4 自定义拦截器的使用 核心配置文件 <?xml version="1.0" encoding="UTF-8"?> <! ...

随机推荐

  1. windows下端口转发 netsh

    添加映射表: netsh interface portproxy add v4tov4 listenport=(监听端口) connectaddress=(虚机IP) connectport=(虚机端 ...

  2. JNI:在线程或信号处理函数中访问自定义类

    在写一个Tomcat应用,类需要被信号处理函数回调,可是在单独的程序中测试没用问题: void OnSingalHandler(int sig) { ... JNIEnv* env=NULL; if ...

  3. powerdesigner低版本打开高版本方式为只读导致无法保存PD只读read-only-mode

    由于版本号不一致 打开PD文件后提示: 点击[确定]后打开,点击[取消]后打不开 但打开后修改完毕保存提示: 解决办法: pdm文件实际上是个xml文件,直接用文本编辑器打开该文件修改版本号即可 把根 ...

  4. html和Url转码与解码

    JS (JQuery)对Html.URL的编码与解码 首先引入JQuery文件 1.js对Html编码 function htmlEncode(value){ return $('<div/&g ...

  5. [转]Linq语法一

    LINQ即语言集成查询,是.NET Framework 3.5中新增的功能.其功能类似于数据库中的SQL语句(实际上LINQ就是针对.NET Framework的SQL):提供标准的.易于学习的查询和 ...

  6. SpingCloud微服务架构学习(一)之服务提供者与服务消费者

    微服务构建的是分布式系统,各个微服务之间通过网络进行服务调用,这就有了服务提供者(被调用方)和服务消费者(调用方),以电影售票系统为例,假设服务调用关系如下图所示: 围绕此场景,我们先编写一个用户微服 ...

  7. better-scroll 遇到的问题 1

    备注:better-scroll 实现下拉,是父子层的结构,父层的第一个子元素,如果超出父容器,那么就可以实现下拉 问题:  今天在使用better-scroll实现下拉功能,遇到了一个问题 &quo ...

  8. Linux 学习 之 bash

    Anything is programmable with defined syntax and common lib. Bash Shell is created to programme to L ...

  9. c#和c++的运算符优先级

    闲来无聊乱写代码.发现基础的东西有的时候也非常的抽象.不信?那来看看下面这条语句: ; ; j = i = -i++; 如果上述代码是vc++代码,那么输出结果是: i=- j=- 请按任意键继续. ...

  10. Azure 本月最新活动,速度Mark!

    很多时候,为了知晓 Azure 相关活动的信息,需要到处查阅.问朋友同事,这样既麻烦又易造成延误.为方便广大粉丝,我们推出每月活动合集,帮您第一时间了解 Azure 最新活动,还等什么,一起来看吧! ...