next

201871010115——马北《面向对象程序设计JAVA》第二周学习总结

笑着哭i 提交于 2020-12-13 07:01:10
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11475377.html 作业学习目标 适应老师教学方式,能按照自主学习要求完成本周理论知识学习; 掌握Java Application程序结构; 掌握Java语言的数据类型与变量; 学会使用Java运算符构造各类表达式; 掌握Java Application输入输出技术; 掌握Java流程控制技术(分支、循环);(重点) 掌握Math类、String类的用法。(难点) 随笔博文正文内容: 第一部分:结合Java和C基础语法的异同比较,总结本周理论知识(30分) 对于基础的掌握的话,两者相对来说差不多。因为都是面向对象的语言,大部分语法都类似。不过,相对来说JAVA更易用,因为JAVA没有指针概念,都是通过java虚拟机完成了内存回收,因此对于编程者来说这个更易用。而C++需要编程人员自己掌握内存的申请和释放,如果掌握不好,就容易出现程序崩溃等问题。JAVA语言和C++语言要想学的比较好,那么第三方类库是必不可少的,像JAVA的swing等,C++的ACE等等都是很不错的类库,必须掌握这些技能。从语言排行来看,这两者都是前3名的。JAVA略占优势。就业前景两者都有发展

Restify Api 开发经验

ⅰ亾dé卋堺 提交于 2020-12-12 21:28:03
此文已由作者王振华授权网易云社区发布。 欢迎访问 网易云社区 ,了解更多网易技术产品运营经验。 工作期间,一直在用Restify开发或维护大大小小的API系统,现在分享一下一些个人觉得不错的Tips。 充分利用middleware机制 这里的middleware指的就是处理请求过程中一个独立的小函数,众多Node社区的Web框架都采用类似这样的形式 function (req, res, next) {},然后把这些handler函数叠起来组成一个线性模型来完成一次请求的生命周期。 首先,看一下一个Resitfy Api应用的最核心的骨架 let restify = require('restify')let app = restify.createServer() app.use(restify.plugins.queryParser()) app.use(restify.plugins.bodyParser()) app.get('/api/users/list', listUsers) 这里使用middleware机制加载了两个插件,然后在自己定义的路由上使用自己的listUsers函数来处理,非常简单清晰。 等一下,listUser不一定必须是一个handler函数,事实上可以是一个handler chain(函数的数组)。 基于这个简单的思路

kubernetes concepts -- Pod Overview

百般思念 提交于 2020-12-12 21:26:30
This page provides an overview of Pod , the smallest deployable object in the Kubernetes object model. Pod是Kubernetes 对象模型中最小的可部署对象。 Understanding Pods A Pod is the basic building block of Kubernetes–the smallest and simplest unit in the Kubernetes object model that you create or deploy. A Pod represents a running process on your cluster. A Pod encapsulates an application container (or, in some cases, multiple containers), storage resources, a unique network IP, and options that govern how the container(s) should run. A Pod represents a unit of deployment: a single instance of an application

Python 中的迭代器与生成器

∥☆過路亽.° 提交于 2020-12-12 18:16:44
导读 这篇文章主要介绍了 python 当中的迭代器与生成器,在涉及到大数量的场景应该考虑使用迭代器与生成器。 原文链接: https://russellgao.cn/python-iter/ 可迭代对象 如果一个对象实现了 __iter__ 方法,那么我们就称它是一个可迭代对象。如果没有实现 __iter__ 而实现了 __getitem__ 方法,并且其参数是从0开始索引的,这种对象也是可迭代的,比如说序列。 使用 iter 内置函数可以获取迭代器的对象,当解释器需要迭代对象时,会自动调用 item(x) : 如果对象实现了 __iter__ 方法,获取一个迭代器 如果没有实现 __iter__ ,但是实现了 __getitem__ ,python 会创建一个迭代器,尝试从索引0开始获取元素 如果获取失败,则抛出 TypeError 标准序列都实现了 __iter__ 方法,所以标准序列都是可迭代对象。如 list,dict,set,tuple。 只有实现了 __iter__ 方法的对象能通过子类测试 issubclass(Object,abc.Itertor) 检查对象能否迭代最标准的方法是调用 iter() 函数,因为 iter() 会考虑到实现 __getitem__ 方法的部分可迭代对象。 迭代器 迭代器主要用于从集合中取出元素,那么是什么迭代器呢? 实现了 next

跨域 webpack + vue-cil 中 proxyTable 处理跨域

*爱你&永不变心* 提交于 2020-12-12 15:00:19
博客地址: https://ainyi.com/27 跨域 了解同源政策:所谓"同源"指的是"三个相同"。 协议相同 域名相同 端口相同 解决跨域 jsonp 缺点:只能get请求 ,需要修改B网站的代码 cors 这个方案缺点 是 ie6 7 兼容不好(倒是不见得要兼容)。需要B网站在响应中加头 postMessage 缺点也是 ie6 7 兼容不好(倒是不见得要兼容)。需要修改B网站的代码 iframe window.name 传值得方式很巧妙,兼容性也很好。但是也是需要你能修改B网站代码 服务端主动请求B网站,兼容性好而且你客户端的代码还是原来的ajax,缺点是感觉不好。(服务器端是不存在跨域安全限制的) 类似5 用nginx把B网站的数据url反向代理。 node, express 解决跨域 加上请求头: 1 app.all('*', (req, res, next)=> { 2 res.header("Access-Control-Allow-Origin", "*" ); 3 res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With" ); 4 res.header("Access-Control

面试官 | 什么是递归算法?它有什么用?

有些话、适合烂在心里 提交于 2020-12-12 14:57:22
前言 递归是算法中一种非常重要的思想,应用也很广,小到阶乘,再在工作中用到的比如统计文件夹大小,大到 Google 的 PageRank 算法都能看到,也是面试官很喜欢的考点 最近看了不少递归的文章,收获不小,不过我发现大部分网上的讲递归的文章都不太全面,主要的问题在于解题后大部分都没有给出相应的时间/空间复杂度,而时间/空间复杂度是算法的重要考量!递归算法的时间复杂度普遍比较难(需要用到归纳法等),换句话说,如果能解决递归的算法复杂度,其他算法题题的时间复杂度也基本不在话下。另外,递归算法的时间复杂度不少是不能接受的,如果发现算出的时间复杂度过大,则需要转换思路,看下是否有更好的解法 ,这才是根本目的,不要为了递归而递归! 本文试图从以下几个方面来讲解递归 什么是递归? 递归算法通用解决思路 实战演练(从初级到高阶) 力争让大家对递归的认知能上一个新台阶,特别会对递归的精华:时间复杂度作详细剖析,会给大家总结一套很通用的求解递归时间复杂度的套路,相信你看完肯定会有收获 什么是递归 简单地说,就是如果在函数中存在着调用函数本身的情况,这种现象就叫递归。 以阶乘函数为例,如下, 在 factorial 函数中存在着 factorial(n - 1) 的调用,所以此函数是递归函数 public int factorial ( int n) { if (n < = 1 ) {

一次 HashSet 所引起的并发问题

不打扰是莪最后的温柔 提交于 2020-12-12 14:36:22
背景 上午刚到公司,准备开始一天的摸鱼之旅时突然收到了一封监控中心的邮件。 心中暗道不好,因为监控系统从来不会告诉我应用完美无 bug,其实系统挺猥琐。 打开邮件一看,果然告知我有一个应用的线程池队列达到阈值触发了报警。 由于这个应用出问题非常影响用户体验;于是立马让运维保留现场 dump 线程和内存同时重启应用,还好重启之后恢复正常。于是开始着手排查问题。 分析 首先了解下这个应用大概是做什么的。 简单来说就是从 MQ 中取出数据然后丢到后面的业务线程池中做具体的业务处理。 而报警的队列正好就是这个线程池的队列。 跟踪代码发现构建线程池的方式如下: ThreadPoolExecutor executor = new ThreadPoolExecutor ( coreSize , maxSize , 0L , TimeUnit . MILLISECONDS , new LinkedBlockingQueue < Runnable >());; put ( poolName , executor ); 采用的是默认的 LinkedBlockingQueue 并没有指定大小(这也是个坑),于是这个队列的默认大小为 Integer.MAX_VALUE。 由于应用已经重启,只能从仅存的线程快照和内存快照进行分析。 内存分析 先利用 MAT 分析了内存,的到了如下报告。

彻底放弃英特尔!继M1后,苹果计划推出下一代Mac芯片

我们两清 提交于 2020-12-12 13:14:44
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 整理 | 李冬梅,陈思 来源丨AI前线(ID:ai-front) https://mp.weixin.qq.com/s/76Ckytivh4STSUZIJEUorg 北京时间 12 月 8 日,彭博社报道称,苹果公司计划在 2021 年初推出一系列新的 Mac 处理器,旨在超越英特尔成为更快的处理器。 对标英特尔,苹果打造更快更强处理器 据悉,苹果公司的芯片工程师正在研究 M1 定制芯片的几款后续产品,M1 定制芯片是 Apple 于 11 月 刚推出的首款 Mac 主处理器。如果一切能按照预期进行,这几款产品的性能将显著超越英特尔芯片在机器上的运行表现。该知情人士不愿意透露姓名,因为该计划尚未公开。消息传出后,英特尔股价(纽约)在周一下跌了 2.9%。苹果股价当日上午 9:46 上涨了 1.3%。 苹果 MacBook Pro 笔记本电脑、更新的 Mac mini 台式机和 MacBook Air 系列中都使用了苹果 M1 芯片。该公司的下一批芯片计划最早于明年春季和秋季发布,预计将用于 MacBook Pro 的升级版、入门级和高端 iMac 台式机以及将要推出的新 Mac Pro workstation(工作站)中。 苹果

剑指offer 手刷python 汇总整理版本~

北战南征 提交于 2020-12-12 10:53:08
文章目录 0.递归&脑力 斐波那契数列 数值的n次方 二分法和牛顿迭代法求平方根 丑数 正则表达式匹配 1.数组 调整数组顺序使奇数位于偶数前面 二分查找(九章算法) 旋转数组的最小数字 和为S的连续正数序列 数字在排序数组中出现的次数 数组中只出现一次的数字 和为S的两个数字 第一个只出现一次的字符 数组中的逆序对 连续子数组的最大和 最小的K个数 数组中出现次数超过一半的数字 把数组排成最小的数 数组中重复的数字 构造乘积数组 二维数组中的查找 扑克牌顺子 孩子们的游戏 2.位运算 二进制中1的个数 求1+2+3+..+n 不用加减乘除做加法 从1到n整数中1出现的次数 3.字符串 翻转单词顺序列 左旋转字符串 把字符串转换成整数 判断一个字符串是否表示数值 字符串的排列 替换空格 字符流中第一个不重复的字符 4.链表 链表中环的入口结点 翻转链表 链表中倒数第k个结点 合并两个排序的链表 复杂链表的复制 两个链表的第一个公共结点 5.二叉树 二叉树的镜像(Symmetric Tree) [二叉树的先序、中序、后续遍历 递归和非递归](https://www.cnblogs.com/icekx/p/9127569.html) 平衡二叉树的判断 二叉树的深度 二叉树的下一个结点 对称的二叉树 将二叉树按照层级转化为链表 把二叉树打印成多行 之字形打印二叉树 序列化和反序列化二叉树

leetcode math类型题目解题总结

天大地大妈咪最大 提交于 2020-12-12 10:05:15
2. Add Two Numbers https://leetcode.com/problems/add-two-numbers/description/ class Solution { public : ListNode * addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode result( - 1 ); ListNode * current = & result; int add = 0 ; while (l1!=NULL || l2!= NULL){ int val1 = 0 ; int val2 = 0 ; if (l1!= NULL){ val1 = l1-> val; l1 = l1-> next; } if (l2!= NULL){ val2 = l2-> val; l2 = l2-> next; } current ->next = new ListNode((val1+val2+add)% 10 ); add = (val1+val2+add)/ 10 ; current = current-> next; } if (add == 1 ) current ->next = new ListNode( 1 ); return result.next; } }; View Code 7. Reverse