21.字符数组和字符串
1 字符串和字符数组区别const char * arr = “123”;char * brr = “123”;const char crr[] = “123”;char drr[] = “123”;1234567891011121314const char * arr = "123";//字符串123保存在常量区,const本来是修饰arr指向的值不能通过arr去修改,但是字符串“123”在常量区,本来就不能改变,所以加不加const效果都一样char * brr = "123";//字符串123保存在常量区,这个arr指针指向的是同一个位置,同样不能通过brr去修改"123"的值const char crr[] = "123";//这里123本来是在栈上的,但是编译器可能会做某些优化,将其放到常量区char drr[] = "123";//字符串123保存在栈区,可以通过drr去修改 字符串和字符数组作为参数
2 管理conda
管理conda 参考文献 jianshu.com/p/62f155eb6ac5 Windows用户请打开“Anaconda Prompt”; 1. 验证conda已被安装1conda --version 终端上将会以conda 版本号的形式显示当前安装conda的版本号。如:conda 3.11.0 注意:如果出现错误信息,则需核实是否出现以下情况: 使用的用户是否是安装Anaconda时的账户。 是否在安装Anaconda之后重启了终端。 2. 更新conda至最新版本1conda update conda 执行命令后,conda将会对版本进行比较并列出可以升级的版本。同时,也会告知用户其他相关包也会升级到相应版本。 当较新的版本可以用于升级时,终端会显示Proceed ([y]/n)?,此时输入y即可进行升级。 3. 查看conda帮助信息1conda --help 或 1conda -h
1 概述
conda 对比 参考文献 jianshu.com/p/62f155eb6ac5 简介Anaconda(官方网站)就是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本。Anaconda包含了conda、Python在内的超过180个科学包及其依赖项。 1 Anaconda Anaconda是一个包含180+的科学包及其依赖项的发行版本。其包含的科学包包括:conda, numpy, scipy, ipython notebook等。 2 conda conda是包及其依赖项和环境的管理工具。 既是一个包管理工具,同pip,也是一个环境管理工具,同virtualenv 适用语言:Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。 适用平台:Windows, macOS, Linux 用途: 快速安装、运行和升级包及其依赖项。 在计算机中便捷地创建、保存、加载和切换环境。 如果你需要的包要求不同版本的Python,你无需切换到不同的环境,因为...
3 管理环境
管理环境 Windows用户请打开“Anaconda Prompt”; 参考文献 jianshu.com/p/62f155eb6ac5 1 创建新环境1conda create --name <env_name> <package_names> 注意: <env_name>即创建的环境名。建议以英文命名,且不加空格,名称两边不加尖括号“<>”。 <package_names>即安装在环境中的包名。名称两边不加尖括号“<>”。 如果要安装指定的版本号,则只需要在包名后面以=和版本号的形式执行。如:conda create –name python2 python=2.7,即创建一个名为“python2”的环境,环境中安装版本为2.7的python。 如果要在新创建的环境中创建多个包,则直接在<package_names>后以空格隔开,添加多个包名即可。如:conda create -n python3 python=3.5 nump...
4 管理包
管理包1. 查找可供安装的包版本精确查找1conda search --full-name <package_full_name> 注意: –full-name为精确查找的参数。 是被查找包的全名。包名两边不加尖括号“<>”。 例如:conda search –full-name python即查找全名为“python”的包有哪些版本可供安装。 模糊查找1conda search <text> 注意:是查找含有此字段的包名。此字段两边不加尖括号“<>”。 例如:conda search py即查找含有“py”字段的包,有哪些版本可供安装。 2. 获取当前环境中已安装的包信息1conda list 执行上述命令后将在终端显示当前环境已安装包的包名及其版本号。 3. 安装包在指定环境中安装包1conda install --name <env_name> <package_name> 注意: 即将包安装的指定环境名。环境名两边不加尖括号“<>”。 即要安装的包名。包名两边不加尖...
3.4 栈的弹出序列
栈的弹出序列问题描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。 示例 1: 12345输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), push(2), push(3), push(4), pop() -> 4,push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1 示例 2: 123输入:pushed = [1,2,3,4,5], popped = [4,3,5,1,2]输出:false解释:1 不能在 2 之前弹出。 链接 问题分析 之前入栈的元素,在之后只能以逆序出现。也就是说,逆序之后的数字,都是逆序。 策略选择算法设计算法分析算法实现...
7.1 幂集问题
生成幂集
5.2 Windows IO模型
UnixIO模型 WindowsIO模型
5.3 IO多路复用模型
actorhttps://zhuanlan.zhihu.com/p/372277468 演进过程 如果要让服务器服务多个客户端,那么最直接的方式就是为每一条连接创建线程。 创建一个「线程池」,将连接分配给线程,然后一个线程可以处理多个连接的业务。 这样又引来一个新的问题,单个线程怎样才能高效地处理多个连接的业务?当一个连接对应一个线程时,线程一般采用「read -> 业务处理 -> send」的处理流程,如果当前连接没有数据可读,那么线程会阻塞在 read 操作上( socket 默认情况是阻塞 I/O),不过这种阻塞方式并不影响其他线程。 就是将 socket 改成非阻塞,然后线程不断地轮询调用 read 操作来判断是否有数据,这种方式虽然该能够解决阻塞的问题,但是解决的方式比较粗暴,因为轮询是要消耗 CPU 的,而且随着一个 线程处理的连接越多,轮询的效率就会越低。 I/O 多路复用。I/O 多路复用技术会用一个系统调用函数来监听我们所有关心的连接,也就说可以在一个监控线程里面监控很多的连接。 我们熟悉的 select/po...
B 设计模式概述-结构型
二、结构型 1. 适配器(Adapter) Intent Class Diagram Implementation JDK 2. 桥接(Bridge) Intent Class Diagram Implementation JDK 3. 组合(Composite) Intent Class Diagram Implementation JDK 4. 装饰(Decorator) Intent Class Diagram Implementation 设计原则 JDK 5. 外观(Facade) Intent Class Diagram Implementation 设计原则 6. 享元(Flyweight) Intent Class Diagram Implementation JDK 7. 代理(Proxy) Intent Class Diagram Implementation JDK 参考资料 设计模式是解决问题的方案,学习现有的设计模式可以做到经验复用。拥有设计模式词汇,在沟通时就能用更少的词汇来讨论,并且不需要了解底层细节。 ...













