首页 文章 精选 留言 我的

精选列表

搜索[学习],共10000篇文章
优秀的个人博客,低调大师

7.Swift学习之循环

循环的介绍 在开发中经常会用到循环 常见C/OC的循环有:for/while/do while. Swift中对应的为:for/while/repeat while. for循环的写法 C风格 循环(淘汰) // 传统写法 已经在Swift3中淘汰 for var i = 0; i < 10; i++ { print(i) } for in 循环 for i in 0..<10 { print(i) } for i in 0...10 { print(i) } 特殊写法 如果在for循环中不需要用到下标i for _ in 0..<10 { print("hello") } while和repeate while循环 while循环 while的判断句必须有正确的真假,没有非0即真 while后面的()可以省略 var a = 0 while a < 10 { print(b) // a++已经在Swift3之后淘汰 a = a + 1 } repeat while循环 var b = 0 repeat { print(b) b = b + 1 } while b < 20

优秀的个人博客,低调大师

2018-09-23学习笔记

Android Material Design 实战 之第一弹——Toolbar详解 Material Design 实战 之第二弹——滑动菜单详解&实战(DrawerLayout & NavigationView) Material Design 实战 之第三弹—— 悬浮按钮和可交互提示(FloatingActionButton & Snackbar & CoordinatorLayout) 本地模拟服务器开发与交互——Apache服务器填坑之路(下载、安装、使用demo、卸载) AVD Nexus_5X_API_24 is already running. If that is not the case, delete the files at C:....a... 课业笔记 ROS机器人程序设计 机器人程序设计_ROS_note1 机器人程序设计_ROS_note2 VMware Workstation14.1.3 & Ubuntu18.04从安装到实用的填坑之路 ROS安装全过程(十分壮观,是个大坑来的) 硬件编程 Keil uVision4起步简单编程 __note1 RFID课程前置——SQL巩固练习

优秀的个人博客,低调大师

2018-09-02学习笔记

Content Provider 总结: 跨程序共享数据——Content Provider 之 运行时权限解析以及申请的实现(可完美解决java.lang.SecurityException:Permission Denial 问题) 跨程序共享数据——Content Provider 之 ContentResolver基本用法 & 一个读取系统联系人的Demo 跨程序共享数据——Content Provider 之 创建自己的内容提供器 Content Provider 之 最终弹 实战体验跨程序数据共享(结合SQLiteDemo)(即本文) Java回顾: Java基础知识的全面巩固_note1(附各种demo code) Java知识详细巩固_note2(数组 _ 附demo code) 受腾讯云+社区的运营小编陈子龙前辈邀请, 我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2iitqqr04f408 ——2018.9.3

优秀的个人博客,低调大师

Hadoop大数据开发框架学习

一.Hadoop框架介绍 hadoop是Apache发布的开源分布式基础架构他的两个核心是 HDFSHDFS是Hadoop的文件管理系统,负责了海量数据的存储,是做大数据的基础 MapReduceMapReduce则是为了海量数据提供了计算 两部分就组成了Hadoop的分布式基础架构 二.HDFS介绍 HDFS作为Hadoop为存储海量数据,自然有着与传统文件系统有着不同的结构,它是以Linux文件系统的基础的架构,构建里一套分布式文件系统,它是由一个NameNode和多台DataNode组成的。他通过将文件进行划分,分成多个数据块进行存储。(默认64MB,一般设置为128MB,备份X3)NameNode 管理文件系统的命名空间,存放文件元数据 维护文件系统的所有文件和目录,文件与数据块的映射 记录每个文件中各个块所在数据节点的信息 DataNode 存储并检索数据块 香NameNode更新所存储块的列表 优点 适合大文件存储,有副本策略 可以构建在廉价机器上,有一定容错和恢复机制 支持流式数据访问,一次写入多次读取 缺点 不适合大量小文件存储 不适合并发写入,不支持文件随机修改 不支持随机读等低延时的访问方式 二.Yarn yarn是Hadoop 中的资源管理器,MapReduce通过yarn来调度。ResourceManager 分配和调度资源 启动并监控ApplicationMaster 监控NodeManager ApplicationMaster 为MapReduce类型程序申请资源,并分配给内部任务 负责数据的切分 监控任务的执行与容错 NodeManager 管理单个节点的资源 处理来自ResourceManager的命令 处理来自ApplicationMaster的命令 四.MapReduce MapReduce采用分而治之的编程思想 输入一个大文件,通过split之后,将其分为多个分片 每个文件分片由单独的机器去处理,这就是Map方法 将每个机器计算的结果进行汇总并得到最终的结果,这就是Reduce方法

优秀的个人博客,低调大师

MyBatis学习笔记(二) 关联关系

一、一对一关系 还是通过例子来解释说明。(一个妻子对应一个丈夫)。 1)数据库信息 create table t_wife( id int primary key auto_increment, wife_name varchar(20), fk_husband_id int ); create table t_husband( id int primary key auto_increment, husband_name varchar(20) ); insert into t_husband values (null,'hello'); insert into t_wife values(null,'kitty',1) 2)对应的JavaBean代码 虽然在数据库里只有一方配置的外键,但是这个一对一是双向的关系。 HusbandBean.java package com.cy.mybatis.beans; import java.io.Serializable; /** * one to one * @author acer * */ public class HusbandBean implements Serializable{ private static final long serialVersionUID = 1L; private Integer id; private String name; private WifeBean wife; public HusbandBean() { super(); } public HusbandBean(Integer id, String name, WifeBean wife) { super(); this.id = id; this.name = name; this.wife = wife; } 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 WifeBean getWife() { return wife; } public void setWife(WifeBean wife) { this.wife = wife; } @Override public String toString() { return "Husband [id=" + id + ", name=" + name + ", wife=" + wife + "]"; } } WifeBean.java package com.cy.mybatis.beans; import java.io.Serializable; /** * one to one * @author acer * */ public class WifeBean implements Serializable{ private static final long serialVersionUID = 1L; private Integer id; private String name; private HusbandBean husband; public WifeBean() { super(); } public WifeBean(Integer id, String name, HusbandBean husband) { super(); this.id = id; this.name = name; this.husband = husband; } 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 HusbandBean getHusband() { return husband; } public void setHusband(HusbandBean husband) { this.husband = husband; } @Override public String toString() { return "Wife [id=" + id + ", name=" + name + ", husband=" + husband + "]"; } } 3)接下来建立两个接口,HusbandMapper,WifeMapper. HusbandMapper package com.cy.mybatis.mapper; import com.cy.mybatis.beans.HusbandBean; public interface HusbandMapper { /** * 根据id查询丈夫信息 * @param id * @return * @throws Exception */ public HusbandBean selectHusbandById (int id) throws Exception; /** * 根据id查询丈夫与妻子信息 * @param id * @return * @throws Exception */ public HusbandBean selectHusbandAndWife(int id) throws Exception; } 4)定义HusbandMapper.xml文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.cy.mybatis.mapper.HusbandMapper"> <resultMap type="HusbandBean" id="husbandAndWife"> <id property="id" column="id" javaType="java.lang.Integer"/> <result property="name" column="name" javaType="java.lang.String"/> <!-- association – 一个复杂的类型关联;许多结果将包成这种类型 嵌入结果映射 – 结果映射自身的关联,或者参考一个 column="id" 这里的id指的是在t_wife表来的主键id 这个查询妻子,所以在妻子mapper里有个方法 --> <association property="wife" column="id" javaType="WifeBean" select="com.cy.mybatis.mapper.WifeMapper.selectWifeByHusbandId" ></association> </resultMap> <!-- resultType 返回类型 从这条语句中返回的期望类型的类的完全限定名或别名 。--> <select id="selectHusbandById" resultType="HusbandBean"> select * from t_husband where id=#{id} </select> <!-- resultMap 命名引用外部的 resultMap。返回的是一个集合。--> <select id="selectHusbandAndWife" resultMap="husbandAndWife"> select * from t_husband where id=#{id} </select> </mapper> 在WifeMapper.xml里有个方法 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.cy.mybatis.mapper.WifeMapper"> <select id="selectWifeByHusbandId" resultType="WifeBean"> select * from t_wife where fk_husband_id = #{id} </select> </mapper> 5)写个实现 package com.cy.mybatis.service; import org.apache.ibatis.session.SqlSession; import com.cy.mybatis.beans.HusbandBean; import com.cy.mybatis.mapper.HusbandMapper; import com.cy.mybatis.tools.DBTools; public class OneToOneService { public static void main(String[] args) { selectHusbandAndWife(); } private static void selectHusbandAndWife() { SqlSession session = DBTools.getSession(); HusbandMapper hm = session.getMapper(HusbandMapper.class); try { HusbandBean husband = hm.selectHusbandAndWife(1); System.out.println(husband); session.commit(); } catch (Exception e) { e.printStackTrace(); } } } 注意:那个工具类还是前一章那样写的,就相当与在昨天的基础上建立的。 注意: mybatis实际是对XML进行操作,我们所有的方法都直接定义在XML中,写个接口只是为了更好的符合我们3层的思想,如果不写接口,直接通过session也可以直接操作xml中的方法 , XML中只要有方法,就可以使用,而调用的方式就是:namespace+方法名; 例外使用resultType时,一定要保证,你属性名与字段名相同; 如果不相同,就使用resultMap 。 二、一对多关系 还是通过例子来解释说明。(一把锁对应多把钥匙)。 2.1)数据库信息 这里没有添加数据了,我们用批量添加数据 create table t_key( id int primary key auto_increment, key_name varchar(20), fk_lock_id int ); create table t_lock( id int primary key auto_increment, lock_name varchar(20) ); 2.2) 实体类 KeyBean.java package com.cy.mybatis.beans; import java.io.Serializable; /** * manyTOone * * */ public class KeyBean implements Serializable { private static final long serialVersionUID = 3712545874604618746L; private Integer id; private String key; private LockBean lock; public KeyBean() { super(); } public KeyBean(Integer id, String key, LockBean lock) { super(); this.id = id; this.key = key; this.lock = lock; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getKey() { return key; } public void setKey(String key) { this.key = key; } public LockBean getLock() { return lock; } public void setLock(LockBean lock) { this.lock = lock; } @Override public String toString() { return "KeyBean [id=" + id + ", key=" + key + ", lock=" + lock + "]"; } } LockBean.java package com.cy.mybatis.beans; import java.io.Serializable; import java.util.List; /** * oneTOmany * * */ public class LockBean implements Serializable{ private static final long serialVersionUID = 7092410462131162665L; private Integer id; private String lock; private List<KeyBean> keys; public LockBean() { super(); } public LockBean(Integer id, String lock, List<KeyBean> keys) { super(); this.id = id; this.lock = lock; this.keys = keys; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getLock() { return lock; } public void setLock(String lock) { this.lock = lock; } public List<KeyBean> getKeys() { return keys; } public void setKeys(List<KeyBean> keys) { this.keys = keys; } @Override public String toString() { return "LockBean [id=" + id + ", keys=" + keys + ", lock=" + lock + "]"; } } 2.3) 建立接口 KeyMapper.java package com.cy.mybatis.mapper; import java.util.List; import org.apache.ibatis.annotations.Param; import com.cy.mybatis.beans.KeyBean; public interface KeyMapper { /** * 批量添加钥匙 * @return * 提倡 这样使用 @Param("keys") */ public int batchSaveKeys(@Param("keys")List<KeyBean> keys); } LockMapper.java package com.cy.mybatis.mapper; import org.apache.ibatis.annotations.Param; import com.cy.mybatis.beans.LockBean; public interface LockMapper { /** * 添加锁 * @param lock * @return */ public int saveLock(@Param("lock")LockBean lock); /** * 根据ID查询锁的资料 * @param id * @return */ public LockBean findLockById(int id); /** * 根据ID查询锁与钥匙的资料 * one2many * @param id * @return */ public LockBean findLockAndKeys(int id); } 2.4) 建立xml文件 KeyMapper.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.cy.mybatis.mapper.KeyMapper"> <resultMap id="keyMap" type="KeyBean"> <id property="id" column="id" javaType="java.lang.Integer"/> <result property="key" column="key_name" javaType="java.lang.String"/> </resultMap> <!--collection 为用于遍历的元素(必选),支持数组、List、Set --> <!-- item 表示集合中每一个元素进行迭代时的别名. --> <!--separator表示在每次进行迭代之间以什么符号作为分隔 符. --> <insert id="batchSaveKeys"> insert into t_key values <foreach collection="keys" item="key" separator=","> (null,#{key.key},#{key.lock.id}) </foreach> </insert> <select id="findKeysByLockId" resultMap="keyMap"> select * from t_key where fk_lock_id = #{id} </select> </mapper> LockMapper.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.cy.mybatis.mapper.LockMapper"> <!--自定义返回类型 --> <resultMap id="lockMap" type="LockBean"> <id property="id" column="id" javaType="java.lang.Integer"/> <result property="lock" column="lock_name" javaType="java.lang.String"/> </resultMap> <!--自定义返回类型 --> <resultMap id="lockAndKeysMap" type="LockBean"> <id property="id" column="id" javaType="java.lang.Integer"/> <result property="lock" column="lock_name" javaType="java.lang.String"/> <collection property="keys" column="id" select="com.cy.mybatis.mapper.KeyMapper.findKeysByLockId"></collection> </resultMap> <insert id="saveLock"> insert into t_lock values (null,#{lock.lock}) </insert> <select id="findLockById" resultMap="lockMap"> select * from t_lock where id= #{id} </select> <select id="findLockAndKeys" resultMap="lockAndKeysMap"> select * from t_lock where id= #{id} </select> </mapper> 2.5 ) 实现 package com.cy.mybatis.service; import java.util.ArrayList; import java.util.List; import org.apache.ibatis.session.SqlSession; import com.cy.mybatis.beans.KeyBean; import com.cy.mybatis.beans.LockBean; import com.cy.mybatis.mapper.KeyMapper; import com.cy.mybatis.mapper.LockMapper; import com.cy.mybatis.tools.DBTools; public class OneToManyService { public static void main(String[] args) { // saveLock(); // batchSaveKeys(); findLockAndKeys(); } private static void findLockAndKeys() { SqlSession session = DBTools.getSession(); LockMapper lm = session.getMapper(LockMapper.class); LockBean lock = lm.findLockAndKeys(1); System.out.println(lock); } private static void batchSaveKeys() { SqlSession session = DBTools.getSession(); LockMapper lm = session.getMapper(LockMapper.class); KeyMapper km = session.getMapper(KeyMapper.class); LockBean lock = lm.findLockById(1); List<KeyBean> keys = new ArrayList<KeyBean>(); for(int i = 0; i < 5; i++){ KeyBean key = new KeyBean(null, "钥匙"+i, lock); keys.add(key); } km.batchSaveKeys(keys); session.commit(); } private static void saveLock() { SqlSession session = DBTools.getSession(); LockMapper lm = session.getMapper(LockMapper.class); LockBean lock = new LockBean(null, "锁1", null); lm.saveLock(lock); session.commit(); } } 结果显示: 原文发布时间为:2018-08-30本文来自云栖社区合作伙伴“ 全栈开发者社区”,了解相关信息可以关注“ 全栈开发者社区”。

优秀的个人博客,低调大师

PHP学习7——文件系统

主要内容: 打开和关闭文件 文件类型 文件处理 目录处理 访问远程文件 文件锁定 文件上传 数据除了可以存储在数据库中,我们主要的还是存储在文件中,而且存储在文件中更加的方便直接。 打开和关闭文件 打开fopen($filepath,$mode) 关闭fclose($file) 注意,我的test.txt文件和demo.php在同一个目录下 demo.php <?php //打开文件r只读,r+读写,打开成功返回true,否则false $file=fopen("C:/xampp/htdocs/test.txt","r");//绝对路径 if($file){ echo "文件test.txt打开了<br/>"; }else{ echo "文件test.txt打开失败文件打开了<br/>"; } $file2=fopen("./test.txt","r");//相对路径 if($file2){ echo "文件test.txt打开了<br/>"; }else{ echo "文件test.txt打开失败<br/>"; } if(fclose($file)){ echo "文件test.txt成功关闭<br/>"; } if(fclose($file2)){ echo "文件test.txt成功关闭<br/>"; } ?> 输出 文件test.txt打开了 文件test.txt打开了 文件test.txt成功关闭 文件test.txt成功关闭 文件类型 无论是txt文件还是jpg文件,还是doc文件,都属于同一种文件类型,file 文件夹是另外一种文件类型,dir 文件类型: file普通文件 dir目录类型 char字符串设备,键盘,打印机 block块设备,某个磁盘分区 link快捷方式,指针的指针 fifo管道,用于把一个进程传到另外一个进程 unknow未知文件 使用filetype($filename)判断文件的类型,返回字符串 stat($filename)可以输出文件的大部分属性 stat.php <?php print_r(stat("./test.txt")); ?> 输出 Array ( [0] => 2 [1] => 0 [2] => 33206 [3] => 1 [4] => 0 [5] => 0 [6] => 2 [7] => 12 [8] => 1533566405 [9] => 1533566414 [10] => 1533566405 [11] => -1 [12] => -1 [dev] => 2 [ino] => 0 [mode] => 33206 [nlink] => 1 [uid] => 0 [gid] => 0 [rdev] => 2 [size] => 12 [atime] => 1533566405 [mtime] => 1533566414 [ctime] => 1533566405 [blksize] => -1 [blocks] => -1 ) 文件处理 readfile($filename)读取文件内容写入输出缓冲,并返回文件字符串大小,报错返回false fgets($filename)从文件指针读取一行,出错返回false fgetc($filename)从文件指针读取一个字符,出错返回false readfile.php <?php readfile("./test.txt"); ?> test.txt 输出 这是一个测试 这是一个测试这是一个测试 这是一个测试这是一个测试 这是一个测试这是一个测试 这是一个测试这是一个测试 这是一个测试这是一个测试 这是一个测试这是一个测试 fwrite($filename,$date)向文件中写入信息 fwrite.php <?php //使用@隐藏提示信息,@叫做错误控制运算符 $file=@fopen("./test.txt","r+"); echo $file."<br/>"; $num=fwrite($file,"今天是个好日子,心想的事儿都能成"); if($num){ echo "写入成功,写入了$num 字符"; }else{ echo "写入失败"; } ?> 输出 Resource id #3 写入成功,写入了48 字符 test.txt 但是使用r+模式,会覆盖原先的内容,如果不想覆盖原先的内容,而是在原先基础上增加内容,应该使用追加模式,这里不研究。 常用方法: copy($source,$dest)复制文件到指定路径 rename($oldname,$newname)重命名文件 unlink($filename)删除文件 pathinfo($path,$options)返回文件的路径信息 realpath($path)返回文件的绝对路径 is_file($filename)判断是否是文件 目录处理 目录是一种特殊的文件类型 判断是否是目录isdir($path) 打开目录opendir($path) 关闭目录closedir($path) dir.php <?php $path="D:\资料"; if(is_dir($path)){ //打开目录 $dir=opendir($path); echo "文件打开成功<br/>"; }else{ echo "打开失败,程序退出<br/>"; exit(); } closedir($dir); ?> 输出 文件打开成功 操作目录方法: readdir($path)浏览目录,返回一个文件名 mkdir($pathname)创建目录 rmdir($pathname)删除目录 chdir($pathname)改变目录 dir_operate.php <?php if(chdir("D:/")){ echo "切换到D:/<br/>"; }//成功返回1 if(mkdir("D:/test")){ echo "创建文件夹D:/test<br/>"; }//成功返回1 if(rmdir("D:/test")){ echo "删除文件夹D:/test<br/>"; }//成功返回1 ?> 输出 切换到D:/ 创建文件夹D:/test 删除文件夹D:/test 访问远程文件 PHP支持URL格式的文件调用,需要在php.ini中设置一下 url_file.php <?php $html=file_get_contents("http://www.baidu.com/"); echo $html; ?> 输出 文件锁定 在向一个文件写入内容时,如果其他用户也修改这个文件,可能会造成冲突,为了防止冲突,使用flock()来锁定文件 flock.php <?php $file=fopen("C:/xampp/htdocs/test.txt","r+"); if(flock($file,LOCK_EX)){ echo "文件已经锁定,可以安全写入数据"; }else{ echo "文件未锁定,写入数据是不安全的"; } fclose($file); ?> 输出 文件已经锁定,可以安全写入数据 文件上传 首先需要配置php.ini文件 单文件上传 使用move_upload_file($tmpname,$name) upload.php <html> <form method="post" enctype="multipart/form-data"> <input type="file" name="upfile" /> <input type="submit" value="上传" /> </form> </html> <?php $file=fopen("C:/xampp/htdocs/test.txt","r+"); if(!empty($_FILES)){ foreach($_FILES["upfile"] as $k=>$v){ echo "$k=>$v<br/>"; } }else{ echo "没有上传文件"; } ?> 未上传效果 上传文件 上传成功 upload2.php <html> <form method="post" enctype="multipart/form-data"> <input type="file" name="upfile" /> <input type="submit" value="上传" /> </form> </html> <?php if(!empty($_FILES)){ $tmpname=$_FILES["upfile"]["tmp_name"];//文件临时名 $name=$_FILES["upfile"]["name"];//文件原名 move_uploaded_file($tmpname,$name)or die("文件上传失败,程序退出"); echo "文件上传成功"; }else{ echo "没有上传文件"; } ?> 未上传 上传 文件已经上传到跟目录 ok,文件上传先到这里

优秀的个人博客,低调大师

ES6学习笔记(一)

一、let 命令 1、let命令 1.1基本用法 1.1.1 let用于声明变量 类似var,但是let声明的变量只在当前代码块内有效 { let a = 10; var b = 1; } a // ReferenceError: a is not defined. b // 1 let命令在for 循环的计数器中很实用。 1.1.2 let不存在变量提升 var命令会发送“变量提升”,即变量可以在声明之前使用,值为undefined 正常来说变量使用一定要在声明之后。 1.1.3 暂时性死区 只要块级作用域内存在let命令,它所生命的变量就绑定(binding)这个区域,不受外部影响。 ES6明确规定,在区块中存在let 和 const命令,这个区块对这些命令声明的变量都是 不能提前使用的,会报错。 总之在代码块之内,Let声明的变量不可提前使用。 1.1.4不允许重复声明 let不允许在相同作用域内重复声明同一个变量。所以不能在函数内部重新声明参数。 function func(arg) { let arg; // 报错 } function func(arg) { { let arg; // 不报错 } } 1.1.5 ES6的块级作用域 let为JavaScript新增了块级作用域,允许块级作用域的任意嵌套。 {{{{{let insane = 'Hello World'}}}}}; 外层作用域无法读取内层作用域内的变量。 {{{{ {let insane = 'Hello World'} console.log(insane); // 报错 }}}}; 内层作用域可以定义外层作用域的同名变量。 {{{{ let insane = 'Hello World'; {let insane = 'Hello World'} }}}}; 1.1.6 允许块级作用域中声明函数 // 浏览器的 ES6 环境 function f() { console.log('I am outside!'); } (function () { if (false) { // 重复声明一次函数f function f() { console.log('I am inside!'); } } f(); }()); // Uncaught TypeError: f is not a function ES6的块级作用域允许声明函数的规则只在使用大括号的前提下成立,否则就会报错。 1.1.7 do表达式 块级作用域是一个语句,将多个操作封装在一起,没有返回值。 使得块级作用域可以变为表达式,也就是说可以返回值,办法就是在块级作用域之前加上do,使它变为do表达式。 let x = do { let t = f(); t * t + 1; }; 上面代码中,变量x会得到整个块级作用域的返回值。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册