首页 文章 精选 留言 我的

精选列表

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

​LeetCode 26:删除排序数组中的重复项 Remove Duplicates from Sorted Array

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 Given a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length. Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory. 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 示例 2: 给定 nums = [0,0,1,1,1,2,2,3,3,4], 函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。 你不需要考虑数组中超出新长度后面的元素。 说明: 为什么返回数值是整数,但输出的答案是数组呢? 请注意,输入数组是以“引用”方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。 你可以想象内部操作如下: // nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝 int len = removeDuplicates(nums); // 在函数里修改输入数组对于调用者是可见的。 // 根据你的函数返回的长度, 它会打印出数组中该长度范围内的所有元素。 for (int i = 0; i < len; i++) { print(nums[i]); } 解题思路: ​ 定义两个指针,指针 i 索引遍历数组,指针 j 索引值与 i 索引值比较,如果相等则 i 继续遍历,如果不等则将索引 i 的值赋值得到索引 j+1 的值。 Java: class Solution { public int removeDuplicates(int[] nums) { int numsLen = nums.length; if (numsLen < 1) return numsLen;//如果数组只有一个值或空数组,直接返回该数组的长度 int j = 0; for (int i = 1; i < numsLen; i++) {//指针 i 从从索引 1 开始遍历数组 if (nums[i] != nums[j]) {//与索引 j 的值比较 nums[++j] = nums[i];//如果不相等 索引j+1 ,并得到索引i的值 } } return j + 1;//返回到指针 j,数组的长度 } } ​ python这道题并没有很特殊的解法。 Python3: class Solution: def removeDuplicates(self, nums: List[int]) -> int: numsLen = len(nums) if(numsLen < 1): return numsLen j = 0 for i in range(1, numsLen): if nums[j] != nums[i]: j += 1 nums[j] = nums[i] return j+1 公众号:爱写bug(ID:iCodeBugs)

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

BE THE PIONEER FROM APSARADB——2018云栖大会·深圳峰会·云数据库在线直播分论坛

2018年3月28/29日,云栖大会将于深圳隆重举办,本次云栖大会分为线下深圳会场和线上分论坛的模式,阿里云·云数据库团队将在28号下午13:00-17:00举办线上直播分论坛。关于本次分论坛的5个直播主题的更多内容,可点击以下互动平台入口,与讲师进行探讨。针对讲师提出的问题,若回答有独到见解,将会获得云栖大会奖品一份,先到先得,欢迎大家踊跃参加。 3月28日13:00开始,观看直播入口 第一场:云数据库·未来指数级数据增长背后的技术要塞 讲师互动入口 第二场:传统行业的数据库如何迎接云时代 讲师互动入口 第三次:云数据库MySQL版新特性分享 讲

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

iOS:Xcode的beta下编译低版本项目时,出现的Link错误( "_fwrite$UNIX2003", referenced from...

开发的项目多了,对于一个i386的错误,处理起来应该是得心应手的,可是仔细看来,跟之前遇到i386的错误还不大一样,直接搜i386是搜不到该问题解决的方法,你要是搜“Undefined symbols for architecture i386”会搜出一些答案,但也不是很多,并且能不能解决当前遇到的问题,还得自己试过后才知道行还是不行。这里我就给大家说一下我当时搜到的一些解决方法: 1、缺少类库,自己项目缺不缺少类库自己还是知道的,看上面的错误也像是缺少类库,所以这个答案直接抛 弃掉 2、这个就需要自己动手操作一下,这里我就简单说下步骤,截图嘛,最后也没有帮我解决问题,所以复述下步骤,有空的时候可以试下:点击Xcode左栏项目工程:Target—>Build Settings—>Apple LLVM 6.0 - language - c++到此,修改c++ Standard Library 属性为 libstdc++(GNU C++ standard library) 以上两中方法都没能真正的解决问题,难道这个问题就没有解决办法了,别急,下面就是解决问题的方法了 出现的错误截图: 解决办法: 首先在AppDelegate.h文件中添加如下代码: #ifdef DEBUG FILE *fopen$UNIX2003(const char *filename, const char *mode); size_t fwrite$UNIX2003(const void *ptr, size_t size, size_t nitems, FILE *stream); #endif 再在AppDelegate.m文件中添加如下代码: #ifdef DEBUG FILE *fopen$UNIX2003(const char *filename, const char *mode) { return fopen(filename, mode); } size_t fwrite$UNIX2003(const void *ptr, size_t size, size_t nitems, FILE *stream) { return fwrite(ptr, size, nitems, stream); } #endif 或者: 首先在AppDelegate.h文件中添加如下代码: #if defined (__unix) || (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) #ifndef __ENABLE_COMPATIBILITY_WITH_UNIX_2003__ #define __ENABLE_COMPATIBILITY_WITH_UNIX_2003__ FILE *fopen$UNIX2003(const char *filename, const char *mode); size_t fwrite$UNIX2003(const void *ptr, size_t size, size_t nitems, FILE *stream); #endif #endif 再在AppDelegate.m文件中添加如下代码: #if defined (__unix) || (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) #ifndef __ENABLE_COMPATIBILITY_WITH_UNIX_2003__ #define __ENABLE_COMPATIBILITY_WITH_UNIX_2003__ FILE *fopen$UNIX2003(const char *filename, const char *mode) { return fopen(filename, mode); } size_t fwrite$UNIX2003(const void *ptr, size_t size, size_t nitems, FILE *stream) { return fwrite(ptr, size, nitems, stream); } #endif #endif 在指定的类中添加以上代码,问题就解决了。 这可能是Xcode的一个bug,升级到正式版,可能就不存在这个问题。 参考:http://blog.sina.com.cn/s/blog_b2b0ab4b0102v8k7.html 程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式! 本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/5613904.html ,如需转载请自行联系原作者

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

《Linux From Scratch》第三部分:构建LFS系统 第八章:让LFS系统可引导 - 8.3. Linux-3.19

Linux 软件包包含 Linux 内核。 大概编译时间:3.0 - 49.0 SBU (一般 6 SBU) 所需磁盘空间:700 - 6800 MB (一般 800-900 MB) 8.3.1. 安装内核 编译内核包括以下步骤—配置、编译和安装。阅读内核源码树中的 README 可以获得替代本手册配置的方法。 注意 本章节里的命令都要在 chroot 环境下运行。如果因为某种原因(比如说重启)离开了这个环境,请保证要按照 6.2.2,“挂载和激活/dev” 和 6.2.3,“挂载虚拟内核文件系统” 里所说的那样挂载虚拟内核文件系统,然后按照 6.72.清理 介绍的方法重新进入 chroot 环境。否则运行下面的 make 命令会提示段错误。并进入源码目录(sources),解压 Linux-3.19.tar.gz 文件并进入解压后的目录。 运行以下命令准备编译: make mrproper 这将保证内核树的绝对干净。内核小组建议在每次编译之前都执行此命令,无用的代码将会在解压后删除。 通过菜单界面配置内核。配置内核的一般信息请查看:http://www.linuxfromscratch.org/hints/downloads/files/kernel-configuration.txt。BLFS 包含有一些内核的特殊配置,可以查看:http://www.linuxfromscratch.org/blfs/view/systemd/longindex.html#kernel-config-index. 内核配置和编译的附加信息可查看:http://www.kroah.com/lkn/ 注意 配置内核的一个好的起点是运行 make defconfig。这样会参考你的机器架构生成一份基本能用的基础配置。 注意要确保打开或关闭下面这些特性,否则系统也许不能正常工作甚至根本无法启动: General setup ---> [*] open by fhandle syscalls [CONFIG_FHANDLE] [ ] Auditing support [CONFIG_AUDIT] [*] Control Group support [CONFIG_CGROUPS] Processor type and features ---> [*] Enable seccomp to safely compute untrusted bytecode [CONFIG_SECCOMP] Networking support ---> Networking options ---> <*> The IPv6 protocol [CONFIG_IPV6] Device Drivers ---> Generic Driver Options ---> [ ] Support for uevent helper [CONFIG_UEVENT_HELPER] [*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS] [ ] Fallback user-helper invocation for firmware loading [CONFIG_FW_LOADER_USER_HELPER] Firmware Drivers ---> [*] Export DMI identification via sysfs to userspace [CONFIG_DMIID] File systems ---> [*] Inotify support for userspace [CONFIG_INOTIFY_USER] <*> Kernel automounter version 4 support (also supports v3) [CONFIG_AUTOFS4_FS] Pseudo filesystems ---> [*] Tmpfs POSIX Access Control Lists [CONFIG_TMPFS_POSIX_ACL] [*] Tmpfs extended attributes [CONFIG_TMPFS_XATTR] 注意 尽管 "The IPv6 Protocol" 不是必须打开,但它是 systemd 开发人员强烈推荐的。 上述配置项的一些原理说明: Support for uevent helper 打开这个选项会影响 Udev/Eudev 设备管理。 Maintain a devtmpfs 这个选项允许内核在 Udev 运行之前就创建自动设备节点。之后 Udev 在这个基础上运行,管理权限以及增加软链接。对于所有 Udev/Eudev 用户,这个配置项是必须的。 make LANG=<host_LANG_value> LC_ALL= menuconfig make 参数的含义: LANG=<host_LANG_value> LC_ALL= 使用主机的语言环境。这样就方便在使用 menuconfig 时显示合适的 ncurse 界面,它在 linux 字符终端里显示 UTF-8 字符。 注意把 <host_LANG_value> 替换为自己主机上环境变量 $LANG 的值。如果这个变量没有设定,你可以使用变量 $LC_ALL 或 $LC_CTYPE 的值代替。 另外,make oldconfig 在某些情况下可能更合适。查看 README 文件了解更多信息。 想偷懒的话,可以拷贝主机系统的内核配置文件 .config(如果有的话)到解压后的 linux-3.19 目录下来跳过内核配置。不过,我们不建议这样做。最好是探索一下整个内核配置菜单,从最开始配置内核。 编译内核映像和模块: make 如果使用内核模块,需要 /etc/modprobe.d 文件里的模块配置。关于模块和内核配置的信息可以查看 7.3, “LFS 系统中的设备和模块控制” 以及 linux-3.19/Documentation 目录下的内核文档。 还有,modprobe.d(5) 也可以看一下。 如果内核配置里用到,需要安装模块: make modules_install 在内核编译完成后,还需要一个额外步骤来完成安装。有些文件需要拷贝到 /boot 目录下。 内核映像文件所在的实际目录根据主机系统架构可能会不一样。下面的文件名你也可以改成你喜欢的,不过开头最好是 vmlinuz 才可以兼容下一节要讲的配置引导过程的自动设定。下面的命令假设主机是 x86 架构: cp -v arch/x86/boot/bzImage /boot/vmlinuz-3.19-lfs-7.7-systemd System.map 是内核的符号文件。它映射了每一个内核 API 函数的入口,以及内核运行时的数据结构地址。是调试内核问题时的资源。运行下面的命令安装映射文件: cp -v System.map /boot/System.map-3.19 在之前命令 make menuconfig 里生成的内核配置文件 .config 包含了当前编译的内核的所有配置。最好能保存下来留作参考: cp -v .config /boot/config-3.19 安装 Linux 内核文档: install -d /usr/share/doc/linux-3.19 cp -r Documentation/* /usr/share/doc/linux-3.19 需要注意一下内核源代码目录下的文件属主并不是 root。在以 root 用户解压包的时候(我们在 chroot 环境里做的),解压出来的文件会拥有生成这个包的电脑里用户和组。在安装其他包的时候这并不是问题,因为它们的源代码在安装完后就删除了。不过,Linux 内核的源代码经常会保留比较长时间。这样的话,就有可能会把软件包作者的用户 ID 对应到本机的某个用户上。从而这个用户就会拥有内核源代码的写权限。 如果要保留内核源代码的虎啊,对目录 linux-3.19 运行 chown -R 0:0 命令来保证所有文件属主更改为 root。 警告 一些内核文档里建议创建软链接 /usr/src/linux 指向内核源代码目录。这是 2.6 及以前版本内核的特定要求,而在 LFS 系统里 一定不要 创建这个链接,因为这样的话,在你的基础 LFS 系统完成后安装某些软件包时可能引起问题。 警告 系统 include 目录(/usr/include)下的头文件应该 总是 和编译 Glibc 时用到的头文件保持一致,就是,在 6.7, “Linux-3.19 API 头文件” 里整理过的头文件。因此,它们 不能 替换成原始内核头文件或任何清理过的内核头文件。 8.3.2. 配置 Linux 模块加载顺序 虽然大多数情况下,Linux 模块自动加载就好,但是有时候需要特别指定加载顺序。modprobe 或 insmod 在加载模块时会读取 /etc/modprobe.d/usb.conf 。如果将 USB 设备(ehci_hcd、ohci_hcd 和 uhci_hcd) 编译为模块,则需要此文件,这样它们就会以正确的顺序加载。ehci_hcd 需要在 ohci_hcd 和 uhci_hcd 之前加载,否则在系统启动过程中将会输出警告。 运行以下命令建立 /etc/modprobe.d/usb.conf 文件: install -v -m755 -d /etc/modprobe.d cat > /etc/modprobe.d/usb.conf << "EOF" # Begin /etc/modprobe.d/usb.conf install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true # End /etc/modprobe.d/usb.conf EOF 8.3.3. Linux 的内容 安装的文件:config-3.19, vmlinuz-3.19-lfs-7.7-systemd, and System.map-3.19 安装的目录:/lib/modules, /usr/share/doc/linux-3.19 简要说明 config-3.19 包含内核的所有配置选项 vmlinuz-3.19-lfs-7.7-systemd Linux 系统的引擎。当电脑启动时,内核作为整个系统的第一部分载入。它首先检测和初始化所有的电脑硬件,然后将这些硬件模块抽象成文件树让软件访问,并把单个 CPU 转换成多任务系统,可以看上去同时地运行多个程序。 System.map-3.19 地址和符号列表;包含有入口点的映射以及所有函数和内核数据结构的地址 创建者:Gerard Beekmans 编辑者:Matthew Burgess 和 Armin K. 翻译团队:LCTT 译者/校对:zpl1025,dongfengweixiao,wxy,ictlyh 原文链接

资源下载

更多资源
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等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册